为什么grep在“Permission Denied”之后停止工作?

时间:2015-01-28 11:16:33

标签: bash unix grep

我执行了一个非常简单的grep

grep -r "someSimpleWord" .

现在,有一个目录包含一些产生一些消息的文件,如

grep: path/to/some/unpermitted/file: Permission denied

打印完这些消息后grep停止做任何事情。它不会返回也不会继续搜索(在打印消息后查看top输出没有grep。 当我添加

--exclude-dir="path/to/some/unpermitted"

grep再次按预期工作。

由于没有错误消息,我会认为grep中存在错误,但感觉不太可能。我在这里缺少什么?

我在Ubuntu 12.02上。

编辑:考虑使用-s选项(抑制所有错误消息),这将留下空行和grep什么也不做。所以你等待等等,因为,这可能需要一段时间。

1 个答案:

答案 0 :(得分:3)

grep停止的文件的名称,./path to unpermitted/ptmx表示它可能是一个特殊的设备文件,例如pty mux,通常只能在/ dev /目录中找到。 grep将打开它,但设备不提供任何数据,因此grep会阻塞,直到数据可用(从不)。

使用-D skip参数grep。

-D ACTION, --devices=ACTION
   If an input file is a device, FIFO or socket, use ACTION to process it.  
   By default, ACTION is read, which means that devices are read just as if they  
   were ordinary files.  If ACTION is skip, devices are silently skipped.