Głębsza zabawa z bashem

Jak bash może ładnie wyglądać

Na początek może parę słów o ustawianiu wyglądu. Może pomyślisz, że wygląd nie ma nic wspólnego z wygodą pracy, jeśli tylko stuka się w klawiaturę. Otóż nieprawda. Ot, taka głupia sprawa, jak prompt (znak zachęty). Zdarza mi się pracować na kilku komputerach jednocześnie (zdalna praca przez ssh) - takie coś wcale nie jest rzadkie w środowisku un*xa! Więc pracuję na kilku komputerach, ale wypadałoby wiedzieć, który terminal jest od czego. Dlatego podoba mi się prompt, jaki widziałem w RedHacie: [user@host working-dir]$. Od razu widzę, jako kto pracuję, na którym kompie jestem i gdzie w systemie plików się znajduję. Prompt ustawia się banalnie, bo odpowiada zań zmienna $PS1 (prompt string 1). Istnieje też zmienna $PS2, ale rzadko widuje się jej efekty, które zresztą są dostatecznie czytelne. Zatem, co może znaleźć się w $PS1? Jakikolwiek tekst, z następującymi sekwencjami escape'owymi:

Mój prompt wygląda tak: '[\u@\h \W]\$ ' (oczywiście bez cudzysłowiów, ale ze spacją na końcu).
Żeby było ciekawiej, bash może przed każdym pojawieniem się prompta odpalić jakieś polecenie. To polecenie powinno być umieszczone w zmiennej $PROMPT_COMMAND. Na przykład data w formacie "DD/MM/YY": PROMPT_COMMAND="'echo" -n $( date +%d/%m/%y )'. Komenda wykonuje: date wyświetlające datę w zadanym formacie, przechwycenie tego i wypisanie echem bez znaku nowej linii (i po to w zasadzie była ta zabawa: date schodzi do nowej linii, czego ja nie chciałem). Ja sam nie używam tej zmiennej, ale może ty uznasz, że jednak jest przydatna.
Po więcej informacji odsyłam do man bash, sekcja PROMPTING (choć raczej niewiele nowych rzeczy znajdziesz)

Skróty klawiaturowe

W sumie domyślnym zestawem są skróty podobne do emacsowych. Możliwe jest ustawienie skrótów w stylu vi, ale po pierwsze emacsowe do używania basha są moim zdaniem wygodniejsze (bo już się przyzwyczaiłem :] ), a po drugie nie udało mi się tego ustawić na stałe (pewnie burak w bashu).

Napis ^A oznacza wciśnięcie Ctrl+A, natomiast M-A - [lewy Alt]+A, ewentualnie "wciśnij [Esc], po czym wciśnij A".
OSTRZERZENIE: często zdarza się, że zamiast ^A czy ^D zostaje wciśnięta sekwencja ^S. Powoduje to zatrzymanie wyświetlania na terminalu. Ponowne włączenie odświeżania następuje po wciśnięciu ^Q. Pod gołą konsolą (nie w X-Window) prawdopodobnie będzie działać także wyłączenie [ScrollLock].

Aliasy

Tu się nie będę za dużo rozpisywał. Alias to taki zamiennik: jak wpiszesz nazwę aliasu, to zostanie rozwinięta do pełnej komendy. Składnia: alias kupa='echo "Teraz wypiszemy _kupa_"'. I od tej pory ilekroć wpiszesz w konsoli kupa, pojawi się tekst Teraz wypiszemy _kupa_. Co fajniejsze, możesz sobie zrobić alias alias ls="'ls" --color -hsCF', i od tej pory gdy wpiszesz ls, pojawi ci się kolorowy listing z rozmiarami plików i z wyświetleniem, jakiego typu to plik (co robią opcje, to sobie poczytasz manual do ls, ważne jest, że teraz polecenie ls uruchomi się od razu z odpowiednimi parametrami). Nie musisz wybierać nazwy starego polecenia na nazwę aliasu: alias ll="'ls" -l' i masz ładne wypisanie listy plików w długim formacie. A zdejmowanie aliasów odbywa się intuicyjną komendą unalias ll (gdzie ll to nazwa aliasu). Lista aliasów pojawia się po wpisaniu samego alias

Zapamiętywanie ustawień

No, tyle fajnych rzeczy się dowiedziałeś, dobrze by było, żeby po każdym zalogowaniu takie coś się działo. Bash korzysta z kilku plików ustawień. Po pierwsze primo, z globalnego pliku /etc/profile albo /etc/bashrc (zależy, który masz, choć bash [o ile dobrze pamiętam] czyta domyślnie /etc/profile). Po drugie primo, z lokalnego pliku ~/.bashrc albo ~/.profile (należy wypróbować oba). Po trzecie, jeśli masz jakiś plik ustawień, którego bash nie czyta, a nie chce ci się przepisywać całej zawartości, to te trzy linijki załatwią sprawę:

if [ -r /sciezka/do/pliku/ustawien ]; then
  . /sciezka/do/pliku/ustawien
fi

Tutaj kropka oznacza "znajdź plik o takiej nazwie i wstaw z niego komendy tutaj". Od zwykłego wykonania pliku różni się to tylko tym, że zmiany środowiska (w tym aliasów) w pliku będą widoczne na zewnątrz, a sam plik nie musi mieć praw wykonywalności.


Jadłospis