bash (1)
Nazwa
bash - GNU Bourne-Again SHell
Składnia
bash [opcje] [plik]
Copyright
Bash is Copyright (C) 1989-2001 by the Free Software Foundation, Inc.
Opis
Bash jest zgodnym z sh interpreterem języka poleceń, wykonującym polecenia ze standardowego wejścia bądź z pliku. Włączono doń również przydatne cechy zaczerpnięte z powłoki Korna i powłoki C (ksh i csh).
Bash w zamierzeniu jest implementacją zgodną z POSIX-ową specyfikacją powłok i narzędzi -- IEEE POSIX Shell and Tools specification (IEEE Working Group 1003.2).
Opcje
Oprócz jednoznakowych opcji powłoki udokumentowanych w opisie wbudowanego polecenia set, bash przy wywołaniu interpretuje poniższe opcje:
- -c łańcuch
- Jeśli występuje opcja -c, to polecenia odczytywane są z łańcucha. Jeżeli po łańcuchu istnieją argumenty, to są one przypisywane do argumentów pozycyjnych, poczynając od $0.
- -r
- Jeżeli występuje opcja -r, to powłoka staje się powłoką okro_joną (restricted). Zobacz poniżej POWŁOKA OKROJONA.
- -i
- Jeżeli występuje opcja -i, to powłoka jest interaktywna.
- -s
- Jeśli występuje opcja -s lub po przetworzeniu opcji nie pozostają żadne argumenty, to polecenia odczytywane są ze standardowego wejścia. Opcja ta umożliwia na ustawienie parametrów pozycyjnych podczas wywołania powłoki interaktywnej.
- -D
- Na standardowym wyjściu wypisywana jest lista wszystkich podwójnie cytowanych łańcuchów poprzedzonych znakiem $. Są to łańcuchy będące przedmiotem tłumaczenia języka, gdy bieżącym ustawieniem regionalnym (locale) nie jest C ani POSIX. Implikuje to opcję -n; nie zostaną wykonane żadne polecenia. [-+]O [opcja_shopt] opcja_shopt jest jedną z ocpji powłoki akceptowanych przez polecenie wbudowane shopt (zobacz WBUDOWANE POLECENIA POWŁOKI poniżej). Jeśli występuje opcja_shopt, to -O nadaje wartość tej opcji, zaś +O unieważnia ją. Jeżeli nie podano opcji_shopt, to na standardowym wyjściu wypisywane są nazwy i wartości opcji powłoki akceptowanych przez shopt. Jeśli opcją wywołania jest +O, tworzone wyjście jest formatowane w taki sposób, by można było wykorzystać je jako wejście.
- --
- Zapis -- sygnalizuje koniec opcji i wyłącza dalsze ich przetwarzanie. Argumenty występujące po -- traktowane są jako nazwy plików i argumenty. Argument - jest równoważnikiem --.
Bash interpretuje także wiele opcji wieloznakowych. Jeśli mają zostać rozpoznane, opcje te muszą pojawić się w wierszu poleceń przed opcjami jednoznakowymi,
- --dump-po-strings
- Równoważne -D, ale wyjście jest w formacie pliku GNU gettext po (portable object). --dump-strings Równoważnik -D. --help Wyświetla na standardowym wyjściu komunikat o użytkowaniu i pomyślnie kończy pracę. --init-file plik --rcfile plik Wykonuje polecenia z podanego pliku zamiast ze standardowego osobistego pliku inicjującego ~/.bashrc, jeśli powłoka jest interaktywna. Zobacz WYWOŁANIE poniżej.
- --login
- Sprawia, że bash działa tak, jakby został wywołany jako powłoka zgłoszeniowa (login shell). Zobacz WYWOŁANIE poniżej.
- --noediting
- Nie używa biblioteki GNU readline do odczytu wierszy poleceń w trybie interaktywnym.
- --noprofile
- Nie odczytuje ani ogólnosystemowego pliku startowego /etc/pro_file ani żadnego z osobistych plików inicjujących ~/.bash_pro_file, ~/.bash_login czy ~/.profile. Domyślnie, bash czyta te pliki gdy jest wywołany jako powłoka zgłoszeniowa (zobacz WYWOŁANIE poniżej).
- --norc Nie
- odczytuje i nie wykonuje osobistego pliku inicjującego ~/.bashrc jeśli powłoka jest interaktywna. Opcja ta jest domyślnie włączona, jeżeli powłokę wywołano jako sh.
- --posix
- Zmienia zachowanie bash tam, gdzie operacja domyślna różni się od standardu POSIX 1003.2 tak, by dostosować się do niego (tryb posix).
- --restricted
- Powłoka staje się okrojona (zobacz POWŁOKA OKROJONA poniżej).
- --verbose
- Równoważnik opcji -v.
- --version
- Pokazuje na standardowym wyjściu informację o wersji tego egzemplarza bash i pomyślnie kończy pracę.
Argumenty
Jeśli po przetworzeniu opcji pozostają jakieś argumenty, a nie podano ani opcji -c ani -s, to zakłada się, że pierwszy argument jest nazwą pliku zawierającego polecenia powłoki. Jeżeli bash został wywołany w taki sposób, to $0 przypisywana jest nazwa pliku z poleceniami, a parametrom pozycyjnym pozostałe argumenty. Bash odczytuje i wykonuje polecenia z tego pliku, a następnie kończy pracę. Kod zakończenia basha jest wówczas kodem zakończenia ostatniego wykonanego polecenia skryptu. Jeśli nie wykonano żadnego polecenia, to kod zakończenia wynosi 0.
Wywołanie
Powłoka zgłoszeniowa (login shell) to taka, w której pierwszym znakiem zerowego argumentu jest -, lub taka, którą uruchomiono z opcją --login.
Powłoka interaktywna to taka, którą uruchomiono bez argumentów innych niż opcje i bez opcji -c; zarówno jej standardowe wejście jak i wyjście powiązane jest z terminalami (tak jak określiła to funkcja isatty(3) ), albo taka, którą uruchomiono z opcją -i. Jeśli bash jest interaktywny, to ustawiane jest PS1 zaś $- zawiera i; pozwala to skryptowi powłoki lub plikowi startowemu na sprawdzanie tego stanu.
Poniższe akapity opisują, jak bash wykonuje swoje pliki startowe. Jeśli któryś z tych plików istnieje, ale nie może być odczytany, to bash zgłasza błąd. Tyldy (~) w nazwach plików interpretowane są według reguł opisanych poniżej w części Interpretacja tyld sekcji INTERPRETACJA.
Gdy bash wywoływany jest jako powłoka zgłoszeniowa lub jako powłoka nie-interaktywna z opcją --login, w pierwszej kolejności czyta i wykonuje polecenia z pliku /etc/profile, jeśli takowy istnieje. Po odczytaniu tego pliku, szuka ~/.bash_profile, ~/.bash_login i ~/.profile, w tej kolejności, po czym odczytuje i wykonuje polecenia z pierwszego istniejącego i dającego się odczytać. Można posłużyć się opcją --noprofile podczas uruchamiania powłoki, by zakazać takiego zachowania.
Podczas kończenia pracy powłoki zgłoszeniowej, bash czyta i wykonuje polecenia z pliku ~/.bash_logout, jeśli taki istnieje.
Jeżeli uruchamiana jest powłoka interaktywna nie będąca powłoką zgłoszeniową, bash czyta i wykonuje polecenia z ~/.bashrc, jeśli taki plik istnieje. Może to być zakazane za pomocą opcji --norc. Opcja --rcfile plik wymusi odczyt i wykonanie poleceń z pliku zamiast z ~/.bashrc.
Jeśli bash startuje w trybie nie-interaktywnym, na przykład w
celu uruchomienia skryptu powłoki, to szuka w środowisku zmiennej
BASH_ENV, interpretuje jej wartość, jeśli ją znalazł, i
używa otrzymanej wartości jako nazwy pliku do odczytania i wykonania.
Bash zachowuje się tak, jakby były wykonane następujące
polecenia:
if [ -n “$BASH_ENV” ]; then . “$BASH_ENV"; fi
ale do szukania nazwy pliku nie jest używana wartość zmiennej
PATH.
Jeżeli bash wywołano pod nazwą sh, to próbuje on naśladować zachowanie startowe historycznych wersji sh tak ściśle jak to jest możliwe, przy równoczesnym spełnianiu standardu POSIX. Wywołany jako powłoka interaktywna lub powłoka nie-interaktywna z opcją --login, usiłuje na początku odczytać i wykonać polecenia z /etc/profile i ~/.profile, w tej kolejności. W celu zakazania tego zachowania można użyć opcji --noprofile. Wywołany jako powłoka interaktywna pod nazwą sh, bash poszukuje zmiennej ENV, interpretuje jej wartość, jeśli jest zdefiniowana, i posługuje się otrzymaną wartością jako nazwą pliku, który ma być odczytany i wykonany. Ponieważ powłoka wywołana jako sh nie usiłuje czytać ani wykonywać poleceń z jakichkolwiek innych plików startowych, opcja --rcfile nie ma żadnych skutków. Powłoka nie-interaktywna wywołana pod nazwą sh nie próbuje czytać żadnych plików startowych. Wywołany jako sh, bash wchodzi w tryb posix po odczycie plików startowych.
Gdy bash uruchomiony jest w trybie posix, jak z opcją --posix wiersza poleceń, kieruje się standardem POSIX dla plików startowych. W trybie tym, powłoka interaktywna interpretuje zmienną ENV a polecenia odczytywane i wykonywane są z pliku, którego nazwą jest zinterpretowana wartość. Nie są czytane inne pliki startowe.
Bash usiłuje rozstrzygnąć, czy jest uruchomiony przez demona powłoki zdalnej, zwykle rshd. Jeżeli stwierdzi, że został uruchomiony przez rshd, to odczytuje i wykonuje polecenia z ~/.bashrc, jeśli plik ten istnieje i daje się czytać. Nie będzie tego robił wywołany jako sh. Można posłużyć się opcją --norc, by zakazać tego zachowania oraz opcją --rcfile, by wymusić czytanie innego pliku, ale rshd zazwyczaj nie wywołuje powłoki z tymi opcjami ani nie pozwala na ich podanie.
Jeśli powłoka została uruchomiona z efektywnym id użytkownika (grupy) różnym od id rzeczywistego, a nie podano opcji -p, to nie są odczytywane żadne pliki startowe, funkcje powłoki nie są dziedziczone ze środowiska, zmienna SHELLOPTSP, jeśli jest taka w środowisku, jest ignorowana a efektywny identyfikator użytkownika jest ustawiany na jego identyfikator rzeczywisty. Jeśli przy wywołaniu podano opcję -p, to zachowanie startowe jest takie samo, ale nie jest resetowany efektywny id użytkownika.
Definicje
W pozostałej części tego dokumentu używane są poniższe
definicje.
odstęp Spacja lub znak tabulacji.
słowo Sekwencja znaków uważana przez powłokę za pojedynczą jednostkę.
Znana też jako token.
nazwa Jest to słowo składające się wyłącznie ze znaków alfanumerycznych
i znaków podkreślenia, i rozpoczynające się
znakiem alfabetycznym lub podkreśleniem. Wspominane
również jako identyfikator.
metaznak
Znak, które, gdy nie jest cytowany, oddziela słowa. Jeden
z poniższych:
| & ; ( ) < > spacja tab
operator sterujący
token pełniący funkcję sterującą. Jest to jeden z
poniższych symboli:
|| & && ; ;; ( ) | <nowalinia>
Słowa Zastrzeżone
Słowa zastrzeżone (reserved words) to takie, które mają dla powłoki specjalne znaczenie. Następujące słowa są rozpoznawane jako zastrzeżone, gdy nie są cytowane i występują albo jako pierwsze słowo polecenia prostego (zobacz GRAMATYKA POWŁOKI poniżej) albo trzecie słowo poleceń case lub for;
! case do done elif else esac fi for function if in select then until while { } time [[ ]]
Gramatyka Powłoki
Polecenia proste
Polecenie proste jest sekwencją opcjonalnych przypisań zmiennych,
po której następują rozdzielane przez odstęp słowa i
przekierowania, a zakończoną operatorem sterującym. Pierwsze
słowo określa polecenie, jakie ma zostać wykonane i jest
przekazywane jako argument numer zero. Pozostałe słowa są
przekazywane jako argumenty wywoływanego polecenia.
Wartością zwracaną polecenia prostego jest jego kod zakończenia lub 128+n jeżeli polecenie przerwane jest sygnałem n.
Potoki
Potok jest sekwencją jednego lub więcej poleceń rozdzielonych
znakiem |. Formatem potoku jest:
[time [-p]] [ ! ] polecenie [ | polecenie2 ... ]
Standardowe wyjście z polecenia połączone jest za pośrednictem potoku ze standardowym wejściem polecenia2. Połączenie to wykonywane jest przed możliwymi przekierowaniami podanymi dla polecenia (zobacz poniżej PRZEKIEROWANIE.
Jeżeli potok poprzedza zastrzeżone słowo !, to kod zakończenia takiego potoku jest negacją (NOT) kodu zakończenia ostatniego polecenia. W przeciwnym wypadku, kodem potoku jest kod zakończenia ostatniego polecenia. Powłoka oczekuje na zakończenie (terminate) wszystkich poleceń w potoku przed zwróceniem wartości.
Jeżeli potok jest poprzedzony słowem zastrzeżonym time, to po jego zakończeniu podawany jest czas wykonywania, jak również czas użytkownika i czas systemu zużyty na wykonanie. Opcja -p zmienia format tworzonych wyników na określony przez POSIX. Do sformatowania łańcucha określającego, jak powinna być wyświetlana informacja o czasach, można ustawić zmienną TIMEFORMAT; zobacz opis TIMEFORMAT w Zmienne powłoki poniżej.
Każde polecenie w potoku uruchamiane jest jako odrębny proces (tj. w podpowłoce).
Listy
Lista jest potokiem lub sekwencją kilku potoków rozdzielonych
jednym z operatorów ;, &, && lub ||, i opcjonalnie zakończoną
jednym ze znaków ;, & lub <nowalinia>.
Spośród tych operatorów listowych, && i || mają ten sam priorytet, następujące po nich ; i &, również mają równy między sobą priorytet.
Jeśli polecenie zakończone jest operatorem sterującym &, to powłoka wykonuje je w tle (background) w podpowłoce. Powłoka macierzysta nie oczekuje na zakończenie polecenia, a zwracany kod wynosi 0. Polecenia oddzielane znakiem średnika ; wykonywane są sekwencyjnie; powłoka oczekuje na zakończenie pracy przez każde z nich po kolei. Zwracany kod jest kodem zakończenia ostatniego wykonanego polecenia.
Operatory sterujące && i || oznaczają odpowiednio listy AND i OR. Lista AND ma postać
polecenie2 wykonywane jest wtedy, i tylko wtedy, gdy polecenie1 zwraca zerowy kod zakończenia.
Lista OR ma postać
polecenie1 || polecenie2
polecenie2 jest wykonywane wtedy, i tylko wtedy, gdy polecenie1 zwraca niezerowy kod zakończenia. Kod zwracany przez listy AND i OR jest kodem zakończenia ostatniego wykonanego polecenia listy.
Polecenia złożone
Polecenie złożone (compound command) jest jednym z poniższych:
(lista)
lista wykonywana jest w podpowłoce. Przypisania zmiennych
i polecenia wbudowane wpływające na środowisko powłoki
nie zachowują swoich skutków po zakończeniu polecenia.
Zwracanym kodem jest kod zakończenia listy.
{ lista; }
lista jest po prostu wykonywana w bieżącym środowisku
powłoki. lista musi być zakończona znakiem nowej linii
lub średnika. Nazywane jest to poleceniem grupowania.
Zwracanym kodem jest kod zakończenia listy. Należy
pamiętać, że w przeciwieństwie do metaznaków ( i , { i }
są słowami zastrzeżonymi i aby zostały rozpoznane muszą
się pojawić tam, gdzie dozwolone jest użycie słów zastrzeżonych.
Ponieważ nie powodują podziału na słowa,
muszą być oddzielone od listy za pomocą białego znaku.
((wyrażenie))
wyrażenie interpretowane jest zgodnie z zasadami
opisanymi poniżej w sekcji OBLICZANIE WYRAŻEŃ ARYTMETYCZNYCH.
Jeśli wartość wyrażenia jest niezerowa, to kodem
zwracanym jest 0; w przeciwnym razie kodem zwracaym jest
1. Jest to ściśle równoważne konstrukcji let “wyrażenie".
[[ wyrażenie ]]
Zwraca kod 0 lub 1 w zależności od interpretacji
wyrażenia warunkowego wyrażenie. Wyrażenia złożone są ze
składowych (primaries) opisanych poniżej w opcji
WYRAŻENIA WARUNKOWE. Na słowach pomiędzy [[ a ]] nie są
wykonywane rozwinięcia nazw plików ani podział na słowa;
są natomiast wykonywane: interpretacja tyld, parametrów i
zmiennych, interpretacja wyrażeń arytmetycznych, podstawianie
wyników poleceń, podstawianie wyników procesów i
usunięcia cytowań.
Gdy używane są operatory == i !=, łańcuch na prawo od operatora traktowany jest jak wzorzec i dopasowywany zgodnie z zasadami opisanymi poniżej w sekcji Dopasowywanie wzorców. Wartością zwracaną jest 0 jeśli łańcuch odpowiednio pasuje lub nie pasuje do wzorca, zaś 1 w przeciwnym przypadku. Można zacytować dowolną część wzorca w celu wymuszenia dopasowywania jej jako łańcucha.
Wyrażenia można łączyć przy pomocy następujących operatorów, wymienionych w kolejności malejącego priorytetu:
( wyrażenie )
Zwraca wartość wyrażenia. Może służyć do
unieważnienia zwykłej kolejności operatorów.
! wyrażenie
Prawda jeżeli wyrażenie jest fałszywe.
wyrażenie1 && wyrażenie2
Prawda jeśli zarówno wyrażenie1 jak i wyrażenie2
są prawdziwe.
wyrażenie1 || wyrażenie2
Prawda jeśli choć jedno spośród wyrażenie1 lub
wyrażenie2 jest prawdziwe.
Operatory && i || nie wykonują wyrażenia2 jeżeli wartość wyrażenia1 wystarcza do określenia wartości, jaka zostanie zwrócona przez całe wyrażenie warunkowe.
for nazwa [ in słowo ] ; do lista ; done Interpretowane są słowa następujące po in, tworząc listę elementów. Zmiennej nazwa nadawana jest kolejno wartość każdego elementu tej listy i każdorazowo wykonywana jest lista poleceń. Jeżeli pominięto in słowo, to polecenie for wykonuje listę po jednym razie dla każdego ustawionego parametru pozycyjnego (zobacz PARAMETRY poniżej). Zwracanym kodem jest kod zakończenia ostatniego wykonanego polecenia. Jeśli interpretacja elementów następujących po in daje w wyniku pustą listę, to nie są wykonywane żadne polecenia i zwracany jest kod 0.
for (( wyr1 ; wyr2 ; wyr3 )) ; do lista ; done Na początku obliczane jest wyrażenie arytmetyczne wyr1, zgodnie z zasadami opisanymi poniżej w OBLICZANIE WYRAŻEŃ ARYTMETYCZNYCH. Następnie wielokrotnie obliczane jest wyr2, aż do osiągnięcia przez nie wartości zero. Każdorazowo gdy obliczone wyr2 jest niezerowe, wykonywana jest lista i obliczane jest wyrażenie arytmetyczne wyr3. Jeśli pominięto któreś z wyrażeń, to zachowuje się ono tak, jakby przyjmowało wartość 1. Zwracanym kodem jest kod zakończenia ostatniego wykonanego polecenia listy, lub fałsz jeśli któreś z wyrażeń jest niepoprawne.
select nazwa [ in słowo ] ; do lista ; done Interpretowana jest lista słów następujących po in, tworząc listę elementów. Zestaw zinterpretowanych słów wypisywany jest na standardowym wyjściu, każde poprzedzone liczbą kolejną. Jeśli pominięto in słowo, to wypisywane są parametry pozycyjne (zobacz PARAMETRY poniżej). Następnie wyświetlana jest zachęta PS3 i czytany jest wiersz ze standardowego wejścia. Jeżeli wiersz składa się z liczby odpowiadającej jednemu z wyświetlonych słów, to zmiennej nazwa przypisywana jest wartość tego słowa. Jeśli wiersz jest pusty, słowa i zachęta wyświetlane są ponownie. Jeżeli odczytano EOF, to polecenie kończy pracę. Każda inna wartość powoduje, że nazwie zostanie przypisany łańcuch pusty. Odczytany wiersz zachowywany jest w zmiennej REPLY. lista wykonywana jest po każdym wyborze, dopóki nie zostanie wykonane polecenie break. Kodem zakończenia select jest kod zakończenia ostatniego wykonanego polecenia listy lub zero jeśli nie wykonano żadnych poleceń.
case słowo in [ [(] wzorzec [ | wzorzec ] ... ) lista ;; ] ...
esac
Polecenie case najpierw interpretuje słowo i próbuje
dopasować uzyskany wynik każdego z wzorców po kolei,
posługując się tymi samymi regułami dopasowywania, co dla
rozwijania nazw ścieżkowych (zobacz Rozwijanie nazw
ścieżkowych poniżej). Gdy znalezione zostanie dopasowanie,
wykonywana jest odpowiadająca mu lista. Po pierwszym
dopasowaniu nie są dokonywane próby dopasowania
pozostałych wzorców. Jeśli żaden ze wzorców nie pasuje do
kodem zakończenia jest zero. W przeciwnym razie jest
równy kodowi zakończenia ostatniego z wykonanych poleceń
listy.
if lista; then lista; [ elif lista; then lista; ] ... [ else
lista; ] fi
Wykonywana jest lista występująca po if. Jeżeli jej kod
zakończenia jest zerowy, to wykonywana jest lista
klauzuli then. W przeciwnym wypadku, wykonywana jest
lista każdego elif po kolei; jeśli kod zakończenia
którejś wynosi 0, to wykonywana jest lista then i polecenie
jest kończone. Jeżeli nie wystąpił żaden z powyższych
przypadków, to wykonywana jest lista występująca po
klauzuli else, jeśli takowa istnieje. Kodem zakończenia
jest kod ostatniego wykonanego polecenia listy lub zero
jeśli żaden z warunków nie okazał się prawdziwy.
while lista; do lista; done
until lista; do lista; done
Polecenie while powtarza wykonywanie listy podanej po do
tak długo, jak długo ostatnie polecenie listy while
zwraca zerowy kod zakończenia. Polecenie until działa
identycznie jak while, poza tym, że warunek jest zanegowany:
do lista wykonywane jest tak długo, jak długo
ostatnie polecenie listy until zwraca niezerowy kod
zakończenia. Kod zakończenia poleceń while i until jest
równy kodowi zakończenia ostatniego z wykonanych poleceń
listy do lub zeru jeśli żadne nie zostało wykonane.
[ function ] nazwa () { lista; }
Definuje to funkcję nazwaną nazwa. Ciałem funkcji jest
lista poleceń zawarta pomiędzy { i }. Lista ta jest
wykonywana w za każdym razem gdy nazwa występuje jako
polecenie proste. Kodem zakończenia funkcji jest kod
zakończenia ostatniego z wykonanych poleceń jej ciała.
(Zobacz FUNKCJE poniżej.)
Komentarze
W powłoce nie-interaktywnej lub w powłoce interaktywnej, w której włączono opcję interactive_comments do opcji wbudowanych shopt(zobacz WBUDOWANE POLECENIA POWŁOKI poniżej) słowo rozpoczynające się od znaku # powoduje, że słowo to i wszystkie pozostałe znaki w tym wierszu będą ignorowane. Powłoka interaktywna bez włączonej opcji interactive_comments nie pozwala na komentarze. Opcja interactive_comments jest domyślnie włączona w powłokach interaktywnych.
Cytowanie
Cytowanie służy do usuwania specjalnego znaczenia dla powłoki pewnych znaków lub słów. Cytowanie można stosować do wyłączania specjalnego traktowania znaków specjalnych, zapobiegania rozpoznawaniu słów zastrzeżonych jako takich oraz do zapobiegania podstawianiu parametrów.
Każdy z metaznaków podanych powyżej w DEFINICJACH posiada dla powłoki specjalne znaczenie i musi być cytowany, jeśli ma oznaczać samego siebie.
Gdy używane są funkcje interpretacji historii poleceń, znak interpretacji historii, zwykle !, musi być cytowany, jeśli chce się uniknąć interpretacji historii.
Istnieją trzy mechanizmy cytowania: znak specjalny(escapecharac_ter), apostrofy (pojedyncze cudzysłowy) i cudzysłowy zwykłe (podwójne).
Niecytowany odwrotny ukośnik (\) jest znakiem specjalnym. Chroni on przed interpretacją dosłowną wartość następującego po nim znaku, z wyjątkiem <nowejlinii>. Jeśli pojawi się para \<nowalinia> a sam odwrotny ukośnik nie jest cytowany, to traktowana jest ona jak kontynuacja wiersza (to znaczy, usuwana jest ze strumienia wejściowego i w efekcie ignorowana).
Ujęcie znaków w apostrofy chroni dosłowne wartości każdego z nich. Apostrof nie może pojawić się pomiędzy innymi apostrofami, nawet jeśli jest poprzedzony odwrotnym ukośnikiem.
Ujęcie znaków w cudzysłowy chroni dosłowne wartości każdego z nich, za wyjątkiem $, ‘ i \. Znaki $ i ‘ zachowują swe specjalne znaczenie wewnątrz cudzysłowów. Odwrotny ukośnik zachowuje specjalne znaczenie tylko, gdy występuje po nim jeden z poniższych znaków: $, ‘, “, \ lub <nowalinia>. Cudzysłów może być cytowany wewnątrz cudzysłowów przez poprzedzenie go odwrotnym ukośnikiem.
Parametry specjalne * i @ posiadają specjalne znaczenie wewnątrz cudzysłowów (zobacz PARAMETRY poniżej).
Słowa postaci $’łańcuch’ traktowane są specjalnie. Słowo takie
interpretowane jako łańcuch, w którym znaki poprzedzone odwrotnym
ukośnikiem zastępowane są według standardu ANSI C. Sekwencje
specjalne z odwrotnym ukośnikiem, jeśli występują, dekodowane są
następująco:
- \a
- alarm (dzwonek)
- \b
- backspace
- \e
- znak escape
- \f
- znak wysuwu strony (form feed)
- \n
- znak nowej linii (new line)
- \r
- powrót karetki (carriage return)
- \t
- tabulacja pozioma (horizontal tab)
- \v
- tabulacja pionowa (vertical tab)
- \\
- odwrotny ukośnik (backslash)
- \’
- apostrof \nnn ośmiobitowy znak, którego wartością jest ósemkowa liczba nnn (jedna do trzech cyfr) \xnnn ośmiobitowy znak, którego wartością jest szesnastkowa liczba nnn (jedna do trzech cyfr szesnastkowych)
Przetłumaczony wynik jest pojedynczo cytowany, tak jakby nie było znaku dolara.
Ujęty w cudzysłowy łańcuch poprzedzony znakiem dolara ($) spowoduje, że łańcuch zostanie zinterpretowany zgodnie z bieżącymi ustawieniami regionalnymi (locale). Jeśli ustawione są one na C lub POSIX, to znak dolara jest ignorowany. Jeżeli łańcuch jest tłumaczony i zamieniany, to zastąpienie jest podwójnie cytowane.
Parametry
Parametr jest elementem przechowującym wartości. Może on być nazwą, liczbą lub jednym ze znaków specjalnych podanych poniżej w sekcji Parametry specjalne. Dla celów powłoki zmienna jest parametrem oznaczanym przez nazwę. Zmienna posiada wartość i zero lub więcej atrybutów. Wartość atrybutom przypisuje się za pomocą polecenia wbudowanego declare (zobacz opis tego polecenia poniżej, w sekcji WBUDOWANE POLECENIA POWŁOKI).
Parametr jest ustawiony jeśli przypisano mu wartość. Łańcuch pusty jest poprawną wartością. Po ustawieniu zmiennej, może być ona unieważniona wyłącznie przez użycie wbudowanego polecenia unset (zobacz poniżej WBUDOWANE POLECENIA POWŁOKI).
Do zmiennej można wykonać przypisanie przy pomocy instrukcji postaci
nazwa=[wartość]
Jeżeli nie podano wartości, to zmiennej przypisywany jest łańcuch pusty. Wszystkie wartości przechodzą przez interpretację tyld, podstawianie parametrów, interpretację zmiennych, podstawianie wyników poleceń, interpretację wyrażeń arytmetycznych i usuwanie cytowań (zobacz poniżej INTERPRETACJA). Jeżeli zmienna ma ustawiony atrybut integer (całkowita), to wartość podlega interpretacjom wyrażeń arytmetycznych, nawet jeśli nie użyto interpretacji $((...)). Zobacz poniżej Interpretacja wyrażeń arytmetycznych. Nie jest wykonywane dzielenie na słowa, z wyjątkiem “$@", jak wyjaśniono to poniżej w sekcji Parametry specjalne. Nie jest wykonywane rozwijanie nazw plików. Instrukcje przypisania mogą się też pojawiać jako argumenty poleceń wbudowanych declare, typeset, export, readonly i local.
Parametry pozycyjne
Parametr pozycyjny to parametr określany cyfrą lub cyframi,
innymi niż pojedyncza cyfra 0. Parametrom pozycyjnym nadawane
są wartości argumentów powłoki (w czasie jej wywołania).
Wartości te mogą być ponownie nadawane przy pomocy wbudowanego
polecenia set. Do parametrów pozycyjnych nie można wykonać
przypisania przy pomocy instrukcji przypisania. Parametry pozycyjne
są tymczasowo zastępowane podczas wykonywania funkcji
powłoki (zobacz poniżej FUNKCJE). Jeżeli interpretowany jest
parametr pozycyjny określany więcej niż jedną cyfrą, to musi być
ujęty w nawiasy (zobacz poniżej INTERPRETACJA).
Parametry specjalne
Powłoka kilka parametrów traktuje specjalnie. Do parametrów tych
można się wyłącznie odwoływać; nie jest dozwolone przypisywanie
im wartości.
- *
- Interpretowane jest jako parametry pozycyjne, począwszy od pierwszego. Gdy interpretacja pojawia się wewnątrz cudzysłowów, to parametr ten interpretowany jest jako pojedyncze słowo z wartościami każdego z parametrów rozdzielonymi pierwszym znakiem zmiennej specjalnej IFS. To znaczy, “$*” jest równoważne “$1c$2c...", gdzie c jest pierwszym znakiem wartości zmiennej IFS. Jeżeli IFS nie jest ustawione, to parametry oddzielane są spacjami. Jeśli IFS jest łańcuchem pustym, to parametry są ze sobą połączone bez rozdzielających je separatorów.
- @
- Interpretowane jako parametry pozycyjne, począwszy od pierwszego. Gdy interpretacja pojawia się wewnątrz cudzysłowów, to każdy parametr interpretowany jest jako odrębne słowo. To znaczy, “$@” jest równoważne “$1” “$2" ... Jeśli nie ma żadnych parametrów pozycyjnych, “$@” i $@ interpretowane są jako nic (tj. są usuwane).
- #
- Interpretowane jako liczba parametrów pozycyjnych, podana dziesiętnie.
- ?
- Interpretowane jako kod zakończenia ostatnio wykonanego potoku pierwszoplanowego.
- -
- Interpretowane jako bieżące flagi opcji, takie jakie zostały podane podczas wywołania, ustawione przy pomocy wbudowanego polecenia set lub ustawione przez samą powłokę (tak jak opcja -i).
- $
- Interpretowany jest jako identyfikator procesu powłoki. W podpowłoce (), interpretowany jest jako ID procesu bieżącej powłoki, nie zaś podpowłoki.
- !
- Interpretowany jako ID procesu ostatnio wykonywanego polecenia tła (polecenia asynchronicznego).
- 0
- Interpretowany jako nazwa powłoki lub skryptu powłoki. Ustawiane jest to na etapie inicjowania powłoki. Jeżeli bash wywoływany został z plikiem poleceń, to $0 ustawiane jest na nazwę tego pliku. Jeśli bash został uruchomiony z opcją -c, to $0 jest ustawiane na pierwszy argument po łańcuchu, jaki ma zostać wywołany, jeśli taki występuje. W przeciwnym wypadku, ustawiany jest na nazwę pliku użytą do wywołania bash, jaką podaje argument zerowy.
- _
- Podczas uruchamiania powłoki, ustawiany na bezwzględną nazwę powłoki lub wykonywanego skryptu powłoki przekazanego w liście argumentów. Następnie, interpretowany jest jako ostatni argument poprzedniego polecenia, po interpretacji. Ustawiany również na pełną nazwę pliku każdego polecenia wykonanego i umieszczonego w środowisku eksportowanym do tego polecenia. Podczas sprawdzania poczty parametr ten przechowuje nazwę aktualnie sprawdzanego pliku poczty.
Zmienne powłoki
Powłoka ustawia następujące zmienne:
BASH Interpretowane jako pełna nazwa pliku użyta do wywołania
tego przebiegu bash .
BASH_VERSINFO
Zmienna tablicowa tylko do odczytu, której elementy zawierają
informacje o wersji uruchomionego bash. Wartości
przypisane elementom tablicy są następujące:
- BASH_VERSINFO[0]
- Główny numer wersji, wydanie (release).
- BASH_VERSINFO[1]
- Poboczny numer wersji (version).
- BASH_VERSINFO[2]
- Poziom łat (patch level).
- BASH_VERSINFO[3]
- Wersja kompilatu (build version).
- BASH_VERSINFO[4]
- Status wydania (np. beta1).
- BASH_VERSINFO[5]
- Wartość MACHTYPE.
- BASH_VERSION
- Interpretowane jako łańcuch opisujący wersję uruchomionego bash.
- COMP_CWORD
- Indeks w ${COMP_WORDS} słowa zawierającego bieżącą pozycję kursora. Zmienna ta jest dostępna wyłącznie w funkcjach powłoki wywołanych przez usługi programowalnego uzupełniania (zobacz poniżej Programowalne uzupełnianie).
- COMP_LINE
- Bieżący wiersz poleceń. Ta zmienna jest dostępna tylko w funkcjach powłoki i poleceniach zewnętrznych wywoływanych przez usługi programowalnego uzupełniania (zobacz poniżej Programowalne uzupełnianie).
- COMP_POINT
- Indeks bieżącej pozycji kursora względem początku bieżącego polecenia. Jeżeli kursor jest na końcu bieżącego polecenia, to wartość tej zmiennej jest równa ${#COMP_LINE}. Ta zmienna jest dostępna tylko w funkcjach powłoki i poleceniach zewnętrznych wywoływanych przez usługi programowalnego uzupełniania (zobacz poniżej Programowalne uzupełnianie).
- COMP_WORDS
- Zmienna tablicowa (patrz Tablice poniżej) składająca się z pojedynczych słów z aktualnego wiersza poleceń. Zmienna ta jest dostępna wyłącznie w funkcjach powłoki wywołanych przez usługi programowalnego uzupełniania (zobacz poniżej Programowalne uzupełnianie).
- DIRSTACK
- Zmienna tablicowa (zobacz Tablice poniżej) zawierająca bieżącą zawartość stosu katalogów. Katalogi pojawiają się na stosie w kolejności, w jakiej są wyświetlane przez wbudowane dirs. Przypisanie do elementów tej zmienej tablicowej może posłużyć do zmiany katalogów już występujących na stosie, ale do dodania i usunięcia katalogów muszą być użyte wbudowane pushd i popd. Przypisanie wartości tej zmiennej nie zmieni bieżącego katalogu. Jeśli DIRSTACK jest unieważnione, to traci swe specjalne właściwości, nawet jeżeli jest następnie ponownie ustawione.
EUID Interpretowane jako efektywny identyfikator bieżącego użytkownika, inicjowane przy uruchamianiu powłoki. Zmienna ta jest tylko do odczytu.
- FUNCNAME
- Nazwa aktualnie wykonywanej funkcji powłoki. Zmienna ta istnieje tylko podczas wykonywania funkcji powłoki. Próby przypisywania jej wartości nie odnoszą efektu i zwracają kod błędu. Jeżeli FUNCNAME jest unieważnione, to traci swe specjalne właściwości, nawet jeżeli jest następnie ponownie ustawione.
GROUPS Zmienna tablicowa zawierająca listę grup, których członkiem jest bieżący użytkownik. Próby przypisywania jej wartości nie odnoszą efektu i zwracają kod błędu. Jeżeli GROUPS jest unieważnione, to traci swe specjalne właściwości, nawet jeżeli jest następnie ponownie ustawione.
- HISTCMD
- Licznik historii (indeks na liście historii poleceń) bieżącego polecenia. Jeżeli HISTCMD jest unieważnione, to traci swe specjalne właściwości, nawet jeżeli jest następnie ponownie ustawione.
- HOSTNAME
- Automatycznie ustawiane na nazwę aktualnego hosta.
- HOSTTYPE
- Automatycznie ustawiane na łańcuch unikalnie opisujący typ maszyny, na której jest wykonywany bash. Wartość domyślna zależy od systemu.
LINENO Przy każdym odwołaniu do tego parametru powłoka zastępuje jego wartość liczbą dziesiętną reprezentującą aktualny kolejny numer wiersza (poczynając od 1) skryptu lub funkcji. Nie zapewnia się, by wartość ta miała znaczenie poza skryptem bądź funkcją. Jeśli LINENO jest unieważnione, to traci swe specjalne właściwości, nawet jeżeli jest następnie ponownie ustawione.
- MACHTYPE
- Automatycznie ustawiane na łańcuch w pełni opisujący typ systemu, na którym jest wykonywany bash, w standardowym formacie GNU cpu-firma-system. Wartość domyślna zależy od systemu.
OLDPWD Poprzedni katalog roboczy ustawiony poleceniem cd.
OPTARG Wartość ostatniego, będącego opcją, argumentu przetworzonego przez wbudowane polecenie getopts (zobacz poniżej WBUDOWANE POLECENIA POWŁOKI).
OPTIND Numer (indeks) następnego argumentu, jaki ma zostać przetworzony przez wbudowane polecenie getopts (zobacz poniżej WBUDOWANE POLECENIA POWŁOKI).
OSTYPE Automatycznie ustawiane na łańcuch opisujący system operacyjny, w którym jest wykonywany bash. Wartość domyślna zależy od systemu.
- PIPESTATUS
- Zmienna tablicowa (zobacz Tablice poniżej) zwierająca listę kodów zakończenia z procesów w ostatnio wykonywanym potoku pierwszoplanowym (który może zawierać pojedyncze polecenie).
PPID Identyfikator procesu macierzystego powłoki. Zmienna ta jest tylko do odczytu.
- PWD
- Bieżący katalog roboczy, ustawiony poleceniem cd.
RANDOM Za każdym razem, gdy następuje odwołanie do tego parametru, generowana jest całkowita liczba losowa z zakresu od 0 do 32767. Sekwencję liczb losowych można zainicjować przypisując wartość do RANDOM. Jeżeli RANDOM jest unieważniona, to traci swe specjalne właściwości, nawet jeżeli jest następnie ponownie ustawione.
REPLY Ustawiona na wiersz wejścia odczytany wbudowanym poleceniem read jeśli nie podano żadnych jego argumentów.
- SECONDS
- Każdorazowo, gdy występuje odwołanie do tego parametru, zwracana jest liczba sekund, jakie upłynęły od wywołania powłoki. Jeżeli do SECONDS zostanie przypisana wartość, to wartość zwracana przez kolejne odwołania równa liczbie sekund od czasu przypisania plus przypisana wartość. Jeżeli SECONDS jest unieważnione, to traci swe specjalne właściwości, nawet jeżeli jest następnie ponownie ustawione.
- SHELLOPTS
- Lista, rozdzielonych dwukropkami, włączonych opcji powłoki. Każde słowo listy jest poprawnym argumentem opcji -o wbudowanego polecenia set (zobacz WBUDOWANE POLECENIA POWŁOKI poniżej). Opcje pojawiające się w SHELLOPTS to te, które są zgłaszane jako włączone (on) przez set -o. Jeśli zmienna ta istnieje w środowisku podczas uruchamiania bash, to każda z opcji powłoki występująca na tej liście zostanie włączona przed odczytem jakichkolwiek plików startowych. Jest to zmienna tylko do odczytu.
SHLVL Inkrementowana każdorazowo, gdy uruchamiane jest kolejne wystąpienie bash.
- UID
- Interpretowane jako identyfikator bieżącego użytkownika, inicjowane przy uruchamianiu powłoki. Zmienna ta jest tylko do odczytu.
Poniższe zmienne są używane przez powłokę. W niektórych przypadkach bash przypisuje im domyślne wartości; przypadki te są odnotowane niżej.
- BASH_ENV
- Jeżeli parametr ten jest ustawiony podczas wykonywania przez bash skryptu, to jego wartość interpretowana jest jako nazwa pliku zawierającego polecenia do zainicjowania powłoki, jak w ~/.bashrc. Wartość BASH_ENV podlega interpretacji parametrów, podstawianiu wyników poleceń i interpretacjom wyrażeń arytmetycznych przed interpretacją jej jako nazwy pliku. Zmienna PATH nie jest używana do znalezienia pliku o powstałej w ten sposób nazwie. CDPATH Ścieżka wyszukiwania dla polecenia cd. Jest to lista rozdzielonych dwukropkami katalogów, w których powłoka szuka katalogów docelowych podanych przez polecenie cd. Przykładową wartością jest ,,.:~:/usr’’. COLUMNS Używana przez polecenie wbudowane select do wyznaczenia szerokości terminala przy wypisywaniu list wyboru. Ustawiana automatycznie po otrzymaniu SIGWINCH. COMPREPLY Zmienna tablicowa, z której bash czyta możliwe uzupełnienia tworzone przez funkcję powłoki wywołaną przez usługę programowalnego uzupełniania (zobacz poniżej Programowalne uzupełnianie). FCEDIT Domyślny edytor dla wbudowanego polecenia fc. FIGNORE Lista rozdzielonych dwukropkami przyrostków, jakie mają być ignorowane podczas uzupełniania nazw plików (zobacz READLINE poniżej). Nazwa pliku o przyrostku pasującym do jednej z pozycji FIGNORE wyłączana jest z listy dopasowanych nazw plików. Przykładową wartością jest ,,.o:~’’. GLOBIGNORE Lista rozdzielonych dwukropkami wzorców definiujących zestaw nazw plików, jakie mają być ignorowane podczas rozwijania nazw plików. Jeżeli plik pasujący do wzorca rozwijającego nazwę ścieżkową pasuje również do któregoś z wzorców w GLOBIGNORE, to jest on usuwany z listy dopasowanych. HISTCONTROL Jeżeli posiada wartość ignorespace, to wiersze rozpoczynające się od znaku spacji nie są wprowadzane do listy historii. Jeśli posiada wartość ignoredups, to wiersze pasujące do ostatniego wiersza historii nie są wprowadzane. Wartość ignoreboth łączy obie te możliwości. Jeśli zmienna ta nie jest zdefiniowana lub ma wartość inną od powyższych, to wszystkie wiersze przeczytane przez analizator składni zachowywane są w liście historii, stosownie do wartości HISTIGNORE. Funkcja tej zmiennej jest zastąpiona przez HISTIGNORE. Drugi i kolejne wiersze złożonego polecenia wielowierszowego nie są sprawdzane i są dodawane do historii bez względu na wartość HISTFILE Nazwa pliku, w którym zachowywana jest historia poleceń (zobacz HISTORIA poniżej). Wartością domyślną jest ~/.bash_history. Jeśli ustawienie tej zmiennej zostanie skasowane, to historia poleceń nie będzie zachowana po zakończeniu pracy powłoki interaktywnej. HISTFILESIZE Maksymalna liczba wierszy zawartych w pliku historii. Podczas przypisywania wartości tej zmiennej, jeżeli jest to niezbędne, plik historii jest obcinany tak, by nie zawierał więcej wierszy. Domyślną wartością jest 500. Plik historii jest także obcinany do tego rozmiaru po zapisaniu go w czasie kończenia pracy przez powłokę interaktywną. HISTIGNORE Lista rozdzielonych dwukropkami wzorców służących do decydowania, jakie wiersze poleceń powinny być zachowane w liście historii. Każdy z wzorców zakotwiczony jest na początku wiersza i musi pasować do całego wiersza (nie jest dodawane żadne niejawne ‘*’). Każdy z wzorców sprawdzany jest z bieżącym wierszem po wykonaniu kontroli określonych przez HISTCONTROL. Oprócz zwykłych znaków dopasowywania wzorców używanych przez powłokę, ‘&’ dopasowuje poprzedni wiersz historii. Literał ‘&’ można uzyskać poprzedzając go odwrotnym ukośnikiem; odwrotny ukośnik jest usuwany przed próbą dopasowania. Druga i kolejne wiersze złożonego polecenia wielowierszowego nie są sprawdzane i są dodawane do historii bez względu na wartość HISTIGNORE. HISTSIZE Liczba poleceń do zapamiętania w historii poleceń (zobacz HISTORIA poniżej). Wartością domyślną jest 500. HOME Katalog domowy bieżącego użytkownika; domyślny argument wbudowanego polecenia cp. Wartość tej zmiennej wykorzystywana jest też przy wykonywaniu interpretacji tyld. HOSTFILE Zawiera nazwę pliku o tym samym formacie co /etc/hosts który pownien być czytany, gdy powłoka potrzebuje uzupełnić nazwę hosta. Listę możliwych uzupełnień można zmieniać podczas pracy powłoki. Następnym razem, gdy wykonywana jest próba uzupełnienia nazwy hosta bash dodaje zawartość nowego pliku do już istniejącej listy. Jeżeli HOSTFILE jest ustawione, ale nie posiada wartości, bash usiłuje uzyskać listę możliwych uzupełnień nazw hostów czytając /etc/hosts Gdy HOSTFILE jest unieważniane, lista hostów jest czyszczona. IFS Wewnętrzny Separator Pól (Internal Field Separator) używany do podziału na słowa po interpretacjach i dzielenia wierszy na słowa we wbudowanym poleceniu read. Jego domyślną wartością jest ,,<spacja><tabulacja><nowalinia>’’. IGNOREEOF Steruje działaniem powłoki interaktywnej przy otrzymaniu przez nią znaku EOF jako jedynego znaku wejścia. Jeżeli jest ustawiona, to jej wartość jest liczbą kolejnych znaków EOF jakie muszą być wpisane jako pierwsze znaki wiersza wprowadzania przed zakończeniem pracy przez bash. Jeśli zmienna ta istnieje, ale nie zawiera wartości numerycznej lub nie ma wartości, to wartością domyślną jest 10. Jeżeli nie istnieje, to EOF wskazuje powłoce koniec wprowadzanych danych. INPUTRC nazwa pliku startowego dla readline, unieważniająca domyślną ~/.inputrc (zobacz READLINE poniżej).
- LANG
- Służy do wyznaczania kategorii locale dla wszystkich kategorii nie wyszczególnionych przez zmienne rozpoczynające się od znaków LC_. LC_ALL Zmienna ta unieważnia wartość LANG i wszelkich innych zmiennych LC_ określających kategorie locale. LC_COLLATE Ta zmienna wyznacza kolejność (collation order) używaną przy sortowaniu wyników rozwijania nazw plików, decyduje też o zachowaniu wielu wyrażeń, klas równoważnych i sekwencje sortowania (collating sequences) w rozwijaniu nazw plików i dopasowywaniu wzorców. LC_CTYPE Ta zmienna decyduje o interpretacji znaków i zachowaniu się klas znaków wewnątrz rozwijania nazw plików i dopasowywania wzorców. LC_MESSAGES Ta zmienna decyduje o ustawieniu locale używanym do tłumaczenia ujętych w cudzysłowy łańcuchów poprzedzonych znakiem $. LC_NUMERIC Ta zmienna określa kategorię locale używaną do formatowania liczb. LINES Używana przez polecenie wbudowane select do wyznaczenia długości kolumn przy wypisywaniu list wyboru. Ustawiana automatycznie po otrzymaniu SIGWINCH. MAIL Jeżeli parametrowi temu jest przypisana nazwa pliku, a nie jest ustawiona zmienna MAILPATH, to bash informuje użytkownika o nadejściu poczty do podanego pliku. MAILCHECK Określa jak często (w sekundach) bash sprawdza pocztę. Domyślnie jest to 60 sekund. Gdy nadchodzi pora sprawdzenia poczty, powłoka wykonuje to przed wyświetleniem głównej zachęty. Jeśli zmienna ta nie jest ustawiona, to powłoka wyłącza sprawdzanie poczty. MAILPATH Lista rozdzielonych dwukropkami nazw plików, w jakich ma być sprawdzana poczta. Można podać komunikat, jaki ma zostać wyświetlony, gdy do danego pliku przybędzie wiadomość pocztowa, przez oddzielenie nazwy pliku od komunikatu znakiem ‘?’. Użyte w tekście komunikatu, $_ interpretowane jest jako nazwa bieżącego pliku pocztowego. Przykład: MAILPATH=’/var/mail/bfox?"You have mail":~/shell-mail?"$_ has mail!"’ Bash zapewnia tej zmiennej wartość domyślną, ale położenie plików pocztowych użytkownika, jakim się posługuje zależy od systemu (np. /var/mail/$USER). OPTERR Jeżeli ustawiono na wartość 1, bash wyświetla komunikaty o błędach generowanych przez wbudowane polecenie getopts (zobacz WBUDOWANE POLECENIA POWŁOKI poniżej). OPTERR inicjowane jest na 1 każdorazowo, gdy wywoływana jest powłoka lub wykonywany jest skrypt powłoki.
- PATH
- Ścieżka wyszukiwania poleceń. Jest to lista rozdzielanych dwukropkami katalogów, w których powłoka szuka poleceń (zobacz WYKONYWANIE POLECEŃ poniżej). Domyślna ścieżka zależy od systemu i ustawiana jest przez administratora instalującego bash. Powszechną wartością jest ,,/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin:.’’. POSIXLY_CORRECT Jeśli podczas uruchamiania bash w środowisku istnieje ta zmienna, to powłoka przed odczytem plików startowych wchodzi w tryb posix, tak jakby przy jej wywołaniu podano opcję --posix. Jeśli zmienna ta zostanie ustawiona podczas pracy powłoki, to bash włącza tryb posix, tak jakby zostało wykonane polecenie set -o posix. PROMPT_COMMAND Jeżeli jest ustawiona, to jej wartość jest wykonywana jwko polecenie przed każdym wysłaniem zachęty głównej. PS1 Wartość tego parametru jest interpretowana (zobacz poniżej ZACHĘTA) i używana jako główny łańcuch zachęty. Jego wartością domyślną jest ,,\s-\v\$ ‘’.
- PS2
- Wartość tego parametru jest interpretowana jak PS1 i używana jako wtórny (secondary) łańcuch zachęty. Domyślnie jest to ,,> ‘’.
- PS3
- Wartość tego parametru służy jako zachęta w poleceniu select (zobacz powyżej GRAMATYKA POWŁOKI).
- PS4
- Wartość tego parametru interpretowana jest jak PS1 i wypisywana przed każdym poleceniem wyświetlanym przez bash podczas śledzenia wykonywania. Pierwszy znak PS4, w razie potrzeby, powtarzany jest wielokrotnie, by wskazać wiele pozionów zagnieżdżenia. Domyślnie jest to ,,+ ‘’. TIMEFORMAT Wartość tego parametru służy jako łańcuch formatu określającego, jak powinna być wyświetlana informacja o czasach dla potoków poprzedzonych słowem zastrzeżonym time. Znak % rozpoczyna sekwencję specjalną, która jest interpretowana jako wartość czasu lub inna informacja. Sekwencje specjalne i ich znaczenie są następujące; nawiasy kwadratowe opisują części opcjonalne.
- %%
- Literał %. %[p][l]R Czas, jaki upłynął, w sekundach. %[p][l]U Liczba sekund, jakie CPU zużył w trybie użytkownika. %[p][l]S Liczba sekund, jakie CPU zużył w trybie systemowym.
- %P
- Procent wykorzystania CPU, liczony jako (%U + %S) / %R.
Opcjonalne p jest cyfrą określającą dokładność (precision), liczbę cyfr ułamkowych po kropce dziesiętnej. Wartość zero powoduje, że nie będzie wyświetlana ani kropka dziesiętna ani część ułamkowa. Mogą być podane co najwyżej trzy miejsca po kropce dziesiętnej; wartości p większe od 3 zmieniane są na 3. Jeżeli nie podano p, to używana jest wartość 3.
Opcjonalne Bl określa dłuższy (longer) format wyników, zawierający minuty, w postaci MMmSS.FFs. O tym, czy występuje ułamkowa część sekund decyduje wartość p.
Jeżeli zmienna ta nie jest ustawiona, to bash działa tak,
- jakby
- miała ona wartość $’\nreal\t%3lR\nuser\t%3lU\nsys%3lS’. Jeżeli jej wartością jest pusty łańcuch, to nie jest wyświetlana żadna informacja o czasach (timing). Podczas wyświetlania łańcucha formatu dodawany jest kończący znak nowej linii.
TMOUT Jeśli ustawione na wartość większą od zera, to wartość ta jest interpretowana jako liczba sekund określającą czas, przez jaki powłoka ma czekać na wprowadzenie danych po wyświetleniu zachęty. Bash kończy pracę po odczekaniu tego czasu jeśli dane nie pojawiły się.
auto_resume
Zmienna ta steruje sposobem interakcji powłoki z
użytkownikiem i sposobem kontroli zadań. Jeżeli jest
ustawiona, to jednowyrazowe polecenia proste bez
przekierowań traktowane są jako aspirujące do wznowienia
istniejącego zatrzymanego zadania. Nie pozwala się na
żadną dwuznaczność; jeśli jest więcej niż jedno zadanie
rozpoczynające się od wpisanego łańcucha, wybierane jest
zadanie, do którego ostatnio sięgano. Nazwa zatrzymanego
zadania, w tym kontekście, jest wierszem poleceń użytym
do jego uruchomienia. Jeśli posiada wartość exact, to
podany łańcuch musi pasować dokładnie do nazwy zatrzymanego
zadania; Jeśli jest ustawione na substring, to
podany łańcuch powinien pasować do podłańcucha nazwy
zatrzymanego zadania. Wartość substring zapewnia
funkcjonalność analogiczną do identyfikatora zadania %?
(zobacz STEROWANIE ZADANIAMI poniżej). Jeśli ustawiono
inną wartość, to podany łańcuch musi być przedrostkiem
nazwy zatrzymanego zadania; zapewnia to funkcjonalność
analogiczną do identyfikatora zadania %.
histchars
Dwa lub trzy znaki sterujące interpretacją historii i
podziałem na leksemy (zobacz poniżej INTERPRETACJA HISTORII).
Pierwszy znak jest znakiem interpretacjihistorii,
sygnalizującym początek interpretacji historii,
zwykle ‘!’. Drugi znak jest znakiem szybkiego podstawia_nia
, ("quick substitution"), służącym jako skrót do
powtórnego uruchamiania poprzednio wprowadzonego polecenia,
podstawiającym w poleceniu jeden łańcuch za inny.
Domyślnym znakiem szybkiego podstawiania jest ‘^’.
Opcjonalny, trzeci znak jest znakiem wskazującym, że
pozostała część wiersza, w którym występuje on jako pierwszy
znak słowa, jest komentarzem. Zwykle znakiem tym
jest ‘#’. Znak komentarza historii powoduje, że dla
pozostałych słów wiersza podstawianie historii jest
pomijane. Niekoniecznie powoduje to traktowanie reszty
wiersza jako komentarza przez analizator składni powłoki.
Tablice
Bash udostępnia zmienne tablicowe jednowymiarowe. Jako tablica
może zostać użyta dowolna zmienna; wbudowane declare jawnie
explicitly zadeklaruje tablicę. Nie ma maksymalnego rozmiaru
tablic, ani wymagania, by wszystkie jej elementy były indeksowane
czy przypisywane w sposób ciągły. Tablice indeksowane są
przy pomocy liczb całkowitych, począwszy od zera.
tablica tworzona jest automatycznie jeśli wykonywane jest przypisanie do jakiejś zmiennej przy pomocy składni nazwa[wskaźnik]=wartość. Wskaźnik tablicy traktowany jest jako wyrażenie arytmetyczne, które musi po interpretacji dać liczbę większą bądź równą zero. Chcąc jawnie zadeklarować tablicę, użyj declare -a nazwa (zobacz WBUDOWANE POLECENIA POWŁOKI poniżej). declare -a nazwa[wskaźnik] jest również akceptowane; wskaźnik jest wówczas ignorowany. Dla zmiennej tablicowej można podać atrybuty przy pomocy wbudowanych declare i readonly. Każdy z atrybutów stosowany jest do wszystkich elementów tablicy.
Przypisania do tablic wykonywane są przy pomocy przypisań złożonych postaci nazwa=(wartość1 ... wartośćn), gdzie każda wartość ma postać [wskaźnik]=łańcuch. Wymagany jest wyłącznie łańcuch. Jeżeli podano opcjonalne nawiasy i wskaźnik, to wartość jest przypisywana wskazanemu elementowi tablicy; w przeciwnym wypadku wartość przypisywana jest elementowi o indeksie o jeden większym od ostatniego elementu z przypisaną wartością. Indeksy ropoczynają się od zera. Składnia ta jest akceptowana także przez wbudowane declare. Przypisania do pojedynczych elementów tablicy można wykonywać przy pomocy składni nazwa[wskaźnik]=wartość wprowadzonej powyżej.
Do elementu tablicy można odwoływac się używając ${nazwa[wskaźnik]}. Nawiasy są wymagane, by uniknąć konfliktów z rozwijaniem nazw plików. Jeśli wskaźnikiem jest @ lub *, to powyższe słowo interpretowane jest jako wszystkie elementy nazwy. Wskaźniki te różnią się tylko wtedy, gdy słowo pojawia się w cudzysłowach. Jeśli słowo ujęto w cudzysłowy, to ${nazwa[*]} interpretowane jest jako pojedyncze słowo o wartości wszystkich elementów tablicy rozdzielonych pierwszym znakiem zmiennej specjalnej IFS, zaś ${nazwa[@]} interpretuje każdy z elementów nazwa jako odrębne słowo. Jeśli brak jest elementów tablicy, to ${nazwa[@]} interpretowane jest jako nic. Jest to zachowanie analogiczne do interpretacji parametrów specjalnych * i @ (zobacz powyżej Parametry specjalne). ${#nazwa[wskaźnik]} interpretowane jest jako długość ${nazwa[wskaźnik]}. Jeśli wskaźnikiem jest * lub @, to interpretacją jest liczba elementów w tablicy. Odwoływania się do zmiennej tablicowej bez podania wskaźnika jest równoważne odwołaniu do elementu numer zero.
Do niszczenia tablic służy wbudowane polecenie unset. unset nazwa[wskaźnik] niszczy element tablicy o indeksie wskaźnik. unset nazwa, gdzie nazwa jest tablicą, lub unset nazwa[wskaźnik], gdzie wskaźnikiem jest * lub @, usuwa całą tablicę.
Każde z wbudowanych declare, local i readonly akceptuje opcję -a do określania tablic. Wbudowane read akceptuje opcję -a do przypisywania tablicy listy słów przeczytanych ze standardowego wejścia. set i declare wyświetlają wartości tablicowe w sposób umożliwiający ponowne ich użycie w przypisaniach.
Interpretacja
Interpretacja wykonywana jest na wierszu poleceń po jego podziale na słowa. Istnieje siedem rodzajów wykonywanych interpretacji: interpretacja nawiasów (brace expansion), interpre_tacja tyld (tilde expansion), podstawianie parametrów i inter_pretacja zmiennych (parameter and variable expansion), podstaw_ienie wyników poleceń (command substitution), interpretacja wyrażeń arytmetycznych (arithmetic expansion), podział na słowa (word splitting) i rozwinięcie nazw plików (pathname expansion).
Kolejność interpretacji: interpretacja nawiasów, interpretacja tyld, podstawianie parametrów, interpretacja zmiennych i wyrażeń arytmetycznych i podstawianie wyników poleceń (wykonywane od lewej do prawej), podział na słowa i rozwijanie nazw ścieżkowych.
Na systemach potrafiących to obsłużyć, istnieje dodatkowa dostępna interpretacja: podstawienie wyników procesów (process substitution).
Tylko interpretacja nawiasów, dzielenie na słowa i rozwinięcie nazw plików mogą zmienić liczbę słów interpretowanego wyrażenia; pozostałe interpretacje rozwijają pojedyncze słowo w pojedyncze słowo. Jedynymi wyjątkami są interpretacje “$@” i “${nazwa[@]}" wyjaśnione powyżej (zobacz PARAMETRY).
Interpretacja nawiasów
Interpretacja nawiasów jest mechanizmem, przez który mogą być
generowane dowolne łańcuchy. Mechanizm ten przypomina
rozwinięcia nazw plików, ale generowane nazwy plików nie muszą
określać plików istniejących. Wzorce, mające podlegać interpretacji
nawiasów mają postać opcjonalnej preambuły, po której
występują serie separowanych przecinkami łańcuchów pomiędzy parą
nawiasów klamrowych, po których następuje opcjonalny
dopisek(postscript)
. Preambuła stanowi przedrostek dla każdego
z łańcuchów zawartych w nawiasach, a dopisek dodawany jest do
każdego łańcucha wynikowego, przy interpretacji od lewej do
prawej.
Interpretacja nawiasów może być zagnieżdżana. Wyniki każdego zinterpretowanego łańcucha nie są sortowane; zachowywana jest kolejność od lewej do prawej. Na przykład, a{d,c,b}e interpretowane jest jako ‘ade ace abe’.
Interpretacja nawiasów wykonywana jest przed innymi rodzajami interpretacji, a znaki o specjalnym znaczeniu dla innych interpretacji są zachowywane w wyniku. Jest ściśle tekstowa. Bash nie stosuje żadnej interpretacji składniowej do kontekstu interpretacji czy tekstu pomiędzy nawiasami.
Poprawnie zbudowana interpretacja nawiasów musi zawierać niecytowany nawias otwierający i zamykający i co najmniej jeden niecytowany przecinek. Wszelkie niepoprawnie skonstruowane interpretacje nawiasów są pozostawiane bez zmian. { lub , można cytować przy pomocy odwrotnego ukośnika, co chroni je przed przyjmowaniem za część wyrażenia nawiasowego. Dla uniknięcia konfliktu z interpretacją parametrów, łańcuch ${ nie jest traktowany jako spełniający warunki interpretacji nawiasów.
Typowym zastosowaniem tej konstrukcji jest skrót, wtedy gdy wspólny przedrostek łańcuchów do utworzenia jest dłuższy niż w powyżej podanym przykładzie, np.:
mkdir /usr/local/src/bash/{old,new,dist,bugs}
lub
chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}
Interpretacja nawiasów wprowadza niewielką niezgodność z historycznymi wersjami sh. sh nie traktuje nawiasów otwierających i zamykających w specjalny sposób gdy pojawiają się one jako część słowa, i zachowuje je w wyniku. W bash konsekwencją interpretacji nawiasów jest usuwanie nawiasów ze słów. Na przykład, słowo wprowadzone do sh jako plik{1,2} pojawi się w identycznej postaci na wyjściu. To samo słowo po interpretacji przez bash daje plik1 plik2. Jeżeli pożądana jest ścisła zgodność z sh, uruchom bash z opcją +B lub wyłącz interpretację nawiasów przy pomocy opcji +B polecenia set (zobacz WBUDOWANE POLECENIA POWŁOKI poniżej).
Interpretacja tyldy
Jeżeli słowo rozpoczyna się niecytowanym znakiem tyldy (‘~’), to
wszystkie znaki poprzedzające pierwszy niecytowany ukośnik (lub
wszystkie znaki, gdy nie ma ukośnika) uważane są za przedrostek
tyldy (tilde-prefix). Jeżeli żaden ze znaków w przedrostku
tyldy nie jest cytowany, to jego znaki następujące po znaku
tyldy traktowane są jako możliwa nazwa logowania (login name).
Jeśli ta nazwa logowania jest łańcuchem pustym, to tylda
zastępowana jest wartością parametru powłoki HOME. Jeżeli HOME
nie jest ustawione, to podstawiany jest za nie katalog domowy
użytkownika uruchamiającego powłokę. W przeciwnym wypadku,
przedrostek tyldy zastępowany jest katalogiem domowym skojarzonym
z określoną nazwą logowania.
Jeśli przedrostkiem tyldy jest ‘~+’, to jest on zastępowany wartością zmiennej PWDpowłoki. Jeśli przedrostkiem tyldy jest ‘~-’, to jest on zastępowany wartością zmiennej powłoki OLDPWD, jeśli jest ona ustawiona. Jeżeli występujące w przedrostku po tyldzie znaki składają się z liczby N, opcjonalnie poprzedzonej przez ‘+’ lub ‘-’, to przedrostek tyldy zastępowany jest odpowiednim elementem stosu katalogów, jaki zostałby wyświetlony przez wbudowane dirs, wywołane z przedrostkiem tyldy jako argumentem. Jeżeli w przedrostku tyldy znaki występujące po tyldzie składają się z liczby bez początkowego ‘+’ lub ‘-’, to przyjmowane jest ‘+’.
Jeśli nazwa logowania jest nieprawidłowa lub interpretacja tyldy nie powiodła się, to słowo z tyldą pozostaje niezmienione.
Każde z przypisań do zmiennej sprawdzane jest na obecność niecytowanych przedrostków tyldy występujących bezpośrednio po : lub =. W tych przypadkach również jest wykonywana jest interpretacja tyldy. Na skutek tego, można posługiwać się nazwami plików z tyldami w przypisaniach do PATH, MAILPATH i CDPATH, a powłoka przypisze zinterpretowaną wartość.
Podstawianie parametrów
Znak ‘$’ wprowadza podstawianie parametrów, podstawianie wyników
poleceń i interpretację wyrażeń arytmetycznych. Podlegająca
interpretacji nazwa parametru lub symbol mogą być ujęte w nawiasy
klamrowe, które są opcjonalne, ale służą do ochrony interpretowanej
zmiennej przed znakami, jakie występują bezpośrednio
po niej, a które mogłyby zostać zinterpretowane jako część
nazwy.
Gdy używane są nawiasy, pasującym nawiasem kończącym jest pierwszy ‘}’, nie chroniony przez odwrotny ukośnik, nie znajdujący się wewnątrz cytowanego łańcucha ani osadzony w wyrażeniu arytmetycznym, podstawieniu wyniku polecenia czy podstawieniu parametru.
${parametr}
Podstawiana jest wartość parametru. Nawiasy wymagane są
gdy parametr jest parametrem pozycyjnym o więcej niż jednej
cyfrze, lub gdy po parametrze występuje znak, który
nie powinien być interpretowany jako część jego nazwy.
Jeżeli pierwszym znakiem parametru jest wykrzyknik, to rozpoczyna on poziom zagnieżdżenia zmiennej pośredniej. Bash posługuje się wartością zmiennej utworzonej z reszty parametru jako nazwą zmiennej; zmienna ta jest następnie interpretowana a w dalszym podstawianiu używana jest otrzymana wartość zamiast wartości samego parametru. Znane jest to jako interpretacja pośrednia (indirect expansion). Wyjątkiem jest tu interpretacja ${!przedrostka*} opisana poniżej.
W każdym z poniższych przypadków, słowo podlega interpretacji tyldy, podstawianiu parametrów, podstawianiu wyników poleceń i interpretacji wyrażeń arytmetycznych. Gdy nie przeprowadza interpretacji podłańcuchów, bash sprawdza czy parametr nie jest pusty lub nieustawiony;
${parametr:-słowo}
Używa wartości domyślnych. Jeżeli parametr jest nieustawiony
lub pusty, to podstawiane jest zinterpretowane
słowo. W przeciwnym razie, podstawiana jest wartość
parametru.
${parametr:=słowo}
Przypisuje wartości domyślne. Jeżeli parametr jest
nieustawiony lub pusty, to jest mu przypisywane zinterpretowane
słowo. Następnie podstawiana jest wartość
parametru. Nie można w ten sposób przypisywać wartości
parametrom pozycyjnym ani parametrom specjalnym.
${parametr:?słowo}
Wyświetla błąd jeśli pusty lub nieustawiony. Jeżeli
parametr jest nieustawiony lub pusty, to na standardowe
wyjście błędów zapisywane jest zinterpretowane słowo (lub
komunikat o takim wyniku, jeśli brak słowa). Jeśli
powłoka nie jest interaktywna, to kończy pracę. W przeciwnym
wypadku, podstawiana jest wartość parametru.
${parametr:+słowo}
Używa wartości alternatywnej. Jeżeli parametr jest
nieustawiony lub pusty, to nic nie jest podstawiane, w
przeciwnym razie podstawiane jest zinterpretowane słowo.
${parametr:offset}
${parametr:offset:długość}
Interpretacja podłańcuchów. Interpretuje co najwyżej
długość znaków parametru poczynając od znaków określonych
przez offset. Jeśli pominięto długość, to interpretuje
podłańcuch parametru poczynając od znaku określonego
przez offset. długość i offset są wyrażeniami arytmetycznymi
(zobacz OBLICZANIE WYRAŻEŃ ARYTMETYCZNYCH
poniżej). długość musi dawać w wyniku liczbę większą
bądź równą zero. Jeżeli offset daje w wyniku liczbę
mniejszą od zera, to uzyskana wartość używana jest jako
offset liczony od końca wartości parametru. Jeżeli
parametrem jest @, to wynikiem jest długość parametrów
pozycyjnych, począwszy od offset. Jeżeli parametr jest
nazwą tablicy indeksowanej przez @ lub *, to wynikiem
jest długość członków tablicy począwszy od
${parametr[offset]}. Indeksowanie podłańcucha rozpoczyna
się od zera, chyba że używane są parametry pozycyjne,
wówczas indeksowanie zaczyna się od 1.
${!przedrostek*}
rozwija się w listę nazw tych zmiennych, których nazwy
rozpoczynają się od przedrostka, rozdzielonych od siebie
pierwszym znakiem zmiennej specjalnej IFS.
${#parametr}
Podstawiana jest długość, w znakach, wartości parametru.
Jeżeli parametrem jest * lub @, wartość podstawiana jest
liczbą parametrów pozycyjnych. Jeżeli parametr jest
nazwą tablicy o indeksowanej przez * lub @, wartość podstawiana
jest liczbą elementów tablicy.
${parametr#słowo}
${parametr##słowo}
słowo jest interpretowane tworząc wzorzec, tak samo jak
przy rozwijaniu nazw plików. Jeżeli wzorzec pasuje do
początku wartości parametru, to wynikiem interpretacji
jest zinterpretowana wartość parametru z usuniętym
najkrótszym (przypadek ,,#’’) lub najdłuższym (przypadek
,,##’’) pasującym wzorcem. Jeżeli parametrem jest @ lub
*, to operacja usunięcia wzorca stosowana jest do każdego
po kolei parametru pozycyjnego, zaś wynikiem interpretacji
jest powstała lista. Jeśli parametr jest zmienną
tablicową indeksowaną przez @ lub *, operacja usuwania
wzorca jest przeprowadzana po kolei na każdym elemencie
tablicy, zaś wynikiem interpretacji jest powstała lista.
${parametr%słowo}
${parametr%%słowo}
słowo jest interpretowane tworząc wzorzec, tak samo jak
przy rozwijaniu nazw plików. Jeżeli wzorzec pasuje do
końcowej części zinterpretowanego parametru, wynikiem
interpretacji jest zinterpretowana wartość parametru z
usuniętym najkrótszym (przypadek ,,%’’) lub najdłuższym
(przypadek ,,%%’’) pasującym wzorcem. Jeżeli parametrem
jest @ lub *, to operacja usunięcia wzorca stosowana jest
do każdego po kolei parametru pozycyjnego, zaś wynikiem
interpretacji jest powstała lista. Jeśli parametr jest
zmienną tablicową indeksowaną przez @ lub *, operacja
usuwania wzorca jest przeprowadzana po kolei na każdym
elemencie tablicy, zaś wynikiem interpretacji jest powstała
lista.
${parametr/wzorzec/łańcuch}
${parametr//wzorzec/łańcuch}
wzorzec jest interpretowany tworząc wzorzec, tak samo jak
przy rozwijaniu nazw plików. Interpretowany jest
parametr, a najdłuższe dopasowanie wzorca do jego zinterpretowanej
wartości zastępowane jest łańcuchem. W pierwszej
postaci, zastępowane jest tylko pierwsze dopasowanie.
Druga postać powoduje zastąpienie wszystkich
dopasowań wzorca łańcuchem. Jeżeli wzorzec rozpoczyna
się od #, to musi pasować do początku zinterpretowanej
wartości parametru. Jeżeli pattern rozpoczyna się od %,
to musi pasować do końca zinterpretowanej wartości
parametru. Jeśli łańcuch jest pusty, to dopasowania
wzorca są usuwane a / występujące po wzorcu można
pominąć. Jeżeli parametrem jest @ lub *, to operacja
podstawiania stosowana jest do każdego po kolei parametru
pozycyjnego, zaś wynikiem interpretacji jest powstała
lista. Jeśli parametr jest zmienną tablicową indeksowaną
przez @ lub *, operacja podstawiania jest przeprowadzana
po kolei na każdym elemencie tablicy, zaś wynikiem interpretacji
jest powstała lista.
Podstawianie wyników poleceń
Podstawianie wyników poleceń (command substitution) pozwala na
zastępowanie nazwy polecenia wyjściem (wynikiem) z jego
działania. Posiada dwie postaci:
$(polecenie)
lub
‘polecenie‘
Bash wykonuje interpretację wykonując polecenie i zastępując podstawiane polecenie jego utworzonym standardowym wyjściem, z usuniętymi końcowymi znakami nowej linii. Zawarte wewnątrz wyniku znaki nowej linii nie są usuwane, ale nogą być usunięte podczas podziału na słowa. Podstawienie wyniku polecenia $(cat plik) można zastąpić równoważnym, ale szybszym $(< plik).
Gdy używane jest podstawianie w starym stylu, z użyciem odwrotnych apostrofów, odwrotny ukośnik zachowuje swe znaczenie dosłowne, z wyjątkiem przypadków, gdy poprzedza on $, ‘ lub \. Pierwszy odwrotny apostrof (‘) nie poprzedzony odwrotnym ukośnikiem kończy podstawianie wyniku polecenia. Podczas posługiwania się postacią $(polecenie), polecenie tworzą wszystkie znaki pomiędzy nawiasami; żaden nie jest traktowany specjalnie.
Podstawianie wyników poleceń może być zagnieżdżane. W celu zagnieżdżenia postaci z odwrotnymi apostrofami zabezpiecz wewnętrzne przed interpretacją używając odwrotnych ukośników.
Jeżeli podstawianie pojawia się wewnątrz cudzysłowów, to na wynikach nie jest przeprowadzany podział na słowa ani rozwinięcie nazw plików.
Interpretacja wyrażeń arytmetycznych
Interpretacja wyrażeń arytmetycznych pozwala na obliczanie
wyrażeń arytmetycznych i podstawianie wyniku. Format interpretacji
arytmetycznej:
$((wyrażenie))
wyrażenie traktowane jest tak, jakby było ujęte w cudzysłowy, ale cudzysłów wewnątrz nawiasów nie jest traktowany specjalnie. Wszystkie tokeny w wyrażeniu podlegają interpretacji parametrów, interpretacji łańcuchów, podstawianiu wyników poleceń i usuwaniu cudzysłowów.
Interpretacja przeprowadzana jest zgodnie z zasadami podanymi poniżej w sekcji OBLICZENIA ARYTMETYCZNE. Jeżeli wyrażenie jest nieprawidłowe, bash wypisuje komunikat o niepowodzeniu i nie występuje żadne podstawienie.
Podstawianie wyników procesów (Process substitution) Podstawianie wyników procesów obsługiwane jest na systemach obsługujących potoki nazwane (FIFO) lub metodę /dev/fd nazywania otwartych plików. Przybiera ono postać <(lista) lub >(lista). Proces lista uruchamiany jest z wejściem i wyjściem podłączonym do FIFO lub jakiegoś pliku w /dev/fd. W wyniku interpretacji nazwa tego pliku przesyłana jest jako argument bieżącego polecenia. Jeżeli posłużono się postacią >(lista), zapis do pliku będzie stanowić wejście dla listy. Jeżeli posłużono się postacią <(lista), plik przekazany jako argument powinien zostać odczytany w celu uzyskania wyjścia listy.
Gdy jest to możliwe, podstawianie wyników procesu wykonywane jest równocześnie z interpretacją parametrów i zmiennych, podstawianiem wyników poleceń i interpretacją wyrażeń arytmetycznych.
Podział na słowa
Powłoka przeszukuje wyniki interpretacji parametrów, podstawiania
poleceń i interpretacji wyrażeń arytmetycznych, które nie
pojawiają się wewnątrz cudzysłowów, w celu przeprowadzenia
podziału na słowa.
Powłoka traktuje każdy znak IFS jak separator i w miejscu ich występowania dzieli na słowa wyniki innych interpretacji. Jeżeli IFS nie jest ustawione lub jego wartością jest dokładnie <spacja><tab><nowalinia>, wartość domyślna, to do podziału na słowa służy dowolna sekwencja znaków IFS. Jeżeli IFS posiada wartość inną niż domyślna, to sekwencje białych znaków spacji i tabulacji są ignorowane na początku i końcu słowa, dopóki biały znak występuje w wartości IFS (biały znak IFS). Inne znaki w IFS nie będące białymi znakami IFS, łącznie z dowolnymi przyległymi białymi znakami IFS, ograniczają pole. Sekwencja białych znaków IFS jest również traktowana jako ogranicznik. Jeśli IFS jest łańcuchem pustym, to nie występuje podział na słowa.
Jawnie puste argumenty ("” lub ‘’) są pozostawiane. Niecytowane argumenty puste niejawnie, wynikające z interpretacji parametrów nie posiadających wartości, są usuwane. Jeśli parametr bez wartości interpretowany jest wewnątrz cudzysłowów, to wynikiem jest argument pusty i jest on zachowywany.
Zauważ, że jeśli nie występuje interpretacja, to nie jest również wykonywany podział.
Rozwijanie nazw plików (Pathname Expansion) Po podziale na słowa, jeżeli nie ustawiona została opcja -f, przegląda każde słowo w poszukiwaniu znaków *, ? i [. Jeśli pojawia się jeden z nich, to słowo uważane jest za wzorzec i zastępowane jest posortowaną alfabetycznie listą nazw plików pasujących do wzorca. Jeżeli nie znaleziono pasujących nazw a wyłączona jest opcja nullglob powłoki, słowo pozostawiane jest bez zmian. Jeżeli nullglob jest włączone, a nie znaleziono dopasowań, to słowo jest usuwane. Jeżeli włączona jest opcja nocaseglob powłoki, to dopasowywanie wzorca wykonywane jest bez zwracania uwagi na wielkość liter. Gdy do rozwinięcia nazw plików używa się wzorca, to znak ,,.’’ na początku nazwy lub bezpośrednio po ukośniku musi zostać dopasowany dosłownie, chyba że ustawiono opcję dotglob powłoki. Podczas dopasowywania nazwy pliku znak ukośnika musi zawsze zostać dopasowany dosłownie. W pozostałych przypadkach, kropka ,,.’’ nie jest traktowana specjalnie. Zobacz poniżej opis shopt w sekcji WBUDOWANE POLECENIA POWŁOKI, gdzie znajdziesz omówienie opcji powłoki nocaseglob, nullglob i dotglob.
Do ograniczenia zestawu nazw plików pasujących do wzorca można wykorzystać zmienną powłoki GLOBIGNORE. Jeżeli GLOBIGNORE jest ustawione, każda z pasujących nazw plików pasująca również do jednego ze wzorców w GLOBIGNORE jest usuwana z listy dopasowań. Nazwy plików ,,.’’ i ,,..’’ są zawsze ignorowane, nawet gdy GLOBIGNORE jest ustawione. Jednakże, ustawienie GLOBIGNORE skutkuje włączeniem opcji dotglob, tak że będą dopasowywane wszystkie inne nazwy plików rozpoczynające się od kropki. W celu uzyskania starego zachowania, ignorującego nazwy zaczynające się ,,.’’, jednym ze wzorców w GLOBIGNORE należy zrobić ,,.*’’ . Opcja dotglob jest wyłączana, gdy kasowane jest GLOBIGNORE .
Dopasowanie wzorca
Każdy znak pojawiający się we wzorcu, różnych od specjalnych znaków wzorca opisanych poniżej, dopasowuje sam siebie. Znak NUL nie może wystąpić we wzorcu. Specjalne znaki wzorca muszą być cytowane, jeżeli mają być dopasowane dosłownie.
Specjalne znaki wzorca mają następujące znaczenie:
- *
- Dopasowuje dowolny łańcuch, łącznie z łańcuchem pustym.
- ?
- Dopasowuje dowolny pojedynczy znak. [...] Dopasowuje jeden z ujętych w nawiasy kwadratowe znaków. Para znaków rozdzielona myślnikiem opisuje wyrażenie zakresu; dopasowywany jest nim dowolny znak, który przy sortowaniu leksykalnym, z zastosowaniem bieżącego ustawienia locale i zestawu znaków, wypada między tymi dwoma znakami, włącznie z nimi. Jeżeli pierwszym znakiem występującym po [ jest ! lub ^, to dopasowywany jest dowolny znak nie zawarty w nawiasach. Kolejność sortowania znaków w wyrażeniach zakresu określona jest przez bieżące ustawienie locale i wartość zmiennej środowiskowej LC_COLLATE, jeśli istnieje. Znak - można dopasować włączając go jako pierwszy lub ostatni ze znaków zestawu. Znak ] można dopasować włączając go jako pierwszy znak zestawu.
Wewnątrz [ i ], można podawać klasy znaków (character
classes), używając składni [:klasa:], gdzie klasa jest
jedną z poniższych klas zdefiniowanych w standardzie
POSIX.2:
alnum alpha ascii blank cntrl digit graph lower print
punct space upper xdigit
Klasa znaków dopasowuje dowolny znak należący do tej
klasy.
Wewnątrz [ i ], można podać klasę równoważności, używając składni [=z=], która dopasowuje wszystkie znaki o tej samej wadze sortowania (zdefiniowaną w bieżącym ustawieniu locale) co znak z.
Wewnątrz [ i ], składnia [.symbol.] dopasowuje symbol sortowania (collating symbol) symbol.
Jeżeli przy pomocy wbudowanego shopt włączono opcję extglob, to rozpoznawane jest kilka rozszerzonych operatorów dopasowania wzorców. W poniższym opisie, lista-wzorców jest listą złożoną z jednego lub więcej wzorców rozdzielonych znakiem |. Wzorce złożone można konstruować przy pomocy jednego lub więcej poniższych pod-wzorców:
?(lista-wzorców)
Dopasowuje zero lub jedno wystąpienie zadanych
wzorców
*(lista-wzorców)
Dopasowuje zero lub więcej wystąpień zadanych
wzorców
+(lista-wzorców)
Dopasowuje jedno lub więcej wystąpień zadanych
wzorców
@(lista-wzorców)
Dopasowuje dokładnie jeden z zadanych wzorców
!(lista-wzorców)
Dopasowuje cokolwiek prócz jednego z zadanych
wzorców
Usunięcie cytowań
Po poprzednich interpretacjach, wszystkie niecytowane
wystąpienia znaków \, ‘ i “, które nie wynikły z jednej z
powyższych interpretacji, są usuwane.
Przekierowanie
Przed wykonaniem polecenia, jego wejście i wyjście mogą zostać przekierowane przy pomocy specjalnej notacji interpretowanej przez powłokę. Przekierowań można też używać do otwierania i zamykania plików dla środowiska wykonywania bieżącej powłoki. Poniższe operatory przekierowania mogą występować przed lub pojawiać się gdziekolwiek wewnątrz polecenia prostego lub występować po poleceniu. Przekierowania przetwarzane są w kolejności występowania, od lewej do prawej.
W poniższych opisach, jeśli pominięto deskryptor pliku, a pierwszym znakiem operatora przekierowania jest <, przekierowanie dotyczy standardowego wejścia (deskryptor pliku 0). Jeżeli pierwszym znakiem operatora przekierowania jest >, przekierowanie dotyczy standardowego wyjścia (deskryptor pliku 1).
Słowo następujące do operatorze przekierowania w poniższych opisach podlega, chyba że podano inaczej, interpretacji nawiasów, interpretacji tyldy, interpretacji parametrów, podstawianiu wyników poleceń, interpretacji wyrażeń arytmetycznych, usuwaniu cytowań, rozwijaniu nazw plików i podziałowi na słowa. Jeśli zinterpretowane zostanie jako więcej niż jedno słowo, to bash zgłosi błąd.
Zauważ, że kolejność przekierowań jest znacząca. Na przykład, polecenie
ls > dirlist 2>&1
kieruje zarówno standardowe wyjście jak i wyjście diagnostyczne (stderr) do pliku dirlist, podczas gdy polecenie
ls 2>&1 > dirlist
kieruje tylko standardowe wyjście do pliku dirlist, gdyż wyjście błędów zostało zduplikowane jako standardowe wyjście przed przekierowaniem wyjścia do dirlist.
Bash obsługuje kilka nazw plików w sposób specjalny gdy są one użyte w przekierowaniach. Opisano to w poniższej tablicy:
/dev/fd/fd
Jeżeli fd jest poprawną liczbą całkowitą, to duplikowany
jest deskryptor pliku fd.
/dev/stdin
Duplikowany jest deskryptor pliku 0.
/dev/stdout
Duplikowany jest deskryptor pliku 1.
/dev/stderr
Duplikowany jest deskryptor pliku 2.
/dev/tcp/host/port
Jeśli host jest poprawną nazwą hosta lub adresem
internetowym, a port jest liczbą całkowitą
określającą numer portu lub nazwą usługi, to bash
usiłuje otworzyć połączenie TCP do odpowiedniego
gniazda.
/dev/udp/host/port
Jeśli host jest poprawną nazwą hosta lub adresem
internetowym, a port jest liczbą całkowitą
określającą numer portu lub nazwą usługi, to bash
usiłuje otworzyć połączenie UDP do odpowiedniego
gniazda.
Nieudane otwarcie lub utworzenie pliku powoduje niepowodzenie przekierowania.
Przekierowanie wejścia
Przekierowanie wejścia powoduje otwarcie do odczytu pliku,
którego nazwa wynika z interpretacji słowa. Odczyt będzie
wykonywany z deskryptora pliku n lub standardowego wejścia
(zerowy deskryptor pliku) jeśli nie podano n.
Ogólny format przekierowania wejścia:
[n]<słowo
Przekierowanie wyjścia
Przekierowanie wyjścia powoduje otwarcie do zapisu pliku,
którego nazwa wynika z interpretacji słowa. Zapis będzie
wykonywany z deskryptora pliku n lub standardowego wyjścia
(deskryptor pliku 1) jeśli nie podano n. Jeżeli plik nie istnieje
jest tworzony; jeżeli istnieje obcinany jest do rozmiaru
zerowego.
Ogólny format przekierowania wyjścia:
[n]>słowo
Jeżeli operatorem przekierowania jest >, a została włączona opcja noclobber wbudowanego polecenie set, to przekierowanie nie powiedzie się jeżeli plik o nazwie wynikającej z interpretacji słowa istnieje i jest zwykłym plikiem. Jeżeli operatorem przekierowania jest >|, albo operatorem jest > przy niewłączonej opcji noclobber, to wykonywana jest próba przekierowania, nawet jeśli plik słowo istnieje.
Dołączanie przekierowanego wyjścia
Przekierowanie wyjścia w ten sposób powoduje, że plik o nazwie
wynikającej z interpretacji słowa zostanie otwarty do dołączania
(append). Dołączanie będzie wykonywane z deskryptora pliku n
lub standardowego wyjścia (deskryptor pliku 1) jeśli nie podano
n. Jeżeli plik nie istnieje jest tworzony.
Ogólny format dołączania wyjścia:
[n]>>słowo
Przekierowanie standardowego wyjścia i wyjścia błędów Bash pozwala, przy pomocy tej konstrukcji, przekierować standardowe wyjście (deskryptor pliku 1) i standardowe wyjście błędów (deskryptor plików 2) do pliku, którego nazwą jest zinterpretowane słowo.
Istnieją dwie postaci takiego przekierowania:
&>słowo
i
>&słowo
Spośród nich, zalecaną jest pierwsza forma. Jest ona semantycznie równoważna
>słowo 2>&1
Dokumenty włączone (Here Documents)
Ten typ przekierowania instruuje powłokę, by czytała wejście z
bieżącego źródła aż do napotkania wiersza zawierającego tylko
słowo (bez żadnych kończących odstępów). Wszystkie wiersze
przeczytane do tego momentu są następnie używane jako standardowe
wejście polecenia.
Format dokumentów włączonych jest następujący:
<<[-]słowo
dokument włączony
ogranicznik
Na słowie nie jest wykonywana interpretacja parametrów, podstawiania wyników poleceń, rozwijanie nazw plików ani interpretacja wyrażeń arytmetycznych. Jeżeli jakieś znaki w słowie są cytowane, to ogranicznik jest wynikiem usunięcia cytowań ze słowa, a wiersze w dokumencie włączonym nie są interpretowane. Jeżeli słowo nie jest cytowane, wszystkie wiersze dokumentu włączonego podlegają interpretacji parametrów, podstawianiu poleceń i interpretacji wyrażeń arytmetycznych. W tym ostatnim przypadku, sekwencja \<nowalinia> jest ignorowana, a do cytowania znaków \, $ i ‘ musi być użyte \.
Jeżeli operatorem przekierowania jest <<-, to wszystkie początkowe znaki tabulacji są obcinane z wierszy wejściowych i wiersza zawierającego ogranicznik. Pozwala to na ustawienie naturalnych wcięć dla dokumentów włączonych w skryptach powłoki.
Powielanie deskryptorów plików
Operator przekierowania
[n]<&słowo
służy do powielania deskryptorów plików wejściowych. Jeżeli słowo zinterpretowane zostanie jako jedna lub więcej cyfr, to deskryptor pliku oznaczony przez n czyniony jest kopią tego deskryptora. Jeżeli cyfry w słowie nie określają otwartego dla wejścia deskryptora, pojawia się błąd przekierowania. Jeżeli słowo zinterpretowane jest jako -, deskryptor pliku n jest zamykany. Jeżeli n nie zostało określone, to stosowane jest standardowe wejście (deskryptor pliku 0).
Operator
[n]>&słowo
podobnie, służy do powielania deskryptorów standardowego wyjścia. Jeżeli nie określono n, stosowane jest standardowe wyjście (deskryptor pliku 1). Jeżeli cyfry w słowie nie określają deskryptora pliku otwartego do wyjścia, pojawia się błąd przekierowania. W przypadku specjalnym, jeżeli pominięto n, a słowo nie jest interpretowane jako jedna lub więcej cyfr, to przekierowywane są standardowe wyjście i standardowe wyjście błędów, jak opisano poprzednio.
Otwieranie deskryptorów plików do odczytu i zapisu Operator przekierowania
[n]<>słowo
powoduje, że plik o nazwie wynikłej z interpretacji słowa zostanie otwarty do odczytu i zapisu. Odczyt i zapis będą wykonywane z deskryptora pliku n lub standardowego wejścia (deskryptor pliku 0) jeśli nie podano n. Jeżeli plik nie istnieje jest tworzony.
Aliasy
Aliasy (czyli synonimy) pozwalają na zastąpienie słowa łańcuchem, gdy zostanie ono użyte jako pierwsze słowo w poleceniu prostym. Powłoka utrzymuje listę aliasów, które mogą być ustawiane i unieważniane przy pomocy wbudowanych poleceń alias i unalias (zobacz poniżej WBUDOWANE POLECENIA POWŁOKI). Dla pierwszego słowa każdego polecenia, jeśli nie jest cytowane, następuje sprawdzenie, czy posiada ono alias. Jeżeli tak, to słowo to jest zastępowane tekstem aliasu. Nazwa aliasu i zastępujący ja tekst mogą zawierać dowolne poprawne wejście powłoki, łącznie z metaznakami podanymi powyżej, z wyjątkiem tego, że nazwy aliasów nie mogą zawierać znaku równości =. Pierwsze słowo tekstu zastępującego jest z kolei sprawdzane na aliasy, ale słowo identyczne z interpretowanym właśnie aliasem nie jest interpretowane powtórnie. Oznacza to, że można mieć alias ls do ls -F, na przykład, a bash nie będzie usiłował rekurencyjnie interpretować zastępującego tekstu. jeżeli ostatnim znakiem wartości aliasu jest odstęp, to następne słowo polecenia występujące po aliasie ma również sprawdzaną interpretację aliasów.
Aliasy są tworzone i pokazywane poleceniem alias, a usuwane poleceniem unalias.
Nie ma żadnego mechanizmu posługiwania się argumentami w tekście zastępującym. Jeśli potrzebne są argumenty, powinna zostać użyta funkcja powłoki (zobacz poniżej FUNKCJE).
Aliasy nie są interpretowane, gdy powłoka nie jest interaktywna, chyba że ustawiono opcję powłoki expand_aliases przy pomocy shopt (zobacz opis shopt w sekcji WBUDOWANE POLECENIA POWŁOKI poniżej).
Reguły dotyczące definiowania i używania aliasów są nieco zagmatwane. Bash zawsze czyta co najmniej jeden pełny wiersz z wejścia przed wykonaniem jakichkolwiek poleceń tego wiersza. Aliasy interpretowane są w czasie odczytu polecenia, nie podczas jego wykonywania. Z tego powodu, definicja aliasu występująca w tym samym wierszu, co inne polecenie nie zadziała aż do przeczytania następnego wiersza wejścia. Na polecenia występujące po definicji aliasu, w tym samym wierszu, nowy alias nie ma wpływu. Zachowanie to ujawnia się także podczas wykonywania funkcji. Aliasy interpretowane są w czasie odczytu definicji funkcji, nie zaś podczas jej wykonywania, gdyż sama definicja funkcji stanowi polecenie złożone. W skutek tego aliasy zdefiniowane w funkcji nie są dostępne, aż do chwili po wykonaniu funkcji. Dla bezpieczeństwa, zawsze umieszczaj definicje aliasów w odrębnym wierszu i nie używaj alias w poleceniach złożonych.
Prawie w każdym zastosowaniu aliasy są wyparte przez funkcje powłoki.
Funkcje
Punkcja powłoki, zdefiniowana jak opisano powyżej, w sekcji GRAMATYKA POWŁOKI, przechowuje szereg poleceń do późniejszego wykonania. Gdy nazwa funkcji powłoki używana jest jako nazwa polecenia prostego, wykonywana jest lista poleceń związanych z tą nazwą funkcji. Funkcje wykonywane są w kontekście bieżącej powłoki; do ich interpretacji nie jest tworzony żaden nowy proces (zauważ różnicę w stosunku do wykonania skryptu powłoki). Podczas wykonywania funkcji, przekazane jej argumenty stają się parametrami pozycyjnymi. Aktualizowany jest specjalny parametr #, tak by odzwierciedlał zmianę. Parametr pozycyjny 0 nie jest zmieniany. Zmienna FUNCNAME podczas wykonywania funkcji ustawiana jest na jej nazwę. Wszystkie inne aspekty środowiska wykonywania powłoki są identyczne między funkcją i jej wywołującym, z wyjątkiem tego, że nie jest dziedziczona pułapka (trap) DEBUG (zobacz opis wbudowanego trap poniżej, w sekcji WBUDOWANE POLECENIA POWŁOKI ).
Zmienne lokalne dla funkcji mogą być deklarowane przy pomocy wbudowanego polecenia local. Zwykle zmienne i ich wartości są wspólne dla funkcji i jej wołającego.
Jeżeli w funkcji wywoływane jest wbudowane polecenie return, funkcja kończy działanie i wykonywanie wznawiane jest od następnego polecenia po wywołaniu funkcji. Gdy funkcja kończy działanie, parametrom pozycyjnym i parametrowi specjalnemu # przywracane są wartości, jakie posiadały one przed wykonaniem funkcji.
Listę nazw i definicji funkcji można uzyskać przy pomocy opcji -f wbudowanych poleceń declare lub typeset. Opcja -F poleceń declare lub typeset podaje same nazwy funkcji. Funkcje można eksportować, tak że będą one automatycznie zdefiniowane w podpowłokach. Wykonuje się to przy pomocy opcji -f wbudowanego polecenia export.
Funkcje mogą być rekurencyjne. Nie ma narzuconego ograniczenia na liczbę rekurencyjnych wywołań.
Obliczanie Wyrażeń Arytmetycznych
Powłoka pozwala, pod pewnymi warunkami, na obliczanie wartości wyrażeń arytmetycznych (zobacz wbudowane polecenie let i Interpretacja wyrażeń arytmetycznych). Obliczenia wykonywane są na długich liczbach całkowitych (long integer), bez kontroli przepełnienia (overflow), mimo iż dzielenie przez 0 jest przechwytywane i oznaczane jako błąd. Operatory i ich priorytety oraz sposób ich dołączania są takie same jak w języku C. Poniższa lista operatorów pogrupowana jest w poziomy operatorów o jednakowym priorytecie. Poziomy podano w kolejności malejącego priorytetu.
id++ id-post-inkrementacja
i post-dekrementacja zmiennej
++id --id
pre-inkrementacja i pre-dekrementacja zmiennej
- - +
- jednoargumentowy minus i plus
- ! ~
- negacja logiczna i bitowa
- **
- potęgowanie * / % mnożenie, dzielenie, reszta z dzielenia
- + -
- dodawanie, odejmowanie << >> lewo i prawostronne przesunięcie bitowe <= >= < > porównanie == != równości i nierówność
- &
- bitowa koniunkcja (AND)
- ^
- bitowa alternatywa wyłączna (XOR)
- |
- bitowa alternatywa (OR)
- &&
- logiczna koniunkcja (AND)
- ||
- logiczna alternatywa (OR) wyraż?wyraż:wyraż obliczenie warunkowe (conditional evaluation) = *= /= %= += -= <<= >>= &= ^= |= przypisanie wyraż1 , wyraż2 przecinek
Jako operandy dozwolone są zmienne powłoki; interpretacja parametrów przeprowadzana jest przed obliczeniem wyrażenia. Wewnątrz wyrażenia, do zmiennych powłoki można się też odwoływać przez nazwę, bez użycia składni interpretacji parametrów. Gdy wystąpi odwołanie się do zmiennej, jej wartość obliczana jest jako wyrażenie arytmetyczne. Zmienna powłoki nie musi mieć włączonego atrybutu liczby całkowitej by mogła być użyta w wyrażeniu.
Stałe z początkowym 0 interpretowane są jako liczby ósemkowe. Początkowe 0x lub 0X oznacza liczbę szesnastkową. W pozostałych przypadkach liczby mają postać [podstawa#]n, gdzie podstawajest liczbą dziesiętną pomiędzy 2 a 64 reprezentującą podstawę układu pozycyjnego, zaś n liczbą w układzie o tej podstawie. Jeśli pominięto podstawa#, to używana jest podstawa 10. Cyfry większe niż 9 reprezentowane są przez małe litery, wielkie litery, @ i _, w tej kolejności. Jeżeli podstawa jest mniejsza bądź równa 36, to do zapisu liczb pomiędzy 10 a 35 można używać zamiennie małych i wielkich liter.
Operatory interpretowane są w kolejności priorytetu. Podwyrażenia w nawiasach obliczane są jako pierwsze i mogą unieważnić podane wyżej reguły priorytetów.
WyraŻenia Warunkowe
Wyrażenia warunkowe używane są przez polecenie złożone [[ oraz polecenia wbudowane test i [ do testowania atrybutów pliku i wykonywania porównań łańcuchowych i arytmetycznych. Wyrażenia złożone są z poniższych jedno- i dwuargumentowych składowych. Jeśli któryś z argumentów plikowych jednej z składowych jest w postaci /dev/fd/n, to sprawdzany jest deskryptor pliku n. Jeżeli argument plik którejś składowej jest jednym z /dev/stdin, /dev/stdout lub /dev/stderr, to sprawdzany jest, odpowiednio, deskryptor 0, 1 lub 2.
- -a plik
- Prawda jeśli plik istnieje. -b plik Prawda jeśli plik istnieje i jest blokowym plikiem specjalnym. -c plik Prawda jeśli plik istnieje i jest znakowym plikiem specjalnym. -d plik Prawda jeśli plik istnieje jest katalogiem. -e plik Prawda jeśli plik istnieje. -f plik Prawda jeśli plik istnieje i jest plikiem zwykłym. -g plik Prawda jeśli plik istnieje i ma ustawiony bit set-groupid. -h plik Prawda jeśli plik istnieje i jest dowiązaniem symbolicznym. -k plik Prawda jeśli plik istnieje i ma ustawiony bit ochrony (sticky bit). -p plik Prawda jeśli plik istnieje i jest potokiem nazwanym (FIFO). -r plik Prawda jeśli plik istnieje i daje się czytać. -s plik Prawda jeśli plik istnieje i ma rozmiar większy niż zero. -t fd Prawda jeśli deskryptor pliku fd jest otwarty i odnosi się do terminala. -u plik Prawda jeśli plik istnieje i ma ustawiony bit set-userid. -w plik Prawda jeśli plik istnieje i daje się doń zapisać. -x plik Prawda jeśli plik istnieje i jest wykonywalny. -O plik Prawda jeśli plik istnieje i jego właścicielem jest efektywny id użytkownika. -G plik Prawda jeśli plik istnieje i jego właścicielem jest efektywny id grupy. -L plik Prawda jeśli plik istnieje i jest dowiązaniem symbolicznym. -S plik Prawda jeśli plik istnieje i jest gniazdem. -N plik Prawda jeśli plik istnieje i być zmieniany od czasu ostatniego jego odczytu. plik1 -nt plik2 Prawda jeśli plik1 jest nowszy (według daty modyfikacji) od pliku2. plik1 -ot plik2 Prawda jeśli plik1 jest starszy niż plik2. plik1 -ef plik2 Prawda jeśli plik1 i plik2 mają ten sam numer urządzenia i i-węzła. -o nazwa_opcji Prawda jeśli opcja powłoki nazwa_opcji jest włączona. Zobacz zestawienie opcji w opisie opcji -o wbudowanego set, poniżej. -z łańcuch Prawda jeśli długość łańcucha wynosi zero. -n łańcuch łańcuch Prawda jeśli łańcuch ma długość niezerową. łańcuch1 == łańcuch2 Prawda jeśli łańcuchy są równe. Zamiast == można użyć =. łańcuch1 != łańcuch2 Prawda jeśli łańcuchy nie są równe. łańcuch1 < łańcuch2 Prawda jeśli łańcuch1 przy sortowaniu występowałby przed łańcuchem2 według bieżącego ustawienia locale. łańcuch1 > łańcuch2 Prawda jeśli łańcuch1 przy sortowaniu występowałby po łańcuchu2 według bieżącego ustawienia locale. arg1 OP arg2 OP jest jednym z -eq, -ne, -lt, -le, -gt lub -ge. Te arytmetyczne operatory dwuargumentowe zwracają prawdę jeśli arg1 jest odpowiednio równe (eq), nie równe (ne), mniejsze niż (lt), mniejsze bądź równe (le), większe niż (gt) lub większe bądź równe (ge) arg2. Arg1 i arg2 mogą być dodatnimi lub ujemnymi liczbami całkowitymi.
Interpretacja Poleceń Prostych
Gdy wykonywane jest polecenie proste, powłoka wykonuje następujące interpretacje, przypisania i przekierowania, od lewej do prawej.
1. Słowa oznaczone przez analizator składni jako przypisania zmiennych (poprzedzające nazwę polecenia) i przekierowania zachowywane są do późniejszego przetworzenia.
2. Słowa, nie będące przypisaniami zmiennych ani przekierowaniami są interpretowane. Jeżeli po interpretacji pozostaną jakieś słowa, to pierwsze z nich przyjmowane jest za nazwę polecenia a pozostałe za argumenty.
3. Wykonywane są przekierowania, jak opisano powyżej w sekcji PRZEKIEROWANIE.
4. W każdym przypisaniu zmiennej tekst po znaku równości = podlega interpretacji tyldy, interpretacji parametrów, podstawianiu wyników poleceń, interpretacji wyrażeń arytmetycznych i usuwaniu cudzysłowów, zanim zostanie przypisany do zmiennej.
Jeżeli nie otrzymano żadnej nazwy polecenia, to przypisania zmienncyh dotyczą środowiska aktualnej powłoki. W przeciwnim razie, zmienne są dodawane do środowiska wykonywanego polecenia i nie mają wpływu na środowisko bieżącej powłoki. jeżeli któreś z przypisań usiłuje nadać wartość zmiennej read-only, pojawia się błąd, a polecenie kończy pracę z niezerowym kodem.
Jeżeli nie otrzymano żadnej nazwy polecenia, wykonywane są przekierowania, ale nie mają one wpływu na bieżące środowisko powłoki. Błąd przekierowania powoduje, że polecenie kończy pracę z niezerowym kodem.
Jeżeli po interpretacji istnieje nazwa polecenia, to wykonywanie odbywa się jak opisano poniżej. W przeciwnym wypadku, polecenie kończy pracę. Jeżeli jednym z wykonanych kroków było podstawienie wyników polecenia, to zwracany kod zakończenia jest kodem ostatniego wykonanego podstawienia polecenia. Jeśli nie wystąpiło podstawianie poleceń, to polecenie kończy pracę z kodem zerowym.
Wykonywanie Poleceń
Po podziale polecenia na słowa, jeśli jego wynikiem jest polecenie proste z opcjonalną listą argumentów, podejmowane są poniższe akcje.
Jeśli polecenie nie zawiera ukośników, powłoka usiłuje je zlokalizować. jeżeli istnieje funkcja powłoki o tej nazwie, wywoływana jest ta funkcja, jak opisano powyżej w sekcji FUNKCJE. Jeżeli nazwa nie pasuje do funkcji, powłoka szuka jej na liście poleceń wbudowanych. Jeżeli nie znaleziono pasujące, to jest ono wywoływane.
Jeżeli nazwa nie jest ani funkcją powłoki ani poleceniem wbudowanym i nie zawiera ukośników, to bash przeszukuje każdy element z PATH usiłując znaleźć katalog zawierający plik wykonywalny o takiej nazwie. Bash posługuje się tablicą mieszającą (hash table) do zapamiętywania pełnych nazw plików wykonywalnych (zobacz hash w WBUDOWANE POLECENIA POWŁOKI poniżej). Pełne przeszukiwanie katalogów z PATH wykonywane jest tylko wtedy, gdy polecenia nie znaleziono w tablicy mieszającej. Jeżeli poszukiwanie nie powiodło się, powłoka wypisuje komunikat o błędzie i zwraca kod zakończenia równy 127.
Jeżeli poszukiwanie było pomyślne lub jeśli nazwa polecenia zawiera jeden lub więcej ukośników, powłoka wykonuje zadany program w odrębnym środowisku wykonania. Argumentowi 0 przypisywana jest podana nazwa, a pozostałym argumentom polecenia podane argumenty, jeśli były takowe.
Jeżeli wykonanie to nie powiedzie się, gdyż plik nie ma formatu wykonywalnego, a nie jest katalogiem, to zakłada się, że jest on skryptem powłoki, plikiem zawierającym polecenia powłoki. Powoływana jest podpowłoka do jego wykonania. Powłoka ta reinicjuje się, zatem efekt jest taki, jakby do obsługi skryptu została wywołana nowa powłoka, z wyjątkiem tego, że położenia poleceń zapamiętane przez rodzica (zobacz hash poniżej w WBUDOWANE POLECENIA POWŁOKI są zachowywane przez potomka.
Jeżeli program jest plikiem o zawartości rozpoczynającej się od #!, to reszta pierwszego wiersza określa interpreter dla tego programu. Powłoka uruchamia podany interpreter na systemach operacyjnych, które same nie obsługują tego formatu wykonywalnego. Argumenty dla interpretera składają się z pojedynczego opcjonalnego argumentu występującego po nazwie interpretera w pierwszym wierszu programu, następującej po nim nazwy programu i następujących po niej argumentów polecenia, jeśli były takowe.
- ŚRODOWISKO WYKONYWANIA POLECEŃ
- Powłoka posiada środowisko wykonywania (execution environment), składające się z:
- ·
- otwarte pliki odziedziczone przez powłokę przy wywołaniu, zmodyfikowane przez przekierowania przekazane do wbudowanego polecenia exec
- ·
- bieżący katalog roboczy ustawiony przez cd, pushd lub popd, albo odziedziczony przez powłokę przy wywołaniu
- ·
- maskę trybut tworzonych plików ustawioną przez umask albo odziedziczoną po rodzicu powłoki
- ·
- bieżące pułapki ustawione przez trap
- ·
- parametry powłoki ustawione przez przypisania zmiennych przy pomocy set albo odziedziczone ze środowiska rodzica powłoki
- ·
- funkcje powłoki zdefiniowane podczas wykonywania lub odziedziczone ze środowiska rodzica powłoki
- ·
- opcje włączone przy wywołaniu (albo domyślnie albo przy pomocy argumentów wiersza poleceń) albo przez set
- ·
- opcje włączone przez shopt
- ·
- aliasy powłoki zdefiniowane przy pomocy alias
- ·
- różne id procesów, łącznie z identyfikatorami zadań tła, wartość $$ i wartość $PPID
Gdy ma zostać wykonane polecenie proste inne niż funkcja powłoki lub polecenie wbudowane, wywoływane jest w odrębnym środowisku wykonania, skłądających się z poniższych elementów. Jeśli nie podano inaczej, wartości dziedziczone są z powłoki.
- ·
- otwarte pliki powłoki, plus modyfikacje i dodatki określone przez przekierowania polecenia
- ·
- bieżący katalog roboczy
- ·
- maska trybu tworzonych plików
- ·
- zmienne powłoki oznaczone do wyeksportowania, razem ze zmiennymi wyeksportowanymi do polecenia, przekazane w środowisku.
- ·
- pułapki przechwycone przez powłokę resetowane są do wartości odziedziczonych przez nią od rodzica, a pułapki ignorowane przez powłokę są ignorowane.
Polecenie wywołane w odrębnym środowisku nie może wpływać na środowisko wykonywania powłoki.
Podstawienia wyników poleceń i polecenia asynchroniczne wywoływane są w środowisku podpowłoki, które jest kopią środowiska powłoki, z wyjątkiem tego, że pułapki przechwycone przez powłokę są resetowane do wartości, jakie powłoka odziedziczyła po rodzicu podczas wywołania. Polecenia wbudowane wywoływane jako część potoku również wykonywane są w środowisku podpowłoki. Zmiany wykonane w środowisku podpowłoki nie mogą wpływać na środowisko wykonywania powłoki.
Jeżeli po poleceniu występuje &, a nie uaktywniono sterowania zadaniami, to domyślnym standardowym wejściem dla tego polecenia jest pusty plik /dev/null. W przeciwnym razie wywoływane polecenie dziedziczy deskryptory plików po wołającej powłoce, zmodyfikowane przekierowaniami.
- ŚRODOWISKO
- Poczas wywoływania program otrzymuje tablicę łańcuchów zwaną środowiskiem(environment). jest to lista par nazwa-wartość, o postaci nazwa=wartość.
Powłoka pozwala na manipulowanie środowiskiem na kilka sposobów. Przy wywołaniu, przeszukuje ona własne środowisko i tworzy parametr dla każdej znalezionej nazwy, automatycznie zaznaczając go do wyeksportowania do procesów potomnych. Wykonywane polecenia dziedziczą środowisko. Polecenia export i declare -x pozwalają na dodawanie i usuwanie ze środowiska parametrów i funkcji. Jeżeli w środowisku zmieniana jest wartość parametru, to nowa wartość staje się częścią środowiska, zastępując starą. Środowisko dziedziczone przez każde wykonywane polecenie składa się z początkowego środowiska powłoki, którego wartości mogą być w powłoce zmieniane, minus ewentualne pary usunięte poleceniem unset, plus dodane poprzez polecenia export i declare -x.
Środowisko dla dowolnego polecenia prostego czy funkcji może być tymczasowo powiększone przez poprzedzenie polecenia przypisaniem parametrów, jak opisano powyżej w sekcji PARAMETRY. Te instrukcje przypisania mają wpływ wyłącznie na środowisko postrzegane przez to polecenie.
Jeżeli ustawiona jest opcja -k (zobacz poniżej opis wbudowanego polecenia set), to wszystkie przypisania parametrów umieszczane są w środowisku polecenia, a nie tylko te, które poprzedzają nazwę polecenia.
Gdy bash wywołuje polecenie zewnętrzne, zmienna _ ustawiana jest na pełną nazwę pliku polecenia i przekazywana temu poleceniu w jego środowisku.
Kod Zakończenia
Dla celów powłoki, polecenie, które zakończyło pracę z zerowym kodem zakończenia, powiodło się. Zerowy kod oznacza powodzenie. Niezerowy kod oznacza niepowodzenie. Gdy polecenie kończy pracę z błędem krytycznym N, bash posługuje się wartością 128+N jako kodem zakończenia.
Jeżeli nie znaleziono polecenia, proces potomny powołany do jego wykonania zwraca kod 127. Jeżeli polecenie zostało znalezione, ale nie jest wykonywalne, kod zakończenia wynosi 126.
Jeżeli polecenie nie powiodło się z powodu błędu podczas interpretacji lub przekierowania, kod zakończenia jest większy od zera.
Wbudowane polecenia powłoki zwracają kod 0 (true prawda) jeśli się powiodły, i niezerowy (false fałsz) jeśli podczas ich wykonywania pojawił się błąd. Wszystkie polecenia wbudowane zwracają kod 2 dla wskazania niepoprawnego użycia.
Sam Bash zwraca kod zakończenia ostatniego wykonanego polecenia, chyba że pojawi się błąd składni, wówczas kończy pracą z wartością niezerową. Zobacz też poniżej polecenie wbudowane exit.
Sygnały
Gdy bash jest interaktywny, przy braku jakichkolwiek pułapek (przechwytywania sygnałów), ignoruje on SIGTERM (tak, że kill 0 nie zabija powłoki interaktywnej), a SIGINT jest przechwytywany i obsługiwany (tak, że wbudowane polecenie wait daje się przerwać). We wszystkich przypadkach, bash ignoruje SIGQUIT. Jeżeli działa kontrola zadań, bash ignoruje SIGTTIN, SIGTTOU i SIGTSTP.
Zadania synchroniczne uruchomione przez bash mają procedury obsługi sygnałów (signal handlers) ustawione na wartości odziedziczone przez powłokę po rodzicu. Jeżeli nie pracuje kontrola zadań, to polecenia asynchroniczne ignorują również SIGINT i SIGQUIT. Polecenia uruchamiane wskutek podstawiania poleceń ignorują generowane z klawiatury sygnały kontroli zadań SIGTTIN, SIGTTOU i SIGTSTP.
Powłoka domyślnie kończy pracę po otrzymaniu SIGHUP. Przed zakończeniem, powłoka interaktywna rozsyła otrzymany SIGHUP do wszystkich zadań, pracujących lub zatrzymanych. Do zatrzymanych zadań wysyłany jest SIGCONT by upewnić się, że otrzymują SIGHUP. Chcąc uniknąć wysłania sygnału przez powłokę do konkretnego zadania, należy usunąć je z tablicy zadań przy pomocy wbudowanego polecenia disown (zobacz poniżej WBUDOWANE POLECENIA POWŁOKI) lub oznakować, by nie otrzymywało SIGHUP, posługując się disown -h.
Jeżeli przy pomocy shopt została ustawiona opcja huponexit powłoki, bash wysyła SIGHUP do wszystkich zadań, gdy kończy pracę interaktywna powłoka zgłoszeniowa.
Gdy bash podczas oczekiwania na ukończenie polecenia otrzymuje sygnał, dla którego ustawiono pułapkę, pułapka ta nie zostanie wykonana aż do zakończenia pracy polecenia. Gdy bash oczekuje na polecenie asynchroniczne za pośrednictwem wbudowanego wait, odbiór sygnału, dla którego ustawiono przechwytywanie spowoduje, że wbudowane wait natychmiast skończy pracę z kodem większym od 128, po czym natychmiast zostanie wywołana pułapka.
Kontrola Zadań
Kontrola zadań odnosi się do możliwości selektywnego zatrzymywania (zawieszania - suspend) wykonywania procesów i późniejszej kontynuacji (wznawiania - resume) ich wykonywania. Użytkownik zwykle wykorzystuje to udogodnienie za pośrednictwem interaktywnego interfejsu obsługiwanego wspólnie przez systemowy sterownik terminala i bash.
Powłoka kojarzy z każdym potokiem zadanie. Przechowuje tablicę aktualnie wykonywanych zadań, którą można przeglądać za pomocą polecenia jobs. Gdy bash uruchamia zadanie asynchronicznie (w tle), wypisuje wiersz w rodzaju:
- [1] 25647
wskazujący, że zadanie to ma numer 1 a ID ostatniego procesu w potoku związanym z zadaniem wynosi 25647. Wszystkie procesy w jednym potoku należą do tego samego zadania. Bash posługuje się abstrakcją (abstraction) zadania jako podstawą kontroli zadań.
Dla ułatwienia implementacji interfejsu użytkownika do kontroli zadań, system operacyjny utrzymuje pojęcie ID grupy procesów bieżącego terminala (current terminal process group ID). Elementy tej grupy procesów (procesy, których ID grupy procesów jest równy ID grupy procesów bieżącego terminala) otrzymują generowane z klawiatury sygnały, takie jak SIGINT. Mówimy, że procesy te pracują pierwszoplanowo. Procesy tła to takie, których ID grupy procesów różni się od terminala; procesy takie są odporne na sygnały pochodzące z klawiatury. Tylko procesom pierwszoplanowym wolno czytać z lub pisać na terminalu. Do procesów tła usiłujących czytać (pisać) z terminala wysyłany jest przez sterownik terminala sygnał SIGTTIN (SIGTTOU), który, jeśli nie zostanie przechwycony, wstrzymuje proces.
Jeżeli system operacyjny, na którym działa bash obsługuje kontrolę zadań, bash zawiera funkcje do jej wykorzystywania. Naciśnięcie klawisza wstrzymania (zwykle ^Z, Control-Z) podczas pracy procesu powoduje, że proces ten zostanie zatrzymany a sterowanie zostanie zwrócone do bash. Naciśnięcie klawisza opóźnione wstrzymanie (zwykle ^Y, Control-Y) powoduje, że proces zostanie zatrzymywany gdy będzie usiłował czytać wejście z terminala, a sterowanie powróci do bash. Użytkownik może następnie zmieniać stan takiego zadania, posługując się poleceniem bg do kontynuacji zadania w tle, fg do kontynuacji na pierwszym planie lub poleceniem kill do zabicia zadania. ^Z działa natychmiast i ma efekt uboczny: powoduje odrzucenie oczekującego wyjścia i wprowadzonych, a nieprzetworzonych naciśnięć klawiszy (typeahead).
Istnieje kilka sposobów wskazywania zadania w powłoce. Znak % poprzedza nazwę zadania. Zadanie numer n można wskazać jako %n. Zadanie może być też określone przez użycie przedrostka nazwy użytej do jego uruchomienia lub podłańcucha, jaki występuje w jego wierszu poleceń. Na przykład, %ce odnosi się do zatrzymanego zadania ce. Jeśli przedrostek pasuje do więcej niż jednego zadania, bash zgłasza błąd. Z drugiej strony, użycie %?ce, wskazuje na zadanie zawierające podłańcuch ce w swym wierszu poleceń. Jeżeli łańcuch pasuje do więcej niż jednego zadania, bash zgłasza błąd. Symbole %% i %+ określają rozumiane przez powłokę bieżące zadanie, będące ostatnim zadaniem zatrzymanym, gdy było na pierwszym planie lub uruchomionym w tle. Do poprzedniego zadania można odwoływać się przy pomocy %-. W wyjściu odnoszącym się do zadań (np. wyjście polecenia jobs), bieżące zadanie jest zawsze zaznaczone znakiem +, a zadanie poprzednie -.
Do przywrócenia zadania na pierwszy plan można posłużyć się po prostu jego nazwą: %1 jest synonimem dla ,,fg %1’’, przywracającego zadanie 1 z tła na pierwszy plan. Podobnie, ,,%1 &’’ wznawia zadanie 1 w tle, równoważnie do ,,bg %1’’’’.
Powłoka natychmiast dowiaduje się czy zadanie zmieniło stan. Normalnie, bash czeka ze zgłoszeniem zmian do momentu, gdy ma wyświetlić zachętę, by nie przerywać innego wyjścia. Jeżeli włączono opcję -b wbudowanego polecenia set, bash zgłasza takie zmiany natychmiast. Dla każdego kończącego pracę procesu potomnego wykonywana jest ewentualna pułapka przechwytująca SIGCHLD.
Jeżeli wykonano próbę zakończenia pracy bash przy istniejących zatrzymanych zadaniach, powłoka wypisuje komunikat ostrzegawczy. Można wówczas posłużyć się poleceniem jobs do sprawdzenia ich stanu. Jeżeli wykonywana jest druga próba zakończenia pracy bez wystąpienia wtrąconego między nie polecenia, powłoka nie wypisuje kolejnego ostrzeżenia a zatrzymane zadania są przerywane.
Zachęta Powłoki
Przy wykonywaniu interaktywnym bash wyświetla główny symbol zachęty (primary prompt) PS1 kiedy jest gotowa na odczyt polecenia, zaś wtórną (secondary) zachętę PS2 kiedy potrzebuje więcej danych z wejścia do uzupełnienia polecenia. Bash pozwala na dostosowywanie tych łańcuchów zachęty poprzez wstawianie pewnej ilości znaków specjalnych rozpoczynających się odwrotnym ukośnikiem, które są dekodowane jak następuje:
- \a
- znak dzwonka ASCII (07)
- \d
- data w formacie “DzieńTyg Miesiąc Dzień” format (np., “Tue May 26")
- \e
- znak escape ASCII (033)
- \h
- nazwa hosta do pierwszej kropki ‘.’
- \H
- nazwa hosta
- \j
- liczba zadań aktualnie obsługiwanych przez powłokę
- \l
- główna część nazwy urządzenia terminala powłoki
- \n
- znak nowej linii
- \r
- powrót karetki
- \s
- nazwa powłoki, główna część nazwy $0 (fragment występujący po ostatnim ukośniku)
- \t
- bieżący czas w formacie 24-godzinnym GG:MM:SS
- \T
- bieżący czas w formacie 12-godzinnym GG:MM:SS
- \@
- bieżący czas w 12-godzinnym formacie am/pm
- \A
- bieżący czas w 24-godzinnym formacie GG:MM
- \u
- nazwa bieżącego użytkownika (username)
- \v
- wersja programu bash (np. 2.00)
- \V
- wydanie bash, wersja+poziom łat (np., 2.00.0)
- \w
- bieżący katalog roboczy
- \W
- główna część nazwy bieżącego katalogu roboczego
- \!
- numer tego polecenia w historii
- \#
- numer polecenia tego polecenia
- \$
- Jeżeli efektywnym UID jest 0, to #, w przeciwnym razie $
- \nnn
- znak odpowiadający szesnastkowej liczbie nnn
- \\
- odwrotny ukośnik
- \[
- początek sekwencji znaków niedrukowalnych, która może służyć do osadzenia w zachęcie sekwencji sterujących terminalem
- \]
- koniec sekwencji znaków niedrukowalnych
Numer polecenia i numer w historii są zwykle różne: numer polecenia w historii jest jego pozycją na liście historii, która może obejmować polecenia odtworzone z pliku historii (zobacz poniżej HISTORIA), podczas gdy numer polecenia jest pozycją w sekwencji poleceń wykonanych w obecnej sesji powłoki. Po zdekodowaniu, łańcuch jest interpretowany poprzez interpretację parametrów, podstawianie wyników poleceń, interpretację wyrażeń arytmetycznych, interpretację łańcuchów i usuwanie cytowań, zgodnie z wartością opcji promptvars powłoki (zobacz opis polecenia shopt w sekcji WBUDOWANE POLECENIA POWŁOKI poniżej).
Readline
Jest to biblioteka obsługująca odczytywanie wejścia podczas posługiwania się powłoką interaktywną, chyba że przy wywołaniu powłoki podano opcję --noediting. Domyślnie, polecenia edycji wiersza są podobne do występujących w emacsie. Dostępny jest także interfejs edycji wiersza w stylu vi. By wyłączyć edycję wiersza po uruchomieniu powłoki, użyj opcji +o emacs lub +o vi wbudowanego polecenia set (zobacz WBUDOWANE POLECENIA POWŁOKI poniżej).
Notacja Readline
W tej sekcji, do zapisu naciśnięć klawiszy używana jest notacja
w stylu emacsa. Klawisze kontrolne zapisywane są jako C-klaw_isz,
np., C-n oznacza Control-N. Podobnie, meta klawisze zapisywane
są jako M-klawisz, zatem M-x oznacza Meta-X. (Na klawiaturach
bez klawisza meta M-x oznacza ESC x, tj. naciśnij klawisz
Escape a następnie klawisz x. Czyni to ESC the przedrostkiem
meta (meta prefix). Kombinacja M-C-x oznacza ESC-Control-x, lub
naciśnij klawisz Escape, następnie przytrzymaj klawisz Control
podczas naciskania klawisza x.)
Poleceniom readline można podawać numeryczne argumenty, które normalnie działają jako licznik powtórzeń. Czasami jednak, znaczący jest znak argumentu. Przekazanie ujemnego argumentu poleceniu, które działa w przód (np. kill-line) powoduje, że będzie ono działać odwrotnym kierunku (wstecz). Polecenia, których zachowanie z argumentami odbiega od podanego odnotowano poniżej.
Gdy polecenie opisano jako usuwające (killing) tekst, tekst ten jest zachowywany to ewentualnego późniejszego odzyskania (przywołania yanking). Kolejne usunięcia powodują, że tekst jest zbierany w jedną całość, którą można odzyskać naraz. Polecenia nie usuwające tekstu oddzielają kawałki tekstu w stosie usuwania (killing ring).
Inicjalizacja Readline
Readline dostosowywane jest przy pomocy poleceń umieszczanych w
pliku inicjującym (plik inputrc). Nazwa tego pliku brana jest z
wartości zmiennej INPUTRC. Jeżeli zmienna ta nie jest ustawiona,
domyślną nazwą jest ~/.inputrc. Gdy startuje program
używający biblioteki readline, odczytywany jest plik inicjujący,
po czym ustawiane są przypisania klawiszy i zmienne. Istnieje
tylko kilka podstawowych konstrukcjii dozwolonych w pliki inicjacji
readline. Puste wiersze są ignorowane. Wiersze rozpoczynające
się od # są komentarzami. Wiersze rozpoczynające się od
$ wskazują konstrukcje warunkowe. Inne wiersze wyznaczają
przypisania klawiszy i ustawienia zmiennych.
Domyślne przypisania klawiszy można zmienić przy pomocy pliku inputrc. Inne programy posługujące się tą biblioteką mogą dodawać własne polecenia i przypisania.
Na przykład, umieszczenie
M-Control-u: universal-argument
lub
C-Meta-u: universal-argument
w inputrc spowodowałoby, że M-C-u wywoływałoby polecenie readline
universal-argument.
Rozpoznawane są następujące symboliczne nazwy znaków: RUBOUT, DEL, ESC, LFD, NEWLINE, RET, RETURN, SPC, SPACE i TAB.
Oprócz nazw poleceń readline pozwala przypisywać klawisze do łańcucha. Łańcuch ten zostanie wstawiony po naciśnięciu klawisza (makro).
Przypisania klawiszy Readline
Składnia przypisań klawiszy sterujących w pliku inputrc jest
prosta. Wymagana jest wyłącznie nazwa polecenia lub tekst makra
i sekwencja klawiszy, do której powinno być przypisane. Klawisze
mogą być podane na dwa sposoby: jako symboliczna nazwa klawisza,
może być z przedrostkami Meta- lub Control-, lub jako sekwencja
klawiszy.
Przy użyciu postaci nazwa-klaw:nazwa-funkcji lub makro, nazwa_klaw jest nazwą klawisza zapisaną w jęz.angielskim. Na przykład:
Control-u: universal-argument
Meta-Rubout: backward-kill-word
Control-o: “> output"
W powyższym przykładzie, C-u przypisane jest do funkcji universal-argument, M-DEL przypisane jest do funkcji backward-kill-word a C-o przypisane do uruchamiania makra wyrażonego po prawej (to jest, wstawiania tekstu ,,> output’’ w wiersz).
W drugiej postaci, “sekw-klaw":nazwa-funkcji lub makro, sekwklaw różni się od nazwa-klaw powyżej tym, że przez umieszczenie sekwencji w cudzysłowach można podać łańcuchy oznaczające całą sekwencję klawiszy. Można posłużyć się niektórymi kombinacjami klawiszy w stylu GNU Emacs-a, jak w poniższym przykładzie, nie są jednak rozpoznawane symboliczne nazwy znaków:
“\C-u": universal-argument
“\C-x\C-r": re-read-init-file
“\e[11~": “Klawisz funkcyjny 1"
W tym przykładzie, C-u jest ponownie przypisane do funkcji universal-argument.
C-x C-r przypisane jest do funkcji
re-read-init-file, zaś ESC [ 1 1 ~ przypisane jest do wstawienia
tekstu ,,Klawisz funkcyjny 1’’. Oto pełny zestaw sekwencji
specjalnych w stylu GNU Emacs
- \C-
- przedrostek control
- \M-
- przedrostek meta
- \e
- znak escape
- \\
- odwrotny ukośnik
- \”
- dosłowny cudzysłów “
- \’
- dosłowny apostrof ‘
Oprócz sekwencji specjalnych w stylu GNU Emacsa, dostępny jest drugi zestaw sekwencji z użyciem odwrotnego ukośnika:
- \a
- alarm (dzwonek)
- \b
- backspace
- \d
- delete
- \f
- wysuw strony (form feed)
- \n
- nowa linia (newline)
- \r
- powrót karetki (carriage return)
- \t
- tabulacja pozioma (horizontal tab)
- \v
- tabulacja pionowa (vertical tab) \nnn ośmiobitowy znak, którego wartością jest ósemkowa liczba nnn (jedna do trzech cyfr) \xHH ośmiobitowy znak, którego wartością jest szesnastkowa liczba nnn (jedna lub dwie cyfry szesnastkowe)
Podczas wprowadzania tekstu makra, do wskazania jego definicji muszą być użyte pojedyncze lub podwójne cudzysłowy. Zakłada się, że tekst niecytowany jest nazwą funkcji. W ciele makra interpretowane są sekwencje specjalne z użyciem odwrotnego ukośnika opisane powyżej. odwrotny ukośnik cytuje dowolny inny znak w tekście makra, łącznie z “ i ‘.
Bash umożliwia wyświetlanie i zmianę bieżących przypisań klawiszy readline za pomocą wbudowanego polecenia bind. Tryb edycji można przełączać podczas używania interaktywnego przez posłużenie się opcją -o wbudowanego polecenia set (zobacz poniżej WBUDOWANE POLECENIA POWŁOKI).
Zmienne Readline
Readline posiada zmienne, których można używać do dodatkowego
dostosowania jej zachowania. Zmienna może być ustawiana w pliku
inputrc przy pomocy instrukcji postaci
set nazwa-zmiennej wartość
Z wymienionymi niżej wyjątkami, zmienne readline mogą przyjmować wartości On lub Off. A oto zmienne i ich wartości domyślne:
bell-style (audible)
Kontroluje, co dzieje się gdy readline chce użyć sygnału
dźwiękowego terminala. Jeśli ustawiona na none, readline
nigdy nie emituje sygnału. Jeśli ustawiona na visible,
readline posługuje się “widzialnym dzwonkiem” (visible
bell), jeśli jest dostępny. Jeżeli ustawiona na audible,
readline usiłuje uzyskać sygnał dźwiękowy z terminala.
comment-begin (,,#’’)
Łańcuch wstawiany, gdy wykonywane jest polecenie
insert-comment readline. Polecenie to jest przypisane do
M-# w trybie emacs, zaś do # w trybie vi.
completion-ignore-case (Off)
Jeżeli ustawiona na On, readline wykonuje dopasowywanie i
uzupełnianie nazw plików bez rozróżniania wielkości
liter.
completion-query-items (100)
Określa, kiedy użytkownik jest pytany o oglądanie takiej
liczby możliwych uzupełnień tworzonych przez polecenie
possible-completions. Może być ustawiona na dowolną
liczbę całkowitą większą lub równą zero. Jeżeli liczba
możliwych uzupełnień jest większa bądź równa wartości tej
zmiennej, to użytkownik jest pytany czy chce je oglądnąć;
w przeciwnym razie są one po prostu pokazywane na
terminalu.
convert-meta (On)
Jeśli ustawione na On, readline będzie zamieniał znaki z
ustawionym ósmym bitem na sekwencje klawiszy ASCII przez
obcięcie ósmego bitu i poprzedzenie znakiem escape (w
efekcie, używając escape jako przedrostka meta).
disable-completion (Off)
Jeśli ustawione na On, readline zabroni uzupełniania
słów. Znaki uzupełniania zostaną wstawione w wiersz tak,
jakby zostały przypisane do self-insert.
editing-mode (emacs)
Kontroluje czy readline rozpoczyna pracę z zestawem
przypisań klawiszy podobnym do emacs czy do vi. editing-mode
może być ustawiane albo na emacs albo na vi.
enable-keypad (Off)
Gdy jest ustawione na On, readline będzie usiłować
włączyć numeryczny blok klawiatury (application keypad)
przy wywołaniu. Niektóre systemy potrzebują tego do
włączenia klawiszy strzałek.
expand-tilde (Off)
Jeżeli ustawione na on, podczas próby uzupełniania słów
readline wykonuje interpretację tyldy.
history-preserve-point
Ustawione na on powoduje, że kod obsługi historii poleceń
usiłuje w każdym wierszu poleceń odzyskanym za pomocą
previous-history lub next-history umieścić punkt (bieżącą
pozycję kursora) w tym samym miejscu.
horizontal-scroll-mode (Off)
Ustawione na On powoduje, że readline do wyświetlania
posługuje się pojedynczym wierszem. Jeśli wejście jest
dłuższe niż szerokość ekranu, to jego zawartość jest
wówczas przewijana w poziomie w pojedynczym wierszu
ekranu, zamiast zawijania do następnego wiersza.
input-meta (Off)
Jeśli ustawiona na On, readline dopuści ośmiobitowe
wejście (to znaczy, nie będzie obcinać ósmego bitu z
odczytywanych znaków), bez względu na to, co twierdzi
terminal o możliwości obsługi. Nazwa meta-flag jest synonimem
tej zmiennej.
isearch-terminators (,,C-[C-J’’)
Łańcuch znaków, który powinien przerywać wyszukiwanie
krokowe (incremental search) bez późniejszego wykonywania
znaku jako polecenia. Jeżeli zmiennej tej nie nadano
wartości, to wyszukiwanie krokowe będą przerywać ESC i
C-J.
keymap (emacs)
Ustawia bieżące mapowanie klawiatury readline. Zestawami
poprawnych mapowań są emacs, emacs-standard, emacs-meta,
emacs-ctlx, vi, vi-command i vi-insert. vi jest
równoważnikiem dla vi-command; emacs jest równoważne
emacs-standard. Domyślną wartością jest emacs; wartość
editing-mode również wpływa na domyślne mapowanie.
mark-directories (On)
Jeżeli ustawione na On, to uzupełniane nazwy katalogów
mają dołączany końcowy ukośnik.
mark-modified-lines (Off)
Jeżeli ustawione na On, wiersze historii, które zostały
zmienione wyświetlane są z poprzedzającą je gwiazdką (*).
match-hidden-files (On)
Ta zmienna, gdy jest ustawiona na On, powoduje, że readline
wykonując uzupełnianie nazw plików dopasowuje pliki,
których nazwy zaczynają się od kropki ‘.’ (pliki ukryte),
chyba że użytkownik podał taką początkową kropkę w
nazwie, jaka ma być uzupełniona.
output-meta (Off)
Jeżeli ustawione na On, readline wyświetla znaki z ustawionym
ósmym bitem wprost zamiast jako sekwencje specjalne
z meta-przedrostkiem.
print-completions-horizontally (Off)
Jeżeli ustawione na On, readline wyświetla dopasowane
uzupełnienia w kolejności alfabetycznej poziomo, zamiast
w dół ekranu.
show-all-if-ambiguous (Off)
Zmienia to domyślne zachowanie funkcji uzupełniania.
Jeżeli jest ustawione na on, to słowa mające więcej niż
jedno możliwe uzupełnienie powodują, że natychmiast
zostaną podane dopasowania zamiast wyemitowania sygnału
dźwiękowego.
visible-stats (Off)
Jeżeli ustawione na On, to przy wyświetlaniu możliwych
uzupełnień do nazwy pliku zostanie dołączony znak
określający typ pliku wskazywany przez stat(2)
.
Konstrukcje warunkowe Readline
Readline implementuje udogodnienie podobne duchem do funkcji
kompilacji warunkowej preprocesora C, pozwalające na wykonywanie
przypisań klawiszy i ustawień zmiennych w zależności od wyniku
testów. Używane są cztery dyrektywy analizatora składni.
- $if
- Konstrukcja $if pozwala na wykonanie przypisań klawiszy w oparciu o tryb edycji, używany terminal lub aplikację korzystającą z readline. Tekst testu rozciąga się do końca wiersza; do jego wydzielenia nie są wymagane żadne znaki.
mode Postać mode= dyrektywy $if służy do sprawdzania czy readline jest w trybie emacs czy vi. Może być wykorzystywana, na przykład, w połączeniu z poleceniem set keymap, do ustawienia przypisań w mapowaniach emacs-standard i emacs-ctlx tylko jeśli readline uruchamia się w trybie emacs.
term Postać term= można wykorzystywać do włączenia specyficznych dla terminala przypisań klawiszy, być może do przypisania wyjścia dla sekwencji klawiszy funkcyjnych terminala. Słowo po prawej stronie = sprawdzane jest z zarówno pełną nazwą terminala, jaki i częścią jego nazwy przed pierwszym -. Umożliwia to, na przykład, dopasowanie przez sun zarówno sun jak i sun-cmd.
aplikacja
Konstrukcja aplikacja służy do włączania ustawień
specyficznych dla aplikacji. Każdy program korzystający
z biblioteki readline ustawia nazwę
aplikacji (application name), a plik inicjujący
może sprawdzić czy ma ona jakąś szczególną
wartość. Może to być używane do przypisywania
sekwencji klawiszy funkcjom przydatnym w danym
programie. Na przykład, poniższe polecenie dodaje
sekwencję klawiszy wykonującą w bash cytowanie
bieżącego lub poprzedniego słowa:
$if Bash
# Cytuj bieżące lub poprzednie słowo
“\C-xq": “\eb\"\ef\""
$endif
$endif Polecenie to, jak widać w poprzednim przykładzie, kończy wykonywanie polecenia $if.
$else Polecenia w tej gałęzi dyrektywy $if wykonywane są gdy nie powiedzie się sprawdzenie warunku.
$include
Dyrektywa ta pobiera jako argument pojedynczą nazwę pliku
i odczytuje polecenia i przypisania z tego pliku. Na
przykład, poniższa dyrektywa odczytałaby /etc/inputrc:
$include /etc/inputrc
Wyszukiwanie
Readline zapewnia polecenia do wyszukiwania w historii poleceń
(zobacz poniżej HISTORIA) wierszy zawierających zadany łańcuch.
Istnieją dwa tryby wyszukiwania: krokowy (incremental) i nie_niekrokowy(non-incremental).
Wyszukiwania krokowe rozpoczynają się przed zakończeniem wpisywania przez użytkownika szukanego tekstu. Po wpisaniu każdego znaków szukanego łańcucha readline wyświetla następną pozycję historii pasującą do wpisanego do tej pory łańcucha. Wyszukiwanie krokowe wymaga tylko tylu znaków ile potrzebne jest do znalezienia pożądanej pozycji historii. Znaki występujące w wartości zmiennej isearch-terminators służą do przerwania wyszukiwania krokowego. Jeżeli zmienna ta nie ma przypisanej wartości, to wyszukiwanie przerywają znaki Escape i Control-J. Control-G porzuca wyszukiwanie krokowe i przywraca pierwotny wiersz. Gdy przerwie się wyszukiwanie, pozycja historii zawierająca poszukiwany łańcuch staje się bieżącym wierszem.
W celu odnalezienia innych pasujących pozycji, należy nacisnąć odpowiednio Control-S lub Control-R. Wyszukuje to wstecz lub w przód kolejną pasującą do dotychczas wpisanego łańcucha pozycję historii. Wszystkie inne sekwencje klawiszy przypisane do polecenia readline przerywają wyszukiwanie i wykonują zadane polecenie. Na przykład, znak nowej linii przerywa wyszukiwanie i akceptuje wiersz, wykonując skutkiem tego polecenie z listy historii.
Readline pamięta łańcuch użyty w ostatnim wyszukiwaniu krokowym. Jeżeli Control-R zostanie naciśnięte dwa razy, bez wprowadzenia pomiędzy naciśnięciami innych znaków definiujących nowy łańcuch szukania, to wykorzystywany jest uprzednio zapamiętany łańcuch.
Wyszukiwania nie-krokowe czytają cały szukany łańcuch przed rozpoczęciem wyszukiwania pasujących wierszy historii. Łańcuch może być wpisany przez użytkownika lub być częścią zawartości bieżącego wiersza.
Nazwy poleceń Readline
Poniżej podano listę nazw poleceń i domyślnych sekwencji klawiszy,
do których są one przypisane. Nazwy poleceń bez
towarzyszącej sekwencji klawiszy są domyślnie nieprzypisane. W
poniższych opisach, punkt oznacza bieżącą pozycję kursora, zaś
zaznaczenie do pozycji kursora zapamiętanej przez polecenie
set-mark. Tekst pomiędzy punktem a zaznaczeniem nazywany jest
obszarem.
Polecenia ruchu
beginning-of-line (C-a)
Przesuwa na początek bieżącego wiersza.
end-of-line (C-e)
Przesuwa na koniec wiersza.
forward-char (C-f)
Przesuwa o znak w przód.
backward-char (C-b)
Przesuwa o znak wstecz.
forward-word (M-f)
Przesuwa na koniec następnego słowa. Słowa złożone są ze
znaków alfanumerycznych (liter i cyfr).
backward-word (M-b)
Przesuwa na początek bieżącego, lub poprzedniego, słowa.
Słowa złożone są ze znaków alfanumerycznych (liter i
cyfr).
clear-screen (C-l)
Czyści ekran pozostawiając bieżący wiersz na górze
ekranu. Z argumentem, odświeża bieżący wiersz bez
czyszczenia ekranu.
redraw-current-line
Odświeża bieżący wiersz.
Polecenia operujące na historii
accept-line (Newline, Return)
Akceptuje wiersz bez względu na to, gdzie znajduje się
kursor. Jeżeli wiersz ten nie jest pusty, to dodaje go do
listy historii stosownie do stanu zmiennej HISTCONTROL.
Jeżeli wiersz jest zmienionym wierszem historii, to odtwarza
wiersz historii do stanu pierwotnego.
previous-history (C-p)
Śprowadza poprzednie polecenie z listy historii, przesuwając
się wstecz listy.
next-history (C-n)
Ściąga następne polecenie z listy historii, przesuwając
się do przodu na liście.
beginning-of-history (M-<)
Przesuwa na pierwszy wiersz w historii.
end-of-history (M->)
Przesuwa na koniec historii wprowadzania, tj. obecnie
wprowadzanego wiersza.
reverse-search-history (C-r)
Wyszukuje wstecz poczynając od bieżącego wiersza i przesuwając
się, w razie potrzeby, ‘w górę’ historii. Jest to
wyszukiwanie krokowe.
forward-search-history (C-s)
Wyszukuje w przód poczynając od bieżącego wiersza i przesuwając
się, w razie potrzeby, ‘w dół’ historii. Jest to
wyszukiwanie krokowe.
non-incremental-reverse-search-history (M-p)
Wyszukuje wstecz poczynając od bieżącego wiersza
posługując się wyszukiwaniem nie-krokowym podanego przez
użytkownika łańcucha.
non-incremental-forward-search-history (M-n)
Wyszukuje w przód poczynając od bieżącego wiersza
posługując się wyszukiwaniem nie-krokowym podanego przez
użytkownika łańcucha.
history-search-forward
Wyszukuje w przód w historii łańcucha znaków pomiędzy
początkiem bieżącego wiersza a punktem. Jest to wyszukiwanie
nie-krokowe.
history-search-backward
Wyszukuje wstecz w historii łańcucha znaków pomiędzy
początkiem bieżącego wiersza a bieżącą pozycją kursora
(punkt). Jest to wyszukiwanie nie-krokowe.
yank-nth-arg (M-C-y)
Wstawia pierwszy argument poprzedniego polecenia (zwykle
drugie słowo z poprzedniego wiersza) w punkt (bieżącą
pozycję kursora). Z argumentem n, wstawia n-te słowo
poprzedniego polecenia (słowa w poprzednim poleceniu
zaczynają się od słowa 0). Argument ujemny wstawia n-te
słowo od końca poprzedniego polecenia.
yank-last-arg (M-., M-_)
Wstawia ostatni argument poprzedniego polecenia (ostatnie
słowo poprzedniej pozycji historii). Z argumentem,
zachowuje się dokładnie tak, jak yank-nth-arg. Kolejne
wywołania yank-last-arg przesuwają wstecz listy historii,
wstawiając po kolei ostatni argument każdego wiersza.
shell-expand-line (M-C-e)
Interpretuj wiersz, jak czyni to powłoka. Wykonuje to
aliasy i interpretację historii, jak również interpretację
słów powłoki. Zobacz INTERPRETACJA HISTORII
poniżej.
history-expand-line (M-^)
Wykonuje interpretację powłoki w odniesieniu do bieżącego
wiersza. Zobacz INTERPRETACJA HISTORII poniżej.
magic-space
Wykonuje interpretację powłoki w odniesieniu do bieżącego
wiersza i wstawia spację. Zobacz INTERPRETACJA HISTORII
poniżej.
alias-expand-line
Wykonuje interpretację aliasów w odniesieniu do bieżącego
wiersza. Zobacz ALIASY powyżej.
history-and-alias-expand-line
Wykonuje interpretację historii i aliasów w odniesieniu
do bieżącego wiersza.
insert-last-argument (M-., M-_)
Synonim yank-last-arg.
operate-and-get-next (C-o)
Akceptuje do wykonania bieżący wiersz i ściąga do edycji
następny względem bieżącego wiersz z historii. Argumenty
są ignorowane.
Polecenia zmiany tekstu
delete-char (C-d)
Usuwa znak w punkcie (pod kursorem). Jeżeli punkt jest
początkiem wiersza, nie ma żadnych znaków w wierszu, a
ostatni wpisany znak został przypisany do delete-char, to
zwraca EOF.
backward-delete-char (Rubout)
Usuwa znak przed kursorem. Jeżeli podano argument
numeryczny, zachowuje usunięty tekst na stosie usunięć.
forward-backward-delete-char
Usuwa znak pod kursorem, chyba że kursor znajduje się na
końcu wiersza, wówczas usuwany jest znak przed kursorem.
quoted-insert (C-q, C-v)
Dodaje następny znak do wiersza dosłownie. W ten sposób
wstawiane są znaki takie, jak na przykład C-q.
tab-insert (C-v TAB)
Wstawia znak tabulacji.
self-insert (a, b, A, 1, !, ...)
Wstawia wpisany znak.
transpose-chars (C-t)
Zamienia miejscami znak sprzed punktu ze znakiem w
punkcie, równocześnie przesuwając punkt w przód. Jeżeli
punkt jest na końcu wiersza to zamienia to miejscami dwa
znaki przed punktem. Argumenty ujemne nie skutkują.
transpose-words (M-t)
Zamienia miejscami słowo sprzed punktu ze słowem za punktem,
przesuwając równocześnie punkt za przesunięte sprzed
niego słowo. Jeżeli punkt jest na końcu wiersza to
zamienia to miejscami dwa ostanie słowa wiersza.
upcase-word (M-u)
Zamienia na wielkie litery bieżące (lub następne) słowo.
Z argumentem ujemnym zamienia na wielkie litery poprzednie
słowo, ale nie przesuwa punktu.
downcase-word (M-l)
Zamienia na małe litery bieżące (lub następne) słowo. Z
argumentem ujemnym zamienia na małe litery poprzednie
słowo, ale nie przesuwa punktu.
capitalize-word (M-c)
Zamienia na kapitaliki (pierwsza litera wielka, pozostałe
małe) bieżące (następne) słowo. Z argumentem ujemnym
zamienia na kapitaliki poprzednie słowo, ale nie przesuwa
punktu.
Usuwanie i wklejanie
kill-line (C-k)
Usuwa tekst od punktu do końca wiersza.
backward-kill-line (C-x Rubout)
Usuwa wstecz do początku wiersza.
unix-line-discard (C-u)
Usuwa wstecz od punktu do początku wiersza. Usuwany tekst
jest zachowywany na stosie usunięć.
kill-whole-line
Usuwa wszystkie znaki bieżącego wiersza, bez względu na
położenie punktu.
kill-word (M-d)
Usuwa od punktu do końca bieżącego słowa, lub jeśli użyte
pomiędzy słowami, do końca następnego słowa. Granice słów
są takie same, jak używane przez forward-word.
backward-kill-word (M-Rubout)
Usuwa słowo sprzed punktu. Granice słów są takie same,
jak używane przez backward-word.
unix-word-rubout (C-w)
Usuwa słowo sprzed punktu, jako separatora słów używając
białych znaków. Usunięty tekst zachowywany jest na
stosie usunięć.
delete-horizontal-space (M-\)
Usuwa wszystkie spacje i tabulatory wokół punktu.
kill-region
Usuwa tekst w bieżącym obszarze.
copy-region-as-kill
Kopiuje tekst obszaru do bufora usuwania.
copy-backward-word
Kopiuje słowo sprzed punktu do bufora usuwania. Granice
słów są takie same, jak dla backward-word.
copy-forward-word
Kopiuje słowo występujące po punkcie do bufora usuwania.
Granice słów są takie same, jak dla forward-word.
yank (C-y)
Wkleja wierzchołek stosu usunięć do bufora w punkcie (w
miejscu kursora).
yank-pop (M-y)
Obraca stos usunięć i wkleja nowy wierzchołek. Działa
tylko następując po yank lub yank-pop.
Argumenty numeryczne
digit-argument (M-0, M-1, ..., M--)
Dodaje tę cyfrę do już składanego argumentu lub
rozpoczyna nowy argument. M-- rozpoczyna argument
ujemny.
universal-argument
Jest to inna metoda podawania argumentu. Jeżeli po tym
poleceniu występuje jedna lub więcej cyfr, z opcjonalnym
początkowym znakiem minus, to cyfry te definiują argument.
Jeżeli po poleceniu występują cyfry, to powtórne
wykonanie universal-argument kończy argument numeryczny,
ale w przeciwnym wypadku jest ignorowane. W przypadku
specjalnym, jeżeli bezpośrednio po tym poleceniu
występuje znak nie będący ani cyfrą ani znakiem minus, to
argument licznik dla następnego polecenia mnożony jest
przez cztery. Argument licznik [zwykle powtórzeń] wynosi
początkowo cztery, toteż wykonanie tej funkcji po raz
pierwszy nadaje mu wartość cztery, po raz drugi
szesnaście, i tak dalej.
Uzupełnianie
complete (TAB)
Usiłuje przeprowadzić uzupełnianie tekstu przed punktem.
Bash próbuje uzupełniania traktując tekst kolejno: jako
zmienną (jeżeli tekst zaczyna się od $), nazwę użytkownika
(jeśli tekst zaczyna się od ~), nazwę hosta (i jeśli
tekst zaczyna się od @) lub polecenie (łącznie z aliasami
i funkcjami). Jeżeli żadne z powyższych nie daje dopasowania,
to próbowane jest uzupełnianie nazw plików.
possible-completions (M-?)
Pokazuje możliwe uzupełnienia tekstu przed punktem.
insert-completions (M-*)
Wstawia przed punktem wszystkie uzupełnienia tekstu,
które zostałyby wygenerowane przez possible-completions.
menu-complete
Podobne do complete, ale zastępuje słowo, jakie ma zostać
uzupełnione pojedynczym uzupełnieniem z listy możliwych.
Powtarzane wykonanie menu-complete powoduje krokowe przechodzenie
przez listę możliwych uzupełnień i wstawianie
każdego z nich po kolei (zamiast uzupełnianego słowa).
Na końcu listy uzupełnień emitowany jest sygnał dźwiękowy
(zależny od ustawienia bell-style) i przywracany jest
pierwotny tekst. Argument n przesuwa n pozycji w przód
na liście dopasowań; do przesuwania się wstecz można użyć
argumentu ujemnego. Polecenie w zamierzeniu ma być przypisane
do klawisza TAB, ale domyślnie nie jest przypisane.
delete-char-or-list
Usuwa znak pod kursorem, jeśli nie jest to początek bądź
koniec wiersza (jak delete-char). Na końcu wiersza,
zachowuje się identycznie jak possible-completions. To
polecenie jest domyślnie nieprzypisane.
complete-filename (M-/)
Usiłuje wykonać uzupełnianie nazw plików na tekście
sprzed kursora.
possible-filename-completions (C-x /)
Pokazuje możliwe uzupełnienia tekstu sprzed kursora,
traktując go jak nazwę pliku.
complete-username (M-~)
Usiłuje wykonać uzupełnianie tekstu sprzed kursora, traktując
go jak nazwę użytkownika.
possible-username-completions (C-x ~)
Pokazuje możliwe uzupełnienia tekstu sprzed kursora,
traktując go jak nazwę użytkownika.
complete-variable (M-$)
Usiłuje wykonać uzupełnianie tekstu sprzed kursora, traktując
go jak zmienną powłoki.
possible-variable-completions (C-x $)
Pokazuje możliwe uzupełnienia tekstu sprzed kursora,
traktując go jak zmienną powłoki.
complete-hostname (M-@)
Usiłuje wykonać uzupełnianie tekstu sprzed kursora, traktując
go jak nazwę hosta.
possible-hostname-completions (C-x @)
Pokazuje możliwe uzupełnienia tekstu sprzed kursora,
traktując go jak nazwę hosta.
complete-command (M-!)
Usiłuje uzupełnić tekst sprzed punktu, traktując go jak
nazwę polecenia. Uzupełnianie polecenia próbuje dopasować
tekst kolejno do aliasów, słów zastrzeżonych,
funkcji powłoki, poleceń wbudowanych powłoki i wreszcie
nazw plików wykonywalnych.
possible-command-completions (C-x !)
Pokazuje możliwe uzupełnienia tekstu sprzed kursora,
traktując go jak nazwę polecenia.
dynamic-complete-history (M-TAB)
Usiłuje uzupełnić tekst sprzed kursora, w celu
odnalezienia możliwych uzupełnień porównując go z wierszami
listy historii.
complete-into-braces (M-{)
Wykonuje uzupełnianie nazwy pliku i wstawia listę
możliwych uzupełnień ujętą w nawiasy klamrowe, tak że
jest ona dostępna dla powłoki (zobacz powyżej Interpretacja
nawiasów).
Makra klawiaturowe
start-kbd-macro (C-x ()
Rozpoczyna zachowywanie wpisywanych znaków w bieżącym
makrze klawiaturowym.
end-kbd-macro (C-x ))
Zatrzymuje zachowywanie wpisywanych znaków w bieżącym
makrze klawiaturowym i przechowuje definicję.
call-last-kbd-macro (C-x e)
Ponownie wykonuje zdefiniowane makro klawiaturowe,
powodując pojawianie się znaków makra tak, jakby zostały
wpisane z klawiatury.
Różne
re-read-init-file (C-x C-r)
Odczytuje zawartość pliku inputrc i dołącza wszystkie
znalezione tam przypisania klawiszy i zmiennych.
abort (C-g)
Zaniechuje bieżącego polecenia edycji i emituje sygnał
dźwiękowy terminala (zgodnie z ustawieniami bell-style).
do-uppercase-version (M-a, M-b, M-x, ...)
Jeżeli poprzedzony przedrostkiem meta znak x jest małą
literą, uruchamia plecenie, które jest przypisane do
odpowiedniej wielkiej litery.
prefix-meta (ESC)
Poprzedź przedrostkiem meta następny wpisany znak. ESC f
jest równoważne Meta-f.
undo (C-_, C-x C-u)
Krokowe cofnięcie operacji, pamiętane odrębnie dla
każdego wiersza.
revert-line (M-r)
Cofa wszystkie zmiany wykonane na tym wierszu. Podobne do
wykonania polecenia undo wystarczająco wiele razy, by
przywrócić wiersz do stanu początkowego.
tilde-expand (M-&)
Wykonuje interpretację tyldy w odniesieniu do bieżącego
słowa.
set-mark (C-@, M-<space>)
ustawia znacznik (mark) w bieżącym punkcie. Jeżeli podano
argument numeryczny, znacznik jest ustawiany na takiej
pozycji.
exchange-point-and-mark (C-x C-x)
Zamień punkt ze znacznikiem. Aktualna pozycja kursora
ustawiana jest na zapamietaną, a dotychczasowa pozycja
zachowywana jako znacznik.
character-search (C-])
Odczytywany jest znak a punkt przesuwa się na następne
wystąpienie tego znaku. Licznik ujemny wyszukuje poprzednie
wystąpienia.
character-search-backward (M-C-])
Odczytywany jest znak a punkt przesuwa się na poprzednie
wystąpienie tego znaku. Licznik ujemny wyszukuje kolejne
wystąpienia.
insert-comment (M-#)
Na początek bieżąceg wiersza wstawiana jest wartość zmiennej
comment-begin readline, a wiersz jest akceptowany
tak, jakby wprowadzono znak nowej linii. Domyślna
wartość comment-begin powoduje, że polecenie to czyni
bieżący wiersz komentarzem powłoki.
glob-expand-word (C-x *)
Słowo sprzed kursora traktowane jest jak wzorzec rozwijania
nazw plików i wstawiana jest lista pasujących nazw,
zastępując słowo-wzorzec.
glob-list-expansions (C-x g)
Wyświetlana jest lista rozwinięć, jakie zostałyby utworzone
przez glob-expand-word, a wiersz jest ponownie
wyświetlany.
dump-functions
Wypisuje do strumienia wyjściowego readline wszystkie
funkcje i ich przypisania klawiszy. Jeżeli podano argument
numeryczny, wyjście jest formatowane w taki sposób,
by można zrobić je częścią pliku inputrc.
dump-variables
Wypisuje do strumienia wyjściowego readline wszystkie
ustawialne zmienne readline i ich wartości. Jeżeli podano
argument numeryczny, wyjście jest formatowane w taki
sposób, by można zrobić je częścią pliku inputrc.
dump-macros
Wypisuje wszystkie sekwencje klawiszy readline przypisane
do makr i łańcuchy jakie dają w wyniku. Jeżeli podano
argument numeryczny, wyjście jest formatowane w taki
sposób, by można zrobić je częścią pliku inputrc.
display-shell-version (C-x C-v)
Wyświetla informację o wersji aktualnego egzemplarza
bash.
Programowalne uzupełnianie
Gdy następuje próba uzupełnienia słowa dla argumentu polecenia,
dla którego zdefiniowano specyfikację uzupełniania (completion
specification, compspec) przy pomocy wbudowanego polecenia complete
(zobacz WBUDOWANE POLECENIA POWŁOKI poniżej), wywoływane
są usługi programowalnego uzupełniania.
Po pierwsze, identyfikowana jest nazwa polecenia. Jeżeli dla tego polecenia zdefiniowano compspec, to compspec jest używane do utworzenia listy możliwych uzupełnień słowa. Jeżeli słowo polecenia jest pełną nazwą ścieżkową, to najpierw szukane jest compspec dla pełnej nazwy. Jeśli nie zostanie odnalezione, to następuje próba znalezienia compspec dla części występującej po ostatnim ukośniku.
Po odnalezieniu compspec, jest ono używane do utworzenia listy pasujących słów. Jeżeli compspec nie zostało znalezione, to wykonywane jest domyślne uzupełnianie basha, jak opisano powyżej w Uzupełnianie.
Na początek, używane są akcje określone przez compspec. Zwracane są wyłącznie dopasowania poprzedzone dopasowywanym słowem. Gdy do uzupełniania nazw plików lub katalogów użyto opcji -f lub -d, do filtrowania dopasowań wykorzystywana jest zmienna powłoki FIGNORE.
W następnej kolejności tworzone są ewentualne uzupełnienia określone przez wzorzec rozwinięcia nazw plików opcji -G. Słowa tworzone przez wzorzec nie muszą pasować do uzupełnianego słowa. Zmienna powłoki GLOBIGNORE nie jest używana do filtrowania dopasowań, ale zmienna FIGNORE jest używana.
Następnie, brany jest pod uwagę łańcuch podany jako argument opcji -W. Łańcuch jest najpierw rozbijany przy zastosowaniu znaków ze zmiennej specjalnej IFS jako separatorów. Honorowane jest cytowanie powłoki. Później każde ze słów interpretowane jest z wykorzystaniem interpretacji nawiasów, interpretacji tyld, podstawiania parametrów, interpretacji zmiennych i wyrażeń arytmetycznych, podstawiania wyników poleceń i rozwijania nazw ścieżkowych, jak opisano powyżej w sekcji INTERPRETACJA. Wyniki są rozbijane z zastosowaniem reguł opisanych powyżej w sekcji Podział na słowa. Wyniki interpretacji są dopasowywane przedrostkiem z uzupełnianym słowem, a pasujące słowa stają się możliwymi uzupełnieniami.
Po utworzeniu tych dopasowań, wywoływana jest funkcja lub polecenie określone opcjami -F i -C. Podczas wywoływania polecenia czy funkcji, zmiennym COMP_LINE i COMP_POINT przypisywane są wartości, jak opisano to powyżej w sekcji Zmienne powłoki. Jeżeli wywoływana jest funkcja powłoki, ustawiane są również zmienne COMP_WORDS i COMP_CWORD. Kiedy wywoływana jest funkcja czy polecenie, pierwszym argumentem staje się nazwa polecenia, którego argumenty są uzupełniane, drugim argumentem -- uzupełniane słowo, a trzecim słowo poprzedzające w wierszu poleceń słowo aktualnie uzupełniane. Nie jest wykonywane żadne filtrowanie utworzonych uzupełnień stosownie do uzupełnianego słowa. Funkcja czy polecenie mają pełną swobodę tworzenia dopasowań.
W pierwszej kolejności wywoływana jest funkcja określona przez -F. Do tworzenia dopasowań może ona korzystać z dowolnych możliwości powłoki, łącznie z opisanym poniżej poleceniem wbudowanym compgen. Funkcja musi umieścić możliwe uzupełnienia w zmiennej tablicowej COMPREPLY.
Następnie, wywoływane jest polecenie określone opcją -C, działające w środowisku równoważnym podstawianiu poleceń. Powinno ono wypisać listę uzupełnień, po jednym w wierszu, na standardowe wyjście. Jeżeli jest to niezbędne, do utworzenia znaku nowej linii można użyć odwróconego ukośnika.
Po utworzeniu wszelkich możliwych uzupełnień, do listy tej stosowany jest filtr określony opcją -X. Filtr jest takim wzorcem, jak używany przy rozwijaniu nazw ścieżkowych. Znak & we wzorcu zastępowany jest tekstem uzupełnianego słowa. Literał & można otrzymać poprzedzając go odwrotnym ukośnikiem; odwrotny ukośnik zostanie usunięty przed próbą dopasowania. Wszystkie uzupełnienia pasujące do wzorca będą usunięte z listy. Początkowy ! daje zaprzeczenie wzorca. Będą wówczas usuwane uzupełnienia nie pasujące do wzorca.
Na koniec, do każdego elementu listy dodawane są przedrostek i przyrostek określone opcjami -P i -S, a wynik zwracany jest do kodu uzupełniania readline jako lista możliwych uzupełnień.
Jeśli poprzednio zastosowane działania nie utworzyły żadnych dopasowań, zaś przy definiowaniu compspec podano opcję -o dirnames polecenia complete, to dokonywana jest próba uzupełnienia nazwy katalogu.
Domyślnie, jeżeli znaleziono compspec, to cokolwiek ono utworzy zwracane jest do kodu uzupełniającego jako pełny zestaw możliwych uzupełnień. Nie są próbowane domyślne uzupełnienia bash, a domyślne uzupełnianie nazw ścieżkowych przez readline jest wyłączone. Jeśli przy definiowaniu compspec podano opcję -o default polecenia complete, to jeżeli compspec nie utworzy żadnych uzupełnień, wykonane zostanie domyślne uzupełnianie z readline.
Historia
Jeżeli włączona jest opcja -o history wbudowanego polecenia set, to powłoka zapewnia dostęp do historii poleceń, listy poleceń poprzednio wprowadzonych. Wartość zmiennej HISTSIZE wykorzystywana jest jako liczba poleceń do zachowania na liście historii. Zachowywany jest tekst ostatnich HISTSIZE poleceń (domyślnie 500. Powłoka przechowuje każde polecenie na liście przed podstawieniem wartości parametrów i zmiennych (zobacz powyżej INTERPRETACJA), ale przed wykonaniem interpretacji historii, w zależności od wartości zmiennych powłoki HISTIGNORE i HISTCONTROL.
Przy uruchamianiu, historia inicjowana jest z pliku o nazwie wskazanej zmienną HISTFILE (domyślnie ~/.bash_history). Plik o nazwie wziętej z wartości HISTFILE jest obcinany, jeśli zachodzi potrzeba, by zawierał nie więcej wierszy niż określono to wartością zmiennej HISTFILESIZE. Podczas kończenia pracy powłoki interaktywnej, ostatnie $HISTSIZE wierszy kopiowane jest z listy historii do $HISTFILE. Jeżeli włączona jest opcja powłoki histappend (zobacz opis shopt w sekcji WBUDOWANE POLECENIA POWŁOKI poniżej), to wiersze są dodawane na koniec pliku historii, w przeciwnym razie plik historii jest nadpisywany. Jeżeli HISTFILE nie jest ustawione lub plik historii nie daje się zapisać, to historia nie jest zachowywana. Po zapisaniu, plik historii jest obcinany, by nie zawierał więcej niż HISTFILESIZE wierszy. Jeśli HISTFILESIZE nie jest ustawione, to obcinanie nie jest wykonywane.
Do edycji lub ponownego wykonania części listy historii można korzystać z wbudowanego polecenia fc (zobacz WBUDOWANE POLECENIA POWŁOKI poniżej). Wbudowanego polecenia history można używać do wyświetlania lub zmiany listy historii i manipulacji plikiem historii. Podczas posługiwania się edycją wiersza poleceń, w każdym z trybów edycji umożliwiających dostęp do listy historii, dostępne są polecenia przeszukiwania.
Powłoka umożliwia kontrolę nad tym, jakie polecenia są zachowywane na liście. Można ustawić zmienne HISTCONTROL i HISTIGNORE, co spowoduje, że powłoka będzie zachowywać tylko podzbiór wprowadzonych poleceń. Opcja powłoki cmdhist, jeżeli jest włączona, powoduje, że powłoka będzie usiłować zachować każdy wiersz polecenia wielowierszowego w tej samej pozycji historii, dodając, gdzie jest to niezbędne, średniki, by zachować poprawność składni. Opcja powłoki lithist powoduje, że powłoka będzie zachowywać polecenia z osadzonymi znakami nowej linii zamiast średników. Zobacz opis wbudowanego shopt poniżej, w sekcji WBUDOWANE POLECENIA POWŁOKI, gdzie znajdziesz informacje o ustawianiu i kasowaniu opcji powłoki.
Interpretacja Historii
Powłoka obsługuje funkcję interpretacji historii, podobną do interpretacji historii w csh. Ta sekcja opisuje dostępne możliwości składni. Funkcja ta jest domyślnie włączona dla powłok interaktywnych i może być wyłączona przy pomocy opcji +H wbudowanego polecenia set (zobacz poniżej WBUDOWANE POLECENIA POWŁOKI). Powłoki nie-interaktywne domyślnie nie wykonują interpretacji historii.
Interpretacja historii wprowadza słowa z listy historii do strumienia wejściowego, ułatwiając powtarzanie poleceń lub poprawianie szybkie błędów w poprzednich poleceniach.
Interpretacja historii przeprowadzana jest bezpośrednio po przeczytaniu pełnego wiersza, przed jego podziałem na słowa przez powłokę. Odbywa się w dwu częściach. Pierwszą jest określenie, który wiersz z listy historii ma zostać użyty podczas podstawiania. Drugą stanowi wybór części tego wiersza do włączenia w bieżący. Wybrany z historii wiersz jest zdarzeniem (event), a jego części na których wykonywane są działania są słowami. Dostępne są różne modyfikatory do manipulowania wybranymi słowami. Wiersz rozbijany jest na słowa w ten sam sposób jak podczas odczytu wejścia, tak że kilka słów separowanych metaznakami ujętych w cudzysłowy traktowanych jest jak jedno słowo. Interpretacja historii wprowadzana są obecnością znaku rozwijającego historię, którym domyślnie jest !. Cytować ten znak mogą wyłącznie odwrotny ukośnik (\) i pojedyncze cudzysłowy.
Kilka opcji powłoki ustawianych przy pomocy shopt może służyć do śledzenia działania interpretacji historii. Jeżeli opcja histverify powłoki jest włączona (zobacz opis wbudowanego shopt) i używane jest readline, to podstawienia historii nie są natychmiast przesyłane do analizatora składni (parsera) powłoki. Zamiast tego, zinterpretowany wiersz jest ponownie ładowany do bufora edycyjnego readline w celu dalszej modyfikacji. Jeżeli wykorzystywane jest readline i włączona jest opcja histreedit, to zakończone niepowodzeniem podstawienie historii zostanie ponownie załadowane do bufora edycyjnego readline w celu poprawienia. Opcją -p wbudowanego polecenia history można posłużyć się do oglądnięcia, co zrobi interpretacja historii przed jej zastosowaniem. Opcji -s wbudowanego polecenia history można użyć w celu dodania poleceń na koniec listy historii bez faktycznego ich wykonania, tak że będą dostępne dla następnych przywołań.
Powłoka pozwala na kontrolowanie różnych znaków stosowanych przez mechanizm interpretacji historii (zobacz opis histchars powyżej, w sekcji Zmienne powłoki).
Desygnatory zdarzeń (Event Designators)
Desygnator zdarzenia jest odwołaniem do pozycji wiersza poleceń
na liście historii.
- !
- Rozpoczyna podstawianie historii, z wyjątkiem sytuacji, gdy występuje po nim odstęp, znak nowej linii, = lub (.
- !n
- Wskazuje na n-ty wiersz poleceń.
- !-n
- Wskazuje na wiersz poleceń bieżący minus n.
- !!
- Wskazuje na poprzednie polecenie. jest to synonim ‘!-1’. !łańcuch Wskazuje na ostatnie poleceniem rozpoczynające się od łańcucha. !?łańcuch[?] Wskazuje na ostatnie polecenie zawierające łańcuch. Kończące ? można pominąć jeśli bezpośrednio po łańcuchu występuje znak nowej linii. ^łańcuch1^łańcuch2^ Szybkie podstawianie. Powtarza ostatnie polecenie, wymieniając łańcuch1 na łańcuch2. Rónoważnik ,,!!:s/łańcuch1/łańcuch/’’ (zobacz poniżej Modyfikatory).
- !#
- Cały wiersz poleceń wpisany do tego momentu.
Desygnatory słów (Word Designators)
Desygnatory słów służą do wybierania ze zdarzenia żądanych słów.
Dwukropek : oddziela określenie zdarzenia od desygnatora słowa.
Może być pominięty jeśli desygnator słowa rozpoczyna się od ^,
$, *, - lub %. Słowa numerowane są od początku wiersza, przy
czym pierwsze ma numer 0 (zero). Słowa są wstawiane do
bieżącego wiersza, rozdzielane pojedynczymi spacjami.
0 (zero)
Słowo zerowe. Dla powłoki jest to słowo polecenia.
- n
- n-te słowo.
- ^
- Pierwszy argument. To znaczy, słowo 1.
- $
- Ostatni argument.
- %
- Słowo dopasowane przez ostatnie wyszukanie ‘?łańcuch?’.
- x-y
- Zakres słów; ‘-y’ jest skróconym ‘0-y’.
- *
- Wszystkie słowa prócz zerowego. jest to synonim dla ‘1-$’. Nie jest błędem użycie * jeśli w zdarzeniu jest tylko jedno słowo; w tym przypadku zwracany jest łańcuch pusty.
- x*
- Skrót od x-$.
- x-
- Skrót od x-$ podobnie jak x*, ale pomija ostatnie słowo.
jeśli desygnator słowa podano bez określenia zdarzenia, za zdarzenie przyjmowane jest poprzednie polecenie.
Modyfikatory
Po opcjonalnym desygnatorze słowa może pojawić się sekwencja
jednego lub więcej poniższych modyfikatorów, każdy poprzedzony
dwukropkiem ‘:’.
- h
- Usuwa końcową składową nazwy pliku, pozostawiając tylko początek.
- t
- Usuwa wszystkie początkowe składowe nazwy pliku, pozostawiając koniec.
- r
- Usuwa kończący przyrostek postaci .xxx, pozostawiając główną część nazwy (basename).
- e
- Usuwa wszystko prócz końcowego przyrostka.
- p
- Wypisuje nowe polecenie, ale go nie wykonuje.
- q
- Cytuje podstawiane słowa, zabezpieczając je przed dalszym podstawianiem.
- x
- Cytuje podstawiane słowa jak q, ale rozbija na słowa w miejscach odstępów i znaków nowej linii. s/stary/nowy/ Zastępuje nowym pierwsze wystąpienie starego w wierszu zdarzenia. Zamiast / może zostać użyty dowolny ogranicznik. Końcowy ogranicznik jest opcjonalny jeżeli jest ostatnim znakiem wiersza zdarzenia. Separator może być cytowany w nowym i starym przy pomocy pojedynczego odwrotnego ukośnika. Jeżeli w nowym pojawia się &, to jest zastępowany starym. Pojedynczy odwrotny ukośnik będzie cytował &. Jeżeli stary jest pusty, to ustawiany jest na ostatni podstawiany stary lub, jeśli nie było poprzednich podstawień historii, ostatni łańcuch w wyszukiwaniu !?łańcuch[?].
- &
- Powtarza poprzednie podstawienie.
- g
- Powoduje, że zmiany zostaną zastosowane do całego wiersza zdarzenia. Używany w połączeniu z ‘:s’ (np. ‘:gs/old/new/’) lub ‘:&’. Jeśli użyty z ‘:s’, to zamiast / można posłużyć się dowolnym separatorem, a ostatni separator jest opcjonalny jeżeli jest ostatnim znakiem wiersza zdarzenia.
Wbudowane Polecenia Powłoki
Jeśli nie podano inaczej, każde z poleceń wbudowanych opisanych
w niniejszej sekcji jako akceptujące opcje poprzedzone - akceptuje
również symbol -- określający koniec opcji.
: [argumenty]
Bez efektów; polecenie to nie robi niczego poza interpretacją
argumentów i wykonaniem ewentualnych podanych
przekierowań. Zwracany jest zerowy kod zakończenia.
- .
- plik [argumenty] source plik [argumenty] Odczytuje i wykonuje polecenia z zadanego pliku w aktualnym środowisku powłoki i zwraca kod zakończenia ostatniego wykonanego polecenia z tego pliku. Jeżeli nazwa pliku nie zawiera ukośnika, to do znalezienia katalogu go zawierającego używana jest zmienna PATH. Plik poszukiwany w PATH nie musi być wykonywalny. Jeśli bash nie jest w trybie posix, wówczas jeżeli nie znaleziono pliku w PATH, to przeszukiwany jest katalog bieżący. Jeśli we wbudowanym poleceniu shopt wyłączona jest opcja sourcepath, to PATH nie jest przeszukiwane. jeśli podano jakieś argumenty, to stają się one parametrami pozycyjnymi podczas wykonywania pliku. W przeciwnym razie argumenty pozycyjne pozostają bez zmian. Kod zakończenia jest kodem ostatniego zakończonego przez skrypt polecenia (0 jeśli nie wykowano żadnego polecenia), a fałszem jeżeli nie znaleziono pliku lub nie można go odczytać.
alias [-p] [nazwa[=wartość] ...]
Alias bez argumentów bądź z opcją -p wypisuje na standardowym
wyjściu listę aliasów w postaci alias
nazwa=wartość. Jeśli nie dostarczono argumenty, to
definiowany jest alias (synonim) dla każdej nazwy, dla
której podano wartość. Początkowa spacja w wartości
powoduje, że podczas interpretacji aliasu następne słowo
będzie sprawdzane na podstawianie aliasów. Dla każdej
nazwy z listy argumentów, dla której nie podano wartości,
wypisywana jest nazwa i wartość aliasu. Alias zwraca
prawdę, chyba że podano nazwę, dla której nie został
zdefiniowany żaden alias.
bg [spec_zad]
Wznawia w tle zawieszone zadanie spec_zad, tak jakby
zostało ono uruchomione z &. Jeśli spec_zad nie
występuje, to używane jest bieżące zadanie, określone
tak, jak je pojmuje powłoka. bg spec_zad zwraca 0, chyba
że uruchomiono je przy wyłączonej kontroli zadań (job
control) lub uruchomiono z włączoną kontrolą zadań, jeśli
nie znaleziono spec_zad lub uruchomiono bez kontroli
zadań.
bind [-m keymap] [-lpsvPSV]
bind [-m keymap] [-q funkcja] [-u funkcja] [-r sekw_klaw]
bind [-m keymap] -f plik
bind [-m keymap] -x sekw_klaw:polec_powłoki
bind [-m keymap] sekw_klaw:nazwa_funkcji
Wyświetla bieżące ustawienia przypisań (bindings) klawiszy
i funkcji readline lub przypisuje sekwencję klawiszy
to funkcji lub makra readline. Składnia tych przypisań
jest identyczna jak dla .inputrc, ale każde z przypisań
musi być przesłane jako osobny argument; np.,
‘"\C-x\C-r": re-read-init-file’. Opcje, jeśli je podano,
mają następujące znaczenie:
-m keymap
Wykorzystuje keymap jako mapę klawiszy, do której
mają być zastosowane następne przypisania. Akceptowanymi
nazwami map klawiszy są emacs,
emacs-standard, emacs-meta, emacs-ctlx, vi,
vi-move, vi-command i vi-insert. vi równoważne
jest vi-command; emacs jest równoważne emacs-stan_dard.
- -l
- Podaje nazwy wszystkich funkcji readline.
- -p
- Wyświetla nazwy funkcji i przypisania w taki sposób, że mogą być ponownie odczytane.
- -P
- Podaje bieżące przypisania i nazwy funkcji readline.
- -v
- Wyświetla nazwy i wartości zmiennych readline w taki sposób, że mogą być ponownie odczytane.
- -V
- Podaje bieżące nazwy i wartości zmiennych readline.
- -s
- Wyświetla sekwencje klawiszy readline przypisane do makr i łańcuchy jakie one wysyłają w taki sposób, że mogą być ponownie odczytane.
- -S
- Wyświetla sekwencje klawiszy readline przypisane do makr i łańcuchy jakie one wysyłają. -f plik Czyta przypisania klawiszy z pliku. -q funkcja Podaje, które klawisze wywołują podaną funkcję. -u funkcja Odwołuje przypisania wszystkich klawiszy przypisanych do danej funkcji. -r sekw_klaw Usuwa bieżące przypisania dla sekwencji klawiszy. -x sekw_klaw:polec_powłoki Powoduje, że za każdym naciśnięciem sekwencji klawiszy zostanie wykonane polecenie powłoki.
Zwracana jest wartość 0, chyba że podano nierozpoznaną opcję lub pojawił się błąd.
break [n]
Opuszcza pętlę for, while, until lub select. Jeżeli
podano n, przerywa działanie do n-tego poziomu. n musi
być >= 1. Jeżeli n jest większe od liczby obejmujących
polecenie pętli, to kończone są wszystkie obejmujące
pętle. Wartością zwracaną jest 0, chyba że powłoka nie
wykonuje pętli podczas wykonania break.
builtin wbudowane [argumenty]
Wykonuje zadane polecenie wbudowane powłoki, przesyłając
mu argumentyizwracajegokodzakończenia. Przydatne podczas
definiowania funkcji o nazwie tożsamej z nazwą wbudowanego
polecenia powłoki, zachowując funkcjonalność
polecenia wbudowanego wewnątrz funkcji. Wbudowane cd
jest powszechnie redefiniowane w ten sposób. Kodem
zakończenia jest fałsz jeśli wbudowane nie jest wbudowanym
poleceniem powłoki.
cd [-LP] [katalog]
Zmienia bieżący katalog roboczy na dir. Zmienna HOME jest
domyślnym katalogiem. Zmienna CDPATH definiuje ścieżkę
przeszukiwań dla katalogu zawierającego katalog. Alternatywne
nazwy katalogów w CDPATH rozdzielane są dwukropkiem
(:)> Pusta nazwa katalogu w CDPATH jest tym samym,
co katalog bieżący, tj. ,,.’’. Jeżeli katalog rozpoczyna
się ukośnikiem (/), to CDPATH nie jest używane. Opcja -P
nakazuje użycie fizycznej struktury katalogów zamiast
podążania za dowiązaniami symbolicznymi (zobacz też opcja
-P wbudowanego polecenia set); Opcja -L wymusza podążanie
za dowiązaniami symbolicznymi. Argument - jest
równoważny $OLDPWD. Wartością zwracaną jest prawda jeśli
pomyślnie zmieniono katalog; w przeciwnym przypadku
fałsz.
command [-pVv] polecenie [arg ...]
Uruchamia polecenie z argumentami zakazując zwykłego
wyszukiwania funkcji przez powłokę. Wykonywane są
wyłącznie polecenia wbudowane i polecenia znalezione w
PATH. Jeżeli podano opcję -p, wyszukiwanie polecenia
wykonywane jest przy użyciu domyślnej PATH, która gwarantuje
znalezienie wszystkich standardowych narzędzi.
Jeśli użyto albo opcji -V albo -v, to wypisywany jest
opis polecenia. Opcja -v powoduje, że zostanie wyświetlone
pojedyncze słowo wskazujące polecenie lub nazwę
pliku, użyte do wywołania polecenia; opcja -V tworzy
bardziej rozgadany opis. Jeżeli podano opcję -V lub -v,
to kodem zakończenia jest 0 gdy odnaleziono polecenie,
zaś 1 gdy nie. Jeśli nie podano żadnej z tych opcji i
pojawił się błąd lub nie można znależć polecenia, to kod
zakończenia wynosi 127. W przeciwnym wypadku kodem
zakończenia wbudowanego polecenia command jest kod
zakończenia polecenia.
compgen [opcja] [słowo]
Tworzy możliwe dopasowania uzupełnień dla słowa zgodnie z
opcjami, które mogą być dowolnymi z opcji akceptowanych
przez wbudowane polecenie complete, z wyjątkiem -p i -r,
i wypisuje dopasowania na standardowe wyjście. Przy
stosowaniu opcji -F lub -C, różne zmienne powłoki ustawiane
przez usługi programowalnego uzupełniania, gdy są
dostępne, nie będą mieć użytecznych wartości.
Dopasowania będą tworzone w ten sam sposób, jakby kod uzupełniania programowalnego tworzył je wprost ze specyfikacji uzupełniania z tymi samymi flagami. Jeżeli podano słowo, to wyświetlone zostaną wyłącznie uzupełnienia doń pasujące.
Wartością zwracaną jest prawda, chyba że podano niepoprawną opcję lub nie zostały utworzone żadne dopasowania.
complete [-abcdefgjkvu] [-o opcjacomp] [-A akcja] [-G wzglob]
[-W listasłów] [-P przedrostek] [-S przyrostek]
[-X wzfiltr] [-F funkcja] [-C polecenie] nazwa [nazwa
...]
complete -pr [nazwa ...]
Określa, w jaki sposób będą uzupełniane argumenty dla
każdej z nazw. Jeżeli podano opcję -p, lub nie podano
żadnych opcji, to wypisywane są istniejące specyfikacje
uzupełniania - w sposób, który pozwala na ich ponowne
wykorzystanie jako wejścia. Opcja -r usuwa specyfikację
uzupełniania dla każdej z nazw, lub jeśli nazw nie
podano, wszystkie specyfikacje uzupełniania.
Proces stosowania tych specyfikacji uzupełnień podczas prób uzupełniania słów omówiono powyżej w sekcji Programowalne uzupełnianie.
Pozostałe opcje, jeśli je podano, mają niżej opisane
znaczenie. Argumenty opcji -G, -W i -X (i, jeśli to
niezbędne, -P i -S) powinny być cytowane dla ochrony
przed interpretacją jaka wystąpi zanim zostanie wywołane
polecenie complete.
-o opcjacomp
Wartość opcjacomp reguluje kilka aspektów
zachowania się compspec wykraczających poza
zwykłe tworzenie uzupełnień. opcjacomp przyjmuje
jedną z wartości:
default Stosuje domyślne uzupełnianie readline
jeśli compspec nie utworzy żadnych dopasowań.
dirnames
Wykonuje uzupełnianie nazw katalogów
jeśli compspec nie utworzy żadnych dopasowań.
filenames
Powiadamia readline, że compspec tworzy
nazwy plików, zatem może wykonać
przetwarzanie specyficzne dla takich nazw
(jak dodanie ukośnika do nazw katalogów
czy usunięcie końcowych spacji). Zaprojektowane
do stosowania z funkcjami
powłoki.
-A akcja
akcja może być jedną z poniższych, tworzących
listę możliwych dopasowań:
- alias
- Nazwy aliasów. Można też podać jako -a. arrayvar Nazwy zmiennych tablicowych. binding Nazwy przypisań klawiszy readline. builtin Nazwy wbudowanych poleceń powłoki. Można też podać jako -b. command Nazwy poleceń. Można też podać jako -c. directory Nazwy katalogów. Można też podać jako -d. disabled Nazwy wyłączonych poleceń wbudowanych powłoki. enabled Nazwy włączonych poleceń wbudowanych powłoki. export Nazwy wyeksportowanych zmiennych powłoki. Można też podać jako -e.
- file
- Nazwy plików. Można też podać jako -f. function Nazwy funkcji powłoki.
- group
- Nazwy grup. Można też podać jako -g. helptopic Tematy pomocy akceptowane przez wbudowane polecenie help. hostname Nazwy hostów, pobrane z pliku określonego przez zmienną powłoki HOSTFILE. job Nazwy zadań, jeżeli aktywne jest sterowanie zadaniami. Można też podać jako -j. keyword Zastrzeżone słowa powłoki. Można też podać jako -k. running Nazwy działających zadań, jeżeli aktywne jest sterowanie zadaniami. setopt Dozwolone argumenty opcji -o polecenia wbudowanego set. shopt Nazwy opcji powłoki, takie, jakie akceptuje polecenie wbudowane shopt. signal Nazwy sygnałów. stopped Nazwy zatrzymanych zadań, jeśli aktywne jest sterowanie zadaniami.
- user
- Nazwy użytkowników. Można też podać jako -u. variable Nazwy wszystkich zmiennych powłoki. Można też podać jako -v. -G wzglob Wzorzec rozwijania nazw plików wzglob jest rozwijany, tworząc listę możliwych uzupełnień. -W listasłów listasłów jest rozbijana przy zastosowaniu znaków ze zmiennej specjalnej IFS jako separatorów, a każde ze słów wynikowych jest interpretowane. Możliwe uzupełnienia są elementami listy wynikowej, pasującymi do uzupełnianego słowa. -C polecenie polecenie wykonywane jest w środowisku podpowłoki, a jego wyjście używane jest jako możliwe uzupełnienia. -F funkcja Funkcja powłoki funkcja wykonywana jest w bieżącym środowisku powłoki. Po jej zakończeniu, możliwe uzupełnienia pobierane są z wartości zmiennej tablicowej COMPREPLY. -X wzfiltr wzfiltr jest wzorcem używanym do rozwijania nazw plików. Stosowany jest do listy możliwych uzupełnień utworzonej przez poprzedzające go opcje i argumenty, a każde pasujące do niego uzupełnienie jest usuwane z listy. Początkowy ! w wzfiltr powoduje negację wzorca; usuwane są wówczas uzupełnienia nie pasujące do wzfiltr. -P przedrostek Po zastosowaniu wszystkich innych opcji na początku każdego możliwego uzupełnienia jest dodawany przedrostek. -S przyrostek Po zastosowaniu wszystkich innych opcji na końcu każdego możliwego uzupełnienia jest dołączany przyrostek.
Wartością zwracana jest prawda, chyba że podano niepoprawną opcję, podano bez argumentu nazwa opcję inną niż -p lub -r, usiłowano usunąć specyfikację uzupełniania dla nazwy, dla której nie istnieje żadna specyfikacja, albo też podczas dodawania specyfikacji uzupełniania wystąpił błąd.
continue [n]
Wznawia następną iterację obejmującej je pętli for,
while, until lub select. Jeżeli podano n, wznawia n-tą
obejmującą pętlę. n musi być >= 1. Jeżeli n jest większe
niż liczba obejmujących pętli, to wznawiana jest ostatnia
z pętli (,,najwyższa’’). Wartość zwracana wynosi 0, chyba
że powłoka nie wykonuje pętli podczas wykonywania continue.
declare [-afFirx] [-p] [nazwa[=wartość]]
typeset [-afFirx] [-p] [nazwa[=wartość]]
Deklaruje zmienne i/lub nadaje im atrybuty. Jeśli nie
podano żadnych nazw, wyświetla wartości zmiennych. Opcja
-p będzie wyświetlać atrybuty i wartości każdej nazwy.
Gdy używane jest -p, ignorowane są dodatkowe opcje.
Opcja -F zabrania wyświetlania definicji funkcji; wypisywane
są tylko nazwy i atrybuty funkcji. Opcja -F implikuje
-f. Poniższych opcji można użyć do ograniczenia
wyników do zmiennych o określonym atrybucie lub do nadania
zmiennym atrybutów:
- -a
- Każda z nazw jest zmienną tablicową (zobacz Tablice powyżej).
- -f
- Używa wyłącznie nazw funkcji.
- -i
- Zmienna jest traktowana jak całkowita; gdy zmiennej jest przypisywana wartość, wykonywana jest interpretacja wyrażeń arytmetycznych (zobacz OBLICZANIE WYRAŻEŃ ARYTMETYCZNYCH).
- -r
- Powoduje, że dane nazwy stają się tylko-do-odczytu (readonly). Nazwom tym nie można przypisać wartości następnymi poleceniami przypisania. Nie można też ich usunąć za pomocą unset.
- -x
- Zaznacza nazwę do wyeksportowania przez środowisko do kolejnych poleceń.
Użycie ‘+’ zamiast ‘-’ wyłącza atrybut, z wyjątkiem tego, że +a nie może być używane do niszczenia zmiennej tablicowej. Użyte w funkcji, powodują, że każda z nazw staje się lokalna, jak przy pomocy polecenia local. Zwracana jest wartość 0, chyba że napotkano niepoprawną opcję, próbę zdefiniowania funkcji przy pomocy ,,-f foo=bar’’, przypisania wartości zmiennej readonly, przypisania wartości zmiennej tablicowej bez użycia składni przypisania złożonego (zobacz Tablice powyżej), jedna z nazw nie jest poprawną nazwą zmiennej powłoki, usiłowano wyłączyć status readonly dla zmiennej tylko do odczytu, wyłączyć status tablicy dla zmiennej tablicowej albo próbowano wyświetlić nieistniejącą funkcję przy pomocy -f.
dirs [-clpv] [+n] [-n]
Bez opcji wyświetla listę aktualnie zapamiętanych katalogów.
Domyślnie wyświetlana jest ona w pojedynczym
wierszu, z nazwami katalogów rozdzielonymi spacjami.
Katalogi dodawane są do listy poleceniem pushd polecenie
popd usuwa pozycje z listy.
- +n
- Wyświetla ntą pozycję licząc od lewej na liście pokazywanej przez dirs przy wywołaniu bez opcji; początkową jest zero.
- -n
- Wyświetla ntą pozycję licząc od prawej na liście pokazywanej przez dirs przy wywołaniu bez opcji; początkową jest zero.
- -c
- Czyści stos katalogów usuwając wszystkie jego pozycje.
- -l
- Tworzy dłuższy listing; domyślnie format listingu posługuje się tyldą do oznaczania katalogu domowego.
- -p
- Wypisuje stos katalogów po jednej pozycji na wiersz.
- -v
- Wypisuje stos katalogów po jednej pozycji na wiersz, poprzedzając każdą z nich jej pozycją (indeksem) w stosie.
Wartością zwracaną jest 0, chyba że podano nieprawidłową opcję lub n wskazuje poza koniec stosu katalogów.
disown [-ar] [-h] [zadanie ...]
Bez opcji, każde z podanych zadań usuwane jest z tablicy
zadań aktywnych. Jeśli użyto opcji -h, każde zadanie nie
jest usuwane z tablicy, ale jest jako takie zaznaczane,
tak że do zadania nie jest wysyłany sygnał SIGHUP jeśli
powłoka otrzymuje SIGHUP. Jeśli nie podano zadania i nie
użyto ani opcji -a ani -r, to używane jest zadanie
bieżące. Jeżeli podano zadanie, opcja -a oznacza
usunięcie lub zaznaczenie wszystkich zadań; opcja -r bez
argumentu zadania ogranicza akcję do działających zadań.
Wartością zwracaną jest 0, chyba że zadanie nie określa
poprawnego zadania.
echo [-neE] [argument ...]
Wyświetla argumenty, rozdzielone spacjami, zakończone
znakiem nowej linii. Kodem zakończenia jest zawsze 0.
Jeżeli podano -n, to nie jest wysyłany kończący znak
nowej linii. Jeżeli podano opcję -e, włączana jest
interpretacja podanych niżej znaków specjalnych. Opcja -E
wyłącza interpretację tych znaków, nawet na systemach,
gdzie są one domyślnie interpretowane. Do dynamicznego
sprawdzania, czy echo interpretuje domyślnie te znaki,
czy nie, służy opcja powłoki xpg_echo. echo nie interpretuje
-- jako oznaczenia końca opcji. echo interpretuje
następujące sekwencje specjalne:
- \a
- dzwonek (alert)
- \b
- backspace
- \c
- pomiń kończący znak nowej linii
- \e
- znak escape
- \f
- wysuw strony (form feed)
- \n
- znak nowej linii (new line)
- \r
- powrót karetki (carriage return)
- \t
- tabulacja pozioma (horizontal tab)
- \v
- tabulacja pionowa (vertical tab)
- \\
- odwrotny ukośnik (backslash) \nnn ośmiobitowy znak, którego wartością jest ósemkowa liczba nnn (jedna do trzech cyfr) \xHH ośmiobitowy znak, którego wartością jest szesnastkowa liczba nnn (jedna lub dwie cyfry szesnastkowe)
enable [-adnps] [-f plik] [nazwa ...]
Włącza i wyłącza wbudowane polecenia powłoki. Wyłączenie
poleceń wbudowanych umożliwia wykonanie polecenia
dyskowego mającego tę samą nazwę, co wbudowane, bez
podawania jego pełnej nazwy ścieżkowej, mimo iż powłoka
normalnie szuka poleceń wbudowanych przed poleceniami
dyskowymi. Jeżeli posłużono się opcją -n, wyłączana jest
każda z nazw; w przeciwnym razie nazwy są włączone. Na
przykład, chcąc użyć pliku binarnego test znalezionego
przez PATH zamiast wersji wbudowanej w powłokę, należy
uruchomić ,,enable -n test’’. Opcja -f oznacza
załadowanie nowego polecenia wbudowanego nazwa z obiektu
dzielonego (shared object) plik, na systemach
obsługujących dynamiczne ładowanie. Opcja -d usunie
polecenie wbudowane załadowane poprzednio przez -f.
Jeżeli nie podano żadnych argumentów nazwa lub jeśli
podano opcję -p, wypisywana jest lista poleceń wbudowanych
powłoki. Bez innych argumentów opcyjnych, lista
ta składa się ze wszystkich włączonych poleceń wbudowanych.
Jeśli podano -n, wypisywane są tylko wyłączone
polecenia wbudowane. Jeżeli podano -a, wypisywana lista
zawiera wszystkie polecenia wbudowane, ze wskazaniem przy
każdym czy jest ono włączone czy też nie. Jeżeli podano
-s, wyjście ograniczone jest do POSIXowych ,,specjal_nych’’
poleceń wbudowanych. Wartością zwracaną jest 0,
chyba że nazwa nie jest poleceniem wbudowanym powłoki lub
wystąpił błąd podczas ładowania nowego polecenia wbudowanego
z obiektu dzielonego.
eval [argument ...]
Argumenty są czytane i łączone w pojedyncze polecenie.
Polecenie to jest następnie odczytywane i wykonywane
przez powłokę, zaś jego kod zakończenia jest zwracany
jako wartość eval. Jeżeli nie na żadnych argumentów, lub
wszystkie argumenty są puste, eval zwraca 0.
exec [-cl] [-a nazwa] [polecenie [argumenty]] Jeżeli podano polecenie, zastępuje ono powłokę. Nie tworzony jest żaden nowy proces. Argumenty stają się argumentami polecenia. Jeśli podano opcję -l, umieszcza kreskę na początku zerowego argumentu przesyłanego do polecenia. Tak samo, jak robi to login(1) . Opcja -c powoduje, że polecenie zostanie wykonane z pustym środowiskiem. Jeżeli podano -a, powłoka przesyła do wykonywanego polecenia nazwę jako zerowy argument. Jeżeli polecenie z jakiegoś powodu nie może zostać wykonane, to powłoka nie-interaktywna kończy pracę, chyba że włączona jest opcja powłoki execfail, wówczas zwraca niepowodzenie. Powłoka interaktywna zwraca niepowodzenie jeśli plik nie może zostać wykonany. Jeżeli nie podano polece_nia, przekierowania skutkują w bieżącej powłoce, a kodem zakończenia jest 0. W przypadku błędu przekierowania kod zakończenia wynosi 1.
exit [n]
Powoduje, że powłoka kończy pracę z kodem równym n. Jeśli
pominięto n, kodem zakończenia jest kod ostatniego wykonanego
polecenia. Przed końcem pracy powłoki wykonywane
jest przechwycenie sygnału EXIT.
export [-fn] [nazwa[=słowo]] ...
export -p
Podane nazwy zaznaczane są do automatycznego wyeksportowania
do środowiska następnych wykonywanych
poleceń. Jeśli podano opcję -f, to nazwy odnoszą się do
funkcji. Jeżeli nie podano żadnych nazw lub jeżeli
podano opcję -p, to wypisywana jest lista wszystkich
eksportowanych w tej powłoce nazw. Opcja -n powoduje
usunięcie cechy eksportowania z podanych zmiennych.
export zwraca zerowy kod zakończenia, chyba że napotkano
nieprawidłową opcję, jedna z nazw nie jest poprawną nazwą
zmiennej powłoki lub podano -f z nazwą, która nie jest
funkcją.
fc [-e nazwa_e] [-nlr] [pierwsze] [ostatnie]
fc -s [wzorzec=zastąpienie] [polecenie]
Polecenie poprawiania (Fix Command). W pierwszej
postaci, z listy historii wybierany jest zakres poleceń
od pierwszego do ostatniego. Pierwsze i ostatnie mogą
być podawane jako łańcuch (do odnalezienia ostatniego
polecenia rozpoczynającego się tym łańcuchem) lub jako
liczba (indeks w liście historii, gdzie liczba ujemna
używana jest jako offset od numeru bieżącego polecenia),
Jeżeli nie określono ostatniego, to jest ono ustawiane na
bieżące polecenie w przypadku listowania (tak że ,,fc -l
-10’’ wypisuje ostatnich 10 poleceń) i na pierwsze w
pozostałych przypadkach. Jeżeli nie określono pier_wszego,
polecenia to jest ono ustawiane na poprzednie
polecenie w przypadku edycji a na -16 przy listowaniu.
Opcja -n wstrzymuje wyświetlanie numerów poleceń podczas listowania. Opcja -r odwraca kolejność poleceń. Jeżeli podano opcję -l, to polecenia listowane są na standardowym wyjściu. W przeciwnym razie dla pliku zawierającego te polecenia wywoływany jest edytor podany przez nazwa_e. Jeżeli nie podano nazwa_e, używana jest wartość FCEDIT, a wartość EDITOR jeśli nie ustawiono FCEDIT. Jeżeli nie ustawiono żadnej z nich używany, jest vi Po zakończeniu edycji, wysyłane edytowane polecenia są wyświetlane przez echo i wykonywane.
W drugiej postaci, polecenie jest ponownie wykonywane po każdej wymianie wystąpienia wzorca przez zastąpienie. Przydatnym aliasem do wykorzystania z tą formą jest ,,r=fc -s’’, tak, że napisanie ,,r cc’’ uruchamia ostatnie polecenie rozpoczynające się od ,,cc’’ a napisanie ,,r’’ ponownie wykonuje ostatnie polecenie.
Jeżeli użyta została pierwsza postać, to wartością zwracaną jest 0, chyba że napotkano nieprawidłową opcję lub pierwszy albo ostatni określają wiersze historii spoza zakresu. Jeżeli podano opcję -e, wartością zwracaną jest wartość ostatniego wykonanego polecenia lub niepowodzenie jeśli pojawił się błąd tymczasowego pliku poleceń. Jeżeli użyta została druga postać, to zwracanym kodem jest kod ponownie wykonanego polecenia, chyba że polecenie nie określa poprawnego wiersza poleceń -wówczas fc zwraca porażkę.
fg [zadanie]
Wznawia zadanie na pierwszym planie i czyni je zadaniem
bieżącym. Jeżeli nie podano zadania, używane jest
bieżące zadanie w pojęciu powłoki. Wartością zwracaną
jest wartość polecenia umieszczonego na pierwszym planie,
lub porażka jeżeli fb uruchomiono przy wyłączonej kontroli
zadań, lub uruchomiono je przy włączonej kontroli
zadań, ale zadanie nie określa prawidłowego zadania lub
zadanie określa zadanie, które zostało uruchomione bez
kontroli zadań.
getopts łańcuch_opcji nazwa [argumenty]
getopts używane jest przez procedury powłoki do analizy
parametrów pozycyjnych. łańcuch opcji zawiera znaki
opcji, jakie mają być rozpoznawane; jeżeli po znaku
występuje dwukropek, to oczekuje się, że opcja będzie
posiadać argument, który powinien być od niej oddzielony
białym znakiem. Jako znaki opcji mogą wystąpić dwukropek
i znak zapytania. Przy każdym wywołaniu getopts
umieszcza następną opcję w zmiennej powłoki nazwa,
inicjując nazwę jeśli nie istniała. Indeks następnego
argumentu do przetwarzania umieszczany jest w zmiennej
OPTIND. OPTIND inicjowany jest na 1 za każdym razem, gdy
wywoływana jest powłoka lub skrypt powłoki. Gdy opcja
wymaga argumentu, getopts umieszcza go w zmiennej OPTARG.
Powłoka nie resetuje OPTIND automatycznie; musi być on
resetowany ręcznie pomiędzy wielokrotnymi odwołaniami do
getopts w tym samym wywołaniu powłoki, jeśli używany ma
być nowy zestaw parametrów.
Po napotkaniu końca opcji, getopts kończy pracę zwracając wartość większą od zera. OPTIND ustawiane jest na indeks pierwszego argumentu nie będącego opcją, zaś nazwa ustawiana jest na ?.
getopts normalnie analizuje parametry pozycyjne, ale jeśli w argumentach, podano więcej argumentów, to getopts przetwarza je zamiast parametrów pozycyjnych.
getopts może zgłaszać błędy na dwa sposoby. Jeżeli pierwszym znakiem łańcucha opcji jest dwukropek, to stosowane jest ciche (silent) zgłaszanie błędów. Przy zwykłej pracy komunikaty diagnostyczne wypisywane są przy napotkaniu nieprawidłowych opcji lub brakujących argumentów opcji. Jeżeli zmienna OPTERR ustawiona jest na 0, nie będą wyświetlane żadne komunikaty błędów, nawet jeśli pierwszym znakiem łańcucha opcji nie jest dwukropek.
Przy napotkaniu nieprawidłowej opcji getopts umieszcza ? w nazwie i, jeśli nie pracuje w trybie cichym, wypisuje komunikat błędu i kasuje OPTARG. Jeżeli getopts pracuje w trybie cichym, to znaleziony znak opcji umieszczany jest w OPTARG i nie jest wypisywany żaden komunikat diagnostyczny.
Jeśli nie znaleziono wymaganego argumentu, a getopts nie pracuje w trybie cichym, w nazwa umieszczany jest znak zapytania (?), kasowane jest OPTARG i wyświetlany jest komunikat błędu. Jeżeli getopts pracuje w trybie cichym, to w nazwie umieszczany jest dwukropek (:), a OPTARG ustawiane jest na znaleziony znak opcji.
getopts zwraca prawdę, jeśli znaleziono określoną lub nie określoną opcję. Zwraca fałsz jeżeli napotkano koniec opcji lub pojawił się błąd.
hash [-r] [-p plik] [-t] [nazwa]
Dla każdej nazwy określana i zapamiętywana jest pełna
nazwa plikowa polecenia wyszukanego w katalogach $PATH .
Jeżeli podano opcję -p, nie jest wykonywane przeszukanie
ścieżki, a plik używane jest jako pełna nazwa pliku
polecenia. Opcja -r powoduje, że powłoka zapomina wszystkie
zapamiętane wcześniej miejsca. Jeśli podano opcję
-t, to wypisywana jest odpowiadająca nazwie pełna nazwa
pliku. Jeżeli przy więcej niż jednym argumencie nazwy
podano -t, to przed każdą przechowywaną pełną nazwą wypisywana
jest nazwa. Jeżeli nie podano żadnych argumentów,
to wypisywana jest informacja o zapamiętanych
poleceniach. Kodem zwracanym jest prawda, chyba że nie
odnaleziono nazwy lub podano nieprawidłową opcję.
help [-s] [wzorzec]
Wyświetla pomocne informacje o poleceniach wbudowanych.
Jeżeli podano wzorzec, to help daje szczegółową pomoc
dotyczącą wszystkich poleceń pasujących do wzorca; w
przeciwnym razie wypisywana jest pomoc dla wszystkich
poleceń wbudowanych i struktur sterujących powłoki.
Opcja -s ogranicza wyświetlaną informację do krótkiego
opisu składni. Zwracany jest kod 0, chyba że żadne z
poleceń nie pasuje do wzorca.
history [n]
history -c
history -d offset
history -anrw [plik]
history -p arg [arg ...]
history -s arg [arg ...]
Bez żadnych opcji, wyświetla listę historii poleceń z
numerami wierszy. Wiersze ukazane z * zostały zmienione.
Argument n pokazuje jedynie ostatnich n wierszy. Jeżeli
podano plik, to używany jest on jako nazwa pliku historii;
jeśli nie, to używana jest wartość HISTFILE.
Opcje, jeżeli je podano, mają następujące znaczenie:
-c Czyści listę historii usuwając wszystkie jej pozycje.
-d offset
Usuwa wpis historii z pozycji offset.
- -a
- Dodaje ,,nowe’’ wiersze (wprowadzone od początku bieżącej sesji bash) do pliku historii.
- -n
- Wczytuje do bieżącej listy wiersze jeszcze nie przeczytane z pliku historii. Są to wiersze dołączone do pliku historii od chwili rozpoczęcia bieżącej sesji pracy bash.
- -r
- Czyta zawartość pliku historii i posługuje się nią jako bieżącą listą historii.
- -w
- Zapisuje bieżącą listę do pliku historii, nadpisując jego zawartość.
- -p
- Na zadanych argumentach wykonuje podstawianie historii (history substitution). Wyświetla wyniki na standardowym wyjściu. Nie zachowuje wyników na liście. Każdy z argumentów musi być cytowany, by wyłączyć normalną interpretację historii.
- -s
- Zachowuje argumenty na liście historii jako pojedynczą pozycję. Przed dodaniem argumentów z listy usuwane jest ostatnie polecenie.
Wartością zwracaną jest 0, chyba że napotkano nieprawidłową opcję lub podczas odczytu czy zapisu pliku historii pojawił się błąd, podano niepoprawny argument offset opcji -d, lub nie powiodła się interpretacja historii podanej jako argument -p.
jobs [-lnprs] [ zadanie ... ]
jobs -x polecenie [ argumenty ... ]
Pierwsza postać podaje aktywne zadania. Opcje mają
następujące znaczenie:
- -l
- Oprócz zwykłej informacji podaje identyfikatory procesów.
- -p
- Listuje tylko ID procesu lidera grupy procesów zadania.
- -n
- Wyświetla wyłącznie informację o zadaniach, które zmieniły status od chwili, gdy użytkownik był ostatnio powiadamiany o ich statusie.
- -r
- Ogranicz wyniki do zadań pracujących.
- -s
- Ogranicz wyniki do zadań zatrzymanych.
Jeżeli podano zadanie, wyniki ograniczane są do informacji o tym zadaniu. Kodem zwracanym jest 0, chyba że napotkano nieprawidłową opcję lub podano nieprawidłowe zadanie.
Jeżeli podano opcję -x, to jobs zastępuje wszelkie zada_nia znalezione w poleceniu lub argumentach odpowiednim ID grupy procesów, wykonuje polecenie przesyłając mu argu_menty, i zwraca jego kod zakończenia.
kill [-s sigspec | -n signum | -sigspec] [pid | jobspec] ...
kill -l [sigspec | exit_status]
Wysyła sygnały określony przez sigspec lub signum do procesu
określonego przez pid lub jobspec. sigspec jest
albo nazwą sygnału, jak np. SIGKILL albo numerem
sygnału; signum jest numerem sygnału. Jeżeli sigspec jest
nazwą sygnału, to może ona zostać podana z przedrostkiem
SIG lub bez niego. Jeśli nie podano sigspec, to przyjmuje
się SIGTERM. Opcja -l listuje nazwy sygnałów.
Jeżeli przy podanym -l użyto jakichś argumentów, to listowane
są sygnały odpowiadające tym argumentom, a kodem
zwracanym jest 0. Argument exit_status opcji -l jest
liczbą określającą numer sygnału lub kod zakończenia procesu
przerwanego przez sygnał. kill zwraca prawdę, jeśli
przynajmniej jeden z sygnałów został pomyślnie przesłany,
lub fałsz, jeśli pojawił się błąd lub napotkano
niepoprawną opcję.
let arg [arg ...]
Każdy argument jest wyrażeniem arytmetycznym, jakie ma
zostać zinterpretowane (zobacz OBLICZANIE WYRAŻEŃ ARYTMETYCZNYCH).
Jeżeli ostatni z nich interpretowany jest
jako zero, to let zwraca 1; w przeciwnym wypadku zwracane
jest 0.
local [opcja] [nazwa[=wartość] ...]
Dla każdego argumentu tworzona jest zmienna lokalna o
nazwie nazwa i jest jej przypisywana wartość. Opcją może
być każda z opcji akceptowanych przez declare. Gdy local
używane jest wewnątrz funkcji, powoduje, że zmienna nazwa
ma zasięg widzialności ograniczony do tej funkcji i jej
potomków. Bez operandów, local wysyła listę zmiennych
lokalnych na standardowe wyjście. Błędem jest użycie
local poza funkcją. Zwracany jest kod 0, chyba że local
zostanie użyte poza funkcją lub podano nieprawidłową
nazwę, albo nazwa jest zmienną tylko do odczytu.
logout Kończy pracę powłoki zgłoszeniowej.
popd [-n] [+n] [-n]
Usuwa pozycje ze stosu katalogów. Bez argumentów, usuwa
katalog z wierzchołka stosu i wykonuje cd do nowego katalogu
na wierzchołku. Argumenty, jeśli występują, mają
następujące znaczenie:
- +n
- Usuwa ntą pozycję, licząc od lewej, listy pokazywanej przez dirs, zaczynając od zera. Na przykład ,,popd +0’’ usuwa pierwszy katalog, a ,,popd +1’’ drugi.
- -n
- Usuwa ntą pozycję, licząc od prawej, listy pokazywanej przez dirs, zaczynając od zera. Na przykład ,,popd -0’’ usuwa ostatni katalog, ,,popd -1’’ przedostatni.
- -n
- Nie wykonuje zwykłej zmiany katalogu podczas usuwania katalogów ze stosu, tak że zmieniana jest tylko zawartość stosu.
Jeżeli polecenie popd powiedzie się, to wykonywane jest również dirs, a kodem zwracanym jest 0. popd zwraca fałsz jeśli napotkano nieprawidłową opcję, stos katalogów jest pusty, podano nieistniejącą pozycję stosu lub nie udała się zmiana katalogu.
printf format [argumenty]
Zapisuje sformatowane argumenty na standardowe wyjście
przy pomocy zadanego formatu. format jest łańcuchem
znakowym zawierającym trzy rodzaje obiektów: zwykłe
znaki, które są po prostu kopiowane na standardowe
wyjście, sekwencje specjalne, które są konwertowane i
kopiowane na standardowe wyjście, i specyfikacje formatu,
z których każda powoduje wypisanie następnego kolejnego
argumentu. Oprócz standardowych formatów printf(1)
, %b
powoduje, że printf interpretuje sekwencje specjalne w
odpowiednim argumencie, zaś %q powoduje, że printf wysyła
odpowiedni argument w formacie, jaki może być ponownie
wykorzystany jako wejście powłoki.
W razie potrzeby format wykorzystywany jest ponownie, aż do obsłużenia wszystkich argumentów. Jeżeli format wymaga większej ilości argumentów niż podano, to dodatkowe specyfikacje formatu zachowują się tak, jakby dostarczono im odpowiednio wartość zerową lub łańcuch pusty. Zwracana jest wartość zero w przypadku powodzenia, niezerowa przy porażce.
pushd [-n] [katalog]
pushd [-n] [+n] [-n]
Dodaje katalog na wierzchołek stosu katalogów, albo
obraca stos, czyniąc nowy wierzchołek stosu bieżącym katalogiem
roboczym. Bez argumentów, zamienia miejscami dwa
najwyższe katalogi stosu [wierzchołek i następny] i
zwraca 0, chyba że stos jest pusty. Argumenty, jeśli je
podano, mają następujące znaczenie:
- +n
- Obraca stos, tak że nty katalog (licząc od lewej listy pokazywanej przez dirs, poczynając od zera) staje się wierzchołkiem.
- -n
- Obraca stos, tak że nty katalog (licząc od prawej listy pokazywanej przez dirs, poczynając od zera) staje się wierzchołkiem.
- -n
- Nie wykonuje zwykłej zmiany katalogu podczas dodawania katalogów do stosu, tak że zmieniany jest tylko stos. katalog Odkłada katalog na wierzchołek stosu, czyniąc go nowym bieżącym katalogiem roboczym.
Jeżeli polecenie pushd powiodło się, to wykonywane jest również dirs. Jeżeli używana jest pierwsza postać pushd, to zwracane jest 0, chyba że nie udało się cd na katalog. Przy drugiej postaci, pushd zwraca 0, chyba że stos katalogów jest pusty, podano nieistniejący element stosu lub nie powiodła się zmiana katalogu na zadany nowy katalog bieżący.
pwd [-LP]
Wypisuje bezwzględną nazwę pliku bieżącego katalogu
roboczego. Pokazana nazwa nie zawiera żadnych dowiązań
symbolicznych jeśli podano opcję -P albo włączona jest
opcja -o physical wbudowanego polecenia set. Jeśli użyto
opcji -L, wypisana nazwa ścieżkowa może zawierać
dowiązania symboliczne. Zwracany kod wynosi 0, chyba że
podczas odczytu nazwy bieżącego katalogu pojawi się błąd
lub podano nieprawidłową opcję.
read [-ers] [-t timeout] [-a anazwa] [-p zachęta] [-n nznak] [-d
sep] [nazwa ...]
Ze standardowego wejścia czytany jest pojedynczy wiersz,
a jego pierwsze słowo jest przypisywane do pierwszej
nazwy, drugie słowo do drugiej nazwy i tak dalej, przy
czym pozostałe na koniec słowa i rozdzielające je separatory
przypisane zostaną do ostatniej nazwy. Jeżeli ze
standardowego wejścia przeczytano mniej słów niż podanych
zostało nazw, to pozostałym nazwom przypisywane są puste
wartości. Do podziału wiersza na słowa wykorzystywane są
znaki z IFS. Znaku odwrotnego ukośnika (\) można użyć do
usunięcia specjalnego znaczenia następnego czytanego
znaku oraz do oznaczenia kontynuacji wiersza. Opcje,
jeśli je podano, mają następujące znaczenie:
-a anazwa
Słowa są przypisywane do kolejnych indeksów zmiennej
tablicowej anazwa, poczynając od 0. anazwa
jest kasowana przed przypisaniem nowych wartości.
Inne argumenty nazwa są ignorowane.
-d sep Pierwszy znak sep służy do zakończenia wiersza
wejścia, zamiast znaku nowej linii.
- -e
- Jeżeli standardowe wejście pochodzi z terminala, to do uzyskania wiersza używane jest readline (zobacz READLINE powyżej). -n nznak read powraca po przeczytaniu nznak znaków, zamiast czekać na cały wiersz wejścia. -p zachęta Wyświetla zachętę (prompt) na standardowym wyjściu błędów, bez kończącego znaku nowej linii, przed próbą odczytu wejścia. Zachęta wyświetlana jest tylko jeśli wejście pochodzi z terminala.
- -r
- Odwrotny ukośnik nie działa jako znak specjalny. Traktowany jest jako część wiersza. W szczególności, para odwrotny ukośnik-znak nowej linii nie może być wykorzystana jako kontynuacja wiersza.
- -s
- Tryb cichy. Jeżeli wejście pochodzi z terminala, to znaki nie są powtarzane (bez echa). -t timeout Powoduje, że read zwraca niepowodzenie, jeśli w ciągu timeout sekund nie zostanie przeczytany pełny wiersz wejścia. Opcja ta nie działa, jeżeli odczyt nie jest prowadzony z terminala lub potoku.
Jeśli nie podano żadnych nazw, odczytany wiersz przypisywany jest zmiennej REPLY. Zwracany kod wynosi 0, chyba że napotkano koniec pliku lub read przekroczy czas oczekiwania.
readonly [-apf] [nazwa ...]
Podane nazwy oznaczane są jako readonly; wartości tych
nazw nie mogą być zmieniane następującymi później przypisaniami.
Jeśżli podano opcję -f, oznaczane są funkcje o
nazwach odpowiadających nazwom. Opcja -a ogranicza zmienne
do tablic. Jeśli nie podano argumentów nazw lub
jeśli podano opcję -p, wypisywane jest zestawienie wszystkich
nazw o atrybucie readonly. Opcja -p powoduje, że
wyniki będą wyświetlane w formacie, który może być
ponownie wykorzystany jako wejście. Zwracany jest kod
równy 0, chyba że napotkano nieprawidłową opcję, jedna z
nazw nie jest poprawną nazwą zmiennej powłoki lub podano
-f z nazwą, która nie jest funkcją.
return [n]
Powoduje, że funkcja kończy pracę zwracając wartość
określoną przez n. Jeśli pominięto n, kodem zakończenia
jest kod ostatniego polecenia wykonanego w ciele funkcji.
Jeżeli zostanie użyte poza funkcją, ale podczas wykonywania
skryptu przez polecenie . (source), powoduje zatrzymanie
wykonywania tego skryptu przez powłokę i zwrócenie
albo n albo kodu zakończenia ostatniego wykonanego w
skrypcie polecenia. Jeżeli zostanie użyte poza funkcją i
nie podczas wykonywania skryptu przez ., zwracany jest
fałsz.
set [--abefhkmnptuvxBCHP] [-o opcja] [arg ...]
Bez opcji, wyświetlane są nazwa i wartość każdej ze zmiennych
powłoki, w formacie który może być ponownie wykorzystany
jako wejście. Wyniki są sortowane zgodnie z
bieżącymi ustawieniami locale. Gdy podane są opcje,
ustawiają one lub kasują atrybuty powłoki. Argumenty
pozostałe po przetworzeniu opcji traktowane są jako
wartości parametrów pozycyjnych i przypisywane, kolejno,
do $1, $2, ... $n. Opcje, jeśli je podano, mają
następujące znaczenie:
- -a
- Automatycznie zaznacza zmienione lub utworzone zmienne i funkcje do wyeksportowania ich do środowiska kolejnych poleceń.
- -b
- Natychmiast podaje status zakończonych zadań drugoplanowych, zamiast czynić to przed następną podstawową zachętą. Działa tylko jeśli włączona jest kontrola zadań.
- -e
- Zakończ natychmiast jeśli polecenie proste (zobacz GRAMATYKA POWŁOKI powyżej) kończy pracę z kodem niezerowym. Powłoka nie kończy pracy, jeśli polecenie, które się nie powiodło jest częścią pętli until lub while, częścią instrukcji if, częścią listy && lub || lub wartość zwrócona przez polecenie została odwrócona przez !. Przed zakończeniem pracy powłoki wykonywana jest pułapka na sygnał ERR, jeśli była ustawiona.
- -f
- Wyłącza rozwijanie nazw plików.
- -h
- Zapamiętuje położenie poleceń przy wyszukiwania ich do wykonania. Domyślnie włączone.
- -k
- Wszystkie argumenty występujące w postaci instrukcji przypisania umieszczane są w środowisku polecenia, nie zaś tylko te, które poprzedzają nazwę polecenia.
- -m
- Tryb monitorowania. Włączona jest kontrola zadań. Opcja ta jest domyślnie włączona dla powłok interaktywnych na systemach ją obsługujących (zobacz STEROWANIE ZADANIAMI powyżej). Procesy drugoplanowe działają w odrębnej grupie procesów a po ich zakończeniu wypisywany jest wiersz zawierający ich kod zakończenia.
- -n
- Odczytuje polecenia, ale nie ich nie wykonuje. Może być wykorzystane do sprawdzenia błędów składni w skrypcie powłoki. Ignorowane przez powłoki interaktywne. -o nazwa-opcji Nazwą opcji może być jedna z poniższych: allexport To samo, co -a. braceexpand To samo, co -B. emacs Użyj interfejsu edycji wiersza poleceń w stylu emacsa. Włączone domyślnie, jeśli powłoka jest interaktywna, chyba że została uruchomiona z opcją --noediting. errexit To samo, co -e. hashall To samo, co -h. histexpand To samo, co -H. history Włącza historię poleceń, jak opisano powyżej w sekcji HISTORII. Opcja ta jest domyślnie włączona w powłokach interaktywnych. ignoreeof Efekt jest taki, jakby zostało wykonane polecenie powłoki ,,IGNOREEOF=10’’ (zobacz powyżej Zmienne powłoki). keyword To samo, co -k. monitor To samo, co -m. noclobber To samo, co -C. noexec To samo, co -n. noglob To samo, co -f.
- nolog
- Obecnie ignorowane. notify To samo, co -b. nounset To samo, co -u. onecmd To samo, co -t. physical To samo, co -P. posix Zmienia zachowanie bash tam, gdzie domyślne działanie różni się od standardu POSIX 1003.2, tak by spełniać standard (tryb posix). privileged To samo, co -p. verbose To samo, co -v.
- vi
- Używa interfejsu edycji wiersza poleceń w stylu vi. xtrace To samo, co -x. Jeżeli podano -o bez nazwy-opcji, to wypisywane są wartości bieżących opcji. Jeżeli podano +o bez nazwy-opcji, na standardowym wyjściu wyświetlana jest seria poleceń set potrzebnych do odtworzenia aktualnych ustawień opcji.
- -p
- Włącza tryb uprzywilejowany (privileged). W tym trybie pliki $ENV i $BASH_ENV nie są przetwarzane, funkcje powłoki nie są dziedziczone ze środowiska, a zmienna SHELLOPTS, jeśli występuje w środowisku, jest ignorowana. Jeśli powłoka została uruchomiona z efektywnym id użytkownika (grupy) różnych od id rzeczywistego a nie podano opcji -p, to podejmowane są opisane wyżej akcje a efektywny id użytkownika jest ustawiany na identyfikator rzeczywisty. Jeżeli przy uruchamianiu podano opcję -p, to efektywny identyfikator użytkownika nie jest resetowany. Wyłączenie tej opcji powoduje, że identyfikatory efektywne użytkownika i grupy zostaną ustawione na identyfikatory rzeczywiste.
- -t
- Kończy pracę po przeczytaniu i wykonaniu jednego polecenia.
- -u
- Podczas interpretacji parametrów traktuje nieustawione zmienne jako błąd. Jeżeli wykonywana jest próba interpretacji nieustawionej zmiennej, to powłoka wypisuje komunikat o błędzie i, jeśli nie jest interaktywna, kończy pracę z niezerowym kodem.
- -v
- Wypisuje wiersze wejściowe powłoki przy ich odczytywaniu.
- -x
- Po interpretacji każdego polecenia prostego, wyświetla zinterpretowaną wartość PS4, po której następuje polecenie i jego zinterpretowane argumenty.
- -B
- Powłoka wykonuje interpretacją nawiasów (zobacz Interpretacja nawiasów powyżej). Domyślnie włączone.
- -C
- Jeśli włączone, bash nie nadpisuje istniejącego pliku przy użyciu operatorów przekierowania >, >& i <>. Można to ominąć tworząc pliki wyjściowe przy użyciu operatora przekierowania >| zamiast >.
- -H
- Włącza zastępowanie historii w stylu !. Opcja ta jest domyślnie włączona dla powłoki interaktywnej.
- -P
- Jeżeli jest ustawiona, to powłoka nie podąża za dowiązaniami symbolicznymi podczas wykonywania poleceń zmieniających bieżący katalog roboczy, jak cd. Używa zamiast tego fizycznej struktury katalogów. Domyślnie, bash podąża za logicznym łańcuchem katalogów podczas wykonywania poleceń zmieniających bieżący katalog roboczy.
- --
- Jeżeli po tej opcji nie występują żadne argumenty, to parametry pozycyjne są kasowane. W przeciwnym razie, parametry pozycyjne ustawiane są na argumenty, nawet jeśli niektóre z nich zaczynają się od znaku -.
- -
- Sygnalizuje koniec opcji, powodując przypisanie wszystkich pozostałych argumentów do parametrów pozycyjnych. Opcje -x i -v są wyłączane. Jeżeli nie ma argumentów, to parametry pozycyjne pozostają bez zmian.
Opcje są domyślnie wyłączone, chyba że wskazano inaczej. Użycie + zamiast - spowoduje, że opcje te zostaną wyłączone. Opcje mogą także zostać określone jako argumenty wywołania powłoki. Bieżący zestaw opcji można znaleźć w $-. Zwracanym kodem jest zawsze prawda, chyba że napotkano nieprawidłową opcję.
shift [n]
Parametrom pozycyjne od n+1 ... zmieniają nazwy $1 ....
parametry reprezentowane przez liczby $# w dół do $#-n+1
są usuwane. n musi być liczbą nieujemną mniejszą lub
równą $#. Jeżeli n wynosi 0, parametry nie są zmieniane.
Jeżeli nie podano n, zakłada się, że wynosi 1. Jeżeli n
jest większe od $#, parametry pozycyjne nie są zmieniane.
Kod zakończenia jest większy od zera jeżeli n jest
większe od $# lub mniejsze od zera; w przeciwnym wypadku
0.
shopt [-pqsu] [-o] [nazwa_opcji ...]
Przełącza wartości zmiennych sterujących opcjonalnym
zachowaniem powłoki. Bez żadnych opcji, albo z opcją -p,
wyświetlana jest lista wszystkich dających się ustawić
opcji, ze wskazaniem dla każdej czy jest ona ustawiona
czy nie. Opcja -p powoduje, że wyniki będą wyświetlane w
postaci dającej się ponownie wykorzystać jako wejście.
Pozostałe opcje mają następujące znaczenie:
- -s
- Włącz (ustaw) każdą nazwę_opcji.
- -u
- Wyłącz (usuń) każdą nazwę_opcji.
- -q
- Zaniechaj zwykłego wyświetlania (tryb cichy); zwracany kod wskazuje na to czy nazwa_opcji jest ustawiona czy nie ustawiona. Jeżeli z -q podano wiele argumentów nazw_opcji, to zwracanym kodem jest zero, gdy wszystkie nazwy_opcji są włączone; w przeciwnym razie kod jest niezerowy.
- -o
- Ogranicza wartości nazwy_opcji do wartości zdefiniowanych dla opcji -o wbudowanego polecenia set.
Jeżeli użyto albo -s albo -u bez argumentów nazw_opcji, wyświetlanie ogranicza się do tych opcji, które, odpowiednio, są ustawione bądź nieustawione. Jeżeli nie wskazano inaczej, opcje shopt są domyślnie wyłączone (nie ustawione).
Przy listowaniu opcji zwracany jest kod zerowy jeśli wszystkie nazwy_opcji są włączone, niezerowy w przeciwnym wypadku. Przy ustawianiu lub kasowaniu opcji zwracany jest zerowy kod, chyba że nazwa_opcji nie jest poprawną opcją powłoki.
Lista opcji shopt obejmuje:
cdable_vars
Jeśli jest ustawiona, to nie będący katalogiem
argument wbudowanego polecenia cd uważany jest za
nazwę zmiennej; wartością tej zmiennej jest katalog,
na który ma nastąpić zmiana.
cdspell Jeśli jest ustawiona, to pomniejsze błędy w
pisowni składowej katalogu w poleceniu cd będą
poprawiane. Sprawdzenie takich błędów obejmuje
znaki zamienione miejscami, znaki pominięte i
pojedyncze zbędne znaki. Jeżeli znaleziono
poprawkę, wypisywana jest poprawna nazwa pliku a
polecenie kontynuuje działanie. Opcja ta jest
wykorzystywana tylko przez powłoki interaktywne.
checkhash
Jeśli jest ustawiona, bash sprawdza przed próbą
wykonania polecenia znalezionego w tablicy
mieszającej, czy polecenie to istnieje. Jeżeli
już nie istnieje, to wykonywane jest zwykłe
przeszukiwanie ścieżki.
checkwinsize
Jeżeli jest ustawione, bash sprawdza rozmiar okna
po każdym poleceniu i, jeśli zachodzi potrzeba,
aktualizuje wartość LINES i COLUMNS.
cmdhist Jeżeli jest ustawione, bash usiłuje zapisać
wszystkie wiersze polecenia wielowierszowego w
tej samej pozycji historii. Pozwala to na łatwą
ponowną edycję poleceń obejmujących wiele wierszy.
dotglob Jeżeli jest ustawione, to bash do wyników
rozwinięcia nazw plików włącza także nazwy plików
rozpoczynające się kropką ‘.’.
execfail
Jeżeli jest ustawione, to powłoka nie-interaktywna
nie zakończy pracy nie mogąc wykonać pliku
określonego jako argument wbudowanego polecenia
exec. Powłoka interaktywna nie kończy pracy,
jeśli exec zawiedzie.
expand_aliases
Jeżeli jest ustawiona, aliasy są interpretowane
jak opisano powyżej w ALIASY. Opcja ta jest
włączona domyślnie dla powłok interaktywnych.
extglob Jeśli jest włączona, włączane są rozszerzone
funkcje dopasowywania wzorców opisane powyżej w
Rozwijanie nazw plików.
histappend
Jeżeli jest ustawiona, to do pliku o nazwie
wskazanej zmienną HISTFILE podczas kończenia
pracy przez powłokę dodawana jest lista historii,
zamiast nadpisywania tego pliku listą.
histreedit
Jeżeli jest ustawione, a używane jest readline,
to użytkownik ma możliwość ponownej edycji nieudanego
podstawienia historii historii.
histverify
Jeżeli jest ustawione, a używane jest readline,
to wyniki podstawiania historii nie są natychmiast
przesyłane do analizatora powłoki. Zamiast
tego, wiersz wynikowy ładowany jest do bufora
edycyjnego readline, pozwalając na dalsze zmiany.
hostcomplete
Jeżeli jest ustawione, a używane jest readline,
bash będzie usiłować wykonać uzupełnianie nazwy
hosta podczas uzupełniania słowa zawierającego @
(zobacz Uzupełnianie w READLINE powyżej).
Domyślnie włączone.
huponexit
Jeżeli jest ustawione, to bash wyśle SIGHUP do
wszystkich zadań podczas kończenia pracy interaktywnej
powłoki zgłoszeniowej.
interactive_comments
Jeśli jest włączone, pozwala by słowo rozpoczynające
się od # powodowało pominięcie tego słowa
i wszystkich pozostałych znaków wiersza w powłoce
interaktywnej (zobacz powyżej KOMENTARZE). Opcja
domyślnie włączona.
lithist Jeśli jest ustawione, a włączona jest opcja cmdhist,
to polecenia wielowierszowe zachowywane są
w historii w miarę możliwości z osadzonymi
znakami nowej linii zamiast przy użyciu średników
jako separatorów.
login_shell
Powłoka ustawia tę opcję jeśli zostanie uruchomiona
jako zgłoszeniowa (zobacz WYWOŁANIE
powyżej). Ta wartość nie może być zmieniona.
mailwarn
Jeżeli jest ustawione, zaś do pliku, w którym
sprawdza pocztę bash sięgano od czasu ostatniego
sprawdzania, to zostanie wyświetlony komunikat
,,The mail in plikpoczty has been read’’ (Poczta
w plikpoczty została przeczytana).
no_empty_cmd_completion
Jeśli jest ustawione, i stosowane jest readline,
to bash nie będzie usiłował szukać w PATH
możliwych uzupełnień, gdy próba uzupełniania
wystąpi w pustym wierszu.
nocaseglob
Jeśli zostało ustawione, to bash przy rozwijaniu
nazw plików dopasowuje je nie zwracając uwagi na
wielkość liter (zobacz Rozwijanie nazw plików
powyżej).
nullglob
Jeśli jest ustawione, to, bash pozwala by wzorce
nie dopasowujące żadnych plików (zobacz Rozwijanie
nazw plików powyżej) rozwijały się w
łańcuch pusty, zamiast na same siebie.
progcomp
Jeżeli jest ustawione, to włączone są usługi programowalnego
uzupełniania (zobacz powyżej
Programowalne uzupełnianie). Domyślnie włączone.
promptvars
Jeżeli jest ustawione, to łańcuchy zachęty podlegają
interpretacji zmiennych i podstawianiu
parametrów po interpretacji zachęty opisanej w
ZACHĘTA powyżej. Opcja ta jest domyślnie
włączona.
restricted_shell
Powłoka ustawia tę opcję jeśli została uruchomiona
w trybie okrojonym (zobacz POWŁOKA OKROJONA
poniżej). Wartość ta nie może być
zmieniona. Nie jest ona resetowana podczas
odczytu plików startowych, pozwalając im na
odkrycie czy powłoka jest okrojona czy nie.
shift_verbose
Jeżeli jest ustawiona, to wbudowane shift wypisuje
komunikat o błędzie gdy liczba przesunięć
(przez shift) przekracza liczbę parametrów pozycyjnych.
sourcepath
Jeśli jest ustawiona, to polecenie wbudowane
source (.) posługuje się wartością PATH do
znalezienia katalogu zawierającego plik podany
jako argument. Opcja domyślnie włączona.
xpg_echo
Jeżeli jest ustawiona, to dla wbudowanego polecenia
echo włączane jest domyślne interpretowanie
sekwencji specjalnych z odwrotnym ukośnikiem.
suspend [-f]
Zawiesza wykonywanie tej powłoki do otrzymania przez nią
sygnału SIGCONT. Opcja -f mówi, by nie narzekać, jeśli
użyto suspend w powłoce zgłoszeniowej; po prostu zawiesić
mimo to. Kodem zwracanym jest 0, chyba że powłoka jest
powłoką zgłoszeniową i nie podano opcji -f, lub gdy nie
jest włączona kontrola zadań.
test wyraż
[ wyraż ]
Zwraca kod 0 lub 1 w zależności od interpretacji
wyrażenia warunkowego wyraż. każdy operator i operand
musi być odrębnym argumentem. Wyrażenia składając się ze
składowych opisanych powyżej w WYRAŻENIA WARUNKOWE.
Wyrażenia mogą być łączone przy użyciu poniższych operatorów,
podanych w kolejności malejącego priorytetu.
! wyraż
Prawda jeśli wyraż jest fałszem.
( wyraż )
Zwraca wartość wyraż. Może być stosowane do
obejścia zwykłej kolejności operatorów.
wyraż1 -a wyraż2
Prawda jeśli oba: wyraż1 i wyraż2 są prawdziwe.
wyraż1 -o wyraż2
Prawda jeśli wyraż1 lub wyraż2 jest prawdziwe.
test i [ interpretują wyrażenia warunkowe posługując się zestawem reguł opartych o liczbę argumentów.
0 argumentów
Wyrażenie jest fałszywe.
1 argument
Wyrażenie jest prawdziwe wtedy i tylko wtedy gdy
argument nie jest pusty (null).
2 argumenty
Jeśli pierwszym argumentem jest !, to wyrażenie
jest prawdziwe wtedy i tylko wtedy gdy drugi argument
jest pusty. Jeśli pierwszy argument jest jednym
z jednoargumentowych operatorów warunkowych
podanych powyżej w WYRAŻENIA WARUNKOWE, to
wyrażenie jest prawdziwe jeżeli test jednoargumentowy
jest prawdziwy. Jeżeli pierwszy argument nie
jest poprawnym jednoargumentowym operatorem
warunkowym, to wyrażenie ma wartość fałsz.
3 argumenty
jeżeli drugi argument jest jednym z dwuargumentowych
operatorów warunkowych podanych powyżej w
WYRAŻENIA WARUNKOWE, to wynik wyrażenia jest
wynikiem dwuargumentowego testu z zastosowaniem
pierwszego i trzeciego argumentu jako operandów.
Jeśli pierwszym argumentem jest !, to wartość
stanowi negację testu dwuargumentowego przy użyciu
drugiego i trzeciego argumentu. Jeśli pierwszym
argumentem jest dokładnie ( a trzecim argumentem
dokładnie ), to wynik jest jednoargumentowym
testem drugiego argumentu. W pozostałych przypadkach
wyrażenie jest fałszywe. Operatory -a i -o w
tym przypadku uważane są za dwuargumentowe.
4 argumenty
Jeśli pierwszym argumentem jest !, to wynik jest
negacją trójargumentowego wyrażenia złożonego z
pozostałych argumentów. W przeciwnym wypadku,
wyrażenie jest poddawanie analizie składni i
interpretowane zgodnie z priorytetami przy zastosowaniu
reguł podanych powyżej.
5 lub więcej argumentów
Wyrażenie jest poddawanie analizie składni i
interpretowane zgodnie z priorytetami przy zastosowaniu
reguł podanych powyżej.
times Wypisuje sumaryczne czasy użytkownika i systemu dla powłoki i procesów z niej uruchomionych. Kodem zwracanym jest 0.
trap [-lp] [argument] [sigspec ...]
Polecenie argument ma zostać odczytane i wykonane, gdy
powłoka otrzyma sygnał(y) sigspec. Jeśli nie występuje
argument lub jest to -, to wszystkie podane sygnały resetowane
są do swych wartości pierwotnych (wartości, jakie
miały przy wejściu do powłoki). Jeżeli argument jest
łańcuchem pustym, to sygnał określony przez każde sigspec
jest ignorowany przez powłokę i polecenia, jakie ona
wywołuje. Jeżeli nie wystąpił argumentu a podano -p,
wyświetlane są polecenia związane z przechwyceniem
każdego z sygnałów sigspec. Jeżeli nie podano żadnych
argumentów lub jeśli podano tylko -p, to trap wypisuje
listę poleceń związanych z każdym z numerów sygnałów.
Każde sigspec jest albo nazwą sygnału zdefiniowaną w
<signal.h albo numerem sygnału. Jeżeli sigspec jest
sygnałem EXIT (0), to polecenie argument wykonywane jest
przy kończeniu pracy przez powłokę. Jeżeli sigspec jest
równe DEBUG, to polecenie argument wykonywane jest po
każdym poleceniu prostym (zobacz GRAMATYKA POWŁOKI
powyżej). Jeśli sigspec to ERR, wówczas polecenie argu_ment
wykonywane jest każdorazowo gdy polecenie proste
zwróci niezerowy kod zakończenia. Pułapka zastawiona na
ERR nie jest wykonywana gdy polecenie, które zakończyło
się niepowodzeniem jest częścią pętli until lub while,
częścią instrukcji if, częścią listy && lub || albo jeśli
wartość zwracana przez to polecenie jest wstawiana za
pomocą !. Opcja -l powoduje, że powłoka wypisuje zestawienie
nazw sygnałów i odpowiadających im numerów.
Sygnały ignorowane przy wejściu do powłoki nie mogą być
przechwycone ani zresetowane. W procesie potomnym, podczas
jego tworzenia, sygnały przechwycone resetowane są
do swych wartości pierwotnych. Zwracanym kodem jest
fałsz jeśli którykolwiek z sigspec jest nieprawidłowy; w
przeciwnym razie trap zwraca true.
type [-atp] nazwa [nazwa ...]
Bez opcji wskazuje, jak powinna być interpretowana każda
z nazw, jeśli zostanie użyta jako nazwa polecenia.
Jeżeli użyto opcji -t, to type wypisuje łańcuch będący
jednym z alias, keyword, function, builtin lub file,
jeśli nazwa jest odpowiednio aliasem, zastrzeżonym słowem
powłoki, funkcją, poleceniem wbudowanym lub plikiem
dyskowym. Jeśli nie znaleziono nazwy, to nie jest wypisywane
nic i jako kod zakończenia zwracany jest fałsz.
Jeśli posłużono się opcją -p to type zwraca albo nazwę
pliku dyskowego, który zostałby wykonany jeśli nazwa
zostałaby podana jako nazwa polecenia, albo nic jeśli !
.if t type -t nazwa ! .if n ,,type -t nazwa’’ nie
zwróciłoby file. Jeśli polecenie istnieje w tablicy
mieszającej, -p wypisuje wartość z tablicy, niekoniecznie
plik, który pojawia się jako pierwszy w PATH. Jeżeli
użyto opcji -a, to type wypisuje wszystkie miejsca zawierajace
wykonywalną nazwę. Obejmuje to aliasy i
funkcje, wtedy i tylko wtedy gdy użyto również opcji -p.
Przy użyciu -a nie korzysta się z tablicy mieszającej
poleceń. type zwraca prawdę jeśli znaleziono jakieś jego
argumenty, fałsz jeśli nie znaleziono żadnych.
ulimit [-SHacdflmnpstuv [limit]]
Zapewnia kontrolę nad zasobami dostępnymi powłoce i procesów
jakie ona uruchamia, na systemach umożliwiających
taką kontrolę. Opcje -H i -S określają, że dla danego
zasobu ustawiane jest twarde (hard) lub miękkie (soft)
ograniczenie. Ograniczenie twarde nie może być zwiększane
po ustawieniu; ograniczenie miękkie może być zwiększane
aż do wartości ograniczenia twardego. Jeśli nie podano
ani -H ani -S, to ustawiane jest zarówno ograniczenie
miękkie jak i twarde. Ograniczenie limit może być liczbą
w jednostkach określonych dla zasobu lub jedną ze specjalnych
wartości: hard, soft lub unlimited, oznaczających
odpowiednio: bieżące twarde ograniczenie, bieżące miękkie
ograniczenie oraz brak ograniczenia. Jeżeli pominięto
limit, wypisywana jest bieżąca wartość ograniczenia
miękkiego danego zasobu, chyba że podano opcję -H. Gdy
podano więcej niż jedno określenie zasobu, przed
wartością wypisywana jest nazwa ograniczenia i jednostka
miary. Inne opcje interpretowane są następująco:
- -a
- Podawane są wszystkie bieżące ograniczenia
- -c
- Maksymalny rozmiar tworzonych plików core
- -d
- Maksymalny rozmiar segmentu danych procesu
- -f
- Maksymalny rozmiar plików tworzonych przez powłokę
- -l
- Maksymalny rozmiar, jaki może zostać zablokowany w pamięci
- -m
- Maksymalny rozmiar części rezydentnej
- -n
- Maksymalna liczba otwartych deskryptorów pliku (większość systemów nie pozwala na ustawianie tej wartości)
- -p
- Rozmiar potoku w blokach 512-bajtowych (może nie być ustawione)
- -s
- Maksymalny rozmiar stosu
- -t
- Maksymalny czas CPU w sekundach
- -u
- Maksymalna liczba procesów dostępnych dla pojedynczego użytkownika
- -v
- Maksymalna wielkość pamięci wirtualnej dostępna dla powłoki
Jeżeli podano limit, to staje się nową wartością ograniczenia zadanego zasobu (opcja -a tylko wyświetla). Jeżeli nie podano żadnej ocpji, to zakłada się opcję -f. Wartości podawane są przyrostowo co 1024-bajty, z wyjątkiem -t, podawanego w sekundach, -p, w jednostkach 512-bajtowych bloków, oraz -n i -u, będących wartościami bez miana. Zwracanym kodem jest 0, chyba że podano nieprawidłową opcję lub argument albo podczas ustawiania nowego ograniczenia wystąpił błąd.
umask [-p] [-S] [tryb]
Maska praw dostępu dla plików tworzonych przez użytkownika
ustawiana jest na tryb. Jeżeli tryb rozpoczyna się
od cyfry, jest interpretowany jako liczba ósemkowa; w
przeciwnym razie interpretowany jest jako maska w trybie
symbolicznym, podobnie jak akceptowane przez chmod(1)
.
Jeżeli pominięto tryb wypisywana jest aktualna wartość
maski. Opcja -S powoduje, że maska zostanie wypisana w
postaci symbolicznej; domyślne wyjście jest w postaci
liczby ósemkowej. Jeżeli podano opcję -p i pominięto
tryb, to wyjście ma postać, która może być powtórnie
wykorzystana jako wejście. Kodem zwracanym jest 0 jeśli
pomyślnie zmieniono tryb lub nie podano argumentu tryb,
zaś fałsz w pozostałych sytuacjach.
unalias [-a] [nazwa ...]
Usuwa każdą z nazw z listy zdefiniowanych aliasów. Jeżeli
podano -a, to usuwane są definicje wszystkich aliasów.
Zwracanym kodem jest prawda, chyba że podana nazwa nie
jest zdefiniowanym aliasem.
unset [-fv] [nazwa ...]
Dla każdej nazwy, usuwa odpowiadającą jej wartość lub
funkcję. Jeżeli nie podano żadnych opcji lub podano opcję
-v, to każda z nazw odnosi się do zmiennej powłoki. Zmienne
read-only nie mogą być kasowane. Jeżeli podano -f,
to każda z nazw wskazuje na funkcję powłoki, a definicja
funkcji jest usuwana. Każda z usuniętych zmiennych lub
funkcji usuwana jest ze środowiska przesyłanego następnym
poleceniom. Jeśli usunięta zostanie któraś ze zmiennych
RANDOM, SECONDS, LINENO, HISTCMD, FUNCNAME, GROUPS, lub
DIRSTACK, to traci ona swe specjalne właściwości, nawet
jeśli zostanie następnie ponownie ustawiona. Kodem
zakończenia jest prawda, chyba że nazwa nie istnieje lub
jest readonly.
wait [n]
Czeka na określony proces i zwraca jego kod zakończenia.
n może być identyfikatorem procesu lub określeniem zadania;
jeśli podano określenie zadania, to nastąpi oczekiwanie
na wszystkie procesy w potoku tego zadania. Jeżeli
nie podano n, następuje oczekiwanie na wszystkie aktualnie
aktywne procesy potomne i zwracany jest kod zerowy.
Jeśli n określa nieistniejący proces lub zadanie, to
zwracany jest kod 127. W pozostałych przypadkach
zwracany jest kod zakończenia ostatniego procesu lub
zadania na jakie czekano.
Powłoka Okrojona
Jeśli bash uruchomiony jest pod nazwą rbash, lub przy jego wywołaniu posłużono się opcją -r, to staje się powłoką okrojoną (restricted). Powłoka okrojona służy do ustawienia środowiska lepiej kontrolowanego niż powłoka standardowa. Zachowuje się ona identycznie jak bash z wyjątkiem tego, że poniższe nie są dozwolone lub nie są wykonywane:
- ·
- zmiana katalogów przy pomocy cd
- ·
- ustawianie lub kasowanie wartości SHELL, PATH, ENV lub BASH_ENV
- ·
- podawanie nazw poleceń zawierających /
- ·
- podawanie nazw plików zawierających / jako argumentu wbudowanego polecenia . (kropka).
- ·
- importowanie definicji funkcji ze środowiska powłoki przy uruchamianiu
- ·
- analiza wartości SHELLOPTS ze środowiska powłoki przy uruchamianiu
- ·
- przekierowywanie wyjścia przy pomocy operatorów >, >|, <>, >&, &> i >>
- ·
- posługiwanie się wbudowanym poleceniem exec w celu zastąpienia powłoki innym poleceniem
- ·
- dodawanie lub usuwanie poleceń przy pomocy opcji -f i -d wbudowanego polecenia enable
- ·
- podawanie opcji -p wbudowanego polecenia command
- ·
- wyłączanie trybu okrojonego za pomocą set +r lub set +o restricted.
Powyższe ograniczenia wymuszane są po przeczytaniu plików uruchomieniowych.
Jeśli polecenie do wykonania okazuje się być skryptem powłoki (zobacz WYKONYWANIE POLECEŃ powyżej), to rbash wyłącza wszelkie ograniczenia w powłoce zrodzonej do wykonania skryptu.
Zobacz Także
Bash Features, Brian Fox and Chet Ramey
The Gnu Readline Library, Brian Fox and Chet Ramey
The Gnu History Library, Brian Fox and Chet Ramey
Portable Operating System Interface (POSIX) Part 2: Shell and
Utilities, IEEE
sh(1)
, ksh(1)
, csh(1)
emacs(1)
, vi(1)
readline(3)
Pliki
/bin/bash
Plik wykonywalny powłoki bash
/etc/profile
Ogólnosystemowy plik inicjujący, wykonywany dla powłok
zgłoszeniowych
~/.bash_profile
Osobisty plik inicjujący, wykonywany dla powłok
zgłoszeniowych
~/.bashrc
Indywidualny plik startowy dla powłoki trybu interaktywnego
~/.bash_logout
Indywidualny plik porządkujący dla powłoki zgłoszeniowej,
wykonywany podczas kończenia przez nią pracy
~/.inputrc
Indywidualny plik inicjujący dla readline
Autorzy
Brian Fox, Free Software Foundation
bfox@gnu.ai.MIT.Edu
Chet Ramey, Case Western Reserve University chet@ins.CWRU.Edu
Zgłoszenia Błędów
Jeśli znajdziesz w bash błąd, powinieneś go zgłosić. Ale najpierw powinieneś upewnić się, że rzeczywiście jest to błąd i że pojawia się w najświeższej wersji bash jaką masz.
Po ustaleniu, że błąd faktycznie istnieje, użyj polecenia bash_bug do wysłania zgłoszenia błędu. Jeśli masz poprawkę usuwającą problem, zachęcamy do przesłania jej również! Sugestie i ‘filozoficzne’ zgłoszenia błędów mogą być przesyłane [w języku angielskim] do bug-bash@gnu.org lub wysyłane na grupę dyskusyjną gnu.bash.bug.
WSZYSTKIE zgłoszenia błędów powinny zawierać:
Numer wersji bash
Sprzęt i system operacyjny
Użyty kompilator
Opis błędnego zachowania
Krótki skrypt lub przepis na uzyskanie błędu
bashbug wstawia pierwsze trzy pozycje automatycznie do szablonu jaki udostępnia w celu wypełnienia zgłoszenia błędów.
Komentarze i zgłoszenia błędów dotyczące tej strony podręcznika [oryginału] powinny być kierowane na adres chet@ins.CWRU.Edu.
Błędy
Jest za duży i zbyt wolny.
Istnieje trochę subtelnych różnic pomiędzy bash a tradycyjnymi wersjami sh, głównie z powodu specyfikacji POSIX.
Aliasy w niektórych zastosowaniach wprawiają w zakłopotanie.
Poleceń wbudowanych powłoki i funkcji nie można zatrzymywać/wznawiać.
Polecenia złożone i sekwencje poleceń postaci ‘a ; b ; c’ nie są obsługiwane przychylnie przy próbie wstrzymania procesu. Gdy proces jest zatrzymany, powłoka natychmiast wykonuje następnej polecenie sekwencji. Wystarcza umieszczanie sekwencji poleceń wewnątrz nawiasów by wymusić wykonanie ich przez podpowłokę, która może być zatrzymana jako całość.
Polecenia wewnątrz konstrukcji podstawiania poleceń $(...) nie są analizowane do momentu próby podstawienia. Powoduje to opóźnioną sygnalizację błędów, pojawiającą się po upływie pewnego czasu od wprowadzenia polecenia.
Zmienne tablicowe nie mogą być (na razie) eksportowane.
- Nazwa
- Składnia
- Copyright
- Opis
- Opcje
- Argumenty
- Wywołanie
- Definicje
- Słowa Zastrzeżone
- Gramatyka Powłoki
- Komentarze
- Cytowanie
- Parametry
- Interpretacja
- Przekierowanie
- Aliasy
- Funkcje
- Obliczanie Wyrażeń Arytmetycznych
- WyraŻenia Warunkowe
- Interpretacja Poleceń Prostych
- Wykonywanie Poleceń
- Kod Zakończenia
- Sygnały
- Kontrola Zadań
- Zachęta Powłoki
- Readline
- Historia
- Interpretacja Historii
- Wbudowane Polecenia Powłoki
- Powłoka Okrojona
- Zobacz Także
- Pliki
- Autorzy
- Zgłoszenia Błędów
- Błędy
Losowe
- htsearch (1)
- std::add_pointer (3cxx)
- onak (1)
- __gnu_cxx::__mt_alloc (3cxx)
- Perl::Critic::Policy::ValuesAndExpres... (3pm)
- xrootd (1)
- Template::Plugin::GD::Graph::points (3pm)
- usb_fill_control_urb (9)
- smiGetFirstType (3)
- splashy-theme.xml (5)
- CGI::FormBuilder::Field::static (3pm)
- eX_publish.h (3)
- ldns_rr_set_owner (3)
- XML::LibXML::CDATASection (3pm)
- YGetNextEvent (3)
- GlBox.h (3)
- wxSlider (3erl)
- FcStrListDone (3)
- pointer-capture-applet (1)
- snpp (1p)













