Tworzenie skryptów Bash: Poradnik dla początkujących
Bash to potężny interpreter wiersza poleceń dostępny w systemach Linux i macOS. Pozwala na automatyzację zadań poprzez tworzenie skryptów, czyli plików zawierających polecenia Bash, które są wykonywane sekwencyjnie. Skrypty Bash mogą oszczędzić czas i wysiłek, ułatwiając powtarzające się zadania i złożone operacje.
Struktura skryptu Bash:
Typowy skrypt Bash składa się z następujących elementów:
- Nagłówek Shebanga: Pierwsza linia skryptu musi zawierać tzw. nagłówek shebanga, który informuje system o używanym interpreterze. Przykładowa linia shebanga dla Bash to:
#!/bin/bash
- Komentarze: Komentarze służą do wyjaśniania kodu skryptu i ułatwiają jego zrozumienie. Mogą być umieszczone w dowolnym miejscu skryptu i zaczynają się od znaku
#
.
# Ten skrypt wyświetla aktualną datę i godzinę
- Zmienna: Zmienne są używane do przechowywania wartości, które mogą być wykorzystywane w skrypcie. Deklaruje się je za pomocą słowa kluczowego
var
, a następnie nazwy zmiennej i znaku równości (=
), po którym następuje wartość zmiennej.
liczba=10
echo "Wartość zmiennej 'liczba' wynosi: $liczba"
- Polecenia: Polecenia to instrukcje, które są wykonywane przez interpreter Bash. Mogą obejmować wewnętrzne polecenia Bash, programy zewnętrzne, skrypty i inne konstrukcje sterujące.
mkdir nowy_katalog
cp plik.txt nowy_katalog
rm stary_plik.txt
- Bloki warunkowe: Bloki warunkowe pozwalają na wykonywanie różnych instrukcji w zależności od spełnienia określonych warunków. Używa się do tego konstrukcji
if-else
lubswitch-case
.
if [ $liczba -gt 5 ]; then
echo "Liczba jest większa od 5"
else
echo "Liczba jest mniejsza lub równa 5"
fi
- Pętle: Pętle pozwalają na wielokrotne wykonywanie tego samego bloku kodu. Dostępne są różne rodzaje pętli, takie jak
for
,while
iuntil
.
for i in 1 2 3 4 5; do
echo "Liczba: $i"
done
Przykładowy skrypt Bash:
Poniższy skrypt pobiera nazwy plików z bieżącego katalogu i zapisuje je w pliku lista_plikow.txt
:
Bash
#!/bin/bash
# Pobierz listę plików z bieżącego katalogu
pliki=$(ls)
# Zapis nazw plików do pliku 'lista_plikow.txt'
for plik in $pliki; do
echo "$plik" >> lista_plikow.txt
done