Choinka w wierszu poleceń

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":

Choinka w wierszu poleceń

W innych – jest szara i nieciekawa:

Choinka w wierszu poleceń

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

Choinka w wierszu poleceń

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ę:

Choinka w wierszu poleceń

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:

Choinka w wierszu poleceń

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ę.

Choinka w wierszu poleceń

Co jeszcze ciekawego można przeczytać na blogu Cloud4Y

Konfigurujemy top w GNU/Linux
Pentyści na pierwszej linii cyberbezpieczeństwa
Startupy, które potrafią zaskoczyć
Czy w data center potrzebne są poduszki?
Dom zbudowany przez robota

Subskrybuj nasz Telegram-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 do 31 grudnia.

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster