GNU/Linux >> Znalost Linux >  >> Linux

Různé barvy pro příkaz a výstup

Výstup můžete předat programu, který provádí barvení. Existují například programy jako pycolor :

pycolor module.py

Chcete-li vytvořit svůj vlastní:

red="$(tput setaf 1)"
reset="$(tput sgr0)"
echo $'foo\nbar' | sed -e "s/\(bar\)/$red\1$reset/"

Více o barevném výstupu.


Spíš ne; barva výstupu daného programu je řízena příkazem, nikoli terminálem.

To znamená, že za předpokladu, že váš terminál rozumí únikovým kódům ANSI pro barvu (většina ano), můžete pomocí kódů escape nastavit požadovanou barvu výzvy na začátku výzvy a požadovanou barvu výstupu na konci; to by vedlo k tomu, že vaše příkazové řádky budou mít také jakoukoli barvu, kterou nastavíte pro výstup, ale to je pravděpodobně tak blízko, jak se dostanete k tomu, co hledáte. Například následující:

$ export PS1='\[\033[00;35m\]\u\[\033[00m\]@\[\033[00;35m\]\H\[\033[00m\]:\[\033[00;33m\]\W\[\033[00m\] \$\[\033[00;34m '

zobrazí výzvu, která vypadá takto:

[email protected]:wd $ _

s 'user' a 'host' ve fialové barvě, 'wd' (vaše cwd) v hnědé (tmavě žluté) a vše za '$ ' v tom, co váš terminál používá pro světle modrou. (Výchozí xterm to vykreslí v azurové barvě; zdá se, že gnome-terminal je nastaven na poměrně pěkný odstín chrpově modré.)

Skutečný kód barvy, jak je uveden v nezbytném formátu pro bash, je např. \[\033[00;35m\] , kde 00;35 je skutečná specifikace barvy; první 00 zřídka se mění, ale mohou vytvářet IIRC tučné (01), podtržené (??) a obrácené video efekty (??), zatímco koncová '35' je skutečná barva, která je v tomto případě fialová.

Je překvapivě těžké najít slušný seznam barevných kódů ANSI, ale barvy popředí se pohybují od 30 do 37 a barvy pozadí od 40 do 47, a to následovně:

color        fg  bg
black        30  40
red          31  41
green        32  42
yellow       33  43
blue         34  44
purple       35  45
cyan         36  46
gray/white   37  47

Mějte na paměti, že vzhledem k tomu, že nastavujete výchozí barvu pro vše, co následuje po vaší výzvě, programy, které spustíte a které nenastavují své vlastní barvy pomocí únikových kódů, převezmou tuto barvu – například pokud spustíte pager, pravděpodobně uvidíte jeho výstup ve stejné barvě, jakou jste nastavili pro jiné příkazy. Mezitím příkazy, které dělají nastavení jejich vlastních barev pomocí únikových kódů bude vaše úsilí zcela ignorovat.


Ano, funguje mi to pro bash, alespoň na linuxu a mac OS.

Nejprve nastavte některé proměnné atributů a výzvu PS1, abyste nechali terminál nastavený s požadovanými atributy příkazového řádku, například:

bold="\[$(tput bold)\]"
none="$(tput sgr0)"
export PS1="\$ $bold"

Poté použijte past bash DEBUG, která se provede těsně před každým příkazem, ke změně atributů textu pro výstup příkazu:

trap 'echo -ne "${none}"' DEBUG

Linux
  1. Zobrazení úplného výstupu příkazu PS

  2. Přesměrování výstupu příkazu do souboru a terminálu

  3. Převeďte výstup na řetězec

  1. 10 návodů na příkazy Linuxu pro začátečníky a experty

  2. Proč příkaz free a dmidecode ukazují různé hodnoty pro RAM?

  3. Nekonzistentní barevný výstup z příkazu `ls`

  1. Linux pinky Command Tutorial pro začátečníky (8 příkladů)

  2. Výstup kterého příkazu použitého pro vstup na CD?

  3. $_ vs! $. Poslední argument předchozího příkazu a přesměrování výstupu?