
Większość dystrybucji Linuksa konfiguruje monit Bash tak, aby wyglądał mniej więcej [email protected]:directory$
. Ale możesz skonfigurować monit Bash tak, aby zawierał wszystko, co chcesz, a nawet wybierał 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 i ustawienia Bash w pliku .bashrc mogą być nieco inne.
Gdzie przechowywana jest zmienna monitu
Twoja konfiguracja monitu Bash jest przechowywana w pliku .bashrc Twojego konta użytkownika, który znajduje się pod adresem ~/.bashrc
. Tak więc, jeśli twoja nazwa użytkownika to bob, plik jest w /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 również użyć vi, emacs lub dowolnego innego edytora tekstu, z którym czujesz się komfortowo. Otwórz Terminal i uruchom:
nano ~/.bashrc
Przewiń w dół do PS1=
Sekcja. Pierwsza zmienna wygląda na dość skomplikowaną, ponieważ zawiera informacje o kolorze — wyjaśnimy to później. Druga zmienna, bez informacji o kolorze, brzmi następująco:
${debian_chroot:+($debian_chroot)}[email protected]:w$
Jest to wciąż trochę skomplikowane ze względu na ${debian_chroot:+($debian_chroot)}
bity. Po prostu informują Bash, aby powiadomił Cię, jeśli używasz środowiska chroot Debiana i zwykle nie są one wyświetlane. Ignorując je, oto domyślna struktura zmiennej zachęty Bash:
u
wskazuje Twoją nazwę użytkownika, @
wskazuje znak @, h
wskazuje nazwę hosta (nazwę komputera), :
wskazuje znak :, w
wskazuje katalog roboczy, i $
wskazuje $, jeśli jesteś normalnym kontem użytkownika, lub #, jeśli jesteś rootem. Więc łącząc to wszystko razem, otrzymujesz [email protected]:working_directory$
.
Aby zmienić monit Bash, wystarczy dodać, usunąć lub zmienić kolejność znaków specjalnych w zmiennej PS1. Istnieje jednak znacznie więcej zmiennych, których możesz użyć niż te domyślne.
Na razie zostaw edytor tekstu — w nano naciśnij Ctrl+X, aby wyjść. Pokażemy Ci, jak eksperymentować ze zmiennymi, zanim faktycznie zapiszesz nową do pliku .bashrc.
Jak utworzyć niestandardowy monit Bash
Twoja konfiguracja zachęty Bash jest przechowywana w zmiennej PS1. Aby zapisać zawartość zmiennej PS1 do nowej zmiennej, uruchom następujące polecenie:
DEFAULT=$PS1
Możesz teraz ustawić zmienną PS1 na różne wartości, aby poeksperymentować. Na przykład pierwszy wiersz tutaj ustawi Twój znak zachęty na podstawowy monit „user$”, podczas gdy drugi ustawi monit na podstawowy monit „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=$DEFAULT
Bash zostanie przywrócony do domyślnego monitu dzięki temu, że wcześniej zapisałeś te domyślne ustawienia. Pamiętaj, że wszelkie wprowadzone tutaj zmiany 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 łatwy powrót do domyślnego monitu Bash bez konieczności wylogowywania się lub zamykania okna.
Do zmiennej można dodać dowolne znaki lub tekst. Tak więc, aby poprzedzić domyślny monit słowem „Hello World”, możesz użyć:
PS1=”Hello [email protected]:w$ „
Teraz, gdy znasz już podstawy, musisz tylko wiedzieć, jakie są wszystkie znaki specjalne. Prawdopodobnie nie będzie Cię obchodzić wiele z nich, ale oto pełna lista, jaka pojawia się w instrukcja Bash:
- Postać dzwonka:
a
- Data w formacie „Dzień tygodnia Data miesiąca” (np. „Wtorek 26 maja”):
d
- Format jest przekazywany do strftime(3), a wynik jest wstawiany do ciągu znaków zachęty; pusty format skutkuje reprezentacją czasu specyficzną dla regionu. Aparaty są wymagane:
D{format}
- Znak ucieczki:
e
- Nazwa hosta, do pierwszego znaku „.”:
h
- Nazwa hosta:
H
- Liczba zadań aktualnie zarządzanych przez powłokę:
j
- Podstawowa nazwa nazwy urządzenia końcowego powłoki:
l
- Nowa linia:
n
- Zwrot karetki:
r
- Nazwa powłoki, nazwa podstawowa $0 (część po ostatnim ukośniku):
s
- Godzina w formacie 24-godzinnym GG:MM:SS:
t
- Godzina w formacie 12-godzinnym GG:MM:SS:
T
- Godzina w formacie 12-godzinnym:
@
- Godzina w formacie 24-godzinnym GG:MM:
A
- Nazwa użytkownika bieżącego użytkownika:
u
- Wersja Bash (np. 2.00):
v
- Wydanie Bash, wersja + patchlevel (np. 2.00.0):
V
- Bieżący katalog roboczy, z $HOME w skrócie tyldą (używa zmiennej $PROMPT_DIRTRIM):
w
- Podstawowa nazwa $PWD, z $HOME skróconą z 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
- Odwrotny ukośnik:
- Rozpocznij sekwencję znaków niedrukowalnych. Można to wykorzystać do osadzenia sekwencji kontrolnej terminala w podpowiedzi:
[
- End a sequence of non-printing characters:
]
Tak więc, jeśli chcesz dodać datę i godzinę do znaku zachęty Bash i umieścić katalog roboczy w drugiej linii, możesz użyć następującej konstrukcji:
PS1=”[d t] [email protected]$ „
Nawiasy kwadratowe w tym miejscu nie są w ogóle potrzebne, ale pomagają wizualnie podzielić elementy i ułatwiają czytanie linii. Jak omówiliśmy wcześniej, możesz dodać dowolny tekst lub normalne znaki do zmiennej, którą lubisz, więc możesz użyć tego, co działa dla Ciebie.
Jest jeszcze jedna potężna sztuczka, o której powinieneś wiedzieć: Możesz dodać wyjście dowolnego polecenia do znaku zachęty. Za każdym razem, gdy pojawi się monit, Bash uruchomi polecenie i wypeł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 akcent, który pojawia się nad klawiszem Tab na klawiaturze.
Na przykład, powiedzmy, że chcesz wyświetlić wersję jądra Linuksa w znaku zachęty. Możesz użyć linii podobnej do następującej:
PS1=”[email protected] on `uname -s -r` w$ „
Jako inny przykład, powiedzmy, że chcesz wyświetlić czas pracy systemu i średnią obciążenia, tak jak jest wyświetlany przez uptime
Komenda. Możesz użyć następującej konstrukcji, która umieszcza czas pracy na osobnej linii przed resztą monitu.
PS1=”(`uptime`)[email protected]:w$ „
Zachęcamy do eksperymentowania z różnymi znakami specjalnymi i poleceniami, aby stworzyć idealny wiersz poleceń.
Jak dodać kolory do monitu 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 strasznie niechlujną i skomplikowaną, jeśli nie rozumiesz, na co patrzysz.
Na przykład domyślna zmienna monitująca o kolor z wcześniejszej wersji to:
${debian_chroot:+($debian_chroot)}[ 33[01;32m][email protected][ 33[00m]:[ 33[01;34m]w[ 33[00m]$
Lub ponownie usuwając bity debian_chroot:
[ 33[01;32m][email protected][ 33[00m]:[ 33[01;34m]w[ 33[00m]$To jest właściwie tylko [email protected]:w$
zmienna z wcześniejszych, ale z informacją o kolorze. Naprawdę możemy podzielić to na kilka sekcji:
Pierwsza sekcja to [email protected]
bit, poprzedzony informacją o kolorze, która zmienia kolor na zielony. Drugi to :
znak, poprzedzony informacją o kolorze, która usuwa wszelkie kolory. Trzeci to w
bit, poprzedzona informacją o kolorze, która zmienia kolor na niebieski. Czwarty to $
bit, poprzedzony informacją o kolorze, która usuwa wszelkie kolory.
Gdy zrozumiesz, jak tworzyć własne znaczniki kolorów, możesz dodać dowolne kolory do dowolnych sekcji monitu Bash.
Oto, co musisz wiedzieć: Musisz podać całą informację o kodzie koloru między[
oraz ] character
s. Wewnątrz tagu musisz zacząć od albo 33[
or e[
to indicate to Bash that this is color information. Both