2013-04-18 179 views
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>但也沒有工作

但我需要輸出格式化的條件。

+2

術語「文件的標準輸出」很奇怪;命令或程序具有標準輸出 - 文件通常是發送命令的標準輸出的地方,但文件沒有自己的標準輸出。你的腳本'menu_sys.sh'生成輸出,併發送到'write 680613'。標準的'write'命令將嘗試將該消息發送到用戶'680613'的終端。是你嗎?你期待轉義序列做什麼? – 2013-04-18 07:08:42

+0

@JonathanLeffler沒有終端用戶'680613'是別人。通過術語文件的標準輸出,我的意思是包含在文件menu_sys.sh中的代碼的輸出,我需要將輸出顯示給另一個終端上的另一個用戶。使用轉義序列我試圖改變文本的顏色和背景顏色,其中顯示歡迎使用內部消息系統文本 – debal 2013-04-18 07:47:27

回答

0

如果寫命令允許任意控制字​​符發送到另一個用戶的終端,那將是一個公然的安全問題。事實上,它消毒了要發送的消息的內容,從而使控制字符無害。這就是爲什麼您將ESC控制字符看作另一個用戶終端上的兩個ASCII字符'^'和'[''。

另外:如Jonathan Leffler所提到的,「文件的標準輸出」沒有任何意義。實際上,你似乎在做的是將命令的標準輸出(echo)發送到write命令,而不是「文件的標準輸出」。或者,如果您打算將文件的內容發送給其他用戶(使用像write 680613 < somefile這樣的命令),那也可以。

+0

然後,我如何發送某些格式化的文本(如使用不同字體顏色的文本)到另一個用戶的終端。我需要製作一個系統,用於向管理員的其他用戶發送通知 – debal 2013-04-18 15:07:22

+0

您不需要。其中一個特別的問題是,你無法找出其他用戶正在使用哪種終端類型('TERM'環境變量),所以即使系統允許你發送它們,你也不知道要發送哪些esacpe序列。 – Celada 2013-04-18 17:20:26

+0

那麼是否有其他方法可以實現目標 – debal 2013-04-19 04:01:11

相關問題