From Łukasz Graczykowski
Powłoka Bash
Bash jest jedną z powłok systemowych, czyli programów, które pośredniczą między systemem operacyjnym a użytkownikiem. Użytkownik za pomocą powłoki uruchamia programy, jak i programy zwracają do powłoki wynik swojego działania, który następnie jest przekazywany użytkownikowi. Programy mogą komunikować sie z użytkownikiem również niezależnie (np. programy okienkowe).
Każda powłoka zawiera polecenia, które wykonują podstawowe operacje w systemie operacyjnym (np. tworzenie folderów). Paletę domyślnych poleceń wzbogacają zewnętrzne programy, które wykonują operacje nie będące zawartymi poleceniami.
Praktycznie każda dystrybucja Linuxa (z Androidem włącznie) zawiera powłokę Bash.
Powłoka Bash: Podstawy
Jednym z podstawowych poleceń jest echo
, służące do wyświetlania tekstu podanego mu jako argument:
echo foo
foo
W poleceniu echo możemy również stosować tzw. metaznaki. Przykładem takiego znaku jest *
:
cd /
echo *
bin boot dev etc home initrd.img initrd.img.old lib lib32 lib64 lost+found media mnt opt optl proc root run sbin selinux srv sys tmp usr var vmlinuz vmlinuz.old
echo b*
bin boot
W powyższym przykładzie widzimy, że Bash rozwija znak *
zastępując go dowolnym ciągiem znaków.
Innym przykładem metaznaku jest ~
, który zastępuje katalog domowy.
echo ~
/home/jb
Zadanie 1
Za pomocą polecenia echo
wyświetlić wszystkie pliki kończące się na .conf
z katalogu /etc
Powłoka Bash: Przekierowania
Program cat odczytuje zawartość plików i przekierowuje ją na standardowe wyjście:
cat nazwa_pliku
By przekierować standardowe wyjście programu do pliku należy użyć operatora >
lub >>
.
cat plik1 plik2 >> polaczonepliki
W wariancie z >
polecenie to spowoduje nadpisanie pliku zawartością standardowego wyjścia, w wariancie >>
spowoduje dopisanie treści na końcu pliku.
Załóżmy, że mamy dwa polecenia: polecenieB i polecenieB i chcemy, aby polecenieB na swoje standardowe wejście przyjęło wynik działania polecenieA. W takim przypadku należy wpisać:
polecenieA | polecenieB
Program tail okazuje koncówkę pliku
cat /usr/share/romeo | tail -n 100
Program head pokazuje początek pliku
Każdy program ma podłączone dwa standardowe strumienie wyjściowe:
- Standardowe wyjście
- Standardowy strumień błędów
Rozróżnienie wynika z tego, aby wynik działania programu mógł być zwracany przez jeden strumień (np. polecenie tar zwróci spakowany folder), a informacje o ewentualnych błędach przez inny strumień.
By przekierować standardowy strumień błędów należy użyć 2> lub 2>>.