You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何find+cat+grep命令中2>/dev/null无法屏蔽Permission denied错误?

问题解析:为什么STDERR屏蔽没生效?

你的理解存在疏漏,核心问题出在重定向的作用范围上:

  • 你写的2>/dev/null是附加在整个管道的末尾,它只会对管道最后一个命令(也就是grep)的标准错误(stderr)生效,而find -exec调用的cat命令,它的stderr并没有被重定向,所以读取文件时的权限拒绝错误会直接输出到终端。
  • 要正确屏蔽cat的错误,需要把重定向放到-exec的命令范围内,修改后的命令如下:
    find /etc/sudoers.d -type f -exec cat {} 2>/dev/null + | grep kali
    
    这样cat命令的stderr会被直接丢去/dev/null,只有cat成功读取的文件内容会被传递给grep处理。

如果还需要屏蔽find命令自身可能出现的权限错误(比如无法访问某些子目录),可以给find也加上stderr重定向:

find /etc/sudoers.d -type f 2>/dev/null -exec cat {} 2>/dev/null + | grep kali

内容的提问来源于stack exchange,提问作者Vikash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 21:35:18