Většinu času trávím prací v prostředí Unix a používáním terminálových emulátorů. Snažím se používat barvy na příkazovém řádku, protože díky barvě je výstup užitečnější a intuitivnější.
Jaké možnosti existují pro přidání barvy do mého terminálového prostředí? Jaké triky používáte? S jakými nástrahami jste se setkali?
Podpora barev se bohužel liší v závislosti na typu terminálu, OS, nastavení TERM, obslužném programu, chybných implementacích atd.
Zde je několik tipů z mého nastavení po dlouhém experimentování:
- Mám tendenci nastavovat
TERM=xterm-color
, který je podporován na většině hostitelů (ale ne na všech). - Pracuji na mnoha různých hostitelích, různých verzích OS atd. Používám vše od macOS X, Ubuntu Linux, RHEL/CentOS/Scientific Linux a FreeBSD. Snažím se, aby věci byly jednoduché a obecné, pokud je to možné.
- Dělám spoustu práce pomocí GNU
screen
, což přidává další vrstvu zábavy. - Mnoho operačních systémů nastavuje věci jako
dircolors
a ve výchozím nastavení a nechci to upravovat na stovkách různých hostitelů. Takže se snažím držet výchozích hodnot. Místo toho upravím konfiguraci barev svého terminálu. -
Použijte barvu pro některé unixové příkazy (
ls
,grep
,less
,vim
) a výzva Bash. Zdá se, že tyto příkazy používají standardní „únikové sekvence ANSI“. Například:alias less='less --RAW-CONTROL-CHARS' export LS_OPTS='--color=auto' alias ls='ls ${LS_OPTS}'
Zveřejním svůj .bashrc
a odpovědět na mou vlastní otázku Jeopardy Style.
Přijatá odpověď:
Zde je několik věcí, které můžete udělat:
Editoři + kód
Mnoho editorů má podporu zvýrazňování syntaxe. vim
a emacs
mít to ve výchozím nastavení zapnuté. Můžete jej také povolit pod nano
.
Kód zvýraznění syntaxe na terminálu můžete také použít pomocí Pygments jako nástroje příkazového řádku.
grep grep --color=auto
zvýrazní všechny zápasy. Můžete také použít export GREP_OPTIONS='--color=auto'
aby byla trvalá bez aliasu. Pokud použijete --color=always
, bude používat barvu i při potrubí, což věci mate.
ls
ls --color=always
Barvy specifikované:
export LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:pi=40;33'
(nápověda:dircolors
může být užitečné)
PS1
Svůj PS1 (výzva shellu) můžete nastavit tak, aby používal barvy. Například:
PS1='e[33;[email protected]: e[31mWe[0m$ '
Vyrobí PS1 jako:
[žlutá][chráněný e-mail]:[červená]~[normální]$
S tím můžete být opravdu kreativní. Jako nápad:
PS1='e[se[0;0He[1;33mh tne[1;32mThis is my computere[u[[email protected]: w]$ '
Vloží do horní části vašeho terminálu pruh s náhodnými informacemi. (Pro nejlepší výsledky použijte také alias clear="echo -e 'e[2Jnn'"
.)
Jak se zbavit únikových sekvencí
Související:Neuvedené rozlišení obrazovky?
Pokud se něco zasekne na výstupu barvy, když si to nepřejete, použiji toto sed
řádek pro odstranění escape sekvencí:
sed "s/[^[[0-9;]*[a-zA-Z]//gi"
Pokud chcete autentičtější zážitek, můžete se také zbavit řádků začínajících e[8m
, který terminálu přikáže skrýt text. (Ne široce podporováno.)
sed "s/^[^[8m.*$//gi"
Všimněte si také, že tyto ^[s by měly být skutečné, doslovné ^[s. Můžete je zadat stisknutím ^V^[ v bash, to je Ctrl + V , Ctrl + [ .