我正在尝试将文件的标准输出重定向到write
命令,并在另一个用户的终端中显示文件的内容(颜色发生变化)。
要显示其输出的文件的内容是(filename是menu_sys.sh)
echo -e "\t\t\033[4;41m Welcome to Internal Messaging System \033[0;0m"
当我使用代码$ sh menu_sys.sh | write 680613
时,输出为^[[4;41m Welcome to Internal Messaging System^[[0;0m
使用&1>
使用标准输出重定向但尝试不起作用
但我需要输出处于格式化状态。
答案 0 :(得分:0)
如果write命令允许将任意控制字符发送到另一个用户的终端,那将是一个明显的安全问题。实际上,它清理要发送的消息的内容,以便使控制字符无害。这就是为什么你将ESC控制字符看作另一个用户终端上的两个ASCII字符'^'和'['。
顺便说一句:正如Jonathan Leffler提到的那样,“文件的标准输出”没有任何意义。实际上你似乎正在做的是将命令(echo
)的标准输出发送到write
命令,而不是“文件的标准输出”。或者,如果您打算将文件的内容发送给其他用户(使用write 680613 < somefile
之类的命令)也可以。