该文仅针对自身对Linux基础知识不足的地方进行补充扩展,便于巩固。
终端的输入和输出由字符设备管理。
1、查看当前字符设备
# 查看当前bash进程
[root@openEuler-1 ~]# psPID TTY TIME CMD9662 pts/1 00:00:00 bash9938 pts/1 00:00:00 ps# 该目录存放了当前进程打开的所有文件描述符的符号链接
[root@openEuler-1 ~]# cd /proc/9662/fd/# 0表示输入、1表示标准输出、2表示错误输出
[root@openEuler-1 fd]# ls
0 1 2 255# 可以看到其都链接指向/dev/pts/1
[root@openEuler-1 fd]# ll
total 0
lrwx------ 1 root root 64 Jul 8 17:23 0 -> /dev/pts/1
lrwx------ 1 root root 64 Jul 8 17:23 1 -> /dev/pts/1
lrwx------ 1 root root 64 Jul 8 17:23 2 -> /dev/pts/1
lrwx------ 1 root root 64 Jul 8 17:23 255 -> /dev/pts/1# 当前使用的字符设备
[root@openEuler-1 fd]# ll /dev/pts/1
crw--w---- 1 root tty 136, 1 Jul 8 17:25 /dev/pts/1# 回到最开始ps命令也有显示:
[root@openEuler-1 ~]# psPID TTY TIME CMD9662 pts/1 00:00:00 bash9938 pts/1 00:00:00 ps
测试将 date 命令的输出,输入到第二个终端使用的字符设备当中:
2、输入与输出工作流程
3、常用命令
命令 | 含义 |
> | 将标准输出1重写入目标(>>为续写) |
2> | 将错误输出2重写入目标 |
& | 将标准输出1和错误输出2都重写入目标 |
| | 将标准输出1拿出来给标准输入 |
tee | 将标准输入1复制一份给入目标 |
2>&1 | 强制将错误输出2转入给标准输出1 |