在 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