0

我正在尝试将文件的标准输出重定向到write命令并在其他用户的终端中显示文件的内容(颜色更改)。

要显示输出的文件的内容是(文件名是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>但这也不起作用

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

4

1 回答 1

0

如果 write 命令允许将任意控制字​​符发送到另一个用户的终端,那将是一个严重的安全问题。事实上,它净化了要发送的消息的内容,以使控制字符无害。这就是为什么您在其他用户的终端上将 ESC 控制字符视为两个 ASCII 字符“^”和“[”。

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

于 2013-04-18T14:06:13.810 回答