我试图筛选出的线,包含拒绝的权限从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.
如果您需要管既stdout和stderr出于某种原因(例如,你希望其他存在于您的输出错误信息),你可以这样做:
find ~ -name "fifo" 2>&1 | grep -v "Permission denied"
Run Code Online (Sandbox Code Playgroud)
2>&1重定向stderr到stdout.