将文件的输出重定向到write命令

时间:2013-04-18 07:04:05

标签: bash unix redirectstandardoutput

我正在尝试将文件的标准输出重定向到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>使用标准输出重定向但尝试不起作用

但我需要输出处于格式化状态。

1 个答案:

答案 0 :(得分:0)

如果write命令允许将任意控制字​​符发送到另一个用户的终端,那将是一个明显的安全问题。实际上,它清理要发送的消息的内容,以便使控制字符无害。这就是为什么你将ESC控制字符看作另一个用户终端上的两个ASCII字符'^'和'['。

顺便说一句:正如Jonathan Leffler提到的那样,“文件的标准输出”没有任何意义。实际上你似乎正在做的是将命令(echo)的标准输出发送到write命令,而不是“文件的标准输出”。或者,如果您打算将文件的内容发送给其他用户(使用write 680613 < somefile之类的命令)也可以。