2013-07-16 76 views
25

有時我必須運行一個命令行工具(一個Python腳本),它的輸出似乎會破壞我的終端。 執行完成後,輸入反饋消失了(我看不到我正在輸入的內容),並且不顯示換行符。如果終端通過Putty遠程啓動,並且在本地使用gnome-terminal,則會發生這種情況。Linux終端:輸入反饋消失了,換行符不顯示

例如,問題發生後,如果我輸入ENTERpwdENTER,我希望看到:

[[email protected] ~]$ 
[[email protected] ~]$ pwd 
/home/userA 
[[email protected] ~]$ 

但實際上輸出是:

[[email protected] ~]$ [[email protected] ~]$ /home/userA 
                  [[email protected] ~]$ 

的解決這個問題的唯一方法就是關閉那個終端並開始一個新的終端。

也許是相關的:腳本輸出包含一些基於終端的格式(例如,顛倒前景/背景以突出顯示某些狀態消息)。如果我將這個輸出轉儲到一個文件中,我可以看到諸如[07mSome Message Here[0m之類的東西。

任何想法我可以做什麼來防止這種情況?

+0

您似乎處於一個需要退出才能返回原始終端的子shell。只要嘗試退出; pwd – 2013-07-16 17:17:48

+1

這是SO的話題;屬於[unix.se]或[su]。也就是說,通常可以通過盲目輸入「stty sane」修復終端會話,從而將終端恢復爲「理智」設置。 –

+1

另外,當你遇到終端問題時,你可以嘗試使用'reset'或'stty sane'修復它們。 – cabad

回答

59

執行命令「復位」和終端應該恢復
參考:
http://www.commandlinefu.com/commands/view/32/salvage-a-borked-terminal

此問題傾倒二進制數據到其中,當接收到的轉義碼被處理的終端「STDOUT」時通常會發生可以做任何事情,從改變文本的顏色,禁用回聲,甚至改變字符集。

避免這種簡單的方法是確保您不會將未知的二進制數據轉儲到終端,並且如果您必須將其轉換爲十六進制以確保它不會更改終端設置。

+2

'重置',這就是我一直在尋找。謝謝。 –

+0

非常感謝!在我的情況下,在Kubernetes容器內運行ipython並沒有顯示類型輸入,執行'reset'修復了它。 – dusan

+0

當我在ssh shell中執行'bash x.sh'時,我遇到同樣的問題。 'reset'確實有幫助,但是如果我再次執行.sh文件,問題會再次出現。 你有什麼想法嗎? (.sh文件基本上只執行'sbt package'來構建我的scala項目) –