在 shell 中执行命令时,每个进程都会和三个打开的文件相联系,并使用文件描述符来引用这些文件。
由于文件描述符不容易记忆, shell 同时也给出了相应的文件名
| 系统中默认的描述符 | 对应的对象 | 对应的术语 |
|---|---|---|
| 0 | 默认是键盘,也可以是文件 | 标准输入 |
| 1 | 默认是屏幕,也可以是文件或其他命令的输出 | 标准输出 |
| 2 | 默认是屏幕,也可以是文件 | 标准错误输出 |
| 3- $(ulimit -n) | 是可以自定义的描述符 可以 &3 来表示一个文件的描述符 |
例如:
2>&1表示把2标准错误输出 重新输出到文件描述符1(即标准正确输出)中
command<&n把文件描述符n作为标准输入
command >&n把标准输出重定向到文件描述符中
exec n<&-关闭文件描述符 n
数据流重导向

image.png

image.png
黑洞文件 /dev/null
可以将一些错误的标准输出,重新输出到/dev/null中
find /home/ -name .bashrc 2> /dev/null
一些典型案例

image.png

image.png

image.png