文件描述符和重定向
概述一次文件描述符与重定向
文件描述符
- 标准输入
可以理解为键盘的输入,用 0 表示 - 标准输出
可以理解为显示器的显示,用 1 表示 - 标准错误输出
可以理解为错误的输出,比如执行报错,用2表示重定向
输出重定向
- > 覆盖写
- 案例 1,此命令会将结果重定向到
1.txt
文件里,而不会显示到屏幕ls / > ~/1.txt
- 案例 2,此命令回车后会将键盘输入的内容覆盖写入
1.txt
,直到Ctrl
+D
结束cat > ~/1.txt
- 案例 1,此命令会将结果重定向到
- >> 追加写
- 案例 1,此命令会将结果追加到
1.txt
文件里,不会显示到屏幕,且不会丢失文件以前的内容ls / >> ~/1.txt
- 案例 2,此命令回车后会将键盘输入的内容追加写入
1.txt
,直到Ctrl
+D
结束cat >> ~/1.txt
- 案例 1,此命令会将结果追加到
- 综合案例(结合文件描述符)
- 案例 1,将正确输出和错误输出分开写入不同的文件
find / --name bash > ~/std.txt 2> ~/err.txt
- 案例 2,将正确输出和错误输出合并写入同一个文件
find / --name bash > ~/output.txt 2>&1
- 案例 1,将正确输出和错误输出分开写入不同的文件
输入重定向
- < 从文件中读取
- 案例 1,将配置文件的备份恢复
cat > pro.conf <pro.conf.bak
- 案例 1,将配置文件的备份恢复
- << 作为一个截断符号
- 案例 1,使用EOFF作为截断. 没有好的案例只是简单知道是什么.
cat > 1.txt <<EOFF 111 22 3 EOFF
- 案例 1,使用EOFF作为截断. 没有好的案例只是简单知道是什么.
自问自答
- 为什么要学习它,它有什么用?
- 实际场景会遇到这么一种情况,执行一个命令后输出内容太多啦,甚至看不清输入的内容,此时就可以把输出内容重定向到文件中;
- 还有一种场景,后台执行的命令,执行有问题,需要查看日志,这时候也可以使用重定向到文件中;
- 亦或是懒,有时候给
/etc/profile
追加一个环境变量,不想vi
打开再关闭,也可以用到输出重定向
- > 覆盖写
版权声明:
作者:qiankong
链接:https://bravexist.cn/2023/11/file-descriptors-and-redirections.html
文章版权归作者所有,未经允许请勿转载。
THE END