Linux: Kniha kouzel, 2.15 (1. března 2025)
Veškerá moc příkazové řádky/příkazového řádku přehledně, pro začátečníky i pokročilé

27. Terminál

Podkapitoly: 27.1 Emodži;

Vývoj vanilkové příchuti Linuxu: Knihy kouzel byl 1. března 2025 ukončen. Tento text je zachován jako historický, ale chyby již nejsou opravovány. Odnože projektu pod kompatibilní licencí jsou vítány.

1. Úvod

Tato kapitola pokrývá způsoby, kterými můžete učinit okno emulátoru terminálu praktičtější, barevnější a méně jednotvárné, aniž byste musel/a opustit příkazový interpret bash – v linuxu můžete nastavit barvu písma či pozadí, titulek, výzvu intepretu či vypsat ozdobné nápisy.

Barva písma a pozadí se ve skutečnosti nastavuje vypsáním takzvaných escape sekvencí, což jsou zvláštní řídicí sekvence bajtů, kterým daný terminál rozumí a místo vypsání něčeho na obrazovku vykoná akci, která je v sekvenci zakódovaná. Abychom se tyto sekvence nemuseli učit, používáme místo nich moderní příkaz „tput“, který načte příslušnou sekvenci ze své databáze a vypíše ji na svůj standardní výstup. Tento výstup můžeme buď uložit do proměnné pro pozdější použití, nebo vypsat na terminál přímo. Uložení do souboru není vhodné, protože v jiném terminálu by se mohla sekvence lišit.

Tato verze kapitoly se omezuje na sekvence široce podporované většinou emulátorů terminálu. Kde není dostupná podpora v textovém režimu, bude to zmíněno. Dále nepokrývá podporu šestnácti milionů barev.

GNU Bash je vyvíjen v rámci projektu GNU.

2. Definice

  • Výzva terminálu (zkráceně „výzva“) je řetězec, který interpret příkazové řádky (v našem případě bash) vypisuje před, během nebo po přijetí příkazu od uživatele (tzn. v interaktivním režimu). V interpretu „bash“ se rozeznávají tři druhy výzvy a jejich šablony jsou uloženy v proměnných PS0, PS1 a PS2: hlavní výzva (PS1) značí, že bash očekává příkaz, vedlejší výzva (PS2) značí, že bash očekává pokračování příkazu na dalším řádku, potvrzující výzva (PS0) se vypisuje po přijetí příkazu a před zahájením jeho vykonávání.
  • Escape sekvence je posloupnost ASCII znaků se zvláštním významem pro terminál, která začíná netisknutelným znakem „\e“. V minulosti se tyto sekvence zapisovaly ručně a děsily nezkušené uživatele; dnes je však většinou můžeme pohodlně generovat moderním příkazem „tput“ a jejich děsivou úlohu zaujaly sekvence znaků Unicode.
  • Paleta je (v této kapitole) pole barev, které daný terminál podporuje, indexované od nuly. Běžně se vyskytují pouze dvě palety: s 8 barvami a s 256 barvami, ačkoliv realizace konkrétních barev v těchto paletách se mohou v jednotlivých emulátorech mírně lišit (často jdou nastavit).

3. Zaklínadla: obecná

3/1 Titulek

@nastavit titulek okna emulátoru terminálu#1 (1)
lkk titulek "nový titulek"

3/2 Barvy

@vypsat vzorník palety (barvy na pozadí)#1
for I in $(seq 0 $(($(tput colors) - 1)))
do
printf "%s %3d %s" "$(tput bold;tput setab $I)" $I "$(tput sgr0)"
test $(($I % 16)) -eq 15 && printf \\n
done
@vypsat vzorník palety (barvy textu)#2
for I in $(seq 0 $(($(tput colors) - 1)))
do
printf "%s %3d %s" "$(tput bold;tput setaf $I)" $I "$(tput sgr0)"
test $(($I % 16)) -eq 15 && printf \\n
done
@resetovat všechny atributy písma a barev#3
tput sgr0
@nastavit barvu popředí/pozadí#4 (2)
^source <(lkk --funkce)
lkk_bezp_set setaf číslo-barvy
lkk_bezp_set setab číslo-barvy
@ztmavit text (jen zapnout)#5
tput dim
@inverzní režim (dočasně prohodí barvy popředí a pozadí; jen zapnout)#6
tput rev
@neviditelný text (text barvou pozadí; jen zapnout)#7
tput invis
@zvýrazněný mód (zapnout/vypnout)#8 (3)
tput smso
tput rmso
@blikající text (jen zapnout; málo podporovaný)#9 (4)
tput blink
@vyplnit celý terminál barvou#10
^source <(lkk --funkce)
lkk_bezp_set setab číslo-barvy [náhradní-číslo-barvy]; tput clear; tput sgr0

