Co to jest bash?
Autor: Redakcja Domeny.ForSale Opublikowano
W skrócie: Bash to powłoka systemowa, czyli program, który odczytuje polecenia użytkownika i zleca ich wykonanie. Pozwala pracować z plikami, uruchamiać programy i automatyzować powtarzalne zadania za pomocą skryptów. Jest często używany w Linuksie, dostępny również w macOS, a w Windows można korzystać z niego m.in. przez WSL lub Git Bash.
Do czego służy Bash?
Nazwa Bash pochodzi od Bourne Again SHell i nawiązuje do wcześniejszej powłoki Bourne’a. Bash jest jednocześnie interaktywnym narzędziem do wydawania poleceń oraz językiem skryptowym. Skrypt to plik tekstowy zawierający instrukcje wykonywane przez interpreter — w tym przypadku Bash.
W trybie interaktywnym wpisujesz polecenie i od razu otrzymujesz wynik. W skrypcie zapisujesz sekwencję działań, którą można później uruchomić ponownie bez ręcznego powtarzania każdego kroku.
Bash przydaje się między innymi do:
- wyszukiwania, kopiowania i porządkowania plików;
- uruchamiania narzędzi programistycznych oraz testów;
- przetwarzania tekstowych wyników innych programów;
- automatyzowania prac administracyjnych na serwerze.
Przykładowo zamiast ręcznie przenosić kilkadziesiąt raportów do odpowiedniego katalogu, możesz opisać tę operację jednym poleceniem. Gdy zadanie obejmuje dodatkowo sprawdzenie warunków i zapis komunikatów, wygodniejszy staje się skrypt.
Bash, terminal i polecenia to różne rzeczy
Terminal to interfejs, w którym wpisujesz tekst i odczytujesz odpowiedzi. Na komputerze osobistym najczęściej jest to aplikacja emulująca terminal. Powłoka działa wewnątrz takiej sesji: interpretuje wpisane instrukcje. Bash jest jedną z powłok; inne to np. Zsh, Fish i PowerShell.
Samo otwarcie terminala nie oznacza więc, że korzystasz z Basha. W nowszych instalacjach macOS domyślną powłoką jest zwykle Zsh, a terminal Windows może otworzyć np. PowerShell albo środowisko linuksowe.
Nie każde polecenie używane w Bashu jest jego częścią. cd, służące do zmiany katalogu, to polecenie wbudowane. Natomiast ls, grep czy mkdir są zwykle osobnymi programami uruchamianymi przez powłokę. Dostępność takich narzędzi i obsługiwanych przez nie opcji zależy od środowiska.
Bash potrafi łączyć programy za pomocą potoku, oznaczanego znakiem |. Potok przekazuje standardowe wyjście jednego polecenia na standardowe wejście następnego:
printf '%s\n' 'raport.txt' 'zdjecie.jpg' | grep '\.txt$'
Tutaj printf wypisuje dwie nazwy, a grep wybiera wiersz kończący się na .txt. To tylko filtrowanie tekstu — przykład nie tworzy ani nie wyszukuje plików na dysku.
Jak sprawdzić dostępność i uruchomić Bash
W Linuksie Bash często jest już zainstalowany. macOS również udostępnia Bash, choć dostarczona wersja może różnić się od wersji dostępnych w innych środowiskach. Aby sprawdzić dostępność programu i jego wersję, wpisz w terminalu:
bash --version
Ten test nie potwierdza, że bieżąca sesja korzysta z Basha — jedynie uruchamia dostępny program z opcją wyświetlenia wersji. Polecenie bash rozpocznie sesję tej powłoki, a exit ją zakończy. Już w Bashu możesz sprawdzić wersję bieżącej powłoki przez printf '%s\n' "$BASH_VERSION".
W Windows dwa popularne rozwiązania mają różne zastosowania. WSL, czyli Podsystem Windows dla systemu Linux, umożliwia korzystanie ze środowiska linuksowego. Git Bash dostarcza Bash i zestaw narzędzi przydatnych m.in. przy pracy z Gitem, ale nie jest pełnym środowiskiem Linux. Aktualne wymagania instalacji sprawdź w dokumentacji Microsoftu lub Git for Windows.
Pierwszy skrypt w bezpiecznym katalogu testowym
Poniższy przykład tworzy dwa puste raporty i przenosi je do podkatalogu. Zacznij od utworzenia nowego katalogu roboczego i wejścia do niego:
mkdir bash-proba
cd bash-proba
Jeśli katalog już istnieje, wybierz inną nazwę. Kontynuuj dopiero po udanym wejściu do nowego katalogu. W edytorze tekstu utwórz w nim plik porzadkuj.sh o następującej zawartości:
#!/usr/bin/env bash
katalog="raporty"
mkdir -p "$katalog" || exit 1
touch raport-01.txt raport-02.txt || exit 1
for plik in raport-*.txt; do
mv -- "$plik" "$katalog/" || exit 1
done
printf 'Przeniesiono raporty do katalogu: %s\n' "$katalog"
Pierwszy wiersz, nazywany shebang, wskazuje interpreter przy bezpośrednim uruchamianiu pliku. Zmienna katalog przechowuje nazwę katalogu docelowego, a pętla for powtarza operację dla każdej pasującej nazwy pliku. Zapis || exit 1 przerywa skrypt, jeśli poprzednie polecenie zgłosi błąd.
Uruchom skrypt i sprawdź efekt:
bash porzadkuj.sh
ls raporty
Przy takim sposobie uruchamiania plik nie musi mieć uprawnienia do wykonywania: interpreter wskazujesz poleceniem bash. Cudzysłowy wokół zmiennych chronią m.in. nazwy zawierające spacje przed podziałem na osobne argumenty.
Kiedy używać Basha i na co uważać
Bash jest dobrym wyborem, gdy zadanie polega głównie na łączeniu istniejących narzędzi i operacjach na plikach. Przy rozbudowanej logice, złożonych strukturach danych czy większej aplikacji Python lub inny język ogólnego przeznaczenia będzie często czytelniejszy i łatwiejszy do testowania.
Polecenia działają z uprawnieniami użytkownika, który je uruchamia. Usunięcie pliku przez rm zazwyczaj nie przenosi go do kosza, a przekierowanie > może nadpisać zawartość istniejącego pliku. Nie uruchamiaj skopiowanych instrukcji z sudo, czyli narzędziem pozwalającym wykonywać polecenia z uprawnieniami innego użytkownika, dopóki nie rozumiesz ich działania.
Na początek zmodyfikuj przykładowy skrypt tak, aby zamiast mv tylko wypisywał nazwy plików przez printf. Sprawdzenie listy przed wykonaniem zmian to prosty nawyk, który przyda się również przy pracy z prawdziwymi danymi.
Zobacz też: Co to jest shell?
