Was Sie fragen, ist nicht wirklich eine Grafik-API, sondern nur Terminal-Steuerzeichen.
Dahinter steckt viel Geschichte, aber Terminals waren früher Fernschreiber . Grundsätzlich eine Schreibmaschine mit Track-Papier, die über eine serielle Verbindung an den Computer angeschlossen ist. Wenn Sie ein Zeichen eingeben, wird dieser Binärwert an den Computer gesendet (und auf der Seite eingegeben). Der Computer druckte Zeichen als Ausgabe der von Ihnen angeforderten Daten zurück.
Für die Steuerung des Terminals wurden Sonderzeichen verwendet (daher stammt der Steuerschlüssel, um diese Zeichen zu erzeugen). Beispiel: ^H
oder ^?
wäre eine Rücktaste, ^M
ist ein Wagenrücklauf (bewegt den Cursor an den Anfang der Zeile) und ^J
ist ein Zeilenvorschub (bewegen Sie die Seite um eine Zeile nach oben). Einige Steuercodes haben eine Escape-Sequenz in C (die von fast allen Programmiersprachen gemeinsam genutzt wird), um die Steuerzeichen zu generieren. Die Kontrollen aufgelistet zuvor wäre \b
, \r
, \n
jeweils.
Der Terminal-Emulator, den Sie heute verwenden, ist genau das, wonach das klingt. Es ist eine Software, die vorgibt, ein alter Fernschreiber zu sein. In gewisser Weise ist es fast so, als ob Unix immer noch denkt, dass Sie eine Schreibmaschine verwenden, um mit ihr zu kommunizieren.
Im Fall von curl
schreibt es eine ganze Zeile und sendet dann \r
(Wagenrücklauf), wobei der Cursor an den Anfang der Zeile gesetzt wird, und schreibt dann eine weitere Zeile. Da kein Zeilenvorschub gesendet wird, wird immer wieder über dieselbe Zeile auf dem Bildschirm geschrieben.
Hier ist etwas, das Sie versuchen können, um dies zu demonstrieren:
echo -n "First" ; sleep 5 ; echo -en "\rSecond\n"
Sie sehen das Wort "Zuerst" gedruckt (aber es wird keine neue Zeile gesendet). 5 Sekunden später wird es durch das Wort "Second" ersetzt und eine neue Zeile gesendet. Sie können dieses Muster unbegrenzt wiederholen. Versuchen Sie, "Third" selbst hinzuzufügen, Sie werden etwas sehen, das Sie wahrscheinlich nicht erwartet haben ;-)
Weitere Informationen zu diesen und anderen Steuerzeichen finden Sie im ascii(7)
Handbuch.
ncurses
.