为什么“头”挂着而没有终止?

我有一个shell脚本,必须find远程主机上的最新文件。 我有这个位:

ssh -q $HOSTNAME -t ls -t -1 /path/to/somewhere/ | head -n 1 

它打印第一行,然后等待并不终止。

但是,如果我删除| head -n 1 打印| head -n 1 ,然后按顺序打印所有文件,然后定期终止并将控制stream程返回到我的terminal。 所以SSH命令部分正在终止,但不是头部分。 这是怎么回事? 我怎样才能让头脑工作?

它挂起,因为它没有得到任何input。 尝试只是头n – 1。

这将确保pipe道到头将发生在伪tty

 ssh -q $HOSTNAME -t "ls -t -1 /path/to/somewhere/ | head -n 1" 

我不得不承认,在Debian Squeeze和Ubuntu服务器10.4中,我无法重现这一点。

关心提供更多的信息,如没有“-q”,发行版等。

怎么样

 ssh -q $HOSTNAME -t "ls -t -1 /path/to/somewhere/" | head -n 1 

为什么不尝试这种方式:

 ssh -q $HOSTNAME -t ls -tr -1 /some/path | tail -n 1 

这将让你知道,如果头指令是错误的。 你以前的命令似乎在我的机器上正常工作。 奇怪的东西。