3/3 Nastavení písma

@vypnout všechny atributy písma a barev#1
tput sgr0
@tučné písmo (jen zapnout)#2
tput bold
@kurzíva (zapnout/vypnout)#3
tput sitm
tput ritm
@podtržení (zapnout/vypnout)#4
tput smul
tput rmul

3/4 Ozdoby (nápisy a matrix)

@spustit simulaci „Matrixu“ (zelený spořič obrazovky/růžový spoříč obrazovky/interaktivní režim)#1 (5)
cmatrix -bs -C green [-u rychlost]
cmatrix -b -C magenta [-u rychlost]
cmatrix -b
@vypsat nápis ozdobným písmem (alternativy)#2 (6)
toilet -t -f písmo-pro-toilet [-F filtr[:další-filtr]] [--] "nápis"
zdroj | toilet -t -f písmo-pro-toilet [-F filtr[:další-filtr]]
@vypsat seznam dostupných písem/filtrů/výstupních formátů pro „toilet“#3
find /usr/share/figlet -maxdepth 1 -type f -printf %f\\n | sed -nE 's/\.(flf|tlf)$//;T;p' | sort
toilet -F list
toilet -E list
@vypsat vzorník ozdobných nápisů různými písmy#4
find /usr/share/figlet -maxdepth 1 -type f -printf %f\\n | sed -nE 's/\.(flf|tlf)$//;T;p' | sort | while read -r pismo; do printf %s:\\n "$pismo"; toilet -f "$pismo" --gay -t -- "Žluťoučký kůň"; done [| less -r]
@příklady ozdobných nápisů#5
toilet -t -f slant -F gay "Formule 1"
toilet -t -f standard -F gay:border "Žďár nad Sázavou"
tput setaf 6; tput setab 4; tput bold; tput el; toilet -t -f standard -F border "Test"; tput sgr0; tput el

3/5 Zjistit údaje o terminálu

Zde uvedené příkazy nevypisují escape sekvence, ale konkrétní hodnoty.

@počet sloupců/řádků terminálu#1
tput cols⊨ 98
tput lines⊨ 30
@počet podporovaných barev (velikost palety)#2
tput colors⊨ 256
@aktuální sloupec/řádka kurzoru/obojí do proměnných $Y (řádek) a $X (sloupec)#3
read -rsd R -p $'\e[6n' </dev/tty && printf %s\\n $(($(printf %s\\n "$REPLY" | sed -E 's/.*\[([0-9]+);([0-9]+)/\1/') - 1))
read -rsd R -p $'\e[6n' </dev/tty && printf %s\\n $(($(printf %s\\n "$REPLY" | sed -E 's/.*\[([0-9]+);([0-9]+)/\2/') - 1))
read -rsd R -p $'\e[6n' </dev/tty && eval "$(printf %s\\n "$REPLY" | sed -E 's/.*\[([0-9]+);([0-9]+)/Y=$((\1-1));X=$((\2-1));/')"

3/6 Ovládání kurzoru

@uložit/obnovit pozici kurzoru#1
tput sc
tput rc
@posun kurzoru na pozici#2 (7)
tput cup číslo-řádku číslo-sloupce
@posun kurzoru nahoru/dolů/vlevo/vpravo#3
tput cuu posun
tput cud posun
tput cub posun
tput cuf posun
@posun kurzoru do určitého sloupce na aktuální řádce/na začátek řádku#4
tput hpa index-sloupce
tput hpa 0
@posun kurzoru do levého horního rohu/levého dolního rohu#5
tput home
tput cup $(tput lines) 0
@skrytí kurzoru/zrušení skrytí#6
tput civis
tput cnorm

