Linux 上的 head 挂起或无法终止

Linux 上的 head 挂起或无法终止

我正在使用,(uname -a 说)Linux ip-xxxx 2.6.21.7-2.fc8xen-ec2-v1.0 #1 SMP Tue Sep 1 10:25:30 EDT 2009 x86_64 GNU/Linux。

我有一个脚本,foo.sh,有 100 行代码,当我运行

head -n 5 foo.sh

该命令只是“挂起”,直到我按下 Ctrl-C。

男人头

没有提供太多见解。

到达 head 的路径是 /usr/bin/head

如果有什么不同的话,我会通过 SSH 进入服务器。

我的 shell 是 /bin/bash。

解决方法

sed 5q foo.sh

效果很好,但我希望得到这个问题的答案。谢谢大家。

答案1

我本来想建议将 符号head链接到busybox,但 busybox 也可以与 一起使用head -n 5 < foo.sh。(事实上,我尝试过的那个可以与 一起使用head -n 5 foo.sh,但可能有些版本不可以。)不过,head您机器上的 似乎不是任何标准的head。也许它是一个别名,或者是一个 shell 函数。

小提示:区分“挂起”的程序和只是等待用户输入的程序很重要(尽管并不总是很明显)。您的程序正在等待用户输入。这与例如sleep 3600或不同for ((i=1;i<100000000;++i)); do :; done

您可以尝试以下方法:

$ type head
head is aliased to `echo Surprise\!'
#...

$ type head
head is a function
head () 
{ 
    echo surprise\!
}
# ...

$ type head
head is hashed (/usr/local/bin/head)
$ file /usr/local/bin/head
/usr/local/bin/head: POSIX shell script, ASCII text executable

$ type head
head is hashed (/usr/local/bin/head)
$ file /usr/local/bin/head
/usr/local/bin/head: symbolic link to `/bin/busybox'

相关内容