dedecms做论坛网站广州网页设计师学校
目录
- 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 是一个常用技巧,可以避免无关的权限错误干扰关键信息。
