Shell script

Plik tekstowy zawierający polecenia powłoki, wykonywany jak program. Służy do automatyzacji powtarzalnych zadań administracyjnych.

Shell script to zwykły plik tekstowy, w którym zapisujesz ciąg poleceń powłoki (najczęściej Bash, ale też sh, zsh czy fish), a system wykonuje je po kolei tak, jakbyś wpisywał je ręcznie do terminala. Różnica jest taka, że zamiast klepać dziesięć komend za każdym razem, odpalasz jeden plik i idziesz po kawę. To podstawowe narzędzie automatyzacji w świecie uniksowym: instalacja, backupy, deploye, czyszczenie logów, przetwarzanie plików.

Pierwsza linia skryptu to zwykle #!/bin/bash — tak zwany shebang. Mówi systemowi, którym interpreterem ma uruchomić resztę pliku. Bez niego skrypt wciąż zadziała, jeśli wywołasz go przez bash plik.sh, ale shebang plus nadanie praw wykonywania (chmod +x plik.sh) pozwala uruchamiać go bezpośrednio: ./plik.sh. Powłoka czyta plik linia po linii i traktuje każdą jak osobne polecenie — masz tu zmienne, pętle for/while, warunki if, funkcje i argumenty ($1, $2, $@).

Konkretny przykład

Załóżmy, że codziennie chcesz spakować katalog z bazą i wrzucić archiwum z datą w nazwie. Cały skrypt to kilka linii:

  • #!/bin/bash
  • set -euo pipefail — skrypt przerwie się przy błędzie zamiast brnąć dalej
  • DATA=$(date +%F) — podstawia dzisiejszą datę, np. 2026-06-29
  • tar -czf /backup/db-$DATA.tar.gz /var/lib/mysql

Dorzucasz to do cron albo systemd timer i masz backup bez udziału człowieka. To jest sedno: skrypt zamienia rutynę w jedno polecenie, które nie zapomni i się nie pomyli o trzeciej w nocy.

Na co uważać

Najczęstsza wpadka to brak cudzysłowów wokół zmiennych. Jeśli ścieżka zawiera spację, rm $PLIK potrafi usunąć coś zupełnie innego niż chciałeś — dlatego pisz rm "$PLIK". Drugi klasyk to założenie, że skrypt zawsze startuje z konkretnego katalogu; bezpieczniej używać ścieżek bezwzględnych. Warto też dodawać set -euo pipefail na górze, bo domyślnie Bash ignoruje błędy i leci dalej, co przy operacjach na plikach kończy się dramatem.

Mit do obalenia: shell script nie służy do pisania dużych aplikacji. Świetnie sklei polecenia systemowe, ale gdy logika robi się zawiła (parsowanie danych, struktury, obsługa wyjątków), przesiądź się na Python. Dobrym nawykiem jest też uruchomienie pliku przez shellcheck — ten linter wyłapie większość typowych błędów, zanim zrobią szkodę.

Pojęcia powiązane

Bash, powłoka (shell), terminal, shebang, cron, zmienne środowiskowe, potok (pipe), chmod, shellcheck oraz CI/CD, gdzie skrypty są codziennym chlebem.