find查找指定文件
目录
- find查找指定文件
- 2>/dev/null详解
- **1. 标准输出 vs 错误输出**
- **2. `/dev/null` 的作用**
- **3. 为什么在这里使用 `2>/dev/null`?**
- **4. 对比示例**
- **不使用 `2>/dev/null`**
- **使用 `2>/dev/null`**
- **5. 扩展用法**
- **总结**
find查找指定文件
以查找libncurses
为例:找出/usr目录中所有libncurses开头的文件。
find /usr -name "libncurses*" 2>/dev/null
2>/dev/null详解
在命令 find /usr -name "libncurses*" 2>/dev/null
中,2>/dev/null
的作用是 屏蔽所有错误输出,让终端只显示有效的查找结果。以下是详细解释:
1. 标准输出 vs 错误输出
1>
或>
:表示标准输出(stdout),即命令的正常打印结果(例如找到的文件路径)。2>
:表示错误输出(stderr),即命令执行中的错误消息(例如权限不足、目录不存在等)。
2. /dev/null
的作用
/dev/null
是一个特殊的虚拟设备文件,所有写入它的内容都会被丢弃(类似“黑洞”)。- 将错误输出重定向到
/dev/null
(即2>/dev/null
)意味着:隐藏所有错误信息。
3. 为什么在这里使用 2>/dev/null
?
在 find /usr -name "libncurses*"
命令中:
- 正常情况:如果找到匹配的文件,结果会通过 stdout 显示。
- 可能产生的错误:
- 对某些目录无权限访问(如
/usr/sbin
可能需要 root 权限)。 - 某些子目录不存在。
- 对某些目录无权限访问(如
- 使用
2>/dev/null
后:- 用户只会看到成功的查找结果(文件路径)。
- 烦人的
Permission denied
等错误会被静默丢弃。
4. 对比示例
不使用 2>/dev/null
find /usr -name "libncurses*"
输出可能混杂结果和错误:
/usr/lib/libncurses.so
find: ‘/usr/sbin’: Permission denied
/usr/lib/libncursesw.so
使用 2>/dev/null
find /usr -name "libncurses*" 2>/dev/null
输出仅显示有效结果:
/usr/lib/libncurses.so
/usr/lib/libncursesw.so
5. 扩展用法
- 同时屏蔽错误和正常输出(极少用):
find /usr -name "libncurses*" >/dev/null 2>&1
- 仅保存错误到文件:
find /usr -name "libncurses*" 2>errors.log
总结
命令片段 | 作用 |
---|---|
2>/dev/null | 隐藏所有错误消息,保持输出简洁 |
>/dev/null 2>&1 | 隐藏所有输出(包括正常和错误) |
在检查系统库时,2>/dev/null
是一个常用技巧,可以避免无关的权限错误干扰关键信息。