3/7 Mazání obrazovky

@smazat část řádky od kurzoru vlevo/vpravo#1
tput el1
tput el
@smazat celou obrazovku a kurzor přesunout na pozici 0 0 (levý horní roh)#2
tput clear
@odstranit N řádků od aktuální řádky (včetně) dolů#3

4. Zaklínadla: PS0, PS1 a PS2

Poznámka: znění zaklínadel v této sekci je upraveno pro uvedení uvnitř dvojitých uvozovek. Při uvedení jiným způsobem (např. v jednoduchých uvozovkách nebo při načítání ze souboru) je tomu nutno uzpůsobit umístění zpětných lomítek.

4/1 Častá

@znak $ pro normálního uživatele a # pro uživatele „root“#1
\\\$⊨ $
@provedení příkazu a vypsání jeho výstupu (vyhodnotit hned/vyhodnotit při každém vypsání dané výzvy)#2 (8)
$(příkaz)
\$(příkaz)
@návratový kód posledního příkazu (viz poznámka!)#3 (9)
\${navr_hodn}⊨ 0
@cesta/název aktuálního adresáře (v obou případech se domovský adresář nahrazuje znakem „~“)#4
\\w⊨ ~/Dokumenty
\\W⊨ Dokumenty
@zkrácená cesta aktuálního adresáře#5
^PROMPT_DIRTRIM=max-počet-adresářů
\\w⊨ .../share/doc/lkk
@aktuální čas ve formátu HH:MM/HH:MM:SS#6
\\A⊨ 15:35
\\t⊨ 15:35:38
@aktuální datum ve formátu YYYY-MM-DD/ve vlastním formátu#7 (10)
\\D{%F}⊨ 2020-01-29
\\D{formát}
@název počítače (úplný/jen do první „.“)#8
\\H⊨ mars.podnik
\\h⊨ mars
@konec řádku/tabulátor#9
\\n
$(printf \\t)
@hodnota proměnné při každém vypsání výzvy#10
\${název proměnné}
@obsah souboru v momentě vypsání výzvy (konce řádek na konci souboru vynechat/vypsat také)#11
\$(</cesta/k/souboru)
@uživatelské jméno přihlášeného uživatele/jeho celé jméno#12
\\u⊨ novakova
$(getent passwd $UID | cut -d : -f 5 | cut -d , -f 1)⊨ Jarmila Nováková

4/2 Méně častá

@trvání posledního příkazu v sekundách#1 (11)
^PS_TIMESTAMP=$(date +%s%1N)
^trap 'PS_TIMESTAMP=$(date +%s%1N)' SIGUSR2
^PS0="...\$(kill -SIGUSR2 $$)..."
\$(((\$(date +%s%1N) - PS_TIMESTAMP + 5) / 10))
@trvání posledního příkazu v milisekundách#2 (12)
^PS_TIMESTAMP=$(date +%s%4N)
^trap 'PS_TIMESTAMP=$(date +%s%4N)' SIGUSR2
^PS0="...\$(kill -SIGUSR2 $$)..."
\$(((\$(date +%s%4N) - PS_TIMESTAMP + 5) / 10))
@PID příkazového interpretu#3
$$⊨ 3338
@číslo příkazu (podle historie/pořadové)#4
\\!""⊨ 1984
\\#⊨ 9
@označení terminálu (alternativy)#5
\\l⊨ 3 (pro textovou konzoli např. „tty3“)
$(ps h -o tty:1 -p $$)⊨ pts/3 (pro textovou konzoli např. „tty3“)
@počet úloh běžících na pozadí (těch, které lze vypsat příkazem „jobs“)#6
\\j⊨ 0
@počet řádek/sloupců terminálu#7
\${LINES}
\${COLUMNS}
@cesta/název aktuálního adresáře (bez zkracování znakem „~“)#8
\$(pwd)⊨ /home/novakova/Dokumenty
\$(basename \$(pwd))⊨ Dokumenty
@znak „$“ pro všechny (i pro uživatele root)(alternativy)#9
\$(printf \$)⊨ $
\044\[\]

4/3 Ucelené příklady nastavení

