1. Index
  2. Shell
  3. C
  4. POSIX
  5. JavaScript

Terminal-Steuerung

Steuerzeichen ausgeben

Per Kontrollsequenz lassen sich die Position der Eingabemarke sowie typografische Merkmale wie Fettdruck, Unterstreichungen, Vorder- und Hintergrundfarben ändern.

echo -e "\e[32;1mHallo, Welt\e[0m"
Hallo, Welt
Code Name ASCII Beschreibung
\a BEL 7 Alarm
\b BS 8 Backspace
\t HT 9 Horizontaler Tabulator
\n LF 10 Newline
\v VT 11 Vertikaler Tabulator
\f FF 12 Form feed
\r CR 13 Carriage return
\e ESC 27 Escape
\\ 92 Backslash ausgeben
\c Weitere Ausgabe unterdrücken
\0{0…7}{0…7} Oktal
\x{0…f}{0…f} Hexadezimal
\u{0…f}..{0…f} Unicode
\U{0…f}......{0…f} Unicode erweitert

Eingabemarke bewegen

Der CSI (ESC+[) leitet Befehle zur Steuerung der Eingabemarke ein.

Sequenz Name Beschreibung
\e[UpA CUU Schritt nach Oben
\e[DownB CUD Schritt nach Unten
\e[RightC CUF Schritt nach Rechts
\e[LeftD CUB Schritt nach Links
\e[LineE CNL Sprung an Zeilenanfang weiter unten
\e[LineF CPL Sprung an Zeilenanfang weiter oben
\e[ColumnG CHA Setzen auf Spalte
\e[Row;ColumnHCUP Setzen auf absolute Position
\e[0J ED Löschen ab Eingabemarke bis Seitenende
\e[1J Löschen ab Seitenanfang bis Eingabemarke
\e[2J Löschen der ganzen Seite
\e[0K EL Löschen ab Eingabemarke bis Zeilenende
\e[1K Löschen ab Zeilenanfang bis Eingabemarke
\e[2K Löschen der ganzen Zeile
\e[LinesS SU Seite nach oben rollen
\e[LinesT SD Seite nach unten rollen
\e[Row;ColumnfHVP Position der Eingabemarke setzen
\e[Codem SGR Farben ändern, siehe unten
\e[s SCP Position der Eingabemarke merken
\e[u RCP Position der Eingabemarke wiederherstellen
\e[?25l DECTCEM Eingabemarke verbergen
\e[?25h DECTCEM Eingabemarke anzeigen

Farbe ändern

SGR-Sequenzen ändern Stil und Farbe der Schrift.

Sequenz Berechnung Werte Farbschema
\e[1m … \e[22m Fett
\e[2m … \e[22m Dünn
\e[3m … \e[23m Kursiv
\e[4m … \e[24m Unterstrichen
\e[5m … \e[25m Blinkend
\e[6m … \e[26m Flackernd
\e[7m … \e[27m Invers
\e[8m … \e[28m Unsichtbar
\e[9m … \e[29m Durchgestrichen
\e[30…37;40…47m Blue*4+Green*2+Red+30 8 ANSI Farben
\e[38;5;Fore;48;5;Backm Red*36+Green*6+Blue+16 0…5 216 SGR-Farben
232+{0…23} 0…23 24 SGR Graustufen
\e[38;2;Red;Green;Blue;m 0…255 16 Millionen Echtfarben
\e[48;2;Red;Green;Blue;m 0…255 16 Millionen Hintergründe
#BGRFarbe
30000Schwarz
31001Rot
32010Grün
33011Gelb
34100Blau
35101Magenta
36110Cyan
37111Weiß

Fenster betiteln

OSC-Sequenzen (ESC+]) können unter anderem das Icon und den Titel eines grafischen Terminals setzen.

\e]0;Icon Title\e\\
\e]1;Icon\e\\
\e]2;Title\e\\

Praktischerweise führt die Bash bei der Anzeige der Eingabeaufforderung (prompt) immer das in der Variablen PROMPT_COMMAND gespeicherte Kommando aus, so dass man zum Beispiel immer das Arbeitsverzeichnis ausgeben kann.

PROMPT_COMMAND='echo -ne "\e]2;$LOGNAME@$HOSTNAME:$PWD\e\\"'

Grafik ausgeben

Fortgeschrittene Terminal-Emulationen (VT240 aufwärts) unterstützen das DEC SIXEL Format und die ReGIS Vektorsprache.

apt install mlterm libsixel-bin
mlterm
img2sixel debian.png

Literatur

  1. Linus Åkesson: The TTY demystified