Tty

試圖了解歷史 TTY

  • February 28, 2018

我正在嘗試了解 Linux 的終端子系統,尤其是 tty 驅動程序和線路規則。顯然,這個子系統的架構源於電傳打字機(ttys)連接到電腦以將數據輸入電腦並獲得程序響應的時代。

我從未在真正的歷史 tty 上工作過,我相信當我了解這種 tty 是如何工作的時,我能夠更好地理解 tty 驅動程序的內在特性。

我對迴聲行編輯特別感興趣。

那麼,當 tty 上的操作員鍵入文本時:文本是否在 tty 上回顯(通過在紙上列印一行)?它是在他鍵入單個鍵/字元時回顯,還是僅在他按下新行/輸入鍵時回顯。

他鍵入的鍵(字元)是立即傳送到電腦(線路規則?)還是儲存在 tty 本地的緩衝區中,並在按下新線路鍵時傳送。

操作員如何編輯錯誤的文本(退格鍵、ctrl-h)?退格資訊是否會被發送到將相應編輯行的電腦,或者這是 tty 的一個功能(電腦會注意到它)?

最後,如果操作員在tty 從電腦接收數據時輸入文本會發生什麼?

最初的 tty 類似於ASR33 Teletype Model 33。它們是“啞”的,當您按下一個鍵時,它會向調製解調器或電腦發送一個字元。然後電腦可以發回一個字元並列印出來。

這也提供了傳輸工作的回饋。它還允許電腦在您只鍵入 1 時發送回 2 個或更多字元。例如,您鍵入 enter,它會發送回一個輸入以將列印頭移到左邊距,然後發送一個換行將紙張向上移動到下一行。stty onlcr這就是為什麼您今天仍然看到將輸出換行符轉換為輸入換行符的選項。

這也是選項在列印輸入後有延遲的原因(以允許列印頭向後移動)。

你可以有一些編輯器,用退格、X 和前進空格來呼應退格,從而刪除最後一個字元。如果重複,編輯器可以進一步退格以刪除更多內容,然後在您鍵入新字元時再次將列印頭放在末尾。

當不在編輯器中時,行規則會在使用退格鍵從行尾刪除字元後保持目前輸入的行(因此stty cooked模式)。它stty rprnt允許您指定要鍵入的字元,該字元將在您鍵入的退格鍵生效後重新列印到目前為止的整行。

引用自:https://unix.stackexchange.com/questions/427112