Kontext a otázka
Existuje mnoho způsobů, jak obarvit prostředí terminálu a shellu. Výstup jednotlivých příkazů, jako je ls
a grep
, lze také barvit. Ne přímo související, ale přesto zajímavý je pojem přehrávání médií na konzoli, ale zdánlivě závisí na nějakém rámci (knihovnách) nad okenním systémem. Následující otázka je zaměřena výhradně na bash
shell a jeho implementace v linuxovém terminálovém rámci a jeho základy.
Zvažte prosím následující montáž ASCII „vykreslení“ scény ve 2D hře:
Nejedná se o náhodně generované scény. Všechny segmenty, které jsem vybral, ve skutečnosti zobrazují nějakou formu „travinného“ terénu (stromy, keře a keře, květiny, trávu atd.) ze hry, která k reprezentaci takových objektů používá znaky ASCII. Poslední 4 scény představují sady dlaždic vytvořené uživateli, které jsou v podstatě přemapováním znaků ASCII s barevnými specifikacemi (takové detaily jsou triviální – stačí říci, že toto je vizuální inspirace pro to, čeho se zde snažím dosáhnout z hlediska vizuálu a “ vzor”).
Společné rysy těchto scén v podílu montáže jsou:
- Maximálně 5–6 různých znaků ASCII (čárky, uvozovky a několik dalších)
- Použity 2–4 barvy
- pro postavy
- v některých případech pro pozadí postav – poslední příklad ukazuje použití barevných odstínů s malým nebo žádným znakem k vytvoření vzoru, tj. barevné mozaiky
V současné době mám ve virtuálním počítači Arch Linux a přestože otázka není specifická pro distribuci, podíval jsem se do jejich dokumentace pro přizpůsobení /etc/bash.bashrc
soubor. Vidím, že hodně vysvětlování jde do konfigurace vzhledu výzvy a obecně všech prvků v popředí. Existuje jen málo informací o jakékoli konfiguraci pozadí, kromě obvykle plné barvy, jako jsou tato nastavení a tipy:
# Background
On_Black='e[40m' # Black
On_Red='e[41m' # Red
On_Green='e[42m' # Green
On_Yellow='e[43m' # Yellow
On_Blue='e[44m' # Blue
On_Purple='e[45m' # Purple
On_Cyan='e[46m' # Cyan
On_White='e[47m' # White
Stále koncepčně nechápu, co jsou ty prázdné/prázdné/pozadí „mezery“, které jsem nenapsal, když používám konzolu, tj. „z čeho jsou vyrobeny?“ abych tak řekl. Zejména ty, které nejsou na výzvě a které obtékají příkazy, které jsou echoovány. S ohledem na to, co se děje na aktivním řádku, je možné demonstrovat, že bash
působí „řádkově orientovaným“ způsobem a že některé operace spouštějí vymazání aktivního řádku (for i in $(seq 1 $(expr $(tput lines) * $(tput cols))); do echo -n M; done; tput cup 15 1
, poté na výzvu zadejte znak a vložte jej zpět – demonstroval přispěvatel) – jehož rozsah se může lišit od CLI k jinému, např. zsh. Navíc se zdá, když přidám něco jako [