Terminal

什麼是終端的圖形 API?

  • February 26, 2017

某些程序如何設置背景和字型顏色,將字元多次寫入螢幕上的同一位置(例如第三行第五列)?

一些例子是顯示的進度條curl google.com > a、一些安裝螢幕和幾乎任何文本編輯器。

您要問的並不是真正的圖形 API,它只是終端控製字元。

它背後有很多歷史,但當時的終端是電傳打字機。基本上是一台帶有軌道進紙的打字機,通過串列連接連接到電腦。鍵入一個字元會將該二進制值發送到電腦(以及在頁面上鍵入它)。電腦會將字元列印回來作為您請求的任何內容的輸出。

特殊字元用於控制終端(這是控制鍵的來源,用於生成這些字元)。例如,^Hor^?是退格鍵,^M是輸入符(將游標移動到行首)並且^J是換行符(將頁面向上移動一行)。一些控制程式碼在 C 中具有轉義序列(幾乎所有程式語言都共享)來生成控製字元。前面列出的控制項分別是\b、。\r``\n

您今天使用的終端仿真器聽起來就是這樣,它是一個偽裝成舊電傳打字機的軟體。在某種程度上,就好像 Unix 仍然認為您正在使用打字機與它進行通信一樣。

在 的情況下curl,它寫入一整行然後發送\r(輸入)將游標帶到行首,然後寫入另一行。由於沒有發送換行符,它一直在螢幕上的同一行上書寫。

您可以嘗試以下方式來證明這一點:

echo -n  "First" ; sleep 5 ; echo -en "\rSecond\n"

您將看到列印出“First”字樣(但沒有發送新行)。5 秒後,它將被替換為單詞“Second”並發送一個新行。您可以無限期地重複此模式。嘗試自己添加“第三”,你會看到一些你可能沒想到的東西 ;-)

有關這些和其他控製字元的更多資訊,請參閱ascii(7)手冊。

你在尋找類似ncurses的東西嗎?

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