Jak zmienić kolor terminala Linuksa
On 22 stycznia, 2022 by adminMożesz dodać kolor do terminala Linuksa używając specjalnych ustawień kodowania ANSI, albo dynamicznie w komendzie terminala lub w plikach konfiguracyjnych, albo możesz użyć gotowych motywów w emulatorze terminala. Tak czy inaczej, nostalgiczny zielony lub bursztynowy tekst na czarnym ekranie jest całkowicie opcjonalny. Ten artykuł demonstruje jak możesz uczynić Linuksa tak kolorowym (lub monochromatycznym) jak tylko chcesz.
Możliwości terminala
Nowoczesne systemy zazwyczaj domyślnie mają przynajmniej xterm-256color, ale jeśli próbujesz dodać kolor do swojego terminala bez powodzenia, powinieneś sprawdzić ustawienia TERM.
Historycznie, terminale uniksowe były dosłownie tym: fizycznymi punktami w dosłownym punkcie końcowym (zakończenie) współdzielonego systemu komputerowego, gdzie użytkownicy mogli wpisywać komendy. Były one unikalne od dalekopisów (dlatego wciąż mamy urządzenia /dev/tty w Linuksie), które były często używane do wydawania poleceń na odległość. Terminale miały wbudowane monitory CRT, więc użytkownicy mogli usiąść przy terminalu w swoim biurze, aby wejść w bezpośrednią interakcję z mainframe. Monitory CRT były drogie – zarówno w produkcji, jak i w sterowaniu; łatwiej było zlecić komputerowi wypluwanie surowego tekstu ASCII, niż martwić się o antyaliasing i inne udogodnienia, które współcześni informatycy uważają za oczywiste. Jednak rozwój technologii nastąpił szybko nawet wtedy, i szybko stało się jasne, że jak nowe terminale wyświetlające wideo zostały zaprojektowane, potrzebowały nowych możliwości, aby być dostępne na zasadzie opcjonalnej.
Na przykład, fantazyjny nowy VT100 wydany w 1978 roku obsługiwał kolor ANSI, więc jeśli użytkownik zidentyfikował typ terminala jako vt100, to komputer może dostarczyć kolorowy sygnał wyjściowy, podczas gdy podstawowe urządzenie szeregowe może nie mieć takiej opcji. Ta sama zasada obowiązuje dzisiaj i jest ustawiana przez zmienną środowiskową TERM. Możesz sprawdzić swoją definicję TERM za pomocą echo:
$ echo $TERM
xterm-256color
Przestarzały (ale wciąż utrzymywany w niektórych systemach w interesie kompatybilności wstecznej) plik /etc/termcap określał możliwości terminali i drukarek. Współczesną wersją tego jest terminfo, znajdujący się w /etc lub /usr/share, zależnie od twojej dystrybucji. Pliki te zawierają listę funkcji dostępnych w różnych rodzajach terminali, z których wiele jest zdefiniowanych przez historyczny sprzęt: istnieją definicje dla vt100 do vt220, jak również dla nowoczesnych emulatorów programowych jak xterm i Xfce. Większość oprogramowania nie dba o typ terminala, którego używasz; w rzadkich przypadkach, możesz otrzymać ostrzeżenie lub błąd o nieprawidłowym typie terminala podczas logowania do serwera, który sprawdza kompatybilność. Jeśli twój terminal jest ustawiony na profil z bardzo małą liczbą funkcji, ale wiesz, że emulator, którego używasz ma więcej możliwości, to możesz zmienić ustawienia definiując zmienną środowiskową TERM. Możesz to zrobić przez wyeksportowanie zmiennej TERM do pliku konfiguracyjnego ~/.bashrc:
export TERM=xterm-256color
Zapisz plik i załaduj ponownie swoje ustawienia:
$ source ~/.bashrc
Kody kolorów ANSI
Nowoczesne terminale odziedziczyły sekwencje ucieczki ANSI dla funkcji „meta”. Są to specjalne sekwencje znaków, które terminal interpretuje jako akcje, a nie znaki. Na przykład, ta sekwencja czyści ekran do następnego znaku zachęty:
$ printf `3
Or you can use dircolors directly:
$ dircolors --print-database
# image formats
.jpg 01;35
.jpeg 01;35
.mjpg 01;35
.mjpeg 01;35
.gif 01;35
.bmp 01;35
.pbm 01;35
.tif 01;35
.tiff 01;35
If that looks cryptic, it’s because it is. The first digit after a file type is the attribute code, and it has six options:
- 00 none
- 01 bold
- 04 underscore
- 05 blink
- 07 reverse
- 08 concealed
The next digit is the color code in a simplified form. You can get the color code by taking the final digit of the ANSII code (32 for green foreground, 42 for green background; 31 or 41 for red, and so on).
Your distribution probably sets LS_COLORS globally, so all users on your system inherit the same colors. If you want a customized set of colors, you can use dircolors for that. First, generate a local copy of your color settings:
$ dircolors --print-database > ~/.dircolors
Edytuj swoją listę lokalną jak chcesz. Gdy będziesz zadowolony ze swoich wyborów, zapisz plik. Twoje ustawienia kolorów są tylko bazą danych i nie mogą być użyte bezpośrednio przez ls, ale możesz użyć dircolors, aby uzyskać kod powłoki, którego możesz użyć do ustawienia LS_COLORS:
$ dircolors --bourne-shell ~/.dircolors
LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:
pi=40;33:so=01;35:do=01;35:bd=40;33;01:
cd=40;33;01:or=40;31;01:mi=00:su=37;41:
sg=30;43:ca=30;41:tw=30;42:ow=34;
export LS_COLORS
Kopiuj i wklej to wyjście do swojego pliku ~/.bashrc i załaduj ponownie. Alternatywnie, możesz wyrzucić to wyjście prosto do swojego pliku .bashrc i przeładować.
$ dircolors --bourne-shell ~/.dircolors >> ~/.bashrc
$ source ~/.bashrc
Możesz także sprawić, by Bash rozwiązywał .dircolors przy starcie, zamiast robić konwersję ręcznie. Realistycznie rzecz biorąc, prawdopodobnie nie będziesz często zmieniał kolorów, więc może to być zbyt agresywne, ale jest to opcja, jeśli planujesz często zmieniać swój schemat kolorów. W swoim pliku .bashrc, dodaj następującą regułę:
] && eval "`dircolors --sh $HOME/.dircolors`"
Jeśli masz plik .dircolors w swoim katalogu domowym, Bash oceni go przy uruchomieniu i odpowiednio ustawi LS_COLORS.
Color
Kolory w twoim terminalu są łatwym sposobem na szybkie wizualne odniesienie się do konkretnych informacji. Jednakże, możesz nie chcieć opierać się na nich zbyt mocno. Po tym wszystkim, kolory nie są uniwersalne, więc jeśli ktoś inny używa twojego systemu, może nie widzieć kolorów tak samo jak ty. Ponadto, jeśli używasz różnych narzędzi do interakcji z komputerami, możesz również zauważyć, że niektóre terminale lub połączenia zdalne nie zapewniają kolorów, których oczekujesz (lub kolorów w ogóle).
Ostrzeżenia te na bok, kolory mogą być użyteczne i zabawne w niektórych przepływach pracy, więc stwórz bazę danych .dircolor i dostosuj ją do swoich potrzeb.
Dodaj komentarz