@návratová hodnota, čas, aktuální adresář a dolar#1
^source <(lkk --funkce)
PROMPT_COMMAND="navr_hodn=\$?"
PS1="$(lkk_pstput sgr0)\$navr_hodn $(lkk_pstput setaf 6)\A "
PS1+="$(lkk_pstput sgr0; lkk_pstput bold; lkk_pstput setaf 2)\w$(lkk_pstput sgr0)\\\$ "
@vedlejší výzva: zelené svislítko#2
^source <(lkk --funkce)
PS2="\\[$(lkk_bezp_set setaf 2)\\]|$(lkk_pstput sgr0) "
@příkazy psát červeně na zeleném pozadí, výpisy příkazů tyrkysově na fialové pozadí#3
^source <(lkk --funkce)
PS1="\\[$(lkk_bezp_set setaf 1; lkk_bezp_set setab 2; tput el)\\]\$ "
PS0="$(lkk_bezp_set setaf 6; lkk_bezp_set setab 5; tput el)"
@příkazy psát tučným zeleným písmem, výzvu bez zvýraznění#4
^source <(lkk --funkce)
PS0="$(tput sgr0)"
PS1="\\[$(tput sgr0)\\]\w\$ \\[$(lkk_bezp_set setaf 2; tput bold)\\]"
PS2="\\[$(tput sgr0)\\]| \\[$(lkk_bezp_set setaf 2; tput bold)\\]"

5. Zaklínadla: Zvýrazňování v příkazu „ls“

Poznámka 1: Nastavení barevného zvýraznění příkazu „ls“ řídí proměnná prostředí „LS_COLORS“, kterou bash nastavuje při spuštění interaktivní instance z konfiguračního souboru „~/.dircolors“ (pokud existuje). Změny tohoto souboru se tedy projeví teprve po jejich přepsání do proměnné „LS_COLORS“.

Poznámka 2: nastavení v níže uvedených zaklínadlech je neprázdná posloupnost číselných kódů (podle vzorníku) oddělených středníkem, např. „1;32“ pro tučné modré písmo, „32“ pro modré písmo apod.

5/1 Bash: obecné příkazy

@vypsat vzorník číselných kódů pro nastavení#1 (13)
printf '\e[0m0 = reset\n\e[1m1 = tučné písmo\e[0m\n\e[4m4 = podtržení\e[0m' &&
printf '\ntext:   ' && for x in {30..37} {90..97}; do printf '\e[%dm%4s ' $x $x; done &&
printf '\n\e[0m\e[1mtučný:  ' && for x in {30..37} {90..97}; do printf '\e[%dm%4s ' $x "1;$x"; done &&
printf '\n\e[0mpozadí: ' && for x in {40..47} {100..107}; do printf '\e[%dm%4s\e[0m ' $x $x; done &&
echo
@vygenerovat výchozí nastavení a zapsat do konfiguračního souboru (výchozího/vlastního)#2
dircolors -p >~/.dircolors
dircolors -p >konfigurační/soubor
@vygenerovat sekvenci kódů z příkazu „tput“#3 (14)
tput parametry | sed -znE 's/^\x1b\[([0-9;]+)m$/\1\n/;T;p'
@ručně uplatit změny z konfiguračního souboru (z výchozího/z vlastního)#4
[test -e ~/.dircolors &&] eval "$(dircolors -b ~/.dircolors)"
eval "$(dircolors -b [--] konfigurační/soubor)"
@dočasně nastavit zvýraznění do výchozího stavu#5
dircolors -p | dircolors -b -

5/2 Bash: Vybrané změny v konfiguračním souboru

@u adresářů použít světle modré písmo místo tmavě modrého (doporučuji)#1
sed -i -E '/^DIR\>/s/\<34\>/94/' ~/.dircolors
@změnit nastavení pro všechny obrázky a videa (jpg, mp4 apod.)#2
sed -i -E '/^\s*#\s*image formats/,/^\s*#\s[^h]/s/^(\.\S+)\s.*$/\1 nové;nastavení/' ~/.dircolors
@změnit nastavení pro všechny audioformáty (mp3, wav apod.)#3
sed -i -E '/^\s*#\s*audio formats/,/^\s*#\s[^h]/s/^(\.\S+)\s.*$/\1 nové;nastavení/' ~/.dircolors
@změnit nastavení pro archivy#4
sed -i -E '/^\s*#\s*archives/,/^\s*#\s[^h]/s/^(\.\S+)\s.*$/\1 nové;nastavení/' ~/.dircolors
@smazat nastavení podle přípony#5
Otevřete konfigurační soubor ve vhodném textovém editoru.
Najděte a odstraňte řádky začínající příponou, podle které již nechcete zvýrazňovat.
Uložte konfigurační soubor a zavřete textový editor.

