Wkrótce Nowy Rok, nie chce się już myśleć o poważnej pracy.
Wszyscy starają się jakoś ozdobić na święta: dom, biuro, miejsce pracy… Zróbmy coś i my! Na przykład ozdobimy naszą linię komend. W pewnym sensie linia komend to również miejsce pracy.
W niektórych dystrybucjach już jest "ozdobiona":

W innych – jest szara i nieciekawa:

A my możemy zrobić to na przykład w ten sposób:

Oczywiście, na gust i kolor są różne markery. Jeśli taka ozdoba wydaje się Wam pretensjonalna i nieodpowiednia, to wiedzcie, że ten punkt widzenia ma pełne prawo do życia. A jeśli chcesz również dodać trochę noworocznego nastroju, przeczytaj poniższy krótki artykuł noworoczny od Cloud4Y.
Na początku wyjaśnię, jak "ozdabia się" wyjście terminala. Robi się to przy użyciu sekwencji escape. A jeśli dokładniej – sekwencji kodów sterujących ANSI/VT100. Co automatycznie oznacza, że Twój emulator terminala musi wspierać ten standard, w przeciwnym razie noworocznego cudu nie będzie. I tak, zakłada się, że $SHELL to bash.
Te komendy nazywane są sekwencjami escape z tej przyczyny, że na początku każdej z nich znajduje się znak ASCII "escape". Jest wiele sekwencji sterujących, które pozwalają na przykład wyświetlać ustawienia terminala, zarządzać wyświetlaniem i ruchem kursora, zmieniać czcionki, usuwać i ukrywać tekst. Z całego wachlarza możliwości wybierzemy jedną – zmianę koloru tekstu i tła.
Wykonujemy sekwencję kodu *ESC*[{attr1};...;{attrn}m
Jako symbol Escape używana jest jego postać ósemkowa, to jest 33. Co do atrybutów, oto krótka lista możliwych wartości:
0 Zresetować wszystkie atrybuty
1 Bright (większa jasność)
2 Dim (przyciemnienie)
4 Underscore (podkreślenie)
5 Blink (miganie)
7 Reverse (odwrócenie)
8 Hidden (ukryć tekst)
Foreground Colours (kolory tekstu, tym kolorem wyświetlany jest tekst):
30 Black (czarny)
31 Red (czerwony)
32 Green (zielony)
33 Yellow (żółty)
34 Blue (niebieski)
35 Magenta (purpurowy)
36 Cyan (błękitny)
37 White (biały)
Background Colours (kolory tła):
40 Black (czarny)
41 Red (czerwony)
42 Green (zielony)
43 Yellow (żółty)
44 Blue (niebieski)
45 Magenta (purpurowy)
46 Cyan (błękitny)
47 White (biały)
Zwróć uwagę, jeśli teraz wydasz polecenie w terminalu: echo 33[0;31mjakis tekst 33[0m’
… to przewidywalnie otrzymasz jednokolorową zagadkę:

Dlaczego? Ponieważ należało wykorzystać rozszerzone możliwości polecenia echo. Wystarczy dodać jeden klucz: echo -e ‘ 33[0;31mjakis tekst 33[0m’
Teraz wynik będzie wyglądał poprawnie:
![]()
Zajęliśmy się kolorowaniem wyjścia w terminalu. Teraz spójrzmy, jak pokolorować zachętę wiersza poleceń.
Robi się to poprzez zmianę zmiennej PS1. Zmienna ta odpowiada za zachętę wiersza poleceń. Jej wygląd można również zmieniać, w tym za pomocą sekwencji escape. Ale jest pewna różnica: sekwencję należy rozpocząć od znaku “[”, a zakończyć znakiem “]”, inaczej zostanie wypisane na terminalu.
Wszystkie możliwe sekwencje poleceń są szczegółowo opisane w podręczniku do bash, więc proponuję czytelnikom samodzielnie wybrać, co wolą widzieć w zachęcie wiersza poleceń. Dla przykładu podam moją wartość zmiennej PS1:
[ 33[34;1m]t[ 33[0m],[ 33[32m]u@l@h[ 33[0m]:[ 33[33m]W[ 33[0m],[ 33
[31m]![ 33[0m]$n
Rozszyfruję to straszne zaklęcie:
[ 33[34;1m] — włączam jasnoniebieski (drugi atrybut) kolor czcionki
t – wyświetlam aktualny czas w formacie GG: MM: SS
[ 33[0m] – resetuję ustawienia koloru czcionki
, — po prostu przecinek (niespodzianka, prawda?)
[ 33[32m] — włączam zielony kolor czcionki
u@l@h – wyświetlam nazwę użytkownika, numer urządzenia terminalowego i krótką nazwę hosta, oddzielając znakiem “@”
[ 33[0m] — ponownie resetuję ustawienia koloru czcionki
: — po prostu dwukropek (niespodzianka!)
[ 33[33m] — włączam żółty kolor czcionki
W – wyświetlam nazwę bieżącego katalogu
[ 33[0m] — znowu resetuję ustawienia koloru czcionki
, — jeszcze jeden przecinek (kto by pomyślał!)
[ 33[31m] — włączam czerwony kolor czcionki
! — wyświetlam numer polecenia w terminalu
[ 33[0m] — nie zapominam zresetować ustawień koloru czcionki
$ — wyświetlam “#” dla roota i “$” dla wszystkich innych
n – złamanie linii. Dlaczego? Żeby polecenie zaczynało się od lewego brzegu okna, a nie od pozycji końca zachęty wiersza poleceń.
Gdzie nadpisać zmienną? Najsensowniej zrobić to w ~/.bashrc.
Wygląd zachęty ogranicza tylko twoja wyobraźnia. Tak naprawdę nic nie stoi na przeszkodzie, żeby za pomocą opisanego wyżej narzędzia stworzyć zachętę wiersza poleceń w formie choinki bożonarodzeniowej. Oczywiście taka zachęta będzie bardzo nieporęczna i praca raczej się nie ułatwi. Choinkę można po prostu wyświetlić nad zachętą wiersza poleceń podczas logowania się (w końcu trzeba edytować ~/.bashrc). Czas działać! I dziękuję za uwagę.

Co jeszcze ciekawego można przeczytać na blogu
→
→
→
→
→
Subskrybuj nasz -kanał, aby nie przegapić kolejnego artykułu! Pisujemy nie częściej niż dwa razy w tygodniu, wyłącznie na temat. Przypominamy również, że korporacyjny dostawca chmury Cloud4Y uruchomił promocję „Chmura FZ-152 w cenie zwykłej”. Można składać wnioski .
Źródło: habr.com
