Grep 在我的一个系统(Ubuntu 桌面 - 我所有其他系统都是 Ubuntu 服务器)上表现得很奇怪,我不明白为什么。我创建了一个名为的控制文件文本其中包含以下文本:
grep
test!!
以下命令适用于我的所有系统(问题子系统除外):
$ grep grep *
text:grep
$ grep 'test!!' *
text:test!!
在我的问题上,子 grep 只是挂起。我比较过.bashrc,.bash_别名, 乃至/etc/bash_completion,但我找不到问题所在。有什么想法可能导致问题吗?
答案1
在有问题的机器上,在目录中是否grep 'something' *
有任何特殊文件,例如套接字、命名管道(fifos)等?
至少在命名管道的情况下,grep 不会从命名管道获取 EOF,直到某些内容实际将 EOF 写入命名管道。
答案2
如果它挂起,对我来说听起来像是它正在寻找来自标准输入的输入。
您可以通过键入 Control-D(仅一次)来证明这一点 - 它将返回到 shell。
如果这是正确的,则 * 找不到任何文件。
答案3
有类似的问题,罪魁祸首是一个名为“-”的胭脂目录,它很可能被解释为“从标准输入读取”而不是目录名称
> grep 'something' *
> grep 'something' f1 f2 f3 - f4 f5 ...