5/3 .dircolors: Zvýraznění adresářů

@adresáře (normální)#1
DIR nastavení
@adresář, který má nastaveno o+w/+t/obojí#2
OTHER_WRITABLE nastavení
STICKY nastavení
STICKY_OTHER_WRITABLE nastavení

5/4 .dircolors: Zvýraznění podle typu adresářové položky

@symbolický odkaz (platný/neplatný/cíl neplatného)#1
LINK nastavení
ORPHAN nastavení
MISSING nastavení
@zvláštní zařízení: blokové/znakové#2
BLK nastavení
CHR nastavení
@pojmenovaná roura#3
FIFO nastavení
@soket#4
SOCK nastavení

5/5 .dircolors: Zvýraznění obyčejných souborů podle vlastností

Poznámka: použije se jen jedno zvýraznění; priority jsou: SETUID > SETGID > EXEC > MULTIHARDLINK > FILE

@soubor, který má někdo (kdokoliv) právo spouštět#1
EXEC nastavení
@soubor s nastaveným u+s/g+s#2
SETUID nastavení
SETGID nastavení
@soubor s více než jedním pevným odkazem#3 (15)
MULTIHARDLINK nastavení
@soubor bez zvláštních vlastností#4 (16)
FILE nastavení

5/6 .dircolors: Zvýraznění obyčejných souborů podle přípony

@zvýraznit podle přípony (obecně/příklad)#1
.zbytekpřípony nastavení
.tar 01;31

6. Parametry příkazů

@nastavit šablonu hlavní výzvy/připojit k ní další text (analogicky platí i pro ostatní výzvy)#1
PS1="text"
PS1+="další text"

Důležitá poznámka: Aby mohl bash správně zformátovat hlavní a vedlejší výzvu (PS1 a PS2), potřebuje předem znát počet tisknutých znaků na každém řádku. Bohužel bash nerozumí escape sekvencím, proto mu musíte napovědět a tyto sekvence uzavřít do zvláštních závorek „\[“ a „\]“ (ve dvojitých uvozovkách se zadávají „\\[“ a „\\]“), které znamenají, že jejich obsah bash nemá při výpočtu šířky řádků vůbec zohledňovat. Tyto závorky se bohužel naopak nesmějí používat v proměnné PS0, tam by vypsaly škaredé paznaky na terminál. V ukázce a v některých zaklínadlech lze tento problém vyřešit tak, že místo přímého zadání příkazu tput použijete pomocnou funkci lkk_pstput.

Poznámka k emodži: Při použití emodži ve výzvách PS1 a PS2 je vhodné za ně zařadit znak „\u200b“ (mezera nulové šířky), protože většina z nich zabírá v emulátoru terminálu dva textové sloupce a bash by jinak chybně odhadl délku dané řádky výzvy. Pokud použijete emodži, která zabírá tři sloupce, použijte mezery nulové šířky dvě; pokud zabírá jen jeden sloupec, nevkládejte žádnou.

7. Instalace na Ubuntu

Příkaz cmatrix, pokud ho potřebujete, je nutno doinstalovat:

sudo apt-get install cmatrix

Pokud potřebujete příkaz „toilet“, vždy ho instalujte v kombinaci s balíčkem „figlet“, který obsahuje potřebná písma:

sudo apt-get install toilet figlet

8. Ukázka

