我正在grepping一大堆由git管理的代码,每当我做grep时,我都会看到成堆的形式的消息:

> grep pattern * -R -n
whatever/.git/svn: No such file or directory

有什么办法能让这些皱纹消失吗?


当前回答

使grep始终返回0状态的一个简单方法是使用|| true

 → echo "Hello" | grep "This won't be found" || true

 → echo $?
   0

如您所见,这里的输出值为0 (Success)

其他回答

我将stderr重定向到stdout,然后使用grep的逆匹配(-v)来排除我想隐藏的警告/错误字符串:

grep -r <pattern> * 2>&1 | grep -v "No such file or directory"

我已经看到这种情况发生过几次了,对于断开的链接(指向不存在的文件的符号链接),grep尝试在不存在的目标文件上进行搜索(因此得到正确而准确的错误消息)。

我通常不会在控制台执行系统管理任务时费心,但从脚本中我确实使用“find”查找文本文件,然后grep每一个:

find /etc -type f -exec grep -nHi -e "widehat" {} \;

而不是:

grep -nRHi -e "widehat" /etc

您可以使用-s或——no-messages标志来抑制错误。

-s,——no-messages禁止错误消息

grep pattern * -s -R -n

你试过xargs中的-0选项吗?就像这样:

ls -r1 | xargs -0 grep 'some text'

使grep始终返回0状态的一个简单方法是使用|| true

 → echo "Hello" | grep "This won't be found" || true

 → echo $?
   0

如您所见,这里的输出值为0 (Success)