grep命令反转选项不起作用

Nag*_*obi 0 linux bash

我试图筛选出的线,包含拒绝的权限find命令.

如果我跑步: find ~ -name "fifo" | grep "Permission denied"

输出是正确的: find: ‘/home/nroby/.cache/dconf’: Permission denied find: ‘/home/nroby/.dbus’: Permission denied find: ‘/home/nroby/.config/enchant’: Permission denied

但是,如果我使用该-v选项:find ~ -name "fifo" | grep -v "Permission denied"

输出是: find: ‘/home/nroby/.cache/dconf’: Permission denied find: ‘/home/nroby/.dbus’: Permission denied /home/nroby/Desktop/Linux/fifo find: ‘/home/nroby/.config/enchant’: Permission denied

小智 6

这句话Permission denied来自而stderr不是stdout.终端显示两个流,但管道仅重定向stdout(因此使用您的命令,grep永远不会看到包含的行Permission denied).

所以,如果您只想让这些消息静音,请改为:

find ~ -name "fifo" 2>/dev/null
Run Code Online (Sandbox Code Playgroud)

2>重定向stderr.

如果您需要管既stdoutstderr出于某种原因(例如,你希望其他存在于您的输出错误信息),你可以这样做:

find ~ -name "fifo" 2>&1 | grep -v "Permission denied"
Run Code Online (Sandbox Code Playgroud)

2>&1重定向stderrstdout.