source <(lkk --funkce)
PROMPT_COMMAND="navr_hodn=\$?;$PROMPT_COMMAND"
PS1="$(printf $'\U0001f4d7\u200b')\\[$(lkk_bezp_set setab 65 2)\\]$(printf $'\U0001f427\u200b'; lkk_pstput sgr0; printf $'\U0001f4d7\u200b') "
PS1+="\\[$(printf %s\\n "$TERM" | egrep -isq "^(xterm|rxvt)" && printf "\\e]2;%s\\a" "Bude příkaz č. \\#")\\]"
PS1+="Tato $(lkk_pstput smul)výzva je $(lkk_pstput sitm)zbytečně$(lkk_pstput rmul) rozsáhlá, aby ukázala $(lkk_pstput bold)spoustu$(lkk_pstput sgr0) možností.\\n"
PS1+="$(lkk_pstput dim)Velikost terminálu: \$(tput cols)x\$(tput lines) Volné místo: $(lkk_pstput smul)\$(df -h --output=avail . | tail -n 1 | tr -d \" \")$(lkk_pstput sgr0)\\n"
PS1+="Návr.kód:\\[\$(lkk_barvapronh \${navr_hodn})\\]\${navr_hodn}$(lkk_pstput sgr0) (\\[$(lkk_bezp_set setaf 87 6)\\]\\t$(lkk_pstput sgr0)) !""\\! "
PS1+="\\[$(lkk_bezp_set setaf 220 3; tput bold)\\]\\w$(lkk_pstput sgr0) \\$ "
PS2="\\[$(lkk_bezp_set setaf 10 2; tput bold)\\]| $(lkk_pstput sgr0)"

9. Tipy a zkušenosti

  • Výchozí nastavení výzev se nachází v souboru „~/.bashrc“. Umístěním svých definic na konec tohoto souboru můžete výchozí nastavení přepsat. Změna se projeví při dalším spuštění Bashe.
  • Konstrukci proměnné PS1 je vhodné pro přehlednost rozdělit do více řádek, kdy první řádka bude přiřazení a na dalších použijete operátor += k připojení hodnoty ke stávající hodnotě.
  • Tip: Před zkoušením nastavování barev a titulku terminálu si vypněte výzvu příkazem „PS1=""“. Výchozí výzva obsahuje escape sekvence, které by kolidovaly s těmi, které se snažíte zadat a rušily by jejich účinek.
  • Bash podporuje proměnnou „PROMPT_COMMAND“. Je-li nastavena, je vykonána jako příkaz těsně před vypsáním hlavní výzvy. Toho lze využít k nastavení proměnných, které pak ve výzvě použijeme. Proměnná PROMPT_COMMAND může obsahovat i více příkazů oddělených středníky. Podle manuálové stránky by příkazy uvedené v této proměnné neměly generovat žádný výstup na terminál! (Ale výstup do souboru je pravděpodobně v pořádku.)

10. Další zdroje informací

Přehled syntaxe pro proměnné PS0, PS1 a PS2 najdete v sekci „PROMPTING“ v manuálové stránce „bash“ (anglicky).

Různé další tipy se dají najít v článku Bash/Prompt customization (anglicky).

11. Pomocné funkce a skripty

@lkk_bezp_set() – nastaví písmo či pozadí na první podporovanou barvu#1
function lkk_bezp_set () {
local f="$1" c="$(tput colors 2>/dev/null || printf 0)" x=""
shift
for x in $@; do if test $x -lt $c; then tput $f $x; break; fi; done
return 0
}
@lkk_barvapronh() – nastaví barvu písma podle hodnoty parametru#2
function lkk_barvapronh () {
test $1 -gt 0 && tput bold
test $1 -eq 1 && lkk_bezp_set setaf 1
test $1 -gt 1 && lkk_bezp_set setaf 2
}
@lkk_pstput() – vypíše escape sekvenci uzavřenou pro použití v proměnných PS1 a PS2#3
function lkk_pstput () {
printf \\[; tput "$@" && printf \\]
}
@lkk titulek – nastaví titulek emulátoru terminálu, je-li to podporováno#4
#!/bin/bash
[[ $TERM =~ ^(xterm|rxvt) ]] && printf '\e]2;%s\a' "$1"

12. Zákulisí kapitoly

V této verzi kapitoly chybí:

  • nic

Tato kapitola záměrně nepokrývá:

  • nic
