Tryb nocny
W skrócie: powłoka i skrypty Bash
Bash jest najpopularniejszą z dostępnych powłok wiersza poleceń dostarczonych wraz ze środowiskiem GNU/Linux.
Bash nie tylko pozwala uruchamiać programy w wierszu poleceń, ale również jest językiem skryptowania, umożliwiającym automatyzację skomplikowanych czynności.
Tworzenie i wywoływanie skryptów bash
Plik będący skryptem bash
jest zapisem poleceń, które mają wykonać się w czasie wywołania skryptu w powłoce.
Uruchamiamy dany skrypt bash
poprzez uruchomienie powłoki wraz ze ścieżką do skryptu.
Skrypt może zawierać nagłówek #!/bin/bash
, który informuje system Linux, że dany plik należy wywołać programem /bin/bash
.
Polecenie, którym został wywołany skrypt, można odczytać ze zmiennych specjalnych. Lista argumentów jest dostępna wewnątrz skryptu jako zmienne $1
, $2
, $3
, ...
Zmienna | Opis |
---|---|
$* | Całe polecenie jako tekst oddzielony spacją między argumentami |
"$@" | Wszystkie argumenty polecenia, uwzględniając podział argumentów |
$# | Liczba argumentów polecenia |
Polecenie w powyższej tabelce referuje do polecenia, którym został wywołany skrypt albo funkcja.
Uwaga
Składnia "$@"
jest różna od $@
. Należy używać wariantu z cudzysłowem, aby uwzględnić rozdzielenie argumentów.
Wzorce proste
Wzorce proste w bash
określają ścieżki w drzewie katalogów.
Element | Opis |
---|---|
* | Brak albo dowolna ilość dowolnych znaków |
? | Jeden dowolny znak |
[znaki] | Dowolny znak z określonej listy |
[^znaki] | Dowolny znak nie występujący w określonej liście |
literał | Cytowana treść |
Ponadto wyróżniamy składnię fraza-{a,b}
, który generuje frazy fraza-a
i fraza-b
.
Uwaga
Wzorce proste są składnią różną od wyrażeń regularnych.
Zmienne środowiskowe
Zmienne środowiskowe dotyczą procesu w systemie operacyjnym.
Komendy zarządzające zmiennymi w powłokach sh
Polecenie | Informacja |
---|---|
env | Wyświetl wszystkie zmienne środowiskowe powłoki |
nazwa=wartość | Ustaw zmienną środowiskową procesu powłoki |
export nazwa | Włącz dziedziczenie zmiennej środowiskowej przez kolejne procesy uruchomione w powłoce |
Składnia | Informacja |
---|---|
${nazwa} | Wstaw wartość zmiennej o określonej nazwie |
${nazwa:-wartość} | Wstaw wartość zmiennej o określonej nazwie, a jeżeli nie istnieje, wstaw podaną wartość |
Kody powrotu
Kody powrotu są zwracane przez każde polecenie wywołane w powłoce.
Kod wyjścia | Wartość logiczna | Informacja |
---|---|---|
0 | Prawda | Operacja wykonana pomyślnie |
inny | Fałsz | Operacja niewykonana pomyślnie |
Składnia | Informacja |
---|---|
$? | Zwróć kod statusu ostatnio wykonanej komendy |
&& | Jeżeli polecenie po lewej stronie zwróci prawdę, wykonaj polecenie po prawej |
|| | Jeżeli polecenie po lewej stronie zwróci fałsz, wykonaj polecenie po prawej |
Operatory przekierowania strumieni
Operator wstawiamy po poleceniu, na którym będziemy wykonywać przekierowanie strumienia.
Operator | Informacja |
---|---|
| | Przekieruj wyjście polecenia po lewej na wejście polecenia po prawej od znaku |
> | Przekieruj wyjście standardowe polecenia do pliku, nadpisując ten plik |
>> | Przekieruj wyjście standardowe polecenia do pliku, dopisując do tego pliku |
< | Przekieruj wejście polecenia, aby to było pobierane z pliku |
Plikiem może być również deskryptor pliku odnoszący się do strumienia.
W przypadku przypisywania do deskryptora pliku odnoszącego się do strumienia należy taki poprzedzić znakiem &
.
Na danym poleceniu można wykonać wiele przekierowań.
Polecenie test
Polecenie test
służy do sprawdzania danego warunku, zwracając wartość logiczną w kodzie powrotu
Składnia polecenia test
porównująca pierwszą frazę z drugą
test fraza1 operatorPorównania fraza2
Operator porównania | Warunek |
---|---|
-eq | Liczba równa drugiej |
-lt | Liczba mniejsza od drugiej |
-le | Liczba mniejsza od drugiej, lub równa drugiej |
-gt | Liczba większa od drugiej |
-ge | Liczba większa od drugiej, lub równa drugiej |
= | Napis równoważny drugiemu |
[
jest aliasem polecenia test
, które należy zakończyć argumentem ]
.
Uwaga
Nie należy mylić [
(inaczej test
) z [[
. Obsługują one inny zestaw operatorów i w pewnych przypadkach mają różne działanie.
Składnia polecenia test
sprawdzająca frazę
test operatorWarunku fraza
Operator warunku | Warunek |
---|---|
-z | Napis jest pusty |
-e | Ścieżka istnieje |
-d | Katalog istnieje |
-f | Plik istnieje |
-L | Dowiązanie symboliczne istnieje |
Instrukcja warunkowa
bash
if komendaSprawdzająca; then
# wykonane zostaną polecenia z tego bloku, jeżeli
# komenda sprawdzająca zwróci kod 0
polecenia
fi
if komendaSprawdzająca; then
# wykonane zostaną polecenia z tego bloku, jeżeli
# komenda sprawdzająca zwróci kod 0
polecenia
fi
bash
if komendaSprawdzająca; then
# wykonane zostaną polecenia z tego bloku, jeżeli
# komenda sprawdzająca zwróci kod 0
polecenia
else
# wykonane zostaną polecenia z tego bloku, jeżeli
# komenda sprawdzająca zwróci kod różny od 0
polecenia
fi
if komendaSprawdzająca; then
# wykonane zostaną polecenia z tego bloku, jeżeli
# komenda sprawdzająca zwróci kod 0
polecenia
else
# wykonane zostaną polecenia z tego bloku, jeżeli
# komenda sprawdzająca zwróci kod różny od 0
polecenia
fi
bash
if komendaSprawdzająca1; then
# wykonane zostaną polecenia z tego bloku, jeżeli
# pierwsza komenda sprawdzająca zwróci kod 0
polecenia
elif komendaSprawdzająca2; then
# wykonane zostaną polecenia z tego bloku, jeżeli
# pierwsza komenda sprawdzająca zwróci kod różny od 0
# druga komenda sprawdzająca zwróci kod 0
polecenia
else
# wykonane zostaną polecenia z tego bloku, jeżeli
# wszystkie komendy sprawdzające zwrócą kod różny od 0
polecenia
fi
if komendaSprawdzająca1; then
# wykonane zostaną polecenia z tego bloku, jeżeli
# pierwsza komenda sprawdzająca zwróci kod 0
polecenia
elif komendaSprawdzająca2; then
# wykonane zostaną polecenia z tego bloku, jeżeli
# pierwsza komenda sprawdzająca zwróci kod różny od 0
# druga komenda sprawdzająca zwróci kod 0
polecenia
else
# wykonane zostaną polecenia z tego bloku, jeżeli
# wszystkie komendy sprawdzające zwrócą kod różny od 0
polecenia
fi
Polecenie if
może zawierać wiele bloków elif
i maksymalnie jeden blok else
.
Pętle
Pętla, w przeciwieństwie do instrukcji warunkowej, może wykonywać polecenia więcej niż jeden raz.
bash
while komendaSprawdzająca; do
# wykonane zostaną polecenia z tego bloku po każdej iteracji
# wywołania komendy sprawdzającej, dopóki ta nie zwróci kodu
# różnego od 0
polecenia
done
while komendaSprawdzająca; do
# wykonane zostaną polecenia z tego bloku po każdej iteracji
# wywołania komendy sprawdzającej, dopóki ta nie zwróci kodu
# różnego od 0
polecenia
done
Pętla for
Pętla for iteruje po każdym elemencie przekazanej listy argumentów
bash
for element in listaArgumentów; do
polecenia
done
for element in listaArgumentów; do
polecenia
done
Funkcje
Ta część strony została oznaczona, jakoby była w trakcie konstrukcji. To oznacza, że treść w miejscu tego komunikatu zostanie uzupełniona w najbliższym czasie.
bash
# definicja funkcji
funkcja() {
# polecenia które zostaną wykonane przy wywołaniu funkcji
# zmienne "$@", $1, $2, ..., $*, przechowują argumenty (sposób wywołania funkcji)
polecenia
}
# wywołanie funkcji
funkcja
# definicja funkcji
funkcja() {
# polecenia które zostaną wykonane przy wywołaniu funkcji
# zmienne "$@", $1, $2, ..., $*, przechowują argumenty (sposób wywołania funkcji)
polecenia
}
# wywołanie funkcji
funkcja
Inne powłoki polecenia
Nazwa powłoki | Informacja |
---|---|
bash | Standardowa powłoka w środowisku GNU |
zsh | Alternatywna powłoka dla zaawansowanych użytkowników |
fish | Przyjazna powłoka z unikatową składnią |
dash | Wydajna powłoka do wykonywania skryptów zgodnych ze standardem POSIX |