GNU/Linux >> Znalost Linux >  >> Linux

Jak a kde je $term interpretován?

Zajímalo by mě, jak nějaký terminál kouzlí funguje interně.

Zatímco si hrajete s kontejnery dockerů, proměnná prostředí $TERM nebyla nastavena. To vedlo k podivně vyhlížejícím konzolovým aplikacím jako vim a tmux, ale také k ignorování CTRL+l (vymazat obrazovku).

Jsem si docela jistý, že všechny funkce jako částečné aktualizace obrazovky, barvy, příkazy jako reset obrazovky atd. jsou realizovány pomocí únikových kódů, že?

Kde je tedy tato proměnná interpretována a umožňuje například resetování obrazovky terminálu pomocí CTRL+l, pokud tam nastavím správnou hodnotu? Kdo kontroluje například jaké barvy jsou podporovány (xterm vs xterm-256color)? Skořápka? Aplikace nebo knihovna jako ncurses? A kde jsou definovány možné hodnoty / typy terminálů?

Přijatá odpověď:

$TERM je čtena a interpretována systémem terminfo. terminfo také odkazuje na databázi popisů terminálů, kterou můžete najít na většině systémů v /usr/share/terminfo . $TERM musí odpovídat jedné z položek v této databázi. Existovala také starší knihovna s názvem termcap, která měla méně možností, ale terminfo ji nahradilo. V moderních systémech je terminfo součástí knihovny ncurses.

Aplikace obvykle buď načítají schopnosti terminálu přímo pomocí funkcí knihovny, jako je tigetstr() nebo ke správě rozvržení obrazovky používají rozhraní kleteb vyšší úrovně. V každém případě $TERM a databáze terminfo bude konzultována.


Linux
  1. Jak spustit příkaz Linux na pozadí a odpojit proces v terminálu

  2. Jak přizpůsobit barvy a obsah bash v příkazovém řádku terminálu Linux

  3. Jak předvánočně upravit váš linuxový terminál a Shell

  1. Kitty Terminal Emulator:Jak jej nainstalovat, nakonfigurovat a používat

  2. Jak rolovat nahoru a dolů v terminálu s rozdělenou obrazovkou

  3. v linuxové konzoli, jak NEzabalit výstup

  1. Tput:Žádná hodnota pro $term a není specifikováno -t?

  2. Jak nainstalovat Guake Terminal a přidat jej do automatického spuštění

  3. Jak přiblížit a oddálit terminálovou konzoli v linuxu