1 Poznámka: Protože ve výchozím nastavení nastavuje titulek terminálu výzva PS1, před jakýmkoliv experimentováním ji musíte vypnout nebo změnit (např. příkazem „PS=""“), jinak vám vaše nové nastavení hned přepíše, takže se vám bude zdát, že nefunguje.
2 Funkce „lkk_bezp_set“ použije ze svých argumentů první podporované číslo barvy. Není-li žádné z uvedených čísel podporováno, žádná barva se nanastaví. Při volání doporučuji jako první uvést číslo pro paletu s 256 barvami a jako druhé číslo náhradní barvy z osmibarevné palety.
3 Na některých terminálech je realizován jako inverzní text, na jiných jako tučné písmo.
4 Používání blikajícího textu se výrazně nedoporučuje, protože je v různých terminálech málo a nejednotně podporován, má mnoho odpůrců a může uživateli způsobovat zdravotní potíže.
5 V interaktivním režimu program ukončíte klávesou „q“, další klávesové zkratky najdete v manuálové stránce. Rychlost je od 0 (nejrychlejší) po 9 (nejpomalejší).
6 Pro český text s háčky a čárky se bohužel dobře hodí jen písma „ascii9“, „smmono9“ a „standard“; čárky zvládají i některá další; písmena anglické abecedy zvládají všechna. Z filtrů mohu doporučit „gay“ a „border“, méně „metal“, „180“ a „flip“.
7 Řádky a sloupce jsou číslovány od nuly od levého horního rohu terminálu.
8 U druhé varianty (vyhodnotit při každém vypsání výzvy) musíte v příkazu odzvláštnit znaky ", \, $ a !, aby se do příslušné proměnné uložil přesně tak, jak má být vykonán.
9 Poznámka: Aby tento výraz fungoval, musíte do proměnné PROMPT_COMMAND (ideálně na začátek) přidat příkaz „navr_hodn=$?“, např. příkazem „PROMPT_COMMAND="navr_hodn=\$?;$PROMPT_COMMAND"“.
10 Pro popis vlastního formátu viz „man strftime“ nebo kapitolu „Datum, čas a kalendář“.
11 Poznámka: V případě, že nějaký příkaz spustíte na pozadí nebo ho přerušíte (Ctrl+Z), vypíše výzva dobu trvání po částech (vždy od potvrzení příkazu po následující zobrazení výzvy). Pro pokročilejší měření použijte příkaz „time“. Tyto příkazy navíc obsazují obsluhu signálu SIGUSR2, proto je nelze kombinovat s jinými příkazy, které by obsluhu tohoto signálu potřebovaly.
12 Viz poznámku pod čarou k „trvání posledního příkazu v sekundách“.
13 Tip: pokud to váš terminál podporuje, můžete použít i barvy v rozsahu 16 až 255. Odpovídající sekvence kódu jsou ovšem netriviální a je potřeba je vygenerovat níže uvedeným zaklínadlem z příkazu „tput“. Jejich použití také může způsobit potíže, pokud se přepnete na terminál, který tyto barvy nepodporuje.
14 Prázdný výstup znamená, že takovou sekvenci nelze vygenerovat.
15 Poznámka: toto nastavení má nižší prioritu než EXEC, proto spustitelné soubory s více pevnými odkazy nebudou tímto nastavením zvýrazněny.
16 Ve výchozím konfiguračním souboru musíte toto nastavení nejprve odkomentovat. Pozor, po odkomentování překryje nastavení MULTIHARDLINK!
[BY-SA]

Veškerý obsah této stránky (text, obrázky, zdrojový kód) je možno upravovat a šířit pod podmínkami licence Creative Commons Attribution-ShareAlike 4.0 International. Upozorňuji, že uvedená licence vyžaduje uvedení seznamu autorů, licence a zdroje a poskytnutí stejné či kompatibilní licence k provedeným změnám, jsou-li nějaké. Příslušné údaje jsou dostupné na stránce „Přehled autorů“. Šíření obsahu bez těchto údajů nebo šíření upravené verze bez poskytnutí adekvátní licence k provedeným úpravám je pravděpodobně porušení licenčních podmínek a může být postihováno. Poskytování zdrojového kódu při šíření není touto licencí vyžadováno.

Pro nové verze, další informace, aktuální zdrojový kód a možnost se zapojit do projektu „Linux: Kniha kouzel“ navštivte jeho repozitář na GitHubu.