該腳本應將“輸入”視為發送用戶字串,而只是將“^M”列印到終端。
我不知道為什么會突然發生這種情況,昨天沒有發生。這個特定的終端會話發生了一些變化,因為如果我打開一個新的終端視窗,它會按預期作業。
有任何想法嗎?
我在 Mac 上使用 iterm (xterm?)
uj5u.com熱心網友回復:
TL;DR:reset
只要終端開始表現有趣,只需在 OS shell 上鍵入命令。
終端仿真器程式(如 iterm)具有復雜的內部狀態,以提供數十年的功能,以在終端上運行更漂亮的程式。
終端作為鍵盤開始,可以將鍵入的文本物理列印到紙上,回到大型機時代 - 以及“stdin”和“stdout”概念:一個流與所有輸入的資料一起前進,另一個流將所有資料列印出來,直到今天,50 多年后,與文本終端互動的默認方式。
以不同方式處理終端的程式的內部狀態更改(例如無需等待“輸入”即可讀取按鍵),應在程式終止時恢復。但由于錯誤和錯誤,情況并非總是如此。
我不知道哪種可能的狀態會改變要顯示的“^M”而不是應用于終端的 CR 代碼。還有數十或數百種其他可能的不當行為,包括完全弄亂所有角色。在reset
現代* nixes(MacOS的,Linux和BSD系統)命令將解決一切。
當然,如果沒有應用“輸入”,則根本不可能從 os shell 發出命令。然后您將不得不開始一個新的終端會話。在 Python 程式中,如果您碰巧呼叫了一些總是會中斷終端的代碼,您可以通過呼叫os.system('reset')
.
特別地,“^M”代表“ctrl M”,它是一個值為“13”(十六進制為0x0d)的控制字符。它是“回車”控制代碼(AKA。“return”、“enter”、“CR”)的值。如果您從未這樣做過:嘗試按“ctrl M”,看看它的行為與“enter”相同。它以“人類可讀的形式”顯示,而不是在您的情況下充當控制字符。
(關于 xterm 和 iterm:它們的共同點是它們都是“終端仿真器”程式,xterm 是現存最古老的此類程式之一,它可能開創了從純文本視頻模式到圖形環境的大量改編。 “iterm”只是一個普通的現代應用程式,它實作了終端功能)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/349909.html