gpt4 book ai didi

linux - grep 命令反转选项不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:46:45 27 4
gpt4 key购买 nike

我正在尝试过滤掉包含来自find 命令的Permission denied 的行。

如果我运行:查找 ~ -name "fifo"| grep“权限被拒绝”

输出是正确的:
发现:‘/home/nroby/.cache/dconf’:权限被拒绝
找到:‘/home/nroby/.dbus’:权限被拒绝
找到:‘/home/nroby/.config/enchant’:权限被拒绝

但是,如果我使用 -v 选项:find ~ -name "fifo"| grep -v "权限被拒绝"

输出是:
发现:‘/home/nroby/.cache/dconf’:权限被拒绝
找到:‘/home/nroby/.dbus’:权限被拒绝
/home/nroby/桌面/Linux/fifo
找到:‘/home/nroby/.config/enchant’:权限被拒绝

最佳答案

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

因此,如果您只想让这些消息静音,请改为执行以下操作:

find ~ -name "fifo" 2>/dev/null

2> 重定向 stderr

如果您出于某种原因需要同时传输 stdoutstderr(例如,您希望在输出中显示 other 错误消息),你可以这样做:

find ~ -name "fifo" 2>&1 | grep -v "Permission denied"

2>&1stderr 重定向到 stdout

关于linux - grep 命令反转选项不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44205240/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com