Provided by: manpages-pl_4.28.0-2_all 

NAZWA
bash - GNU Bourne-Again SHell
SKŁADNIA
bash [opcje] [łańcuch_polecenia | plik]
PRAWA AUTORSKIE
Bash is Copyright (C) 1989-2022 by the Free Software Foundation, Inc.
OPIS
Bash jest zgodnym z sh interpreterem języka poleceń, wykonującym polecenia ze standardowego wejścia bądź
z pliku. Włączono doń również przydatne cechy zaczerpnięte z powłoki Korna i powłoki C (ksh i csh).
Bash w zamierzeniu jest implementacją zgodną z POSIX-ową specyfikacją powłok i narzędzi -- IEEE POSIX
Shell and Utilities specification (IEEE Standard 1003.1). Bash może być skonfigurowany w ten sposób, aby
był domyślnie zgodny z normą POSIX.
OPCJE
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ę.
ARGUMENTY
Jeśli po przetworzeniu opcji pozostają jakieś argumenty, a nie podano ani opcji -c ani -s, to zakłada
się, że pierwszy argument jest nazwą pliku zawierającego polecenia powłoki. Jeżeli bash został wywołany w
taki sposób, to $0 przypisywana jest nazwa pliku z poleceniami, a parametrom pozycyjnym pozostałe
argumenty. Bash odczytuje i wykonuje polecenia z tego pliku, a następnie kończy pracę. Kod zakończenia
basha jest wówczas kodem zakończenia ostatniego wykonanego polecenia skryptu. Jeśli nie wykonano żadnego
polecenia, to kod zakończenia wynosi 0. 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.
WYWOŁANIE
Powłoka zgłoszeniowa (login shell) to taka, w której pierwszym znakiem zerowego argumentu jest -, lub
taka, którą uruchomiono z opcją --login.
Powłoka interaktywna to taka, którą uruchomiono bez argumentów innych niż opcje (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.
DEFINICJE
W pozostałej części tego dokumentu używane są poniższe definicje.
odstęp Spacja lub znak tabulacji.
słowo Sekwencja znaków uważana przez powłokę za pojedynczą jednostkę. Znana też jako token.
nazwa Jest to słowo składające się wyłącznie ze znaków alfanumerycznych i znaków podkreślenia, i
rozpoczynające się znakiem alfabetycznym lub podkreśleniem. Wspominane również jako identyfikator.
metaznak
Znak, któ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 [[ ]]
GRAMATYKA POWŁOKI
Niniejszy rozdział opisuje składnię różnych postaci poleceń powłoki.
Polecenia proste
Polecenie proste jest sekwencją opcjonalnych przypisań zmiennych, po której następują rozdzielane przez
odstęp słowa i przekierowania, a zakończoną operatorem sterującym. Pierwsze słowo określa polecenie,
jakie ma zostać wykonane i jest przekazywane jako argument numer zero. Pozostałe słowa są przekazywane
jako argumenty wywoływanego polecenia.
Wartością zwracaną polecenia prostego jest jego kod zakończenia lub 128+n jeżeli polecenie przerwane jest
sygnałem n.
Potoki
Potok jest sekwencją jednego lub więcej poleceń rozdzielonych 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.
Listy
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ć
polecenie1 && polecenie2
polecenie2 wykonywane jest wtedy, i tylko wtedy, gdy polecenie1 zwraca zerowy kod zakończenia (sukces).
Lista OR ma postać
polecenie1 ⎪⎪ polecenie2
polecenie2 jest wykonywane wtedy, i tylko wtedy, gdy polecenie1 zwraca niezerowy kod zakończenia. Kod
zwracany przez listy AND i OR jest kodem zakończenia ostatniego wykonanego polecenia listy.
Polecenia złożone
Polecenie złożone 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.
Procesy współbieżne
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.
Definiowanie funkcji powłoki
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.)
KOMENTARZE
W powłoce nie-interaktywnej lub w powłoce interaktywnej, w której włączono opcję interactive_comments do
opcji wbudowanych shopt (zobacz WBUDOWANE POLECENIA POWŁOKI poniżej) słowo rozpoczynające się od znaku #
powoduje, że słowo to i wszystkie pozostałe znaki w tym wierszu będą ignorowane. Powłoka interaktywna bez
włączonej opcji interactive_comments nie pozwala na komentarze. Opcja interactive_comments jest domyślnie
włączona w powłokach interaktywnych.
CYTOWANIE
Cytowanie służy do usuwania specjalnego znaczenia dla powłoki pewnych znaków lub słów. Cytowanie można
stosować do wyłączania specjalnego traktowania znaków specjalnych, zapobiegania rozpoznawaniu słów
zastrzeżonych jako takich oraz do zapobiegania podstawianiu parametrów.
Każdy z metaznaków podanych powyżej w DEFINICJACH posiada dla powłoki specjalne znaczenie i musi być
cytowany, jeśli ma oznaczać samego siebie.
Gdy używane są funkcje interpretacji historii poleceń (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.
PARAMETRY
Parametr jest elementem przechowującym wartości. Może on być nazwą, liczbą lub jednym ze znaków
specjalnych podanych poniżej w sekcji Parametry specjalne. Dla celów powłoki zmienna jest parametrem
oznaczanym przez nazwę. Zmienna posiada wartość i zero lub więcej atrybutów. Wartość atrybutom
przypisuje się za pomocą polecenia wbudowanego declare (zobacz opis tego polecenia poniżej, w sekcji
WBUDOWANE POLECENIA POWŁOKI).
Parametr jest ustawiony jeśli przypisano mu wartość. Łańcuch pusty jest poprawną wartością. Po ustawieniu
zmiennej, może być ona unieważniona wyłącznie przez użycie wbudowanego polecenia unset (zobacz poniżej
WBUDOWANE POLECENIA POWŁOKI ).
Do zmiennej można wykonać przypisanie przy pomocy instrukcji postaci
nazwa=[wartość]
Jeżeli nie podano wartości, to zmiennej przypisywany jest łańcuch pusty. Wszystkie wartości przechodzą
przez interpretację tyld, podstawianie parametrów, interpretację zmiennych, podstawianie wyników poleceń,
interpretację wyrażeń arytmetycznych i usuwanie cytowań (zobacz poniżej INTERPRETACJA). Jeżeli zmienna ma
ustawiony atrybut integer (całkowita), to wartość podlega interpretacjom wyrażeń arytmetycznych, nawet
jeśli nie użyto interpretacji $((...)). Zobacz poniżej Interpretacja wyrażeń arytmetycznych. Nie jest
wykonywane dzielenie na słowa, 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.
Parametry pozycyjne
Parametr pozycyjny to parametr określany cyfrą lub cyframi, innymi niż pojedyncza cyfra 0. Parametrom
pozycyjnym nadawane są wartości argumentów powłoki (w czasie jej wywołania). Wartości te mogą być
ponownie nadawane przy pomocy wbudowanego polecenia set. Do parametrów pozycyjnych nie można wykonać
przypisania przy pomocy instrukcji przypisania. Parametry pozycyjne są tymczasowo zastępowane podczas
wykonywania funkcji powłoki (zobacz poniżej FUNKCJE).
Jeżeli interpretowany jest parametr pozycyjny określany więcej niż jedną cyfrą, to musi być ujęty w
nawiasy (zobacz poniżej INTERPRETACJA).
Parametry specjalne
Powłoka kilka parametrów traktuje specjalnie. Do parametrów tych można się wyłącznie odwoływać; nie jest
dozwolone przypisywanie im wartości.
* Interpretowane jest jako parametry pozycyjne, począwszy od pierwszego. Gdy interpretacja 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.
Zmienne powłoki
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_VERSINFO[0] Główny numer wersji, wydanie (release).
BASH_VERSINFO[1] Poboczny numer wersji (version).
BASH_VERSINFO[2] Poziom łat (patch level).
BASH_VERSINFO[3] Wersja kompilatu (build version).
BASH_VERSINFO[4] Status wydania (np. beta1).
BASH_VERSINFO[5] Wartość MACHTYPE.
BASH_VERSION
Interpretowane jako łańcuch opisujący wersję uruchomionego bash.
COMP_CWORD
Indeks w ${COMP_WORDS} słowa zawierającego bieżącą pozycję kursora. Zmienna ta jest dostępna
wyłącznie w funkcjach powłoki wywołanych przez usługi programowalnego uzupełniania (zobacz poniżej
Programowalne uzupełnianie).
COMP_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.
Tablice
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
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
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).
Interpretacja tyldy
Jeżeli słowo rozpoczyna się niecytowanym znakiem tyldy (`~'), to wszystkie znaki poprzedzające pierwszy
niecytowany ukośnik (lub wszystkie znaki, gdy nie ma ukośnika) uważane są za przedrostek tyldy
(tilde-prefix). Jeżeli żaden ze znaków w przedrostku tyldy nie jest cytowany, to jego znaki następujące
po znaku tyldy traktowane są jako możliwa nazwa logowania (login name). Jeśli ta nazwa logowania jest
łańcuchem pustym, to tylda zastępowana jest wartością parametru powłoki HOME. Jeżeli HOME nie jest
ustawione, to podstawiany jest za nie katalog domowy użytkownika uruchamiającego powłokę. W przeciwnym
wypadku, przedrostek tyldy zastępowany jest katalogiem domowym skojarzonym z określoną nazwą logowania.
Jeśli przedrostkiem tyldy jest `~+', to jest on zastępowany wartością zmiennej PWDpowłoki. Jeśli
przedrostkiem tyldy jest `~-', to jest on zastępowany wartością zmiennej powłoki OLDPWD, jeśli jest ona
ustawiona. Jeżeli występujące w przedrostku po tyldzie znaki składają się z liczby N, opcjonalnie
poprzedzonej przez `+' lub `-', to przedrostek tyldy zastępowany jest odpowiednim elementem stosu
katalogów, jaki zostałby wyświetlony przez wbudowane dirs, wywołane z przedrostkiem tyldy jako
argumentem. Jeżeli w przedrostku tyldy znaki występujące po tyldzie składają się z liczby bez
początkowego `+' lub `-', to przyjmowane jest `+'.
Jeśli nazwa logowania jest nieprawidłowa lub interpretacja tyldy nie powiodła się, to słowo z tyldą
pozostaje niezmienione.
Każde z przypisań do zmiennej sprawdzane jest na obecność niecytowanych przedrostków tyldy występujących
bezpośrednio po : lub =. W tych przypadkach również jest wykonywana jest interpretacja tyldy. Na skutek
tego, można posługiwać się nazwami plików z tyldami w przypisaniach do PATH, MAILPATH i CDPATH, a powłoka
przypisze zinterpretowaną wartość.
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.
Podstawianie parametrów
Znak `$' wprowadza podstawianie parametrów, podstawianie wyników poleceń i interpretację wyrażeń
arytmetycznych. Podlegająca interpretacji nazwa parametru lub symbol mogą być ujęte w nawiasy klamrowe,
które są opcjonalne, ale służą do ochrony interpretowanej zmiennej przed znakami, jakie występują
bezpośrednio po niej, a które mogłyby zostać zinterpretowane jako część nazwy.
Gdy używane są nawiasy, pasującym nawiasem kończącym jest pierwszy `}', nie chroniony przez odwrotny
ukośnik, nie znajdujący się wewnątrz cytowanego łańcucha ani 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:
$(polecenie)
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
Interpretacja wyrażeń arytmetycznych pozwala na obliczanie wyrażeń arytmetycznych i podstawianie wyniku.
Format interpretacji arytmetycznej:
$((wyrażenie))
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.
Podział na słowa
Powłoka przeszukuje wyniki interpretacji parametrów, podstawiania poleceń i interpretacji wyrażeń
arytmetycznych, które nie pojawiają się wewnątrz cudzysłowów, w celu przeprowadzenia podziału na słowa.
Powłoka traktuje każdy znak IFS jak separator i 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ł.
Rozwijanie nazw plików (Pathname Expansion)
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.
Usunięcie cytowań
Po poprzednich interpretacjach, wszystkie niecytowane wystąpienia znaków \, ' i ", które nie wynikły z
jednej z powyższych interpretacji, są usuwane.
PRZEKIEROWANIE
Przed wykonaniem polecenia, jego wejście i wyjście mogą zostać przekierowane przy pomocy specjalnej
notacji interpretowanej przez powłokę. 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
ls > dirlist 2>&1
kieruje zarówno standardowe wyjście jak i wyjście diagnostyczne (stderr) do pliku dirlist, podczas gdy
polecenie
ls 2>&1 > dirlist
kieruje tylko standardowe wyjście do pliku dirlist, gdyż wyjście błędów zostało zduplikowane jako
standardowe wyjście przed przekierowaniem wyjścia do dirlist.
Bash obsługuje 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
Przekierowanie wejścia powoduje otwarcie do odczytu pliku, którego nazwa wynika z interpretacji słowa.
Odczyt będzie wykonywany z deskryptora pliku n lub standardowego wejścia (zerowy deskryptor pliku) jeśli
nie podano n.
Ogólny format przekierowania wejścia:
[n]<słowo
Przekierowanie wyjścia
Przekierowanie wyjścia powoduje otwarcie do zapisu pliku, którego nazwa wynika z interpretacji słowa.
Zapis będzie wykonywany z deskryptora pliku n lub standardowego wyjścia (deskryptor pliku 1) jeśli nie
podano n. Jeżeli plik nie istnieje jest tworzony; jeżeli istnieje obcinany jest do rozmiaru zerowego.
Ogólny format przekierowania wyjścia:
[n]>słowo
Jeżeli operatorem przekierowania jest >, a została włączona opcja noclobber wbudowanego 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:
[n]>>słowo
Przekierowanie standardowego wyjścia i wyjścia błędów
Bash pozwala, przy pomocy tej konstrukcji, przekierować standardowe wyjście (deskryptor pliku 1) i
standardowe wyjście błędów (deskryptor plików 2) do pliku, którego nazwą jest zinterpretowane słowo.
Istnieją dwie postaci takiego przekierowania:
&>słowo
i
>&słowo
Spośród nich, zalecaną jest pierwsza forma. Jest ona semantycznie równoważna
>słowo 2>&1
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:
&>>słowo
Jest to semantycznie równoważne
>>słowo 2>&1
(zob. Powielanie deskryptorów plików poniżej).
Dokumenty włączone (Here Documents)
Ten typ przekierowania instruuje powłokę, by czytała wejście z bieżącego źródła aż do napotkania wiersza
zawierającego tylko słowo (bez żadnych kończących odstępów). Wszystkie wiersze przeczytane do tego
momentu są następnie używane jako standardowe wejście (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:
[n]<<<słowo
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).
Powielanie deskryptorów plików
Operator przekierowania
[n]<&słowo
służy do powielania deskryptorów plików wejściowych. Jeżeli słowo zinterpretowane zostanie jako jedna
lub więcej cyfr, to deskryptor pliku oznaczony przez n czyniony jest kopią tego deskryptora. Jeżeli
cyfry w słowie nie określają otwartego dla wejścia deskryptora, pojawia się błąd przekierowania. Jeżeli
słowo zinterpretowane jest jako -, deskryptor pliku n jest zamykany. Jeżeli n nie zostało określone, to
stosowane jest standardowe wejście (deskryptor pliku 0).
Operator
[n]>&słowo
podobnie, służy do powielania deskryptorów standardowego wyjścia. Jeżeli nie określono n, stosowane jest
standardowe wyjście (deskryptor pliku 1). Jeżeli cyfry w słowie nie określają deskryptora pliku otwartego
do wyjścia, pojawia się błąd przekierowania. 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.
Przenoszenie deskryptorów plików
Operator przekierowania
[n]<&słowo-
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
[n]>&słowo-
przenosi deskryptor pliku słowo do deskryptora pliku n lub, jeśli nie podano n, na standardowe wyjście
(deskryptor pliku 1).
Otwieranie deskryptorów plików do odczytu i zapisu
Operator przekierowania
[n]<>słowo
powoduje, że plik o nazwie wynikłej z interpretacji słowa zostanie otwarty do odczytu i zapisu. Odczyt i
zapis będą wykonywane z deskryptora pliku n lub standardowego wejścia (deskryptor pliku 0) jeśli nie
podano n. Jeżeli plik nie istnieje, to jest tworzony.
ALIASY
Aliasy (czyli synonimy) pozwalają na zastąpienie słowa łańcuchem, gdy zostanie ono użyte jako pierwsze
słowo w poleceniu prostym. Powłoka utrzymuje listę aliasów, które mogą być ustawiane i unieważniane przy
pomocy wbudowanych poleceń alias i unalias (zobacz poniżej WBUDOWANE POLECENIA POWŁOKI). Dla pierwszego
słowa każdego polecenia, jeśli nie jest cytowane, następuje sprawdzenie, czy posiada ono alias. Jeżeli
tak, to słowo to jest zastępowane tekstem aliasu. 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.
FUNKCJE
Punkcja powłoki, zdefiniowana jak opisano powyżej, w sekcji GRAMATYKA POWŁOKI, przechowuje szereg poleceń
do późniejszego wykonania. Gdy nazwa funkcji powłoki używana jest jako nazwa polecenia prostego,
wykonywana jest lista poleceń związanych z tą nazwą funkcji. Funkcje wykonywane są w kontekście bieżącej
powłoki; do ich interpretacji nie jest tworzony żaden nowy proces (zauważ różnicę w stosunku do wykonania
skryptu powłoki). Podczas wykonywania funkcji, przekazane jej argumenty stają się parametrami
pozycyjnymi. Aktualizowany jest specjalny parametr #, tak by odzwierciedlał zmianę. Parametr pozycyjny 0
nie jest zmieniany. Zmienna FUNCNAME podczas wykonywania funkcji ustawiana jest na jej nazwę.
Wszystkie inne aspekty środowiska wykonywania powłoki są identyczne między funkcją i jej wywołującym, z
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ń.
OBLICZANIE WYRAŻEŃ ARYTMETYCZNYCH
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
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).
INTERPRETACJA POLECEŃ PROSTYCH
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.
WYKONYWANIE POLECEŃ
Po podziale polecenia na słowa, jeśli jego wynikiem jest polecenie proste z opcjonalną listą argumentów,
podejmowane są poniższe akcje.
Jeśli polecenie nie zawiera ukośników, powłoka usiłuje je zlokalizować. Jeżeli istnieje funkcja powłoki
o tej nazwie, wywoływana jest ta funkcja, jak opisano powyżej w sekcji FUNKCJE. Jeżeli nazwa nie pasuje
do funkcji, powłoka szuka jej na liście poleceń wbudowanych. Jeżeli 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.
STATUS ZAKOŃCZENIA
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.
SYGNAŁY
Gdy bash jest interaktywny, przy braku jakichkolwiek pułapek (przechwytywania sygnałów), ignoruje on
SIGTERM (tak, że kill 0 nie zabija powłoki interaktywnej), a SIGINT jest przechwytywany i obsługiwany
(tak, że wbudowane polecenie wait daje się przerwać). We wszystkich przypadkach, bash ignoruje SIGQUIT.
Jeżeli działa kontrola zadań, bash ignoruje SIGTTIN, SIGTTOU i SIGTSTP.
Zadania synchroniczne uruchomione przez bash mają procedury obsługi sygnałów (signal handlers) ustawione
na wartości odziedziczone przez powłokę po rodzicu. Jeżeli nie pracuje kontrola zadań, to polecenia
asynchroniczne ignorują również SIGINT i SIGQUIT. Polecenia uruchamiane wskutek podstawiania poleceń
ignorują generowane z klawiatury sygnały kontroli zadań SIGTTIN, SIGTTOU i SIGTSTP.
Powłoka domyślnie kończy pracę po otrzymaniu SIGHUP. Przed zakończeniem, powłoka interaktywna rozsyła
otrzymany SIGHUP do wszystkich zadań, pracujących lub zatrzymanych. Do zatrzymanych zadań wysyłany jest
SIGCONT by upewnić się, że otrzymują SIGHUP. Chcąc uniknąć wysłania sygnału przez powłokę do konkretnego
zadania, należy usunąć je z tablicy zadań przy pomocy wbudowanego polecenia disown (zobacz poniżej
WBUDOWANE POLECENIA POWŁOKI) lub oznakować, by nie otrzymywało SIGHUP, posługując się disown -h.
Jeżeli przy pomocy shopt została ustawiona opcja huponexit powłoki, bash wysyła SIGHUP do wszystkich
zadań, gdy kończy pracę interaktywna powłoka zgłoszeniowa.
Gdy bash podczas oczekiwania na ukończenie polecenia otrzymuje sygnał, dla którego ustawiono pułapkę,
pułapka ta nie zostanie wykonana aż do zakończenia pracy polecenia. Gdy bash oczekuje na polecenie
asynchroniczne za pośrednictwem wbudowanego wait, odbiór sygnału, dla którego ustawiono przechwytywanie
spowoduje, że wbudowane wait natychmiast skończy pracę z kodem większym od 128, po czym natychmiast
zostanie wywołana pułapka.
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Ń
Kontrola zadań odnosi się do możliwości selektywnego zatrzymywania (zawieszania - suspend) wykonywania
procesów i późniejszej kontynuacji (wznawiania - resume) ich wykonywania. Użytkownik zwykle wykorzystuje
to udogodnienie za pośrednictwem interaktywnego interfejsu obsługiwanego wspólnie przez systemowy
sterownik terminala i bash.
Powłoka kojarzy z każdym potokiem zadanie. Przechowuje tablicę aktualnie wykonywanych zadań, którą można
przeglądać za pomocą polecenia jobs. Gdy bash uruchamia zadanie asynchronicznie (w tle), wypisuje wiersz
w rodzaju:
[1] 25647
wskazujący, że zadanie to ma numer 1 a ID ostatniego procesu w potoku związanym z zadaniem wynosi 25647.
Wszystkie procesy w jednym potoku należą do tego samego zadania. Bash posługuje się abstrakcją
(abstraction) zadania jako podstawą kontroli zadań.
Dla ułatwienia implementacji interfejsu użytkownika do kontroli zadań, system operacyjny utrzymuje
pojęcie ID grupy procesów bieżącego terminala (current terminal process group ID). Elementy tej grupy
procesów (procesy, których ID grupy procesów jest równy ID grupy procesów bieżącego terminala) otrzymują
generowane z klawiatury sygnały, takie jak SIGINT. Mówimy, że procesy te pracują pierwszoplanowo.
Procesy tła to takie, których ID grupy procesów różni się od terminala; procesy takie są odporne na
sygnały pochodzące z klawiatury. Tylko procesom pierwszoplanowym wolno czytać 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.
ZACHĘTA POWŁOKI
Przy wykonywaniu interaktywnym bash wyświetla główny symbol zachęty (primary prompt) PS1 kiedy jest
gotowa na odczyt polecenia, zaś wtórną (secondary) zachętę PS2 kiedy potrzebuje więcej danych z wejścia
do uzupełnienia polecenia. Bash 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.
READLINE
Jest to biblioteka obsługująca odczytywanie wejścia podczas posługiwania się powłoką interaktywną, chyba
że przy wywołaniu powłoki podano opcję --noediting. Domyślnie, polecenia edycji wiersza są podobne do
występujących w Emacsie. Dostępny jest także interfejs edycji wiersza w stylu vi. 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).
Notacja Readline
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).
Inicjalizacja Readline
Readline dostosowywane jest przy pomocy poleceń umieszczanych w pliku inicjującym (plik inputrc). Nazwa
tego pliku brana jest z wartości zmiennej INPUTRC. Jeżeli zmienna ta nie jest ustawiona, domyślną nazwą
jest ~/.inputrc. 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).
Przypisania klawiszy Readline
Składnia przypisań klawiszy sterujących w pliku inputrc jest prosta. Wymagana jest wyłącznie nazwa
polecenia lub tekst makra i sekwencja klawiszy, do której powinno być przypisane. Klawisze mogą być
podane na dwa sposoby: jako symboliczna nazwa klawisza, może być z przedrostkami Meta- lub Control-, lub
jako sekwencja klawiszy.
Przy użyciu postaci nazwa-klaw:nazwa-funkcji lub makro, nazwa-klaw jest nazwą klawisza zapisaną w
jęz.angielskim. Na przykład:
Control-u: universal-argument
Meta-Rubout: backward-kill-word
Control-o: "> output"
W powyższym przykładzie, C-u przypisane jest do funkcji universal-argument, M-DEL przypisane jest do
funkcji backward-kill-word a C-o przypisane do uruchamiania makra wyrażonego po prawej (to jest,
wstawiania tekstu ``> output'' w wiersz).
W drugiej postaci, "sekw-klaw":nazwa-funkcji lub makro, sekw-klaw różni się od nazwa-klaw powyżej tym, że
przez umieszczenie sekwencji w cudzysłowach można podać łańcuchy oznaczające całą sekwencję klawiszy.
Można posłużyć się niektórymi kombinacjami klawiszy w stylu GNU Emacs-a, jak w poniższym przykładzie, nie
są jednak rozpoznawane symboliczne nazwy znaków:
"\C-u": universal-argument
"\C-x\C-r": re-read-init-file
"\e[11~": "Klawisz funkcyjny 1"
W tym przykładzie, C-u jest ponownie przypisane do funkcji universal-argument. C-x C-r przypisane jest
do funkcji re-read-init-file, zaś ESC [ 1 1 ~ przypisane jest do wstawienia tekstu ``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).
Zmienne Readline
Readline posiada zmienne, których można używać do dodatkowego dostosowania jej zachowania. Zmienna może
być ustawiana w pliku inputrc przy pomocy instrukcji postaci
set nazwa-zmiennej wartość
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.
comment-begin (,,#”)
Łańcuch wstawiany, gdy wykonywane jest polecenie insert-comment readline. Polecenie to jest
przypisane do M-# w trybie emacs, zaś do # w trybie vi.
completion-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.
menu-complete-display-prefix (Off)
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).
Konstrukcje warunkowe Readline
Readline implementuje udogodnienie podobne duchem do funkcji kompilacji warunkowej preprocesora C,
pozwalające na wykonywanie przypisań klawiszy i ustawień zmiennych w zależności od wyniku testów. Używane
są cztery dyrektywy analizatora składni.
$if Konstrukcja $if pozwala na wykonanie przypisań klawiszy w oparciu o tryb edycji, używany terminal
lub aplikację korzystającą z readline. Tekst testu rozciąga się do końca wiersza; do jego
wydzielenia nie są wymagane żadne znaki.
mode Postać mode= dyrektywy $if służy do sprawdzania czy readline jest w trybie emacs czy vi.
Może być wykorzystywana, na przykład, w połączeniu z poleceniem set keymap, do ustawienia
przypisań w mapowaniach emacs-standard i emacs-ctlx tylko jeśli readline uruchamia się w
trybie emacs.
term Postać term= można wykorzystywać do włączenia specyficznych dla terminala przypisań
klawiszy, być może do przypisania wyjścia dla sekwencji klawiszy funkcyjnych terminala.
Słowo po prawej stronie = sprawdzane jest z zarówno pełną nazwą terminala, jaki i częścią
jego nazwy przed pierwszym -. Umożliwia to, na przykład, dopasowanie przez sun zarówno sun
jak i sun-cmd.
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:
$include /etc/inputrc
Wyszukiwanie
Readline zapewnia polecenia do wyszukiwania w historii poleceń (zobacz poniżej HISTORIA) wierszy
zawierających zadany łańcuch. Istnieją dwa tryby wyszukiwania: krokowy (incremental) i nie-niekrokowy
(non-incremental).
Wyszukiwania krokowe rozpoczynają się przed zakończeniem wpisywania przez użytkownika szukanego tekstu.
Po wpisaniu każdego znaków szukanego łańcucha readline wyświetla następną pozycję historii pasującą do
wpisanego do tej pory łańcucha. Wyszukiwanie krokowe wymaga tylko tylu znaków ile potrzebne jest do
znalezienia pożądanej pozycji historii. Znaki występujące w wartości zmiennej isearch-terminators służą
do przerwania wyszukiwania krokowego. Jeżeli zmienna ta nie ma przypisanej wartości, to wyszukiwanie
przerywają znaki Escape i Control-J. Control-G porzuca wyszukiwanie krokowe i przywraca pierwotny
wiersz. Gdy przerwie się wyszukiwanie, pozycja historii zawierająca poszukiwany łańcuch staje się
bieżącym wierszem.
W celu odnalezienia innych pasujących pozycji, należy nacisnąć odpowiednio Control-S lub Control-R.
Wyszukuje to wstecz lub w przód kolejną pasującą do dotychczas wpisanego łańcucha pozycję historii.
Wszystkie inne sekwencje klawiszy przypisane do polecenia readline przerywają wyszukiwanie i wykonują
zadane polecenie. Na przykład, znak nowej linii przerywa wyszukiwanie i akceptuje wiersz, wykonując
skutkiem tego polecenie z listy historii.
Readline pamięta łańcuch użyty w ostatnim wyszukiwaniu krokowym. Jeżeli Control-R zostanie naciśnięte dwa
razy, bez wprowadzenia pomiędzy naciśnięciami innych znaków definiujących nowy łańcuch szukania, to
wykorzystywany jest uprzednio zapamiętany łańcuch.
Wyszukiwania nie-krokowe czytają cały szukany łańcuch przed rozpoczęciem wyszukiwania pasujących wierszy
historii. Łańcuch może być wpisany przez użytkownika lub być częścią zawartości bieżącego wiersza.
Nazwy poleceń Readline
Poniżej podano listę nazw poleceń i domyślnych sekwencji klawiszy, do których są one przypisane. Nazwy
poleceń bez towarzyszącej sekwencji klawiszy są domyślnie nieprzypisane. W poniższych opisach, punkt
oznacza bieżącą pozycję kursora, zaś zaznaczenie do pozycji kursora zapamiętanej przez polecenie
set-mark. Tekst pomiędzy punktem a zaznaczeniem nazywany jest obszarem.
Polecenia ruchu
beginning-of-line (C-a)
Przesuwa na początek bieżącego wiersza.
end-of-line (C-e)
Przesuwa na koniec wiersza.
forward-char (C-f)
Przesuwa o znak w przód.
backward-char (C-b)
Przesuwa o znak wstecz.
forward-word (M-f)
Przesuwa na koniec następnego słowa. Słowa złożone są ze znaków alfanumerycznych (liter i cyfr).
backward-word (M-b)
Przesuwa na początek bieżącego, lub poprzedniego, słowa. Słowa złożone są ze znaków
alfanumerycznych (liter i cyfr).
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.
Polecenia operujące na historii
accept-line (Newline, Return)
Akceptuje wiersz bez względu na to, gdzie znajduje się kursor. Jeżeli wiersz ten nie jest pusty,
to dodaje go do listy historii stosownie do stanu zmiennej HISTCONTROL. Jeżeli wiersz jest
zmienionym wierszem historii, to odtwarza wiersz historii do stanu pierwotnego.
previous-history (C-p)
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.
Polecenia zmiany tekstu
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.
Usuwanie i wklejanie
kill-line (C-k)
Usuwa tekst od punktu do końca wiersza.
backward-kill-line (C-x Rubout)
Usuwa wstecz do początku wiersza.
unix-line-discard (C-u)
Usuwa wstecz od punktu do początku wiersza. Usuwany tekst jest zachowywany na stosie usunięć.
kill-whole-line
Usuwa wszystkie znaki bieżącego wiersza, bez względu na położenie punktu.
kill-word (M-d)
Usuwa od punktu do końca bieżącego słowa, lub jeśli użyte pomiędzy słowami, do końca następnego
słowa. Granice słów są takie same, jak używane przez forward-word.
backward-kill-word (M-Rubout)
Usuwa słowo sprzed punktu. Granice słów są takie same, jak używane przez backward-word.
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.
Argumenty numeryczne
digit-argument (M-0, M-1, ..., M--)
Dodaje tę cyfrę do już składanego argumentu lub rozpoczyna nowy argument. M-- rozpoczyna argument
ujemny.
universal-argument
Jest to inna metoda podawania argumentu. Jeżeli po tym poleceniu występuje jedna lub więcej cyfr,
z opcjonalnym początkowym znakiem minus, to cyfry te definiują argument. Jeżeli po poleceniu
występują cyfry, to powtórne wykonanie universal-argument kończy argument numeryczny, ale w
przeciwnym wypadku jest ignorowane. W przypadku specjalnym, jeżeli bezpośrednio po tym poleceniu
występuje znak nie będący ani cyfrą ani znakiem minus, to argument licznik dla następnego
polecenia mnożony jest przez cztery. Argument licznik [zwykle powtórzeń] wynosi początkowo
cztery, toteż wykonanie tej funkcji po raz pierwszy nadaje mu wartość cztery, po raz drugi
szesnaście, i tak dalej.
Uzupełnianie
complete (TAB)
Usiłuje przeprowadzić uzupełnianie tekstu przed punktem. Bash próbuje uzupełniania traktując
tekst kolejno: jako zmienną (jeżeli tekst zaczyna się od $), nazwę użytkownika (jeśli tekst
zaczyna się od ~), nazwę hosta (jeśli tekst zaczyna się od @) lub polecenie (łącznie z aliasami i
funkcjami). Jeżeli żadne z powyższych nie daje dopasowania, to próbowane jest uzupełnianie nazw
plików.
possible-completions (M-?)
Pokazuje możliwe uzupełnienia tekstu przed punktem.
insert-completions (M-*)
Wstawia przed punktem wszystkie uzupełnienia tekstu, które zostałyby wygenerowane przez
possible-completions.
menu-complete
Podobne do complete, ale zastępuje słowo, jakie ma zostać uzupełnione pojedynczym uzupełnieniem z
listy możliwych. Powtarzane wykonanie menu-complete powoduje krokowe przechodzenie przez listę
możliwych uzupełnień i wstawianie każdego z nich po kolei (zamiast uzupełnianego słowa). Na końcu
listy uzupełnień emitowany jest sygnał dźwiękowy (zależny od ustawienia bell-style) i przywracany
jest pierwotny tekst. Argument n przesuwa n pozycji w przód na liście dopasowań; do przesuwania
się wstecz można użyć argumentu ujemnego. Polecenie w zamierzeniu ma być przypisane do klawisza
TAB, ale domyślnie nie jest przypisane.
menu-complete-backward
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).
Makra klawiaturowe
start-kbd-macro (C-x ()
Rozpoczyna zachowywanie wpisywanych znaków w bieżącym makrze klawiaturowym.
end-kbd-macro (C-x ))
Zatrzymuje zachowywanie wpisywanych znaków w bieżącym makrze klawiaturowym i przechowuje
definicję.
call-last-kbd-macro (C-x e)
Ponownie wykonuje zdefiniowane makro klawiaturowe, powodując pojawianie się znaków makra tak,
jakby zostały wpisane z klawiatury.
print-last-kbd-macro ()
Wypisuje ostatnie makro klawiaturowe, w formacie przeznaczonym do pliku inputrc.
Różne
re-read-init-file (C-x C-r)
Odczytuje zawartość pliku inputrc i dołącza wszystkie znalezione tam przypisania klawiszy i
zmiennych.
abort (C-g)
Zaniechuje bieżącego polecenia edycji i emituje sygnał dźwiękowy terminala (zgodnie z ustawieniami
bell-style).
do-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.
Programowalne uzupełnianie
Gdy następuje próba uzupełnienia słowa dla argumentu polecenia, dla którego zdefiniowano specyfikację
uzupełniania (completion specification, compspec) przy pomocy wbudowanego polecenia complete (zobacz
WBUDOWANE POLECENIA POWŁOKI poniżej), wywoływane są usługi programowalnego uzupełniania.
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
HISTORIA
Jeżeli włączona jest opcja -o history wbudowanego polecenia set, to powłoka zapewnia dostęp do historii
poleceń, listy poleceń poprzednio wprowadzonych. Wartość zmiennej HISTSIZE wykorzystywana jest jako
liczba poleceń do zachowania na liście historii. Zachowywany jest tekst ostatnich HISTSIZE poleceń
(domyślnie 500). Powłoka przechowuje każde polecenie na liście przed podstawieniem wartości parametrów i
zmiennych (zobacz powyżej INTERPRETACJA), ale przed wykonaniem interpretacji historii, w zależności od
wartości zmiennych powłoki HISTIGNORE i HISTCONTROL.
Przy uruchamianiu, historia inicjowana jest z pliku o nazwie wskazanej zmienną HISTFILE (domyślnie
~/.bash_history). Plik o nazwie wziętej z wartości HISTFILE jest obcinany, jeśli zachodzi potrzeba, by
zawierał nie więcej wierszy niż określono to wartością zmiennej HISTFILESIZE. 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.
INTERPRETACJA HISTORII
Powłoka obsługuje funkcję interpretacji historii, podobną do interpretacji historii w csh. Ta sekcja
opisuje dostępne możliwości składni. Funkcja ta jest domyślnie włączona dla powłok interaktywnych i może
być wyłączona przy pomocy opcji +H wbudowanego polecenia set (zobacz poniżej WBUDOWANE POLECENIA
POWŁOKI). Powłoki nie-interaktywne domyślnie nie wykonują interpretacji historii.
Interpretacja historii wprowadza słowa z listy historii do strumienia wejściowego, ułatwiając powtarzanie
poleceń lub poprawianie szybkie błędów w poprzednich poleceniach.
Interpretacja historii przeprowadzana jest bezpośrednio po przeczytaniu pełnego wiersza, przed jego
podziałem na słowa przez powłokę 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.
Desygnatory zdarzeń (Event Designators)
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 (Word Designators)
Desygnatory słów służą do wybierania ze zdarzenia żądanych słów. Dwukropek : oddziela określenie
zdarzenia od desygnatora słowa. Może być pominięty jeśli desygnator słowa rozpoczyna się od ^, $, *, -
lub %. Słowa numerowane są od początku wiersza, przy czym pierwsze ma numer 0 (zero). Słowa są
wstawiane do bieżącego wiersza, rozdzielane pojedynczymi spacjami.
0 (zero)
Słowo zerowe. Dla powłoki jest to słowo polecenia.
n n-te słowo.
^ Pierwszy argument. To znaczy, słowo 1.
$ 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.
Modyfikatory
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.
WBUDOWANE POLECENIA POWŁOKI
Jeśli nie podano inaczej, każde z poleceń wbudowanych opisanych w niniejszej sekcji jako akceptujące
opcje poprzedzone - akceptuje również symbol -- określający koniec opcji. 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.
interactive_comments
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.
TRYB KOMPATYBILNOŚCI POWŁOKI
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.
POWŁOKA OKROJONA
Jeśli bash uruchomiony jest pod nazwą rbash, lub przy jego wywołaniu posłużono się opcją -r, to staje się
powłoką okrojoną (restricted). Powłoka okrojona służy do ustawienia środowiska lepiej kontrolowanego niż
powłoka standardowa. Zachowuje się ona identycznie jak bash z wyjątkiem tego, że poniższe nie są
dozwolone lub nie są wykonywane:
• zmiana katalogów przy pomocy cd
• ustawianie lub kasowanie wartości SHELL, PATH, 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.
ZOBACZ TAKŻE
Bash Features, Brian Fox i Chet Ramey
The Gnu Readline Library, Brian Fox i Chet Ramey
The Gnu History Library, Brian Fox i Chet Ramey
Portable Operating System Interface (POSIX) Part 2: Shell and Utilities, IEEE --
http://pubs.opengroup.org/onlinepubs/9699919799/
http://tiswww.case.edu/~chet/bash/POSIX -- opis trybu posix
sh(1), ksh(1), csh(1)
emacs(1), vi(1)
readline(3)
PLIKI
/bin/bash
Plik wykonywalny powłoki bash
/etc/profile
Ogólnosystemowy plik inicjujący, wykonywany dla powłok zgłoszeniowych
/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
AUTORZY
Brian Fox, Free Software Foundation
bfox@gnu.org
Chet Ramey, Case Western Reserve University
chet.ramey@case.edu
ZGŁOSZENIA BŁĘDÓW
Jeśli znajdziesz w bash błąd, powinieneś go zgłosić. Ale najpierw powinieneś upewnić się, że rzeczywiście
jest to błąd i że pojawia się w najświeższej wersji bash jaką masz. 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.
USTERKI
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
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.
GNU Bash 5.22 19 września 2022 BASH(1)