标准输入、标准输出、标准错误
- file descriptors ,FD,文件描述符,文件句柄
- 进程使用文件描述符来管理打开的文件
FD是访问文件的标识,即链接文件
- 0是键盘只读
- 1,2是终端可以理解是屏幕
- 3+是文件,可读可写
在/proc目录中查看文本程序的FD
通常在 /proc/PID/fd 就能看到文件的FD调用情况。
[root@localhost ~]# ll /proc/5606/fd
lrwx------. 1 root root 64 10月 10 07:37 0 -> /dev/pts/2 //标准输入
lrwx------. 1 root root 64 10月 10 07:37 1 -> /dev/pts/2 //标准输出
lrwx------. 1 root root 64 10月 10 07:37 2 -> /dev/pts/2 标准错误输出
lrwx------. 1 root root 64 10月 10 07:37 3 -> /root/.1.txt.swp //常规文件
总结:看到的0123就是FD,程序通过描述符访问文件,可以是常规文件,也可以是设备文件。
输出重定向
正确输出
- 覆盖: 1>等价于 >
- 追加: 1>> 等价于>>
错误输出
- 没有简写: 2>
- 没有简写: 2>>
[root@localhost ~]# date 1> date.txt
[root@localhost ~]# date >> date.txt
[root@localhost ~]# cat date.txt
2022年 05月 29日 星期五 11:30:14 CST
错误示范
[root@localhost ~]# ls /home/ 2> list.txt
- list.txt文件中没有内容因为没有错误信息
- 当某条命令产生错误时,才会有错误输出。
正确示范
[root@localhost ~]#ls /aaaaaaaaa 2> list.txt
[root@localhost ~]#cat list.txt
ls: 无法访问/aaaaaaaaa: 没有那个文件或目录
正确和错误都输入到相同位置
[root@localhost ~]# ls /home/ /aaaaaaaaa &> list.txt
输入重定向
输入重定向及结合案例
[root@localhost ~]# mail -s "ssss" alice //编写邮件
111
.
[root@localhost ~]# su - alice
[alice@localhost ~]$ mail //查看邮件
Mail version 8.1 6/6/93. Type ? for help.
"/var/spool/mail/alice": 1 message 1 new
>N 1 root@qianfeng.local Mon Oct 29 14:09 18/657 "ssss"
&
//按邮件编号:1.即可看邮件。
//按q 退出。
可以用重定向创建邮件
[root@localhost ~]#vim word.txt
[root@localhost ~]#mail -s "test01" alice < word.txt
原理:利用输入重定向,把文件内容代替人为的输入。
其他常用(更)
不输出任何信息
&>/dev/null