效果图
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输出。

本文详细介绍如何在两个Shell环境中实现命令输出的重定向,通过创建虚拟机的两个Shell窗口,利用/proc/$$/fd目录下的文件描述符,实现从一个Shell到另一个Shell的标准输出重定向,同时提供恢复标准输出的方法。

1699

被折叠的 条评论
为什么被折叠?



