bash - GNU Bourne-Again SHell
bash [opcje] [łańcuch_polecenia
| plik]
Bash is Copyright (C) 1989-2022 by the Free Software Foundation,
Inc.
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 Utilities specification (IEEE Standard 1003.1).
Bash może być skonfigurowany w ten sposób, aby
był domyślnie zgodny z normą POSIX.
Oprócz jednoznakowych opcji powłoki udokumentowanych
w opisie wbudowanego polecenia set, w tym -o, polecenia
wbudowane mogą być użyte jako opcje przy
wywołaniu powłoki. Dodatkowo, bash przy
wywołaniu interpretuje poniższe opcje:
- -c
- Jeśli występuje opcja -c, to polecenia odczytywane
są z pierwszego argumentu, niebędącego opcją
łańcucha_polecenia. Jeżeli po
łańcuchu_polecenia istnieją argumenty, to
pierwszy jest przypisywany do $0 a pozostałe są
przypisywane do argumentów pozycyjnych. Przypisanie do $0
ustawia nazwę powłoki, co jest wykorzystywane przy
ostrzeżeniach i komunikatach z błędami.
- -i
- Jeżeli występuje opcja -i, to powłoka jest
interaktywna.
- -l
- Program bash będzie działał jakby
został wywołany jako powłoka zgłoszeniowa
(patrz niżej WYWOŁANIE).
- -r
- Jeżeli występuje opcja -r, to powłoka staje
się powłoką okrojoną (restricted).
Patrz poniżej POWŁOKA OKROJONA.
- -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 lub przy odczytywaniu wejścia z
potoku.
- -v
- Wypisuje wiersze wejściowe powłoki przy ich
odczytywaniu.
- -x
- Wypisuje polecenia i ich argumenty w trakcie ich wykonywania.
- -D
- Na standardowym wyjściu wypisywana jest lista
łańcuchów cytowanych cudzysłowem 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 opcji 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,
- --debugger
- Ustawia profil debuggera do wykonania, przed uruchomieniem powłoki.
Włącza rozszerzony tryb debugowania (patrz opis opcji
extdebug do wbudowanego polecenia shopt
poniżej).
- --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
systemowego pliku inicjującego /etc/bash.bashrc i osobistego
pliku inicjującego ~/.bashrc, jeśli powłoka
jest interaktywna. Zobacz WYWOŁANIE
poniżej.
- --login
- Równoważne -l.
- --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 systemowego pliku inicjującego
/etc/bash.bashrc oraz 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 domyślne działanie
różni się od standardu POSIX, tak by
spełniać standard (tryb posix). Więcej
informacji o tym, jak tryb posix wpływa na zachowanie
powłoki można znaleźć w dokumencie do
którego odsyła ZOBACZ
TAKŻE.
- --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ę.
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. Najpierw
wykonywana jest próba otworzenia pliku w bieżącym
katalogu, a następnie, jeśli się ona nie powiedzie,
powłoka przeszukuje katalogi w PATH
szukając skryptu.
Powłoka zgłoszeniowa (login shell) to taka, w
której pierwszym znakiem zerowego argumentu jest -, lub taka,
którą uruchomiono z opcją --login.
Powłoka interaktywna to taka, którą
uruchomiono bez argumentów innych niż opcje (chyba, że
podano -s) 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 interaktywnej powłoki
zgłoszeniowej lub gdy nieinteraktywna powłoka
zgłoszeniowa wykonuje wbudowane polecenie exit, 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 /etc/bash.bashrc i
~/.bashrc, jeśli takie pliki istnieją. Może to
być zakazane za pomocą opcji --norc. Opcja
--rcfile plik wymusi odczyt i wykonanie poleceń z
pliku zamiast z /etc/bash.bashrc i ~/.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 attempts to determine when it is being run with its
standard input connected to a network connection, as when executed by the
historical remote shell daemon, usually rshd, or the secure shell
daemon sshd. If bash determines it is being run
non-interactively in this fashion, it reads and executes commands from
/etc/bash.bashrc and ~/.bashrc, if these files exist and are
readable. It will not do this if invoked as sh. The --norc
option may be used to inhibit this behavior, and the --rcfile option
may be used to force another file to be read, but neither rshd nor
sshd generally invoke the shell with those options or allow them to
be specified.
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, zmienne SHELLOPTSP,
BASHOPTS, CDPATH, i
GLOBIGNORE, jeśli jest takie występują w
środowisku, są ignorowane 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.
W pozostałej części tego dokumentu
używane są poniższe definicje.
- odstęp
- Spacja lub znak tabulacji.
- słowo
- Sekwencja znaków uważana przez powłokę za
pojedynczą jednostkę. Znana też jako
token.
- nazwa
- Jest to słowo składające się
wyłącznie ze znaków alfanumerycznych i znaków
podkreślenia, i rozpoczynające się znakiem
alfabetycznym lub podkreśleniem. Wspominane również
jako identyfikator.
- metaznak
- Znak, który, gdy nie jest cytowany, oddziela słowa. Jeden z
poniższych:
| & ; ( ) < > space tab newline
- operator
sterujący
- token pełniący funkcję
sterującą. Jest to jeden z poniższych symboli:
|| & && ; ;; ;& ;;& ( ) | |&
<newline>
SŁOWA ZASTRZEŻONE
Słowa zastrzeżone (reserved words) to takie,
które mają dla powłoki specjalne znaczenie.
Następujące słowa są rozpoznawane jako
zastrzeżone, gdy nie są cytowane i występują
albo jako pierwsze słowo polecenia (zobacz GRAMATYKA
POWŁOKI poniżej), trzecie słowo poleceń
case lub select (prawidłowe jest tylko
in albo trzecie słowo polecenia for (prawidłowe
są tylko in i do):
! case coproc do done elif else esac fi for function if in
select then until while { } time [[ ]]
Niniejszy rozdział opisuje składnię
różnych postaci poleceń powłoki.
Polecenie proste jest sekwencją opcjonalnych
przypisań zmiennych, po której następują
rozdzielane przez odstęp słowa i przekierowania, a
zakończoną operatorem sterującym. Pierwsze
słowo określa polecenie, jakie ma zostać wykonane i
jest przekazywane jako argument numer zero. Pozostałe słowa
są przekazywane jako argumenty wywoływanego polecenia.
Wartością zwracaną polecenia prostego
jest jego kod zakończenia lub 128+n jeżeli polecenie
przerwane jest sygnałem n.
Potok jest sekwencją jednego lub więcej
poleceń rozdzielonych jednym z operatorów kontrolnych |
lub |&. Formatem potoku jest:
[time [-p]] [ ! ] polecenie1 [
[|⎪|&] polecenie2 ... ]
Standardowe wyjście z polecenia1
połączone jest za pośrednictwem potoku ze standardowym
wejściem polecenia2. Połączenie to wykonywane
jest przed możliwymi przekierowaniami podanymi dla polecenia1
(zobacz poniżej PRZEKIEROWANIE. Jeśli
użyte jest |&, to standardowe wyjście
błędów polecenia1 razem z jego
standardowym wyjściem jest połączone ze standardowym
wejściem polecenia2 za pomocą potoku; jest to
skrócona forma 2>&1 |. To bezpośrednie
przekierowanie standardowego wyjścia błędów jest
przeprowadzane po wszystkich przekierowaniach określonych przez
polecenie1.
Zwracanym kodem zakończenia potoku jest kod
zakończenia ostatniego polecenia, chyba że
włączono opcję pipefail. W takim przypadku kod
zakończenia potoku jest wartością ostatniego (po
prawej) polecenia, które zakończyło się kodem
niezerowym lub zero, jeśli wszystkie polecenia
zakończyły się powodzeniem. Jeżeli potok
poprzedza zastrzeżone słowo !, to kod
zakończenia takiego potoku jest negacją (NOT) kodu
zakończenia ostatniego polecenia, zgodnie z powyższym opisem.
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. Jeśli
powłoka znajduje się w trybie posix, to nie rozpoznaje
time jako słowa zastrzeżonego, jeśli kolejny
token rozpoczyna się znakiem "-". 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.
Jeśli powłoka znajduje się w trybie
posix, to po time może wystąpić znak nowego
wiersza. W takim przypadku, powłoka wyświetla całkowity
czas użytkownika i systemu, skonsumowany przez powłokę
i jej potomków. Zmienną TIMEFORMAT można
określić format informacji o czasie.
Each command in a multi-command pipeline, where pipes are created,
is executed in a subshell, which is a separate process. See
COMMAND EXECUTION ENVIRONMENT for a description of subshells
and a subshell environment. If the lastpipe option is enabled
using the shopt builtin (see the description of shopt below),
the last element of a pipeline may be run by the shell process when job
control is not active.
Lista jest potokiem lub sekwencją kilku
potoków rozdzielonych jednym z operatorów ;,
&, && lub ⎪⎪, i opcjonalnie
zakończoną jednym ze znaków ;, & lub
<nowy-wiersz>.
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.
W zastępstwie średnika, w liście
może pojawić się sekwencja jednego lub więcej
znaków nowego wiersza.
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. Takie polecenia
są określane jako polecenia asynchroniczne. 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.
Listy AND i OR są sekwencjami jednego lub więcej
potoków oddzielonych odpowiednio operatorami sterującymi
&& i ||. Listy AND i OR są wykonywane z
pozostawioną łącznością. Lista AND ma
postać
polecenie2 wykonywane jest wtedy, i tylko wtedy, gdy
polecenie1 zwraca zerowy kod zakończenia (sukces).
Lista OR ma postać
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.
Polecenie złożone jest jednym z
poniższych. W większości przypadków lista
w opisie polecenia może być oddzielona od reszty polecenie
jedną lub więcej znakami nowego wiersza, a po niej zamiast
średnika może wystąpić znak nowego wiersza.
- (lista)
- Lista wykonywana jest w podpowłoce (opis środowiska
podpowłoki znajduje się w rozdziale
ŚRODOWISKO WYKONYWANIA POLECEŃ
poniżej). Przypisania zmiennych i polecenia wbudowane
wpływające na środowisko powłoki nie
zachowują swoich skutków po zakończeniu polecenia.
Zwracanym kodem jest kod zakończenia listy.
- { lista; }
- Lista jest po prostu wykonywana w bieżącym
środowisku powłoki. Lista musi być
zakończona znakiem nowej linii lub średnika. Nazywane jest
to poleceniem grupowania. Zwracanym kodem jest kod
zakończenia listy. Należy pamiętać,
że w przeciwieństwie do metaznaków ( i
), { i } są słowami
zastrzeżonymi i aby zostały rozpoznane muszą
się pojawić tam, gdzie dozwolone jest użycie
słów zastrzeżonych. Ponieważ nie
powodują podziału na słowa, muszą być
oddzielone od listy za pomocą białego znaku lub
innego metaznaku powłoki.
- ((wyrażenie))
- Wyrażenie interpretowane jest zgodnie z zasadami opisanymi
poniżej w sekcji OBLICZANIE WYRAŻEŃ
ARYTMETYCZNYCH. Jeśli wartość
wyrażenia jest niezerowa, to zwracanym statusem jest 0; w
przeciwnym razie zwracanym statusem jest 1. Wyrażenie jest
rozwijane tak samo, jak gdyby było ujęte w podwójne
cudzysłowy, jednak znaki podwójnego cudzysłowu w
wyrażeniu nie są traktowane specjalnie i są
usuwane.
- [[ wyrażenie ]]
- Zwraca kod 0 lub 1 w zależności od interpretacji
wyrażenia warunkowego wyrażenie. Wyrażenia
złożone są ze składowych (primaries) opisanych
poniżej w opcji WYRAŻENIA WARUNKOWE. Na
słowach pomiędzy [[ a ]] nie są
wykonywane rozwinięcia nazw plików ani podział na
słowa; są natomiast wykonywane: interpretacja tyld,
parametrów i zmiennych, interpretacja wyrażeń
arytmetycznych, podstawianie wyników poleceń, podstawianie
wyników procesów i usunięcia cytowań na tych
słowach (wyrażenia które pojawiłyby
się, gdyby słowa były ujęte w podwójne
cudzysłowy). Operatory warunkowe, takie jak -f, nie
mogą być cytowane, jeśli mają zostać
rozpoznane jako składowe.
Operatory < i >, gdy są
używane z [[, sortują zgodnie z porządkiem
leksykograficznym, używając bieżącego
ustawienia locale.
Proszę zapoznać się z wbudowanym poleceniem
test (rozdział WBUDOWANE POLECENIA POWŁOKI
poniżej), aby dowiedzieć się jak obsługiwane
są parametry (np. sytuacja gdy ich nie podano).
Jeśli używane są operatory == i
!=, to łańcuch po prawej stronie operatora jest wzorcem
i jest dopasowany zgodnie z opisanymi poniżej regułami
Dopasowania wzorca, jakby włączono opcję
powłoki extglob. Operator = jest
równoważny ==. Jeśli włączono
opcję powłoki nocasematch, to przy dopasowaniu
ignorowana jest wielkość liter. Zwracaną
wartością jest 0 gdy łańcuch pasuje (==)
lub nie pasuje (!=) i 1 w przeciwnym wypadku. Każda
część wzorca może być cytowana, aby
wymusić jej dopasowanie jako łańcuch.
An additional binary operator, =~, is available, with the
same precedence as == and !=. When it is used, the string to
the right of the operator is considered a POSIX extended regular expression
and matched accordingly (using the POSIX regcomp and regexec
interfaces usually described in regex(3)). The return value is 0 if
the string matches the pattern, and 1 otherwise. If the regular expression
is syntactically incorrect, the conditional expression's return value is 2.
If the nocasematch shell option is enabled, the match is performed
without regard to the case of alphabetic characters. If any part of the
pattern is quoted, the quoted portion is matched literally. This means every
character in the quoted portion matches itself, instead of having any
special pattern matching meaning. If the pattern is stored in a shell
variable, quoting the variable expansion forces the entire pattern to be
matched literally. Treat bracket expressions in regular expressions
carefully, since normal quoting and pattern characters lose their meanings
between brackets.
The pattern will match if it matches any part of the string.
Anchor the pattern using the ^ and $ regular expression
operators to force it to match the entire string. The array variable
BASH_REMATCH records which parts of the string matched
the pattern. The element of BASH_REMATCH with index 0 contains
the portion of the string matching the entire regular expression.
Substrings matched by parenthesized subexpressions within the regular
expression are saved in the remaining BASH_REMATCH indices.
The element of BASH_REMATCH with index
n is the portion of the string matching the nth parenthesized
subexpression. Bash sets BASH_REMATCH in the global
scope; declaring it as a local variable will lead to unexpected
results.
Wyrażenia można łączyć przy
pomocy następujących operatorów, wymienionych w
kolejności malejącego priorytetu:
- ( wyrażenie )
- Zwraca wartość wyrażenia. Może
służyć do unieważnienia zwykłej
kolejności operatorów.
- ! wyrażenie
- Prawda jeżeli wyrażenie jest fałszywe.
- wyrażenie1
&& wyrażenie2
- Prawda jeśli zarówno wyrażenie1 jak i
wyrażenie2 są prawdziwe.
- wyrażenie1
|| wyrażenie2
- Prawda jeśli choć jedno spośród
wyrażenie1 lub wyrażenie2 jest prawdziwe.
Operatory && i || nie wykonują
wyrażenia2 jeżeli wartość
wyrażenia1 wystarcza do określenia wartości,
jaka zostanie zwrócona przez całe wyrażenie
warunkowe.
- for nazwa [ [
in [ słowo ... ] ] ; ] do lista ;
done
- Interpretowane są słowa następujące po
in, tworząc listę elementów. Zmiennej
nazwa nadawana jest kolejno wartość każdego
elementu tej listy i każdorazowo wykonywana jest lista
poleceń. Jeżeli pominięto in
słowo, to polecenie for wykonuje listę
po jednym razie dla każdego ustawionego parametru pozycyjnego
(zobacz PARAMETRY poniżej). Zwracanym kodem
jest kod zakończenia ostatniego wykonanego polecenia. Jeśli
interpretacja elementów następujących po in
daje w wyniku pustą listę, to nie są wykonywane
żadne polecenia i zwracany jest kod 0.
- for (( wyr1 ;
wyr2 ; wyr3 )) ; do lista ; done
- Na początku obliczane jest wyrażenie arytmetyczne
wyr1, zgodnie z zasadami opisanymi poniżej w
OBLICZANIE WYRAŻEŃ ARYTMETYCZNYCH.
Następnie wielokrotnie obliczane jest wyr2, aż do
osiągnięcia przez nie wartości zero.
Każdorazowo gdy obliczone wyr2 jest niezerowe, wykonywana
jest lista i obliczane jest wyrażenie arytmetyczne
wyr3. Jeśli pominięto któreś z
wyrażeń, to zachowuje się ono tak, jakby
przyjmowało wartość 1. Zwracanym kodem jest kod
zakończenia ostatniego wykonanego polecenia listy, lub
fałsz jeśli któreś z wyrażeń
jest niepoprawne.
- select nazwa
[ in słowo ] ; do lista ;
done
- Interpretowana jest lista słów następujących
po in, tworząc listę elementów, a zestaw
zinterpretowanych słów wypisywany jest na standardowym
wyjściu, każde poprzedzone liczbą kolejną.
Jeśli pominięto in słowo, to wypisywane
są parametry pozycyjne (zobacz PARAMETRY
poniżej). select następnie wyświetla
znak zachęty PS3 i odczytuje 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 select kończy
pracę zwracając 1. Każda inna wartość
powoduje, że nazwie zostanie przypisany
łańcuch pusty. Odczytany wiersz zachowywany jest w zmiennej
REPLY. lista wykonywana jest po każdym
wyborze, dopóki nie zostanie wykonane polecenie
break. Kodem zakończenia select jest kod
zakończenia ostatniego wykonanego polecenia listy lub zero
jeśli nie wykonano żadnych poleceń.
- case
słowo in [ [(] wzorzec [ | wzorzec
] ... ) lista ;; ] ... esac
- A case command first expands word, and tries to match it
against each pattern in turn, using the matching rules described
under Pattern Matching below. The word is expanded using
tilde expansion, parameter and variable expansion, arithmetic expansion,
command substitution, process substitution and quote removal. Each
pattern examined is expanded using tilde expansion, parameter and
variable expansion, arithmetic expansion, command substitution, process
substitution, and quote removal. If the nocasematch shell option is
enabled, the match is performed without regard to the case of alphabetic
characters. When a match is found, the corresponding list is
executed. If the ;; operator is used, no subsequent matches are
attempted after the first pattern match. Using ;& in place of
;; causes execution to continue with the list associated
with the next set of patterns. Using ;;& in place of ;;
causes the shell to test the next pattern list in the statement, if any,
and execute any associated list on a successful match, continuing
the case statement execution as if the pattern list had not matched. The
exit status is zero if no pattern matches. Otherwise, it is the exit
status of the last command executed in list.
- 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-1;
do lista-2; done
- until lista-1;
do lista-2; done
- Polecenie while wykonuje listę lista-2 w
sposób ciągły dopóty, dopóki ostatnie
polecenie listy lista-1 nie zwróci kodu zakończenia
równego zero. Polecenie until działa podobnie do
polecenia while, a jedyną różnicą jest
to, że test jest zanegowany: lista-2 jest wykonywana tak
długo, aż ostatnie polecenie listy-1 nie
zwróci kodu zakończenia różnego od zera. Kod
wyjścia poleceń while i until jest kodem
zakończenia ostatniego polecenia wykonanego z listy-2 lub
zerem, jeśli żadne z nich nie zostało wykonane.
Proces współbieżny jest poleceniem
powłoki poprzedzonym słowem zastrzeżonym coproc.
Jest on wykonywany w podpowłoce w sposób asynchroniczny,
jeśli polecenie zostało zakończone operatorem
kontrolnym &, z ustawionym dwustronnym potokiem pomiędzy
wykonującą go powłoką a procesem
współbieżnym.
Składnia procesu współbieżnego jest
następująca:
coproc [NAZWA] polecenie
[przekierowania]
Tworzy proces współbieżny o nazwie
NAZWA. Polecenie może być albo poleceniem
prostym, albo poleceniem złożonym (zob. wyżej).
NAZWA jest nazwą zmiennej powłoki. Jeśli nie
poda się NAZWY, domyślną jest COPROC.
Zalecanym formatem korzystania z procesu
współbieżnego jest
coproc NAZWA { polecenie
[przekierowania]; }
Forma ta jest zalecana, ponieważ proste polecenia
powodują, że proces współbieżny
będzie zawsze nazwany COPROC, jest także prostsza w
użyciu i bardziej kompletna, niż inne polecenia
złożone.
Jeśli polecenie jest poleceniem
złożonym, NAZWA jest opcjonalna. Słowo
występujące po coproc określa, czy jest ono
interpretowane jako nazwa zmiennej: jest interpretowane jako NAZWA,
jeśli nie jest zastrzeżonym słowem
wprowadzającym polecenie złożone. Jeśli
polecenie jest prostym poleceniem, NAZWA jest niedozwolona;
wynika to z konieczności zapobiegania pomyłki pomiędzy
NAZWĄ, a pierwszym słowem polecenia prostego.
Gdy proces współbieżny jest wykonywany,
powłoka tworzy zmienną tablicową (patrz Tablice
poniżej) o nazwie NAZWA w kontekście wykonywanej
powłoki. Standardowe wyjście polecenia jest
połączone potokiem z deskryptorem pliku wykonywanej
powłoki, a ten jest przypisany do NAZWA[0]. Standardowe
wejście polecenia jest połączone potokiem z
deskryptorem pliku wykonywanej powłoki, a ten jest przypisany do
NAZWA[1]. Ten potok jest ustawiany przed wszystkimi przekierowaniami
podanymi z poleceniem (patrz PRZEKIEROWANIE poniżej).
Deskryptory pliku mogą zostać użyte jako
argumenty do poleceń powłoki i przekierowań,
korzystając ze standardowych interpretacji słów.
Oprócz tych, utworzonych do wykonania poleceń i podstawiania
procesów, deskryptory plików nie są dostępne w
podpowłokach.
Identyfikator procesu powłoki utworzonej do wykonania
procesu współbieżnego jest dostępny jako
wartość zmiennej NAZWA_PID. Do czekania na
zakończenie procesu współbieżnego można
użyć wbudowanego polecenia wait.
Ponieważ proces współbieżny jest
tworzony jako polecenie asynchroniczne, polecenie coproc zawsze
zwróci powodzenie. Zwracanym statusem procesu
współbieżnego jest kod zakończenia
polecenia.
Funkcja powłoki jest obiektem wywoływanym podobnie
jako polecenie proste i wykonującym polecenie złożone z
nowym zestawem parametrów pozycyjnych. Funkcje powłoki
deklaruje się w następujący sposób:
- nazwa-f ()
polecenie-złożone [przekierowanie]
- function
nazwa-f [()] polecenie-złożone
[przekierowanie]
- This defines a function named fname. The reserved word
function is optional. If the function reserved word is
supplied, the parentheses are optional. The body of the function is
the compound command compound-command (see Compound Commands
above). That command is usually a list of commands between { and },
but may be any command listed under Compound Commands above. If the
function reserved word is used, but the parentheses are not
supplied, the braces are recommended. compound-command is executed
whenever fname is specified as the name of a simple command. When
in posix mode, fname must be a valid shell name and
may not be the name of one of the POSIX special builtins. In
default mode, a function name can be any unquoted shell word that does not
contain $. Any redirections (see REDIRECTION below)
specified when a function is defined are performed when the
function is executed. The exit status of a function definition is zero
unless a syntax error occurs or a readonly function with the same name
already exists. When executed, the exit status of a function is the exit
status of the last command executed in the body. (See
FUNCTIONS below.)
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 służy do usuwania specjalnego
znaczenia dla powłoki pewnych znaków lub słów.
Cytowanie można stosować do wyłączania
specjalnego traktowania znaków specjalnych, zapobiegania
rozpoznawaniu słów zastrzeżonych jako takich oraz do
zapobiegania podstawianiu parametrów.
Każdy z metaznaków podanych powyżej w
DEFINICJACH posiada dla powłoki specjalne
znaczenie i musi być cytowany, jeśli ma oznaczać samego
siebie.
Gdy używane są funkcje interpretacji historii
poleceń (patrz INTERPRETACJA HISTORII), znak
interpretacji historii, zwykle !, musi być
cytowany, jeśli chce się uniknąć interpretacji
historii.
Istnieją trzy mechanizmy cytowania: znak specjalny
(escape character), 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 \ oraz, gdy włączone jest
dopełnianie z historii, !. Gdy powłoka działa w
trybie posix, ! nie ma specjalnego znaczenia wewnątrz
podwójnych cudzysłowów, nawet gdy
włączone jest dopełnianie z historii. 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 <nowy
wiersz>. Cudzysłów może być cytowany
wewnątrz cudzysłowów przez poprzedzenie go odwrotnym
ukośnikiem. Jeśli dopełnianie z historii jest
włączone, to będzie wykonane, chyba że znak
! jest ujęty w cudzysłowy lub cytowany odwrotnym
ukośnikiem. Odwrotny ukośnik poprzedzający ! nie
jest usuwany.
Parametry specjalne * i @ posiadają specjalne
znaczenie wewnątrz cudzysłowów (zobacz
PARAMETRY poniżej).
Sekwencje znaków w postaci
$'łańcuch' traktowane jako specjalny wariant
pojedynczych cudzysłowów. Sekwencja jest rozwijana na
łańcuch, w którym znaki w
łańcuchu 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
- \E
- znak escape
- \f
- znak wysuwu strony (form feed)
- \n
- znak nowego wiersza (new line)
- \r
- powrót karetki
- \t
- tabulacja pozioma (horizontal tab)
- \v
- tabulacja pionowa (vertical tab)
- \\
- odwrotny ukośnik (backslash)
- \'
- apostrof
- \"
- cudzysłów
- \?
- znak zapytania
- \nnn
- ośmiobitowy znak, którego wartością jest
ósemkowa liczba nnn (jedna do trzech cyfr
ósemkowych)
- \xHH
- ośmiobitowy znak, którego wartością jest
szesnastkowa liczba nnn (jedna lub dwie cyfry szesnastkowe)
- \uHHHH
- znak Unicode (ISO/IEC 10646) o wartości szesnastkowej HHHH
(jedna do czterech cyfr szesnastkowych)
- \UHHHHHHHH
- znak Unicode (ISO/IEC 10646) o wartości szesnastkowej
HHHHHHHH (jedna do ośmiu cyfr szesnastkowych)
- \cx
- znak kontrolny x
Przetłumaczony wynik jest pojedynczo cytowany, tak jakby
nie było znaku dolara.
A double-quoted string preceded by a dollar sign
($"string") will cause the string to be translated
according to the current locale. The gettext infrastructure performs
the lookup and translation, using the LC_MESSAGES,
TEXTDOMAINDIR, and TEXTDOMAIN shell variables. If the current
locale is C or POSIX, if there are no translations available,
or if the string is not translated, the dollar sign is ignored. This is a
form of double quoting, so the string remains double-quoted by default,
whether or not it is translated and replaced. If the
noexpand_translation option is enabled using the shopt
builtin, translated strings are single-quoted instead of double-quoted. See
the description of shopt below under
SHELLBUILTINCOMMANDS.
Parametr jest elementem przechowującym
wartości. Może on być nazwą,
liczbą lub jednym ze znaków specjalnych podanych
poniżej w sekcji Parametry specjalne. Dla celów
powłoki zmienna jest parametrem oznaczanym przez
nazwę. Zmienna posiada wartość i zero lub
więcej atrybutów. Wartość atrybutom
przypisuje się za pomocą polecenia wbudowanego declare
(zobacz opis tego polecenia poniżej, w sekcji WBUDOWANE
POLECENIA POWŁOKI).
Parametr jest ustawiony jeśli przypisano mu
wartość. Łańcuch pusty jest poprawną
wartością. Po ustawieniu zmiennej, może być ona
unieważniona wyłącznie przez użycie wbudowanego
polecenia unset (zobacz poniżej WBUDOWANE POLECENIA
POWŁOKI ).
Do zmiennej można wykonać przypisanie przy
pomocy instrukcji postaci
Jeżeli nie podano wartości, to zmiennej
przypisywany jest łańcuch pusty. Wszystkie
wartości przechodzą przez interpretację tyld,
podstawianie parametrów, interpretację zmiennych, podstawianie
wyników poleceń, interpretację wyrażeń
arytmetycznych i usuwanie cytowań (zobacz poniżej
INTERPRETACJA). Jeżeli zmienna ma ustawiony
atrybut integer (całkowita), to
wartość podlega interpretacjom wyrażeń
arytmetycznych, nawet jeśli nie użyto interpretacji $((...)).
Zobacz poniżej Interpretacja wyrażeń
arytmetycznych. Nie jest wykonywane dzielenie na słowa, ani
rozwijanie nazw plików. Instrukcje przypisania mogą się
też pojawiać jako argumenty poleceń wbudowanych
alias, declare, typeset, export, readonly
i local (poleceń deklarujących). W trybie
posix te słowa wbudowane mogą wystąpić w
poleceniu po jednym lub większej liczby wystąpień
polecenia wbudowanego command i zachowują
właściwości instrukcji przypisania.
W kontekście, w którym instrukcja przypisania
przypisuje wartość do zmiennej powłoki lub do tablicy
indeksowanej, operator += może posłużyć do
dołączenia lub dodania do poprzedniej wartości
zmiennej. Obejmuje to argumenty do poleceń wbudowanych takich jak
declare, które akceptują instrukcje przypisania
(poleceń deklarujących). Gdy += jest stosowane do
zmiennej z ustawionym atrybutem integer, to wartość
jest obliczana jako wyrażenie arytmetyczne i dodawana do
bieżącej wartości zmiennej, która
również jest obliczana. Gdy += jest stosowane do zmiennej
tablicowej używając przypisania złożonego (patrz
Tablice poniżej), wartość zmiennej nie jest
niszczona (jak to ma miejsce przy użyciu =), a nowe wartości
są dołączane do tablicy poczynając od indeksu
większego o jeden on maksymalnego indeksu tablicy (w przypadku tablic
indeksowanych) lub jest dodawana jako dodatkowa para
klucz-wartość (w przypadku tablic asocjacyjnych). Gdy += jest
stosowane do zmiennej łańcuch-wartość, to
wartość jest interpretowana i dołączana
do wartości zmiennej.
Zmiennej można przypisać atrybut nazwa
referencyjna (ang. nameref) za pomocą opcji -n przekazanej
poleceniom wbudowanym declare lub local (zob. opisy
declare i local niżej) aby utworzyć
nazwę referencyjną lub odniesienie do innej zmiennej.
Pozwala to na pośrednie operowanie na zmiennych. Gdy zmienna nazwy
referencyjnej jest przywoływana, przypisywana, usuwana lub
modyfikowane są jej atrybuty (inne niż użycie lub
zmiana samej nazwy referencyjnej), operacja ta jest w
rzeczywistości wykonywana na zmiennej określonej
wartością zmiennej nazwy odniesienia. Nazwa referencyjna jest
często używana aby odnieść się do
zmiennej, której nazwa jest przekazywana jako argument do funkcji.
Przykładowo nazwa zmiennej jest przekazywana do funkcji
powłoki w pierwszym argumencie, wykonując
declare -n ref=$1
wewnątrz funkcji tworzącej zmienną nazwy
referencyjnej ref, której wartością jest nazwa
zmiennej przekazana jako pierwszy argument. Odniesienie lub przypisanie
ref oraz zmiana jej atrybutów są traktowane jako
odniesienie lub przypisania do zmiennej oraz zmiana atrybutów
zmiennej której nazwę przekazano jako $1. Jeśli
zmienna kontrolujące pętle for ma atrybut nazwy
referencyjnej, lista słów może
być listą zmiennych powłoki, a nazwa zostanie
przypisana za każdemu słowu z listy, w kolejności, przy
wykonywaniu pętli. Zmienne tablicowe nie mogą otrzymać
atrybutu nameref, jednak do zmiennych nazw referencyjnych mogą
odnosić się zmienne tablicowe i wskaźniki zmiennych
tablicowych. Nazwy referencyjne można usunąć
stosując opcję -n do polecenia wbudowanego
unset. W przeciwnym razie, gdy unset jest wykonywane z
nazwą referencyjną jako argument, zmienna do której
odnosi się nazwa referencyjna zostanie usunięta.
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).
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 nie pojawia się wewnątrz
cudzysłowów, każdy parametr pozycyjny jest
interpretowany jako oddzielne słowo. W kontekście w jakim
występują, te słowa ulegają kolejnemu
podziałowi na słowa i rozwijaniu ścieżek. 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. W
kontekstach, w których dokonywane jest dzielenie na słowa,
każdy parametr pozycyjny jest interpretowany jako osobne
słowo; jeśli nie znajduje się on w podwójnych
cudzysłowach, słowa te podlegają dzieleniu na
słowa. 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 wewnątrz słowa zachodzi interpretacja
(ujęta w cudzysłowy), to pierwszy zinterpretowany parametr
jest łączony z początkiem oryginalnego słowa,
a interpretacja ostatniego parametru jest łączona z
końcem oryginalnego słowa. 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,
gdy jest wykonywane jako polecenie asynchroniczne lub
używając słowa wbudowanego bg (zob.
niżej KONTROLA ZADAŃ).
- 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.
Powłoka ustawia następujące zmienne:
- _
- Podczas uruchamiania powłoki, ustawiany na nazwę
powłoki lub wykonywanego skryptu powłoki przekazanego w
liście argumentów. Następnie, interpretowany jest
jako ostatni argument poprzedniego polecenia prostego, wykonywanego na
pierwszym planie, 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.
- BASH
- Interpretowane jako pełna nazwa pliku użyta do
wywołania tego przebiegu bash.
- BASHOPTS
- Oddzielana dwukropkiem lista włączonych opcji
powłoki. Każde słowo na liście jest poprawnym
argumentem do opcji -s wbudowanego polecenia shopt (patrz
WBUDOWANE POLECENIA POWŁOKI
poniżej). Opcje pojawiające się w
BASHOPTS są tymi, które są raportowane
jako włączone (on) przez shopt.
Jeśli ta zmienna występuje w środowisku podczas
uruchamiania bash, to każda opcja powłoki z listy
będzie włączona przed odczytaniem plików
startowych. Ta zmienna jest tylko do odczytu.
- BASHPID
- Zmienna przechowuje identyfikator bieżącego procesu
bash. W określonych przypadkach, takich jak sytuacja, gdy
podpowłoki nie wymagają ponownej inicjalizacji bash,
różni się od $$. Przypisania do
BASHPID nie odnoszą skutku. Jeżeli
BASHPID jest unieważniona, to traci swe specjalne
właściwości, nawet jeżeli jest
następnie ponownie ustawiona.
- BASH_ALIASES
- Zmienna tablicy asocjacyjnej, której wpisy odpowiadają
wewnętrznej liście aliasów zarządzanych przez
wbudowane polecenie alias. Elementy dodawane do tablicy
pojawiają się na liście aliasów, jednak
usunięcie elementów tablicy obecnie nie powoduje
usunięcie aliasów z listy aliasów. Jeśli
BASH_ALIASES zostanie skasowana, traci swoje specjalne
właściwości, nawet jeśli zostanie
później zresetowana.
- BASH_ARGC
- Zmienna tablicowa, której wartościami są liczby
parametrów każdej ramki w bieżącym stosie
wywołania bash. Liczba parametrów
bieżącego podprogramu (funkcji powłoki lub skryptu
wykonywanego przez . lub source) znajduje się na
górze stosu. Gdy podprogram jest wykonywany, liczba przekazanych
parametrów jest przypisywana do BASH_ARGC.
Powłoka ustawia BASH_ARGC
wyłącznie w rozszerzonym trybie debugowania (patrz opis
opcji extdebug wbudowanego polecenie shopt
poniżej). Ustawienie extdebug po tym, jak powłoka
uruchomiła się w celu wykonania skryptu lub odniesienie
się do tej zmiennej gdy extdebug nie jest ustawione,
może dać niespójne wartości.
- BASH_ARGV
- Zmienna tablicowa zawierająca wszystkie parametry
bieżącego stosu wywołania bash. Ostatni
parametr ostatniego wywołania podprogramu jest umieszczony na
wierzchołku stosu, natomiast pierwszy parametr pierwszego
wywołania na spodzie. Gdy podprogram jest wykonywany, liczba
przekazanych parametrów jest przypisywana do
BASH_ARGV. Powłoka ustawia
BASH_ARGV wyłącznie w rozszerzonym
trybie debugowania (patrz opis opcji extdebug wbudowanego polecenie
shopt poniżej). Ustawienie extdebug po tym, jak
powłoka uruchomiła się w celu wykonania skryptu lub
odniesienie się do tej zmiennej gdy extdebug nie jest
ustawione, może dać niespójne wartości.
- BASH_ARGV0
- Po odwołaniu się do niej, zmienna ta jest rozwijana na
nazwę powłoki lub skryptu powłoki (identyczne do
$0; zob. opis parametru specjalnego 0 powyżej). Przypisania
do BASH_ARGV0 powodują, że wartość
zostanie przypisana również do $0. Jeżeli
BASH_ARGV0 jest unieważniona, to traci swe specjalne
właściwości, nawet jeżeli jest
następnie ponownie ustawiona.
- BASH_CMDS
- Zmienna tablicy asocjacyjnej, której wpisy odpowiadają
wewnętrznej liście skrótów poleceń,
zarządzanej przez wbudowane polecenie hash. Elementy
dodawane do tablicy pojawiają się na liście
skrótów, jednak usunięcie elementów tablicy
obecnie nie powoduje powoduje usunięcia ich z tablicy
skrótów. Jeśli BASH_CMDS zostanie skasowana,
traci swoje specjalne właściwości, nawet jeśli
zostanie później zresetowana.
- BASH_COMMAND
- Aktualnie wykonywane polecenie lub polecenie przeznaczone do wykonania,
chyba że powłoka wykonuje aktualnie polecenie
będące wynikiem zadziałania pułapki -
wówczas jest to polecenie wykonywane w czasie zadziałania
pułapki. Jeżeli BASH_COMMAND jest
unieważniona, to traci swe specjalne
właściwości, nawet jeżeli jest
następnie ponownie ustawiona.
- BASH_EXECUTION_STRING
- Argument polecenia do opcji wywołania -c.
- BASH_LINENO
- Zmienna tablicowa, której wartościami są numery
wierszy plików źródłowych, w których
przywołano każdy odpowiednik ze zmiennej
FUNCNAME. ${BASH_LINENO[$i]} jest
numerem wiersza w pliku źródłowym
(${BASH_SOURCE[$i+1]}), gdzie przywołano
${FUNCNAME[$i]} (lub
${BASH_LINENO[$i-1]}, jeśli odnosi się
do innej funkcji powłoki). Proszę użyć
LINENO, aby pobrać bieżący
numer wiersza.
- BASH_LOADABLES_PATH
- Lista rozdzielonych dwukropkami katalogów, w których
powłoka szuka dynamicznie ładowalnych poleceń
wbudowanych podanych przez polecenie enable.
- BASH_REMATCH
- Zmienna tablicowa, której wartości są przypisywane
operatorem dwuargumentowym =~ do polecenia warunkowego [[.
Element o indeksie 0 jest częścią
łańcucha pasującego do całego wyrażenia
regularnego. Element o indeksie n jest częścią
łańcucha pasującego do n-tego
podwyrażenia ujętego w nawiasy.
- BASH_SOURCE
- Zmienna tablicowa, której wartościami są nazwy
plików źródłowych, w których
zdefiniowano odpowiadające nazwy funkcji powłoki w zmiennej
tablicowej FUNCNAME. Funkcja powłoki
${FUNCNAME[$i]} jest zdefiniowana w pliku
${BASH_SOURCE[$i]} i wywoływana z
${BASH_SOURCE[$i+1]}..
- BASH_SUBSHELL
- Zwiększana o jeden, wewnątrz każdej powłoki
lub środowiska podpowłoki, gdy powłoka rozpoczyna
wykonywanie w tym środowisku. Wartością
początkową jest 0. Jeżeli BASH_SUBSHELL jest
unieważniona, to traci swe specjalne
właściwości, nawet jeżeli jest
następnie ponownie ustawiona.
- 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_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_KEY
- Klawisz (lub ostatni klawisz w sekwencji klawiszy) użyty do
wywołania bieżącej funkcji uzupełniania.
- 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_TYPE
- Ustawiana na wartość całkowitą
odpowiadającą typowi uzupełnienia, którego
próbę przeprowadzono, które spowodowało
wywołanie funkcji uzupełnienia: TAB, do normalnego
uzupełnienia, ?, do wypisywania uzupełnień po
udanej tabulacji, !, do wypisywania alternatyw
częściowego uzupełnienia słowa, @, do
wypisania uzupełnień, jeśli słowo nie
zostało zmodyfikowane lub %, do uzupełnienia menu.
Zmienna ta jest dostępna tylko w funkcjach powłoki i
zewnętrznych poleceniach wywołanych przez narzędzia
programowalnego uzupełnienia powłoki (patrz poniżej
Programowalne uzupełnienie).
- COMP_WORDBREAKS
- Zestaw znaków traktowanych przez bibliotekę readline
jako separatory słów, podczas przeprowadzania
uzupełnień słów. Jeśli
unieważniono COMP_WORDBREAKS, to traci swe specjalne
właściwości, nawet jeżeli jest
następnie ponownie ustawiona.
- COMP_WORDS
- Zmienna tablicowa (patrz Tablice poniżej)
składająca się z pojedynczych słów z
aktualnego wiersza poleceń. Wiersz jest dzielony na słowa
tak, jak podzieliłby go readline, używając
COMP_WORDBREAKS, zgodnie z opisem powyżej.
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).
- COPROC
- Zmienna tablicowa (patrz poniżej Tablice) tworzona do
zatrzymania deskryptorów plików z wyjścia lub
wejścia nienazwanych koprocesów (zobacz Koprocesy
(współprocesy) powyżej).
- 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 zmiennej 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.
- EPOCHREALTIME
- Each time this parameter is referenced, it expands to the number of
seconds since the Unix Epoch (see time(3)) as a floating point
value with micro-second granularity. Assignments to
EPOCHREALTIME are ignored. If
EPOCHREALTIME is unset, it loses its special
properties, even if it is subsequently reset.
- EPOCHSECONDS
- Each time this parameter is referenced, it expands to the number of
seconds since the Unix Epoch (see time(3)). Assignments to
EPOCHSECONDS are ignored. If
EPOCHSECONDS is unset, it loses its special
properties, even if it is subsequently reset.
- EUID
- Interpretowane jako efektywny identyfikator bieżącego
użytkownika, inicjowane przy uruchamianiu powłoki. Zmienna
ta jest tylko do odczytu.
- FUNCNAME
- Zmienna tablicowa zawierająca nazwy wszystkich funkcji
powłoki obecnych w stosie wywołań. Element z indeksem
0 jest nazwą aktualnie wykonywanej funkcji powłoki.
Najniższy element (tzn. z najwyższym numerem indeksu) to
"main". Zmienna istnieje tylko gdy wykonywana jest funkcja
powłoki. Przypisania do FUNCNAME nie odnoszą
skutku. Jeśli FUNCNAME jest
unieważniona, to traci swe specjalne
właściwości, nawet jeśli jest następnie
ponownie ustawiona.
Zmienna ta może zostać użyta razem z
BASH_LINENO i BASH_SOURCE. Każdy element
FUNCNAME ma swój odpowiednik w BASH_LINENO i
BASH_SOURCE opisujący stos wywołania. Na
przykład, ${FUNCNAME[$i]} została
wywołana z pliku ${BASH_SOURCE[$i+1]} w
wierszu o numerze ${BASH_LINENO[$i]}. Wbudowane
polecenie caller wyświetla bieżący stos
wywołania używając tej informacji.
- GROUPS
- Zmienna tablicowa zawierająca listę grup, których
członkiem jest bieżący użytkownik.
Próby przypisywania wartości do GROUPS nie
odnoszą efektu. 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. Przypisania do HISTCMD
są ignorowane. 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.
- MAPFILE
- Zmienna tablicowa (patrz Tablice poniżej) tworzona do
zatrzymania tekstu odczytywanego przez wbudowane polecenie mapfile,
gdy nie podano nazwy zmiennej.
- 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, jest on rozwijany na losową liczbę
całkowitą z zakresu od 0 do 32767. Przypisanie
wartości do RANDOM inicjuje (przekazuje ziarno)
sekwencję liczb losowych. Jeżeli
RANDOM jest unieważniona, to traci swe
specjalne właściwości, nawet jeżeli
jest następnie ponownie ustawiona.
- READLINE_ARGUMENT
- Każdy numeryczny argument przekazany do polecenia readline,
zdefiniowany za pomocą "bind -x" (patrz
WBUDOWANE POLECENIA POWŁOKI poniżej), gdy
zostało ono wywołane.
- READLINE_LINE
- Zawartość bufora wiersza readline, do użycia z
"bind -x" (patrz WBUDOWANE POLECENIA
POWŁOKI poniżej).
- READLINE_MARK
- Pozycja zaznaczenia (zapisanego punktu wprowadzania) w buforze wiersza
readline, do użycia z "bind -x" (patrz
WBUDOWANE POLECENIA POWŁOKI poniżej). Znaki
pomiędzy punktem wprowadzania i zaznaczeniem są
często określane jako region.
- READLINE_POINT
- Pozycja punktu wprowadzania w buforze wiersza readline, do
użycia z "bind -x" (patrz WBUDOWANE POLECENIA
POWŁOKI poniżej).
- 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, rozwijany jest on do liczby sekund, jakie
upłynęły od wywołania powłoki.
Jeżeli do SECONDS zostanie przypisana
wartość, to wartość zwracana przez
kolejne odwołania jest równa liczbie sekund od czasu
przypisania plus przypisana wartość. Liczba sekund w
momencie wywołania powłoki oraz czas bieżący
są zawsze określane poprzez sprawdzenie zegara systemowego.
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.
- SRANDOM
- This variable expands to a 32-bit pseudo-random number each time it is
referenced. The random number generator is not linear on systems that
support /dev/urandom or arc4random, so each
returned number has no relationship to the numbers preceding it. The
random number generator cannot be seeded, so assignments to this variable
have no effect. If SRANDOM is unset, it loses its special
properties, even if it is subsequently reset.
- 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_COMPAT
- The value is used to set the shell's compatibility level. See
SHELL COMPATIBILITY MODE below for a description of the
various compatibility levels and their effects. The value may be a
decimal number (e.g., 4.2) or an integer (e.g., 42) corresponding to the
desired compatibility level. If BASH_COMPAT is unset or set to the
empty string, the compatibility level is set to the default for the
current version. If BASH_COMPAT is set to a value that is not one
of the valid compatibility levels, the shell prints an error message and
sets the compatibility level to the default for the current version. The
valid values correspond to the compatibility levels described below under
SHELL COMPATIBILITY MODE. For example, 4.2 and 42 are valid
values that correspond to the compat42 shopt option
and set the compatibility level to 42. The current version is also a valid
value.
- 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.
- BASH_XTRACEFD
- Jeśli ustawiono liczbę całkowitą
odpowiadającą poprawnemu deskryptorowi pliku, to bash
zapisze wyjście stosu wygenerowane gdy set -x jest
włączone do tego deskryptora pliku. Deskryptor pliku jest
zamykany gdy BASH_XTRACEFD jest usuwana lub przy przypisaniu
nowej wartości. Usunięcie
BASH_XTRACEFD lub przypisanie jej
łańcucha pustego powoduje wysłanie stosu na
standardowe wyjście błędów. Proszę
zauważyć, że ustawienie BASH_XTRACEFD
na 2 (deskryptor pliku wyjścia
błędów), a następnie usunięcie jej
spowoduje zamknięcie standardowego wyjścia
błędów.
- 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".
- CHILD_MAX
- Ustawia liczbę wartości kodów wyjścia
zakończonych procesów potomnych, które ma
zapamiętać powłoka. Bash nie pozwoli na zmniejszenie
tej wartości poniżej minimum określonego normą
POSIX, istnieje również wartość maksymalna
(obecnie 8192), której nie można przekroczyć.
Minimalna wartość jest zależna od systemu.
- COLUMNS
- Używana przez polecenie wbudowane select do wyznaczenia
szerokości terminala przy wypisywaniu list wyboru. Ustawiana
automatycznie, gdy włączono opcję checkwinsize
oraz w powłoce interaktywnej 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). Każdy element tablicy zawiera jedno
możliwe uzupełnienie.
- EMACS
- Gdy bash znajdzie opisywaną zmienną w
środowisku podczas uruchamiania powłoki, z
wartością ustawioną na "t", to przyjmuje,
że powłoka działa w buforze powłoki Emacsa i
wyłącza edycję wiersza.
- ENV
- Rozwijane i wykonywane podobnie do BASH_ENV (zob.
INVOCATION powyżej), gdy powłoka interaktywna
jest wywołana w trybie posix.
- EXECIGNORE
- Lista oddzielonych dwukropkami wzorców powłoki (zob.
Dopasowanie wzorca) definiujących listę nazw
plików ignorowanych przy szukaniu poleceń za
pomocą PATH. Pliki których pełna
ścieżka pasuje do jednego z tych wzorców nie
są traktowane jako pliki wykonywalne dla dopełniania
i wykonywania poleceń przez PATH. Nie wpływa to na
zachowanie poleceń [, test oraz [[.
Pełne ścieżki w liście skrótów
poleceń nie są przedmiotem EXECIGNORE.
Tę zmienną należy używać do
ignorowania plików bibliotek współdzielonych,
które mają ustawione prawo wykonywania, ale nie
są plikami wykonywalnymi. Dopasowanie wzorców
przestrzega ustawień opcji powłoki extglob.
- 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:~" (cytowanie jest niezbędne przy przypisywaniu do
tej zmiennej wartości zawierającej tyldy).
- FUNCNEST
- Gdy jest ustawiona na wartość numeryczną
większą od zera, definiuje maksymalny poziom
zagnieżdżenia funkcji. Wywołania funkcji
przekraczające określony poziom będą
powodowały przerwanie bieżącego polecenia.
- 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
- Lista rozdzielonych dwukropkami wartości,
określającymi sposób zapisywania w liście
historii. 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. Wartość erasedups powoduje
usunięcie z historii wszystkich wcześniejszych wierszy,
pasujących do bieżącego, przed zapisaniem listy.
Wszystkie wartości poza wymienionymi powyżej są
ignorowane. 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.
Drugi i kolejne wiersze złożonego polecenia wielowierszowego
nie są sprawdzane i są dodawane do historii bez
względu na wartość
HISTCONTROL.
- 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.
- 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, przez usunięcie najstarszych wpisów.
Plik historii jest także obcinany do tego rozmiaru po zapisaniu go
w czasie kończenia pracy przez powłokę. Jeśli
wartość wynosi 0, plik historii jest obcinany do zera.
Wartości nienumeryczne i wartości numeryczne mniejsze
niż zero wstrzymują obcinanie. Powłoka ustawia
wartość domyślną do wartości
HISTSIZE po odczytaniu plików początkowych
powłoki.
- 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. Dopasowanie wzorców
honoruje ustawienia opcji powłoki extglob.
- HISTSIZE
- Liczba poleceń do zapamiętania w historii poleceń
(zob. HISTORIA poniżej). Jeśli
wartość wynosi 0, polecenia nie są zachowywane w
historii. Wartości numeryczne mniejsze niż zero
powodują, że każde polecenie jest
zapamiętywane w historii (znosi limit). Powłoka ustawia
wartość domyślną 500 po odczytaniu
plików początkowych powłoki.
- HISTTIMEFORMAT
- Gdy ta zmienna jest ustawiona i nie jest pusta, jej wartość
jest użyta jak format łańcucha do strftime(3),
w celu wyświetlenia pieczątki czasowej związanej z
każdym wpisem historii, wyświetlanym przez wbudowane
polecenie history. Gdy zmienna jest ustawiona, pieczątki
czasowe są zapisywane do pliku historii, dzięki czemu
mogą być zachowywane między sesjami powłoki.
Używany jest wówczas znak komentarza historii, aby
odróżnić pieczątki czasowe od
pozostałych wierszy historii.
- HOME
- Katalog domowy bieżącego użytkownika; domyślny
argument wbudowanego polecenia cd. Wartość tej
zmiennej wykorzystywana jest też przy wykonywaniu interpretacji
tyld.
- HOSTFILE
- Zawiera nazwę pliku o tym samym formacie co /etc/hosts
który powinien 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
dzieleniu 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ślny plik ~/.inputrc (zobacz READLINE
poniżej).
- INSIDE_EMACS
- Jeśli zmienna ta pojawi się w środowisko przy
uruchomieniu powłoki, bash przyjmuje że działa
wewnątrz bufora powłoki Emacs i może
wyłączyć edycję wiersza, w
zależności od wartości TERM.
- 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.
- LC_TIME
- Ta zmienna określa kategorię locale używaną do
formatowania daty i czasu.
- LINES
- Używana przez polecenie wbudowane select do wyznaczenia
długości kolumn przy wypisywaniu list wyboru. Ustawiana
automatycznie gdy włączono opcję checkwinsize
oraz w powłoce interaktywnej po otrzymaniu 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 lub
katalogu w formacie Maildir.
- 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 lub jest ustawiona na wartość nie
większą od zera lub zero, 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 można skonfigurować, aby zapewnił
tej zmiennej wartość domyślną (domyślnie
jej nie posiada), 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).
Nazwa katalogu zerowej długości (pusta) oznacza katalog
bieżący. Pusty katalog można podać jako dwa
złączone dwukropki lub początkowy albo końcowy
dwukropek. Domyślna ścieżka zależy od systemu
i ustawiana jest przez administratora instalującego bash.
Powszechną wartością jest
``/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin''.
- 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
Gdy powłoka wchodzi w tryb posix, ustawia tę
zmienną, jeśli nie była ona jeszcze ustawiona.
- PROMPT_COMMAND
- Jeśli zmienna ta jest ustawiona i jest tablicą,
wartość każdego z elementów jest wykonywana
jako polecenie, przed wydaniem każdej podstawowej zachęty.
Jeśli jest ustawiona, lecz nie jest zmienną
tablicową, jej wartość jest traktowania jako
polecenie do wykonania.
- PROMPT_DIRTRIM
- Gdy jest ustawiona na liczbę większa od zera, jej
wartość jest używana jako liczba początkowych
składowych katalogów do usunięcia podczas
interpretowania sekwencji specjalnych łańcucha
zachęty \w i \W (patrz poniżej
ZACHĘTA POWŁOKI). Usuwane znaki są
zastępowane wielokropkiem.
- PS0
- Wartość tego parametru jest interpretowana (zobacz
poniżej ZACHĘTA) i wyświetlana przez
powłokę interaktywną po odczytaniu polecenia,
a przed jego wykonaniem.
- 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 rozwiniętej wartości
PS4, w razie potrzeby, powtarzany jest wielokrotnie,
by wskazać wiele poziomów zagnieżdżenia.
Domyślnie jest to "+ ".
- SHELL
- Zmienna ta jest rozwijana na pełną
ścieżkę powłoki. Jeśli nie jest
ustawiona podczas uruchamiania powłoki, bash przypisuje jej
wartość pełnej ścieżki powłoki
zgłoszeniowej bieżącego użytkownika.
- 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.
- %%
- Dosłowny znak %.
- %[p][l]R
- Czas, jaki upłynął, w sekundach.
- %[p][l]U
- Liczba sekund, jakie CPU zużył w trybie
użytkownika.
- %[p][l]S
- Liczba sekund, jakie CPU zużył w trybie systemowym.
- %P
- Procent wykorzystania CPU, liczony jako (%U + %S) / %R.
- Opcjonalne p jest cyfrą określającą
dokładność (precision), liczbę cyfr
ułamkowych po kropce dziesiętnej. Wartość zero
powoduje, że nie będzie wyświetlana ani kropka
dziesiętna ani część ułamkowa.
Mogą być podane co najwyżej trzy miejsca po kropce
dziesiętnej; wartości p większe od 3 zmieniane
są na 3. Jeżeli nie podano p, to używana jest
wartość 3.
- Opcjonalne l 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\t%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 TMOUT jest interpretowane jako
domyślny czas oczekiwania wbudowanego read. Polecenie
select kończy się, jeśli dane nie
zostaną wprowadzone po liczbie TMOUT sekund,
jeżeli wejście pochodzi z terminala. W przypadku
powłok interaktywnych, wartość jest
interpretowana jako liczba sekund określającą czas,
przez jaki powłoka ma czekać na wprowadzenie wiersza danych
po wyświetleniu głównej zachęty. Bash
kończy pracę po odczekaniu tego czasu jeśli
pełen wiersz danych nie pojawił się.
- TMPDIR
- Jeśli jest ustawiona, bash używa jej wartości
jako nazwy katalogu w którym tworzy pliki tymczasowe do
użytku powłoki.
- 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 interpretacji
historii, 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.
Bash udostępnia indeksowane i asocjacyjne zmienne
tablicowe jednowymiarowe. Jako tablica może zostać
użyta dowolna zmienna; wbudowane declare jawnie zadeklaruje
tablicę. Nie ma maksymalnego rozmiaru tablic, ani wymagania, by
wszystkie jej elementy były indeksowane czy przypisywane w
sposób ciągły. Do tablic indeksowanych można
się odwołać przy pomocy liczb całkowitych (w tym
wyrażeń arytmetycznych), począwszy od zera; natomiast
tablice asocjacyjne używają konkretnych
łańcuchów. Jeśli nie zaznaczono inaczej, indeksy
tablic indeksowanych muszą być nieujemnymi liczbami
całkowitymi.
Tablica indeksowana tworzona jest automatycznie jeśli
wykonywane jest przypisanie do jakiejś zmiennej przy pomocy
składni
nazwa[wskaźnik]=wartość.
Wskaźnik tablicy traktowany jest jako wyrażenie
arytmetyczne, które musi po interpretacji dać liczbę.
Chcąc jawnie zadeklarować tablicę indeksowaną,
użyj declare -a nazwa (zobacz WBUDOWANE
POLECENIA POWŁOKI poniżej). declare -a
nazwa[wskaźnik] jest
również akceptowane; wskaźnik jest
wówczas ignorowany.
Tablice asocjacyjne są tworzone za pomocą
konstrukcji declare -A nazwa.
Atrybuty mogą być podane do zmiennej tablicy przy
użyciu declare i readonly. Każdy z
atrybutów stosowany jest do wszystkich elementów tablicy.
Arrays are assigned to using compound assignments of the form
name=(value1 ... valuen), where each
value may be of the form [subscript]=string. Indexed
array assignments do not require anything but string. Each
value in the list is expanded using all the shell expansions
described below under EXPANSION. When assigning to
indexed arrays, if the optional brackets and subscript are supplied, that
index is assigned to; otherwise the index of the element assigned is the
last index assigned to by the statement plus one. Indexing starts at
zero.
When assigning to an associative array, the words in a compound
assignment may be either assignment statements, for which the subscript is
required, or a list of words that is interpreted as a sequence of
alternating keys and values: name=( key1 value1 key2
value2 ...). These are treated identically to
name=( [key1]=value1 [key2]=value2
...). The first word in the list determines how the remaining words
are interpreted; all assignments in a list must be of the same type. When
using key/value pairs, the keys may not be missing or empty; a final missing
value is treated like the empty string.
Składnia ta jest akceptowana także przy poleceniu
wbudowanym declare. Pojedyncze elementy tablicy można
przypisać za pomocą składni
nazwa[wskaźnik]=wartość
wprowadzonej powyżej. Jeśli wskaźnik da po
interpretacji liczbę mniejszą od zera, to jest używany
jako przesunięcie od maksymalnego indeksu tablicy plus jeden
(wskaźnik -1 odnosi się więc do ostatniego elementu
tablicy).
The += operator will append to an array variable when assigning
using the compound assignment syntax; see PARAMETERS
above.
Do elementu tablicy można odwoływać
się używając ${nazwa[wskaźnik]}.
Nawiasy są wymagane, by uniknąć konfliktów z
rozwijaniem nazw plików. Jeśli wskaźnikiem jest
@ lub *, to powyższe słowo interpretowane jest
jako wszystkie elementy nazwy. Wskaźniki te
różnią się tylko wtedy, gdy słowo pojawia
się w cudzysłowach. Jeśli słowo ujęto w
cudzysłowy, to ${nazwa[*]} interpretowane jest jako pojedyncze
słowo o wartości wszystkich elementów tablicy
rozdzielonych pierwszym znakiem zmiennej specjalnej IFS,
zaś ${nazwa[@]} interpretuje każdy z
elementów nazwa jako odrębne słowo. Jeśli
brak jest elementów tablicy, to ${nazwa[@]} interpretowane
jest jako nic. Jeśli wewnątrz słowa zachodzi
interpretacja (ujęta w cudzysłowy), to pierwszy
zinterpretowany parametr jest łączony z początkiem
oryginalnego słowa, a interpretacja ostatniego parametru jest
łączona z końcem oryginalnego słowa. Jest to
zachowanie analogiczne do interpretacji parametrów specjalnych
* i @ (zobacz powyżej Parametry specjalne).
${#nazwa[wskaźnik]} interpretowane jest jako
długość ${nazwa[wskaźnik]}.
Jeśli wskaźnikiem jest * lub @, to
interpretacją jest liczba elementów w tablicy. Jeśli
wskaźnik da po interpretacji liczbę mniejszą od
zera, to jest używany jako przesunięcie od maksymalnego
indeksu tablicy plus jeden (wskaźnik -1 odnosi się więc
do ostatniego elementu tablicy).
Odwoływanie się do zmiennej tablicowej bez podania
wskaźnika jest równoważne odwołaniu do elementu
numer zero. Każde odwołanie do zmiennej przy podaniu
prawidłowego wskaźnika jest poprawne; bash utworzy
tablicę jeśli będzie to konieczne.
Zmienna tablicowa jest ustawiona, jeśli do wskaźnika
przypisano wartość. Łańcuch pusty jest
poprawną wartością.
Można pozyskać zarówno Klucze
(wskaźniki) tablicy jak i wartości.
${!nazwa[@]} i ${!nazwa[*]}
są interpretowane jako wskaźniki przypisane do zmiennej
nazwa tablicy. expand to the indices assigned in array variable
name. Gdy zastosowany jest cudzysłów, powłoka
zachowuje się podobnie jak w przypadku interpretacji specjalnych
parametrów @ i * w cudzysłowach.
The unset builtin is used to destroy arrays. unset
name[subscript] destroys the array element at index
subscript, for both indexed and associative arrays. Negative
subscripts to indexed arrays are interpreted as described above. Unsetting
the last element of an array variable does not unset the variable.
unset name, where name is an array, removes the entire
array. unset name[subscript], where subscript is
* or @, behaves differently depending on whether name
is an indexed or associative array. If name is an associative array,
this unsets the element with subscript * or @. If name
is an indexed array, unset removes all of the elements but does not remove
the array itself.
When using a variable name with a subscript as an argument to a
command, such as with unset, without using the word expansion syntax
described above, the argument is subject to pathname expansion. If pathname
expansion is not desired, the argument should be quoted.
Każde z wbudowanych declare, local i
readonly akceptuje opcję -a do określania tablic
indeksowanych i opcję -A do określania tablic
asocjacyjnych. Jeśli podano obie opcje, to pierwszeństwo ma
-A. Polecenie 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 wykonywana jest na wierszu poleceń po jego
podziale na słowa. Istnieje siedem rodzajów wykonywanych
interpretacji: interpretacja nawiasów (brace expansion),
interpretacja tyld (tilde expansion), podstawianie
parametrów i interpretacja zmiennych (parameter and variable
expansion), podstawienie wyników poleceń (command
substitution), interpretacja wyrażeń arytmetycznych
(arithmetic expansion), podział na słowa (word
splitting) i rozwinięcie nazw plików (pathname
expansion).
Kolejność interpretacji: interpretacja
nawiasów, interpretacja tyld, interpretacja parametrów i
zmiennych, interpretacja wyrażeń arytmetycznych i podstawianie
wyników poleceń (wykonywane od lewej do prawej),
podział na słowa i rozwijanie nazw ścieżek.
Na systemach potrafiących to obsłużyć,
istnieje dodatkowa dostępna interpretacja: podstawienie
wyników procesów (process substitution). Jest to
przeprowadzane w tym samym czasie, jak interpretacja tyld,
parametrów, zmiennych i wyrażeń arytmetycznych
oraz poleceń.
Po przeprowadzeniu tych interpretacji znaki cytowania obecne w
pierwotnym słowie są usuwane, chyba że same
zostały zacytowane (usunięcie cytowań).
Only brace expansion, word splitting, and pathname expansion can
increase the number of words of the expansion; other expansions expand a
single word to a single word. The only exceptions to this are the expansions
of "$@" and "${name[@]}",
and, in most cases, $* and ${name[*]} as
explained above (see PARAMETERS).
Interpretacja nawiasów jest mechanizmem, przez
który mogą być generowane dowolne
łańcuchy. Mechanizm ten przypomina rozwinięcia nazw
plików, ale generowane nazwy plików nie muszą
określać plików istniejących. Wzorce,
mające podlegać interpretacji nawiasów mają
postać opcjonalnej preambuły, po której
występują serie separowanych przecinkami
łańcuchów pomiędzy parą nawiasów
klamrowych, po których następuje opcjonalny dopisek
(postscript). Preambuła stanowi przedrostek dla każdego z
łańcuchów zawartych w nawiasach, a dopisek dodawany
jest do każdego łańcucha wynikowego, przy interpretacji
od lewej do prawej.
Interpretacja nawiasów może być
zagnieżdżana. Wyniki każdego zinterpretowanego
łańcucha nie są sortowane; zachowywana jest
kolejność od lewej do prawej. Na przykład,
a{d,c,b}e interpretowane jest jako "ade ace
abe".
Sekwencja wyrażeń przyjmuje postać
{x..y[..krok]}, gdzie
x i y są albo liczbami całkowitymi, albo
pojedynczymi literami, a opcjonalny krok jest liczbą
całkowitą. Gdy podane są liczby całkowite, to
wyrażenie jest rozwijane do wszystkich liczb pomiędzy x
i y (włącznie). Podane liczby mogą być
poprzedzone 0, które wymusza identyczną
szerokość każdej z wynikowych liczb. Gdy x lub
y zaczynają się zerem, to powłoka próbuje
wymusić utworzenie liczb zawierających tę samą
liczbę cyfr, uzupełniając je zerami tam, gdzie zachodzi
taka potrzeba. Gdy podano litery, wyrażenie jest rozwijane do
wszystkich znaków, znajdujących się leksykalnie (w
domyślnych locale C) pomiędzy x a y
(włącznie). Proszę odnotować, że x
i y muszą być tego samego typu (liczby lub litery). Gdy
podano krok, to jest on używany jako różnica
pomiędzy poszczególnymi wynikami. W zależności
od podanych wartości, domyślnym krokiem jest 1 lub -1.
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 podlegający interpretacji nawiasów oraz
wyłącza interpretację nawiasów do
zamknięcia znakiem }.
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).
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ść.
Bash also performs tilde expansion on words satisfying the
conditions of variable assignments (as described above under
PARAMETERS) when they appear as arguments to simple
commands. Bash does not do this, except for the declaration commands
listed above, when in posix mode.
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 nie 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. Parametr jest parametrem
powłoki opisanych powyżej PARAMETRY lub odniesieniem
do tablicy (Tablice).
If the first character of parameter is an exclamation point
(!), and parameter is not a nameref, it introduces a
level of indirection. Bash uses the value formed by expanding the
rest of parameter as the new parameter; this is then expanded
and that value is used in the rest of the expansion, rather than the
expansion of the original parameter. This is known as indirect
expansion. The value is subject to tilde expansion, parameter expansion,
command substitution, and arithmetic expansion. If parameter is a
nameref, this expands to the name of the parameter referenced by
parameter instead of performing the complete indirect expansion. The
exceptions to this are the expansions of ${!prefix*}
and ${!name[@]} described below. The exclamation point
must immediately follow the left brace in order to introduce
indirection.
W każdym z poniższych przypadków,
słowo podlega interpretacji tyldy, podstawianiu
parametrów, podstawianiu wyników poleceń i
interpretacji wyrażeń arytmetycznych.
Gdy nie przeprowadza interpretacji
podłańcuchów, za pomocą opisanych poniżej
formuł (np. :-) bash sprawdza czy parametr nie jest
pusty lub nieustawiony. Pominięcie dwukropka skutkuje sprawdzeniem
jedynie tego, czy parametr nie jest nieustawiony.
- ${parametr:-słowo}
- Używa wartości domyślnych. Jeżeli
parametr jest nieustawiony lub pusty, to podstawiane jest
zinterpretowane słowo. W przeciwnym razie, podstawiana jest
wartość parametru.
- ${parametr:=słowo}
- Przypisuje wartości domyślne. Jeżeli
parametr jest nieustawiony lub pusty, to jest mu przypisywane
zinterpretowane słowo. Następnie podstawiana jest
wartość parametru. Nie można w ten
sposób przypisywać wartości parametrom pozycyjnym ani
parametrom specjalnym.
- ${parametr:?słowo}
- Wyświetla błąd jeśli pusty lub
nieustawiony. Jeżeli parametr jest nieustawiony lub
pusty, to na standardowe wyjście błędów
zapisywane jest zinterpretowane słowo (lub komunikat o takim
wyniku, jeśli brak słowa). Jeśli
powłoka nie jest interaktywna, to kończy pracę. W
przeciwnym wypadku, podstawiana jest wartość
parametru.
- ${parametr:+słowo}
- Używa wartości alternatywnej. Jeżeli
parametr jest nieustawiony lub pusty, to nic nie jest podstawiane,
w przeciwnym razie podstawiane jest zinterpretowane
słowo.
- ${parametr:przesunięcie}
- ${parametr:przesunięcie:długość}
- Interpretacja podłańcuchów. Interpretuje do
długości znaków wartości
parametru, poczynając od znaku określonego
przesunięciem. Jeśli parametrem jest @
lub *, tablica indeksowana ze wskaźnikiem @ lub
* lub nazwa tablicy asocjacyjnej, wynik różni
się, zgodnie z poniższym opisem. Jeśli nie poda
się długości, to interpretuje
podłańcuch wartości parametru
poczynając od znaku określonego przesunięciem
i kończąc z końcem wartości.
Długość i przesunięcie są
wyrażeniami arytmetycznymi (zob. OBLICZANIE
WYRAŻEŃ ARYTMETYCZNYCH poniżej).
Jeśli przesunięcie wyniesie mniej
niż zero, wartość jest używana jako
przesunięcie w znakach od końca wartości
parametru. Jeśli długość
wyniesie mniej niż zero, jest interpretowana jako
przesunięcie w znakach od końca wartości
parametru, a nie jako liczba znaków, a interpretacja
będzie dotyczyć znaków pomiędzy
przesunięciem i tym wynikiem. Proszę
zauważyć, że ujemne przesunięcie musi
być oddzielone od dwukropka przynajmniej jedną
spacją aby zapobiec pomyleniu z wyrażeniem :-.
Jeśli parametrem jest @ lub *, to
wynikiem jest długość parametrów
pozycyjnych poczynając od przesunięcia. Ujemne
przesunięcie jest liczone w odniesieniu do parametru o
jeden więcej niż największy parametr pozycyjny,
więc przesunięcie -1 jest interpretowane jako ostatni
parametr pozycyjny. Jeśli długość
będzie mniejsza od zera wystąpi błąd
interpretacji.
Jeśli parametr jest nazwą tablicy
indeksowanej z wskaźnikiem @ lub *, to wynikiem jest
długość elementów tablicy
poczynając od ${parametr[przesunięcie]}.
Jeśli wskaźnik da po interpretacji liczbę
mniejszą od zera, to jest używany jako przesunięcie
od maksymalnego indeksu tablicy plus jeden. Jeśli
długość będzie mniejsza od zera
wystąpi błąd interpretacji.
Interpretacja podłańcucha zastosowana do tablicy
asocjacyjnej da w wyniku niezdefiniowany rezultat.
Indeksowanie podłańcuchów zaczyna
się od zera, chyba że używane są parametry
pozycyjne, wówczas indeksy liczy się domyślnie od
1. Jeśli przesunięcie wyniesie 0 i użyje
się parametrów pozycyjnych, do listy włącza
się na początku $0.
- ${!przedrostek*}
- ${!przedrostek@}
- Nazywa pasujący przedrostek. Rozwija się w
listę nazw tych zmiennych, których nazwy rozpoczynają
się od przedrostka, rozdzielonych od siebie pierwszym
znakiem zmiennej specjalnej IFS. Jeśli używane
jest @, a interpretacja jest ujęta w
cudzysłowy, to każda nazwa zmiennej jest interpretowana jako
oddzielne słowo.
- ${!nazwa[@]}
- ${!nazwa[*]}
- Lista kluczy z tablicy. Jeśli nazwa jest
zmienną tablicową, jest rozwijana do listy
wskaźników (kluczy) tablicowych przypisanych do
nazwy. Jeśli nazwa nie jest tablicą,
interpretowana jest do 0, jeśli nazwa jest ustawiona lub
pozostaje pusta w przeciwnym wypadku. Gdy używane jest !, a
interpretacja jest ujęta w cudzysłowy, każdy klucz
jest rozwijany do oddzielnego słowa.
- ${#parametr}
- Długość parametru. Podstawiana jest
długość, w znakach, wartości parametru.
Jeżeli parametrem jest * lub @,
wartość podstawiana jest liczbą parametrów
pozycyjnych. Jeżeli parametr jest nazwą tablicy o
indeksowanej przez * lub @, wartość
podstawiana jest liczbą elementów tablicy.
- ${parametr#słowo}
- ${parametr##słowo}
- Remove matching prefix pattern. The word is expanded to
produce a pattern just as in pathname expansion, and matched against the
expanded value of parameter using the rules described under
Pattern Matching below. If the pattern matches the beginning of the
value of parameter, then the result of the expansion is the
expanded value of parameter with the shortest matching pattern (the
“#” case) or the longest matching pattern (the
“##” case) deleted. If parameter is @
or *, the pattern removal operation is applied to each positional
parameter in turn, and the expansion is the resultant list. If
parameter is an array variable subscripted with @ or
*, the pattern removal operation is applied to each member of the
array in turn, and the expansion is the resultant list.
- ${parametr%słowo}
- ${parametr%%słowo}
- Remove matching suffix pattern. The word is expanded to
produce a pattern just as in pathname expansion, and matched against the
expanded value of parameter using the rules described under
Pattern Matching below. If the pattern matches a trailing portion
of the expanded value of parameter, then the result of the
expansion is the expanded value of parameter with the shortest
matching pattern (the “%” case) or the longest
matching pattern (the “%%” case) deleted. If
parameter is @ or *, the pattern removal operation is
applied to each positional parameter in turn, and the expansion is the
resultant list. If parameter is an array variable subscripted with
@ or *, the pattern removal operation is applied to each
member of the array in turn, and the expansion is the resultant list.
- ${parametr/wzorzec/łańcuch}
- ${parametr//wzorzec/łańcuch}
- ${parametr/#wzorzec/łańcuch}
- ${parametr/%wzorzec/łańcuch}
- Pattern substitution. The pattern is expanded to produce a
pattern just as in pathname expansion. Parameter is expanded and
the longest match of pattern against its value is replaced with
string. string undergoes tilde expansion, parameter and
variable expansion, arithmetic expansion, command and process
substitution, and quote removal. The match is performed using the rules
described under Pattern Matching below. In the first form above,
only the first match is replaced. If there are two slashes separating
parameter and pattern (the second form above), all matches
of pattern are replaced with string. If pattern is
preceded by # (the third form above), it must match at the
beginning of the expanded value of parameter. If pattern is
preceded by % (the fourth form above), it must match at the end of
the expanded value of parameter. If the expansion of string
is null, matches of pattern are deleted. If string is null,
matches of pattern are deleted and the / following
pattern may be omitted.
If the patsub_replacement shell option is enabled using
shopt, any unquoted instances of & in string
are replaced with the matching portion of pattern.
Quoting any part of string inhibits replacement in the
expansion of the quoted portion, including replacement strings stored in
shell variables. Backslash will escape & in string;
the backslash is removed in order to permit a literal & in
the replacement string. Backslash can also be used to escape a
backslash; \\ results in a literal backslash in the replacement.
Users should take care if string is double-quoted to avoid
unwanted interactions between the backslash and double-quoting, since
backslash has special meaning within double quotes. Pattern substitution
performs the check for unquoted & after expanding
string; shell programmers should quote any occurrences of
& they want to be taken literally in the replacement and
ensure any instances of & they want to be replaced are
unquoted.
If the nocasematch shell option is enabled, the match
is performed without regard to the case of alphabetic characters. If
parameter is @ or *, the substitution operation is
applied to each positional parameter in turn, and the expansion is the
resultant list. If parameter is an array variable subscripted
with @ or *, the substitution operation is applied to each
member of the array in turn, and the expansion is the resultant
list.
- ${parametr^wzorzec}
- ${parametr^^wzorzec}
- ${parametr,wzorzec}
- ${parametr,,wzorzec}
- Modyfikacja wielkości znaków. Ta interpretacja
modyfikuje wielkość zawartych liter zgodnie z
parametrem. Wzorzec jest interpretowany w taki
sposób, jak czyni to rozwijanie nazw plików. Każdy
znak w interpretowanej wartości parametru jest sprawdzany ze
wzorcem i jeśli do niego pasuje, wielkość
litery jest zmieniana. Wzorzec nie powinien dopasowywać
więcej niż jednego znaku. Operator ^ konwertuje
małe litery pasujące do wzorca na wielkie, operator
, działa odwrotnie. ^^ i ,, konwertują
każdy dopasowany znak interpretowanej wartości, natomiast
^ i , konwertują jedynie jej pierwszy znak.
Jeśli nie podano wzorca, to przyjmuje się za niego
?, co powoduje dopasowanie każdego znaku. Jeśli
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.
- ${parametr@operator}
- Przekształcenie parametrów. Ta interpretacja jest
albo przekształceniem wartości parametrów,
albo informacji o samych parametrach, w zależności od
wartości operatora. Każdy operator jest
pojedynczą literą:
- U
- Interpretacją jest łańcuch będący
wartością parametru z małymi literami
zamienionymi na wielkie litery.
- u
- Interpretacją jest łańcuch będący
wartością parametru z pierwszym znakiem zamienionym
na wielką literę, jeśli jest to litera.
- L
- Interpretacją jest łańcuch będący
wartością parametru z wielkimi literami zamienionymi
na małe litery.
- Q
- Interpretacją jest łańcuch będący
wartością parametru cytowany w formacie, jaki
może być ponownie wykorzystany jako wejście
powłoki.
- E
- Interpretacją jest łańcuch będący
wartością parametru z sekwencjami ucieczki z
ukośnikiem cytowanych za pomocą mechanizmu
$'...'.
- P
- Interpretacją jest łańcuch
będący wartością parametru taką,
jaką byłby jako łańcuch zachęty (zob.
poniżej ZACHĘTA).
- A
- Interpretacją jest łańcuch w postaci z
jaką instrukcja przypisania lub polecenie declare przy
interpretacji odtworzyła by parametr z jego atrybutami i
wartością.
- K
- Produces a possibly-quoted version of the value of parameter,
except that it prints the values of indexed and associative arrays as a
sequence of quoted key-value pairs (see Arrays above).
- a
- Interpretacją jest łańcuch
składający się z wartości flag
reprezentujących atrybuty parametru.
- k
- Like the K transformation, but expands the keys and values of indexed and
associative arrays to separate words after word splitting.
Jeżeli parametrem jest @ lub *, to
operacja 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 *, to operacja jest przeprowadzana po kolei na
każdym elemencie tablicy, zaś wynikiem interpretacji jest
powstała lista.
Na wyniku interpretacji jest przeprowadzany podział na
słowa oraz rozwinięcie nazw plików zgodnie z opisem
poniżej.
Podstawianie wyników poleceń
Podstawianie wyników poleceń (command
substitution) pozwala na zastępowanie nazwy polecenia wyjściem
(wynikiem) z jego działania. Posiada dwie postaci:
lub
`polecenie`
Bash wykonuje interpretację wykonując
polecenie w środowisku podpowłoki 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
mogą 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 jest poprzedzony przez $, ` 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 pozwala na
obliczanie wyrażeń arytmetycznych i podstawianie wyniku.
Format interpretacji arytmetycznej:
Stary format $[wyrażenie] jest
przestarzały i zostanie usunięty w przyszłych wersjach
basha.
wyrażenie podlega takiej samej interpretacji, jak
gdyby było ujęte w podwójne cudzysłowy, ale
cudzysłów wewnątrz nawiasów w
wyrażeniu nie jest traktowany specjalnie i jest usuwany.
Wszystkie tokeny w wyrażeniu podlegają interpretacji
parametrów i zmiennych, podstawianiu wyników poleceń i
usuwaniu cudzysłowów. Wynik jest traktowany jako
wyrażenie arytmetyczne do obliczenia. Wyrażenia arytmetyczne
mogą być zagnieżdżane.
Interpretacja przeprowadzana jest zgodnie z zasadami podanymi
poniżej w sekcji OBLICZENIA ARYTMETYCZNE. Jeżeli
wyrażenie jest nieprawidłowe, bash
wypisuje komunikat o niepowodzeniu i nie występuje żadne
podstawienie.
Podstawianie wyników procesów (Process
substitution)
Podstawianie wyników procesów pozwala na
odnoszenie się do wejścia lub wyjścia procesu za
pomocą nazwy pliku. Przybiera ono postać
<(lista) lub >(lista).
Proces lista uruchamiany asynchronicznie, a jego wejście i
wyjście pojawia się jako nazwa pliku. 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.
Podstawianie wyników procesów jest obsługiwane w
systemach wspierających potoki nazwane (FIFO) lub
metodę nazywania otwartych plików /dev/fd.
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.
Powłoka przeszukuje wyniki interpretacji parametrów,
podstawiania poleceń i interpretacji wyrażeń
arytmetycznych, które nie pojawiają się wewnątrz
cudzysłowów, w celu przeprowadzenia podziału na
słowa.
Powłoka traktuje każdy znak IFS jak
separator i dzieli na słowa wyniki innych interpretacji,
używając ich jako separatorów pól. Jeżeli
IFS nie jest ustawione lub jego wartością jest
dokładnie <spacja><tab><nowalinia>,
wartość domyślna, to sekwencje składające
się ze <spacji>, <tabulatora> i
<nowejlinii> na początku i końcu wyników
poprzednich interpretacji są ignorowane, a do podziału na
słowa służy dowolna sekwencja znaków
IFS, jeżeli nie znajduje się na początku
lub końcu. Jeżeli IFS posiada
wartość inną niż domyślna, to sekwencje
białych znaków spacji i tabulacji i
znaku nowego wiersza 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 i przekazywane do poleceń jako
łańcuchy puste. 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 i przekazywany do poleceń jako łańcuchy
puste. Gdy cytowany pusty argument pojawi się jako
część słowa, którego interpretacja jest
niepusta, pusty argument jest usuwany tj. słowo
-d'' staje się -d po
przeprowadzeniu podziału na słowa i usunięciu pustych
argumentów.
Zauważ, że jeśli nie występuje
interpretacja, to nie jest również wykonywany
podział.
After word splitting, unless the -f option has been set,
bash scans each word for the characters *, ?, and
[. If one of these characters appears, and is not quoted, then the
word is regarded as a pattern, and replaced with an alphabetically
sorted list of filenames matching the pattern (see Pattern
Matching below). If no matching filenames are found, and the
shell option nullglob is not enabled, the word is left unchanged. If
the nullglob option is set, and no matches are found, the word is
removed. If the failglob shell option is set, and no matches are
found, an error message is printed and the command is not executed. If the
shell option nocaseglob is enabled, the match is performed without
regard to the case of alphabetic characters. Note that when using range
expressions like [a-z] (see below), letters of the other case may be
included, depending on the setting of LC_COLLATE. When a pattern is
used for pathname expansion, the character “.” at the
start of a name or immediately following a slash must be matched explicitly,
unless the shell option dotglob is set. In order to match the
filenames “.” and “..”, the
pattern must begin with “.” (for example, “.?”),
even if dotglob is set. If the globskipdots shell option is
enabled, the filenames “.” and
“..” are never matched, even if the pattern begins with
a “.”. When not matching pathnames, the
“.” character is not treated specially. When matching a
pathname, the slash character must always be matched explicitly by a slash
in the pattern, but in other matching contexts it can be matched by a
special pattern character as described below under Pattern
Matching. See the description of shopt below under
SHELL BUILTIN COMMANDS for a description of the
nocaseglob, nullglob, globskipdots, failglob,
and dotglob shell options.
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ń.
Jeśli ustawiona jest opcja nocaseglob, to dopasowanie do
wzorców w GLOBIGNORE jest dokonywane bez względu
na wielkość znaków. 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 wzorców honoruje ustawienia opcji powłoki
extglob.
Dopasowanie wzorca
Każdy znak pojawiający się we wzorcu,
różny od specjalnych znaków wzorca opisanych
poniżej, dopasowuje sam siebie. Znak NUL nie może
wystąpić we wzorcu. Odwrotny ukośnik cytuje
następujący po nim znak; sam ukośnik jest pomijany
podczas dopasowania. 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. Jeśli włączona jest
opcja globstar powłoki, a * jest użyte w
kontekście rozwijania nazw plików, to dwa
złączone znaki * użyte w pojedynczym wzorcu
dopasują wszystkie pliki wraz z zerem lub więcej
katalogów i podkatalogów. Jeśli po dwóch
gwiazdkach * wystąpi ukośnik /, to dopasowane
będą wyłącznie katalogi i podkatalogi.
- ?
- Dopasowuje dowolny pojedynczy znak.
- [...]
- Dopasowuje jeden z ujętych w nawiasy kwadratowe znaków. Para
znaków rozdzielona myślnikiem opisuje wyrażenie
zakresu; dopasowywany jest nim dowolny znak, który przy
sortowaniu leksykalnym, z zastosowaniem bieżącego ustawienia
locale i zestawu znaków, wypada między tymi dwoma znakami,
włącznie z nimi. Jeżeli pierwszym znakiem
występującym po [ jest ! lub ^, to
dopasowywany jest dowolny znak nie zawarty w nawiasach.
Kolejność sortowania znaków w wyrażeniach
zakresu oraz znaków ujętych w zakresach określona
jest przez bieżące ustawienie locale i wartość
zmiennej środowiskowej LC_COLLATE, jeśli istnieje.
Znak - można dopasować włączając
go jako pierwszy lub ostatni ze znaków zestawu. Znak ]
można dopasować włączając go jako
pierwszy znak zestawu.
Wewnątrz [ i ], można
podawać klasy znaków (character classes),
używając składni [:klasa:],
gdzie klasa jest jedną z poniższych klas
zdefiniowanych w standardzie POSIX:
alnum alpha ascii blank cntrl digit graph lower print
punct space upper word xdigit
Klasa znaków dopasowuje dowolny znak należący do tej klasy.
Klasa znaków
word dopasowuje litery, cyfry i znak
podkreślenia "_".
Wewnątrz [ i ], można podać
klasę równoważności,
używając składni [=z=],
która dopasowuje wszystkie znaki o tej samej wadze sortowania
(zdefiniowaną w bieżącym ustawieniu locale) co znak
z.
Wewnątrz [ i ], składnia
[.symbol.] dopasowuje symbol sortowania (collating
symbol) symbol.
Jeżeli przy pomocy wbudowanego shopt
włączono opcję extglob, to powłoka
rozpoznaje kilka rozszerzonych operatorów dopasowania wzorców.
W poniższym opisie, lista-wzorców jest listą
złożoną z jednego lub więcej wzorców
rozdzielonych znakiem |. Wzorce złożone można
konstruować przy pomocy jednego lub więcej poniższych
pod-wzorców:
- ?(lista-wzorców)
- Dopasowuje zero lub jedno wystąpienie zadanych wzorców
- *(lista-wzorców)
- Dopasowuje zero lub więcej wystąpień zadanych
wzorców
- +(lista-wzorców)
- Dopasowuje jedno lub więcej wystąpień zadanych
wzorców
- @(lista-wzorców)
- Dopasowuje jeden z zadanych wzorców
- !(lista-wzorców)
- Dopasowuje cokolwiek prócz jednego z zadanych wzorców
Theextglob option changes the behavior of the parser, since
the parentheses are normally treated as operators with syntactic meaning. To
ensure that extended matching patterns are parsed correctly, make sure that
extglob is enabled before parsing constructs containing the patterns,
including shell functions and command substitutions.
When matching filenames, the dotglob shell option
determines the set of filenames that are tested: when dotglob is
enabled, the set of filenames includes all files beginning with
“.”, but “.” and “..” must be
matched by a pattern or sub-pattern that begins with a dot; when it is
disabled, the set does not include any filenames beginning with
“.” unless the pattern or sub-pattern begins with a
“.”. As above, “.” only has a special meaning
when matching filenames.
Complicated extended pattern matching against long strings is
slow, especially when the patterns contain alternations and the strings
contain multiple matches. Using separate matches against shorter strings, or
using arrays of strings instead of a single long string, may be faster.
Po poprzednich interpretacjach, wszystkie niecytowane
wystąpienia znaków \, ' i ",
które nie wynikły z jednej z powyższych interpretacji,
są usuwane.
Przed wykonaniem polecenia, jego wejście i wyjście
mogą zostać przekierowane przy pomocy specjalnej
notacji interpretowanej przez powłokę. Przekierowania
pozwalają deskryptorom plików poleceń na powielanie,
otwieranie, zamykanie, tworzenie odniesień do różnych
plików oraz mogą zmieniać pliki, które odczytuje
polecenie i do którego pisze. Przekierowań można
też używać do modyfikowania deskryptorów
plików w ś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.
Każde przekierowanie, które może być
poprzedzone numerem deskryptora pliku, może być w zamian
poprzedzone słowem zapisanym następująco:
{nazwa-zmiennej}. W takim przypadku, dla każdego operatora
przekierowania, z wyjątkiem >&- i <&-, powłoka
nada deskryptor pliku większy lub równy 10 i przypisze go do
nazwy-zmiennej. Jeśli >&- lub <&- jest
poprzedzone {nazwą-zmiennej}, to wartość
nazwy-zmiennej definiuje deskryptor pliku przeznaczony do
zamknięcia. Jeśli poda się
{nazwę-zmiennej}, to przekierowanie będzie
istniało poza zakresem polecenia, co pozwala na ręczne
zarządzanie czasem istnienia deskryptora pliku przez
programistę powłoki. Za to zachowanie odpowiada opcja
powłoki varredir_close.
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 i zmiennych, 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
kieruje zarówno standardowe wyjście jak i
wyjście diagnostyczne (stderr) do pliku dirlist, podczas gdy
polecenie
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 wiele nazw plików,
szczególnie wtedy, gdy są one używane przy
przekierowaniach, zgodnie z opisem w poniższej tabeli. Jeśli
system operacyjny na którym działa bash
udostępnia te pliki specjalne, bash skorzysta z nich, jeśli
nie, to będą wewnętrznie emulowane cechując
się opisanym poniżej zachowaniem.
- /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 do odpowiedniego gniazda TCP.
- /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 do odpowiedniego gniazda UDP.
Nieudane otwarcie lub utworzenie pliku powoduje niepowodzenie
przekierowania.
Przekierowania używające deskryptorów
plików, większych niż 9 muszą być
używane z dużą ostrożnością,
gdyż mogą być w konflikcie z deskryptorami
plików używanymi wewnętrznie przez
powłokę.
Proszę zauważyć, że wbudowane
polecenie exec może tworzyć przekierowania
odnoszące się do bieżącej powłoki.
Przekierowanie wejścia powoduje otwarcie do odczytu pliku,
którego nazwa wynika z interpretacji słowa. Odczyt
będzie wykonywany z deskryptora pliku n lub standardowego
wejścia (zerowy deskryptor pliku) jeśli nie podano
n.
Ogólny format przekierowania wejścia:
Przekierowanie wyjścia powoduje otwarcie do zapisu pliku,
którego nazwa wynika z interpretacji słowa. Zapis
będzie wykonywany z deskryptora pliku n lub standardowego
wyjścia (deskryptor pliku 1) jeśli nie podano n.
Jeżeli plik nie istnieje jest tworzony; jeżeli istnieje
obcinany jest do rozmiaru zerowego.
Ogólny format przekierowania wyjścia:
Jeżeli operatorem przekierowania jest >, a
została włączona opcja noclobber wbudowanego
polecenia set, to przekierowanie nie powiedzie się
jeżeli plik o nazwie wynikającej z interpretacji
słowa istnieje i jest zwykłym plikiem. Jeżeli
operatorem przekierowania jest >|, albo operatorem jest
> przy niewłączonej opcji noclobber, to
wykonywana jest próba przekierowania, nawet jeśli plik
słowo istnieje.
Dołączanie przekierowanego wyjścia
Przekierowanie wyjścia w ten sposób powoduje,
że plik o nazwie wynikającej z interpretacji
słowa zostanie otwarty do dołączania (append).
Dołączanie będzie wykonywane z deskryptora pliku
n lub standardowego wyjścia (deskryptor pliku 1) jeśli
nie podano n. Jeżeli plik nie istnieje jest tworzony.
Ogólny format dołączania wyjścia:
Bash pozwala, przy pomocy tej konstrukcji,
przekierować standardowe wyjście (deskryptor pliku 1) i
standardowe wyjście błędów (deskryptor
plików 2) do pliku, którego nazwą jest zinterpretowane
słowo.
Istnieją dwie postaci takiego przekierowania:
i
>&słowo
Spośród nich, zalecaną jest pierwsza forma.
Jest ona semantycznie równoważna
Przy używaniu drugiej postaci, słowo nie
może zostać zinterpretowane jako liczba ani -.
Jeśli tak się stanie, zadziała inny operator
przekierowania (zob. Powielanie deskryptorów plików
poniżej) z powodu kompatybilności wstecznej.
Dołączanie standardowego wyjścia i
wyjścia błędów
Ta konstrukcja pozwala na dołączanie, standardowego
wyjścia (deskryptor pliku 1) i standardowego wyjścia
błędów (deskryptor plików 2) do pliku,
którego nazwą jest zinterpretowane słowo.
Format dołączania standardowego wyjścia i
wyjścia błędów:
Jest to semantycznie równoważne
(zob. Powielanie deskryptorów plików
poniżej).
Ten typ przekierowania instruuje powłokę, by
czytała wejście z bieżącego
źródła aż do napotkania wiersza
zawierającego tylko słowo (bez żadnych
kończących odstępów). Wszystkie wiersze
przeczytane do tego momentu są następnie używane jako
standardowe wejście (lub deskryptor pliku n, jeśli
podano n) polecenia.
Format dokumentów włączonych jest
następujący:
[n]<<[-]słowo
dokument włączony
ogranicznik
Na słowie nie jest wykonywana interpretacja
parametrów ani zmiennych, podstawiania wyników poleceń,
rozwijanie nazw plików ani interpretacja wyrażeń
arytmetycznych. Jeżeli cytowana jest część
słowa, to ogranicznik jest wynikiem usunięcia
cytowań ze słowa, a wiersze w dokumencie
włączonym nie są interpretowane. Jeżeli
słowo nie jest cytowane, wszystkie wiersze dokumentu
włączonego podlegają interpretacji parametrów,
podstawianiu poleceń i interpretacji wyrażeń
arytmetycznych. 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.
Łańcuchy włączone (Here Strings)
Wariant dokumentów włączonych, którego
format jest następujący:
Słowo podlega interpretacji tyldy, interpretacji
parametrów i zmiennych, podstawianiu wyników poleceń,
interpretacji wyrażeń arytmetycznych i usuwaniu
cytowań. Rozwijanie nazw plików i podział na
słowa nie jest przeprowadzane. Wynik jest przekazywany poleceniu jako
pojedynczy łańcuch z dołączonym znakiem nowego
wiersza na jego standardowe wejście (lub deskryptor pliku n,
jeśli podano n).
Operator przekierowania
służy do powielania deskryptorów
plików wejściowych. Jeżeli słowo
zinterpretowane zostanie jako jedna lub więcej cyfr, to deskryptor
pliku oznaczony przez n czyniony jest kopią tego deskryptora.
Jeżeli cyfry w słowie nie określają
otwartego dla wejścia deskryptora, pojawia się
błąd przekierowania. Jeżeli słowo
zinterpretowane jest jako -, deskryptor pliku n jest zamykany.
Jeżeli n nie zostało określone, to stosowane
jest standardowe wejście (deskryptor pliku 0).
Operator
podobnie, służy do powielania deskryptorów
standardowego wyjścia. Jeżeli nie określono n,
stosowane jest standardowe wyjście (deskryptor pliku 1).
Jeżeli cyfry w słowie nie określają
deskryptora pliku otwartego do wyjścia, pojawia się
błąd przekierowania. Jeżeli słowo zostanie
zinterpretowane jako -, deskryptor pliku n jest zamykany. W
przypadku specjalnym, jeżeli pominięto n, a
słowo nie jest interpretowane jako jedna lub więcej
cyfr lub -, to przekierowywane są standardowe wyjście i
standardowe wyjście błędów, jak opisano
poprzednio.
Operator przekierowania
przenosi deskryptor pliku słowo do deskryptora pliku
n lub, jeśli nie podano n, na standardowe
wejście (deskryptor pliku 0). Słowo jest zamykane po
zduplikowaniu do n.
Podobnie, operator przekierowania
przenosi deskryptor pliku słowo do deskryptora pliku
n lub, jeśli nie podano n, na standardowe
wyjście (deskryptor pliku 1).
Operator przekierowania
powoduje, że plik o nazwie wynikłej z interpretacji
słowa zostanie otwarty do odczytu i zapisu. Odczyt i zapis
będą wykonywane z deskryptora pliku n lub standardowego
wejścia (deskryptor pliku 0) jeśli nie podano n.
Jeżeli plik nie istnieje, to jest tworzony.
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. Znaki /, $, ` i
= i wszystkie metaznaki powłoki oraz znaki cytowania
wypisane powyżej nie mogą być nazwą aliasu.
Tekst zastępujący może zawierać dowolne poprawne
wejście powłoki, łącznie z metaznakami
powłoki. Pierwsze słowo tekstu zastępującego
jest z kolei sprawdzane na aliasy, ale słowo identyczne z
interpretowanym właśnie aliasem nie jest interpretowane
powtórnie. Oznacza to, że można mieć alias
ls do ls -F, na przykład, a bash nie
będzie usiłował rekurencyjnie interpretować
zastępującego tekstu. Jeżeli ostatnim znakiem
wartości aliasu jest odstęp, to następne
słowo polecenia występujące po aliasie ma
również sprawdzaną interpretację
aliasów.
Aliasy są tworzone i pokazywane poleceniem alias, a
usuwane poleceniem unalias.
Nie ma żadnego mechanizmu posługiwania się
argumentami w tekście zastępującym. Jeśli
potrzebne są argumenty, należy skorzystać z funkcji
powłoki (zob. 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, oraz wszystkie wiersze
tworzące polecenie złożone, przed wykonaniem
jakichkolwiek poleceń tego wiersza lub polecenia
złożonego. 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. 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.
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 następującymi wyjątkami:
pułapki (trap) DEBUG i RETURN
(zobacz opis wbudowanego trap poniżej, w sekcji
WBUDOWANE POLECENIA POWŁOKI) nie są
dziedziczone, chyba że funkcja ma podany atrybut trace
(patrz opis wbudowanego declare poniżej) lub opcja
powłoki -o functrace została włączona
wbudowanym set (w takim przypadku wszystkie funkcje dziedziczą
pułapki DEBUG i RETURN). Pułapka
ERR nie jest dziedziczona, chyba że
włączono opcję -o errtrace
powłoki.
Zmienne lokalne dla funkcji można zadeklarować
poleceniem wbudowanym local (zmienne lokalne). W innym
przypadku zmienne i ich wartości są dzielone pomiędzy
funkcją i ją wywołującym. Jeśli zmienna
jest zadeklarowana jako local, to zmienna ma zakres
widzialności ograniczony do tej funkcji i jej potomków (w tym
funkcji, które wywoła).
In the following description, the current scope is a
currently- executing function. Previous scopes consist of that function's
caller and so on, back to the "global" scope, where the shell is
not executing any shell function. Consequently, a local variable at the
current scope is a variable declared using the local or
declare builtins in the function that is currently executing.
Local variables "shadow" variables with the same name
declared at previous scopes. For instance, a local variable declared in a
function hides a global variable of the same name: references and
assignments refer to the local variable, leaving the global variable
unmodified. When the function returns, the global variable is once again
visible.
The shell uses dynamic scoping to control a variable's
visibility within functions. With dynamic scoping, visible variables and
their values are a result of the sequence of function calls that caused
execution to reach the current function. The value of a variable that a
function sees depends on its value within its caller, if any, whether that
caller is the "global" scope or another shell function. This is
also the value that a local variable declaration "shadows", and
the value that is restored when the function returns.
For example, if a variable var is declared as local in
function func1, and func1 calls another function func2,
references to var made from within func2 will resolve to the
local variable var from func1, shadowing any global variable
named var.
The unset builtin also acts using the same dynamic scope:
if a variable is local to the current scope, unset will unset it;
otherwise the unset will refer to the variable found in any calling scope as
described above. If a variable at the current local scope is unset, it will
remain so (appearing as unset) until it is reset in that scope or until the
function returns. Once the function returns, any instance of the variable at
a previous scope will become visible. If the unset acts on a variable at a
previous scope, any instance of a variable with that name that had been
shadowed will become visible (see below how the localvar_unset shell
option changes this behavior).
Jeśli zmienna FUNCNEST zostanie ustawiona na
wartość liczbową większą od 0, to
będzie definiować maksymalny poziom
zagnieżdżenia funkcji. Wywołania funkcji
przekraczające ten poziom będą powodowały
przerwanie całego polecenia.
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.
Każda funkcja powiązana z pułapką RETURN
jest wykonywana przed wznowieniem wykonywania. 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 (i opcjonalnie plik
źródłowy oraz numer wiersza, jeśli
włączono opcję powłoki extdebug). Funkcje
można eksportować, tak że procesy powłoki
potomnej (utworzone przy wykonywaniu oddzielnego wywołania
powłoki) będą miały je automatycznie
zdefiniowane przy pomocy opcji -f wbudowanego polecenia
export. Definicję funkcji można usunąć
opcją -f lub wbudowanym unset.
Funkcje mogą być rekurencyjne. Zmienna
FUNCNEST może posłużyć do ograniczenia
głębokości stosu wywołań funkcji i liczby
wywołań funkcji. Domyślnie, nie ma narzuconego
ograniczenia na liczbę rekurencyjnych wywołań.
Powłoka pozwala, pod pewnymi warunkami, na obliczanie
wartości wyrażeń arytmetycznych (zobacz wbudowane
polecenia let i declare, polecenie złożone
(( oraz Interpretacja wyrażeń arytmetycznych).
Obliczenia wykonywane są na liczbach całkowitych o ustalonej
wielkości (fixed-width), 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
- - +
- jednoargumentowy minus i plus
- ++id --id
- pre-inkrementacja i pre-dekrementacja zmiennej
- ! ~
- 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ż
- operator warunkowy
- = *= /= %= += -= <<= >>= &= ^= |=
- przypisanie
- wyraż1 ,
wyraż2
- przecinek
Jako operandy dozwolone są zmienne powłoki;
interpretacja parametrów przeprowadzana jest przed obliczeniem
wyrażenia. Wewnątrz wyrażenia, do zmiennych
powłoki można się też odwoływać
przez nazwę, bez użycia składni interpretacji
parametrów. Zmienna powłoki, która jest pusta lub
nieustawiona jest przyjmowana jako 0, gdy odwołuje się do jej
nazwy bez używania składni interpretacji parametrów.
Gdy wystąpi odwołanie się do zmiennej lub gdy
przypisano wartość zmiennej, której nadano
wcześniej atrybut liczby całkowitej przy użyciu
declare -i, to jej wartość obliczana jest jako
wyrażenie arytmetyczne. Pusta wartość jest
interpretowana jako 0. Zmienna powłoki nie musi mieć
włączonego atrybutu liczby całkowitej by
mogła być użyta w wyrażeniu.
Stałe liczbowe są zgodne z definicją
języka C, bez przyrostków lub stałych znakowych.
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 opcjonalna podstawa jest
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. Gdy poda się n, a wymagany jest znak
niebędący cyfrą, 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 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.
Zachowanie poleceń test i [ zależy od liczby
podanych im argumentów; zob, opis tych poleceń, aby
dowiedzieć się o wszelkich akcjach zależnych od
polecenia.
Wyrażenia złożone są z
poniższych jedno- i dwuargumentowych składowych. Bash
traktuje wiele nazw plików jako specjalne, gdy są
używane w wyrażeniach. Jeśli system operacyjny na
którym działa bash udostępnia je, to bash ich
użyje, w przeciwnym razie będzie wewnętrznie
emulował ich działanie: 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.
Jeśli nie określono inaczej, składowe
operujące na plikach podążają za
dowiązaniami symbolicznymi i działają na celu
dowiązania, a nie na samym dowiązaniu.
Gdy operatory < i > są używane z
poleceniem [[, to sortują zgodnie z porządkiem
leksykograficznym, używając bieżącego ustawienia
locale. Polecenie test sortuje korzystając z kolejności
ASCII.
- -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 i 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.
- -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.
- -N plik
- Prawda jeśli plik istnieje i został zmodyfikowany od
czasu jego ostatniego odczytu.
- -0 plik
- Prawda jeśli plik istnieje i jego właścicielem
jest efektywny id użytkownika.
- -S plik
- Prawda jeśli plik istnieje i jest gniazdem.
- plik1 -ef
plik2
- Prawda jeśli plik1 i plik2 odnoszą się
do tego samego urządzenia i numeru i-węzła.
- plik1 -nt
plik2
- Prawda, jeśli plik1 jest nowszy (według daty
modyfikacji) niż plik2 lub plik1 istnieje a
plik2 nie.
- plik1 -ot
plik2
- Prawda, jeśli plik1 jest starszy niż plik2 lub
plik2 istnieje a plik1 nie.
- -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.
- -v
nazwa-zmiennej
- Prawda, jeśli zmienna powłoki zmienna-powłoki
jest ustawiona (została jej przypisana wartość).
- -R
nazwa-zmiennej
- Prawda, jeśli zmienna powłoki zmienna-powłoki
jest ustawiona i jest nazwą referencyjną.
- -z
łańcuch
- Prawda jeśli długość
łańcucha wynosi zero.
- string
- -n
łańcuch
- Prawda jeśli łańcuch ma
długość niezerową.
- łańcuch1 == łańcuch2
- łańcuch1 = łańcuch2
- Prawda, jeśli łańcuchy są sobie równe.
= powinno być używane z poleceniem test, w
celu zachowania zgodności z normą POSIX. Gdy używane
jest z poleceniem [[, przeprowadzane jest dopasowanie do wzorca,
zgodnie z opisem powyżej Polecenia
złożone).
- łańcuch1 != łańcuch2
- Prawda jeśli łańcuchy nie są
równe.
- łańcuch1 <
łańcuch2
- Prawda jeśli łańcuch1 przy sortowaniu
występowałby przed łańcuchem2
według bieżącego ustawienia locale.
- łańcuch1 >
łańcuch2
- Prawda jeśli łańcuch1 przy sortowaniu
występowałby po łańcuchu2 według
bieżącego ustawienia locale.
- arg1 OP
arg2
- OP jest jednym z -eq, -ne, -lt,
-le, -gt lub -ge. Te arytmetyczne operatory
dwuargumentowe zwracają prawdę jeśli arg1 jest
odpowiednio równe (eq), nie równe (ne), mniejsze niż
(lt), mniejsze bądź równe (le), większe
niż (gt) lub większe bądź równe (ge)
arg2. Arg1 i arg2 mogą być dodatnimi
lub ujemnymi liczbami całkowitymi. Przy używaniu z
poleceniem [[, arg1 i arg2 są rozwijane jako
wyrażenie arytmetyczne (zob. OBLICZANIE
WYRAŻEŃ ARYTMETYCZNYCH powyżej).
Gdy wykonywane jest polecenie proste, powłoka wykonuje
następujące interpretacje, przypisania i przekierowania, od
lewej do prawej, w następującej kolejności.
- 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.
If no command name results, the variable assignments affect the
current shell environment. In the case of such a command (one that consists
only of assignment statements and redirections), assignment statements are
performed before redirections. Otherwise, the variables are added to the
environment of the executed command and do not affect the current shell
environment. If any of the assignments attempts to assign a value to a
readonly variable, an error occurs, and the command exits with a non-zero
status.
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.
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 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
wyszukiwanie nie powiedzie się, powłoka szuka zdefiniowanej
funkcji powłoki o nazwie command_not_found_handle.
Jeśli ta funkcja istnieje, jest wywoływana w osobnym
środowisku wykonania, z pierwotnym poleceniem i jego argumentami
użytymi jako jej argumenty, a kod wyjścia funkcji staje
się kodem wyjścia tej podpowłoki. Jeśli funkcja
nie jest zdefiniowana, powłoka wypisuje komunikat o
błędzie i zwraca kod zakończenia równy 127.
Jeżeli poszukiwanie było pomyślne lub
jeśli nazwa polecenia zawiera jeden lub więcej
ukośników, powłoka wykonuje zadany program w
odrębnym środowisku wykonania. Argumentowi 0 przypisywana jest
podana nazwa, a pozostałym argumentom polecenia podane argumenty,
jeśli były takowe.
Jeżeli wykonanie to nie powiedzie się, gdyż
plik nie ma formatu wykonywalnego, a nie jest katalogiem, to zakłada
się, że jest on skryptem powłoki, plikiem
zawierającym polecenia powłoki, a powłoka tworzy swoje
nowe wystąpienie w celu 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), na które składają
się:
- otwarte pliki odziedziczone przez powłokę przy
wywołaniu, zmodyfikowane przez przekierowania przekazane do
wbudowanego polecenia exec
- bieżący katalog roboczy ustawiony przez cd,
pushd lub popd, albo odziedziczony przez
powłokę przy wywołaniu
- maska trybu tworzonych plików ustawioną przez umask
albo odziedziczoną po rodzicu powłoki
- bieżące pułapki ustawione przez trap
- parametry powłoki ustawione przez przypisania zmiennych przy pomocy
set albo odziedziczone ze środowiska rodzica
powłoki
- funkcje powłoki zdefiniowane podczas wykonywania lub odziedziczone
ze środowiska rodzica powłoki
- opcje włączone przy wywołaniu (albo domyślnie
albo przy pomocy argumentów wiersza poleceń) albo przez
set
- opcje włączone przez shopt
- aliasy powłoki zdefiniowane przy pomocy alias
- różne id procesów, łącznie z
identyfikatorami zadań tła, wartość $$
i wartość $PPID
Gdy ma zostać wykonane polecenie proste inne niż
funkcja powłoki lub polecenie wbudowane, wywoływane jest w
odrębnym środowisku wykonania, składających
się z poniższych elementów. Jeśli nie podano
inaczej, wartości dziedziczone są z powłoki.
- otwarte pliki powłoki, plus modyfikacje i dodatki określone
przez przekierowania polecenia
- bieżący katalog roboczy
- maska trybu tworzonych plików
- zmienne powłoki oznaczone do wyeksportowania, razem ze zmiennymi
wyeksportowanymi do polecenia, przekazane w środowisku
- pułapki przechwycone przez powłokę resetowane
są do wartości odziedziczonych przez nią od rodzica,
a pułapki ignorowane przez powłokę są
ignorowane.
Polecenie wywołane w odrębnym środowisku nie
może wpływać na środowisko wykonywania
powłoki.
Podpowłoka jest kopią procesu
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.
Podpowłoki utworzone do wykonania podstawiania
wyników poleceń dziedziczą wartość opcji
-e z powłoki macierzystej. Jeśli bash nie
działa w trybie posix, to czyści opcję -e
w takich podpowłokach.
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
Podczas 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 wykonanego polecenia jest
wartością zwracaną przez wywołanie systemowe
waitpid lub funkcję będącą jego
odpowiednikiem. Kody zakończenia mieszczą się w
zakresie od 0 do 255, przy czym, jak wyjaśniono poniżej,
powłoka może używać wartości
powyżej 125 w sposób specjalny. Kod zakończenia z
wbudowanych poleceń powłoki i poleceń
złożonych również są ograniczone do
powyższego przedziału. W szczególnych przypadkach,
powłoka używa wartości specjalnych aby
poinformować o konkretnym trybie błędu.
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, zwykle
nieprawidłowych opcji lub brakujących argumentów.
Status zakończenia ostatniego polecenia jest
dostępny w specjalnym parametrze $?.
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.
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.
When job control is not enabled, and bash is waiting for a
foreground command to complete, the shell receives keyboard-generated
signals such as SIGINT (usually generated by ^C) that
users commonly intend to send to that command. This happens because
the shell and the command are in the same process group as the terminal, and
^C sends SIGINT to all processes in that
process group.
When bash is running without job control enabled and
receives SIGINT while waiting for a foreground command, it
waits until that foreground command terminates and then decides what
to do about the SIGINT:
- 1.
- If the command terminates due to the SIGINT, bash
concludes that the user meant to end the entire script, and acts
on the SIGINT (e.g., by running a
SIGINT trap or exiting itself);
- 2.
- If the command does not terminate due to SIGINT, the
program handled the SIGINT itself and did not treat
it as a fatal signal. In that case, bash does not treat
SIGINT as a fatal signal, either, instead assuming
that the SIGINT was used as part of the program's
normal operation (e.g., emacs uses it to abort editing commands) or
deliberately discarded. However, bash will run any trap set on
SIGINT, as it does with any other trapped signal it receives
while it is waiting for the foreground command to complete, for
compatibility.
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:
wskazujący, że zadanie to ma numer 1 a ID ostatniego
procesu w potoku związanym z zadaniem wynosi 25647. Wszystkie procesy
w jednym potoku należą do tego samego zadania. Bash
posługuje się abstrakcją (abstraction) zadania
jako podstawą kontroli zadań.
Dla ułatwienia implementacji interfejsu użytkownika
do kontroli zadań, system operacyjny utrzymuje pojęcie ID
grupy procesów bieżącego terminala (current
terminal process group ID). Elementy tej grupy procesów (procesy,
których ID grupy procesów jest równy ID grupy
procesów bieżącego terminala) otrzymują
generowane z klawiatury sygnały, takie jak
SIGINT. Mówimy, że procesy te
pracują pierwszoplanowo. Procesy tła to takie,
których ID grupy procesów różni się od
terminala; procesy takie są odporne na sygnały
pochodzące z klawiatury. Tylko procesom pierwszoplanowym wolno
czytać i, jeśli użytkownik ustawi stty
tostop, pisać na terminal. Do procesów tła
usiłujących czytać z (i pisać do, jeśli
działa stty tostop) terminala wysyłany
jest przez sterownik terminala sygnał SIGTTIN
(SIGTTOU), który, jeśli nie zostanie przechwycony,
wstrzymuje proces.
Jeżeli system operacyjny, na którym działa
bash obsługuje kontrolę zadań, bash
zawiera funkcje do jej wykorzystywania. Naciśnięcie klawisza
wstrzymania (zwykle ^Z, Control-Z) podczas pracy procesu
powoduje, że proces ten zostanie zatrzymany a sterowanie zostanie
zwrócone do bash. Naciśnięcie klawisza
opóźnione wstrzymanie (zwykle ^Y, Control-Y)
powoduje, że proces zostanie zatrzymywany gdy będzie
usiłował czytać wejście z terminala, a
sterowanie powróci do bash. Użytkownik może
następnie zmieniać stan takiego zadania,
posługując się poleceniem bg do kontynuacji
zadania w tle, fg do kontynuacji na pierwszym planie lub poleceniem
kill do zabicia zadania. ^Z działa natychmiast i ma
efekt uboczny: powoduje odrzucenie oczekującego wyjścia i
wprowadzonych, a nieprzetworzonych naciśnięć klawiszy
(typeahead).
Istnieje kilka sposobów wskazywania zadania w
powłoce. Znak % poprzedza nazwę zadania. Zadanie numer
n można wskazać jako %n. Zadanie może
być też określone przez użycie przedrostka nazwy
użytej do jego uruchomienia lub podłańcucha, jaki
występuje w jego wierszu poleceń. Na przykład,
%ce odnosi się do zatrzymanego zadania, którego nazwa
zaczyna się od ce. Jeśli przedrostek pasuje do
więcej niż jednego zadania, bash zgłasza
błąd. Z drugiej strony, użycie %?ce, wskazuje na
zadanie zawierające podłańcuch ce w swym wierszu
poleceń. Jeżeli łańcuch pasuje do więcej
niż jednego zadania, bash zgłasza błąd.
Symbole %% i %+ określają rozumiane przez
powłokę bieżące zadanie,
będące ostatnim zadaniem zatrzymanym, gdy było na
pierwszym planie lub uruchomionym w tle. Do poprzedniego zadania
można odwoływać się przy pomocy %-. W
wyjściu odnoszącym się do zadań (np.
wyjście polecenia jobs), bieżące zadanie jest
zawsze zaznaczone znakiem +, a zadanie poprzednie -.
Pojedynczy % (bez towarzyszącego określenia zadania)
również odnosi się do bieżącego
zadania.
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 (lub, gdy
włączono opcję powłoki checkjobs
używając wbudowanego shopt, działających
zadaniach), powłoka wypisuje komunikat ostrzegawczy i, jeśli
włączono opcję checkjobs wypisuje zadania wraz z
ich stanem. 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.
When the shell is waiting for a job or process using the
wait builtin, and job control is enabled, wait will return
when the job changes state. The -f option causes wait to wait
until the job or process terminates before returning.
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 wyświetla
PS0 po odczytaniu polecenia, a przed jego wykonaniem.
Bash wyświetla PS4 jak opisano powyżej,
przed śledzeniem każdego polecenia, gdy
włączona jest opcja -x. Bash pozwala na
dostosowywanie tych łańcuchów zachęty poprzez
wstawianie wielu 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ń"
(np. "Tue May 26")
- \D{format}
- format jest przekazywany do strftime(3), a wynik jest
wstawiany do łańcucha zachęty. Pusty format
daje w wyniku czas w lokalnym formacie. Nawiasy klamrowe są
wymagane
- \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
- wartość zmiennej powłoki PWD ($PWD), z
$HOME zapisanym w skrócie tyldą
(używa wartości ze zmiennej
PROMPT_DIRTRIM)
- \W
- główna część nazwy (basename)
$PWD, z $HOME zapisanym w skrócie
tyldą
- \!
- numer tego polecenia w historii
- \#
- numer polecenia tego polecenia
- \$
- jeżeli efektywnym UID jest 0, to #, w przeciwnym razie
$
- \nnn
- znak odpowiadający ósemkowej 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). Może to dać nieoczekiwane efekty
uboczne, jeśli cytowana część
łańcucha pojawi się w podstawionym wyniku polecenia lub
zawiera znaki, które są specjalne przy rozwijaniu
słów.
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.
Edycja wiersza może zostać włączona w dowolnym
czasie, przy użyciu opcji -o emacs lub -o vi
wbudowanego polecenia set. 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).
W tej sekcji, do zapisu naciśnięć klawiszy
używana jest notacja w stylu emacsa. Klawisze Control 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 przedrostkiem meta (meta prefix). Kombinacja
M-C-x oznacza ESC-Control-x, lub naciśnij klawisz
Escape, następnie przytrzymaj klawisz Control podczas naciskania
klawisza x.)
Poleceniom readline można podawać numeryczne
argumenty, które normalnie działają jako licznik
powtórzeń. Czasami jednak, znaczący jest znak
argumentu. Przekazanie ujemnego argumentu poleceniu, które
działa w przód (np. kill-line) powoduje, że
będzie ono działać odwrotnym kierunku (wstecz).
Polecenia, których zachowanie z argumentami odbiega od podanego
odnotowano poniżej.
Gdy polecenie opisano jako usuwające (killing)
tekst, tekst ten jest zachowywany to ewentualnego późniejszego
odzyskania (przywołania yanking). Kolejne usunięcia
powodują, że tekst jest zbierany w jedną
całość, którą można
odzyskać naraz. Polecenia nie usuwające tekstu
oddzielają kawałki tekstu w stosie usuwania (killing
ring).
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. Jeśli plik ten nie istnieje lub
nie może być odczytany, ostatecznie będzie to plik
/etc/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
konstrukcji dozwolonych w pliku 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).
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 ``Function Key 1''.
Oto pełny zestaw sekwencji specjalnych w stylu GNU
Emacs
- \C-
- przedrostek control
- \M-
- przedrostek meta
- \e
- znak escape
- \\
- odwrotny ukośnik (backslash)
- \"
- 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
- znak wysuwu strony (form feed)
- \n
- znak nowej linii
- \r
- powrót karetki
- \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).
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ść
lub za pomocą wbudowanego polecenia bind (zobacz poniżej
WBUDOWANE POLECENIA POWŁOKI).
Z wymienionymi niżej wyjątkami, zmienne readline
mogą przyjmować wartości On lub Off
(wielkość znaków nie ma znaczenia). Nierozpoznane nazwy
zmiennych są ignorowane. Gdy odczytywana jest wartość
zmiennej, puste lub wyzerowane wartości, "on" (bez
względu na wielkość liter) i "1" są
równoważne On. Wszystkie pozostałe
wartości są równoważne Off. A oto zmienne
i ich wartości domyślne:
- active-region-start-color
- A string variable that controls the text color and background when
displaying the text in the active region (see the description of
enable-active-region below). This string must not take up any
physical character positions on the display, so it should consist only of
terminal escape sequences. It is output to the terminal before displaying
the text in the active region. This variable is reset to the default value
whenever the terminal type changes. The default value is the string that
puts the terminal in standout mode, as obtained from the terminal's
terminfo description. A sample value might be
"\e[01;33m".
- active-region-end-color
- A string variable that "undoes" the effects of
active-region-start-color and restores "normal" terminal
display appearance after displaying text in the active region. This string
must not take up any physical character positions on the display, so it
should consist only of terminal escape sequences. It is output to the
terminal after displaying the text in the active region. This variable is
reset to the default value whenever the terminal type changes. The default
value is the string that restores the terminal from standout mode, as
obtained from the terminal's terminfo description. A sample value might be
"\e[0m".
- bell-style
(audible)
- Kontroluje, co dzieje się gdy readline chce użyć
sygnału dźwiękowego terminala. Jeśli ustawiona
na none, readline nigdy nie emituje sygnału. Jeśli
ustawiona na visible, readline posługuje się
"widzialnym dzwonkiem" (visible bell), jeśli jest
dostępny. Jeżeli ustawiona na audible, readline
usiłuje uzyskać sygnał dźwiękowy z
terminala.
- bind-tty-special-chars
(On)
- Jeśli ustawiona na On, readline będzie
próbował przypiąć znaki kontrolne traktowane w
sposób specjalny przez sterownik terminala jądra do ich
odpowiedników readline.
- blink-matching-paren
(Off)
- Jeśli ustawiona na On, readline spróbuje na
krótko przesunąć kursor do nawiasu
otwierającego przy wstawieniu nawiasu zamykającego.
- colored-completion-prefix
(Off)
- Jeśli ustawiona na On, przy wypisywaniu dopasowań,
readline wyświetli wspólny przedrostek dla zestawu
możliwych dopasowań za pomocą różnych
kolorów. Wzory kolorów są brane z wartości
zmiennej środowiskowej LS_COLORS. Jeśli w
$LS_COLORS istnieje definicja koloru dla przyrostka
"readline-colored-completion-prefix", readline użyje tego
koloru dla wspólnego przedrostka, zamiast swej wartości
domyślnej.
- colored-stats
(Off)
- Jeśli ustawiona na On, readline wyświetli
możliwe dopasowania za pomocą używając
kolorów wskazujących na ich typ pliku. Wzory kolorów
są brane z wartości zmiennej środowiskowej
LS_COLORS.
- Ł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-display-width
(-1)
- Liczba kolumn ekranowych używanych do wyświetlenia
możliwych dopasowań przy przeprowadzaniu dopasowań.
Wartość jest ignorowana, jeśli jest mniejsza
niż 0 lub większa niż szerokość ekranu
terminala. Wartość 0 spowoduje, że dopasowania
będą wyświetlane po jednym na wiersz. Domyślna
wartość to -1.
- 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-map-case
(Off)
- Jeśli ustawiona na On i włączona jest
completion-ignore-case readline traktuje znaki minusa -) i
podkreślnika (_) jako równoważne przy
dokonywaniu dopasowania i uzupełniania nazw plików gdy ma to
czynić bez względu na wielkość
znaków.
- completion-prefix-display-length
(0)
- Długość (w znakach) wspólnego przedrostka
listy możliwych uzupełnień, które są
wyświetlane bez modyfikacji. Gdy jest ustawiona na
wartość większą od zera, wspólne
przedrostki dłuższe od tej wartości są
zastępowane wielokropkiem podczas wyświetlania
dostępnych uzupełnień.
- 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, readline zapyta
użytkownika czy chce je oglądnąć; w przeciwnym
razie są one po prostu pokazywane na terminalu.
Wartość zero oznacza, że readline ma nigdy nie
pytać, wartości ujemne są tratowane jako zero.
- 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). Domyślnie ustawione na On, ale
readline zmieni ustawienie na Off jeśli locale
zawierają znaki ośmiobitowe. Zmienna ta zależy od
kategorii locale LC_CTYPE i może się zmienić,
jeśli zmieni się locale.
- 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.
- echo-control-characters
(On)
- Jeśli ustawione na On, readline wyświetla znak
odpowiadający sygnałowi otrzymanemu z klawiatury, w
systemach które informują o obsługiwaniu tej
właściwości.
- 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.
- emacs-mode-string
(@)
- Jeśli zmienna show-mode-in-prompt jest
włączona, ten łańcuch jest wyświetlany
zaraz po ostatnim wierszu pierwszej zachęty, gdy aktywny jest tryb
edycji emacsa. Wartość jest interpretowana jak przypisania
klawiszy, tak więc dostępne są standardowe
przedrostki meta- i control oraz sekwencje ucieczki korzystające z
ukośnika. Sekwencje ucieczki \1 i \2 odpowiednio zaczynają i
kończą znaki niedrukowalne, co można
wykorzystać do osadzenia sekwencji kontrolnych terminala w tym
łańcuchu.
- enable-active-region
(On)
- The point is the current cursor position, and mark refers to
a saved cursor position. The text between the point and mark is referred
to as the region. When this variable is set to On, readline
allows certain commands to designate the region as active. When the
region is active, readline highlights the text in the region using the
value of the active-region-start-color, which defaults to the
string that enables the terminal's standout mode. The active region shows
the text inserted by bracketed-paste and any matching text found by
incremental and non-incremental history searches.
- enable-bracketed-paste
(On)
- When set to On, readline configures the terminal to insert each
paste into the editing buffer as a single string of characters, instead of
treating each character as if it had been read from the keyboard. This
prevents readline from executing any editing commands bound to key
sequences appearing in the pasted text.
- 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.
- enable-meta-key
(On)
- Gdy jest ustawiona na On, readline próbuje
włączyć dostępne modyfikujące klawisze
meta, o których obsługiwaniu zapewnia terminal, gdy
są wywoływane. Na wielu terminalach meta klawisz jest
używany do wysyłania znaków
ośmiobitowych.
- expand-tilde
(Off)
- Jeżeli ustawione na On, podczas próby
uzupełniania słów readline wykonuje
interpretację tyldy.
- history-preserve-point
(Off)
- 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.
- history-size
(unset)
- Ustawia maksymalną liczbę wpisów historii
zapisywanych w liście historii. Gdy jest ustawiona na zero,
istniejące wpisy są usuwane, a nowe nie są
zapisywane. Gdy wartość jest mniejsza od zera, liczba
wpisów w liście historii jest nieograniczona.
Domyślnie liczba wpisów w liście historii jest
ustawiana na wartość zmiennej powłoki
HISTSIZE. Jeśli spróbuje się ustawić
history-size na wartość nienumeryczną,
maksymalna liczba wpisów historii zostanie ustawiona na 500.
- 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. Ustawienie to jest automatycznie
włączone dla terminali o wysokości równej
1.
- 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.
Domyślnie ustawiona na Off, ale readline zmieni ustawienie
na On, jeśli locale zawierają znaki
ośmiobitowe. Zmienna ta zależy od kategorii locale
LC_CTYPE i może się zmienić, jeśli
zmieni się locale.
- 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.
- keyseq-timeout
(500)
- Określa czas, jaki readline poczeka na znak, gdy odczytuje
wieloznaczną sekwencję klawiszy (taką, która z
dotychczasowego wejścia może
utworzyć kompletną sekwencję klawiszy lub
może otrzymać dodatkowe wejście, aby utworzyć
kompletną, dłuższą sekwencję klawiszy).
Jeżeli wejście nie zostanie wprowadzone w trakcie czasu
oczekiwania, readline użyje krótszej kompletnej
sekwencji klawiszy. Wartość jest określona w
milisekundach, dlatego 1000 oznacza, że readline poczeka
sekundę na dodatkowe wejście. Jeśli ta zmienna jest
ustawiona na wartość mniejszą lub
równą zero, lub na wartość
nienumeryczną, readline poczeka na wciśnięcie
dodatkowego klawisza, aby zdecydować którą
sekwencję klawiszy uzupełnić.
- 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ą (*).
- mark-symlinked-directories
(Off)
- Gdy ustawiona na On, uzupełniane nazwy będące
dowiązaniami symbolicznymi do katalogów, mają dodany
znak ukośnika (przedmiot wartości
mark-directories).
- 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). Gdy ustawiona na Off, początkowa kropka w nazwie
jaka ma być uzupełniona, musi być wpisana przez
użytkownika.
- Gdy ustawiona na On, uzupełnianie menu wyświetla
wspólny przedrostek listy możliwych uzupełnień
(który może być pusty) przed cyklicznym
przełączaniem się między pozycjami z
listy.
- output-meta
(Off)
- Jeżeli ustawione na On, readline wyświetla znaki z
ustawionym ósmym bitem wprost zamiast jako sekwencje specjalne z
meta-przedrostkiem. Domyślnie ustawione na Off, ale readline
zmieni ustawienie na On jeśli locale zawiera znaki
ośmiobitowe. Zmienna ta zależy od kategorii locale
LC_CTYPE i może się zmienić, jeśli
zmieni się locale.
- page-completions
(On)
- Gdy ustawione na On, readline używa wewnętrznego
programu wyświetlającego podobnego do more, do
wyświetlania pełnego ekranu możliwych
uzupełnień na raz.
- print-completions-horizontally
(Off)
- Jeżeli ustawione na On, readline wyświetla dopasowane
uzupełnienia w kolejności alfabetycznej poziomo, zamiast w
dół ekranu.
- revert-all-at-newline
(Off)
- Gdy ustawione na On, readline anuluje wszystkie zmiany w wierszach
historii przed powrotem, gdy wykonywane jest accept-line.
Domyślnie, wiersze historii mogą zostać zmodyfikowane
i zachować swe listy anulowań poprzez odwołania do
readline.
- 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.
- show-all-if-unmodified
(Off)
- Zmienna modyfikuje domyślne zachowanie funkcji uzupełnienia
w sposób podobny do show-all-if-ambiguous. Gdy jest
ustawiona na On, słowa które mają
więcej niż jedno możliwe uzupełnienie bez
możliwych uzupełnień częściowych
(możliwe uzupełnienia nie posiadają wspólnego
przedrostka), są wypisywane natychmiast, bez wcześniejszego
używania brzęczyka.
- show-mode-in-prompt
(Off)
- Jeśli jest ustawiona na On, dodaje znak na początku
znaku zachęty wskazujący tryb edycji: emacs (@),
wiersz polecenia vi (:) lub tryb wstawiania vi (+).
Łańcuchy trybu są ustawialne przez użytkownika
(np. emacs-mode-string).
- skip-completed-text
(Off)
- Gdy jest ustawiona na On, modyfikuje domyślne zachowanie
uzupełniania gdy do wiersza wstawiane jest pojedyncze dopasowanie.
Jest to aktywne tylko podczas przeprowadzania uzupełnienia w
środku słowa. Gdy jest włączona, readline nie
wstawia znaków z uzupełniania, które pasują do
znaków w miejscu wprowadzania w uzupełnianym słowie,
dzięki czemu części słowa za kursorem, nie
są duplikowane.
- vi-cmd-mode-string
((cmd))
- Jeśli zmienna show-mode-in-prompt jest
włączona, ten łańcuch jest wyświetlany
zaraz po ostatnim wierszu pierwszej zachęty, gdy aktywny jest tryb
edycji vi w trybie poleceń. Wartość jest
interpretowana jak przypisania klawiszy, tak więc dostępne
są standardowe przedrostki meta- i control oraz sekwencje ucieczki
korzystające z ukośnika. Sekwencje ucieczki \1 i \2
odpowiednio zaczynają i kończą znaki niedrukowalne,
co można wykorzystać do osadzenia sekwencji kontrolnych
terminala w tym łańcuchu.
- vi-ins-mode-string
((ins))
- Jeśli zmienna show-mode-in-prompt jest
włączona, ten łańcuch jest wyświetlany
zaraz po ostatnim wierszu pierwszej zachęty, gdy aktywny jest tryb
edycji vi w trybie wstawiania. Wartość jest interpretowana
jak przypisania klawiszy, tak więc dostępne są
standardowe przedrostki meta- i control oraz sekwencje ucieczki
korzystające z ukośnika. Sekwencje ucieczki \1 i \2
odpowiednio zaczynają i kończą znaki niedrukowalne,
co można wykorzystać do osadzenia sekwencji kontrolnych
terminala w tym łańcuchu.
- 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).
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.
- version
- The version test may be used to perform comparisons against
specific readline versions. The version expands to the current
readline version. The set of comparison operators includes =, (and
==), !=, <=, >=, <, and
>. The version number supplied on the right side of the operator
consists of a major version number, an optional decimal point, and an
optional minor version (e.g., 7.1). If the minor version is
omitted, it is assumed to be 0. The operator may be separated from
the string version and from the version number argument by
whitespace.
- 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
- variable
- The variable construct provides simple equality tests for readline
variables and values. The permitted comparison operators are =,
==, and !=. The variable name must be separated from the
comparison operator by whitespace; the operator may be separated from the
value on the right hand side by whitespace. Both string and boolean
variables may be tested. Boolean variables must be tested against the
values on and off.
- $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:
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.
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.
- 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).
- shell-forward-word
- Przesuwa na koniec następnego słowa w przód.
Słowa są oddzielone niecytowanymi metaznakami
powłoki.
- shell-backward-word
- Przesuwa na początek bieżącego lub poprzedniego
słowa w tył. Słowa są oddzielone niecytowanymi
metaznakami powłoki.
- previous-screen-line
- Attempt to move point to the same physical screen column on the previous
physical screen line. This will not have the desired effect if the current
readline line does not take up more than one physical line or if point is
not greater than the length of the prompt plus the screen width.
- next-screen-line
- Attempt to move point to the same physical screen column on the next
physical screen line. This will not have the desired effect if the current
readline line does not take up more than one physical line or if the
length of the current readline line is not greater than the length of the
prompt plus the screen width.
- clear-display
(M-C-l)
- Clear the screen and, if possible, the terminal's scrollback buffer, then
redraw the current line, leaving the current line at the top of the
screen.
- clear-screen
(C-l)
- Czyści ekran, a następnie przerysowuje bieżący
wiersz, pozostawiając go na górze ekranu. Z argumentem,
odświeża bieżący wiersz bez czyszczenia
ekranu.
- redraw-current-line
- Odświeża bieżący wiersz.
- 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)
- Sprowadza 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.
- 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. Argument numeryczny, jeśli się go poda,
określa wpis historii do użycia, zamiast
bieżącego wiersza.
- fetch-history
- Z argumentem numerycznym, pobiera wpis z listy historii i wstawia go jako
bieżący wiersz. Bez argumentu cofa się do pierwszego
wpisu w liście historii.
- 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.
- history-substring-search-backward
- Wyszukuje wstecz w historii łańcucha znaków
pomiędzy początkiem bieżącego wiersza a
bieżącą pozycją kursora (punkt).
Wyszukiwany łańcuch może znaleźć
się gdziekolwiek w wierszu historii. Jest to wyszukiwanie
nie-krokowe.
- history-substring-search-forward
- Wyszukuje w przód w historii łańcucha znaków
pomiędzy początkiem bieżącego wiersza a
punktem. Wyszukiwany łańcuch może
znaleźć się gdziekolwiek w wierszu historii. 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. Po
obliczeniu argumentu n, jest on wyodrębniany w taki
sposób, jak gdyby podano opcję interpretowania historii
"!n".
- yank-last-arg (M-.,
M-_)
- Wstawia ostatni argument poprzedniego polecenia (ostatnie słowo
poprzedniej pozycji historii). Z argumentem numerycznym, 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 (lub słowo
określone przez argument do pierwszego wywołania)
każdego wiersza. Każdy argument numeryczny podany do
pomyślnego wywołania określa kierunek ruchu w
historii. Argument ujemny zmienia kierunek poruszania się (w
tył lub w przód). Możliwości interpretacji
historii są używane do wyodrębnienia ostatniego
słowa, podobnie jak gdyby wybrano interpretację historii za
pomocą "!$".
- 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.
- edit-and-execute-command
(C-x C-e)
- Przywołuje edytor w bieżącym wierszu poleceń i
wykonuje wynik jako polecenie powłoki. Bash stara się
wywołać $VISUAL, $EDITOR
i emacs jako edytor, w tej kolejności.
- koniec-pliku
(zwykle C-d)
- Znak wskazujący koniec pliku, jak ustawiony np. przez ``stty''.
Jeśli znak tej jest odczytany, gdy nie ma żadnych innych
znaków w wierszu, a punkt jest początkiem wiersza, readline
interpretuje to jako koniec wejścia i zwraca
EOF.
- delete-char
(C-d)
- Usuwa znak w tym punkcie. Jeżeli funkcja jest przypisana do tego
samego znaku, jak znak EOF tty, jak często bywa z
C-d, efekt jest opisany powyżej.
- 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.
- overwrite-mode
- Przełącza tryb nadpisywania. Z jawnym, dodatnim argumentem
liczbowym, przełącza do trybu nadpisywania. Z jawnym,
niedodatnim argumentem liczbowym, przełącza do trybu
wstawiania. Polecenie dotyczy jedynie trybu emacs, tryb vi
nadpisuje w inny sposób. Każde odwołania do
readline() jest uruchamiane w trybie wstawiania. W trybie
nadpisywania, znaki przypisane do self-insert
zastępują tekst pod kursorem, zamiast przesuwać go w
prawą stronę. Znaki przypisane do
backward-delete-char zastępują znak przed kursorem
spacją. Domyślnie, to polecenie nie jest przypisane.
- 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.
- shell-kill-word
- Usuwa od kursora do końca bieżącego słowa lub,
jeśli kursor znajduje się pomiędzy słowami, do
końca następnego słowa. Granice słów
są takie same, jak używane przez
shell-forward-word.
- shell-backward-kill-word
- Usuwa słowo sprzed punktu. Granice słów są
takie same, jak używane przez shell-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ęć.
- unix-filename-rubout
- Usuwa słowo sprzed punktu, jako separatora słów
używając białych znaków i
ukośnika.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.
- 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.
- 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 (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.
- 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.
- Podobne do menu-complete, ale przemieszcza się wstecz po
liście możliwych uzupełnień, identycznie gdyby
menu-complete podano ujemny argument. To polecenie jest
domyślnie nieprzypisane.
- 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.
- dabbrev-expand
- Usiłuje wykonać uzupełnienie menu na tekście
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).
- 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.
- print-last-kbd-macro
()
- Wypisuje ostatnie makro klawiaturowe, w formacie przeznaczonym do pliku
inputrc.
- 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-lowercase-version (M-A, M-B,
M-x, ...)
- Jeżeli poprzedzony przedrostkiem meta znak x jest
wielką literą, uruchamia polecenie, które jest
przypisane do odpowiedniego meta znaku małej litery. Zachowanie
jest niezdefiniowane, jeśli x jest już
małą literą.
- prefix-meta
(ESC)
- Poprzedza 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-<spacja>)
- stawia 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 zapamiętaną, a dotychczasowa pozycja zachowywana
jako znacznik.
- character-search
(C-])
- Odczytywany jest znak a punkt przesuwa się na następne
wystąpienie tego znaku. Argument ujemny wyszukuje poprzednie
wystąpienia.
- character-search-backward
(M-C-])
- Odczytywany jest znak a punkt przesuwa się na poprzednie
wystąpienie tego znaku. Argument ujemny wyszukuje kolejne
wystąpienia.
- skip-csi-sequence
- Odczytuje wystarczająco wiele znaków, aby pobrać
sekwencje wielu klawiszy, np. zdefiniowaną przez klawisze takie jak
Home i End. Takie sekwencje zaczynają się znacznikiem
sekwencji kontrolnej (Control Sequence Indicator - CSI), z reguły
ESC-[. Jeśli taka sekwencja jest przypisana do "\[", to
klawisze wchodzące w skład tej sekwencji nie
będą działać (chyba że zostały
jawnie przypisane do polecenia readline) zamiast wstawiać
niepowiązane znaki do bufora edycyjnego. Domyślnie, to
polecenie jest nieprzypisane, ale przypisanie powinno przeważnie
odnosić się do ESC-[.
- insert-comment
(M-#)
- Bez argumentu numerycznego, na początek bieżącego
wiersza wstawiana jest wartość zmiennej comment-begin
readline. Jeśli podano numeryczny argument, to polecenia
działa jak przełącznik: jeśli znaki na
początku wiersza nie pasują do wartości
comment-begin, to wartość jest wstawiana, w
przeciwnym wypadku znaki w comment-begin są usuwane z
początku każdego wiersza. W każdym przypadku 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.
Jeśli numeryczny argument powoduje usunięcie znaku
komentarza, to dany wiersze będzie wykonany przez
powłokę.
- spell-correct-word (C-x
s)
- Perform spelling correction on the current word, treating it as a
directory or filename, in the same way as the cdspell shell option.
Word boundaries are the same as those used by
shell-forward-word.
- glob-complete-word
(M-g)
- Słowo sprzed kursora jest traktowane jako wzorzec rozwijania nazw
plików, bez jawnego dodania gwiazdki (asterysku). Ten wzorzec
może zostać użyty do wygenerowania listy
pasujących nazw plików do możliwych
uzupełnień.
- 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. Jeśli podano
numeryczny argument, to przed rozwijaniem nazw plików dodawana jest
gwiazdka (asterysk).
- 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. Jeśli podano numeryczny argument, to
przed rozwijaniem nazw plików dodawana jest gwiazdka
(asterysk).
- 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.
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.
First, the command name is identified. If the command word is the
empty string (completion attempted at the beginning of an empty line), any
compspec defined with the -E option to complete is used. If a
compspec has been defined for that command, the compspec is used to generate
the list of possible completions for the word. If the command word is a full
pathname, a compspec for the full pathname is searched for first. If no
compspec is found for the full pathname, an attempt is made to find a
compspec for the portion following the final slash. If those searches do not
result in a compspec, any compspec defined with the -D option to
complete is used as the default. If there is no default compspec,
bash attempts alias expansion on the command word as a final resort,
and attempts to find a compspec for the command word from any successful
expansion.
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 i podstawiania wyników
poleceń, 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, COMP_POINT,
COMP_KEY i COMP_TYPE 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
($1) staje się nazwa polecenia, którego argumenty
są uzupełniane, drugim argumentem ($2) --
uzupełniane słowo, a trzecim słowem ($3)
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,
jedno na element tablicy.
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.
Jeśli włączona jest opcja powłoki
nocasematch, to dopasowanie jest wykonywane bez uwzględniania
wielkości liter.
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.
Jeśli do complete podano opcję -o
plusdir gdy istnieje zdefiniowane compspec, to próba dopasowania
nazw katalogów jest przeprowadzana, a ewentualne dopasowania
są dodawane do wyników innych akcji.
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 bashdefault, to jeżeli
compspec nie utworzy żadnych uzupełnień, wykonane
zostanie domyślne uzupełnienia bash. 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 (i, jeśli próbowano
domyślnych uzupełnień bash, także
one).
Gdy compspec informuje o żądaniu uzupełnienia
nazwy katalogu, funkcje programowalnego uzupełnienia wymuszają
na readline dodanie ukośnika, do uzupełnianych nazw
będących dowiązaniami symbolicznymi do
katalogów, które są przedmiotem wartości
zmiennej mark-direstories readline, niezależnie od ustawienia
zmiennej mark-symlinked-directories readline.
Istnieje pewna obsługa uzupełnień
modyfikowanych dynamicznie. Jest to szczególnie użyteczne w
kombinacji z domyślnym uzupełnianiem z opcją
complete -D. W przypadku funkcji powłoki, wykonywanych jako
odpowiedzialne za uzupełnianie, możliwe jest poinformowanie
że uzupełnienie powinno być ponowione za pomocą
kodu zakończenia równego 124. Jeśli funkcja
powłoki zwróci 124 i zmieni powiązany compspec
poleceniem, którego próbę uzupełnienia
podjęto (podanego jako pierwszy argument gdy funkcja jest
wykonywana), programowalne uzupełnianie rozpoczyna od
początku, próbując znaleźć nowy compspec
dla polecenia. Pozwala na ustawianie uzupełnień budowanych
dynamicznie po wykonanej próbie uzupełnienia, zamiast
ładowania ich wszystkich naraz.
Przykładowo, przyjmując że istnieje
biblioteka składająca się z compspec, każda
przechowywana w pliku odpowiadającym nazwie polecenia, to
następująca domyślna funkcja uzupełnienia
załaduje uzupełnienia dynamicznie:
_completion_loader()
{
. "/etc/bash_completion.d/$1.sh" >/dev/null
2>&1 && return 124
}
complete -D -F _completion_loader -o bashdefault -o
default
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. Jeśli HISTFILESIZE jest
nieustawione lub ustawione na zero, wartość
nienumeryczną lub wartość numeryczną
mniejszą od zera, plik historii nie jest obcinany. Gdy plik historii
jest odczytywany, wiersze zaczynające się od znaku komentarza
historii, po którym występuje bezpośrednio cyfra,
są interpretowane jako czasy następnego wiersza historii.
Czasy te mogą być opcjonalnie wyświetlane, w
zależności od wartości zmiennej
HISTTIMEFORMAT. Podczas kończenia pracy
powłoki z włączoną historią,
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. Jeśli zmienna HISTTIMEFORMAT jest
ustawiona, to pieczątki czasowe oznaczone znakiem komentarza historii
są zapisywane do pliku historii, tak więc mogą
być one zachowywane pomiędzy sesjami powłoki. Znak
historii komentarza jest wykorzystywany w celu odróżnienia
pieczątek czasowych od innych wierszy historii. Po zapisaniu, plik
historii jest obcinany, by nie zawierał więcej niż
HISTFILESIZE wierszy. Jeśli
HISTFILESIZE nie jest ustawione albo jest ustawione na
null, wartość nienumeryczną lub wartość
numeryczną mniejszą od zera, to plik historii nie jest
obcinany.
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.
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ę i jest przeprowadzana na
każdym wierszu oddzielnie, bez uwzględniania cytowania z
poprzednich wierszy. Odbywa się w dwu częściach.
Pierwszą jest określenie, który wiersz z listy historii
ma zostać użyty podczas podstawiania. Drugą stanowi
wybór części tego wiersza do włączenia w
bieżący. Wybrany z historii wiersz jest zdarzeniem
(event), a jego części na których wykonywane są
działania są słowami. Dostępne są
różne modyfikatory do manipulowania wybranymi
słowami. Wiersz rozbijany jest na słowa w ten sam
sposób jak podczas odczytu wejścia, tak że kilka
słów separowanych metaznakami ujętych w
cudzysłowy traktowanych jest jak jedno słowo. Interpretacja
historii wprowadzana są obecnością znaku
rozwijającego historię, którym domyślnie jest
!. Znak rozwijający historię cytować mogą
wyłącznie odwrotny ukośnik (\) i pojedyncze
cudzysłowy, lecz znak rozwijający historię jest
traktowany jako cytowany również wówczas, gdy
występuje bezpośrednio przed kończącym
cudzysłowem, przy cytowaniu za pomocą podwójnych
cudzysłowów.
Następujące znaki powstrzymują
interpretację historii jeśli zostaną znalezione
bezpośrednio za znakiem interpretacji historii, nawet jeśli
jest niecytowany: spacja, tabulacja, znak nowego wiersza, znak powrotu
karetki i =. Jeśli włączono opcję
powłoki extglob, to ( również zapobiegnie
interpretacji.
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). Do oznaczania pieczątek czasowych,
powłoka używa znaku komentarza historii podczas zapisywania
pliku historii.
Desygnator zdarzenia jest odwołaniem do pozycji wiersza
poleceń na liście historii. O ile odwołanie nie jest
absolutne, zdarzenia są relatywne w stosunku do
bieżącej pozycji w liście historii.
- !
- Rozpoczyna podstawianie historii, z wyjątkiem sytuacji, gdy
występuje po nim odstęp, znak nowej linii, = lub ( (gdy
włączono opcję powłoki extglob
używając wbudowanego shopt).
- !n
- Wskazuje na n-ty wiersz poleceń.
- !-n
- Wskazuje na wiersz poleceń bieżący minus
n.
- !!
- Wskazuje na poprzednie polecenie. jest to synonim `!-1'.
- !łańcuch
- Wskazuje na ostatnie poleceniem rozpoczynające się od
łańcucha.
- !?łańcuch[?]
- Wskazuje na ostatnie polecenie poprzedzające
bieżącą pozycję w liście historii,
zawierające łańcuch. Kończące
? można pominąć jeśli
bezpośrednio po łańcuchu występuje znak
nowej linii. Jeśli nie poda się
łańcucha, używany jest łańcuch z
ostatniego wyszukiwania; brak takowego jest błędem.
- ^łańcuch1^łańcuch2^
- Szybkie podstawianie. Powtarza ostatnie polecenie, wymieniając
łańcuch1 na łańcuch2.
Równoważnik
,,!!:s^łańcuch1^łańcuch2^
(zobacz poniżej Modyfikatory).
- !#
- Cały wiersz poleceń wpisany do tego momentu.
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.
- $
- Ostatnie słowo. Jest to zwykle ostatni argument, ale jest
interpretowany jako zerowe słowo, gdy jest tylko jedno słowo
w wierszu.
- %
- Pierwsze słowo dopasowane przez ostatnie wyszukanie
`?łańcuch?', jeśli szukany
łańcuch rozpoczyna się znakiem, będącym
częścią słowa.
- 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 brak x, przyjmowane jest domyślne
0.
jeśli desygnator słowa podano bez określenia
zdarzenia, za zdarzenie przyjmowane jest poprzednie polecenie.
Po opcjonalnym desygnatorze słowa może
pojawić się sekwencja jednego lub więcej
poniższych modyfikatorów, każdy poprzedzony dwukropkiem
„:”. Modyfikują one lub edytują słowo
(lub słowa), wybrane ze zdarzenia historii.
- 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.
Modyfikatory q i x wzajemnie się wykluczają;
będzie zastosowany podany jako ostatni.
- s/stary/nowy/
- Substitute new for the first occurrence of old in the event
line. Any character may be used as the delimiter in place of /. The final
delimiter is optional if it is the last character of the event line. The
delimiter may be quoted in old and new with a single
backslash. If & appears in new, it is replaced by old. A
single backslash will quote the &. If old is null, it is set to
the last old substituted, or, if no previous history substitutions
took place, the last string in a !?string[?]
search. If new is null, each matching old is deleted.
- &
- Powtarza poprzednie podstawienie.
- g
- Powoduje, że zmiany zostaną zastosowane do całego
wiersza zdarzenia. Używany w połączeniu z `:s'
(np. `:gs/stary/nowy/') 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.
- G
- Apply the following `s' or `&' modifier once to each
word in the event line.
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. Wbudowane :, true,
false i test/[ nie akceptują opcji i nie
traktują -- w sposób specjalny. Wbudowane exit,
logout, return, break, continue, let i
shift akceptują i przetwarzają argumenty
zaczynające się od -, bez wymogu podania --.
Inne wbudowane polecenia, które akceptują argumenty, lecz nie
są opisane jako akceptujące opcje, interpretują
argumenty zaczynające się od - jako opcje
nieprawidłowe i wymagają --, aby zapobiec takiej
interpretacji,
- : [argumenty]
- Bez efektów; polecenie to nie robi niczego poza
interpretacją argumentów i wykonaniem ewentualnych
podanych przekierowań. Zwracany status to zero.
-
. 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
zawierającego plik używane są pliki z
PATH, a plik nie musi być wykonywalny.
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. Jeśli włączona jest opcja -T, .
dziedziczy pułapki z DEBUG; jeśli nie,
występujący łańcuch pułapki
DEBUG jest zachowywany i przechowywany wokół
wywołania do ., a . kasuje pułapkę
DEBUG przy jej wykonaniu. Jeśli -T nie jest
ustawione, a plik źródłowy zmieni
pułapkę DEBUG, nowa wartość jest
odzyskiwana po zakończeniu .. Kod zakończenia jest
kodem ostatniego zakończonego przez skrypt polecenia (0
jeśli nie wykonano ż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
argumentów, to definiowany jest alias (synonim) dla każdej
nazwy, dla której podano wartość.
Początkowa spacja w wartości powoduje, że
podczas interpretacji aliasu następne słowo będzie
sprawdzane na podstawianie aliasów. Dla każdej nazwy
z listy argumentów, dla której nie podano
wartości, wypisywana jest nazwa i wartość
aliasu. Alias zwraca prawdę, chyba że podano
nazwę, dla której nie został zdefiniowany
żaden alias.
- bg
[spec_zad]
- Wznawia w tle zawieszone zadanie spec_zad, tak jakby zostało
ono uruchomione z &. Jeśli spec_zad nie
występuje, to używane jest bieżące
zadanie, określone tak, jak je pojmuje powłoka.
bg spec_zad zwraca 0, chyba że uruchomiono je przy
wyłączonej kontroli zadań (job control) lub
uruchomiono z włączoną kontrolą zadań,
jeśli nie znaleziono spec_zad lub uruchomiono bez kontroli
zadań.
- bind [-m
mapa-klawiszy] [-lpsvPSVX]
- bind [-m
mapa-klawiszy] [-q funkcja] [-u funkcja]
[-r sekw_klaw]
- bind [-m
mapa-klawiszy] -f plik
- bind [-m
mapa-klawiszy] -x
sekw_klaw:polec_powłoki
- bind [-m
mapa-klawiszy] sekw_klaw:nazwa_funkcji
- bind [-m
mapa-klawiszy] sekw_klaw:polec_readline
- bind
readline-command-line
- Display current readline key and function bindings, bind a key
sequence to a readline function or macro, or set a readline
variable. Each non-option argument is a command as it would appear in a
readline initialization file such as .inputrc, but each
binding or command must be passed as a separate argument; e.g.,
'"\C-x\C-r": re-read-init-file'. Options, if supplied, have the
following meanings:
- -m
mapa-klawiszy
- Wykorzystuje mapę-klawiszy 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 (synonimem jest też
vi-move); 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.
- -s
- Wyświetla nazwy i wartości zmiennych readline 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ą.
- -v
- Wyświetla sekwencje klawiszy readline przypisane do makr i
łańcuchy jakie one wysyłają w taki
sposób, że mogą być ponownie odczytane.
- -V
- Podaje bieżące nazwy i wartości zmiennych
readline.
- -f plik
- Czyta przypisania klawiszy z pliku.
- -q
funkcja
- Podaje, które klawisze wywołują podaną
funkcję.
- -u
funkcja
- Odwołuje przypisania wszystkich klawiszy przypisanych do danej
funkcji.
- -r
sekw_klaw
- Usuwa bieżące przypisania dla sekwencji
klawiszy.
- -x
sekw_klaw:polec_powłoki
- Cause shell-command to be executed whenever keyseq is
entered. When shell-command is executed, the shell sets the
READLINE_LINE variable to the contents of the
readline line buffer and the READLINE_POINT
and READLINE_MARK variables to the current
location of the insertion point and the saved insertion point (the mark),
respectively. The shell assigns any numeric argument the user supplied to
the READLINE_ARGUMENT variable. If there was no argument,
that variable is not set. If the executed command changes the
value of any of READLINE_LINE,
READLINE_POINT, or READLINE_MARK,
those new values will be reflected in the editing state.
- -X
- Wypisuje wszystkie sekwencje klawiszy przypisane do poleceń
powłoki i powiązane polecenia w formacie, który
można użyć ponownie jako wejście.
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 argumenty i zwraca jego kod
zakoń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.
- caller
[wyrażenie]
- Zwraca kontekst aktywnego wywołania podprogramu (funkcji
powłoki lub skryptu wykonywanego wbudowanymi poleceniami .
lub source). Bez wyrażenia, caller
wyświetla numer wiersza i plik źródłowy
bieżącego wywołania podprogramu. Jeśli do
wyrażenia przekazano nieujemną liczbę
całkowitą, to caller wyświetla numer wiersza,
nazwę podprogramu i plik źródłowy
związany z pozycją w bieżącym stosie
wywołania. Te dodatkowe informacje mogą być
użyte np. do wyświetlenia stosu wywołania.
Bieżąca ramka jest ramką 0. Zwracaną
wartością jest 0, chyba że powłoka nie
wykonuje wywołania podprogramu lub wyrażenie nie
odnosi się do prawidłowej pozycji w stosie
wywołania.
- cd [-L|[-P
[-e]] [-@]] [katalog]
- Zmienia bieżący katalog roboczy na katalog.
Jeśli nie poda się katalogu, domyślnie jest to
wartość zmiennej powłoki HOME.
Zmienna CDPATH definiuje
ścieżkę przeszukiwań dla katalogu
zawierającego katalog: każda nazwa katalogu w
CDPATH jest przeszukiwana pod kątem
katalogu. 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
podążając za dowiązaniami symbolicznymi przy
przechodzeniu przez katalog i przed przetwarzaniem
wystąpień .. w katalogu (zobacz też
opcja -P wbudowanego polecenia set). Opcja -L wymusza
podążanie za dowiązaniami symbolicznymi po
przetworzeniu wystąpień .. w katalogu.
Jeśli w katalogu pojawi się .., to jest ono
pzetwarzane przez usunięcie występującej zaraz przed
nim składowej ścieżki z katalogu, aż do
ukośnika rozpoczynającego katalog. Jeśli z
-P użyto opcji -e, a bieżący katalog
roboczy nie może zostać pomyślnie określony po
pomyślnej zmianie katalogu, to cd zwróci kod
oznaczający niepowodzenie. W systemach które to
obsługują, opcja -@ przedstawia atrybuty rozszerzone
powiązane z plikiem jak i katalogiem. Argument - jest
przetwarzany na $OLDPWD przed przeprowadzeniem próby
zmiany katalogu.Jeśli użyta jest niepusta nazwa
katalogu z CDPATH lub jeśli - jest
pierwszym argumentem, a zmiana katalogu odbyła się
pomyślnie, na standardowe wyjście wypisywana jest
ścieżka absolutna do nowego katalogu roboczego. Jeśli
zmiana katalogu będzie pomyślna, cd ustawia
wartość zmiennej środowiskowej PWD na
nową nazwę katalogu oraz ustawia zmienną
środowiskową na wartość
bieżącego katalogu roboczego przed zmianą.
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 obszerny opis.
Jeżeli podano opcję -V lub -v, to kodem
zakończenia jest 0 gdy odnaleziono polecenie, zaś 1
gdy nie. Jeśli nie podano żadnej z tych opcji i
pojawił się błąd lub nie można
znaleźć polecenia, to kod zakończenia wynosi
127. W przeciwnym wypadku kodem zakończenia wbudowanego polecenia
command jest kod zakończenia polecenia.
- compgen
[opcja] [słowo]
- Tworzy możliwe dopasowania uzupełnień dla
słowa zgodnie z opcjami, które mogą
być dowolnymi z opcji akceptowanych przez wbudowane polecenie
complete, z wyjątkiem -p i -r, i wypisuje
dopasowania na standardowe wyjście. Przy stosowaniu opcji -F
lub -C, różne zmienne powłoki ustawiane przez
usługi programowalnego uzupełniania, gdy są
dostępne, nie będą mieć użytecznych
wartości.
Dopasowania będą tworzone w ten sam
sposób, jakby kod uzupełniania programowalnego
tworzył je wprost ze specyfikacji uzupełniania z tymi
samymi flagami. Jeżeli podano słowo, to
wyświetlone zostaną wyłącznie
uzupełnienia doń pasujące.
Wartością zwracaną jest prawda, chyba
że podano niepoprawną opcję lub nie zostały
utworzone żadne dopasowania.
- complete
[-abcdefgjksuv] [-o opcjacomp] [-DEI] [-A
akcja] [-G wzglob] [-W
listasłów]
-
[-F funkcja] [-C polecenie] [-X
wzfiltr] [-P przedrostek] [-C
przyrostek] nazwa [nazwa ...]
- complete
-pr [-DEI] [nazwa ...]
- Specify how arguments to each name should be completed. If the
-p option is supplied, or if no options are supplied, existing
completion specifications are printed in a way that allows them to be
reused as input. The -r option removes a completion specification
for each name, or, if no names are supplied, all completion
specifications. The -D option indicates that other supplied options
and actions should apply to the “default” command
completion; that is, completion attempted on a command for which no
completion has previously been defined. The -E option indicates
that other supplied options and actions should apply to
“empty” command completion; that is, completion attempted on
a blank line. The -I option indicates that other supplied options
and actions should apply to completion on the initial non-assignment word
on the line, or after a command delimiter such as ; or |,
which is usually command name completion. If multiple options are
supplied, the -D option takes precedence over -E, and both
take precedence over -I. If any of -D, -E, or
-I are supplied, any other name arguments are ignored; these
completions only apply to the case specified by the option.
Proces stosowania tych specyfikacji uzupełnień
podczas prób uzupełniania słów
omówiono above under Programmable Completion.
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:
- bashdefault
- Wykonuje pozostałe z domyślnych uzupełnień
bash, jeśli compspec nie utworzy żadnych
dopasowań.
- 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.
- noquote
- Przekazuje readline, aby nie cytowało uzupełnianych
słów, jeśli są nazwami plików
(domyślnie nazwy plików są cytowane).
- nosort
- Przekazuje readline, aby nie sortowało alfabetycznie listy
dostępnych uzupełnień.
- nospace
- Przekazuje readline, aby nie dodawało spacji (domyślnie) do
uzupełnionych słów, na końcu wiersza.
- plusdirs
- Po utworzeniu dopasowań zdefiniowanych przez compspec,
przeprowadzana jest próba dopasowania nazw katalogów, a
ewentualne dopasowania są dodawane do wyników innych
akcji.
- -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.
- service
- Nazwy usług. Można też podać jako
-s.
- 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.
- -C
polecenie
- polecenie jest wykonywane w środowisku podpowłoki, a
jego wyjście jest używane jako możliwe
uzupełnienia. Argumenty przekazuje się opcją
-F.
- -F funkcja
- Funkcja powłoki funkcja jest wykonywana w
bieżącym środowisku powłoki. Gdy funkcja jest
wykonywana, pierwszy argument ($1) jest nazwą polecenia,
którego argumenty są uzupełniane, drugim argumentem
($2) jest uzupełniane słowo, a trzecim ($3)
jest słowo poprzedzające uzupełniane słowo w
bieżącym wierszu polecenia. Po zakończeniu,
możliwe uzupełnienia są pozyskiwane z wartości
zmiennej tablicowej COMPREPLY.
- -G wzglob
- Wzorzec rozwijania nazw plików wzglob jest rozwijany,
tworząc listę możliwych
uzupełnień.
- -P
przedrostek
- na początku każdego z możliwych
uzupełnień, po zastosowaniu wszystkich innych opcji,
dodawany jest przedrostek.
- -S
przyrostek
- na końcu każdego z możliwych
uzupełnień, po zastosowaniu wszystkich innych opcji,
dodawany jest przyrostek.
- -W
listasłów
- The wordlist is split using the characters in the IFS
special variable as delimiters, and each resultant word is
expanded. Shell quoting is honored within wordlist, in order to
provide a mechanism for the words to contain shell metacharacters or
characters in the value of IFS. The possible completions are
the members of the resultant list which match the word being
completed.
- -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.
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.
- compopt
[-o opcja] [-DEI] [+o opcja]
[nazwa]
- Modify completion options for each name according to the
options, or for the currently-executing completion if no
names are supplied. If no options are given, display the
completion options for each name or the current completion. The
possible values of option are those valid for the complete
builtin described above. The -D option indicates that other
supplied options should apply to the “default” command
completion; that is, completion attempted on a command for which no
completion has previously been defined. The -E option indicates
that other supplied options should apply to “empty” command
completion; that is, completion attempted on a blank line. The -I
option indicates that other supplied options should apply to completion on
the initial non-assignment word on the line, or after a command delimiter
such as ; or |, which is usually command name completion.
Zwracaną wartością jest prawda, chyba
że podano nieprawidłową opcję,
przeprowadzono próbę zmodyfikowania opcji dla
nazwy, dla której nie istnieje specyfikacja
uzupełniania lub wystąpił błąd
wyjścia.
- 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
[-aAfFgiIlnrtux] [-p]
[nazwa[=wartość] ...]
- typeset
[-aAfFgiIlnrtux] [-p]
[nazwa[=wartość] ...]
- Declare variables and/or give them attributes. If no names are
given then display the values of variables. The -p option will
display the attributes and values of each name. When -p is
used with name arguments, additional options, other than -f
and -F, are ignored. When -p is supplied without name
arguments, it will display the attributes and values of all variables
having the attributes specified by the additional options. If no other
options are supplied with -p, declare will display the
attributes and values of all shell variables. The -f option will
restrict the display to shell functions. The -F option inhibits the
display of function definitions; only the function name and attributes are
printed. If the extdebug shell option is enabled using
shopt, the source file name and line number where each name
is defined are displayed as well. The -F option implies -f.
The -g option forces variables to be created or modified at the
global scope, even when declare is executed in a shell function. It
is ignored in all other cases. The -I option causes local variables
to inherit the attributes (except the nameref attribute) and value
of any existing variable with the same name at a surrounding scope.
If there is no existing variable, the local variable is initially unset.
The following options can be used to restrict output to variables with the
specified attribute or to give variables attributes:
- -a
- Każda z nazw jest indeksowaną zmienną
tablicową (zobacz Tablice). above).
- -A
- Każda z nazw jest asocjacyjną zmienną
tablicową (zobacz Tablice). above).
- -f
- Używa wyłącznie nazw funkcji.
- -i
- Zmienna jest traktowana jak całkowita; wykonywana jest
interpretacja wyrażeń arytmetycznych (zobacz
OBLICZANIE WYRAŻEŃ ARYTMETYCZNYCH)
above) gdy zmiennej jest przypisywana wartość.
- -l
- Gdy zmiennej przypisano wartość, wszystkie wielkie litery
są zamieniane na małe. Przypisania za pomocą wielkich
liter są wyłączone.
- -n
- Nadaje każdej nazwie atrybut nazwa referencyjna,
czyniąc ją nazwą referencyjną
odnoszącą się do innej zmiennej. Ta
inna zmienna jest definiowana w wartości nazwy. Wszystkie
odniesienia i przypisania i modyfikacje atrybutów nazwy, z
wyjątkiem tych używających lub zmieniających
sam atrybut -n są wykonywane na zmiennej do której
odnosi się wartość nazwy. Atrybutu nazwa
referencyjna nie można zastosować do zmiennych
tablicowych.
- -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.
- -t
- Nadaje każdej nazwie atrybut trace. Funkcje z tym
atrybutem dziedziczą pułapki DEBUG i RETURN z
wywołującej je funkcji. Atrybut ten nie ma specjalnego
znaczenia dla zmiennych.
- -u
- Gdy zmiennej przypisano wartość, wszystkie małe
litery są zamieniane na wielkie. Przypisania za pomocą
małych liter są wyłączone.
- -x
- Zaznacza nazwę do wyeksportowania przez środowisko do
kolejnych poleceń.
Użycie `+' zamiast `-' wyłącza atrybut, z
wyjątkiem tego, że +a i +A nie może
być używane do niszczenia zmiennych tablicowych. a +r
nie usunie atrybutu tylko do odczytu. Użyte w funkcji declare
i typeset powodują, że każda z nazw staje
się lokalna, jak przy pomocy polecenia local, chyba że
podano opcję -g. Przy używaniu -a lub -A
oraz składni polecenia złożonego do utworzenia
zmiennych tablicowych, dodatkowe atrybuty nie dają efektu aż
do kolejnych przypisań. Jeśli po zmiennej występuje
=wartość, to wartość zmiennej jest
ustawiana na wartość. 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 above), 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. Bieżący katalog jest
zawsze pierwszy na stosie.
- -c
- Czyści stos katalogów usuwając wszystkie jego
pozycje.
- -l
- Tworzy listing używając pełnych
ścieżek; 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.
- +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.
Wartością zwracaną jest 0, chyba że
podano nieprawidłową opcję lub n wskazuje poza
koniec stosu katalogów.
- disown [-ar]
[-h] [zadanie ... | pid ... ]
- Bez opcji, usuwa każde z podanych zadań z tablicy
zadań aktywnych. Jeśli nie podano zadania i nie
użyto ani opcji -a ani -r, to używane jest
zadanie bieżące. 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ż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, chyba
że wystąpi błąd zapisu. 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
- alarm (dzwonek)
- \b
- backspace
- \c
- pomiń kończący znak nowej linii
- \e
- \E
- znak escape
- \f
- znak wysuwu strony (form feed)
- \n
- znak nowego wiersza (new line)
- \r
- powrót karetki
- \t
- tabulacja pozioma (horizontal tab)
- \v
- tabulacja pionowa (vertical tab)
- \\
- odwrotny ukośnik (backslash)
- \0nnn
- 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)
- \uHHHH
- znak Unicode (ISO/IEC 10646) o wartości szesnastkowej HHHH
(jedna do czterech cyfr szesnastkowych)
- \UHHHHHHHH
- znak Unicode (ISO/IEC 10646) o wartości szesnastkowej
HHHHHHHH (jedna do ośmiu cyfr szesnastkowych)
- enable
[-a] [-dnps] [-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''. The -f option means to load the new builtin command
name from shared object filename, on systems that support
dynamic loading. Bash will use the value of the BASH_LOADABLES_PATH
variable as a colon-separated list of directories in which to search for
filename. The default is system-dependent. The -d option
will delete a builtin previously loaded with -f. If no name
arguments are given, or if the -p option is supplied, a list of
shell builtins is printed. With no other option arguments, the list
consists of all enabled shell builtins. If -n is supplied, only
disabled builtins are printed. If -a is supplied, the list printed
includes all builtins, with an indication of whether or not each is
enabled. If -s is supplied, the output is restricted to the POSIX
special builtins. If no options are supplied and a name is
not a shell builtin, enable will attempt to load name from a
shared object named name, as if the command were ``enable -f
name name . The return value is 0 unless a name is not a
shell builtin or there is an error loading a new builtin from a shared
object.
- eval [argument
...]
- Argumenty są czytane i łączone w pojedyncze
polecenie. Polecenie to jest następnie odczytywane i wykonywane
przez powłokę, zaś jego kod zakończenia jest
zwracany jako wartość eval. Jeżeli nie na
żadnych argumentów, lub wszystkie argumenty są
puste, eval zwraca 0.
- exec [-cl]
[-a nazwa] [polecenie [argumenty]]
- Jeżeli podano polecenie, zastępuje ono
powłokę. Nie tworzony jest żaden nowy proces.
Argumenty stają się argumentami polecenia.
Jeśli podano opcję -l, umieszcza kreskę na
początku zerowego argumentu przesyłanego do
polecenia. Tak samo, jak robi to login(1). Opcja -c
powoduje, że polecenie zostanie wykonane z pustym
środowiskiem. Jeżeli podano -a, powłoka
przesyła do wykonywanego polecenia nazwę jako zerowy
argument. Jeżeli polecenie z jakiegoś powodu nie
może zostać wykonane, to powłoka nie-interaktywna
kończy pracę, chyba że włączona jest
opcja powłoki execfail, wówczas zwraca niepowodzenie.
Powłoka interaktywna zwraca niepowodzenie jeśli plik nie
może zostać wykonany. Jeśli exec zawiedzie,
podpowłoka bezwzględnie wyjdzie. 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[=słowo]] ...
- export
-p
- Podane nazwy zaznaczane są do automatycznego wyeksportowania
do środowiska następnych wykonywanych poleceń.
Jeśli podano opcję -f, to nazwy odnoszą
się do funkcji. Jeżeli nie podano żadnych nazw
lub jeżeli podano opcję -p, to wypisywana jest lista
nazw wszystkich eksportowanych w tej powłoce zmiennych. Opcja
-n powoduje usunięcie cechy eksportowania z podanych
zmiennych. Jeśli po nazwie zmiennej występuje
=słowo, to wartość zmiennej jest ustawiana na
słowo. 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] [-lnr] [pierwsze] [ostatnie]
- fc -s
[wzorzec=zastąpienie] [polecenie]
- The first form selects a range of commands from first to
last from the history list and displays or edits and re-executes
them. First and last may be specified as a string (to locate
the last command beginning with that string) or as a number (an index into
the history list, where a negative number is used as an offset from the
current command number). When listing, a first or last of 0
is equivalent to -1 and -0 is equivalent to the current command (usually
the fc command); otherwise 0 is equivalent to -1 and -0 is invalid.
If last is not specified, it is set to the current command for
listing (so that ``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
zastąpienie. Polecenie jest interpretowane podobnie
jak pierwsze powyżej. Przydatnym aliasem do wykorzystania
z tą formą jest ``r="fc -s"'', tak, że
napisanie ``r cc'' uruchamia ostatnie polecenie rozpoczynające
się od ``cc'' a napisanie ``r'' ponownie wykonuje ostatnie
polecenie.
Jeżeli użyta została pierwsza
postać, to wartością zwracaną jest 0, chyba
że napotkano nieprawidłową opcję lub
pierwszy albo ostatni określają wiersze
historii spoza zakresu. Jeżeli podano opcję -e,
wartością zwracaną jest wartość
ostatniego wykonanego polecenia lub niepowodzenie jeśli
pojawił się błąd tymczasowego pliku
poleceń. Jeżeli użyta została druga
postać, to zwracanym kodem jest kod ponownie wykonanego
polecenia, chyba że polecenie nie określa
poprawnego wiersza poleceń -- wówczas fc zwraca
porażkę.
- fg
[zadanie]
- Wznawia zadanie na pierwszym planie i czyni je zadaniem
bieżącym. Jeżeli nie podano zadania,
używane jest bieżące zadanie w pojęciu
powłoki. Wartością zwracaną jest
wartość polecenia umieszczonego na pierwszym planie, lub
porażka jeżeli fb uruchomiono przy
wyłączonej kontroli zadań, lub uruchomiono je przy
włączonej kontroli zadań, ale zadanie nie
określa prawidłowego zadania lub zadanie
określa zadanie, które zostało uruchomione bez
kontroli zadań.
- getopts
łańcuch_opcji nazwa [argument
...]
- getopts używane jest przez procedury powłoki do
analizy parametrów pozycyjnych. Łańcuch opcji
zawiera znaki opcji, jakie mają być rozpoznawane;
jeżeli po znaku występuje dwukropek, to oczekuje się,
że opcja będzie posiadać argument, który
powinien być od niej oddzielony białym znakiem. Jako znaki
opcji nie 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 normally parses the positional parameters, but
if more arguments are supplied as arg values, getopts
parses those instead.
getopts może zgłaszać
błędy na dwa sposoby. Jeżeli pierwszym znakiem
łańcucha opcji jest dwukropek, to stosowane jest
ciche (silent) zgłaszanie błędów.
Przy zwykłej pracy komunikaty diagnostyczne wypisywane są
przy napotkaniu nieprawidłowych opcji lub brakujących
argumentów opcji. Jeżeli zmienna OPTERR
ustawiona jest na 0, nie będą wyświetlane
żadne komunikaty błędów, nawet jeśli
pierwszym znakiem łańcucha opcji nie jest
dwukropek.
Przy napotkaniu nieprawidłowej opcji getopts
umieszcza ? w nazwie i, jeśli nie pracuje w trybie cichym,
wypisuje komunikat błędu i kasuje OPTARG.
Jeżeli getopts pracuje w trybie cichym, to znaleziony
znak opcji umieszczany jest w OPTARG i nie jest
wypisywany żaden komunikat diagnostyczny.
Jeśli nie znaleziono wymaganego argumentu, a
getopts nie pracuje w trybie cichym, w nazwa umieszczany
jest znak zapytania (?), kasowane jest OPTARG i
wyświetlany jest komunikat błędu. Jeżeli
getopts pracuje w trybie cichym, to w nazwie
umieszczany jest dwukropek (:), a OPTARG ustawiane
jest na znaleziony znak opcji.
getopts zwraca prawdę, jeśli znaleziono
określoną lub nie określoną opcję.
Zwraca fałsz jeżeli napotkano koniec opcji lub
pojawił się błąd.
- hash [-lr]
[-p plik] [-dt] [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. Opcja -d powoduje,
że powłoka zapomina wszystkie zapamiętane
wcześniej miejsca dla każdej nazwy. 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. Opcja -l powoduje wyświetlanie
wyniku w formacie, który może zostać ponownie
wykorzystany jako wejście. 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 [-dms]
[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.
- -d
- Wyświetla krótki opis dla każdego wzorca
- -m
- Wyświetla opis dla każdego wzorca w formacie podobnym
do strony man
- -s
- Wyświetla jedynie krótkie podsumowanie użycia
każdego wzorca
Kodem zakończenia jest 0, chyba nie nie dopasowano
żadnego polecenia do wzorca.
- history
[n]
- history
-c
- history -d
przesunięcie
- history -d
początek-koniec
- 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śli ustawiono zmienną powłoki
HISTTIMEFORMAT i nie jest ona pusta, to do
wyświetlania pieczątek czasowych związanych z
każdym wyświetlanym wpisem historii używany jest
format łańcucha do strftime(3). Pomiędzy
formatowaną pieczątką czasową a wierszem
historii nie jest wstawiany odstęp. 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
przesunięcie
- Delete the history entry at position offset. If offset is
negative, it is interpreted as relative to one greater than the last
history position, so negative indices count back from the end of the
history, and an index of -1 refers to the current history -d
command.
- -d
początek-koniec
- Delete the range of history entries between positions start and
end, inclusive. Positive and negative values for start and
end are interpreted as described above.
- -a
- Dodaje "nowe" wiersze do pliku historii. Są to wiersze
historii wprowadzone od początku bieżącej sesji
bash, lecz nie dodane jeszcze 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 dodaje ją do
bieżącej listy historii.
- -w
- Zapisuje bieżącą listę historii do pliku
historii, nadpisując jego zawartość.
- -p
- Na zadanych argumentach wykonuje podstawianie historii (history
substitution). Wyświetla wyniki na standardowym wyjściu. Nie
zachowuje wyników na liście. Każdy z
argumentów musi być cytowany, by
wyłączyć normalną interpretację
historii.
- -s
- Zachowuje argumenty na liście historii jako
pojedynczą pozycję. Przed dodaniem argumentów
z listy usuwane jest ostatnie polecenie.
Jeśli ustawiona jest zmienna HISTTIMEFORMAT,
to do pliku historii zapisywana jest informacja o czasie
związanym z każdym wpisem historii, oznaczona znakiem
komentarza historii. Gdy plik historii jest odczytywany, wiersze
zaczynające się znakiem komentarza historii, po którym
występuje bezpośrednio cyfra, są interpretowane jako
czasy kolejnego wpisu. Wartością zwracaną jest 0, chyba
że napotkano nieprawidłową opcję lub podczas
odczytu czy zapisu pliku historii pojawił się
błąd, opcji -d podano niepoprawny argument
offset lub zakres, 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.
- -n
- Wyświetla wyłącznie informację o zadaniach,
które zmieniły status od chwili, gdy użytkownik
był ostatnio powiadamiany o ich statusie.
- -p
- Listuje tylko ID procesu lidera grupy procesów zadania.
- -r
- Wyświetla jedynie działające zadania.
- -s
- Wyświetla jedynie zatrzymane zadania.
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|-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 (z lub bez przedrostka
SIG) albo numerem sygnału; signum jest
numerem sygnału. 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ł. Opcja
-L jest równoważna -l. 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 above). Jeżeli
ostatni z nich interpretowany jest jako zero, to let zwraca 1; w
przeciwnym wypadku zwracane jest 0.
- local [opcja]
[nazwa[=wartość] ... | - ]
- For each argument, a local variable named name is created, and
assigned value. The option can be any of the options
accepted by declare. When local is used within a function,
it causes the variable name to have a visible scope restricted to
that function and its children. If name is -, the set of shell
options is made local to the function in which local is invoked:
shell options changed using the set builtin inside the function are
restored to their original values when the function returns. The restore
is effected as if a series of set commands were executed to restore
the values that were in place before the function. With no operands,
local writes a list of local variables to the standard output. It
is an error to use local when not within a function. The return
status is 0 unless local is used outside a function, an invalid
name is supplied, or name is a readonly variable.
- logout
- Kończy pracę powłoki zgłoszeniowej.
- mapfile
[-d sep] [-n liczba] [-O indeks]
[-s liczba] [-t] [-u fd] [-C
wywoł-zwr] [-c wielkość]
[tablica]
- readarray
[-d sep] [-n liczba] [-O indeks]
[-s liczba] [-t] [-u fd] [-C
wywoł-zwr] [-c wielkość]
[tablica]
- Odczytuje wiersze ze standardowego wejścia do indeksowanej zmiennej
tablicowej tablica lub, jeśli podano opcję -u,
z deskryptora pliku fd. Domyślną
tablicą jest zmienna MAPFILE Opcje,
jeśli je podano, mają następujące
znaczenie:
- -d
- The first character of delim is used to terminate each input line,
rather than newline. If delim is the empty string, mapfile
will terminate a line when it reads a NUL character.
- -n
- Kopiuje najwyżej liczbę wierszy. Gdy liczba
wynosi 0, kopiowane są wszystkie wiersze.
- -O
- Rozpoczyna przypisywanie do tablicy od indeksu indeks.
Domyślnym jest 0.
- -s
- Pomija pierwsze liczba wierszy.
- -t
- Usuwa końcowy sep (domyślnie znak nowego wiersza) z
każdego odczytanego wiersza.
- -u
- Odczytuje wiersze z deskryptora pliku fd zamiast ze standardowego
wejścia.
- -C
- Oblicza wywoł-zwr po każdym odczytaniu liczby
wielkość wierszy. Opcja -c określa
wielkość.
- -c
- Określa liczbę wierszy odczytanych pomiędzy
każdym odwołaniem do wywoł-zwr.
Jeśli podano -C bez -c, to
domyślną wielkością jest 5000. Gdy wykonywane
jest wywoł-zwr, jako dodatkowe argumenty przekazywane
są mu indeks następnego elementu tablicy do przypisania i
wiersza, który ma być przypisy do tego elementu.
Wywoł-zwr jest wykonywane po odczytaniu wiersza, ale przed
przypisaniem elementu tablicy.
Jeśli nie podano indeksu, mapfile wyczyści
tablicę przed przypisaniem do niej wartości.
Polecenie mapfile zwraca sukces, chyba że podano
nieprawidłową opcję lub argument opcji, tablica
jest nieprawidłowa, nie da się do niej przypisać
wartości lub nie jest tablicą indeksowaną.
- popd [-n]
[+n] [-n]
- Removes entries from the directory stack. The elements are numbered from 0
starting at the first directory listed by dirs. With no arguments,
popd removes the top directory from the stack, and changes to the
new top directory. Arguments, if supplied, have the following
meanings:
- -n
- Nie wykonuje zwykłej zmiany katalogu podczas usuwania
katalogów ze stosu, tak że zmieniany jest tylko stos.
- +n
- Usuwa ntą pozycję, licząc od lewej, listy
pokazywanej przez dirs, zaczynając od zera, ze stosu. 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, a ``popd -1''
przedostatni.
If the top element of the directory stack is modified, and the
-n option was not supplied, popd uses the cd builtin to
change to the directory at the top of the stack. If the cd fails,
popd returns a non-zero value.
Otherwise, popd returns false if an invalid option is
encountered, the directory stack is empty, or a non-existent directory stack
entry is specified.
If the popd command is successful, bash runs dirs to
show the final contents of the directory stack, and the return status is
0.
- printf [-v
zmienna] format [argumenty]
- Zapisuje sformatowane argumenty na standardowe wyjście przy
pomocy zadanego formatu. Opcja -v przypisuje wynik do
zmiennej zmienna zamiast wyświetlać je na standardowe
wyjściowe.
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), interpretuje on również
następujące rozszerzenia:
- %b
- powoduje, że printf interpretuje sekwencje ucieczki z
ukośnikiem w danym argumencie w ten sam sposób co
echo -e.
- %q
- powoduje, że printf wysyła odpowiedni argument
w formacie, jaki może być ponownie wykorzystany jako
wejście powłoki.
- %Q
- like %q, but applies any supplied precision to the argument
before quoting it.
- %(format-daty)T
- powoduje, że printf wyświetla łańcuch
daty/czasu jako rezultat użycia formatu-daty jako
łańcucha formatu do strftime(3). Powiązany
argument jest liczba całkowitą
odpowiadającą liczbie sekund od początku epoki
[Uniksa]. Można użyć dwóch specjalnych
wartości argumentu: -1 reprezentuje bieżący czas, a
-2 odpowiada czasowi wywołania powłoki. Jeśli nie
poda się argumentu, konwersja przebiega tak, jak gdyby podano -1.
Jest to wyjątek w zwyczajnym zachowaniu printf.
The %b, %q, and %T directives all use the field width and
precision arguments from the format specification and write that many bytes
from (or use that wide a field for) the expanded argument, which usually
contains more characters than the original.
Argumenty do specyfikacji formatu niebędących
łańcuchami są traktowane jako stałe C, z
wyjątkiem początkowego znaku plus lub minus, który jest
dozwolony oraz przypadku gdy pierwszy znak jest pojedynczym lub
podwójnym apostrofem, gdy wartością jest
wartość ASCII następującego po
cudzysłowie znaku.
W razie potrzeby format wykorzystywany jest ponownie,
aż do obsłużenia wszystkich argumentów.
Jeżeli format wymaga większej ilości
argumentów niż podano, to dodatkowe specyfikacje
formatu zachowują się tak, jakby dostarczono im odpowiednio
wartość zerową lub łańcuch pusty.
Zwracana jest wartość zero w przypadku powodzenia, niezerowa
przy porażce.
- pushd [-n]
[+n] [-n]
- pushd [-n]
[katalog]
- Adds a directory to the top of the directory stack, or rotates the stack,
making the new top of the stack the current working directory. With no
arguments, pushd exchanges the top two elements of the directory
stack. Arguments, if supplied, have the following meanings:
- -n
- Nie wykonuje zwykłej zmiany katalogu podczas obracania lub
dodawania katalogów do stosu, tak że zmieniany jest tylko
stos.
- +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.
- katalog
- Adds dir to the directory stack at the top
After the stack has been modified, if the -n option was not
supplied, pushd uses the cd builtin to change to the directory
at the top of the stack. If the cd fails, pushd returns a
non-zero value.
Otherwise, if no arguments are supplied, pushd returns 0
unless the directory stack is empty. When rotating the directory stack,
pushd returns 0 unless the directory stack is empty or a non-existent
directory stack element is specified.
If the pushd command is successful, bash runs dirs
to show the final contents of the directory stack.
- 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]
[-a anazwa] [-d znak-odst] [-i
tekst] [-n nznaki] [-N nznaki] [-p
zachęta] [-t czas-oczek] [-u fd]
[nazwa ...]
- One line is read from the standard input, or from the file descriptor
fd supplied as an argument to the -u option, split into
words as described above under Word Splitting, and the first word
is assigned to the first name, the second word to the second
name, and so on. If there are more words than names, the remaining
words and their intervening delimiters are assigned to the last
name. If there are fewer words read from the input stream than
names, the remaining names are assigned empty values. The characters in
IFS are used to split the line into words using the
same rules the shell uses for expansion (described above under Word
Splitting). The backslash character (\) may be used to remove
any special meaning for the next character read and for line continuation.
Options, if supplied, have the following meanings:
- -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
- The first character of delim is used to terminate the input line,
rather than newline. If delim is the empty string, read will
terminate a line when it reads a NUL character.
- -e
- If the standard input is coming from a terminal, readline (see
READLINE above) is used to obtain the line. Readline
uses the current (or default, if line editing was not previously active)
editing settings, but uses readline's default filename completion.
- -i tekst
- Gdy do odczytu wiersza jest używane readline, tekst
jest umieszczany w buforze edycyjnym przed rozpoczęciem
edycji.
- -n
nznaki
- read powraca po przeczytaniu nznaki znaków, zamiast
czekać na cały wiersz wejścia, ale przestrzega znaku
odstępu jeśli odczytano mniej niż nznaki
znaków przed odstępem.
- -N nznaki
- Polecenie read powraca pod przeczytaniu dokładnie
nznaków, zamiast czekać na cały wiersz
wejścia, chyba że wystąpił koniec wiersza lub
czas oczekiwania read minął. Znaki odstępu
napotkane w wejściu nie są traktowane w sposób
specjalny i nie powodują powrotu read, dopóki nie
zostanie przeczytanych nznaków. Wynik nie jest dzielony na
znaki w IFS; założenie jest takie, że zmienna
jest przypisywana dokładnie odczytanym znakom (z
wyłączeniem ukośnika; zob. opcja -r
poniżej).
- -p
zachęta
- Wyświetla zachętę (prompt) na standardowym
wyjściu błędów, bez kończącego
znaku nowej linii, przed próbą odczytu wejścia.
Zachęta wyświetlana jest tylko jeśli wejście
pochodzi z terminala.
- -r
- Odwrotny ukośnik nie działa jako znak specjalny. Traktowany
jest jako część wiersza. W
szczególności, para odwrotny ukośnik-znak nowej linii
nie może być następnie 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 czas-oczek sekund nie zostanie przeczytany
pełny wiersz wejścia (lub określona liczba
znaków). Czas-oczek może być liczbą
dziesiętną z częścią
ułamkową po znaku kropce. Opcja działa jedynie gdy
read odczytuje wejście z terminala, potoku lub innego pliku
specjalnego, nie działa natomiast podczas czytania ze
zwykłych plików. Jeśli read przeterminuje
się, read zachowuje odczytane częściowe
wejście do podanej zmiennej nazwa. Jeśli
czas-oczek ustawiono na 0, to read zwraca kod
zakończenia natychmiast, bez próby odczytu jakichkolwiek
danych. Kodem zakończenia jest 0, jeśli wejście jest
dostępne na określonym deskryptorze pliku lub odczyt zwraca
koniec pliku (EOF); albo zwraca kod niezerowy w przeciwnym wypadku. Kod
zakończenia jest większy od 128, jeśli przekroczono
czas oczekiwania.
- -u fd
- Czyta wejście z deskryptora pliku fd.
If no names are supplied, the line read, without the ending
delimiter but otherwise unmodified, is assigned to the variable
REPLY. The exit status is zero, unless end-of-file is
encountered, read times out (in which case the status is greater than
128), a variable assignment error (such as assigning to a readonly variable)
occurs, or an invalid file descriptor is supplied as the argument to
-u.
- readonly
[-aAf] [-p] [nazwa[=słowo] ...]
- 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 indeksowanych, a -A do tablic asocjacyjnych.
Jeśli podano obie opcje, pierwszeństwo ma opcja -A.
Jeśli nie podano argumentów nazw lub jeśli
podano opcję -p, wypisywane jest zestawienie wszystkich nazw
o atrybucie readonly. Inne opcje mogą zostać użyte do
ograniczenia wyniku do podzbioru nazw readonly. Opcja -p powoduje,
że wyniki będą wyświetlane w formacie,
który może być ponownie wykorzystany jako
wejście. Jeśli po nazwie zmiennej występuje
=słowo, to wartość zmiennej jest ustawiana na
słowo. 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 przerywa wykonywanie i zwraca
wartość określoną przez n do
wywołującego. Jeśli pominięto n, kodem
zakończenia jest kod ostatniego polecenia wykonanego w ciele
funkcji. Jeśli return jest wykonywane przez
obsługę pułapki, ostatnie polecenie
służące do określenia statusu jest ostatnim
poleceniem wykonywanym przed obsługą pułapki.
Jeśli return jest wykonywane podczas pułapki
DEBUG, ostatnie polecenie użyte do określenia statusu
jest ostatnim poleceniem wykonanym przez obsługę
pułapki przed tym, zanim wywołano return.
Jeżeli return 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śli poda się n,
zwracaną wartością jest 8 bitów najmniej
znaczących. Kod zakończenia jest niezerowy, jeśli
return poda się argument nienumeryczny lub jeżeli
jest ono użyte poza funkcją i nie podczas wykonywania
skryptu przez . lub source. Wszystkie polecenia
związane z pułapką (trap) RETURN są
wykonywane przez wznowieniem wykonywania po powrocie do funkcji lub
skryptu.
- set
[--abefhkmnptuvxBCEHPT] [-o opcja] [--]
[-] [arg ...]
- set
[+abefhkmnptuvxBCEHPT] [+o opcja] [--]
[-] [arg ...]
- Without options, display the name and value of each shell variable in a
format that can be reused as input for setting or resetting the
currently-set variables. Read-only variables cannot be reset. In posix
mode, only shell variables are listed. The output is sorted according
to the current locale. When options are specified, they set or unset shell
attributes. Any arguments remaining after option processing are treated as
values for the positional parameters and are assigned, in order, to
$1, $2, ... $n. Options, if specified,
have the following meanings:
- -a
- Każdej utworzonej lub zmodyfikowanej zmiennej lub funkcji nadawany
jest atrybut eksportu oraz oznaczane są one jako 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
- Exit immediately if a pipeline (which may consist of a single
simple command), a list, or a compound command (see
SHELL GRAMMAR above), exits with a non-zero status.
The shell does not exit if the command that fails is part of the command
list immediately following a while or until keyword, part of
the test following the if or elif reserved words, part of
any command executed in a && or || list except the
command following the final && or ||, any command in
a pipeline but the last, or if the command's return value is being
inverted with !. If a compound command other than a subshell
returns a non-zero status because a command failed while -e was
being ignored, the shell does not exit. A trap on ERR, if set, is
executed before the shell exits. This option applies to the shell
environment and each subshell environment separately (see
COMMAND EXECUTION ENVIRONMENT above), and may cause
subshells to exit before executing all the commands in the subshell.
Jeśli polecenie złożone lub funkcja
powłoki jest wykonywana w kontekście, w którym
-e jest ignorowane, to żadne z poleceń wykonywanych
w poleceniu złożonym lub ciele funkcji nie zostanie
dotknięte ustawieniem -e, nawet jeśli -e
jest ustawione, a polecenie zwróci kod błędu.
Jeśli polecenie złożone lub funkcja powłoki
ustawi -e w trakcie wykonywania w kontekście, w
którym -e jest ignorowane, to ustawienie nie odniesie
żadnego skutku dopóki polecenie złożone lub
polecenie zawierające wywołanie funkcji nie
zakończy się.
- -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). above). Wszystkie procesy
działają w odrębnej grupie procesów. Gdy
zadanie działające w tle zakończy się,
powłoka wypisuje wiersz zawierający jego 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. Wpływa to również na interfejs
edycyjny używany przez read -e.
- errexit
- To samo, co -e.
- errtrace
- To samo, co -E.
- functrace
- To samo, co -T.
- hashall
- To samo, co -h.
- histexpand
- To samo, co -H.
- history
- Włącza historię poleceń, jak opisano
powyżej above 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 Zmienne powłoki). above).
- 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.
- pipefail
- Gdy ustawione, zwracana wartość potoku jest
wartością ostatniego (po prawej) polecenia, które
zakończyło się z kodem niezerowym lub zero, gdy
wszystkie polecenia w potoku zakończyły się sukcesem.
Opcja jest domyślnie wyłączona.
- posix
- Change the behavior of bash where the default operation differs
from the POSIX standard to match the standard (posix mode). See
SEE ALSO below for a reference to a document that
details how posix mode affects bash's behavior.
- privileged
- To samo, co -p.
- verbose
- To samo, co -v.
- vi
- Używa interfejsu edycji wiersza poleceń w stylu vi.
Wpływa to również na interfejs edycyjny
używany przez read -e.
- 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 zmienne
SHELLOPTS, BASHOPTS,
CDPATH i GLOBIGNORE, jeśli
występują w środowisku, są ignorowane.
Jeśli powłoka została uruchomiona z efektywnym id
użytkownika (grupy) różnym 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.
- -r
- Enable restricted shell mode. This option cannot be unset once it has been
set.
- -t
- Kończy pracę po przeczytaniu i wykonaniu jednego
polecenia.
- -u
- Treat unset variables and parameters other than the special parameters
"@" and "*", or array variables subscripted with
"@" or "*", as an error when performing parameter
expansion. If expansion is attempted on an unset variable or parameter,
the shell prints an error message, and, if not interactive, exits with a
non-zero status.
- -v
- Wypisuje wiersze wejściowe powłoki przy ich
odczytywaniu.
- -x
- Po interpretacji każdego polecenia prostego, poleceń
for, case i select lub polecenia arytmetycznego
for wyświetla zinterpretowaną wartość
PS4, po której następuje polecenie i jego
zinterpretowane argumenty lub powiązana lista
słów.
- -B
- The shell performs brace expansion (see Brace Expansion above).
This is on by default.
- -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
>.
- -E
- Gdy ustawiona, pułapka ERR jest dziedziczona przez funkcje
powłoki, uzupełnienia poleceń i polecenia wykonywane
w środowisku podpowłoki. Pułapka ERR normalnie
nie jest dziedziczona w takich przypadkach.
- -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 rozwiązuje
dowiązań symbolicznych 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.
- -T
- Gdy ustawiona, pułapki DEBUG i RETURN są
dziedziczone przez funkcje powłoki, uzupełnienia
poleceń i polecenia wykonywane w środowisku
podpowłoki. Pułapki DEBUG i RETURN nie
są normalnie dziedziczone w takich przypadkach.
- --
- Jeżeli po tej opcji nie występują żadne
argumenty, to parametry pozycyjne są kasowane. W przeciwnym razie,
parametry pozycyjne ustawiane są na argumenty, nawet
jeśli niektóre z nich zaczynają się od znaku
-.
- -
- Sygnalizuje koniec opcji, powodując przypisanie wszystkich
pozostałych argumentów do parametrów
pozycyjnych. Opcje -x i -v są
wyłączane. Jeżeli nie ma argumentów, to
parametry pozycyjne pozostają bez zmian.
Opcje są domyślnie wyłączone, chyba
że wskazano inaczej. Użycie + zamiast - spowoduje, że
opcje te zostaną wyłączone. Opcje mogą
także zostać określone jako argumenty wywołania
powłoki. Bieżący zestaw opcji można
znaleźć w $-. Zwracanym kodem jest zawsze prawda, chyba
że napotkano nieprawidłową opcję.
- shift
[n]
- Parametrom pozycyjnym od n+1 ... zmienia nazwy na $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 ...]
- Toggle the values of settings controlling optional shell behavior. The
settings can be either those listed below, or, if the -o option is
used, those available with the -o option to the set builtin
command. With no options, or with the -p option, a list of all
settable options is displayed, with an indication of whether or not each
is set; if optnames are supplied, the output is restricted to those
options. The -p option causes output to be displayed in a form that
may be reused as input. Other options have the following meanings:
- -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, shopt pokazuje jedynie te 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:
- assoc_expand_once
- If set, the shell suppresses multiple evaluation of associative array
subscripts during arithmetic expression evaluation, while executing
builtins that can perform variable assignments, and while executing
builtins that perform array dereferencing.
- autocd
- Jeśli jest ustawiona, nazwa polecenia będąca
nazwą katalogu jest wykonywana identycznie, jak gdyby była
argumentem polecenia cd. Opcja ta jest używana tylko w
powłokach interaktywnych.
- 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.
- checkjobs
- If set, bash lists the status of any stopped and running jobs
before exiting an interactive shell. If any jobs are running, this causes
the exit to be deferred until a second exit is attempted without an
intervening command (see JOB CONTROL above). The
shell always postpones exiting if any jobs are stopped.
- checkwinsize
- If set, bash checks the window size after each external
(non-builtin) command and, if necessary, updates the values of
LINES and COLUMNS. This option is
enabled by default.
- cmdhist
- If set, bash attempts to save all lines of a multiple-line command
in the same history entry. This allows easy re-editing of multi-line
commands. This option is enabled by default, but only has an effect if
command history is enabled, as described above under
HISTORY.
- compat31
- compat32
- compat40
- compat41
- compat42
- compat43
- compat44
- compat50
- These control aspects of the shell's compatibility mode (see
SHELL COMPATIBILITY MODE below).
- complete_fullquote
- Gdy ustawiona, bash cytuje wszystkie metaznaki powłoki w
nazwach plików i katalogów w trakcie wykonywania
uzupełniania. Gdy nieustawiona, bash usuwa metaznaki takie
jak znak dolara z zestawu cytowanych znaków w uzupełnianych
nazwach plików, gdy te metaznaki pojawiają się w
odniesieniach do zmiennych powłoki, w słowach do
uzupełnienia. Oznacza to, że znaki dolara w nazwach
zmiennych uzupełnianych do katalogów nie będą
cytowane, jednak znaki dolara pojawiające się w nazwach
plików w ogóle nie będą cytowane. Jest to
aktywne tylko wówczas, gdy bash używa odwrotnego
ukośnika do cytowania uzupełnianych nazw plików.
Zmienna ta jest domyślnie ustawiana, co jest domyślnym
zachowaniem basha w wersjach do 4.2.
- direxpand
- Gdy ustawiona, bash zastępuje nazwy katalogów
wynikami rozwijania słów przy przeprowadzaniu
uzupełnienia nazw plików. W ten sposób zmieniana jest
zawartość bufora edycji readline. Jeśli nie jest
ustawiona, bash stara się zachować
treść wpisaną przez użytkownika.
- dirspell
- Jeżeli jest ustawiona, bash stara się poprawić
pomyłki w nazwach katalogów podczas uzupełniania
słów, jeśli nazwa katalogu wprowadzonego pierwotnie,
nie istnieje.
- dotglob
- If set, bash includes filenames beginning with a `.' in the results
of pathname expansion. The filenames “.” and
“..” must always be matched explicitly, even if
dotglob is set.
- 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
- If set, aliases are expanded as described above under
ALIASES. This option is enabled by default for
interactive shells.
- extdebug
- If set at shell invocation, or in a shell startup file, arrange to execute
the debugger profile before the shell starts, identical to the
--debugger option. If set after invocation, behavior intended for
use by debuggers is enabled:
- 1.
- Opcja -F wbudowanego polecenia declare wyświetla
nazwę pliku źródłowego i numer wiersza
odpowiadający każdej nazwie funkcji podanej jako
argument.
- 2.
- Jeśli polecenie uruchomione przez pułapkę
DEBUG zwraca wartość niezerową, kolejne
polecenie jest pomijane i nie jest wykonywane.
- 3.
- Jeśli polecenie uruchamiane przez pułapkę
DEBUG zwróci wartość 2, a powłoka
wykonywana w podprogramie (funkcja powłoki lub skrypt
powłoki wykonywany wbudowanymi . lub source), to
symulowane jest wywołanie do return.
- 4.
- BASH_ARGC and BASH_ARGV are updated as
described in their descriptions above).
- 5.
- Włączone jest śledzenie funkcji: podstawianie
poleceń, funkcje powłoki i podpowłoki
przywołane za pomocą ( polecenie )
dziedziczą pułapki DEBUG i RETURN.
- 6.
- Włączone jest śledzenie błędów:
podstawianie poleceń, funkcje powłoki i podpowłoki
przywołane za pomocą ( polecenie )
dziedziczą pułapkę ERR.
- extglob
- If set, the extended pattern matching features described above under
Pathname Expansion are enabled.
- extquote
- Jeżeli jest włączona, cytowania
$'łańcuch' and
$"łańcuch" są przeprowadzane
wewnątrz interpretacji ${parametr}
ujętych w podwójne cudzysłowy. Opcja jest
domyślnie włączona.
- failglob
- Jeśli jest włączona, wzorce do których nie
dopasowano nazw plików podczas rozwinięcia nazw
plików, dają w wyniku błąd rozwinięcia
(interpretacji).
- force_fignore
- If set, the suffixes specified by the FIGNORE shell variable
cause words to be ignored when performing word completion even if
the ignored words are the only possible completions. See SHELL
VARIABLES above for a description of FIGNORE.
This option is enabled by default.
- globasciiranges
- If set, range expressions used in pattern matching bracket expressions
(see Pattern Matching above) behave as if in the
traditional C locale when performing comparisons. That is, the current
locale's collating sequence is not taken into account, so b will
not collate between A and B, and upper-case and lower-case
ASCII characters will collate together.
- globskipdots
- If set, pathname expansion will never match the filenames
“.” and “..”, even if the
pattern begins with a “.”. This option is enabled by
default.
- globstar
- Gdy jest ustawiona, wzorzec ** używany w kontekście
rozwijania nazw plików, dopasowuje wszystkie pliki i zero lub
więcej katalogów i podkatalogów. Jeśli po
wzorcu występuje /, to dopasowywane są jedynie
katalogi i podkatalogi.
- gnu_errfmt
- Jeżeli jest ustawiona, komunikaty błędów
powłoki są wypisywane w standardowym formacie
błędów GNU.
- 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
- If set, and readline is being used, bash will attempt to
perform hostname completion when a word containing a @ is being
completed (see Completing under READLINE
above). This is enabled by default.
- huponexit
- Jeżeli jest ustawione, to bash wyśle
SIGHUP do wszystkich zadań podczas
kończenia pracy interaktywnej powłoki
zgłoszeniowej.
- inherit_errexit
- Jeśli jest ustawione, uzupełnianie poleceń dziedziczy
wartość opcji errexit, zamiast kasować
ją w środowisku podpowłoki. Opcja ta jest
włączana jeśli włączony jest tryb
posix.
- If set, allow a word beginning with # to cause that word and all
remaining characters on that line to be ignored in an interactive shell
(see COMMENTS above). This option is enabled by
default.
- lastpipe
- Jeśli jest ustawiona, a kontrola zadań nie jest aktywna,
powłoka uruchamia ostatnie polecenie potoku, który nie jest
wykonywany w tle, w bieżącym środowisku
powłoki.
- 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.
- localvar_inherit
- If set, local variables inherit the value and attributes of a variable of
the same name that exists at a previous scope before any new value is
assigned. The nameref attribute is not inherited.
- localvar_unset
- If set, calling unset on local variables in previous function
scopes marks them so subsequent lookups find them unset until that
function returns. This is identical to the behavior of unsetting local
variables at the current function scope.
- login_shell
- The shell sets this option if it is started as a login shell (see
INVOCATION above). The value may not be
changed.
- 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
- If set, bash matches filenames in a case-insensitive fashion when
performing pathname expansion (see Pathname Expansion above).
- nocasematch
- Gdy jest ustawiona, bash dopasowuje wzorce ignorując
wielkość liter, podczas wykonywania dopasowania, w czasie
wykonywania poleceń warunkowych case lub [[, przy
wykonywaniu interpretacji zastępowania słów
wzorców lub podczas filtrowania możliwych
dopełnień jako części programowalnych
dopełnień.
- noexpand_translation
- If set, bash encloses the translated results of $"..."
quoting in single quotes instead of double quotes. If the string is not
translated, this has no effect.
- nullglob
- If set, bash allows patterns which match no files (see Pathname
Expansion above) to expand to a null string, rather than
themselves.
- patsub_replacement
- If set, bash expands occurrences of & in the replacement
string of pattern substitution to the text matched by the pattern, as
described under Parameter Expansion above. This option is enabled
by default.
- progcomp
- If set, the programmable completion facilities (see Programmable
Completion above) are enabled. This option is enabled by default.
- progcomp_alias
- If set, and programmable completion is enabled, bash treats a
command name that doesn't have any completions as a possible alias and
attempts alias expansion. If it has an alias, bash attempts
programmable completion using the command word resulting from the expanded
alias.
- promptvars
- If set, prompt strings undergo parameter expansion, command substitution,
arithmetic expansion, and quote removal after being expanded as described
in PROMPTING above. This option is enabled by
default.
- restricted_shell
- The shell sets this option if it is started in restricted mode (see
RESTRICTED SHELL below). The value may not be
changed. This is not reset when the startup files are executed, allowing
the startup files to discover whether or not a shell is restricted.
- 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
- If set, the . (source) builtin uses the value of
PATH to find the directory containing the file
supplied as an argument. This option is enabled by default.
- varredir_close
- If set, the shell automatically closes file descriptors assigned using the
{varname} redirection syntax (see REDIRECTION
above) instead of leaving them open when the command completes.
- 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]
- Suspend the execution of this shell until it receives a
SIGCONT signal. A login shell, or a shell without
job control enabled, cannot be suspended; the -f option can be used
to override this and force the suspension. The return status is 0 unless
the shell is a login shell or job control is not enabled and -f is
not supplied.
- test
wyraż
- [ wyraż ]
- Zwraca kod 0 (prawda) lub 1 (fałsz) 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 above w WYRAŻENIA
WARUNKOWE. test nie akceptuje żadnych opcji,
ani nie akceptuje i nie ignoruje argumentu -- jako
wskaźnika końca opcji.
Wyrażenia mogą być łączone
przy użyciu poniższych operatorów, podanych w
kolejności malejącego priorytetu. Ich interpretacja
zależy od liczby argumentów; patrz niżej. Priorytet
operatorów jest używany gdy występuje
pięć argumentów lub więcej.
- ! wyraż
- Prawda jeśli wyraż jest fałszem.
- ( wyraż )
- Zwraca wartość wyraż. Może być
stosowane do obejścia zwykłej kolejności
operatorów.
- wyraż1
-a wyraż2
- Prawda jeśli oba: wyraż1 i wyraż2
są prawdziwe.
- wyraż1
-o wyraż2
- Prawda jeśli wyraż1 lub wyraż2 jest
prawdziwe.
test i [ interpretują wyrażenia
warunkowe posługując się zestawem reguł opartych
o liczbę argumentów.
- 0 argumentów
- Wyrażenie jest fałszywe.
- 1 argument
- Wyrażenie jest prawdziwe wtedy i tylko wtedy gdy argument nie jest
pusty (null).
- 2 argumenty
- Jeśli pierwszym argumentem jest !, to wyrażenie jest
prawdziwe wtedy i tylko wtedy gdy drugi argument jest pusty. Jeśli
pierwszy argument jest jednym z jednoargumentowych operatorów
warunkowych podanych above 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
- Następujące warunki są stosowane w wypisanej
kolejności. Jeżeli drugi argument jest jednym z
dwuargumentowych operatorów warunkowych podanych above w
WYRAŻENIA WARUNKOWE, to wynik wyrażenia jest
wynikiem dwuargumentowego testu z zastosowaniem pierwszego i
trzeciego argumentu jako operandów. Operatory -a i -o
są uważane za dwuargumentowe, jeśli
występują trzy argumenty. 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.
- 4 argumenty
- The following conditions are applied in the order listed. If the first
argument is !, the result is the negation of the three-argument
expression composed of the remaining arguments. the two-argument test
using the second and third arguments. If the first argument is exactly
( and the fourth argument is exactly ), the result is the
two-argument test of the second and third arguments. Otherwise, the
expression is parsed and evaluated according to precedence using the rules
listed above.
- 5 lub więcej argumentów
- Wyrażenie jest poddawanie analizie składni i interpretowane
zgodnie z priorytetami przy zastosowaniu reguł podanych
powyżej.
Gdy operatory < i > są używane z
test lub [, sortują zgodnie z porządkiem
leksykograficznym używając kolejności ASCII.
- 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 (i występuje pojedynczy
sigspec) 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ł argument 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 -l powoduje wypisanie przez powłokę
listy nazw sygnałów i odpowiadających im nazw.
Każdy sigspec jest albo nazwą sygnału
zdefiniowaną w <signal.h> albo numerem sygnału.
Wielkość liter nazw sygnałów nie ma znaczenia,
a przedrostek SIG jest opcjonalny.
If a sigspec is EXIT (0) the command
arg is executed on exit from the shell. If a
sigspec is DEBUG, the command arg is
executed before every simple command, for command,
case command, select command, every arithmetic for
command, and before the first command executes in a shell function (see
SHELL GRAMMAR above). Refer to the description of
the extdebug option to the shopt builtin for details of
its effect on the DEBUG trap. If a sigspec is
RETURN, the command arg is executed each time a
shell function or a script executed with the . or
source builtins finishes executing.
Jeśli sigspec jest ERR,
wówczas polecenie argument wykonywane gdy potok
(mogący składać się z jednego polecenia
prostego), lista, lub polecenie złożone zwróci
niezerowy kod zakończenia. Pułapka zastawiona na
ERR nie jest wykonywana gdy polecenie,
które zakończyło się niepowodzeniem
jest występuje bezpośrednio po słowach kluczowych
while lub until, jest częścią testu
instrukcji if, częścią poleceń
wykonywanych w listach && lub || z
wyjątkiem polecenia za ostatnim && lub ||,
dowolnym poleceniem w potoku z wyjątkiem ostatniego lub
jeśli wartość zwracana przez to polecenie jest
wstawiana za pomocą !. Identyczne warunki są
przestrzegane przez opcję errexit.
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 [-aftpP]
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 ``type -t name'' nie
zwróciłoby file. Opcja -P wymusza na
PATH wyszukiwanie każdego name, nawet
jeśli ``type -t name'' nie zwróciłoby file.
Jeśli polecenie zostało zapamiętane poleceniem hash,
to -p i -P wypisuje jego wartość, który
niekoniecznie jest plikiem pojawiającym się jako pierwszy w
PATH. Jeśli użyto opcji -a, to
type wypisuje wszystkie miejsca zawierające plik wykonywalny
o nazwie nazwa. Aliasy i funkcje są uwzględniane
wyłącznie jeśli nie podano również
opcji -p. Tablica zapamiętanym poleceń nie jest
sprawdzana, jeśli użyto -a. Opcja -f
przesłania funkcję wyszukiwania powłoki jak
wbudowanym command. type zwraca prawdę jeśli
odnaleziono wszystkie argumenty i fałsz, gdy któregoś
z nich nie odnaleziono.
- ulimit [-HS]
-a
- ulimit
[-HS] [-bcdefiklmnpqrstuvxPRT [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 przez zwykłego
użytkownika 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, jeśli to potrzebne. Inne opcje interpretowane są
następująco:
- -a
- Podawane są wszystkie bieżące ograniczenia; nie
są ustawiane limity
- -b
- Maksymalny rozmiar bufora gniazda
- -c
- Maksymalny rozmiar tworzonych plików core
- -d
- Maksymalny rozmiar segmentu danych procesu
- -e
- Maksymalny priorytet planisty ("nice")
- -f
- Maksymalny rozmiar plików zapisywanych przez powłokę
i jej potomków
- -i
- Maksymalna liczba oczekujących sygnałów
- -k
- Maksymalna liczba kqueue które można przypisać
- -l
- Maksymalny rozmiar, jaki może zostać zablokowany w
pamięci
- -m
- Maksymalny rozmiar części rezydentnej (wiele systemów
nie przestrzega tego limitu)
- -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)
- -q
- Maksymalny rozmiar kolejek komunikatów POSIX, w bajtach
- -r
- Maksymalny priorytet rzeczywisty planisty
- -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 i, w niektórych systemach, dla
jej potomków.
- -x
- Maksymalna liczba plików blokad
- -P
- Maksymalna liczba pseudoterminali
- -R
- The maximum time a real-time process can run before blocking, in
microseconds
- -T
- Maksymalna liczba wątków
If limit is given, and the -a option is not used,
limit is the new value of the specified resource. If no option is
given, then -f is assumed. Values are in 1024-byte increments, except
for -t, which is in seconds; -R, which is in microseconds;
-p, which is in units of 512-byte blocks; -P, -T,
-b, -k, -n, and -u, which are unscaled values;
and, when in posix mode, -c and -f, which are in 512-byte
increments. The return status is 0 unless an invalid option or argument is
supplied, or an error occurs while setting a new limit.
- 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]
[-n] [nazwa ...]
- For each name, remove the corresponding variable or function. If
the -v option is given, each name refers to a shell
variable, and that variable is removed. Read-only variables may not be
unset. If -f is specified, each name refers to a shell
function, and the function definition is removed. If the -n option
is supplied, and name is a variable with the nameref
attribute, name will be unset rather than the variable it
references. -n has no effect if the -f option is supplied.
If no options are supplied, each name refers to a variable; if
there is no variable by that name, a function with that name, if any, is
unset. Each unset variable or function is removed from the environment
passed to subsequent commands. If any of
BASH_ALIASES, BASH_ARGV0,
BASH_CMDS, BASH_COMMAND,
BASH_SUBSHELL, BASHPID,
COMP_WORDBREAKS, DIRSTACK,
EPOCHREALTIME, EPOCHSECONDS,
FUNCNAME, GROUPS,
HISTCMD, LINENO,
RANDOM, SECONDS, or
SRANDOM are unset, they lose their special
properties, even if they are subsequently reset. The exit status is true
unless a name is readonly or may not be unset.
- wait [-fn]
[-p varname] [id ...]
- Wait for each specified child process and return its termination status.
Each id may be a process ID or a job specification; if a job spec
is given, all processes in that job's pipeline are waited for. If
id is not given, wait waits for all running background jobs
and the last-executed process substitution, if its process id is the same
as $!, and the return status is zero. If the -n option is
supplied, wait waits for a single job from the list of ids
or, if no ids are supplied, any job, to complete and returns its
exit status. If none of the supplied arguments is a child of the shell, or
if no arguments are supplied and the shell has no unwaited-for children,
the exit status is 127. If the -p option is supplied, the process
or job identifier of the job for which the exit status is returned is
assigned to the variable varname named by the option argument. The
variable will be unset initially, before any assignment. This is useful
only when the -n option is supplied. Supplying the -f
option, when job control is enabled, forces wait to wait for
id to terminate before returning its status, instead of returning
when it changes status. If id specifies a non-existent process or
job, the return status is 127. If wait is interrupted by a signal,
the return status will be greater than 128, as described under
SIGNALS above. Otherwise, the return status is the exit status of
the last process or job waited for.
Bash-4.0 wprowadził pojęcie poziomu
kompatybilności powłoki, określonego jako
zbiór opcji do wbudowanego polecenia powłoki shopt
(compat31, compat32, compat40, compat41 itd.).
Istnieje tylko jeden aktualny poziom kompatybilności — opcje
te się wewnętrznie wykluczają. Poziom
kompatybilności ma pozwolić użytkownikom na
wybór zachowania z poprzednich wersji powłoki, które
jest niekompatybilne z nowszymi wersjami, na czas migracji skryptów
do postaci korzystającej z aktualnych cech i zachowania
powłoki. Z założenia ma to być zatem
rozwiązanie tymczasowe.
Niniejszy rozdział nie wspomina o zachowaniu, które
jest standardem dla danej wersji (np. ustawienie compat32 oznacza,
że cytowanie dokonywane po prawej strony operatora dopasowania
wyrażenia regularnego cytuje specjalne znaki wyrażenia
regularnego w słowie, co jest domyślnym zachowaniem w
powłoce bash-3.2 i kolejnych wersjach).
Jeśli użytkownik włączy np.
compat32, może to wpłynąć na zachowanie
wszystkich wyższych poziomów kompatybilności do
bieżącego poziomu kompatybilności
włącznie. Wynika to z tego, że każdy poziom
kompatybilności kontroluje zachowanie, które uległo
zmianie w danej wersji powłoki bash, lecz które
mogło być obecne w wersjach wcześniejszych. Na
przykład, zmiana polegająca na korzystaniu z
porównań, w oparciu o używane ustawienia
językowe, przy poleceniu [[, pojawiła się w
powłoce bash-4.1, natomiast wcześniejsze wersje
korzystały z porównań ASCII, dlatego
włączenie compat32 włączy
również porównania działające w oparciu o
ASCII. Ta szczegółowość może nie
być wystarczająca we wszystkich zastosowaniach, dlatego z
poziomów kompatybilności należy korzystać
ostrożnie. Proszę zapoznać się z
dokumentacją danej funkcji, aby poznać bieżące
zachowanie.
Bash-4.3 wprowadził nową zmienną
powłoki: BASH_COMPAT. Wartość
przypisana tej zmiennej (jest to dziesiętny numer wersji, taki jak
4.2; albo liczba całkowita odpowiadająca opcji
compatNN, taka jak 42) określa poziom
kompatybilności.
Od wersji bash-4.4, rozpoczęto wycofywanie starszych
poziomów kompatybilności w powłoce Bash. Ostatecznie,
opcje te zostaną usunięte na korzyść stosowania
BASH_COMPAT.
Bash-5.0 jest ostatnią wersją, w której
będą istniały oddzielne opcje shopt dla poprzedniej
wersji. Użytkownicy powinni korzystać z
BASH_COMPAT w powłoce bash-5.0 i kolejnych
wersjach.
Poniższa tabela opisuje zmiany zachowania kontrolowane
przez każde ustawienie poziomu kompatybilności. Znacznik
compatNN jest używany jako skrótowe ukazanie
ustawienia poziomu kompatybilności na NN za pomocą
jednego z następujący mechanizmów. W wersjach
wcześniejszych niż bash-5.0, poziom kompatybilności
można ustawić za pomocą odpowiedniej opcji shopt
compatNN. W powłoce bash-4.3 i
późniejszych, preferowane jest korzystanie ze zmiennej
BASH_COMPAT, natomiast w powłoce bash-5.1 i
późniejszych jest ono wymagane.
- compat31
- •
- quoting the rhs of the [[ command's regexp matching operator (=~)
has no special effect
- compat32
- •
- przerwanie listy poleceń takiej jak "a ; b ; c" powoduje
wykonanie kolejnego polecenia z listy (w powłoce bash-4.0 i
późniejszych, powłoka działa w ten
sposób, jak gdyby otrzymała przerwanie, zatem przerwanie
jednego polecenia listy przerywa wykonanie całej listy)
- compat40
- •
- the < and > operators to the [[ command do not
consider the current locale when comparing strings; they use ASCII
ordering. Bash versions prior to bash-4.1 use ASCII collation and
strcmp(3); bash-4.1 and later use the current locale's collation
sequence and strcoll(3).
- compat41
- w trybie posix, po time mogą występować
opcje i będzie to wciąż rozpoznawane jako
słowo zastrzeżone (jest to interpretacja POSIX nr 267)
- in posix mode, the parser requires that an even number of single
quotes occur in the word portion of a double-quoted parameter
expansion and treats them specially, so that characters within the single
quotes are considered quoted (this is POSIX interpretation 221)
- compat42
- the replacement string in double-quoted pattern substitution does not
undergo quote removal, as it does in versions after bash-4.2
- in posix mode, single quotes are considered special when expanding the
word portion of a double-quoted parameter expansion and can be used
to quote a closing brace or other special character (this is part of POSIX
interpretation 221); in later versions, single quotes are not special
within double-quoted word expansions
- compat43
- the shell does not print a warning message if an attempt is made to use a
quoted compound assignment as an argument to declare (e.g., declare -a
foo='(1 2)'). Later versions warn that this usage is deprecated
- word expansion errors are considered non-fatal errors that cause the
current command to fail, even in posix mode (the default behavior is to
make them fatal errors that cause the shell to exit)
- when executing a shell function, the loop state (while/until/etc.) is not
reset, so break or continue in that function will break or
continue loops in the calling context. Bash-4.4 and later reset the loop
state to prevent this
- compat44
- the shell sets up the values used by BASH_ARGV and
BASH_ARGC so they can expand to the shell's positional
parameters even if extended debugging mode is not enabled
- a subshell inherits loops from its parent context, so break or
continue will cause the subshell to exit. Bash-5.0 and later reset
the loop state to prevent the exit
- variable assignments preceding builtins like export and
readonly that set attributes continue to affect variables with the
same name in the calling environment even if the shell is not in posix
mode
- compat50
- Bash-5.1 changed the way $RANDOM is generated to
introduce slightly more randomness. If the shell compatibility
level is set to 50 or lower, it reverts to the method from bash-5.0 and
previous versions, so seeding the random number generator by assigning a
value to RANDOM will produce the same sequence as in
bash-5.0
- If the command hash table is empty, bash versions prior to bash-5.1
printed an informational message to that effect, even when producing
output that can be reused as input. Bash-5.1 suppresses that message when
the -l option is supplied.
- compat51
- •
- The unset builtin treats attempts to unset array subscripts
@ and * differently depending on whether the array is
indexed or associative, and differently than in previous versions.
Jeśli bash uruchomiony jest pod nazwą
rbash, lub przy jego wywołaniu posłużono
się opcją -r, to staje się powłoką
okrojoną (restricted). Powłoka okrojona służy do
ustawienia środowiska lepiej kontrolowanego niż powłoka
standardowa. Zachowuje się ona identycznie jak bash z
wyjątkiem tego, że poniższe nie są dozwolone lub
nie są wykonywane:
- zmiana katalogów przy pomocy cd
- ustawianie lub kasowanie wartości SHELL,
PATH, HISTFILE,
ENV lub BASH_ENV
- podawanie nazw poleceń zawierających /
- podawanie nazw plików zawierających / jako argumentu
wbudowanego polecenia . (kropka).
- podawanie nazwy pliku zawierającej ukośnik jako argument do
wbudowanego polecenia history.
- podawanie nazwy pliku zawierającej ukośnik jako argument do
opcji -p wbudowanego polecenia hash.
- importowanie definicji funkcji ze środowiska powłoki przy
uruchamianiu
- analiza wartości SHELLOPTS ze środowiska
powłoki przy uruchamianiu
- przekierowywanie wyjścia przy pomocy operatorów >, >|,
<>, >&, &> i >>
- posługiwanie się wbudowanym poleceniem exec w celu
zastąpienia powłoki innym poleceniem
- dodawanie lub usuwanie poleceń przy pomocy opcji -f i
-d wbudowanego polecenia enable
- używanie wbudowanego polecenia enable do
włączania wyłączonych wbudowanych
poleceń powłoki
- podawanie opcji -p wbudowanego polecenia command
- wyłączanie trybu okrojonego za pomocą set +r
lub shopt -u restricted_shell.
Powyższe ograniczenia wymuszane są po przeczytaniu
plików uruchomieniowych.
When a command that is found to be a shell script is executed (see
COMMAND EXECUTION above), rbash
wyłącza wszelkie ograniczenia w powłoce zrodzonej do
wykonania skryptu.
- /bin/bash
- Plik wykonywalny powłoki bash
- /etc/profile
- Ogólnosystemowy plik inicjujący, wykonywany dla
powłok zgłoszeniowych
- /etc/bash.bashrc
- Ogólnosystemowy plik startowy dla powłoki interaktywnej
- /etc/bash.bash.logout
- Ogólnosystemowy plik porządkujący dla powłoki
zgłoszeniowej, wykonywany podczas kończenia przez nią
pracy
- ~/.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
- ~/.bash_history
- Domyślna wartość HISTFILE — pliku, w
którym bash przechowuje historię poleceń
- ~/.inputrc
- Indywidualny plik inicjujący do readline
Brian Fox, Free Software Foundation
bfox@gnu.org
Chet Ramey, Case Western Reserve University
chet.ramey@case.edu
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. Jest ona
zawsze dostępna pod adresem ftp://ftp.gnu.org/pub/gnu/bash/ i
http://git.savannah.gnu.org/cgit/bash.git/snapshot/bash-master.tar.gz.
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.ramey@case.edu.
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ępne 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ść.
Zmienne tablicowe nie mogą być (na razie)
eksportowane.
Może istnieć tylko jeden aktywny koproces w danym
czasie.
Tłumaczenie niniejszej strony podręcznika: Wojtek
Kotwica <wkotwica@post.pl> i Michał Kułach
<michal.kulach@gmail.com>
Niniejsze tłumaczenie jest wolną
dokumentacją. Bliższe informacje o warunkach licencji
można uzyskać zapoznając się z
GNU General
Public License w wersji 3 lub nowszej. Nie przyjmuje się
ŻADNEJ ODPOWIEDZIALNOŚCI.
Błędy w tłumaczeniu strony podręcznika
prosimy zgłaszać na adres listy dyskusyjnej
manpages-pl-list@lists.sourceforge.net.