GNU/Linux >> Znalost Linux >  >> Linux

Lze prázdná místa/pozadí v terminálu nahradit náhodným (ale pěkným) vzorem postav Ascii?

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 [

Linux
  1. Jak převést hex na ASCII znaky v prostředí Linuxu?

  2. Najděte v systému Linux soubory s nelegálními znaky systému Windows v názvu

  3. Jak mohu nainstalovat nejnovější Anacondu s wget

  1. 3 užitečné věci, které můžete dělat s nástrojem IP v Linuxu

  2. Procházení souborů s mezerami v názvech?

  3. Jak mohu spustit jiný příkaz, ale se stejnými argumenty?

  1. Počítání znaků každého řádku s Wc?

  2. Práce s kalendáři v terminálu Linux

  3. Jak mohu spočítat počet znaků v proměnné Bash