Nowi użytkownicy Linuksa dostają bólu głowy na samą myśl o konsoli i długich komendach. Jednak każdy, wcześniej czy później, zaczyna wklepywać komendy
(chociażby kopiując je z poradników), a następnie przekonuje się do tego typu rozmowy
z systemem. Celem mojego artykułu jest przybliżenie możliwości konfiguracyjnych i ułatwienia pracy z powłoką Bash.
Pliki konfiguracyjne
Podczas uruchamiania Basha wczytywane są konfiguracje z plików: /etc/profile oraz /etc/bash.bashrc, a następnie z katalogu domowego użytkownika: .bash_profile i .bashrc – te pliki możemy dowolnie zmieniać. Pierwszy z nich zawiera właściwie tylko instrukcję wczytującą .bashrc:
if [ -f "$HOME/.bashrc" ]; then . "$HOME/.bashrc" fi
Pokrótce tłumacząc, powyższy kod wczytuje zawartość pliku .bashrc z katalogu domowego, pod warunkiem, że on istnieje. Zatem całą konfigurację można umieścić w tym drugim pliku.
Aliasy
Aliasy to pewnego rodzaju skróty. Ich idea jest prosta – gdy często wpisujemy długą komendę z wieloma opcjami, czemu nie mielibyśmy tego skrócić do jednego słowa. Do tworzenia aliasów korzystamy z komendy alias, oto przykład jej użycia:
alias l='ls --color -lh'
alias instalka='sudo apt-get install'
Od teraz możemy zamiast pełnych komend użyć ich aliasów:
l ~/Dokumenty
instalka mplayer
Prawda, że szybciej?
Aliasy możemy wykorzystywać na stałe
– wtedy tworzymy je w pliku .bashrc lub tymczasowo, kiedy na przykład w jednej sesji często korzystamy z jakieś długiej komendy tworząc go bezpośrednio w powłoce. Możemy także sprawdzić czy jakieś słowo jest aliasem i jakiej komendy.
alias l
Czasem zdarza się, że utworzony alias nie jest nam potrzebny, wręcz jest przeszkadzający. Usunąć go możemy komendą unalias, np.
unalias l instalka
Autouzupełnianie
Każdy kto czasem korzysta z Basha używa choć czasem magicznego przycisku <TAB>. Jednak nic nie jest doskonałe. Powłoka inteligentnie dokończy komendy cd, ls ale już sudo apt-get inst jest dla niego nie lada wyzwaniem. Rozwiązaniem tej niedogodności jest pakiet bash-completion, który domyślnie w Ubuntu powinien być zainstalowany. Aby sprawdzić czy rzeczywiście tak jest wpisujemy:
ls /etc/bash_completion
Jeśli powyższa komenda nie zakończy się błędem – wszystko mamy zainstalowane, w przeciwnym razie wystarczy ten pakiet doinstalować
sudo apt-get install bash-completion
Teraz wystarczy tylko do pliku .bashrc dopisać:
. /etc/bash_completion
I możemy cieszyć się doskonalszym uzupełnianiem komend przez Basha.
Kolorowanie komendy ls
Domyślnie (dzięki aliasowi) wynik komendy ls jest już kolorowany. Jednak czasem używając w Gnome’ie przezroczystego terminala domyślna konfiguracja tej funkcji zamiast ułatwiać korzystanie z terminala, utrudnia je. Z pomocą przychodzi narzędzie dircolor. Wywołując je bez argumentów wyświetli na terminalu zmienną LS_COLORS a następnie ją wyeksportuje.
Za pomocą komendy
dircolors -p > .ls_colors
zapiszemy do powyższego pliku konfigurację kolorystyki ls w bardziej czytelny sposób.
Plik .ls_colors zawiera listę obsługiwanych terminali, następnie konfigurację kolorów różnych typów (jak zwykły plik, katalog) i rozszerzeń plików (jak *.deb, *.rpm).
Kolory czcionki i tła określane są następująco:
- czarny – kolor czcionki 30 – kolor tła 40
- czerwony – kolor czcionki 31 – kolor tła 41
- zielony – kolor czcionki 32 – kolor tła 42
- żółty – kolor czcionki 33 – kolor tła 43
- niebieski – kolor czcionki 34 – kolor tła 44
- purpurowy – kolor czcionki 35 – kolor tła 45
- turkusowy – kolor czcionki 36 – kolor tła 46
- biały – kolor czcionki 37 – kolor tła 47
Dodatkowo możemy ustawić w poszczególnych rodzajach plików takie atrybuty jak:
- 00 – czcionka normalna
- 01 – czcionka pogrubiona
- 04 – czcionka podkreślona
- 05 – czcionka mrugająca
- 07 – przełącza kolory tła z kolorem czcionki
- 08 – czcionka ukryta
Po ustawieniu odpowiednio kolorów wystarczy je załadować komendą
eval `dircolors .ls_colors`
Jeśli konfiguracja będzie przyjemniejsza dla oka wystarczy jak wpiszemy powyższą komendę do .bashrc i na każdym nowo-otwartym terminalu cieszyć nas będzie nowa kolorystyka listy katalogów.
Zmienne środowiska
W programowaniu zmienna przechowuje różnego rodzaju dane (np. tekst, liczbę, …), natomiast zmienne środowiskowe charakteryzują wygląd i działanie powłoki.
W Bashu zmienną deklaruje się (czyli tworzy) lub nadpisuje (czyli zmienia) w sposób:
NAZWA_ZMIENNEJ="WARTOŚĆ_ZMIENNEJ"
Natomiast odczytuje się ją:
echo $NAZWA_ZMIENNEJ
Najpopularniejszymi zmiennymi środowiska są:
- PS1 – podstawowy znak zachęty [prompt], opis niżej
- PS2 – pomocniczy znak zachęty, znak zachęty wykorzystywany przy
łamaniu polecenia
na wiele linii - HISTSIZE – liczba przechowywanych w pamięci poleceń (domyślnie 500)
- EDITOR – domyślny edytor tekstu
- PATH – lista katalogów do przeszukiwania poleceń oddzielonych znakiem :
- CDPATH – lista katalogów przeszukiwań dla polecenia cd oddzielonych znakiem :
- TMOUT – czas nieaktywności, po którym następuje zamknięcie powłoki
Zmienną PS1 (a także PS2) można ustawiać na bardzo wiele sposobów.
Pomocne w tym będą opcje:
- u – nazwa użytkownika
- h – nazwa hosta (komputera)
- H – nazwa pełnego hosta
- w – bezwzględna ścieżka do aktualnego katalogu
- W – nazwa aktualnego katalogu
- d – data w formacie dzień_tygodnia miesiąc dzień_miesiąca
- t – godzina w formacie 24-godzinnym
- T – godzina w formacie 12-godzinnym
- @ – godzina w formacie 12-godzinnym wraz z am/pm
- n – znak nowej linii
- ! – numer aktualnego polecenia
Powyżej wypisałem tylko część opcji stosowanych w znaku zachęty. Więcej można znaleźć, oczywiście, w Internecie.
Kolejnym sposobem skonfigurowania prompta jest dodanie kolorów. Zmienić możemy zarówno kolor czcionki, tła, a także pogrubić czcionkę. Aby zmienić kolory należy posłużyć się kodem:
\e[Xm
Gdzie X oznacza oddzielone średnikami kody konfiguracji. Kolory czcionki jak i tła określamy identycznie jak w przypadku kolorowania wyniku komendy ls. Dodatkowo możemy ustawić pogrubienie (kod 1), oraz jego brak (kod 0).
Powrót do domyślnych ustawień (kolor czcionki 37, kolor tła 40, oraz wyłączone pogrubienie) otrzymujemy poprzez:
\e[0m
Na dołączonym obrazku można zobaczyć przykład rozbudowanego znaku zachęty o kodzie:
"\e[32;1m\u@\h \e[34;1m[ \e[33;1m\@ \e[34;1m] [ \e[33;1m\w \e[34;1m]\n \e[31;1m>>\e[0m "
Powyższe sposoby konfiguracji są tylko wierzchołkiem góry lodowej. Im częściej i dłużej będziecie używać powłoki Bash, tym bardziej plik .bashrc będzie się rozrastał.
Nie pozostaje mi nic innego jak tylko życzyć wszystkim przyjemnego używania Basha.
Myślę, że artykuł jest w sam raz dla początkujących użytkowników. Bardzo fajnie opisujesz tutaj podstawy Bash’a i jego konfiguracji. Mógłbyś się pokusić o kontynuowanie tego jako cykl artykułów o Bash’u, od podstaw po zaawansowane użycie i skryptowanie. 😉 To jest coś, co zawsze się przydaje.
W zupełności zgadzam się z przedmówcą, szczególnie mocno czekam na „skryptowanie” 🙂
Pozdrawiam
to po sesji coś jeszcze skrobnę o Bashu
[quote comment=”24549″]to po sesji coś jeszcze skrobnę o Bashu[/quote]
czyżby „kampania wrześniowa”? powodzenia życzę, sam też za 2 dni zaczynam… 2 poprawki w tym roku… ;P
Pytanie od laika = jak tego basha uruchomić? 🙂
[quote comment=”24553″]Pytanie od laika = jak tego basha uruchomić? :-)[/quote]
Aplikacje -> Akcesoria -> Terminal
w ostatniej części artu jest błąd – eskejpowane sekwencje typu e[32;1m powinny być otoczone [ i ] inaczej takie ustawienie kolorów będzie powodowało błędy przy zawijaniu wierszy, terminal bedzie doliczal dlugosc eskejpowanych sekwencji do dlugosci widocznego promptu i wpisywanej komendy.
u mnie prompt wyglada tak: PS1=”[33[1;32m]u[33[0;37m]@[33[1;33m]h[33[0;37m]:[33[1;37m]w\[33[0m]$”
super artykul. dobre podstawy do dalszej zabawy z bash’em. tak trzymac!!!
Hehe:)a właśnie miałem pisać maila żebyś skrobnął coś o aliasach:) uśmiałem się z tego:)
@anon w sumie może nie błąd tylko nie zawsze taki prompt się sprawdza 😉 thx za sprostowanie
w ubuntu 8.04 cos sie pozminialo i aliasy wpisuje sie przez sudo gedit .bash_aliases
a w bashrc trzeba odkrzyżykować przekierowanie do tego pliku.
Tak, czasem aliasy trzyma się w .bash_aliases. Ale czemu go edytujesz przez sudo?
a czy ktoś wie czy, albo jak wmontować konsolę na stałe do pulpitu (np z prawej strony zajmowałaby 30% szerokości pulpitu i była jako „część tapety” (czyli nie jak normalne okno o.0) ?
MC zainstaluj sobie program „tilda” i pobaw się opcjami.
sudo apt-get install tilda
przykład masz tu w poscie 28 http://www.forum.ubuntu.pl/showpost.php?p=482844&postcount=28
emerge zsh zsh-completions; do tego jakiś dobry config i już nikt nie chce wracać do basha.
A kto mi powie dlaczego jak dodam sobie aliasy, zamknę konsolę, następnie ją otworze to aliasy już nie działają? W czym to może być rzecz? Distro Ubuntu 8.04 ze strony http://www.ubuntu.pl
[quote comment=”24812″]A kto mi powie dlaczego jak dodam sobie aliasy, zamknę konsolę, następnie ją otworze to aliasy już nie działają? W czym to może być rzecz? Distro Ubuntu 8.04 ze strony http://www.ubuntu.pl[/quote%5D
W artykule jest napisane:
[quote post=”765″]Aliasy możemy wykorzystywać „na stałe” – wtedy tworzymy je w pliku .bashrc lub tymczasowo, kiedy na przykład w jednej sesji często korzystamy z jakieś długiej komendy tworząc go bezpośrednio w powłoce.[/quote]
Może nie jest to zbyt jasne, więc wytłumaczę.
Gdy tworzy się alias poprzez polecenie alias – wtedy dostępny jest on tylko w tej sesji terminala, w której został utworzony. Natomiast jeśli zapisze się aliasy w pliku .bashrc to będą one dostępne w każdej sesji terminala.
Aliasy w pliku .bashrc wpisuje się tak samo jak polecenia w terminalu, najlepiej po jednym w linii.
Dzięki za odpowiedź po prostu nie doczytałem i przepraszam za kłopot.
Fajny opis, dzieki
co to jest export??
a. może zostać użyte w celu wykonania tego samego zadania co polecenie 'setenv’ w powłoce tcsh
b. przekazuje sterowanie podpowłoce
c. udostępnia wartość zmiennej dla otoczenia
d. nie istnieje
e. udostępnia zdalny system plików
f. udostępnia lokalny system plików
Hej.
Po pierwsze: wielkie THX!!! Nareszcie coś widać od razu na pierwszy rzut oka w bashu.
Po drugie: Czekam na kolejne artykuły 😉