将 grep 重定向到文件不起作用

将 grep 重定向到文件不起作用

我正在通过以下命令进行递归 grep:

grep -r "load" . > tmp.txt

但是,当我按 Enter 时,该命令不会执行,并且 bash 正在等待更多输入。我的操作系统是 Ubuntu 12.04。

我检查了以下两个答案,但它们无法解决我的问题。

为什么 grep 不能与重定向一起使用?

如何将 tailf 和 grep 的输出重定向到文件

答案1

我也使用 Ubuntu 12.04,但出现此错误:

$ grep -r 'test' . > tmp.txt
grep: input file `./tmp.txt' is also the output

由于重定向会先展开,所以在执行tmp.txt之前会先在当前目录下创建grep,导致出现错误。

如果我更改tmp.txt为其他路径,例如/tmp/tmp.txt,则它可以正常工作。

我的grep版本:

$ grep --version
grep (GNU grep) 2.10
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Mike Haertel and others, see <http://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>.

相关内容