Provided by:
manpages-pl_20051117-1_all 
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 acuch
Jeśli występuje opcja -c, to polecenia odczytywane są z
acucha. Jeżeli po acuchu 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ą
okrojon (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/profile ani żadnego z osobistych plików inicjujących
~/.bash_profile, ~/.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
Powoka zgoszeniowa (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 sowo 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
Sowa zastrzeone (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 sterujcym. 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 zoone (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ą sowami zastrzeonymi 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.
((wyraenie))
wyraenie 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 "wyraenie".
[[ wyraenie ]]
Zwraca kod 0 lub 1 w zależności od interpretacji
wyrażenia warunkowego wyraenie. 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:
( wyraenie )
Zwraca wartość wyraenia. Może służyć do
unieważnienia zwykłej kolejności operatorów.
! wyraenie
Prawda jeżeli wyraenie jest fałszywe.
wyraenie1 && wyraenie2
Prawda jeśli zarówno wyraenie1 jak i wyraenie2
są prawdziwe.
wyraenie1 || wyraenie2
Prawda jeśli choć jedno spośród wyraenie1 lub
wyraenie2 jest prawdziwe.
Operatory && i || nie wykonują wyraenia2 jeżeli wartość
wyraenia1 wystarcza do określenia wartości, jaka
zostanie zwrócona przez całe wyrażenie warunkowe.
for nazwa [ in sowo ] ; 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 sowo, 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 sowo ] ; 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 sowo, 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 sowo in [ [(] wzorzec [ | wzorzec ] ... ) lista ;; ] ...
esac
Polecenie case najpierw interpretuje sowo i próbuje
dopasować uzyskany wynik każdego z wzorcw 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. Ciaem 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 metaznakw 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(escapecharacter), 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 $'acuch' traktowane są specjalnie. Słowo takie
interpretowane jako acuch, 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 atrybutw. 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 wartoci, to zmiennej przypisywany jest
łańcuch pusty. Wszystkie wartoci 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ą dokadno
(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 podstawiania , ("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[wskanik]=warto. Wskanik 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[wskanik] jest również akceptowane; wskanik
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ć [wskanik]=acuch. Wymagany jest wyłącznie
acuch. 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[wskanik]=warto wprowadzonej powyżej.
Do elementu tablicy można odwoływac się używając
${nazwa[wskanik]}. Nawiasy są wymagane, by uniknąć konfliktów z
rozwijaniem nazw plików. Jeśli wskanikiem 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[wskanik]}
interpretowane jest jako długość ${nazwa[wskanik]}. Jeśli
wskanikiem 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[wskanik] niszczy element tablicy o indeksie wskanik.
unset nazwa, gdzie nazwa jest tablicą, lub unset
nazwa[wskanik], gdzie wskanikiem 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 nawiasw (brace expansion),
interpretacja tyld (tilde expansion), podstawianie parametrw i
interpretacja zmiennych (parameter and variable expansion),
podstawienie wynikw polece (command substitution),
interpretacja wyrae arytmetycznych (arithmetic expansion),
podzia na sowa (word splitting) i rozwinicie nazw plikw
(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 wynikw procesw (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 nawiasw jest mechanizmem, przez który mogą być
generowane dowolne łańcuchy. Mechanizm ten przypomina
rozwinicia nazw plikw, ale generowane nazwy plików nie muszą
określać plików istniejących. Wzorce, mające podlegać
interpretacji nawiasów mają postać opcjonalnej preambuy, 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
porednia (indirect expansion). Wyjątkiem jest tu interpretacja
${!przedrostka*} opisana poniżej.
W każdym z poniższych przypadków, sowo 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:-sowo}
Używa wartości domyślnych. Jeżeli parametr jest
nieustawiony lub pusty, to podstawiane jest
zinterpretowane sowo. W przeciwnym razie, podstawiana
jest wartość parametru.
${parametr:=sowo}
Przypisuje wartości domyślne. Jeżeli parametr jest
nieustawiony lub pusty, to jest mu przypisywane
zinterpretowane sowo. Następnie podstawiana jest
wartość parametru. Nie można w ten sposób przypisywać
wartości parametrom pozycyjnym ani parametrom specjalnym.
${parametr:?sowo}
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 sowo (lub
komunikat o takim wyniku, jeśli brak sowa). Jeśli
powłoka nie jest interaktywna, to kończy pracę. W
przeciwnym wypadku, podstawiana jest wartość parametru.
${parametr:+sowo}
Używa wartości alternatywnej. Jeżeli parametr jest
nieustawiony lub pusty, to nic nie jest podstawiane, w
przeciwnym razie podstawiane jest zinterpretowane sowo.
${parametr:offset}
${parametr:offset:dugo}
Interpretacja podłańcuchów. Interpretuje co najwyżej
dugo znaków parametru poczynając od znaków określonych
przez offset. Jeśli pominięto dugo, to interpretuje
podłańcuch parametru poczynając od znaku określonego
przez offset. dugo i offset są wyrażeniami
arytmetycznymi (zobacz OBLICZANIE WYRAŻEŃ ARYTMETYCZNYCH
poniżej). dugo 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 dugo parametrów
pozycyjnych, począwszy od offset. Jeżeli parametr jest
nazwą tablicy indeksowanej przez @ lub *, to wynikiem
jest dugo 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#sowo}
${parametr##sowo}
sowo 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%sowo}
${parametr%%sowo}
sowo 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/acuch}
${parametr//wzorzec/acuch}
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 acuchem. W
pierwszej postaci, zastępowane jest tylko pierwsze
dopasowanie. Druga postać powoduje zastąpienie wszystkich
dopasowań wzorca acuchem. 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 acuch 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 wynikw 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:
$((wyraenie))
wyraenie 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 wyraenie jest
nieprawidłowe, bash wypisuje komunikat o niepowodzeniu i nie
występuje żadne podstawienie.
Podstawianie wyników procesów (Process substitution)
Podstawianie wynikw procesw 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 podziau na sowa.
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 wyraenie
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 znakw (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 rwnowanoci, 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-wzorcw 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-wzorcw)
Dopasowuje zero lub jedno wystąpienie zadanych
wzorców
*(lista-wzorcw)
Dopasowuje zero lub więcej wystąpień zadanych
wzorców
+(lista-wzorcw)
Dopasowuje jedno lub więcej wystąpień zadanych
wzorców
@(lista-wzorcw)
Dopasowuje dokładnie jeden z zadanych wzorców
!(lista-wzorcw)
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 sowa. 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]<sowo
Przekierowanie wyjścia
Przekierowanie wyjścia powoduje otwarcie do zapisu pliku,
którego nazwa wynika z interpretacji sowa. 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]>sowo
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
sowa 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 sowo istnieje.
Dołączanie przekierowanego wyjścia
Przekierowanie wyjścia w ten sposób powoduje, że plik o nazwie
wynikającej z interpretacji sowa 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]>>sowo
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 sowo.
Istnieją dwie postaci takiego przekierowania:
&>sowo
i
>&sowo
Spośród nich, zalecaną jest pierwsza forma. Jest ona
semantycznie równoważna
>sowo 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
sowo (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:
<<[-]sowo
dokument wczony
ogranicznik
Na sowie nie jest wykonywana interpretacja parametrów,
podstawiania wyników poleceń, rozwijanie nazw plików ani
interpretacja wyrażeń arytmetycznych. Jeżeli jakieś znaki w
sowie są cytowane, to ogranicznik jest wynikiem usunięcia
cytowań ze sowa, a wiersze w dokumencie włączonym nie są
interpretowane. Jeżeli sowo 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]<&sowo
służy do powielania deskryptorów plików wejściowych. Jeżeli
sowo zinterpretowane zostanie jako jedna lub więcej cyfr, to
deskryptor pliku oznaczony przez n czyniony jest kopią tego
deskryptora. Jeżeli cyfry w sowie nie określają otwartego dla
wejścia deskryptora, pojawia się błąd przekierowania. Jeżeli
sowo 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]>&sowo
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 sowie nie
określają deskryptora pliku otwartego do wyjścia, pojawia się
błąd przekierowania. W przypadku specjalnym, jeżeli pominięto
n, a sowo 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]<>sowo
powoduje, że plik o nazwie wynikłej z interpretacji sowa
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 odstp, 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
wyra1 , wyra2
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-group-
id.
-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-user-
id.
-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 acuch
Prawda jeśli długość acucha wynosi zero.
-n acuch
acuch
Prawda jeśli acuch ma długość niezerową.
acuch1 == acuch2
Prawda jeśli łańcuchy są równe. Zamiast == można użyć =.
acuch1 != acuch2
Prawda jeśli łańcuchy nie są równe.
acuch1 < acuch2
Prawda jeśli acuch1 przy sortowaniu występowałby przed
acuchem2 według bieżącego ustawienia locale.
acuch1 > acuch2
Prawda jeśli acuch1 przy sortowaniu występowałby po
acuchu2 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 powoki, 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:
o otwarte pliki odziedziczone przez powłokę przy wywołaniu,
zmodyfikowane przez przekierowania przekazane do
wbudowanego polecenia exec
o bieżący katalog roboczy ustawiony przez cd, pushd lub
popd, albo odziedziczony przez powłokę przy wywołaniu
o maskę trybut tworzonych plików ustawioną przez umask albo
odziedziczoną po rodzicu powłoki
o bieżące pułapki ustawione przez trap
o parametry powłoki ustawione przez przypisania zmiennych
przy pomocy set albo odziedziczone ze środowiska rodzica
powłoki
o funkcje powłoki zdefiniowane podczas wykonywania lub
odziedziczone ze środowiska rodzica powłoki
o opcje włączone przy wywołaniu (albo domyślnie albo przy
pomocy argumentów wiersza poleceń) albo przez set
o opcje włączone przez shopt
o aliasy powłoki zdefiniowane przy pomocy alias
o 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.
o otwarte pliki powłoki, plus modyfikacje i dodatki
określone przez przekierowania polecenia
o bieżący katalog roboczy
o maska trybu tworzonych plików
o zmienne powłoki oznaczone do wyeksportowania, razem ze
zmiennymi wyeksportowanymi do polecenia, przekazane w
środowisku.
o 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 procesw
biecego 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 ta 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
opnione 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ę biece 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-klawisz, 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 usuwajce (killing) tekst, tekst ten
jest zachowywany to ewentualnego późniejszego odzyskania
(przywoania 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, sekw-
klaw 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 sygnau. Jeli ustawiona na visible,
readline posuguje si "widzialnym dzwonkiem" (visible
bell), jeli jest dostpny. Jeeli ustawiona na audible,
readline usiuje uzyska sygna dwikowy 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ą sowami. 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'.
!acuch
Wskazuje na ostatnie poleceniem rozpoczynające się od
acucha.
!?acuch[?]
Wskazuje na ostatnie polecenie zawierające acuch.
Kończące ? można pominąć jeśli bezpośrednio po acuchu
występuje znak nowej linii.
^acuch1^acuch2^
Szybkie podstawianie. Powtarza ostatnie polecenie,
wymieniając acuch1 na acuch2. Rónoważnik
,,!!:s/acuch1/acuch/'' (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 `?acuch?'.
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 acuch w
wyszukiwaniu !?acuch[?].
& 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ą argumentw 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 wartoci
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 wartoci,
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 biece 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_powoki
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-standard.
-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_powoki
Powoduje, że za każdym naciśnięciem sekwencji
klawiszy zostanie wykonane polecenie powoki.
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] [sowo]
Tworzy możliwe dopasowania uzupełnień dla sowa 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 sowo, 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 listasw] [-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 listasw
listasw 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
biece. 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 ,,specjalnych'' 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 argumentw, 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
polecenia, 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[=sowo]] ...
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=zastpienie] [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
pierwszego, 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 zastpienie.
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
biece 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 acuch_opcji nazwa [argumenty]
getopts używane jest przez procedury powłoki do analizy
parametrów pozycyjnych. acuch 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 acucha 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 acucha 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 argumentw musi być cytowany, by
wyłączyć normalną interpretację historii.
-s Zachowuje argumenty na liście historii jako
pojedynczą pozycję. Przed dodaniem argumentw 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
zadania znalezione w poleceniu lub argumentach
odpowiednim ID grupy procesów, wykonuje polecenie
przesyłając mu argumenty, 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 argumentw. Jeżeli format
wymaga większej ilości argumentw 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 zachta] [-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 zachta
Wyświetla zacht (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 argumentw, 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.
wyra1 -a wyra2
Prawda jeśli oba: wyra1 i wyra2 są prawdziwe.
wyra1 -o wyra2
Prawda jeśli wyra1 lub wyra2 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
argument 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:
o zmiana katalogów przy pomocy cd
o ustawianie lub kasowanie wartości SHELL, PATH, ENV lub
BASH_ENV
o podawanie nazw poleceń zawierających /
o podawanie nazw plików zawierających / jako argumentu
wbudowanego polecenia . (kropka).
o importowanie definicji funkcji ze środowiska powłoki przy
uruchamianiu
o analiza wartości SHELLOPTS ze środowiska powłoki przy
uruchamianiu
o przekierowywanie wyjścia przy pomocy operatorów >, >|,
<>, >&, &> i >>
o posługiwanie się wbudowanym poleceniem exec w celu
zastąpienia powłoki innym poleceniem
o dodawanie lub usuwanie poleceń przy pomocy opcji -f i -d
wbudowanego polecenia enable
o podawanie opcji -p wbudowanego polecenia command
o 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
bashbug 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.