Terminal
什麼是終端的圖形 API?
某些程序如何設置背景和字型顏色,將字元多次寫入螢幕上的同一位置(例如第三行第五列)?
一些例子是顯示的進度條
curl google.com > a
、一些安裝螢幕和幾乎任何文本編輯器。
您要問的並不是真正的圖形 API,它只是終端控製字元。
它背後有很多歷史,但當時的終端是電傳打字機。基本上是一台帶有軌道進紙的打字機,通過串列連接連接到電腦。鍵入一個字元會將該二進制值發送到電腦(以及在頁面上鍵入它)。電腦會將字元列印回來作為您請求的任何內容的輸出。
特殊字元用於控制終端(這是控制鍵的來源,用於生成這些字元)。例如,
^H
or^?
是退格鍵,^M
是輸入符(將游標移動到行首)並且^J
是換行符(將頁面向上移動一行)。一些控制程式碼在 C 中具有轉義序列(幾乎所有程式語言都共享)來生成控製字元。前面列出的控制項分別是\b
、。\r``\n
您今天使用的終端仿真器聽起來就是這樣,它是一個偽裝成舊電傳打字機的軟體。在某種程度上,就好像 Unix 仍然認為您正在使用打字機與它進行通信一樣。
在 的情況下
curl
,它寫入一整行然後發送\r
(輸入)將游標帶到行首,然後寫入另一行。由於沒有發送換行符,它一直在螢幕上的同一行上書寫。您可以嘗試以下方式來證明這一點:
echo -n "First" ; sleep 5 ; echo -en "\rSecond\n"
您將看到列印出“First”字樣(但沒有發送新行)。5 秒後,它將被替換為單詞“Second”並發送一個新行。您可以無限期地重複此模式。嘗試自己添加“第三”,你會看到一些你可能沒想到的東西 ;-)
有關這些和其他控製字元的更多資訊,請參閱
ascii(7)
手冊。
你在尋找類似ncurses的東西嗎?