Większość dystrybucji Linuksa konfiguruje monit Bash, aby wyglądał podobnie
nazwa_użytkownika @ nazwa_hosta: katalog $
. Ale możesz skonfigurować monit Bash tak, aby zawierał wszystko, co lubisz, a nawet wybrać dowolne kolory.
Przykładowe kroki zostały wykonane na Ubuntu 16.04 LTS. Proces powinien być taki sam w innych dystrybucjach Linuksa, chociaż domyślny monit Bash i ustawienia w pliku .bashrc mogą być nieco inne.
Gdzie jest przechowywana zmienna podpowiedzi
Twoja konfiguracja monitu Bash jest przechowywana w pliku .bashrc konta użytkownika, który znajduje się pod adresem
~ / .bashrc
. Tak więc, jeśli twoja nazwa użytkownika to bob, plik ma adres
/home/bob/.bashrc
.
Możesz otworzyć plik, aby wyświetlić bieżącą zmienną Bash. Użyjemy nano jako naszego przykładowego edytora tekstu, chociaż możesz też użyć my , emacs lub jakikolwiek inny edytor tekstu, który Ci odpowiada. Otwórz terminal i uruchom:
nano ~ / .bashrc
Przewiń w dół do
Ψ1 =
Sekcja. Pierwsza zmienna wygląda na dość skomplikowaną, ponieważ zawiera informacje o kolorze - wyjaśnimy to później. Druga zmienna, bez informacji o kolorze, ma następujące brzmienie:
{debian_chroot:+($debian_chroot)} $ \ u @ \ h: \ w \ $
Jest to nadal trochę skomplikowane ze względu na rozszerzenie
${debian_chroot:+($debian_chroot)}
bity. Po prostu każą Bashowi powiadomić Cię, jeśli używasz środowiska chroot Debiana i zwykle nie będą wyświetlane. Ignorując je, oto domyślna struktura zmiennej zachęty Bash:
\ u @ \ h: \ w \ $
\ u
wskazuje Twoją nazwę użytkownika,
@
wskazuje znak @,
\ h
wskazuje nazwę hosta (nazwę komputera),
:
wskazuje: znak,
\w
wskazuje katalog roboczy, a
\$
wskazuje $, jeśli jesteś zwykłym kontem użytkownika lub #, jeśli jesteś rootem. Więc łącząc to wszystko razem, otrzymujesz
nazwa_użytkownika @ nazwa_hosta: katalog_roboczy $
.
Aby zmienić monit Bash, wystarczy dodać, usunąć lub zmienić kolejność znaków specjalnych w zmiennej PS1. Ale jest o wiele więcej zmiennych, których możesz użyć niż domyślne.
Na razie opuść edytor tekstu - w nano naciśnij Ctrl + X, aby wyjść. Pokażemy Ci, jak eksperymentować ze zmiennymi przed zapisaniem nowej w pliku .bashrc.
Jak utworzyć niestandardowy monit Bash
Twoja konfiguracja podpowiedzi Bash jest przechowywana w zmiennej PS1. Aby zapisać zawartość zmiennej PS1 w nowej zmiennej, uruchom następujące polecenie:
DEFAULT = $ PS1
Możesz teraz ustawić zmienną PS1 na różne wartości, aby eksperymentować. Na przykład, pierwsza linia tutaj ustawiłaby znak zachęty na podstawową zachętę „user $”, podczas gdy druga ustawiłaby ją na podstawową zachętę „user: working_directory $”.
PS1 = „\ u \ $” PS1 = „\ u: \ w \ $”
Jeśli kiedykolwiek zechcesz wrócić do domyślnego monitu, po prostu uruchom następujące polecenie.
PS1 = $ DOMYŚLNE
Bash zostanie przywrócony do domyślnego monitu dzięki temu, że wcześniej zapisałeś te domyślne ustawienia. Pamiętaj, że wszelkie zmiany, które tutaj wprowadzisz, są tylko tymczasowe dla bieżącej sesji Bash, więc zawsze możesz się wylogować i zalogować ponownie lub zamknąć i ponownie otworzyć okno terminala, aby wrócić do domyślnego monitu. Ale powyższa linia umożliwia łatwe powrót do domyślnego monitu Bash bez kłopotów z wylogowaniem się lub zamknięciem okna.
Możesz dodać dowolne znaki lub tekst do zmiennej. Tak więc, aby poprzedzić domyślny znak zachęty „Hello World”, możesz użyć:
PS1="Hello World \u@\h:\w\$ "
Teraz, gdy znasz już podstawy, musisz tylko wiedzieć, jakie są wszystkie znaki specjalne. Prawdopodobnie nie będziesz się przejmować wieloma z nich, ale oto pełna lista, w jakiej się pojawia podręcznik Bash :
-
Postać dzwonka:
\za -
Data w formacie „Dzień tygodnia i miesiąc” (np. „Wt 26 maja”):
\re -
Format jest przekazywany do strftime (3), a wynik jest wstawiany do łańcucha zachęty; pusty format skutkuje reprezentacją czasu specyficzną dla lokalizacji. Szelki są wymagane:
\ D{format} -
Postać ucieczki:
\jest -
Nazwa hosta, aż do pierwszego „.”:
\ h -
Nazwa hosta:
\ H -
Liczba zadań aktualnie zarządzanych przez powłokę:
\jot -
Podstawowa nazwa nazwy urządzenia końcowego powłoki:
\ l -
Nowa linia:
\ n -
Powrót karetki:
\r -
Nazwa powłoki, podstawowa nazwa $ 0 (część następująca po ostatnim ukośniku):
\ s -
Godzina w formacie 24-godzinnym HH: MM: SS:
\ t -
Godzina w formacie 12-godzinnym HH: MM: SS:
\ T -
Godzina w 12-godzinnym formacie am / pm:
\@ -
Godzina w formacie 24-godzinnym HH: MM:
\ZA -
Nazwa użytkownika aktualnego użytkownika:
\ u -
Wersja Bash (np. 2.00):
ev -
Wydanie Bash, wersja + patchlevel (np. 2.00.0):
EV -
Bieżący katalog roboczy, z $ HOME w skrócie tyldą (używa zmiennej $ PROMPT_DIRTRIM):
\w -
Podstawowa nazwa $ PWD, z $ HOME w skrócie tyldą:
\W -
Numer historii tego polecenia:
\! -
Numer polecenia tego polecenia:
\# -
Jeśli efektywny uid to 0, #, w przeciwnym razie $:
\$ -
Znak, którego kod ASCII jest wartością ósemkową nnn:
\ nnn -
Ukośnik odwrotny:
\\ -
Rozpocznij sekwencję niedrukowalnych znaków. Można to wykorzystać do osadzenia sekwencji sterowania terminalem w monicie:
\[ -
Zakończ sekwencję niedrukowalnych znaków:
\]
Tak więc, jeśli chcesz dodać datę i godzinę do swojego znaku zachęty Bash i umieścić katalog roboczy na polecenie w drugiej linii, możesz użyć następującej konstrukcji:
PS1 = „[\d \t] \ u @ \ h \ n \ w \ $”
Nawiasy kwadratowe nie są tutaj w ogóle konieczne, ale pomagają wizualnie rozbijać elementy i czytać wiersz. Jak omówiliśmy wcześniej, możesz dodać dowolny tekst lub normalne znaki do zmiennej, którą lubisz, więc nie krępuj się używać tego, co działa dla Ciebie.
Jest jeszcze jedna skuteczna sztuczka, o której powinieneś wiedzieć: możesz dodać wynik dowolnego polecenia do monitu. Za każdym razem, gdy pojawi się monit, Bash uruchomi polecenie i uzupełni bieżące informacje. Aby to zrobić, po prostu dołącz dowolne polecenie, które chcesz uruchomić między dwoma
`
postacie. To nie jest apostrof - to słaby akcent, który pojawia się nad klawiszem Tab na klawiaturze.
Na przykład, powiedzmy, że chcesz wyświetlić wersję jądra Linuksa w monicie. Możesz użyć następującej linii:
PS1 = "\ u @ \ h on ʻuname -s -r` \ w \ $"
Jako inny przykład załóżmy, że chcesz wyświetlić czas pracy systemu i średnie obciążenie, jak wyświetla
uptime
Komenda. Możesz użyć poniższej konstrukcji, która umieszcza czas pracy na własnej linii przed resztą monitu.
PS1="(`uptime`)\n\u@\h:\w$ "
Zapraszam do eksperymentowania z różnymi znakami specjalnymi i poleceniami, aby stworzyć idealny wiersz poleceń.
Jak dodać kolory do polecenia Bash
Po ustaleniu preferowanego monitu możesz dodać do niego kolory. W rzeczywistości jest to bardzo proste, ale sprawia, że zmienna wygląda na okropnie niechlujną i skomplikowaną, jeśli nie rozumiesz, na co patrzysz.
Na przykład domyślną zmienną monitu o kolor z wcześniejszej wersji było:
{debian_chroot:+($debian_chroot)} USD \ [\033[01;32m\] \ u @ \ h \ [\033[00m\]: \ [\033[01;34m\] \ w \ [\033[00m\] \ $
Lub, ponownie usuwając bity debian_chroot:
\ [\033[01;32m\] \ u @ \ h \ [\033[00m\]: \ [\033[01;34m\] \ w \ [\033[00m\] \ $
W rzeczywistości jest to tylko plik
\ u @ \ h: \ w $
zmienna z wcześniejszych, ale z informacją o kolorze. Naprawdę możemy podzielić to na kilka sekcji:
\[\033[01;32m\]\ u @ \ h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$
Pierwsza sekcja to
\ u @ \ h
bit, poprzedzony informacją o kolorze, która zmienia kolor na zielony. Drugi to
:
znak, poprzedzony informacją o kolorze, która usuwa wszelkie zabarwienia. Trzeci to
\w
bit, poprzedzony informacją o kolorze, która zmienia kolor na niebieski. Czwarty to
\$
bit, poprzedzony informacją o kolorze, która usuwa wszelkie zabarwienia.
Kiedy już zrozumiesz, jak tworzyć własne znaczniki kolorów, możesz dodać dowolne kolory do dowolnych sekcji monitu Bash.
Oto, co musisz wiedzieć: musisz umieścić wszystkie informacje o kodzie kolorów między
\[
i
\] postać
s. Wewnątrz tagu musisz zacząć od jednego z nich
\033[
lub
\jest[
aby wskazać Bashowi, że są to informacje o kolorze. Obie
\033[
i
\jest[
Zrobić to samo.
\jest[
jest krótszy, więc może być wygodniejszy w użyciu, ale będziemy używać
\033[
tutaj, ponieważ odpowiada temu, co jest używane domyślnie. Na końcu tagu musisz zakończyć
m \
aby wskazać koniec kolorowej etykiety.
Podsumowując, oto, jak będzie wyglądać każdy znacznik koloru. Jedyną różnicą są informacje, które dodajesz zamiast COLOR, aby określić rzeczywisty kolor:
\[\033[KOLORm \]
Bash pozwala zmienić kolor tekstu pierwszego planu, dodać atrybuty, takie jak „pogrubienie” lub „podkreślenie” do tekstu, oraz ustawić kolor tła.
Oto wartości tekstu pierwszego planu:
- Czarny: 30
- Niebieski: 34
- Cyjan: 36
- Zielony: 32
- Fioletowy: 35
- Czerwony: 31
- Biały: 37
- Żółty: 33
Na przykład, ponieważ fioletowy tekst ma kod koloru 32, należy użyć
\[\033[
32
m \]
dla tekstu w kolorze fioletowym.
Możesz również określić atrybut dla tekstu. Ten atrybut należy dodać przed numerem koloru, oddzielając go średnikiem (;). Tekst z tymi atrybutami będzie wyglądał inaczej w różnych emulatorach terminali.
Oto wartości atrybutów tekstu:
- Normalny tekst: 0
- Tekst pogrubiony lub jasny: 1 (zależy od emulatora terminala).
- Przyciemniony tekst: 2
- Podkreślony tekst: 4
- Migający tekst: 5 (Nie działa to w większości emulatorów terminali).
- Odwrócony tekst: 7 (odwraca kolory pierwszego planu i tła, więc zobaczysz czarny tekst na białym tle, jeśli bieżący tekst jest białym tekstem na czarnym tle).
- Ukryty tekst: 8
W rzeczywistości nie musisz uwzględniać zwykłego atrybutu tekstowego. W każdym razie to ustawienie domyślne.
Na przykład, ponieważ czerwony tekst to kod 31, a pogrubiony to kod 1, należy użyć
\[\033[
1;31
m \]
dla pogrubionego czerwonego tekstu.
Możesz także określić kolor tła, ale nie możesz dodać atrybutu do koloru tła.
Oto wartości kolorów tła:
- Czarne tło: 40
- Niebieskie tło: 44
- Tło cyjan: 46
- Zielone tło: 42
- Fioletowe tło: 45
- Czerwone tło: 41
- Białe tło: 47
- Żółte tło: 43
Na przykład, ponieważ niebieskie tło to kod 44,
\[\033[
44
m \]
określa niebieskie tło.
Można określić znaczniki koloru pierwszego planu i tła. Na przykład 42 oznacza zielone tło, a 31 to czerwony tekst. Aby więc domyślny monit stał się czerwonym tekstem na zielonym tle, należy użyć:
Ψ1 = "\ [\ 033 [42m \] \ [\ 033 [31m \] \ u @ \ h: \ w \ $ "
W tym miejscu określamy tylko jeden kolor tła, a następnie jeden kolor tekstu pierwszego planu, który zaczyna się na początku monitu i jest stosowany do całego tekstu w monicie. Możesz jednak określić dowolną liczbę znaczników kolorów w zmiennej, aby pokolorować różne sekcje monitu, jak chcesz.
Kolory tekstu tła i pierwszego planu pozostają poza monitem, chyba że określisz kod koloru 00, aby usunąć informacje o kolorze. Możesz również użyć tego znacznika w zmiennej, aby zresetować formatowanie z powrotem do domyślnego w dowolnym miejscu w zachęcie. Na przykład następująca linia zakończy kolorowanie przed
\$
postać.
Ψ1 = "\ [\ 033 [42m \] \ [\ 033 [31m \] \ u @ \ h: \ w \\ [\ 033 [00m \] \ $ "
Jak ustawić nowy domyślny monit
Gdy skończysz eksperymentować z kolorami, powinieneś otrzymać komunikat Bash, który Ci się podoba w bieżącej sesji. Ale prawdopodobnie chcesz, aby ten nowy monit był stały, więc będzie automatycznie używany we wszystkich sesjach Bash.
Aby to zrobić, wystarczy zmienić zawartość zmiennej PS1 w pliku .bashrc, który omówiliśmy wcześniej.
Otwórz plik .bashrc w preferowanym edytorze tekstu, na przykład:
nano ~ / .bashrc
Przewiń w dół i znajdź sekcję PS1 =. Po prostu zastąp zmienną domyślną zmienną niestandardową. Prawdopodobnie będziesz chciał opuścić
${debian_chroot:+($debian_chroot)}
jednak same bity - i tak nie pojawią się, chyba że jesteś w środowisku chroot.
Wprowadź kolorową zmienną PS1 pod
jeśli [ "$color_prompt" = yes ]; następnie
linia. Wprowadź zmienną bez kolorów pod
jeszcze
linia.
Zapisz plik i zamknij edytor tekstu. Na przykład, aby zapisać plik w nano, naciśnij Ctrl + O, naciśnij Enter, a następnie naciśnij Ctrl + X, aby wyjść.
Następnym razem, gdy uruchomisz nową powłokę Bash - na przykład logując się na terminalu lub otwierając nowe okno terminala - zobaczysz dostosowany monit.