效果图
shell1输入命令shell2输出结果
具体步骤
一、创建两个shell窗口
创建一台虚拟机的两个shell窗口
二、进入/proc/$$/fd目录
cd /proc/$$/fd
两个shell都进入一下/proc/$$/fd目录( $ $会转换为当前shell的PID,直接输当前shell的PID也可以)
ll
查看两个shell当前目录下的文件信息
此时shell1的软链接文件都指向/dev/pts/0,shell2的软链接文件都指向/dev/pts/1。
(当前目录下的文件描述符0代表的是标准输入,文件描述符1代表的是标准输出,文件描述符2代表的是错误输出)
三、备份shell1的标准输出
exec 6>&1
创建一个文件描述符6让其指向标准输出1的位置,后期恢复标准输出1时用到,相当于标准输出1的备份
四、把shell1的标准输出指向shell2
exec 1>/dev/pts/1
把shell1的标准输出1指向shell2的位置
此时在shell1中输入命令,会在shell2中显示结果,但是命令的错误信息还是在shell1中输出。
五、还原shell1的标准输出
exec 1>&6
将标准输出1指向刚刚备份6的位置
此时已经恢复,shell1输入命令,结果也在shell1输出。