bash - GNU Bourne-Znowu Shell
bash [options] [command_string | file]
Bash jest chroniony prawami autorskimi (C) 1989-2020 przez Free Software Foundation, Inc.
Bash to interpreter języka poleceń zgodny z sh, który wykonuje polecenia odczytywane ze standardowego wejścia lub z pliku. Bash zawiera również przydatne funkcje z powłok Korn i C (ksh i csh ).
Bash ma być zgodną implementacją części Shell and Utilities specyfikacji IEEE POSIX (standard IEEE 1003.1). Bash można domyślnie skonfigurować tak, aby był zgodny z POSIX.
Wszystkie jednoznakowe opcje powłoki udokumentowane w opisie wbudowanego polecenia set, w tym -o, mogą być używane jako opcje podczas wywoływania powłoki. Ponadto bash interpretuje następujące opcje podczas wywoływania:
Jeśli obecna jest opcja -c, wówczas polecenia są odczytywane z pierwszego niebędącego opcją argumentu ciąg_polecenia. Jeśli po łańcuchu_polecenia występują argumenty, pierwszy argument jest przypisywany do $0, a pozostałe argumenty są przypisywane do parametrów pozycyjnych. Przypisanie do $0 ustawia nazwę powłoki, która jest używana w ostrzeżeniach i komunikatach o błędach.
Jeśli obecna jest opcja -i, powłoka jest interaktywna.
Spraw, aby bash działał tak, jakby był wywoływany jako powłoka logowania (zobacz WYWOŁANIE poniżej).
Jeśli obecna jest opcja -r, powłoka staje się ograniczona (patrz POWŁOKA OGRANICZONA poniżej).
Jeśli występuje opcja -s lub jeśli po przetworzeniu opcji nie pozostają żadne argumenty, to polecenia są odczytywane ze standardowego wejścia. Ta opcja umożliwia ustawienie parametrów pozycyjnych podczas wywoływania powłoki interaktywnej lub podczas czytania danych wejściowych przez potok.
Lista wszystkich łańcuchów ujętych w podwójne cudzysłowy poprzedzonych $ jest drukowana na standardowym wyjściu. Są to ciągi, które podlegają tłumaczeniu na język, gdy bieżące ustawienia regionalne to inne niż C lub POSIX. Oznacza to opcję -n; żadne polecenia nie zostaną wykonane.
shopt_option jest jedną z opcji powłoki akceptowanych przez wbudowane shopt (patrz WBUDOWANE POLECENIA POWŁOKI poniżej). Jeśli występuje shopt_option, -O ustawia wartość tej opcji; +O usuwa ustawienie. Jeśli shopt_option nie zostanie podane, nazwy i wartości opcji powłoki zaakceptowanych przez shopt zostaną wydrukowane na standardowym wyjściu. Jeśli opcją wywołania jest +O, dane wyjściowe są wyświetlane w formacie, który można ponownie wykorzystać jako dane wejściowe.
-- sygnalizuje koniec opcji i wyłącza dalsze przetwarzanie opcji. Wszelkie argumenty po -- są traktowane jako nazwy plików i argumenty. Argument - jest odpowiednikiem --.
Bash interpretuje również wiele opcji wieloznakowych. Opcje te muszą pojawić się w wierszu poleceń przed opcjami jednoznakowymi, aby zostały rozpoznane.
Umów się na wykonanie profilu debuggera przed uruchomieniem powłoki. Włącza rozszerzony tryb debugowania (patrz opis opcji extdebug wbudowanego shopt poniżej).
Odpowiednik -D, ale wyjście jest w formacie pliku GNU gettext po (obiekt przenośny).
Odpowiednik -D.
Wyświetl komunikat o użyciu na standardowym wyjściu i zakończ pomyślnie.
Wykonuj polecenia z pliku zamiast ze standardowego osobistego pliku inicjującego ~/.bashrc, jeśli powłoka jest interaktywna (zobacz WYWOŁANIE poniżej).
Odpowiednik -l.
Nie używaj biblioteki GNU readline do czytania wierszy poleceń, gdy powłoka jest interaktywna.
Nie czytaj ani ogólnosystemowego pliku startowego /etc/profile ani żadnych osobistych plików inicjujących ~/.bash_profile, ~/.bash_login lub ~/.profile. Domyślnie bash odczytuje te pliki, gdy jest wywoływany jako powłoka logowania (patrz WYWOŁANIE poniżej).
Nie czytaj i nie wykonuj osobistego pliku inicjującego ~/.bashrc, jeśli powłoka jest interaktywna. Ta opcja jest domyślnie włączona, jeśli powłoka jest wywoływana jako sh.
Zmień zachowanie bash tam, gdzie domyślna operacja różni się od standardu POSIX, aby była zgodna ze standardem (tryb POSIX). Zobacz ZOBACZ TAKŻE poniżej, aby znaleźć odniesienie do dokumentu szczegółowo opisującego wpływ trybu POSIX na zachowanie basha.
Powłoka zostaje ograniczona (zobacz OGRANICZONA POWŁOKA poniżej).
Odpowiednik -v.
Pokaż informacje o wersji tego wystąpienia bash na standardowym wyjściu i zakończ pomyślnie.
Jeśli po przetworzeniu opcji pozostaną argumenty i nie podano ani opcji -c, ani -s, przyjmuje się, że pierwszym argumentem jest nazwa pliku zawierającego polecenia powłoki . Jeśli bash jest wywoływany w ten sposób, $0 jest ustawiane na nazwę pliku, a parametry pozycyjne są ustawiane na pozostałe argumenty. Bash odczytuje i wykonuje polecenia z tego pliku, a następnie kończy działanie. Status wyjścia Bash to status wyjścia ostatniego polecenia wykonanego w skrypcie. Jeśli żadne polecenie nie zostanie wykonane, kod wyjścia wynosi 0. Najpierw podejmowana jest próba otwarcia pliku w bieżącym katalogu, a jeśli żaden plik nie zostanie znaleziony, powłoka przeszukuje katalogi w PATH w poszukiwaniu scenariusz.
powłoka logowania to taka, której pierwszym znakiem argumentu zero jest - lub zaczyna się od opcji --login.
Powłoka interaktywna to powłoka uruchamiana bez argumentów niebędących opcjami (chyba że podano -s) i bez opcji -c, której standardowe wejście i błąd oba są podłączone do terminali (określonych przez isatty(3)) lub jeden uruchomiony z opcją -i.
PS1 jest ustawiony, a $- zawiera i, jeśli bash jest interaktywny, umożliwiając skryptowi powłoki lub plikowi startowemu przetestować ten stan.
Poniższe akapity opisują, w jaki sposób bash wykonuje swoje pliki startowe. Jeśli któryś z plików istnieje, ale nie można go odczytać, bash zgłasza błąd. Tyldy są rozwijane w nazwach plików, jak opisano poniżej w sekcji Rozszerzenie tyldy w sekcji EXPANSION.
Kiedy bash jest wywoływany jako interaktywna powłoka logowania lub jako nieinteraktywna powłoka z opcją --login, najpierw czyta i wykonuje polecenia z pliku /etc/profile, jeśli taki plik istnieje. Po odczytaniu tego pliku szuka ~/.bash_profile, ~/.bash_login i ~/.profile, w tej kolejności, i czyta i wykonuje polecenia od pierwszego, który istnieje i jest czytelny. Opcja --noprofile może być użyta, gdy powłoka jest uruchamiana, aby powstrzymać to zachowanie.
Kiedy interaktywna powłoka logowania kończy działanie lub nieinteraktywna powłoka logowania wykonuje wbudowane polecenie exit, bash odczytuje i wykonuje polecenia z pliku ~/.bash_logout, jeśli istnieje.
Kiedy uruchamiana jest powłoka interaktywna, która nie jest powłoką logowania, bash odczytuje i wykonuje polecenia z ~/.bashrc, jeśli taki plik istnieje. Można temu zapobiec, używając opcji --norc. Opcja --rcfile plik zmusi bash do czytania i wykonywania poleceń z pliku zamiast z ~ /.bashrc.
Kiedy bash jest uruchamiany nieinteraktywnie, aby na przykład uruchomić skrypt powłoki, szuka zmiennej BASH_ENV w środowisku, rozszerza jej wartość, jeśli się tam pojawia, i używa rozszerzonej wartości jako nazwy pliku do odczytu i wykonania. Bash zachowuje się tak, jakby wykonano następujące polecenie:
if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
ale wartość zmiennej PATH nie jest używana do wyszukiwania nazwy pliku.
Jeśli bash jest wywoływany z nazwą sh, stara się naśladować zachowanie uruchamiania historycznych wersji sh tak dokładnie, jak to możliwe, jednocześnie zachowując zgodność z także standard POSIX. Gdy jest wywoływana jako interaktywna powłoka logowania lub nieinteraktywna powłoka z opcją --login, najpierw próbuje odczytać i wykonać polecenia z /etc/profile i <~/.profile, w tej kolejności. Aby zablokować to zachowanie, można użyć opcji --noprofile. Wywołany jako interaktywna powłoka o nazwie sh, bash szuka zmiennej ENV, rozszerza jej wartość, jeśli jest zdefiniowana, i używa rozszerzona wartość jako nazwa pliku do odczytu i wykonania. Ponieważ powłoka wywołana jako sh nie próbuje odczytywać i wykonywać poleceń z innych plików startowych, opcja --rcfile nie działa. Nieinteraktywna powłoka wywołana z nazwą sh nie próbuje odczytać żadnych innych plików startowych. Po wywołaniu jako sh, bash wchodzi w tryb posix po odczytaniu plików startowych.
Gdy bash jest uruchamiany w trybie posix, tak jak w przypadku opcji wiersza poleceń --posix, jest zgodny ze standardem POSIX dla plików startowych. W tym trybie powłoki interaktywne rozszerzają zmienną ENV, a polecenia są odczytywane i wykonywane z pliku, którego nazwa jest rozwiniętą wartością. Żadne inne pliki startowe nie są odczytywane.
Bash próbuje określić, kiedy jest uruchamiany ze standardowym wejściem podłączonym do połączenia sieciowego, na przykład gdy jest wykonywany przez demona zdalnej powłoki, zwykle rshd, lub demona bezpiecznej powłoki sshd. Jeśli bash wykryje, że jest uruchamiany w ten sposób, odczytuje i wykonuje polecenia z ~/.bashrc, jeśli ten plik istnieje i można go odczytać. Nie zrobi tego, jeśli zostanie wywołany jako sh. Opcji --norc można użyć do zablokowania tego zachowania, a opcji --rcfile można użyć do wymuszenia odczytu innego pliku, ale ani rshd ani sshd zazwyczaj wywołują powłokę z tymi opcjami lub pozwalają na ich określenie.
Jeśli powłoka jest uruchomiona z efektywnym identyfikatorem użytkownika (grupy) różnym od rzeczywistego identyfikatora użytkownika (grupy) i nie podano opcji -p, żadne pliki startowe nie są odczytywane, funkcje powłoki nie są odziedziczone ze środowiska, zmienne SHELLOPTS, BASHOPTS, CDPATH i GLOBIGNORE, jeśli występują w środowisku , są ignorowane, a efektywny identyfikator użytkownika jest ustawiany na rzeczywisty identyfikator użytkownika. Jeśli podczas wywołania zostanie podana opcja -p, zachowanie przy uruchamianiu jest takie samo, ale efektywny identyfikator użytkownika nie jest resetowany.
W pozostałej części niniejszego dokumentu stosowane są następujące definicje.
Spacja lub tabulator.
Sekwencja znaków traktowana przez powłokę jako pojedyncza jednostka. Znany również jako token.
słowo składające się wyłącznie ze znaków alfanumerycznych i podkreśleń, rozpoczynające się od litery lub podkreślenia. Nazywany również identyfikatorem.
Znak, który, gdy nie jest cytowany, oddziela słowa. Jedno z następujących:
| & ; ( ) < > space tab newline
token pełniący funkcję kontrolną. Jest to jeden z następujących symboli:
|| & && ; ;; ;& ;;& ( ) | |& <newline>
Słowa zastrzeżone to słowa, które mają specjalne znaczenie dla powłoki. Następujące słowa są rozpoznawane jako zarezerwowane, gdy nie są cytowane, i albo pierwsze słowo polecenia (patrz GRAMATYKA POWŁOKI poniżej), trzecie słowo case lub select< (poprawne jest tylko in) lub trzecie słowo polecenia for (tylko in i do są ważne):
! case coproc do done elif else esac fi for function if in select then until while { } time [[ ]]Proste polecenie to sekwencja opcjonalnych przypisań zmiennych, po których następują oddzielone spacją słowa i przekierowania, zakończona operatorem sterującym. Pierwsze słowo określa polecenie do wykonania i jest przekazywane jako argument zero. Pozostałe słowa są przekazywane jako argumenty do wywołanego polecenia.
Wartością zwracaną prostego polecenia jest jego kod zakończenia lub 128+n , jeśli polecenie zostało zakończone sygnałem n.
potok to sekwencja jednego lub więcej poleceń oddzielonych jednym z operatorów sterujących | lub |&. Format potoku to:
[time [-p]] [ ! ] command [ [|⎪|&] command2 ... ]
Standardowe wyjście polecenia jest połączone potokiem ze standardowym wejściem polecenia2. To połączenie jest wykonywane przed wszelkimi przekierowaniami określonymi przez polecenie (patrz PRZEKIEROWANIE poniżej). Jeśli używane jest |&, standardowy błąd polecenia, oprócz jego standardowego wyjścia, jest podłączany do standardowego wejścia polecenia2 przez rura; jest to skrót od 2>&1 |. To niejawne przekierowanie błędu standardowego na standardowe wyjście jest wykonywane po wszelkich przekierowaniach określonych przez polecenie.
Status powrotu potoku to status wyjścia ostatniego polecenia, chyba że włączona jest opcja pipefail. Jeśli opcja pipefail jest włączona, status powrotu potoku jest wartością ostatniego (najbardziej na prawo) polecenia do zakończenia ze statusem niezerowym lub zerem, jeśli wszystkie polecenia zakończą się pomyślnie. Jeśli zastrzeżone słowo ! poprzedza potok, status wyjścia tego potoku jest logiczną negacją statusu wyjścia, jak opisano powyżej. Powłoka czeka na zakończenie wszystkich poleceń w potoku przed zwróceniem wartości.
Jeśli słowo zastrzeżone time poprzedza potok, czas, który upłynął, a także czas użytkownika i systemu zużyty na jego wykonanie, są zgłaszane po zakończeniu potoku. Opcja -p zmienia format wyjściowy na format określony przez POSIX. Gdy powłoka jest w trybie posix, nie rozpoznaje czasu jako słowa zastrzeżonego, jeśli następny token zaczyna się od `-'. Zmienna TIMEFORMAT może być ustawiona na łańcuch formatu określający sposób wyświetlania informacji o czasie; zobacz opis TIMEFORMAT w sekcji Zmienne powłoki poniżej.
Kiedy powłoka jest w trybie POSIX, po czasie może następować znak nowej linii. W takim przypadku powłoka wyświetla całkowity czas użytkownika i systemowy zużyty przez powłokę i jej elementy podrzędne. Zmiennej TIMEFORMAT można użyć do określenia formatu informacji o czasie.
Każde polecenie w potoku jest wykonywane jako osobny proces (tj. w podpowłoce). Zobacz ŚRODOWISKO WYKONYWANIA POLECEŃ, aby zapoznać się z opisem środowiska podpowłoki. Jeśli opcja lastpipe jest włączona za pomocą wbudowanego shopt (patrz opis shopt poniżej), ostatni element potoku może być uruchamiany przez proces powłoki.
lista to sekwencja jednego lub więcej potoków oddzielonych jednym z operatorów ;, &, &&, lub || i opcjonalnie zakończone przez ;, & lub <newline>.
Spośród tych operatorów list, && i || mają równy priorytet, po których następują ; i &, które mają równe precedens.
Sekwencja jednego lub więcej znaków nowej linii może pojawić się na liście zamiast średnika oddzielającego polecenia.
Jeśli polecenie zostanie przerwane przez operatora sterującego &, powłoka wykona polecenie w tle w podpowłoce. Powłoka nie czeka na zakończenie polecenia, a zwracany kod to 0. Są to polecenia asynchroniczne. Polecenia oddzielone ; są wykonywane sekwencyjnie; powłoka czeka na zakończenie każdego polecenia po kolei. Status powrotu to status wyjścia ostatniego wykonanego polecenia.
Listy AND i OR to sekwencje jednego lub więcej potoków oddzielonych odpowiednio operatorami sterującymi && i ||. Listy AND i OR są wykonywane z lewą asocjatywnością. Lista AND ma postać
command1 && command2
polecenie2 jest wykonywane wtedy i tylko wtedy, gdy polecenie1 zwraca kod wyjścia równy zero (sukces).
Lista OR ma postać
command1 || command2
polecenie2 jest wykonywane wtedy i tylko wtedy, gdy polecenie1 zwraca niezerowy kod wyjścia. Status powrotu list AND i OR to status wyjścia ostatniego polecenia wykonanego na liście.
polecenie złożone to jedno z poniższych. W większości przypadków lista w opisie polecenia może być oddzielona od reszty polecenia jednym lub kilkoma znakami nowej linii, po których może wystąpić znak nowej linii zamiast średnika.
list jest wykonywana w środowisku podpowłoki (patrz ŚRODOWISKO WYKONYWANIA POLECEŃ poniżej). Przypisania zmiennych i polecenia wbudowane, które mają wpływ na środowisko powłoki, nie pozostają w mocy po zakończeniu polecenia. Status powrotu to status wyjścia list
list jest po prostu wykonywany w bieżącym środowisku powłoki. lista musi być zakończona znakiem nowej linii lub średnikiem. Jest to znane jako polecenie grupowe. Status powrotu to status wyjścia list. Pamiętaj, że w przeciwieństwie do metaznaków ( i ), { i } to słowa zastrzeżone i musi wystąpić, gdy zastrzeżone słowo może zostać rozpoznane. Ponieważ nie powodują podziału słowa, muszą być oddzielone od list spacją lub innym metaznakiem powłoki.
wyrażenie jest oceniane zgodnie z zasadami opisanymi poniżej w sekcji OBLICZANIE ARYTMETYCZNE. Jeśli wartość wyrażenia jest różna od zera, statusem zwracanym jest 0; w przeciwnym razie status powrotu to 1. Jest to dokładnie odpowiednik let "wyrażenie".
Zwraca stan 0 lub 1 w zależności od oceny wyrażenia warunkowego wyrażenie. Wyrażenia składają się z wyrażeń podstawowych opisanych poniżej w sekcji WYRAŻENIA WARUNKOWE. Dzielenie słów i rozwijanie nazw ścieżek nie jest wykonywane na słowach między [[ a ]]; wykonywane jest interpretacja tyldy, interpretacja parametrów i zmiennych, interpretacja arytmetyczna, podstawianie poleceń, podstawianie procesów i usuwanie cudzysłowów. Operatory warunkowe, takie jak -f, muszą być niecytowane, aby mogły zostać uznane za podstawowe.
W połączeniu z [[ operatory < i > sortują leksykograficznie przy użyciu bieżących ustawień regionalnych.
Gdy używane są operatory == i !=, ciąg po prawej stronie operatora jest traktowany jako wzorzec i dopasowywany zgodnie z zasadami opisanymi poniżej w sekcji Wzorzec Dopasowanie, tak jakby opcja powłoki extglob była włączona. Operator = odpowiada operatorowi ==. Jeśli opcja powłoki nocasematch jest włączona, dopasowanie jest przeprowadzane bez względu na wielkość liter. Zwracana wartość to 0, jeśli łańcuch pasuje (==) lub nie pasuje (!=) do wzorca, a 1 w przeciwnym razie. Dowolna część wzorca może być cytowana, aby wymusić dopasowanie cytowanej części jako łańcucha.
Dostępny jest dodatkowy operator binarny =~ z takim samym priorytetem jak == i !=. Kiedy jest używany, ciąg po prawej stronie operatora jest traktowany jako rozszerzone wyrażenie regularne POSIX i odpowiednio dopasowywany (używając interfejsów POSIX regcomp i regexec zwykle opisanych w wyrażenie regularne(3)). Zwracana wartość to 0, jeśli łańcuch pasuje do wzorca, a 1 w przeciwnym razie. Jeśli wyrażenie regularne jest niepoprawne składniowo, wartość zwracana przez wyrażenie warunkowe wynosi 2. Jeśli włączona jest opcja powłoki nocasematch, dopasowanie jest przeprowadzane bez względu na wielkość liter. Dowolna część wzorca może być cytowana, aby wymusić dopasowanie cytowanej części jako łańcucha. Wyrażenia nawiasowe w wyrażeniach regularnych należy traktować ostrożnie, ponieważ zwykłe znaki cytowania tracą znaczenie między nawiasami. Jeśli wzorzec jest przechowywany w zmiennej powłoki, cytowanie interpretacji zmiennej wymusza dopasowanie całego wzorca jako łańcucha.
Wzorzec zostanie dopasowany, jeśli pasuje do dowolnej części ciągu. Zakotwicz wzorzec za pomocą operatorów wyrażeń regularnych ^ i $, aby wymusić dopasowanie do całego ciągu. Zmienna tablicowa BASH_REMATCH rejestruje, które części łańcucha pasują do wzorca. Element BASH_REMATCH o indeksie 0 zawiera część łańcucha pasującą do całego wyrażenia regularnego. Podciągi dopasowane przez wyrażenia podrzędne w nawiasach w wyrażeniu regularnym są zapisywane w pozostałych indeksach BASH_REMATCH. Element BASH_REMATCH z indeksem n to część łańcucha pasująca do ntego podwyrażenia w nawiasach.
Wyrażenia można łączyć za pomocą następujących operatorów, wymienionych w malejącej kolejności:
- ( expression )
Zwraca wartość wyrażenia. Można to wykorzystać do nadpisania normalnego pierwszeństwa operatorów.
- ! expression
Prawda, jeśli wyrażenie jest fałszywe.
- expression1 && expression2
Prawda, jeśli zarówno wyrażenie1, jak i wyrażenie2 są prawdziwe.
- expression1 || expression2
Prawda, jeśli wyrażenie1 lub wyrażenie2 jest prawdziwe.
Operatory && i || nie oceniają wyrażenia2, jeśli wartość wyrażenia1 jest wystarczająca do określenia wartości zwracanej całego wyrażenia warunkowego.
Lista słów następujących po in jest rozwijana, generując listę elementów. Zmienna nazwa jest ustawiana dla każdego elementu tej listy po kolei, a lista jest wykonywana za każdym razem. Jeśli pominięto w słowo, polecenie for wykona list raz dla każdego ustawionego parametru pozycyjnego (patrz PARAMETRY poniżej). Status powrotu to status wyjścia ostatniego wykonywanego polecenia. Jeśli rozwinięcie elementów następujących po w spowoduje, że lista będzie pusta, żadne polecenia nie zostaną wykonane, a kod powrotu to 0.
Najpierw obliczane jest wyrażenie arytmetyczne wyr1 zgodnie z zasadami opisanymi poniżej w sekcji OBLICZANIE ARYTMETYCZNE. Wyrażenie arytmetyczne wyr2 jest następnie oceniane wielokrotnie, aż do zera. Za każdym razem, gdy wyr2 zwraca wartość różną od zera, wykonywana jest list i obliczane jest wyrażenie arytmetyczne wyr3. Jeśli jakieś wyrażenie zostanie pominięte, zachowuje się tak, jakby miało wartość 1. Zwracana wartość to kod zakończenia ostatniego wykonanego polecenia z list lub fałsz, jeśli którekolwiek z wyrażeń jest nieprawidłowe.
Lista słów następujących po in jest rozwijana, generując listę elementów. Zestaw rozszerzonych słów jest drukowany na błędzie standardowym, każdy poprzedzony liczbą. Jeśli w słowo zostanie pominięte, drukowane są parametry pozycyjne (patrz PARAMETRY poniżej). Zostanie wyświetlony znak zachęty PS3 i odczytana zostanie linia ze standardowego wejścia. Jeśli linia składa się z liczby odpowiadającej jednemu z wyświetlanych słów, to wartość nazwa jest ustawiana na to słowo. Jeśli linia jest pusta, słowa i monit są wyświetlane ponownie. Jeśli EOF zostanie odczytane, polecenie zostanie zakończone. Każda inna odczytana wartość powoduje ustawienie nazwa na wartość null. Odczytana linia jest zapisywana w zmiennej REPLY. lista jest wykonywana po każdym zaznaczeniu, aż do wykonania polecenia break. Status wyjścia select to status wyjścia ostatniego polecenia wykonanego w list lub zero, jeśli nie wykonano żadnych poleceń.
Polecenie case najpierw rozwija słowo i próbuje dopasować je do każdego wzorca po kolei, używając reguł dopasowywania opisanych w Dopasowywanie wzorców poniżej. słowo jest interpretowane przy użyciu interpretacji tyldy, interpretacji parametrów i zmiennych, interpretacji arytmetycznej, podstawienia poleceń, podstawienia procesu i usunięcia cudzysłowów. Każdy badany wzorzec jest interpretowany za pomocą interpretacji tyldy, interpretacji parametrów i zmiennych, interpretacji arytmetycznej, podstawienia poleceń i podstawienia procesu. Jeśli opcja powłoki nocasematch jest włączona, dopasowanie jest przeprowadzane bez względu na wielkość liter. Po znalezieniu dopasowania wykonywana jest odpowiednia lista. Jeśli używany jest operator ;;, po pierwszym dopasowaniu do wzorca nie są podejmowane żadne kolejne dopasowania. Użycie ;& zamiast ;; powoduje kontynuację wykonywania z listą powiązaną z następnym zestawem wzorców. Użycie ;;& zamiast ;; powoduje, że powłoka testuje następną listę wzorców w instrukcji, jeśli taka istnieje, i wykonuje każdą powiązaną listę w przypadku pomyślnego dopasowania, kontynuując wykonywanie instrukcji case, tak jakby lista wzorców nie została dopasowana. Status wyjścia wynosi zero, jeśli żaden wzorzec nie pasuje. W przeciwnym razie jest to status wyjścia ostatniego polecenia wykonanego w list.
Wykonywana jest jeśli lista. Jeśli jego status wyjścia wynosi zero, wykonywana jest to lista. W przeciwnym razie każda elif lista jest wykonywana po kolei, a jeśli jej status wyjścia wynosi zero, odpowiadająca jej then list jest wykonywany i polecenie zostaje zakończone. W przeciwnym razie wykonywana jest else lista, jeśli jest obecna. Status wyjścia to status wyjścia ostatniego wykonanego polecenia lub zero, jeśli żaden warunek nie został uznany za prawdziwy.
Polecenie while w sposób ciągły wykonuje listę list-2 tak długo, jak ostatnie polecenie na liście list-1 zwraca kod wyjścia równy zero. Polecenie until jest identyczne z poleceniem while, z tą różnicą, że test jest negowany: list-2 jest wykonywany tak długo, jak ostatnie polecenie w list-1 zwraca niezerowy status wyjścia. Status wyjścia poleceń while i until to kod zakończenia ostatniego polecenia wykonanego w list-2 lub zero, jeśli żadne nie zostało wykonane .
coprocess to polecenie powłoki poprzedzone zarezerwowanym słowem coproc. Koproces jest wykonywany asynchronicznie w podpowłoce, tak jakby komenda została zakończona operatorem sterującym &, z ustanowionym dwukierunkowym potokiem między wykonującą powłoką a koprocesem.
Format koprocesu to:
coproc [NAME] command [redirections]
Spowoduje to utworzenie koprocesu o nazwie NAZWA. Jeśli nie podano NAZWA, domyślną nazwą jest COPROC. NAZWA nie może być podawana, jeśli polecenie jest prostym poleceniem (patrz wyżej); w przeciwnym razie jest interpretowane jako pierwsze słowo prostego polecenia. Kiedy koproces jest wykonywany, powłoka tworzy zmienną tablicową (patrz Tablice poniżej) o nazwie NAZWA w kontekście wykonującej się powłoki. Standardowe wyjście polecenia jest połączone potokiem z deskryptorem pliku w wykonującej się powłoce i ten deskryptor pliku jest przypisany do NAZWA[0]. Standardowe wejście polecenia jest połączone potokiem z deskryptorem pliku w wykonującej się powłoce, a ten deskryptor pliku jest przypisany do NAZWA[1]. Ten potok jest ustanawiany przed wszelkimi przekierowaniami określonymi przez polecenie (patrz PRZEKIEROWANIE poniżej). Deskryptory plików mogą być używane jako argumenty poleceń powłoki i przekierowań przy użyciu standardowych rozszerzeń słów. Deskryptory plików inne niż te utworzone w celu wykonywania podstawień poleceń i procesów nie są dostępne w podpowłokach. Identyfikator procesu powłoki uruchomionej w celu wykonania koprocesu jest dostępny jako wartość zmiennej NAZWA_PID. Wbudowane polecenie wait może być użyte do oczekiwania na zakończenie współprocesu.
Ponieważ koproces jest tworzony jako polecenie asynchroniczne, polecenie coproc zawsze zwraca sukces. Status powrotu koprocesu to status wyjścia polecenia.
Funkcja powłoki to obiekt, który jest wywoływany jak polecenie proste i wykonuje polecenie złożone z nowym zestawem parametrów pozycyjnych. Funkcje powłoki są deklarowane w następujący sposób:
To definiuje funkcję o nazwie fname. Zarezerwowane słowo funkcja jest opcjonalne. Jeśli podano zarezerwowane słowo funkcji, nawiasy są opcjonalne. treścią funkcji jest polecenie złożone polecenie-złożone (patrz Polecenia złożone powyżej). Polecenie to jest zwykle listą poleceń od { do }, ale może to być dowolne polecenie wymienione w sekcji Polecenia złożone powyżej, z jednym wyjątkiem: jeśli funkcja używane jest słowo zastrzeżone, ale nawiasy nie są dostarczane, nawiasy klamrowe są wymagane. polecenie-złożone jest wykonywane za każdym razem, gdy fname jest podane jako nazwa prostego polecenia. W trybie POSIX, fname musi być poprawną nazwą powłoki i nie może być nazwą jednego ze specjalnych wbudowanych elementów POSIX. W trybie domyślnym nazwą funkcji może być dowolne niecytowane słowo powłoki, które nie zawiera $. Wszelkie przekierowania (patrz PRZEKIEROWANIE poniżej) określone podczas definiowania funkcji są wykonywane podczas wykonywania funkcji. Status wyjścia definicji funkcji wynosi zero, chyba że wystąpi błąd składniowy lub istnieje już funkcja tylko do odczytu o tej samej nazwie. Po wykonaniu status wyjścia funkcji jest statusem wyjścia ostatniego polecenia wykonanego w treści. (Patrz FUNKCJE poniżej).
W powłoce nieinteraktywnej lub w powłoce interaktywnej, w której włączona jest opcja interactive_comments wbudowanego elementu shopt (zobacz WBUDOWANE POLECENIA POWŁOKI poniżej) , słowo zaczynające się od # powoduje zignorowanie tego słowa i wszystkich pozostałych znaków w tym wierszu. Powłoka interaktywna bez włączonej opcji interactive_comments nie zezwala na komentarze. Opcja interactive_comments jest domyślnie włączona w powłokach interaktywnych.
Cytowanie służy do usuwania specjalnego znaczenia niektórych znaków lub słów z powłoki. Cytowanie może służyć do wyłączania specjalnego traktowania znaków specjalnych, zapobiegania rozpoznawaniu słów zastrzeżonych jako takich oraz zapobiegania rozszerzaniu parametrów.
Każdy z metaznaków wymienionych powyżej w sekcji DEFINICJE ma specjalne znaczenie dla powłoki i musi być cytowany, jeśli ma się reprezentować.
Gdy używane są funkcje interpretacji historii poleceń (patrz ROZWIĄZANIE HISTORII poniżej), znak rozwijania historii, zazwyczaj !, musi być umieszczony w cudzysłowie, aby zapobiec rozwinięcie historii.
Istnieją trzy mechanizmy cytowania: znak ucieczki, pojedyncze cudzysłowy i podwójne cudzysłowy.
Ukośnik odwrotny bez cudzysłowu (\) to znak zmiany znaczenia. Zachowuje dosłowną wartość następnego znaku, z wyjątkiem
Ujęcie znaków w pojedyncze cudzysłowy zachowuje dosłowną wartość każdego znaku w cudzysłowie. Pojedynczy cudzysłów nie może występować między pojedynczymi cudzysłowami, nawet jeśli jest poprzedzony odwrotnym ukośnikiem.
Ujęcie znaków w podwójne cudzysłowy zachowuje dosłowną wartość wszystkich znaków w cudzysłowach, z wyjątkiem $, `, \, a kiedy rozszerzenie historii jest włączone, !. Kiedy powłoka jest w trybie POSIX, ! nie ma specjalnego znaczenia w podwójnych cudzysłowach, nawet jeśli włączone jest rozwijanie historii. Znaki $ i ` zachowują swoje specjalne znaczenie w podwójnych cudzysłowach. Ukośnik odwrotny zachowuje swoje specjalne znaczenie tylko wtedy, gdy następuje po nim jeden z następujących znaków: $, `, " , \ > lub <newline>. Podwójny cudzysłów można umieścić w podwójnym cudzysłowie, poprzedzając go odwrotnym ukośnikiem. Jeśli ta opcja jest włączona, interpretacja historii będzie wykonywana, chyba że ! pojawi się w podwójne cudzysłowy są zmieniane za pomocą ukośnika odwrotnego. Ukośnik odwrotny poprzedzający ! nie jest usuwany.
Parametry specjalne * i @ mają specjalne znaczenie w cudzysłowach (patrz PARAMETRY poniżej).
Słowa w formie $'łańcuch' są traktowane w specjalny sposób. Słowo rozwija się do łańcucha, a znaki zmienione odwrotnym ukośnikiem są zastępowane zgodnie ze standardem ANSI C. Sekwencje ucieczki odwrotnego ukośnika, jeśli są obecne, są dekodowane w następujący sposób:
- \a
alarm (dzwonek)
- \b
spacja
- \e
- \E
postać ucieczki
- \f
kanał formularza
- \n
Nowa linia
- \r
powrót karetki
- \t
zakładka pozioma
- \v
zakładka pionowa
- \\
ukośnik wsteczny
- \'
pojedynczy cytat
- \"
cudzysłów
- \?
znak zapytania
- \nnn
ośmiobitowy znak, którego wartością jest wartość ósemkowa nnn (od jednej do trzech cyfr ósemkowych)
- \xHH
ośmiobitowy znak, którego wartością jest wartość szesnastkowa HH (jedna lub dwie cyfry szesnastkowe)
- \uHHHH
znak Unicode (ISO/IEC 10646), którego wartością jest wartość szesnastkowa HHHH (od jednej do czterech cyfr szesnastkowych)
- \UHHHHHHHH
znak Unicode (ISO/IEC 10646), którego wartością jest wartość szesnastkowa HHHHHHHH (od jednej do ośmiu cyfr szesnastkowych)
- \cx
znak kontrolny x
Rozszerzony wynik jest ujęty w pojedyncze cudzysłowy, tak jakby znak dolara nie był obecny.
Podwójny cudzysłów poprzedzony znakiem dolara ($"string") spowoduje, że ciąg zostanie przetłumaczony zgodnie z bieżącymi ustawieniami regionalnymi. Infrastruktura gettext wykonuje wyszukiwanie i translację katalogu komunikatów przy użyciu zmiennych powłoki LC_MESSAGES i TEXTDOMAIN. Jeśli bieżącym ustawieniem regionalnym jest C lub POSIX albo jeśli nie ma dostępnych tłumaczeń, znak dolara jest ignorowany. Jeśli łańcuch jest tłumaczony i zastępowany, zamiana jest ujęta w podwójny cudzysłów.
parametr to obiekt przechowujący wartości. Może to być nazwa, liczba lub jeden ze znaków specjalnych wymienionych poniżej w sekcji Parametry specjalne. zmienna to parametr oznaczony przez nazwę. Zmienna ma wartość i zero lub więcej atrybutów. Atrybuty są przypisywane za pomocą wbudowanego polecenia deklaruj (zobacz deklaruj poniżej w sekcji WBUDOWANE POLECENIA POWŁOKI).
Parametr jest ustawiony, jeśli została mu przypisana wartość. Ciąg pusty jest prawidłową wartością. Raz ustawiona zmienna może zostać anulowana tylko za pomocą wbudowanego polecenia unset (zobacz WBUDOWANE POLECENIA POWŁOKI poniżej).
Do zmiennej można przypisać instrukcję w formularzu
name=[value]
Jeśli wartość nie zostanie podana, zmiennej przypisywany jest łańcuch pusty. Wszystkie wartości podlegają interpretacji tyldy, interpretacji parametrów i zmiennych, podstawianiu poleceń, interpretacji arytmetycznej i usuwaniu cudzysłowów (patrz EKSPANCJA poniżej). Jeśli zmienna ma ustawiony atrybut liczba całkowita, to wartość jest oceniana jako wyrażenie arytmetyczne, nawet jeśli nie jest używane rozwinięcie $ ((...)) (patrz Rozwinięcie arytmetyczne poniżej). Podział na słowa nie jest wykonywany, z wyjątkiem "$@", jak wyjaśniono poniżej w sekcji Parametry specjalne. Rozwinięcie nazwy ścieżki nie jest wykonywane. Instrukcje przypisania mogą również pojawiać się jako argumenty dla aliasu, deklaracji, zestawu, eksportu, tylko do odczytu< i wbudowane polecenia lokalne (polecenia deklaracji). W trybie POSIX te wbudowane elementy mogą pojawić się w poleceniu po jednej lub kilku instancjach wbudowanego komendy i zachować te właściwości instrukcji przypisania.
W kontekście, w którym instrukcja przypisania przypisuje wartość do zmiennej powłoki lub indeksu tablicy, operatora += można użyć do dołączenia lub dodania do poprzedniej wartości zmiennej. Obejmuje to argumenty poleceń wbudowanych, takich jak deklaracja, które akceptują instrukcje przypisania (polecenia deklaracja). Gdy += zostanie zastosowane do zmiennej, dla której ustawiono atrybut liczba całkowita, wartość jest oceniana jako wyrażenie arytmetyczne i dodawana do bieżącej wartości zmiennej, która również jest obliczana . Gdy znak += zostanie zastosowany do zmiennej tablicowej za pomocą przypisania złożonego (zobacz Tablice poniżej), wartość zmiennej nie zostanie usunięta (tak jak w przypadku użycia =), a nowe wartości zostaną dodane do tablicy zaczynającej się od jeden większy niż maksymalny indeks tablicy (dla tablic indeksowanych) lub dodany jako dodatkowe pary klucz-wartość w tablicy asocjacyjnej. Po zastosowaniu do zmiennej o wartościach łańcuchowych wartość jest interpretowana i dołączana do wartości zmiennej.
Zmiennej można przypisać atrybut nameref za pomocą opcji -n wbudowanego polecenia declare lub local (zobacz poniższe opisy declare i local), aby utworzyć nameref lub odwołanie do innej zmiennej. Pozwala to na pośrednie manipulowanie zmiennymi. Ilekroć zmienna nameref jest przywoływana, przypisywana, usuwana lub modyfikowana jest jej atrybut (poza użyciem lub zmianą samego atrybutu nameref), operacja jest faktycznie wykonywana na zmiennej określonej przez wartość zmiennej namerefa . Nazwa ef jest często używana w funkcjach powłoki w odniesieniu do zmiennej, której nazwa jest przekazywana jako argument do funkcji. Na przykład, jeśli nazwa zmiennej jest przekazywana do funkcji powłoki jako jej pierwszy argument, uruchomienie
declare -n ref=$1
wewnątrz funkcji tworzy zmienną nameref ref, której wartością jest nazwa zmiennej przekazana jako pierwszy argument. Odwołania i przypisania do ref oraz zmiany jego atrybutów są traktowane jako odniesienia, przypisania i modyfikacje atrybutów do zmiennej, której nazwa została przekazana jako $1. Jeśli zmienna sterująca w pętli for ma atrybut nameref, to lista słów może być listą zmiennych powłoki, a dla każdego słowa na liście zostanie ustalone odwołanie do nazwy, gdy pętla jest wykonywana. Zmiennym tablicowym nie można nadać atrybutu nameref. Jednak zmienne nameref mogą odwoływać się do zmiennych tablicowych i zmiennych tablicowych z indeksem dolnym. Odwołania do nazw można usunąć za pomocą opcji -n do wbudowanego elementu unset. W przeciwnym razie, jeśli unset zostanie wykonane z nazwą zmiennej nameref jako argumentem, zmienna, do której odwołuje się zmienna nameref, zostanie usunięta.
Parametr pozycyjny to parametr oznaczony przez jedną lub więcej cyfr, innych niż pojedyncza cyfra 0. Parametry pozycyjne są przypisywane z argumentów powłoki podczas jej wywoływania i mogą być ponownie przypisywane za pomocą zestawu wbudowane polecenie. Parametrów pozycyjnych nie można przypisywać za pomocą instrukcji przypisania. Parametry pozycyjne są tymczasowo zastępowane podczas wykonywania funkcji powłoki (patrz FUNKCJE poniżej).
Kiedy interpretowany jest parametr pozycyjny składający się z więcej niż jednej cyfry, musi być ujęty w nawiasy klamrowe (patrz EXPANSION poniżej).
Powłoka traktuje kilka parametrów specjalnie. Te parametry mogą być tylko odniesieniami; przypisanie do nich jest niedozwolone.
Rozwija się do parametrów pozycyjnych, zaczynając od jednego. Gdy interpretacja nie jest zawarta w podwójnych cudzysłowach, każdy parametr pozycyjny jest interpretowany jako osobne słowo. W kontekstach, w których jest wykonywana, słowa te podlegają dalszemu podziałowi na słowa i rozszerzaniu nazw ścieżek. Gdy interpretacja występuje w podwójnych cudzysłowach, rozwija się do pojedynczego słowa z wartością każdego parametru oddzieloną pierwszym znakiem zmiennej specjalnej IFS. Oznacza to, że „$*” odpowiada „$1c2$c ...”, gdzie c jest pierwszym znakiem wartości zmiennej IFS. Jeśli IFS nie jest ustawiony, parametry są oddzielone spacjami. Jeśli IFS ma wartość null, parametry są łączone bez pośrednich separatorów.
Rozwija się do parametrów pozycyjnych, zaczynając od jednego. W kontekstach, w których wykonywane jest dzielenie słów, rozszerza to każdy parametr pozycyjny do osobnego słowa; jeśli nie w podwójnych cudzysłowach, słowa te podlegają podziałowi na słowa. W kontekstach, w których nie jest wykonywany podział na słowa, rozszerza się to do pojedynczego słowa z każdym parametrem pozycyjnym oddzielonym spacją. Gdy interpretacja występuje w podwójnych cudzysłowach, każdy parametr jest interpretowany jako osobne słowo. Oznacza to, że „$@” jest równoważne z „$1” „$2” ... Jeśli rozwinięcie w cudzysłowach występuje w słowie , interpretacja pierwszego parametru jest łączona z początkową częścią słowa oryginalnego, a interpretacja ostatniego parametru jest łączona z ostatnią częścią słowa oryginalnego. Gdy nie ma parametrów pozycyjnych, „$@” i $@ rozwijają się do zera (tzn. są usuwane).
Rozwija się do liczby parametrów pozycyjnych w systemie dziesiętnym.
Rozwija się do stanu wyjścia ostatnio wykonanego potoku pierwszego planu.
Rozwija do bieżących flag opcji określonych przy wywołaniu, przez wbudowane polecenie set lub te ustawione przez samą powłokę (takie jak opcja -i).
Rozwija się do identyfikatora procesu powłoki. W podpowłoce() rozszerza się do identyfikatora procesu bieżącej powłoki, a nie do podpowłoki.
Rozwija się do identyfikatora procesu ostatnio umieszczonego w tle zadania, niezależnie od tego, czy jest wykonywane jako polecenie asynchroniczne, czy przy użyciu wbudowanego bg (patrz KONTROLA ZADANIA poniżej).
Rozwija się do nazwy powłoki lub skryptu powłoki. Jest to ustawiane podczas inicjalizacji powłoki. Jeśli bash jest wywoływany z plikiem poleceń, $0 jest ustawiany na nazwę tego pliku. Jeśli bash jest uruchamiany z opcją -c, to $0 jest ustawiany na pierwszy argument po łańcuchu, który ma zostać wykonany, jeśli taki występuje . W przeciwnym razie jest ustawiana na nazwę pliku używaną do wywołania bash, zgodnie z argumentem zero.
Powłoka ustawia następujące zmienne:
Podczas uruchamiania powłoki ustaw nazwę ścieżki używaną do wywołania wykonywanej powłoki lub skryptu powłoki zgodnie z przekazaną w środowisku lub na liście argumentów. Następnie rozwija do ostatniego argumentu poprzedniego prostego polecenia wykonanego na pierwszym planie, po rozwinięciu. Ustaw także pełną nazwę ścieżki używaną do wywoływania każdego polecenia wykonanego i umieszczonego w środowisku wyeksportowanym do tego polecenia. Podczas sprawdzania poczty ten parametr przechowuje nazwę aktualnie sprawdzanego pliku poczty.
Rozwija się do pełnej nazwy pliku użytej do wywołania tej instancji bash.
Rozdzielana dwukropkami lista włączonych opcji powłoki. Każde słowo na liście jest poprawnym argumentem dla opcji -s wbudowanego polecenia shopt (zobacz WBUDOWANE POLECENIA POWŁOKI poniżej). Opcje pojawiające się w BASHOPTS to opcje zgłoszone jako włączone przez shopt. Jeśli ta zmienna znajduje się w środowisku podczas uruchamiania bash, każda opcja powłoki na liście zostanie włączona przed odczytaniem jakichkolwiek plików startowych. Ta zmienna jest tylko do odczytu.
Rozwija się do identyfikatora procesu bieżącego procesu bash. Różni się to od $$ w pewnych okolicznościach, takich jak podpowłoki, które nie wymagają ponownego zainicjowania bash. Przypisania do BASHPID nie mają żadnego efektu. Jeśli BASHPID nie jest ustawiony, traci swoje specjalne właściwości, nawet jeśli zostanie później zresetowany.
Zmienna tablicy asocjacyjnej, której elementy odpowiadają wewnętrznej liście aliasów utrzymywanej przez wbudowany alias. Elementy dodane do tej tablicy pojawiają się na liście aliasów; jednak usunięcie ustawień elementów tablicy obecnie nie powoduje usunięcia aliasów z listy aliasów. Jeśli BASH_ALIASES nie jest ustawiony, traci swoje specjalne właściwości, nawet jeśli zostanie później zresetowany.
Zmienna tablicowa, której wartości to liczba parametrów w każdej klatce bieżącego stosu wywołań wykonania bash. Liczba parametrów bieżącego podprogramu (funkcji powłoki lub skryptu wykonanego za pomocą . lub source) znajduje się na szczycie stosu. Gdy podprogram jest wykonywany, liczba przekazanych parametrów jest przekazywana do BASH_ARGC. Powłoka ustawia BASH_ARGC tylko w rozszerzonym trybie debugowania (zobacz opis opcji extdebug wbudowanego shopt poniżej). Ustawienie extdebug po tym, jak powłoka zaczęła wykonywać skrypt lub odwołanie się do tej zmiennej, gdy extdebug nie jest ustawione, może skutkować niespójnymi wartościami.
Zmienna tablicowa zawierająca wszystkie parametry w bieżącym stosie wywołań wykonania bash. Ostatni parametr ostatniego wywołania podprogramu standardowego znajduje się na szczycie stosu; pierwszy parametr wywołania początkowego znajduje się na dole. Gdy podprogram jest wykonywany, podane parametry są przekazywane do BASH_ARGV. Powłoka ustawia BASH_ARGV tylko w rozszerzonym trybie debugowania (zobacz opis opcji extdebug wbudowanego shopt poniżej). Ustawienie extdebug po tym, jak powłoka zaczęła wykonywać skrypt lub odwołanie się do tej zmiennej, gdy extdebug nie jest ustawione, może skutkować niespójnymi wartościami.
Po odwołaniu zmienna ta rozwija się do nazwy powłoki lub skryptu powłoki (identyczna z $0; patrz opis parametru specjalnego 0 powyżej). Przypisanie do BASH_ARGV0 powoduje, że przypisana wartość jest również przypisana do $0. Jeśli BASH_ARGV0 nie jest ustawiony, traci swoje specjalne właściwości, nawet jeśli zostanie później zresetowany.
Zmienna tablicy asocjacyjnej, której elementy odpowiadają wewnętrznej tablicy skrótów poleceń, utrzymywanej przez wbudowaną funkcję hash. Elementy dodane do tej tablicy pojawiają się w tablicy skrótów; jednak usunięcie ustawień elementów tablicy obecnie nie powoduje usunięcia nazw poleceń z tablicy skrótów. Jeśli BASH_CMDS nie jest ustawiony, traci swoje specjalne właściwości, nawet jeśli zostanie później zresetowany.
Polecenie aktualnie wykonywane lub mające zostać wykonane, chyba że powłoka wykonuje polecenie w wyniku pułapki, w którym to przypadku jest to polecenie wykonywane w czasie pułapki. Jeśli BASH_COMMAND nie jest ustawione, traci swoje specjalne właściwości, nawet jeśli zostanie później zresetowane.
Argument polecenia opcji wywołania -c.
Zmienna tablicowa, której elementami są numery wierszy w plikach źródłowych, w których wywołano każdy odpowiadający element NAZWA FUNKCJI. $ {BASH_LINENO[$i]} to numer wiersza w pliku źródłowym ($ {BASH_SOURCE[<$i+1]}) gdzie $ {FUNCNAME[$i ]} została wywołana (lub $ {BASH_LINENO[$i-1]}, jeśli odwołuje się do niej inna funkcja powłoki) . Użyj LINENO, aby uzyskać bieżący numer linii.
Rozdzielana dwukropkami lista katalogów, w których powłoka szuka dynamicznie ładowalnych elementów wbudowanych określonych poleceniem enable.
Zmienna tablicowa, której elementy są przypisane przez operator binarny =~ do polecenia warunkowego [[. Element o indeksie 0 to część łańcucha pasująca do całego wyrażenia regularnego. Element z indeksem n to część łańcucha pasująca do ntego podwyrażenia w nawiasach.
Zmienna tablicowa, której elementami są nazwy plików źródłowych, w których zdefiniowane są odpowiednie nazwy funkcji powłoki w zmiennej tablicowej NAZWA FUNKCJI. Funkcja powłoki $ {FUNCNAME[$i]} jest zdefiniowana w pliku $ {BASH_SOURCE[$i]} i zadzwoniono z $ {BASH_SOURCE[$i+1 ]}.
Zwiększany o jeden w każdej podpowłoce lub środowisku podpowłoki, gdy powłoka zaczyna działać w tym środowisku. Wartość początkowa to 0. Jeśli BASH_SUBSHELL nie jest ustawiony, traci swoje specjalne właściwości, nawet jeśli zostanie później zresetowany.
Zmienna tablicowa tylko do odczytu, której elementy przechowują informacje o wersji tej instancji bash. Wartości przypisane do elementów tablicy są następujące:
Główny numer wersji (wydanie).
Pomocniczy numer wersji (wersja).
Poziom patcha.
Wersja kompilacji.
Stan wydania (np. beta1).
Wartość MACHTYPE.
Rozwija się do ciągu opisującego wersję tej instancji bash.
Indeks do $ {COMP_WORDS} słowa zawierającego bieżącą pozycję kursora. Ta zmienna jest dostępna tylko w funkcjach powłoki wywoływanych przez funkcje programowalnego uzupełniania (patrz Programowalne uzupełnianie poniżej).
Klawisz (lub ostatni klawisz sekwencji klawiszy) używany do wywołania bieżącej funkcji uzupełniania.
Bieżąca linia poleceń. Ta zmienna jest dostępna tylko w funkcjach powłoki i poleceniach zewnętrznych wywoływanych przez narzędzia programowalnego uzupełniania (patrz Programowalne uzupełnianie poniżej).
Indeks bieżącej pozycji kursora względem początku bieżącego polecenia. Jeśli bieżąca pozycja kursora znajduje się na końcu bieżącego polecenia, 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 narzędzia programowalnego uzupełniania (patrz Programowalne uzupełnianie poniżej).
Ustawia się na wartość całkowitą odpowiadającą rodzajowi próby uzupełnienia, który spowodował wywołanie funkcji uzupełniania: TAB, dla normalnego uzupełniania, ?, dla wyświetlania uzupełnień po kolejnych tabulatorach, !, aby wyświetlić listę alternatyw dla częściowego uzupełnienia słowa, @, aby wyświetlić listę uzupełnień, jeśli słowo nie jest niezmodyfikowane, lub %, aby uzupełnić menu. Ta zmienna jest dostępna tylko w funkcjach powłoki i poleceniach zewnętrznych wywoływanych przez narzędzia programowalnego uzupełniania (patrz Programowalne uzupełnianie poniżej).
Zestaw znaków, który biblioteka readline traktuje jako separatory słów podczas uzupełniania słów. Jeśli COMP_WORDBREAKS nie jest ustawiony, traci swoje specjalne właściwości, nawet jeśli zostanie później zresetowany.
Zmienna tablicowa (patrz Tablice poniżej) składająca się z pojedynczych słów w bieżącym wierszu poleceń. Wiersz jest podzielony na słowa tak, jak readline podzieliłby go, używając COMP_WORDBREAKS, jak opisano powyżej. Ta zmienna jest dostępna tylko w funkcjach powłoki wywoływanych przez funkcje programowalnego uzupełniania (patrz Programowalne uzupełnianie poniżej).
Zmienna tablicowa (zobacz Tablice poniżej) utworzona w celu przechowywania deskryptorów plików wyjściowych i wejściowych do nienazwanego koprocesu (zobacz Koprocesy powyżej).
Zmienna tablicowa (patrz 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. Przypisywanie do członków tej zmiennej tablicowej może być użyte do modyfikowania katalogów znajdujących się już na stosie, ale wbudowane pushd i popd muszą być używane do dodawania i usuwania katalogów. Przypisanie do tej zmiennej nie zmieni bieżącego katalogu. Jeśli DIRSTACK nie jest ustawione, traci swoje specjalne właściwości, nawet jeśli zostanie później zresetowane.
Za każdym razem, gdy odwołuje się do tego parametru, rozszerza się on do liczby sekund, które upłynęły od epoki systemu Unix (patrz czas(3)) jako wartość zmiennoprzecinkowa z dokładnością do mikrosekund. Przypisania do EPOCHREALTIME są ignorowane. Jeśli EPOCHREALTIME nie jest ustawiony, traci swoje specjalne właściwości, nawet jeśli zostanie później zresetowany.
Za każdym razem, gdy następuje odwołanie do tego parametru, rozszerza się on do liczby sekund, które upłynęły od epoki Uniksa (patrz czas(3)). Przypisania do EPOCHSECONDS są ignorowane. Jeśli EPOCHSECONDS nie jest ustawione, traci swoje specjalne właściwości, nawet jeśli zostanie później zresetowane.
Rozwija się do efektywnego identyfikatora bieżącego użytkownika, inicjowanego podczas uruchamiania powłoki. Ta zmienna jest tylko do odczytu.
Zmienna tablicowa zawierająca nazwy wszystkich funkcji powłoki znajdujących się aktualnie na stosie wywołań wykonania. Element z indeksem 0 to nazwa aktualnie wykonywanej funkcji powłoki. Najniższy element (ten z najwyższym indeksem) to „main”. Ta zmienna istnieje tylko wtedy, gdy wykonywana jest funkcja powłoki. Przypisania do FUNCNAME nie mają żadnego efektu. Jeśli NAZWA FUNKCJI nie jest ustawiona, traci swoje specjalne właściwości, nawet jeśli zostanie później zresetowana.
Tej zmiennej można używać z BASH_LINENO i BASH_SOURCE. Każdy element FUNCNAME ma odpowiadające mu elementy w BASH_LINENO i BASH_SOURCE, które opisują stos wywołań. Na przykład $ {FUNCNAME[$i]} został wywołany z pliku $ {BASH_SOURCE[$i+1]} pod numerem wiersza $ {BASH_LINENO[$i ]}. Wbudowana funkcja caller wyświetla bieżący stos wywołań przy użyciu tych informacji.
Zmienna tablicowa zawierająca listę grup, których członkiem jest bieżący użytkownik. Przypisania do GROUPS nie mają żadnego efektu. Jeśli GROUPS nie jest ustawione, traci swoje specjalne właściwości, nawet jeśli zostanie później zresetowane.
Numer historii lub indeks na liście historii bieżącego polecenia. Przypisania do HISTCMD są ignorowane. Jeśli HISTCMD nie jest ustawiony, traci swoje specjalne właściwości, nawet jeśli zostanie później zresetowany.
Automatycznie ustawiana na nazwę bieżącego hosta.
Automatycznie ustawiana na ciąg, który jednoznacznie opisuje typ maszyny, na której wykonywany jest bash. Wartość domyślna zależy od systemu.
Za każdym razem, gdy następuje odwołanie do tego parametru, powłoka podstawia liczbę dziesiętną reprezentującą bieżący numer wiersza sekwencyjnego (zaczynając od 1) w skrypcie lub funkcji. Gdy nie ma go w skrypcie lub funkcji, podstawiana wartość nie ma gwarancji, że będzie znacząca. Jeśli LINENO nie jest ustawione, traci swoje specjalne właściwości, nawet jeśli zostanie później zresetowane.
Automatycznie ustawiany na ciąg, który w pełni opisuje typ systemu, na którym działa bash, w standardowym formacie GNU cpu-company-system. Wartość domyślna zależy od systemu.
Zmienna tablicowa (patrz Tablice poniżej) utworzona w celu przechowywania tekstu odczytywanego przez wbudowany plik mapfile, gdy nie podano nazwy zmiennej.
Poprzedni katalog roboczy ustawiony poleceniem cd.
Wartość ostatniego argumentu opcji przetworzonego przez wbudowane polecenie getopts (patrz WBUDOWANE POLECENIA POWŁOKI poniżej).
Indeks następnego argumentu, który ma zostać przetworzony przez wbudowane polecenie getopts (patrz WBUDOWANE POLECENIA POWŁOKI poniżej).
Automatycznie ustawiany na ciąg znaków opisujący system operacyjny, na którym działa bash. Wartość domyślna zależy od systemu.
Zmienna tablicowa (patrz Tablice poniżej) zawierająca listę wartości stanu wyjścia z procesów w ostatnio wykonanym potoku pierwszoplanowym (który może zawierać tylko jedno polecenie).
Identyfikator procesu rodzica powłoki. Ta zmienna jest tylko do odczytu.
Bieżący katalog roboczy ustawiony przez polecenie cd.
Za każdym razem, gdy następuje odwołanie do tego parametru, rozwija się on do losowej liczby całkowitej z przedziału od 0 do 32767. Przypisanie wartości do RANDOM inicjalizuje (początek) sekwencję liczb losowych. Jeśli RANDOM nie jest ustawione, traci swoje specjalne właściwości, nawet jeśli zostanie później zresetowane.
Zawartość bufora linii readline, do użycia z "bind -x" (patrz WBUDOWANE POLECENIA POWŁOKI poniżej).
Pozycja znacznika (zapisany punkt wstawiania) w buforze linii readline, do użycia z "bind -x" (patrz WBUDOWANE POLECENIA POWŁOKI poniżej). Znaki między punktem wstawiania a znakiem są często nazywane regionem.
Pozycja punktu wstawiania w buforze linii readline, do użycia z "bind -x" (patrz WBUDOWANE POLECENIA POWŁOKI poniżej).
Ustawia linię wejścia odczytywaną przez wbudowane polecenie read, gdy nie podano żadnych argumentów.
Za każdym razem, gdy następuje odwołanie do tego parametru, zwracana jest liczba sekund od wywołania powłoki. Jeśli wartość jest przypisana do SECONDS, wartość zwracana przy kolejnych odwołaniach to liczba sekund od przypisania plus przypisana wartość. Liczba sekund przy wywołaniu powłoki i bieżący czas są zawsze określane przez zapytanie do zegara systemowego. Jeśli SECONDS nie jest ustawione, traci swoje specjalne właściwości, nawet jeśli zostanie później zresetowane.
Rozdzielana dwukropkami lista włączonych opcji powłoki. Każde słowo na liście jest prawidłowym argumentem dla opcji -o wbudowanego polecenia set (zobacz WBUDOWANE POLECENIA POWŁOKI poniżej). Opcje pojawiające się w SHELLOPTS to te zgłoszone jako on przez set -o. Jeśli ta zmienna znajduje się w środowisku podczas uruchamiania bash, każda opcja powłoki na liście zostanie włączona przed odczytaniem jakichkolwiek plików startowych. Ta zmienna jest tylko do odczytu.
Zwiększany o jeden przy każdym uruchomieniu instancji bash.
Ta zmienna rozwija się do 32-bitowej liczby pseudolosowej przy każdym odwołaniu. Generator liczb losowych nie jest liniowy w systemach obsługujących /dev/urandom lub arc4random, więc każda zwrócona liczba nie ma żadnego związku z liczbami ją poprzedzającymi. Generatora liczb losowych nie można zaszczepić, więc przypisania do tej zmiennej nie mają żadnego efektu. Jeśli SRANDOM nie jest ustawiony, traci swoje specjalne właściwości, nawet jeśli zostanie później zresetowany.
Rozwija się do identyfikatora bieżącego użytkownika, inicjowanego podczas uruchamiania powłoki. Ta zmienna jest tylko do odczytu.
Następujące zmienne są używane przez powłokę. W niektórych przypadkach bash przypisuje zmiennej wartość domyślną; przypadki te opisano poniżej.
Wartość służy do ustawienia poziomu kompatybilności powłoki. Zobacz TRYB ZGODNOŚCI Z POWŁOKĄ poniżej, aby zapoznać się z opisem różnych poziomów kompatybilności i ich skutków. Wartość może być liczbą dziesiętną (np. 4,2) lub liczbą całkowitą (np. 42) odpowiadającą żądanemu poziomowi zgodności. Jeśli BASH_COMPAT jest nieustawiony lub ustawiony na pusty łańcuch, poziom zgodności jest ustawiony na domyślny dla bieżącej wersji. Jeśli BASH_COMPAT jest ustawiony na wartość, która nie jest jednym z prawidłowych poziomów zgodności, powłoka drukuje komunikat o błędzie i ustawia poziom zgodności na domyślny dla bieżącej wersji. Prawidłowe wartości odpowiadają poziomom kompatybilności opisanym poniżej w
BSHELLZGODNOŚĆTRYB. Na przykład 4.2 i 42 to prawidłowe wartości, które odpowiadają opcji compat42 shopt i ustawiają poziom zgodności na 42. Bieżąca wersja jest również prawidłową wartością.
Jeśli ten parametr jest ustawiony, gdy bash wykonuje skrypt powłoki, jego wartość jest interpretowana jako nazwa pliku zawierającego polecenia inicjujące powłokę, jak w ~/.bashrc. Wartość BASH_ENV podlega interpretacji parametrów, podstawianiu poleceń i interpretacji arytmetycznej, zanim zostanie zinterpretowana jako nazwa pliku.
PATH nie jest używany do wyszukiwania wynikowej nazwy pliku.
Jeśli ustawione na liczbę całkowitą odpowiadającą poprawnemu deskryptorowi pliku, bash zapisze wynik śledzenia wygenerowany po włączeniu set -x do tego deskryptora pliku. Deskryptor pliku jest zamykany, gdy BASH_XTRACEFD nie jest ustawiony lub ma przypisaną nową wartość. Odznaczenie BASH_XTRACEFD lub przypisanie mu pustego łańcucha powoduje wysłanie danych wyjściowych śledzenia do błędu standardowego. Zauważ, że ustawienie BASH_XTRACEFD na 2 (standardowy deskryptor pliku błędów), a następnie usunięcie tego ustawienia spowoduje zamknięcie standardowego błędu.
Ścieżka wyszukiwania dla polecenia cd. Jest to oddzielona dwukropkami lista katalogów, w których powłoka szuka katalogów docelowych określonych poleceniem cd. Przykładowa wartość to ".:~:/usr".
Ustaw liczbę zakończonych wartości statusu potomnego, które ma zapamiętać powłoka. Bash nie pozwoli na zmniejszenie tej wartości poniżej minimum wymaganego przez POSIX, a istnieje maksymalna wartość (obecnie 8192), której nie można przekroczyć. Minimalna wartość zależy od systemu.
Używany przez polecenie złożone select do określania szerokości terminala podczas drukowania list wyboru. Ustawiany automatycznie, jeśli opcja checkwinsize jest włączona lub w powłoce interaktywnej po otrzymaniu SIGWINCH.
Zmienna tablicowa, z której bash odczytuje możliwe uzupełnienia wygenerowane przez funkcję powłoki wywołaną przez funkcję programowalnego uzupełniania (patrz Programowalne uzupełnianie poniżej). Każdy element tablicy zawiera jedno możliwe uzupełnienie.
Jeśli bash znajdzie tę zmienną w środowisku, gdy powłoka zaczyna się od wartości „t”, zakłada, że powłoka działa w buforze powłoki Emacsa i wyłącza edycję linii.
Rozwijany i wykonywany podobnie do BASH_ENV (patrz INVOCATION powyżej), gdy interaktywna powłoka jest wywoływana w trybie POSIX.
Rozdzielana dwukropkami lista wzorców powłoki (zobacz Pattern Matching) określająca listę nazw plików, które mają być ignorowane przez wyszukiwanie poleceń przy użyciu PATH. Pliki, których pełne nazwy ścieżek pasują do jednego z tych wzorców, nie są uważane za pliki wykonywalne do celów uzupełniania i wykonywania poleceń za pomocą wyszukiwania PATH. Nie ma to wpływu na działanie poleceń [, test i [[. Pełne nazwy ścieżek w tabeli skrótów poleceń nie podlegają EXECIGNORE. Użyj tej zmiennej, aby zignorować pliki bibliotek współdzielonych, które mają ustawiony bit wykonywalności, ale nie są plikami wykonywalnymi. Dopasowywanie wzorców honoruje ustawienie opcji powłoki extglob.
Domyślny edytor wbudowanego polecenia fc.
Rozdzielana dwukropkami lista sufiksów, które należy zignorować podczas uzupełniania nazw plików (patrz READLINE poniżej). Nazwa pliku, której sufiks pasuje do jednego z wpisów w FIGNORE, jest wykluczona z listy pasujących nazw plików. Przykładowa wartość to „.o:~”.
Jeśli jest ustawiona na wartość liczbową większą niż 0, określa maksymalny poziom zagnieżdżenia funkcji. Wywołania funkcji przekraczające ten poziom zagnieżdżenia spowodują przerwanie bieżącego polecenia.
Rozdzielana dwukropkami lista wzorców definiujących zestaw nazw plików, które mają być ignorowane przez rozwinięcie nazwy ścieżki. Jeśli nazwa pliku dopasowana przez wzorzec rozwinięcia nazwy ścieżki pasuje również do jednego ze wzorców w GLOBIGNORE, zostaje usunięta z listy dopasowań.
Rozdzielana dwukropkami lista wartości kontrolujących sposób zapisywania poleceń na liście historii. Jeśli lista wartości zawiera ignorespace, wiersze zaczynające się od znaku spacji nie są zapisywane na liście historii. Wartość ignoredups powoduje, że wiersze pasujące do poprzedniego wpisu historii nie są zapisywane. Wartość ignoreboth to skrót od ignorespace i ignoredups. Wartość erasedups powoduje, że wszystkie poprzednie linie pasujące do bieżącej linii są usuwane z listy historii przed zapisaniem tej linii. Każda wartość spoza powyższej listy jest ignorowana. Jeśli HISTCONTROL nie jest ustawiony lub nie zawiera prawidłowej wartości, wszystkie wiersze odczytane przez parser powłoki są zapisywane na liście historii, z zastrzeżeniem wartości HISTIGNORE. Drugi i kolejne wiersze wielowierszowego polecenia złożonego nie są testowane i są dodawane do historii niezależnie od wartości HISTCONTROL.
Nazwa pliku, w którym zapisana jest historia poleceń (patrz HISTORIA poniżej). Domyślna wartość to ~/.bash_history. Jeśli nie jest ustawiona, historia poleceń nie jest zapisywana po zamknięciu powłoki.
Maksymalna liczba wierszy zawartych w pliku historii. Kiedy tej zmiennej przypisywana jest wartość, plik historii jest w razie potrzeby obcinany tak, aby zawierał nie więcej niż tę liczbę wierszy, usuwając najstarsze wpisy. Plik historii jest również obcinany do tego rozmiaru po zapisaniu go po zamknięciu powłoki. Jeśli wartość wynosi 0, plik historii jest obcinany do rozmiaru zerowego. Wartości nieliczbowe i wartości liczbowe mniejsze od zera uniemożliwiają obcinanie. Powłoka ustawia wartość domyślną na wartość HISTSIZE po odczytaniu jakichkolwiek plików startowych.
Rozdzielana dwukropkami lista wzorców używanych do decydowania, które wiersze poleceń powinny zostać zapisane na liście historii. Każdy wzorzec jest zakotwiczony na początku wiersza i musi pasować do całego wiersza (nie jest dodawane żadne ukryte `*'). Każdy wzór jest testowany względem linii po zastosowaniu kontroli określonych przez HISTCONTROL. Oprócz zwykłych znaków pasujących do wzorca powłoki, `&' dopasowuje poprzednią linię historii. `&' można poprzedzić ukośnikiem odwrotnym; ukośnik odwrotny jest usuwany przed próbą dopasowania. Drugi i kolejne wiersze wielowierszowego polecenia złożonego nie są testowane i są dodawane do historii niezależnie od wartości HISTIGNORE. Dopasowywanie wzorców honoruje ustawienie opcji powłoki extglob.
Liczba poleceń do zapamiętania w historii poleceń (patrz HISTORIA poniżej). Jeśli wartość wynosi 0, polecenia nie są zapisywane na liście historii. Wartości liczbowe mniejsze od zera powodują zapisanie każdego polecenia na liście historii (nie ma limitu). Powłoka ustawia wartość domyślną na 500 po odczytaniu jakichkolwiek plików startowych.
Jeśli ta zmienna jest ustawiona i nie jest pusta, jej wartość jest używana jako ciąg formatu dla strftime(3) do drukowania znacznika czasu powiązanego z każdym wpisem historii wyświetlanym przez historię wbudowane. Jeśli ta zmienna jest ustawiona, znaczniki czasu są zapisywane w pliku historii, dzięki czemu mogą być zachowywane między sesjami powłoki. Wykorzystuje znak komentarza historii do odróżnienia znaczników czasu od innych wierszy historii.
Katalog domowy bieżącego użytkownika; domyślny argument wbudowanego polecenia cd. Wartość tej zmiennej jest również używana podczas interpretacji tyldy.
Zawiera nazwę pliku w takim samym formacie jak /etc/hosts , który powinien być odczytany, gdy powłoka musi uzupełnić nazwę hosta. Lista możliwych uzupełnień nazwy hosta może zostać zmieniona podczas działania powłoki; przy następnej próbie uzupełnienia nazwy hosta po zmianie wartości bash dodaje zawartość nowego pliku do istniejącej listy. Jeśli HOSTFILE jest ustawione, ale nie ma żadnej wartości lub nie nadaje nazwy czytelnemu plikowi, bash próbuje odczytać /etc/hosts w celu uzyskania lista możliwych uzupełnień nazwy hosta. Gdy HOSTFILE nie jest ustawione, lista nazw hostów jest wyczyszczona.
Wewnętrzny separator pól, który jest używany do dzielenia słów po rozwinięciu i do dzielenia wierszy na słowa za pomocą wbudowanego polecenia read. Wartość domyślna to ``
Steruje działaniem powłoki interaktywnej po otrzymaniu znaku EOF jako jedynego wejścia. Jeśli jest ustawiona, wartością jest liczba kolejnych znaków EOF, które muszą być wpisane jako pierwsze znaki w wierszu wprowadzania przed wyjściem z bash. Jeśli zmienna istnieje, ale nie ma wartości numerycznej lub nie ma wartości, domyślną wartością jest 10. Jeśli zmienna nie istnieje, EOF oznacza koniec wprowadzania danych do powłoki.
Nazwa pliku startowego readline, nadpisująca domyślną ~/.inputrc (patrz READLINE poniżej).
Jeśli ta zmienna pojawia się w środowisku podczas uruchamiania powłoki, bash zakłada, że jest ona uruchomiona wewnątrz bufora powłoki Emacsa i może wyłączyć edycję linii, w zależności od wartości TERM.
Służy do określania kategorii ustawień regionalnych dla dowolnej kategorii, która nie została specjalnie wybrana ze zmienną zaczynającą się od LC_.
Ta zmienna zastępuje wartość LANG i każdą inną zmienną LC_ określającą kategorię ustawień regionalnych.
Ta zmienna określa kolejność sortowania używaną podczas sortowania wyników interpretacji nazw ścieżek i określa zachowanie wyrażeń zakresu, klas równoważności i sekwencji zestawiania w ramach interpretacji nazw ścieżek i dopasowywania wzorców.
Ta zmienna określa interpretację znaków i zachowanie klas znaków w rozwijaniu nazw ścieżek i dopasowywaniu wzorców.
Ta zmienna określa ustawienia regionalne używane do tłumaczenia łańcuchów ujętych w podwójne cudzysłowy poprzedzonych znakiem $.
Ta zmienna określa kategorię ustawień regionalnych używaną do formatowania liczb.
Ta zmienna określa kategorię ustawień narodowych używaną do formatowania danych i czasu.
Używany przez polecenie złożone select do określania długości kolumn do drukowania list wyboru. Ustawiany automatycznie, jeśli opcja checkwinsize jest włączona lub w powłoce interaktywnej po otrzymaniu SIGWINCH.
Jeśli ten parametr jest ustawiony na nazwę pliku lub katalogu, a zmienna MAILPATH nie jest ustawiona, bash informuje użytkownika o nadejściu poczty w określonym pliku lub formacie Maildir informator.
Określa, jak często (w sekundach) bash sprawdza pocztę. Wartość domyślna to 60 sekund. Gdy nadchodzi czas sprawdzenia poczty, powłoka robi to przed wyświetleniem głównego monitu. Jeśli ta zmienna jest nieustawiona lub ustawiona na wartość, która nie jest liczbą większą lub równą zeru, powłoka wyłącza sprawdzanie poczty.
Rozdzielana dwukropkami lista nazw plików do sprawdzenia poczty. Wiadomość, która ma zostać wydrukowana, gdy poczta nadejdzie w określonym pliku, może zostać określona przez oddzielenie nazwy pliku od wiadomości znakiem `?'. W przypadku użycia w tekście wiadomości $_ rozwija się do nazwy bieżącego pliku pocztowego. Przykład:
MAILPATH='/var/mail/bfox?"You have mail":~/shell-mail?"$_ has mail!"'
Bash można skonfigurować tak, aby dostarczał wartość domyślną dla tej zmiennej (domyślnie nie ma żadnej wartości), ale lokalizacja używanych plików poczty użytkownika zależy od systemu (np. ).
/var/mail/$USER
Jeśli ustawione na wartość 1, bash wyświetla komunikaty o błędach generowane przez wbudowane polecenie getopts (patrz WBUDOWANE POLECENIA POWŁOKI poniżej).
OPTERR jest inicjowany na 1 przy każdym wywołaniu powłoki lub wykonaniu skryptu powłoki.
Ścieżka wyszukiwania poleceń. Jest to oddzielona dwukropkami lista katalogów, w których powłoka szuka poleceń (patrz Wykonywanie poleceń poniżej). Nazwa katalogu o zerowej długości (null) w wartości PATH wskazuje bieżący katalog. Pusta nazwa katalogu może być wyświetlana jako dwa sąsiednie dwukropki albo jako początkowy lub końcowy dwukropek. Domyślna ścieżka zależy od systemu i jest ustalana przez administratora, który instaluje bash. Wspólną wartością jest
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin
Jeśli ta zmienna znajduje się w środowisku podczas uruchamiania bash, powłoka wchodzi w tryb POSIX przed odczytaniem plików startowych, tak jakby wywołanie --posix opcja została dostarczona. Jeśli jest ustawiony podczas działania powłoki, 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 została wcześniej ustawiona.
Jeśli ta zmienna jest ustawiona i jest tablicą, wartość każdego ustawionego elementu jest wykonywana jako polecenie przed wydaniem każdego podstawowego monitu. Jeśli to jest ustawione, ale nie jest zmienną tablicową, jej wartość jest używana jako polecenie do wykonania.
Jeśli jest ustawiona na liczbę większą od zera, wartość ta jest używana jako liczba końcowych składników katalogu, które mają zostać zachowane podczas rozwijania znaków zapytania \w i \W (patrz \w i \W (patrz POMOC poniżej). Usunięte znaki są zastępowane wielokropkiem.
Wartość tego parametru jest rozwijana (patrz PODPOWIEDŹ poniżej) i wyświetlana przez interaktywne powłoki po odczytaniu polecenia i przed wykonaniem polecenia.
Wartość tego parametru jest rozwijana (zobacz PODPOWIEDŹ poniżej) i używana jako główny ciąg zachęty. Wartość domyślna to ``\s-\v\$''.
Wartość tego parametru jest rozwijana jak w przypadku PS1 i używana jako dodatkowy ciąg zachęty. Wartością domyślną jest ``> ''.
Wartość tego parametru jest używana jako znak zachęty dla polecenia select (patrz GRAMATYKA POWŁOKI powyżej).
Wartość tego parametru jest rozwijana jak w przypadku PS1 i jest drukowana przed wyświetleniem każdego polecenia bash podczas śledzenia wykonania. Pierwszy znak rozwiniętej wartości PS4 jest w razie potrzeby powielany wielokrotnie, aby wskazać wiele poziomów pośrednich. Wartością domyślną jest ``+ ''.
Ta zmienna rozwija się do pełnej ścieżki do powłoki. Jeśli nie jest ustawiony podczas uruchamiania powłoki, bash przypisuje mu pełną ścieżkę do powłoki logowania bieżącego użytkownika.
Wartość tego parametru jest używana jako ciąg formatu określający sposób wyświetlania informacji o taktowaniu dla potoków poprzedzonych słowem zastrzeżonym time. Znak % wprowadza sekwencję specjalną, która jest rozwijana do wartości czasu lub innych informacji. Sekwencje ucieczki i ich znaczenie są następujące; nawiasy klamrowe oznaczają części opcjonalne.
Dosłowne %.
Upływający czas w sekundach.
Liczba sekund procesora spędzonych w trybie użytkownika.
Liczba sekund procesora spędzonych w trybie systemowym.
Procent procesora obliczony jako (%U + %S)/%R.
Opcjonalne p to cyfra określająca precyzję, czyli liczbę cyfr ułamkowych po przecinku. Wartość 0 powoduje, że kropka dziesiętna lub ułamek dziesiętny nie są wyprowadzane. Maksymalnie można podać trzy miejsca po przecinku; wartości p większe niż 3 są zmieniane na 3. Jeśli nie podano p, używana jest wartość 3.
Opcjonalny l określa dłuższy format, w tym minuty, w postaci MMmSS.FFs. Wartość p określa, czy ułamek zostanie uwzględniony.
Jeśli ta zmienna nie jest ustawiona, bash działa tak, jakby miała wartość $'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS' . Jeśli wartość jest równa null, nie są wyświetlane żadne informacje o chronometrażu. Końcowy znak nowej linii jest dodawany, gdy wyświetlany jest ciąg formatu.
Jeśli ustawione na wartość większą niż zero, TMOUT jest traktowane jako domyślny limit czasu dla wbudowanego read. Polecenie select kończy działanie, jeśli dane wejściowe nie nadejdą później
TMOUT sekund, gdy wejście pochodzi z terminala. W powłoce interaktywnej wartość jest interpretowana jako liczba sekund oczekiwania na linię wejścia po wydaniu podstawowego monitu. Bash kończy działanie po odczekaniu określonej liczby sekund, jeśli nie nadejdzie pełny wiersz danych wejściowych.
Jeśli jest ustawiony, bash używa swojej wartości jako nazwy katalogu, w którym bash tworzy pliki tymczasowe na użytek powłoki.
Ta zmienna steruje interakcją powłoki z użytkownikiem i kontrolą zadania. Jeśli ta zmienna jest ustawiona, pojedyncze proste polecenia bez przekierowań są traktowane jako kandydaci do wznowienia istniejącego zatrzymanego zadania. Nie ma dwuznaczności; jeśli istnieje więcej niż jedno zadanie rozpoczynające się od wpisanego ciągu, wybierane jest zadanie, do którego uzyskano ostatnio dostęp. W tym kontekście nazwa zatrzymanego zadania to linia poleceń używana do jego uruchomienia. Jeśli ustawione na wartość dokładnie, podany łańcuch musi dokładnie pasować do nazwy zatrzymanego zadania; jeśli ustawione na substring, dostarczony ciąg musi pasować do podłańcucha nazwy zatrzymanego zadania. Wartość substring zapewnia funkcjonalność analogiczną do identyfikatora zadania %? (patrz KONTROLA ZADANIA poniżej). Jeśli jest ustawiona na jakąkolwiek inną wartość, podany ciąg znaków musi być przedrostkiem nazwy zatrzymanego zadania; zapewnia to funkcjonalność analogiczną do identyfikatora zadania %string.
Dwie lub trzy postacie, które kontrolują rozszerzanie i tokenizację historii (patrz ROZWIJANIE HISTORII poniżej). Pierwszym znakiem jest rozwinięcie historii, znak, który sygnalizuje początek rozwinięcia historii, zwykle `!'. Drugi znak to znak szybkiego podstawiania, który jest używany jako skrót do ponownego uruchomienia poprzednio wprowadzonego polecenia, zastępując jeden łańcuch innym w poleceniu. Wartością domyślną jest `^'. Opcjonalny trzeci znak to znak, który wskazuje, że pozostała część wiersza jest komentarzem, jeśli zostanie znaleziona jako pierwszy znak słowa, zwykle `#'. Znak komentarza historii powoduje pominięcie podstawiania historii dla pozostałych słów w wierszu. Niekoniecznie powoduje to, że parser powłoki traktuje resztę linii jako komentarz.
Bash udostępnia jednowymiarowe, indeksowane i asocjacyjne zmienne tablicowe. Dowolna zmienna może być użyta jako tablica indeksowana; wbudowane declare jawnie zadeklaruje tablicę. Nie ma maksymalnego limitu rozmiaru tablicy ani wymogu, aby elementy były indeksowane lub przypisywane w sposób ciągły. Tablice indeksowane są odwoływane przy użyciu liczb całkowitych (w tym wyrażeń arytmetycznych) i są liczone od zera; tablice asocjacyjne są przywoływane przy użyciu dowolnych ciągów znaków. O ile nie zaznaczono inaczej, indeksy tablic indeksowanych muszą być nieujemnymi liczbami całkowitymi.
Tablica indeksowana jest tworzona automatycznie, jeśli dowolnej zmiennej zostanie przypisana składnia nazwa[indeks dolny]=wartość. indeks dolny jest traktowany jako wyrażenie arytmetyczne, którego wynikiem musi być liczba. Aby jawnie zadeklarować indeksowaną tablicę, użyj declare -a nazwa (zobacz WBUDOWANE POLECENIA POWŁOKI poniżej). deklaracja -a nazwa[indeks dolny] jest również akceptowana; indeks dolny jest ignorowany.
Tablice asocjacyjne są tworzone przy użyciu declare -A nazwa.
Atrybuty mogą być określone dla zmiennej tablicowej za pomocą wbudowanych funkcji deklaruj i tylko do odczytu. Każdy atrybut dotyczy wszystkich członków tablicy.
Tablice są przypisane do przypisań złożonych w postaci nazwa=(wartość1 ...wartośćn), gdzie każda wartość może mieć postać [indeks dolny]=ciąg znaków. Indeksowane przypisania tablic nie wymagają niczego poza łańcuchem znaków. Każda wartość na liście jest rozwijana przy użyciu wszystkich rozszerzeń powłoki opisanych poniżej w sekcji EXPANSION. Podczas przypisywania do tablic indeksowanych, jeśli podano opcjonalne nawiasy i indeks dolny, ten indeks jest przypisywany do; w przeciwnym razie indeks przypisanego elementu jest ostatnim indeksem przypisanym przez instrukcję plus jeden. Indeksowanie zaczyna się od zera.
Podczas przypisywania do tablicy asocjacyjnej słowa w przypisaniu złożonym mogą być instrukcjami przypisania, dla których wymagany jest indeks dolny, lub listą słów, która jest interpretowana jako sekwencja naprzemiennych kluczy i wartości: nazwa =( klucz1 wartość1 klucz2 wartość2 ...). Są one traktowane identycznie jak nazwa=( [klucz1]=wartość1 [klucz2 ]=wartość2 ...). Pierwsze słowo na liście określa sposób interpretacji pozostałych słów; wszystkie przypisania na liście muszą być tego samego typu. W przypadku używania par klucz/wartość nie może ich brakować ani być pustych; końcowa brakująca wartość jest traktowana jak pusty łańcuch.
Ta składnia jest również akceptowana przez wbudowane declare. Poszczególnym elementom tablicy można przypisać za pomocą wprowadzonej powyżej składni nazwa[indeks dolny]=wartość. Podczas przypisywania do tablicy indeksowanej, jeśli nazwa jest poprzedzona liczbą ujemną, liczba ta jest interpretowana jako względna o jeden większa niż maksymalny indeks nazwa, więc liczą się indeksy ujemne wstecz od końca tablicy, a indeks -1 odwołuje się do ostatniego elementu.
Do dowolnego elementu tablicy można się odwoływać za pomocą $ {nazwa[indeks dolny]}. Nawiasy klamrowe są wymagane, aby uniknąć konfliktów z rozwijaniem nazw ścieżek. Jeśli indeks dolny to @ lub *, słowo rozwija się do wszystkich członków nazwa. Te indeksy dolne różnią się tylko wtedy, gdy słowo pojawia się w podwójnym cudzysłowie. Jeśli słowo jest w podwójnym cudzysłowie, $ {nazwa[*]} jest interpretowane do pojedynczego słowa z wartością każdego elementu tablicy oddzieloną pierwszym znakiem IFS specjalną zmienną, a $ {nazwa[@]} rozwija każdy element nazwa do osobnego słowa. Gdy nie ma elementów tablicy, $ {nazwa[@]} rozwija się do zera. Jeśli interpretacja w cudzysłowie występuje w słowie, interpretacja pierwszego parametru jest łączona z początkową częścią oryginalnego słowa, a interpretacja ostatniego parametru jest łączona z ostatnią częścią oryginalnego słowa. Jest to analogiczne do rozwinięcia parametrów specjalnych * i @ (patrz Parametry specjalne powyżej). $ {#nazwa[indeks dolny]} rozwija się do długości $ {nazwa[indeks dolny ]}. Jeśli indeks dolny to * lub @, rozwinięciem jest liczba elementów w tablicy. Jeśli indeks dolny używany do odniesienia elementu tablicy indeksowanej daje w wyniku liczbę mniejszą od zera, jest interpretowany jako względny o jeden większy niż maksymalny indeks tablicy, więc indeksy ujemne liczą wstecz od koniec tablicy, a indeks -1 odwołuje się do ostatniego elementu.
Odwoływanie się do zmiennej tablicowej bez indeksu dolnego jest równoznaczne z odwoływaniem się do tablicy z indeksem dolnym równym 0. Każde odwołanie do zmiennej przy użyciu poprawnego indeksu dolnego jest dozwolone, a bash utworzy tablicę, jeśli to konieczne.
Zmienna tablicowa jest uważana za ustawioną, jeśli indeks dolny ma przypisaną wartość. Ciąg pusty jest prawidłową wartością.
Możliwe jest uzyskanie zarówno kluczy (indeksów) tablicy, jak i wartości. $ {!nazwa[@]} i $ {!nazwa[*]} rozwiń do indeksów przypisanych w zmiennej tablicowej nazwa. Postępowanie w podwójnych cudzysłowach jest podobne do rozwinięcia specjalnych parametrów @ i * w podwójnych cudzysłowach.
Wbudowana funkcja unset służy do niszczenia tablic. unset nazwa[indeks dolny] niszczy element tablicy pod indeksem indeks dolny, zarówno dla tablic indeksowanych, jak i asocjacyjnych. Ujemne indeksy dolne do tablic indeksowanych są interpretowane w sposób opisany powyżej. Anulowanie ustawienia ostatniego elementu zmiennej tablicowej nie powoduje usunięcia ustawienia zmiennej. usuń nazwa, gdzie nazwa jest tablicą lub usuń nazwa[indeks dolny], gdzie indeks dolny to * lub @, usuwa całą tablicę.
Podczas używania nazwy zmiennej z indeksem dolnym jako argumentu polecenia, takiego jak unset, bez użycia składni interpretacji słów opisanej powyżej, argument podlega interpretacji nazwy ścieżki. Jeśli rozwijanie nazw ścieżek nie jest pożądane, argument powinien być zacytowany.
Wbudowane declare, local i readonly akceptują opcję -a określającą indeksowaną tablicę i -A, aby określić tablicę asocjacyjną. Jeśli podano obie opcje, pierwszeństwo ma -A. Wbudowana funkcja read akceptuje opcję -a w celu przypisania do tablicy listy słów odczytanych ze standardowego wejścia. Wbudowane set i deklaracja wyświetlają wartości tablicowe w sposób, który pozwala na ponowne użycie ich jako przypisań.
Ekspansja jest wykonywana w linii poleceń po jej podzieleniu na słowa. Wykonuje się siedem rodzajów interpretacji: interpretacja nawiasów klamrowych, interpretacja tyldy, interpretacja parametrów i zmiennych, podstawianie poleceń, rozwijanie arytmetyczne, dzielenie wyrazów i rozwijanie nazw ścieżek.
Kolejność rozwinięć jest następująca: rozwinięcie nawiasów klamrowych; interpretacja tyldy, interpretacja parametrów i zmiennych, interpretacja arytmetyczna i zastępowanie poleceń (od lewej do prawej); dzielenie słów; i rozwijanie nazw ścieżek.
W systemach, które mogą to obsługiwać, dostępne jest dodatkowe rozszerzenie: podstawianie procesów. Jest to wykonywane w tym samym czasie co tylda, parametr, zmienna i interpretacja arytmetyczna oraz podstawienie polecenia.
Po przeprowadzeniu tych rozwinięć znaki cudzysłowów obecne w oryginalnym słowie są usuwane, chyba że same zostały zacytowane (usuwanie cudzysłowów).
Tylko interpretacja nawiasów klamrowych, dzielenie słów i interpretacja nazw ścieżek może zwiększyć liczbę słów interpretacji; inne rozszerzenia rozszerzają pojedyncze słowo do jednego słowa. Jedynymi wyjątkami są rozszerzenia „$@” i „$ {nazwa[@]}”, aw większości przypadków $* i $ {nazwa[*]} jak wyjaśniono powyżej (patrz PARAMETRY).
Rozwijanie nawiasów to mechanizm, za pomocą którego można generować dowolne ciągi znaków. Ten mechanizm jest podobny do rozwijania nazw ścieżek, ale wygenerowane nazwy plików nie muszą istnieć. Wzorce, które mają być rozwinięte w nawiasy klamrowe, mają postać opcjonalnego preambuły, po którym następuje seria łańcuchów oddzielonych przecinkami lub wyrażenie sekwencyjne między parą nawiasów klamrowych, po którym następuje opcjonalny postscript. Preambuła jest poprzedzana przed każdym ciągiem zawartym w nawiasach klamrowych, a dopisek jest następnie dołączany do każdego wynikowego ciągu, rozszerzając się od lewej do prawej.
Rozszerzenia nawiasów klamrowych mogą być zagnieżdżane. Wyniki każdego rozwiniętego ciągu nie są sortowane; kolejność od lewej do prawej jest zachowana. Na przykład a{d,c,b}e rozwija się do `ade ace abe'.
Wyrażenie sekwencji ma postać {x..y[..<incr]}, gdzie x i y są liczbami całkowitymi lub pojedynczymi znakami, a incr , opcjonalny przyrost, jest liczbą całkowitą. Gdy podane są liczby całkowite, wyrażenie jest interpretowane do każdej liczby z przedziału od x do y włącznie. Podane liczby całkowite mogą być poprzedzone prefiksem 0, aby wymusić, aby każdy termin miał taką samą szerokość. Gdy x lub y zaczyna się od zera, powłoka próbuje wymusić, aby wszystkie wygenerowane terminy zawierały tę samą liczbę cyfr, dopełniając je tam, gdzie to konieczne. Po podaniu znaków wyrażenie jest rozszerzane leksykograficznie do każdego znaku między x a y włącznie, przy użyciu domyślnych ustawień narodowych C. Pamiętaj, że zarówno x, jak i y muszą być tego samego typu. Po podaniu przyrostu jest on używany jako różnica między każdym terminem. Domyślny przyrost to odpowiednio 1 lub -1.
Rozwinięcie nawiasów jest wykonywane przed innymi rozwinięciami, aw wyniku zachowywane są wszystkie znaki specjalne dla innych rozszerzeń. Jest ściśle tekstowy. Bash nie stosuje żadnej interpretacji składniowej kontekstu rozwinięcia ani tekstu między nawiasami klamrowymi.
Poprawnie sformułowane rozwinięcie nawiasu klamrowego musi zawierać niecytowane otwierające i zamykające nawiasy klamrowe oraz co najmniej jeden niecytowany przecinek lub prawidłowe wyrażenie sekwencji. Wszelkie nieprawidłowo uformowane rozwinięcia nawiasów klamrowych pozostawia się bez zmian. { lub , można ująć w cudzysłowy z odwrotnym ukośnikiem, aby zapobiec uznaniu ich za część wyrażenia nawiasowego. Aby uniknąć konfliktów z interpretacją parametrów, ciąg $ { nie jest uważany za kwalifikujący się do interpretacji nawiasów klamrowych i wstrzymuje interpretację nawiasów klamrowych aż do zamknięcia }.
Ta konstrukcja jest zwykle używana jako skrót, gdy wspólny przedrostek ciągów do wygenerowania jest dłuższy niż w powyższym przykładzie:
mkdir /usr/local/src/bash/{old,new,dist,bugs}Lub
chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}Rozszerzenie nawiasów klamrowych wprowadza niewielką niezgodność z historycznymi wersjami sh. sh nie traktuje otwierających ani zamykających nawiasów klamrowych w sposób szczególny, gdy pojawiają się jako część słowa, i zachowuje je w danych wyjściowych. Bash usuwa nawiasy klamrowe ze słów w wyniku rozwinięcia nawiasów klamrowych. Na przykład słowo wprowadzone do sh jako plik{1,2} pojawia się w danych wyjściowych w identyczny sposób. To samo słowo jest wyprowadzane jako plik1 plik2 po rozwinięciu przez bash. Jeśli wymagana jest ścisła zgodność z sh, uruchom bash z opcją +B lub wyłącz rozwijanie nawiasów klamrowych za pomocą +B > w poleceniu set (patrz WBUDOWANE POLECENIA POWŁOKI poniżej).
Jeśli słowo zaczyna się od niecytowanej tyldy (`~'), wszystkie znaki poprzedzające pierwszy niecytowany ukośnik (lub wszystkie znaki, jeśli nie ma niecytowanego ukośnika) są traktowane jako tylda -przedrostek. Jeśli żaden ze znaków przedrostka tyldy nie jest ujęty w cudzysłowy, znaki w przedrostku tyldy następujące po tyldzie są traktowane jako możliwa nazwa logowania. Jeśli ta nazwa logowania jest łańcuchem pustym, tylda jest zastępowana wartością parametru powłoki HOME. Jeśli HOME nie jest ustawione, zastępowany jest katalog domowy użytkownika wykonującego powłokę. W przeciwnym razie przedrostek tyldy jest zastępowany katalogiem domowym powiązanym z określoną nazwą logowania.
Jeśli przedrostkiem tyldy jest `~+', wartość zmiennej powłoki PWD zastępuje przedrostek tyldy. Jeśli przedrostkiem tyldy jest `~-', podstawiana jest wartość zmiennej powłoki OLDPWD, jeśli jest ustawiona. Jeśli znaki następujące po tyldzie w przedrostku tyldy składają się z liczby N, opcjonalnie poprzedzonej `+' lub `-', przedrostek tyldy jest zastępowany odpowiednim elementem z katalogu stos, tak jak byłoby to wyświetlane przez wbudowane dirs wywołane z przedrostkiem tyldy jako argumentem. Jeśli znaki następujące po tyldzie w przedrostku tyldy składają się z liczby bez poprzedzającego znaku `+' lub `-', przyjmowany jest znak `+'.
Jeśli nazwa logowania jest nieprawidłowa lub interpretacja tyldy nie powiedzie się, słowo pozostaje niezmienione.
Każde przypisanie zmiennej jest sprawdzane pod kątem niecytowanych przedrostków tyldy bezpośrednio po : lub pierwszym =. W takich przypadkach przeprowadzana jest również interpretacja tyldy. W związku z tym można używać nazw plików z tyldami w przypisaniach do PATH, MAILPATH i CDPATH, a powłoka przypisuje rozwiniętą wartość.
Bash wykonuje również interpretację tyldy na słowach spełniających warunki przypisań zmiennych (jak opisano powyżej w sekcji PARAMETRY), gdy pojawiają się one jako argumenty prostych poleceń. Bash nie robi tego, z wyjątkiem wymienionych powyżej poleceń deklaracji, gdy jest w trybie POSIX.
Znak $ wprowadza interpretację parametrów, podstawienie poleceń lub interpretację arytmetyczną. Nazwa parametru lub symbol, który ma być rozwinięty, może być ujęty w nawiasy klamrowe, które są opcjonalne, ale służą do ochrony zmiennej, która ma być rozwinięta, przed znakami bezpośrednio następującymi po niej, które mogłyby zostać zinterpretowane jako część nazwy.
Kiedy używane są nawiasy klamrowe, pasującym nawiasem końcowym jest pierwszy `}', który nie jest poprzedzony odwrotnym ukośnikiem ani w obrębie ciągu znaków ujętych w cudzysłowy, ani w obrębie osadzonej interpretacji arytmetycznej, podstawienia polecenia lub interpretacji parametru.
Wartość parametru jest zastępowana. Nawiasy klamrowe są wymagane, gdy parametr jest parametrem pozycyjnym z więcej niż jedną cyfrą lub gdy po parametrze występuje znak, którego nie należy interpretować jako części jego nazwy. Parametr to parametr powłoki opisany powyżej PARAMETRY) lub odwołanie do tablicy (Tablice).
Jeśli pierwszym znakiem parametru jest wykrzyknik (!), a parametr nie jest nazwą, to wprowadza poziom pośredni. Bash używa wartości utworzonej przez rozwinięcie reszty parametru jako nowego parametru; to jest następnie rozwijane i ta wartość jest używana w pozostałej części rozwinięcia, zamiast interpretacji oryginalnego parametru. Nazywa się to ekspansją pośrednią. Wartość podlega interpretacji tyldy, interpretacji parametrów, podstawianiu poleceń i interpretacji arytmetycznej. Jeśli parametr jest odwołaniem do nazwy, to rozwija się do nazwy parametru, do którego odwołuje się parametr, zamiast przeprowadzać pełne rozwinięcie pośrednie. Wyjątkiem są rozszerzenia $ {!przedrostek*} i $ {! imię[@]} opisane poniżej. Wykrzyknik musi znajdować się bezpośrednio po lewym nawiasie klamrowym, aby wprowadzić kierunek.
W każdym z poniższych przypadków słowo podlega interpretacji tyldy, interpretacji parametrów, podstawianiu poleceń i interpretacji arytmetycznej.
Gdy nie wykonuje się interpretacji podciągów, korzystając z formularzy opisanych poniżej (np. :-), bash sprawdza, czy parametr jest nieustawiony lub ma wartość NULL. Pominięcie dwukropka skutkuje testem tylko dla parametru, który nie jest ustawiony.
Użyj wartości domyślnych. Jeśli parametr jest nieustawiony lub ma wartość NULL, interpretacja słowa jest zastępowana. W przeciwnym razie wartość parametru jest zastępowana.
Przypisz wartości domyślne. Jeśli parametr jest nieustawiony lub zerowy, interpretacja słowa jest przypisywana do parametru. Wartość parametru jest następnie zastępowana. Parametry pozycyjne i parametry specjalne nie mogą być przypisywane w ten sposób.
Wyświetl błąd, jeśli jest pusty lub nieustawiony. Jeśli parametr jest pusty lub nieustawiony, interpretacja słowa (lub odpowiedni komunikat, jeśli słowo nie występuje) jest zapisywana w standardzie błąd i powłoka, jeśli nie jest interaktywna, kończy działanie. W przeciwnym razie wartość parametru jest zastępowana.
Użyj wartości alternatywnej. Jeśli parametr jest pusty lub nieustawiony, nic nie jest zastępowane, w przeciwnym razie interpretacja słowa jest zastępowana.
Rozszerzenie podłańcucha. Rozwija się do maksymalnie długości znaków o wartości parametru, zaczynając od znaku określonego przez przesunięcie. Jeśli parametr to @, tablica indeksowana z indeksem dolnym @ lub * albo nazwa tablicy asocjacyjnej, wyniki różnić się w sposób opisany poniżej. Jeśli pominięto długość, interpretuje do podłańcucha wartości parametru, zaczynając od znaku określonego przez offset i kończąc na końcu wartości . długość i przesunięcie to wyrażenia arytmetyczne (patrz OBLICZANIE ARYTMETYCZNE poniżej).
Jeśli przesunięcie ma wartość mniejszą od zera, wartość jest używana jako przesunięcie w znakach od końca wartości parametru. Jeśli długość ma wartość mniejszą od zera, jest to interpretowane jako przesunięcie w znakach od końca wartości parametru, a nie jako liczba znaków, a rozwinięcie to znaki między przesunięciem a tym wynikiem. Zauważ, że ujemne przesunięcie musi być oddzielone od dwukropka co najmniej jedną spacją, aby uniknąć pomyłki z rozszerzeniem :-.
Jeśli parametr to @, wynikiem są parametry pozycyjne długości zaczynające się od przesunięcia. Ujemne przesunięcie jest przyjmowane w stosunku do jednego większego niż największy parametr pozycyjny, więc przesunięcie -1 jest obliczane do ostatniego parametru pozycyjnego. Jest to błąd interpretacji, jeśli długość ma wartość mniejszą od zera.
Jeśli parametr jest indeksowaną nazwą tablicy poprzedzoną znakiem @ lub *, wynikiem są elementy długości tablicy zaczynające się od $ {parametr [przesunięcie]}. Ujemne przesunięcie jest przyjmowane względem jednego większego niż maksymalny indeks określonej tablicy. Jest to błąd interpretacji, jeśli długość ma wartość mniejszą od zera.
Rozwinięcie podciągów zastosowane do tablicy asocjacyjnej daje niezdefiniowane wyniki.
Indeksowanie podłańcuchów jest oparte na zerach, chyba że używane są parametry pozycyjne, w takim przypadku indeksowanie zaczyna się domyślnie od 1. Jeśli offset ma wartość 0 i używane są parametry pozycyjne, przed listą znajduje się $0.
Nazwy pasujące do prefiksu. Rozwija do nazw zmiennych, których nazwy zaczynają się od przedrostka, oddzielonych pierwszym znakiem
IFS zmienna specjalna. Gdy używany jest znak @, a rozwinięcie występuje w cudzysłowach, każda nazwa zmiennej jest interpretowana jako osobne słowo.
Lista kluczy tablicowych. Jeśli nazwa jest zmienną tablicową, rozwija się do listy indeksów tablicy (kluczy) przypisanych w nazwa. Jeśli nazwa nie jest tablicą, rozwija się do 0, jeśli nazwa jest ustawiona i null w przeciwnym razie. Gdy używany jest znak @, a rozwinięcie występuje w podwójnym cudzysłowie, każdy klawisz jest interpretowany jako osobne słowo.
Długość parametru. Długość w znakach wartości parametru jest zastępowana. Jeśli parametr to * lub @, podstawioną wartością jest liczba parametrów pozycyjnych. Jeśli parametr jest nazwą tablicy z indeksem dolnym * lub @, podstawioną wartością jest liczba elementów w tablicy. Jeśli parametr jest indeksowaną nazwą tablicy z indeksem dolnym przez liczbę ujemną, liczba ta jest interpretowana jako względna o jeden większa niż maksymalny indeks parametru, więc indeksy ujemne liczą wstecz od koniec tablicy, a indeks -1 odwołuje się do ostatniego elementu.
Usuń pasujący wzorzec prefiksu. słowo jest interpretowane w celu utworzenia wzorca, tak jak w przypadku interpretacji nazw ścieżek, i dopasowywane do rozwiniętej wartości parametru przy użyciu reguł opisanych w Dopasowywanie wzorców poniżej. Jeśli wzorzec pasuje do początku wartości parametru, to wynikiem interpretacji jest rozwinięta wartość parametru z najkrótszym pasującym wzorcem (`` #'') lub usunięto najdłuższy pasujący wzorzec (przypadek ``##''). Jeśli parametr to @ lub *, operacja usuwania wzorca jest stosowana do każdego parametru pozycyjnego po kolei, a rozwinięciem jest wynikowa lista. Jeśli parametr jest zmienną tablicową z indeksem dolnym @ lub *, operacja usuwania wzorca jest po kolei stosowana do każdego elementu tablicy, a rozwinięciem jest lista wynikowa.
Usuń pasujący wzorzec sufiksu. słowo jest interpretowane w celu utworzenia wzorca, tak jak w przypadku interpretacji nazw ścieżek, i dopasowywane do rozwiniętej wartości parametru przy użyciu reguł opisanych w Dopasowywanie wzorców poniżej. Jeśli wzorzec pasuje do końcowej części rozwiniętej wartości parametru, wynikiem interpretacji jest rozwinięta wartość parametru z najkrótszym pasującym wzorcem (``%'') lub usunięto najdłuższy pasujący wzorzec (wielkość ``%%''). Jeśli parametr to @ lub *, operacja usuwania wzorca jest stosowana do każdego parametru pozycyjnego po kolei, a rozwinięciem jest wynikowa lista. Jeśli parametr jest zmienną tablicową z indeksem dolnym @ lub *, operacja usuwania wzorca jest po kolei stosowana do każdego elementu tablicy, a rozwinięciem jest lista wynikowa.
Podstawianie wzorców. wzorzec jest interpretowany w celu utworzenia wzorca, tak jak w przypadku interpretacji nazw ścieżek, parametr jest interpretowany, a najdłuższe dopasowanie wzorca do jego wartości jest zastępowane przez ciąg znaków. Dopasowanie odbywa się zgodnie z zasadami opisanymi w sekcji Dopasowywanie wzorców poniżej. Jeśli wzorzec zaczyna się od /, wszystkie dopasowania wzorca są zastępowane przez łańcuch znaków. Zwykle wymieniane jest tylko pierwsze dopasowanie. Jeśli wzorzec zaczyna się od #, musi pasować na początku rozwiniętej wartości parametru. Jeśli wzór zaczyna się od %, musi pasować na końcu rozwiniętej wartości parametru. Jeśli łańcuch ma wartość NULL, dopasowania wzorca są usuwane, a / następujący wzorzec może zostać pominięty. Jeśli opcja powłoki nocasematch jest włączona, dopasowanie jest przeprowadzane bez względu na wielkość liter. Jeśli parametr to @ lub *, operacja podstawienia jest stosowana do każdego parametru pozycyjnego po kolei, a interpretacją jest wynikowa lista. Jeśli parametr jest zmienną tablicową z indeksem dolnym @ lub *, operacja podstawienia jest stosowana do każdego elementu tablicy po kolei, a rozwinięcie to wynikowa lista.
Modyfikacja sprawy. To rozwinięcie modyfikuje wielkość liter w parametrze. wzorzec jest interpretowany w celu utworzenia wzorca, tak jak w przypadku rozwijania nazw ścieżek. Każdy znak w rozszerzonej wartości parametru jest sprawdzany pod kątem wzorca, a jeśli pasuje do wzorca, jego wielkość liter jest konwertowana. Wzorzec nie powinien próbować dopasować więcej niż jednego znaku. Operator ^ konwertuje małe litery pasujące do wzorca na wielkie; operator , konwertuje pasujące wielkie litery na małe. Rozszerzenia ^^ i ,, konwertują każdy dopasowany znak w rozwiniętej wartości; rozszerzenia ^ i , dopasowują i konwertują tylko pierwszy znak w rozwiniętej wartości. Jeśli wzór zostanie pominięty, jest traktowany jak ?, który pasuje do każdego znaku. Jeśli parametr to @ lub *, operacja modyfikacji wielkości liter jest stosowana kolejno do każdego parametru pozycyjnego, a rozwinięciem jest wynikowa lista. Jeśli parametr jest zmienną tablicową z indeksem dolnym @ lub *, operacja zmiany wielkości liter jest stosowana do każdego elementu tablicy po kolei, a rozwinięciem jest lista wynikowa.
Transformacja parametrów. Rozwinięcie jest albo transformacją wartości parametru, albo informacji o samym parametrze, w zależności od wartości operatora. Każdy operator to pojedyncza litera:
Rozwinięcie to ciąg będący wartością parametru z małymi literami alfabetu zamienionymi na wielkie.
Rozwinięcie jest ciągiem, który jest wartością parametru z pierwszym znakiem zamienionym na wielkie litery, jeśli jest to alfabet.
Rozwinięcie to ciąg będący wartością parametru z dużymi znakami alfabetu zamienionymi na małe.
Rozwinięcie to ciąg będący wartością parametru cytowaną w formacie, który może być ponownie użyty jako dane wejściowe.
Rozwinięcie jest ciągiem, który jest wartością parametru z sekwencjami specjalnymi odwrotnego ukośnika rozwiniętymi jak w przypadku mechanizmu cytowania $'...'.
Interpretacja jest ciągiem, który jest wynikiem rozwinięcia wartości parametru tak, jakby to był ciąg zachęty (zobacz POMOTY poniżej).
Interpretacja jest ciągiem znaków w postaci instrukcji przypisania lub polecenia deklaracji, które, jeśli zostanie ocenione, odtworzy parametr z jego atrybutami i wartością.
Tworzy prawdopodobnie ujętą w cudzysłów wersję wartości parametru, z tą różnicą, że wypisuje wartości tablic indeksowanych i asocjacyjnych jako sekwencję ujętych w cudzysłowy par klucz-wartość (patrz Tablice powyżej ).
Rozwinięcie to ciąg składający się z wartości flag reprezentujących atrybuty parametru.
Jeśli parametr to @ lub *, operacja jest wykonywana po kolei dla każdego parametru pozycyjnego, a rozwinięciem jest wynikowa lista. Jeśli parametr jest zmienną tablicową z indeksem dolnym @ lub *, operacja jest wykonywana po kolei dla każdego elementu tablicy, a interpretacja jest wynikowa lista.
Wynik interpretacji podlega podziałowi na słowa i rozwinięciu nazwy ścieżki, jak opisano poniżej.
Podstawianie poleceń umożliwia wyjście polecenia w celu zastąpienia nazwy polecenia. Istnieją dwie formy:
$(command )
Lub
`command`
Bash wykonuje rozszerzenie, wykonując polecenie w środowisku podpowłoki i zastępując podstawienie polecenia standardowym wyjściem polecenia, z usuniętymi końcowymi znakami nowej linii. Osadzone znaki nowej linii nie są usuwane, ale mogą zostać usunięte podczas dzielenia wyrazów. Podstawienie polecenia $ (cat plik) można zastąpić równoważnym, ale szybszym $ (< >plik).
Kiedy używana jest forma podstawienia w starym stylu, odwrotny ukośnik zachowuje swoje dosłowne znaczenie, z wyjątkiem sytuacji, gdy następuje po nim $, ` lub \. Pierwszy cytat odwrotny nie poprzedzony ukośnikiem odwrotnym kończy zastępowanie polecenia. W przypadku użycia formularza $ ( polecenie ) wszystkie znaki w nawiasach tworzą polecenie; żaden nie jest traktowany specjalnie.
Podstawienia poleceń mogą być zagnieżdżane. Aby zagnieździć się podczas korzystania z formy z cudzysłowami odwrotnymi, należy uciec od wewnętrznych cudzysłowów odwrotnymi ukośnikami.
Jeśli podstawienie pojawia się w podwójnych cudzysłowach, na wynikach nie jest wykonywane dzielenie słów ani rozwijanie nazw ścieżek.
Rozwinięcie arytmetyczne umożliwia obliczenie wyrażenia arytmetycznego i podstawienie wyniku. Format rozwinięcia arytmetycznego to:
$((expression))
wyrażenie jest traktowane tak, jakby znajdowało się w cudzysłowie, ale cudzysłów w nawiasach nie jest traktowany specjalnie. Wszystkie tokeny w wyrażeniu podlegają interpretacji parametrów i zmiennych, podstawianiu poleceń i usuwaniu cudzysłowów. Wynik jest traktowany jako obliczone wyrażenie arytmetyczne. Rozszerzenia arytmetyczne mogą być zagnieżdżane.
Ocena jest przeprowadzana zgodnie z zasadami podanymi poniżej w sekcji OBLICZANIE ARYTMETYCZNE. Jeśli wyrażenie jest nieprawidłowe, bash wypisze komunikat informujący o niepowodzeniu i żadne podstawienie nie nastąpi.
Zastępowanie procesów umożliwia odwołanie się do wejścia lub wyjścia procesu za pomocą nazwy pliku. Ma postać <(list ) lub >(list ). Proces list jest uruchamiany asynchronicznie, a jego wejście lub wyjście pojawia się jako nazwa pliku. Ta nazwa pliku jest przekazywana jako argument do bieżącego polecenia w wyniku interpretacji. Jeśli używany jest formularz >(list ), zapis do pliku zapewni dane wejściowe dla listy. Jeśli używany jest formularz <(list ), plik przekazany jako argument powinien zostać odczytany w celu uzyskania wyniku list. Podstawianie procesów jest obsługiwane w systemach, które obsługują nazwane potoki (FIFO) lub metodę nazywania otwartych plików /dev/fd.
Jeśli to możliwe, zastępowanie procesów jest wykonywane jednocześnie z interpretacją parametrów i zmiennych, zastępowaniem poleceń i interpretacją arytmetyczną.
Powłoka skanuje wyniki interpretacji parametrów, podstawienia poleceń i interpretacji arytmetycznej, które nie wystąpiły w podwójnych cudzysłowach w celu dzielenia słów.
Powłoka traktuje każdy znak IFS jako ogranicznik i dzieli wyniki innych interpretacji na słowa, używając tych znaków jako terminatorów pól. Jeśli IFS nie jest ustawiony lub jego wartość to dokładnie
Jawne argumenty zerowe ( " " lub ' ' ) są zachowywane i przekazywane do poleceń jako puste łańcuchy. Usuwane są niecytowane niejawne argumenty null, wynikające z interpretacji parametrów, które nie mają wartości. Jeśli parametr bez wartości zostanie ujęty w podwójne cudzysłowy, otrzymany zostanie argument o wartości null, który zostanie zachowany i przekazany do polecenia jako pusty łańcuch. Gdy argument null w cudzysłowie pojawia się jako część słowa, którego rozwinięcie jest inne niż null, argument ten jest usuwany. Oznacza to, że słowo -d' ' staje się -d po podziale na słowa i usunięciu argumentu null.
Należy zauważyć, że jeśli nie występuje rozwinięcie, nie jest wykonywane żadne dzielenie.
Po podziale na słowa, jeśli nie została ustawiona opcja -f, bash skanuje każde słowo w poszukiwaniu znaków *, ? i [. Jeśli pojawia się jeden z tych znaków i nie jest on ujęty w cudzysłowy, to słowo jest traktowane jako wzorzec i zastępowane alfabetycznie posortowaną listą nazw plików pasujących do wzorca (zobacz Dopasowywanie wzorców poniżej). Jeśli nie zostaną znalezione pasujące nazwy plików, a opcja powłoki nullglob nie jest włączona, słowo pozostaje niezmienione. Jeśli ustawiono opcję nullglob i nie znaleziono żadnych dopasowań, słowo jest usuwane. Jeśli ustawiona jest opcja powłoki failglob i nie zostaną znalezione żadne dopasowania, zostanie wyświetlony komunikat o błędzie i polecenie nie zostanie wykonane. Jeśli włączona jest opcja powłoki nocaseglob, dopasowanie jest przeprowadzane bez względu na wielkość liter. Gdy wzorzec jest używany do rozwinięcia nazwy ścieżki, znak ``.'' na początku nazwy lub bezpośrednio po ukośniku musi być dopasowany jawnie, chyba że opcja powłoki dotglob jest ustawiony. Nazwy plików ``.'' i ``..'' muszą być zawsze jawnie dopasowane, nawet jeśli ustawiono dotglob. W innych przypadkach znak ``.'' nie jest traktowany w specjalny sposób. Podczas dopasowywania nazwy ścieżki znak ukośnika musi być zawsze bezpośrednio dopasowany przez ukośnik we wzorcu, ale w innych kontekstach dopasowywania może być dopasowany przez specjalny znak wzorca, jak opisano poniżej w Dopasowywanie wzorców. Zobacz opis shopt poniżej w sekcji WBUDOWANE POLECENIA POWŁOKI, aby zapoznać się z opisem nocaseglob, nullglob, opcje powłoki failglob i dotglob.
Zmiennej powłoki GLOBIGNORE można użyć do ograniczenia zbioru nazw plików pasujących do wzorca. Jeśli ustawione jest GLOBIGNORE, każda pasująca nazwa pliku, która pasuje również do jednego z wzorców w GLOBIGNORE, jest usuwana z listy dopasowań. Jeśli ustawiona jest opcja nocaseglob, dopasowanie do wzorców w GLOBIGNORE jest przeprowadzane bez względu na wielkość liter. Nazwy plików . i .. są zawsze ignorowane, gdy GLOBIGNORE jest ustawione i nie jest puste. Jednak ustawienie GLOBIGNORE na wartość różną od null skutkuje włączeniem opcji powłoki dotglob, więc wszystkie inne nazwy plików zaczynające się od . będą mecz. Aby przywrócić stare zachowanie polegające na ignorowaniu nazw plików zaczynających się od ., ustaw .* jako jeden ze wzorców w GLOBIGNORE. Opcja dotglob jest wyłączona, gdy
GLOBIGNORE jest nieustawiony. Dopasowywanie wzorców honoruje ustawienie opcji powłoki extglob.
Dopasowanie wzorca
Każdy znak, który pojawia się we wzorcu, inny niż znaki specjalne opisane poniżej, pasuje sam do siebie. Znak NUL nie może występować we wzorcu. Ukośnik odwrotny poprzedza następujący znak; uciekający ukośnik odwrotny jest odrzucany podczas dopasowywania. Znaki wzorca specjalnego muszą być podane w cudzysłów, jeśli mają być dopasowywane dosłownie.
Znaki wzorca specjalnego mają następujące znaczenie:
- *
Dopasowuje dowolny ciąg, w tym ciąg pusty. Gdy opcja powłoki globstar jest włączona, a * jest używane w kontekście rozwijania nazw ścieżek, dwa sąsiednie * użyte jako pojedynczy wzorzec będą pasować wszystkie pliki i zero lub więcej katalogów i podkatalogów. Jeśli następuje /, dwa sąsiadujące * będą pasować tylko do katalogów i podkatalogów.
- ?
Pasuje do dowolnego pojedynczego znaku.
- [...]
Pasuje do dowolnego z podanych znaków. Para znaków oddzielona łącznikiem oznacza wyrażenie zakresu; dopasowywany jest dowolny znak mieszczący się między tymi dwoma znakami włącznie, przy użyciu bieżącej kolejności zestawiania i zestawu znaków. Jeśli pierwszym znakiem następującym po [ jest ! lub ^, to dopasowywany jest każdy znak, który nie jest ujęty. Kolejność sortowania znaków w wyrażeniach zakresu jest określana przez bieżące ustawienia regionalne i wartości zmiennych powłoki LC_COLLATE lub LC_ALL, jeśli są ustawione. Aby uzyskać tradycyjną interpretację wyrażeń zakresowych, gdzie [a-d] jest odpowiednikiem [abcd], ustaw wartość zmiennej powłoki LC_ALL na C lub włącz opcję powłoki globasciiranges. - można dopasować, umieszczając go jako pierwszy lub ostatni znak w zestawie. ] można dopasować, umieszczając go jako pierwszy znak w zestawie.
W [ i ] można określić klasy znaków za pomocą składni [:klasa :], gdzie class jest jedną z następujących klas zdefiniowanych w standardzie POSIX:
alnum alpha ascii blank cntrl digit graph lower print punct space upper word xdigitKlasa postaci pasuje do dowolnej postaci należącej do tej klasy. Klasa znaków word dopasowuje litery, cyfry i znak _.
Wewnątrz [ i ] można określić klasę równoważności przy użyciu składni [=c=], który dopasowuje wszystkie znaki o tej samej wadze sortowania (zgodnie z definicją w bieżących ustawieniach regionalnych) co znak c.
W [ i ] składnia [.symbol.] pasuje do sortowania symbol symbol.
Jeśli opcja powłoki extglob jest włączona przy użyciu wbudowanego elementu shopt, rozpoznawanych jest kilka rozszerzonych operatorów dopasowywania wzorców. W poniższym opisie lista-wzorców to lista jednego lub więcej wzorców oddzielonych znakiem |. Wzory złożone mogą być tworzone przy użyciu jednego lub więcej z następujących podwzorów:
?( pattern-list ) Dopasowuje zero lub jedno wystąpienie podanych wzorców
*( pattern-list ) Dopasowuje zero lub więcej wystąpień podanych wzorców
+( pattern-list ) Dopasowuje jedno lub więcej wystąpień podanych wzorców
@( pattern-list ) Pasuje do jednego z podanych wzorców
!( pattern-list ) Pasuje do wszystkiego oprócz jednego z podanych wzorców
Skomplikowane rozszerzone dopasowywanie wzorców do długich ciągów jest powolne, zwłaszcza gdy wzorce zawierają alternacje, a łańcuchy zawierają wiele dopasowań. Używanie oddzielnych dopasowań do krótszych łańcuchów lub tablic łańcuchów zamiast pojedynczego długiego łańcucha może być szybsze.
Po poprzednich rozwinięciach wszystkie niecytowane wystąpienia znaków \, ' i " , które nie wynikają z żadnego z powyższych rozwinięć, są usuwane.
Zanim polecenie zostanie wykonane, jego wejście i wyjście może zostać przekierowane przy użyciu specjalnej notacji interpretowanej przez powłokę. Przekierowanie umożliwia powielanie, otwieranie, zamykanie uchwytów plików poleceń, odwoływanie się do różnych plików i może zmieniać pliki, z których polecenie odczytuje i do których zapisuje. Przekierowania można również użyć do modyfikacji uchwytów plików w bieżącym środowisku wykonawczym powłoki. Następujące operatory przekierowania mogą poprzedzać lub pojawiać się w dowolnym miejscu prostego polecenia lub mogą następować po poleceniu. Przekierowania są przetwarzane w kolejności, w jakiej się pojawiają, od lewej do prawej.
Każde przekierowanie, które może być poprzedzone numerem deskryptora pliku, może być poprzedzone słowem w postaci {nazwa_zmiennej}. W tym przypadku, dla każdego operatora przekierowania z wyjątkiem >&- i <&-, powłoka przydzieli deskryptor pliku większy lub równy 10 i przypisze go do nazwa_zmiennej. Jeśli >&- lub <&- jest poprzedzone przez {nazwa_zmiennej}, wartość nazwa_zmiennej definiuje deskryptor pliku do zamknięcia. Jeśli podano {nazwa_zmiennej}, przekierowanie pozostaje poza zasięgiem polecenia, umożliwiając programiście powłoki samodzielne zarządzanie deskryptorem pliku.
W poniższych opisach, jeżeli pominięto numer deskryptora pliku, a pierwszym znakiem operatora przekierowania jest <, przekierowanie odnosi się do standardowego wejścia (deskryptor pliku 0). Jeżeli pierwszym znakiem operatora przekierowania jest >, przekierowanie odnosi się do standardowego wyjścia (deskryptor pliku 1).
Słowo następujące po operatorze przekierowania w poniższych opisach, o ile nie zaznaczono inaczej, podlega interpretacji nawiasów klamrowych, interpretacji tyldy, interpretacji parametrów i zmiennych, podstawianiu poleceń, interpretacji arytmetycznej, usuwaniu cudzysłowów, interpretacji nazw ścieżek i dzieleniu na słowa. Jeśli rozszerzy się do więcej niż jednego słowa, bash zgłosi błąd.
Pamiętaj, że kolejność przekierowań jest znacząca. Na przykład polecenie
ls > dirlist 2>&1
kieruje zarówno standardowe wyjście, jak i standardowe wyjście błędu do pliku dirlist, podczas gdy polecenie
ls 2>&1 > dirlist
kieruje tylko standardowe wyjście do pliku dirlist, ponieważ standardowy błąd został zduplikowany ze standardowego wyjścia przed przekierowaniem standardowego wyjścia do dirlist.
Bash obsługuje kilka nazw plików, zwłaszcza gdy są one używane w przekierowaniach, jak opisano w poniższej tabeli. Jeśli system operacyjny, na którym działa bash, udostępnia te specjalne pliki, bash ich użyje; w przeciwnym razie będzie je emulować wewnętrznie z zachowaniem opisanym poniżej.
- /dev/fd/fd
Jeśli fd jest poprawną liczbą całkowitą, deskryptor pliku fd jest duplikowany.
- /dev/stdin
Deskryptor pliku 0 jest zduplikowany.
- /dev/stdout
Deskryptor pliku 1 jest zduplikowany.
- /dev/stderr
Deskryptor pliku 2 jest zduplikowany.
- /dev/tcp/host/port
Jeśli host jest prawidłową nazwą hosta lub adresem internetowym, a port jest liczbą całkowitą numeru portu lub nazwą usługi, bash próbuje otworzyć odpowiednie gniazdo TCP .
- /dev/udp/host/port
Jeśli host jest prawidłową nazwą hosta lub adresem internetowym, a port jest liczbą całkowitą numeru portu lub nazwą usługi, bash próbuje otworzyć odpowiednie gniazdo UDP .
Niepowodzenie otwarcia lub utworzenia pliku powoduje niepowodzenie przekierowania.
Przekierowania używające deskryptorów plików większych niż 9 powinny być używane ostrożnie, ponieważ mogą powodować konflikt z deskryptorami plików, których powłoka używa wewnętrznie.
Przekierowanie wejścia powoduje, że plik, którego nazwa wynika z rozwinięcia word zostanie otwarty do odczytu na deskryptorze pliku n lub na standardowym wejściu (deskryptor pliku 0), jeśli n nie jest określony.
Ogólny format przekierowania danych wejściowych to:
[n]<word
Przekierowanie wyjścia powoduje otwarcie do zapisu pliku, którego nazwa wynika z interpretacji word na deskryptorze pliku n lub na standardowym wyjściu (deskryptor pliku 1), jeśli n nie jest określony. Jeśli plik nie istnieje, zostanie utworzony; jeśli istnieje, jest obcinany do zera.
Ogólny format przekierowania danych wyjściowych to:
[n]>word
Jeśli operatorem przekierowania jest > i włączona została opcja noclobber wbudowanego elementu set, przekierowanie nie powiedzie się, jeśli plik, którego nazwa wynika z rozszerzenia word istnieje i jest zwykłym plikiem. Jeśli operatorem przekierowania jest >| lub operatorem przekierowania jest > i opcja noclobber wbudowanego set polecenie nie jest włączone, nastąpi próba przekierowania, nawet jeśli istnieje plik o nazwie word.
Przekierowanie wyjścia w ten sposób powoduje otwarcie pliku, którego nazwa wynika z rozwinięcia word do dopisania na deskryptor pliku n lub standardowe wyjście (deskryptor pliku 1) jeśli nie określono n. Jeśli plik nie istnieje, zostanie utworzony.
Ogólny format dołączania danych wyjściowych to:
[n]>>word
Ta konstrukcja umożliwia przekierowanie zarówno standardowego wyjścia (deskryptor pliku 1), jak i standardowego wyjścia błędu (deskryptor pliku 2) do pliku, którego nazwą jest rozwinięcie word.
Istnieją dwa formaty przekierowania standardowego wyjścia i standardowego błędu:
&>word
I
>&word
Z tych dwóch form preferowana jest pierwsza. Jest to semantycznie równoważne z
>word 2>&1
Podczas korzystania z drugiej formy słowo nie może zostać rozwinięte do liczby lub -. Jeśli tak, stosowane są inne operatory przekierowania (zobacz Duplikowanie deskryptorów plików poniżej) ze względu na kompatybilność.
Ta konstrukcja umożliwia dołączenie zarówno standardowego wyjścia (deskryptor pliku 1), jak i standardowego wyjścia błędu (deskryptor pliku 2) do pliku, którego nazwą jest rozwinięcie word.
Format dołączania standardowego wyjścia i standardowego błędu to:
&>>word
Jest to semantycznie równoważne z
>>word 2>&1
(patrz Duplikowanie deskryptorów plików poniżej).
Ten typ przekierowania instruuje powłokę, aby czytała dane wejściowe z bieżącego źródła, dopóki nie zostanie wyświetlona linia zawierająca tylko ogranicznik (bez końcowych odstępów). Wszystkie wiersze odczytane do tego momentu są następnie używane jako standardowe wejście (lub deskryptor pliku n, jeśli określono n) dla polecenia.
Format tutaj-dokumentów to:
[n]<<[-]word here-document delimiter
Na word nie jest wykonywane interpretowanie parametrów i zmiennych, zastępowanie poleceń, interpretowanie arytmetyczne ani interpretowanie nazw ścieżek. Jeśli jakakolwiek część słowa jest ujęta w cudzysłów, separator jest wynikiem usunięcia cudzysłowu z słowa, a wiersze w tym dokumencie nie są rozszerzony. Jeśli słowo nie jest cytowane, wszystkie wiersze dokumentu tutaj są poddawane interpretacji parametrów, podstawianiu poleceń i interpretacji arytmetycznej, sekwencja znaków \
Jeśli operatorem przekierowania jest <<-, to wszystkie wiodące znaki tabulacji są usuwane z linii wejściowych i linii zawierającej separator. Pozwala to na wcięcie dokumentów w skryptach powłoki w naturalny sposób.
Wariant tutaj dokumentów, format to:
[n]<<<word
słowo podlega interpretacji tyldy, interpretacji parametrów i zmiennych, podstawianiu poleceń, interpretacji arytmetycznej i usuwaniu cudzysłowów. Rozwinięcie nazwy ścieżki i podział na słowa nie są wykonywane. Wynik jest dostarczany jako pojedynczy ciąg znaków z dodanym znakiem nowej linii do polecenia na jego standardowym wejściu (lub deskryptorze pliku n, jeśli podano n).
Operator przekierowania
[n]<&word
służy do powielania deskryptorów plików wejściowych. Jeśli słowo rozwinie się do jednej lub więcej cyfr, deskryptor pliku oznaczony przez n jest kopią tego deskryptora pliku. Jeśli cyfry w word nie określają deskryptora pliku otwartego do wprowadzenia, wystąpi błąd przekierowania. Jeśli word ma wartość -, deskryptor pliku n jest zamknięty. Jeśli nie podano n, używane jest standardowe wejście (deskryptor pliku 0).
Operator
[n]>&word
jest używany podobnie do powielania deskryptorów plików wyjściowych. Jeśli nie podano n, używane jest standardowe wyjście (deskryptor pliku 1). Jeśli cyfry w word nie określają deskryptora pliku otwartego do wyjścia, wystąpi błąd przekierowania. Jeśli word ma wartość -, deskryptor pliku n jest zamknięty. W szczególnym przypadku, jeśli n zostanie pominięte, a słowo nie zostanie rozwinięte do jednej lub więcej cyfr lub -, standardowe wyjście i standardowy błąd są przekierowywane zgodnie z wcześniejszym opisem.
Operator przekierowania
[n]<&digit-
przenosi deskryptor pliku cyfra do deskryptora pliku n lub na standardowe wejście (deskryptor pliku 0), jeśli nie podano n. cyfra jest zamykana po zduplikowaniu do n.
Podobnie operator przekierowania
[n]>&digit-
przenosi deskryptor pliku cyfra do deskryptora pliku n lub na standardowe wyjście (deskryptor pliku 1), jeśli nie podano n.
Operator przekierowania
[n]<>word
powoduje, że plik, którego nazwa jest rozszerzeniem słowa, jest otwierany zarówno do odczytu, jak i zapisu na deskryptorze pliku n lub na deskryptorze pliku 0, jeśli n > nie jest określony. Jeśli plik nie istnieje, zostanie utworzony.
Aliasy umożliwiają zastąpienie słowa ciągiem znaków, gdy jest ono używane jako pierwsze słowo prostego polecenia. Powłoka przechowuje listę aliasów, które można ustawiać i usuwać za pomocą wbudowanych poleceń alias i unalias (patrz WBUDOWANE POLECENIA POWŁOKI poniżej). Pierwsze słowo każdego prostego polecenia, jeśli nie jest cytowane, jest sprawdzane, czy ma alias. Jeśli tak, to słowo jest zastępowane tekstem aliasu. Znaki /, $, ` i = oraz dowolne metaznaki powłoki lub znaki cytowania wymienione powyżej nie mogą występować w aliasie. Tekst zastępczy może zawierać dowolne prawidłowe dane wejściowe powłoki, w tym metaznaki powłoki. Pierwsze słowo tekstu zastępczego jest sprawdzane pod kątem aliasów, ale słowo identyczne z rozwijanym aliasem nie jest rozwijane po raz drugi. Oznacza to, że można na przykład zastosować alias ls do ls -F, a bash nie próbuje rekurencyjnie rozszerzać tekstu zastępczego. Jeśli ostatnim znakiem wartości aliasu jest pusty, to następne słowo polecenia następujące po aliasie jest również sprawdzane pod kątem rozwinięcia aliasu.
Aliasy są tworzone i wyświetlane za pomocą polecenia alias, a usuwane za pomocą polecenia unalias.
Nie ma mechanizmu używania argumentów w tekście zastępczym. Jeśli potrzebne są argumenty, należy użyć funkcji powłoki (patrz FUNKCJE poniżej).
Aliasy nie są rozwijane, gdy powłoka nie jest interaktywna, chyba że opcja powłoki expand_aliases jest ustawiona za pomocą shopt (zobacz opis shopt w >WBUDOWANE POLECENIA POWŁOKI poniżej).
Zasady dotyczące definicji i używania aliasów są nieco mylące. Bash zawsze odczytuje co najmniej jeden pełny wiersz wejścia i wszystkie wiersze składające się na polecenie złożone przed wykonaniem któregokolwiek z poleceń w tym wierszu lub polecenia złożonego. Aliasy są rozszerzane podczas czytania polecenia, a nie podczas jego wykonywania. Dlatego definicja aliasu pojawiająca się w tym samym wierszu, co inne polecenie, zaczyna działać dopiero po odczytaniu następnego wiersza wejścia. Nowy alias nie ma wpływu na polecenia następujące po definicji aliasu w tym wierszu. To zachowanie jest również problemem podczas wykonywania funkcji. Aliasy są rozwijane podczas odczytywania definicji funkcji, a nie podczas wykonywania funkcji, ponieważ sama definicja funkcji jest poleceniem. W rezultacie aliasy zdefiniowane w funkcji są dostępne dopiero po wykonaniu tej funkcji. Dla bezpieczeństwa zawsze umieszczaj definicje aliasów w osobnej linii i nie używaj alias w poleceniach złożonych.
W prawie każdym celu aliasy są zastępowane przez funkcje powłoki.
Funkcja powłoki, zdefiniowana powyżej w sekcji GRAMATYKA POWŁOKI, przechowuje serię poleceń do późniejszego wykonania. Gdy nazwa funkcji powłoki jest używana jako prosta nazwa polecenia, wykonywana jest lista poleceń skojarzonych z tą nazwą funkcji. Funkcje są wykonywane w kontekście bieżącej powłoki; nie jest tworzony żaden nowy proces do ich interpretacji (porównaj to z wykonaniem skryptu powłoki). Gdy funkcja jest wykonywana, argumenty funkcji stają się parametrami pozycyjnymi podczas jej wykonywania. Specjalny parametr # zostanie zaktualizowany, aby odzwierciedlić zmianę. Parametr specjalny 0 pozostaje niezmieniony. Pierwszy element zmiennej FUNCNAME jest ustawiany na nazwę funkcji podczas jej wykonywania.
Wszystkie inne aspekty środowiska wykonawczego powłoki są identyczne dla funkcji i jej wywołującego z następującymi wyjątkami: pułapki DEBUG i RETURN (patrz opis pułapki trap< wbudowane pod WBUDOWANE POLECENIA POWŁOKI poniżej) nie są dziedziczone, chyba że funkcji nadano atrybut trace (zobacz opis deklaracji wbudowany poniżej) lub opcja powłoki -o functrace została włączona z wbudowanym set (w takim przypadku wszystkie funkcje dziedziczą DEBUG i >RETURN), a pułapka ERR nie jest dziedziczona, chyba że została włączona opcja powłoki -o errtrace.
Zmienne lokalne dla funkcji można zadeklarować za pomocą wbudowanego polecenia local. Zwykle zmienne i ich wartości są współużytkowane przez funkcję i jej obiekt wywołujący. Jeśli zmienna jest zadeklarowana jako lokalna, widoczny zasięg zmiennej jest ograniczony do tej funkcji i jej elementów potomnych (w tym funkcji, które wywołuje). Zmienne lokalne Zmienne „cienia” o tej samej nazwie zadeklarowane w poprzednich zakresach. Na przykład zmienna lokalna zadeklarowana w funkcji ukrywa zmienną globalną o tej samej nazwie: odniesienia i przypisania odnoszą się do zmiennej lokalnej, pozostawiając niezmodyfikowaną zmienną globalną. Gdy funkcja powraca, zmienna globalna jest ponownie widoczna.
Powłoka używa dynamicznego określania zakresu do kontrolowania widoczności zmiennej w funkcjach. W przypadku dynamicznego określania zakresu widoczne zmienne i ich wartości są wynikiem sekwencji wywołań funkcji, które spowodowały, że wykonanie dotarło do bieżącej funkcji. Wartość zmiennej, którą widzi funkcja, zależy od jej wartości w jej wywołaniu, jeśli takie istnieje, niezależnie od tego, czy ten wywołujący jest zakresem „globalnym”, czy inną funkcją powłoki. Jest to również wartość, którą „przesłania” deklaracja zmiennej lokalnej oraz wartość, która jest przywracana po powrocie funkcji.
Na przykład, jeśli zmienna var jest zadeklarowana jako lokalna w funkcji func1, a func1 wywołuje inną funkcję func2, odniesienia do var wykonane z poziomu func2 zostaną rozwiązane do zmiennej lokalnej var z func1, przesłaniając dowolną zmienną globalną o nazwie zmienna.
Wbudowana funkcja unset również działa przy użyciu tego samego zakresu dynamicznego: jeśli zmienna jest lokalna w bieżącym zakresie, unset usunie jej ustawienie; w przeciwnym razie unset będzie odnosić się do zmiennej znalezionej w dowolnym zakresie wywołującym, jak opisano powyżej. Jeśli zmienna w bieżącym zasięgu lokalnym nie jest ustawiona, pozostanie taka, dopóki nie zostanie zresetowana w tym zasięgu lub do powrotu funkcji. Gdy funkcja powróci, wszystkie wystąpienia zmiennej w poprzednim zakresie staną się widoczne. Jeśli unset działa na zmienną w poprzednim zakresie, każda instancja zmiennej o tej nazwie, która była przesłonięta, stanie się widoczna.
Zmienna FUNCNEST, jeśli jest ustawiona na wartość liczbową większą niż 0, określa maksymalny poziom zagnieżdżenia funkcji. Wywołania funkcji przekraczające limit powodują przerwanie całego polecenia.
Jeśli wbudowane polecenie return jest wykonywane w funkcji, funkcja kończy się i wykonywanie jest wznawiane od następnego polecenia po wywołaniu funkcji. Każde polecenie powiązane z pułapką RETURN jest wykonywane przed wznowieniem wykonywania. Gdy funkcja zakończy działanie, wartości parametrów pozycyjnych i parametru specjalnego # są przywracane do wartości sprzed wykonania funkcji.
Nazwy i definicje funkcji mogą być wyświetlane z opcją -f do wbudowanych poleceń declare lub typeset. Opcja -F do deklaracji lub zestawienia wyświetli tylko nazwy funkcji (i opcjonalnie plik źródłowy i numer wiersza, jeśli opcja powłoki extdebug jest włączona). Funkcje mogą być eksportowane, tak aby podpowłoki były automatycznie definiowane za pomocą opcji -f wbudowanego elementu export. Definicja funkcji może zostać usunięta za pomocą opcji -f wbudowanej funkcji unset.
Funkcje mogą być rekurencyjne. Zmiennej FUNCNEST można użyć do ograniczenia głębokości stosu wywołań funkcji i liczby wywołań funkcji. Domyślnie nie ma nałożonego limitu liczby wywołań rekurencyjnych.
Powłoka pozwala oceniać wyrażenia arytmetyczne w pewnych okolicznościach (zobacz wbudowane polecenia let i deklaruj, polecenie złożone (( i Rozwinięcie arytmetyczne). Ocena jest wykonywana w liczbach całkowitych o stałej szerokości bez sprawdzania przepełnienia, chociaż dzielenie przez 0 jest uwięzione i oznaczane jako błąd. Operatory i ich pierwszeństwo, łączność i wartości są takie same jak w języku C. Poniższa lista operatorów jest pogrupowana w poziomy operatorów o równym priorytecie. Poziomy są wymienione w porządku malejącego pierwszeństwa.
zmienna post-inkrementacja i post-dekrementacja
jednoargumentowy minus i plus
preinkrementacja i dekrementacja zmiennej
logiczna i bitowa negacja
potęgowanie
mnożenie, dzielenie, reszta
dodawanie odejmowanie
przesunięcia bitowe w lewo i w prawo
porównanie
równość i nierówność
bitowe AND
bitowe wyłączne OR
bitowe LUB
logiczne I
logiczne LUB
operator warunkowy
zadanie
przecinek
Zmienne powłoki są dozwolone jako operandy; interpretacja parametrów jest wykonywana przed obliczeniem wyrażenia. W wyrażeniu do zmiennych powłoki można również odwoływać się za pomocą nazwy bez użycia składni interpretacji parametrów. Zmienna powłoki, która ma wartość null lub jest nieustawiona, ma wartość 0, gdy odwołuje się do niej przez nazwę bez użycia składni interpretacji parametrów. Wartość zmiennej jest oceniana jako wyrażenie arytmetyczne, gdy występuje do niej odwołanie lub gdy zmienna, której nadano atrybut integer za pomocą declare -i, ma przypisaną wartość. Wartość pusta daje w wyniku 0. Zmienna powłoki nie musi mieć włączonego atrybutu integer, aby mogła zostać użyta w wyrażeniu.
Stałe całkowite są zgodne z definicją języka C, bez sufiksów ani stałych znakowych. Stałe z wiodącym 0 są interpretowane jako liczby ósemkowe. Wiodące 0x lub 0X oznacza szesnastkowy. W przeciwnym razie liczby mają postać [podstawa#]n, gdzie opcjonalna podstawa to liczba dziesiętna z przedziału od 2 do 64 reprezentująca podstawę arytmetyczną, a n to liczba w tej bazie. Jeśli podstawa# zostanie pominięta, używana jest podstawa 10. Przy określaniu n, jeśli wymagana jest liczba niebędąca cyfrą, cyfry większe niż 9 są reprezentowane przez małe litery, wielkie litery, @ i _, w tej kolejności. Jeśli podstawa jest mniejsza lub równa 36, małe i wielkie litery mogą być używane zamiennie do reprezentowania liczb od 10 do 35.
Operatory są oceniane w kolejności pierwszeństwa. Podwyrażenia w nawiasach są obliczane jako pierwsze i mogą zastąpić powyższe zasady pierwszeństwa.
Wyrażenia warunkowe są używane przez polecenie złożone [[ oraz wbudowane polecenia test i [ do testowania atrybutów plików oraz przeprowadzania porównań łańcuchowych i arytmetycznych. Polecenia test i [ określają swoje zachowanie na podstawie liczby argumentów; zobacz opisy tych poleceń, aby zapoznać się z innymi działaniami związanymi z poleceniem.
Wyrażenia są tworzone z następujących jednoargumentowych lub binarnych liczb podstawowych. Bash obsługuje kilka nazw plików, zwłaszcza gdy są one używane w wyrażeniach. Jeśli system operacyjny, na którym działa bash, udostępnia te specjalne pliki, bash ich użyje; w przeciwnym razie emuluje je wewnętrznie za pomocą następującego zachowania: Jeśli jakikolwiek argument plik do jednego z podstawowych ma postać /dev/fd/n, to deskryptor pliku n jest zaznaczone. Jeśli argumentem pliku jednej z podstawowych wartości jest /dev/stdin, /dev/stdout lub /dev/ stderr, sprawdzany jest odpowiednio deskryptor pliku 0, 1 lub 2.
O ile nie określono inaczej, podstawowe operacje, które działają na plikach, podążają za dowiązaniami symbolicznymi i działają na celu łącza, a nie na samym łączu.
W połączeniu z [[ operatory < i > sortują leksykograficznie przy użyciu bieżących ustawień regionalnych. Polecenie test sortuje według kolejności ASCII.
Prawda, jeśli plik istnieje.
Prawda, jeśli plik istnieje i jest specjalnym plikiem blokowym.
Prawda, jeśli plik istnieje i jest specjalnym plikiem znakowym.
Prawda, jeśli plik istnieje i jest katalogiem.
Prawda, jeśli plik istnieje.
Prawda, jeśli plik istnieje i jest zwykłym plikiem.
Prawda, jeśli plik istnieje i ma ustawiony identyfikator grupy.
Prawda, jeśli plik istnieje i jest dowiązaniem symbolicznym.
Prawda, jeśli istnieje plik i ustawiony jest jego bit ``sticky''.
Prawda, jeśli plik istnieje i jest nazwanym potokiem (FIFO).
Prawda, jeśli plik istnieje i można go odczytać.
Prawda, jeśli plik istnieje i ma rozmiar większy od zera.
Prawda, jeśli deskryptor pliku fd jest otwarty i odnosi się do terminala.
Prawda, jeśli istnieje plik i ustawiony jest jego bit set-user-id.
Prawda, jeśli plik istnieje i można go zapisywać.
Prawda, jeśli plik istnieje i jest wykonywalny.
Prawda, jeśli plik istnieje i jest własnością efektywnego identyfikatora grupy.
Prawda, jeśli plik istnieje i jest dowiązaniem symbolicznym.
Prawda, jeśli plik istnieje i został zmodyfikowany od ostatniego odczytu.
Prawda, jeśli plik istnieje i jest własnością efektywnego identyfikatora użytkownika.
Prawda, jeśli plik istnieje i jest gniazdem.
Prawda, jeśli plik1 i plik2 odnoszą się do tego samego urządzenia i numerów i-węzłów.
Prawda, jeśli plik1 jest nowszy (zgodnie z datą modyfikacji) niż plik2 lub jeśli plik1 istnieje, a plik2 nie .
Prawda, jeśli plik1 jest starszy niż plik2 lub jeśli plik2 istnieje, a plik1 nie.
Prawda, jeśli opcja powłoki nazwa_opcji jest włączona. Zobacz listę opcji pod opisem opcji -o do wbudowanego set poniżej.
Prawda, jeśli ustawiona jest zmienna powłoki nazwa_zmiennej (przypisano jej wartość).
Prawda, jeśli zmienna powłoki nazwa_zmiennej jest ustawiona i jest odwołaniem do nazwy.
Prawda, jeśli długość łańcucha wynosi zero.
Prawda, jeśli długość string jest różna od zera.
Prawda, jeśli łańcuchy są równe. = powinno być używane z poleceniem test dla zgodności z POSIX. W połączeniu z poleceniem [[ wykonuje dopasowanie wzorca zgodnie z powyższym opisem (Polecenia złożone).
Prawda, jeśli łańcuchy nie są równe.
Prawda, jeśli string1 sortuje leksykograficznie przed string2.
Prawda, jeśli string1 sortuje leksykograficznie po string2.
OP to jedno z -eq, -ne, -lt, -le , -gt lub -ge. Te arytmetyczne operatory binarne zwracają wartość true, jeśli arg1 jest równy, nierówny, mniejszy, mniejszy lub równy, większy lub większy lub równy arg2, odpowiednio. Arg1 i arg2 mogą być dodatnimi lub ujemnymi liczbami całkowitymi. W połączeniu z poleceniem [[ Arg1 i Arg2 są obliczane jako wyrażenia arytmetyczne (patrz OBLICZANIE ARYTMETYCZNE powyżej) .
Gdy wykonywane jest proste polecenie, powłoka wykonuje następujące rozszerzenia, przypisania i przekierowania, od lewej do prawej, w następującej kolejności.
Słowa, które parser oznaczył jako przypisania zmiennych (poprzedzające nazwę polecenia) i przekierowania są zapisywane do późniejszego przetwarzania.
Słowa, które nie są przypisaniami zmiennych ani przekierowaniami, są interpretowane. Jeśli po rozwinięciu pozostaną jakiekolwiek słowa, pierwsze słowo jest traktowane jako nazwa polecenia, a pozostałe słowa jako argumenty.
Przekierowania są wykonywane w sposób opisany powyżej w punkcie PRZEKIEROWANIE.
Tekst po = w każdym przypisaniu zmiennej podlega interpretacji tyldy, interpretacji parametrów, podstawianiu poleceń, interpretacji arytmetycznej i usuwaniu cudzysłowów przed przypisaniem do zmiennej.
Jeśli nie zostanie wyświetlona żadna nazwa polecenia, przypisania zmiennych wpływają na bieżące środowisko powłoki. W przeciwnym razie zmienne są dodawane do środowiska wykonywanego polecenia i nie wpływają na bieżące środowisko powłoki. Jeśli którekolwiek z przypisań próbuje przypisać wartość do zmiennej tylko do odczytu, wystąpi błąd, a polecenie zostanie zakończone z niezerowym statusem.
Jeśli nie zostanie wyświetlona żadna nazwa polecenia, wykonywane są przekierowania, ale nie mają one wpływu na bieżące środowisko powłoki. Błąd przekierowania powoduje zakończenie polecenia z niezerowym statusem.
Jeśli po rozwinięciu pozostaje nazwa polecenia, wykonanie przebiega zgodnie z poniższym opisem. W przeciwnym razie polecenie zostanie zakończone. Jeśli jedno z rozszerzeń zawierało podstawienie polecenia, kod zakończenia polecenia jest kodem zakończenia ostatniego wykonanego podstawienia polecenia. Jeśli nie było podstawień poleceń, polecenie kończy działanie ze statusem zero.
Po podziale polecenia na słowa, jeśli wynikiem jest proste polecenie i opcjonalna lista argumentów, podejmowane są następujące działania.
Jeśli nazwa polecenia nie zawiera ukośników, powłoka próbuje je zlokalizować. Jeśli istnieje funkcja powłoki o tej nazwie, jest ona wywoływana w sposób opisany powyżej w sekcji FUNKCJE. Jeśli nazwa nie pasuje do funkcji, powłoka szuka jej na liście wbudowanych funkcji powłoki. Jeśli zostanie znalezione dopasowanie, wywoływana jest ta funkcja wbudowana.
Jeśli nazwa nie jest funkcją powłoki ani funkcją wbudowaną i nie zawiera ukośników, bash przeszukuje każdy element PATH w poszukiwaniu katalogu zawierającego plik wykonywalny o tej nazwie. Bash używa tablicy skrótów do zapamiętywania pełnych nazw plików wykonywalnych (zobacz hash w sekcji WBUDOWANE POLECENIA POWŁOKI poniżej). Pełne przeszukiwanie katalogów w PATH jest wykonywane tylko wtedy, gdy komenda nie zostanie znaleziona w tablicy skrótów. Jeśli wyszukiwanie nie powiedzie się, powłoka wyszukuje zdefiniowaną funkcję powłoki o nazwie command_not_found_handle. Jeśli ta funkcja istnieje, jest wywoływana w oddzielnym środowisku wykonawczym z oryginalnym poleceniem i argumentami oryginalnego polecenia jako argumentami, a status wyjścia funkcji staje się statusem wyjścia tej podpowłoki. Jeśli ta funkcja nie jest zdefiniowana, powłoka drukuje komunikat o błędzie i zwraca kod wyjścia 127.
Jeśli wyszukiwanie powiedzie się lub jeśli nazwa polecenia zawiera jeden lub więcej ukośników, powłoka wykonuje nazwany program w osobnym środowisku wykonawczym. Argument 0 jest ustawiany na podaną nazwę, a pozostałe argumenty polecenia są ustawiane na podane argumenty, jeśli takie istnieją.
Jeśli to wykonanie nie powiedzie się, ponieważ plik nie jest w formacie wykonywalnym, a plik nie jest katalogiem, zakłada się, że jest to skrypt powłoki, plik zawierający polecenia powłoki. Podpowłoka jest spawnowana, aby ją wykonać. Ta podpowłoka ponownie się inicjuje, więc efekt jest taki, jakby do obsługi skryptu została wywołana nowa powłoka, z wyjątkiem lokalizacji poleceń zapamiętanych przez rodzica (patrz hash poniżej w WBUDOWANE POLECENIA POWŁOKI) są zachowywane przez dziecko.
Jeśli program jest plikiem zaczynającym się od #!, pozostała część pierwszego wiersza określa interpreter programu. Powłoka wykonuje określony interpreter w systemach operacyjnych, które same nie obsługują tego formatu pliku wykonywalnego. Argumenty dla interpretera składają się z pojedynczego opcjonalnego argumentu następującego po nazwie interpretera w pierwszym wierszu programu, po którym następuje nazwa programu, po którym następują argumenty polecenia, jeśli takie istnieją.
Powłoka ma środowisko wykonawcze, które składa się z następujących elementów:
otwórz pliki dziedziczone przez powłokę podczas wywołania, zmodyfikowane przez przekierowania dostarczone do wbudowanego exec
bieżący katalog roboczy ustawiony przez cd, pushd lub popd lub dziedziczony przez powłokę przy wywołaniu
maska trybu tworzenia pliku ustawiona przez umask lub odziedziczona po rodzicu powłoki
obecne pułapki zastawione przez trap
parametry powłoki, które są ustawiane przez przypisanie zmiennej lub za pomocą set lub są dziedziczone z rodzica powłoki w środowisku
funkcje powłoki zdefiniowane podczas wykonywania lub odziedziczone z rodzica powłoki w środowisku
opcje włączane przy wywołaniu (domyślnie lub z argumentami wiersza poleceń) lub przez ustawienie
opcje włączone przez shopt
aliasy powłoki zdefiniowane za pomocą alias
różne identyfikatory procesów, w tym zadania w tle, wartość $$ i wartość PPID. Gdy ma zostać wykonane proste polecenie inne niż funkcja wbudowana lub powłoka, jest ono wywoływane w oddzielnym środowisku wykonawczym, które składa się z następujących elementów. O ile nie zaznaczono inaczej, wartości są dziedziczone z powłoki.
otwarte pliki powłoki oraz wszelkie modyfikacje i dodatki określone przez przekierowania do polecenia
bieżący katalog roboczy
maska trybu tworzenia pliku
zmienne powłoki i funkcje oznaczone do eksportu, wraz ze zmiennymi wyeksportowanymi dla polecenia, przekazane do środowiska
pułapki przechwycone przez powłokę są resetowane do wartości odziedziczonych po rodzicu powłoki, a pułapki ignorowane przez powłokę są ignorowane
Polecenie wywołane w tym oddzielnym środowisku nie może wpływać na środowisko wykonawcze powłoki.
Podstawianie poleceń, polecenia zgrupowane w nawiasach i polecenia asynchroniczne są wywoływane w środowisku podpowłoki, które jest duplikatem środowiska powłoki, z wyjątkiem tego, że pułapki przechwycone przez powłokę są resetowane do wartości, które powłoka odziedziczyła po swoim rodzicu podczas wywołania. Wbudowane polecenia, które są wywoływane jako część potoku, są również wykonywane w środowisku podpowłoki. Zmiany dokonane w środowisku podpowłoki nie mogą wpływać na środowisko wykonawcze powłoki.
Podpowłoki utworzone w celu wykonania podstawień poleceń dziedziczą wartość opcji -e z powłoki nadrzędnej. Gdy nie jest w trybie posix, bash czyści opcję -e w takich podpowłokach.
Jeśli po poleceniu występuje &, a kontrola zadania nie jest aktywna, domyślnym standardowym wejściem dla polecenia jest pusty plik /dev/null. W przeciwnym razie wywołane polecenie dziedziczy deskryptory plików powłoki wywołującej, zmodyfikowane przez przekierowania.
Gdy program jest wywoływany, otrzymuje tablicę łańcuchów zwaną środowiskiem. To jest lista par nazwa-wartość w postaci nazwa=wartość.
Powłoka zapewnia kilka sposobów manipulowania środowiskiem. Po wywołaniu powłoka skanuje własne środowisko i tworzy parametr dla każdej znalezionej nazwy, automatycznie oznaczając ją do eksportu do procesów potomnych. Wykonywane polecenia dziedziczą środowisko. Polecenia export i declare -x umożliwiają dodawanie i usuwanie parametrów i funkcji ze środowiska. Jeśli wartość parametru w środowisku zostanie zmodyfikowana, nowa wartość staje się częścią środowiska, zastępując starą. Środowisko dziedziczone przez każde wykonane polecenie składa się z początkowego środowiska powłoki, którego wartości mogą być modyfikowane w powłoce, pomniejszone o wszelkie pary usunięte przez polecenie unset, plus wszelkie dodatki poprzez eksport i deklaruj -x polecenia.
Środowisko dla dowolnego prostego polecenia lub funkcji można tymczasowo rozszerzyć, poprzedzając je przypisaniem parametrów, jak opisano powyżej w sekcji PARAMETRY. Te instrukcje przypisania mają wpływ tylko na środowisko widziane przez to polecenie.
Jeśli ustawiona jest opcja -k (zobacz wbudowane polecenie set poniżej), to wszystkie przypisania parametrów są umieszczane w środowisku polecenia, nie tylko te, które poprzedzają nazwę polecenia.
Gdy bash wywołuje polecenie zewnętrzne, zmienna _ jest ustawiana na pełną nazwę pliku polecenia i przekazywana do tego polecenia w jego środowisku.
Status wyjścia wykonanego polecenia to wartość zwrócona przez wywołanie systemowe waitpid lub równoważną funkcję. Statusy wyjścia mieszczą się w zakresie od 0 do 255, chociaż, jak wyjaśniono poniżej, powłoka może specjalnie używać wartości powyżej 125. Statusy wyjścia z wbudowanych poleceń powłoki i poleceń złożonych są również ograniczone do tego zakresu. W pewnych okolicznościach powłoka użyje specjalnych wartości, aby wskazać określone tryby awarii.
Dla celów powłoki, polecenie, które kończy się z zerowym kodem wyjścia, powiodło się. Status wyjścia równy zero wskazuje na powodzenie. Niezerowy status wyjścia wskazuje na niepowodzenie. Kiedy polecenie kończy się na krytycznym sygnale N, bash używa wartości 128+N jako statusu wyjścia.
Jeśli polecenie nie zostanie znalezione, proces potomny utworzony w celu jego wykonania zwraca status 127. Jeśli polecenie zostanie znalezione, ale nie jest wykonalne, zwracany jest kod 126.
Jeśli polecenie nie powiedzie się z powodu błędu podczas interpretacji lub przekierowania, kod zakończenia jest większy od zera.
Wbudowane polecenia powłoki zwracają stan 0 (true), jeśli się powiedzie, i niezerowy (false), jeśli podczas wykonywania wystąpi błąd. Wszystkie wbudowane zwracają status wyjścia 2, aby wskazać nieprawidłowe użycie, ogólnie nieprawidłowe opcje lub brakujące argumenty.
Sam Bash zwraca status wyjścia ostatniego wykonanego polecenia, chyba że wystąpi błąd składniowy, w którym to przypadku kończy działanie z wartością różną od zera. Zobacz także wbudowane polecenie exit poniżej.
Kiedy bash jest interaktywny, przy braku jakichkolwiek pułapek, ignoruje SIGTERM (tak, że kill 0 nie zabija interaktywnej powłoki) i SIGINT jest przechwytywany i obsługiwany (tak, że wbudowane wait jest przerywalne). We wszystkich przypadkach bash ignoruje SIGQUIT. Jeśli działa kontrola zadań, bash ignoruje SIGTTIN, SIGTTOU i SIGTSTP.
Niewbudowane polecenia uruchamiane przez bash mają procedury obsługi sygnału ustawione na wartości odziedziczone przez powłokę po jej rodzicu. Gdy kontrola zadań nie działa, polecenia asynchroniczne ignorują SIGINT i SIGQUIT oprócz tych odziedziczonych procedur obsługi. Polecenia uruchamiane w wyniku podstawienia poleceń ignorują generowane z klawiatury sygnały sterowania zadaniami SIGTTIN, SIGTTOU i SIGTSTP.
Powłoka domyślnie kończy działanie po otrzymaniu SIGHUP. Przed wyjściem interaktywna powłoka ponownie wysyła SIGHUP do wszystkich zadań, uruchomionych lub zatrzymanych. Zatrzymane zadania są wysyłane do SIGCONT, aby upewnić się, że otrzymają SIGHUP. Aby uniemożliwić powłoce wysyłanie sygnału do określonego zadania, należy je usunąć z tabeli zadań z wbudowanym disown (patrz WBUDOWANE POLECENIA POWŁOKI poniżej) lub oznaczyć jako nie otrzymać SIGHUP za pomocą disown -h.
Jeśli opcja powłoki huponexit została ustawiona za pomocą shopt, bash wysyła SIGHUP do wszystkich zadań, gdy logowanie interaktywne wyjścia skorupy.
Jeśli bash czeka na zakończenie polecenia i otrzyma sygnał, dla którego ustawiono pułapkę, pułapka nie zostanie wykonana, dopóki polecenie nie zostanie zakończone. Kiedy bash czeka na asynchroniczne polecenie przez wbudowane wait, odbiór sygnału, dla którego ustawiono pułapkę, spowoduje wait wbudowana w celu natychmiastowego powrotu ze statusem wyjścia większym niż 128, natychmiast po wykonaniu pułapki.
Kontrola zadań odnosi się do możliwości selektywnego zatrzymywania (wstrzymywania) wykonywania procesów i kontynuowania (wznowienia) ich wykonywania w późniejszym czasie. Użytkownik zazwyczaj korzysta z tej funkcji poprzez interaktywny interfejs dostarczany wspólnie przez sterownik terminala jądra systemu operacyjnego i bash.
Powłoka przypisuje zadanie do każdego potoku. Przechowuje tabelę aktualnie wykonywanych zadań, które można wyświetlić za pomocą polecenia jobs. Kiedy bash uruchamia zadanie asynchronicznie (w tle), wypisuje wiersz, który wygląda następująco:
[1] 25647
wskazując, że to zadanie ma numer 1 i że identyfikator procesu ostatniego procesu w potoku skojarzonym z tym zadaniem to 25647. Wszystkie procesy w pojedynczym potoku należą do tego samego zadania. Bash używa abstrakcji job jako podstawy kontroli zadań.
Aby ułatwić implementację interfejsu użytkownika do sterowania zadaniami, system operacyjny utrzymuje pojęcie identyfikatora grupy procesów bieżącego terminala. Członkowie tej grupy procesów (procesy, których identyfikator grupy procesów jest równy bieżącemu identyfikatorowi grupy procesów terminala) odbierają sygnały generowane przez klawiaturę, takie jak SIGINT. Mówi się, że te procesy są na pierwszym planie. Procesy w tle to te, których identyfikator grupy procesów różni się od identyfikatora terminala; takie procesy są odporne na sygnały generowane przez klawiaturę. Tylko procesy pierwszoplanowe mogą odczytywać lub, jeśli użytkownik tak określi za pomocą stty tostop, pisać do terminala. Procesy działające w tle, które próbują odczytać (zapisać do, gdy działa stty tostop) terminala, otrzymują sygnał SIGTTIN (SIGTTOU) przez sterownik terminala jądra, który, jeśli nie złapany, wstrzymuje proces.
Jeśli system operacyjny, na którym działa bash, obsługuje kontrolę zadań, bash zawiera narzędzia umożliwiające jego użycie. Wpisanie znaku suspend (zwykle ^Z, Control-Z) podczas działania procesu powoduje zatrzymanie tego procesu i przywrócenie kontroli do bash . Wpisanie znaku opóźnione zawieszenie (zwykle ^Y, Control-Y) powoduje zatrzymanie procesu podczas próby odczytania danych wejściowych z terminala i przywrócenie sterowania do basz. Użytkownik może następnie manipulować stanem tego zadania, używając polecenia bg, aby kontynuować je w tle, polecenia fg, aby kontynuować je na pierwszym planie, lub >zabij polecenie, aby go zabić. ^Z działa natychmiast i ma dodatkowy efekt uboczny polegający na odrzuceniu oczekujących danych wyjściowych i nagłówka.
Istnieje wiele sposobów odwoływania się do zadania w powłoce. Znak % wprowadza specyfikację stanowiska (specyfikacja stanowiska). Numer zadania n może być określany jako %n. Do zadania można również odwoływać się za pomocą przedrostka nazwy używanej do jego uruchomienia lub za pomocą podłańcucha, który pojawia się w jego wierszu poleceń. Na przykład %ce odnosi się do zatrzymanego zadania, którego nazwa polecenia zaczyna się od ce. Jeśli prefiks pasuje do więcej niż jednego zadania, bash zgłasza błąd. Z drugiej strony użycie %?ce odnosi się do każdego zadania zawierającego ciąg ce w wierszu poleceń. Jeśli podłańcuch pasuje do więcej niż jednego zadania, bash zgłasza błąd. Symbole %% i %+ odnoszą się do koncepcji powłoki dotyczącej bieżącego zadania, czyli ostatniego zadania zatrzymanego, gdy znajdowało się ono na pierwszym planie lub uruchomiony w tle. Do poprzedniej pracy można się odwołać za pomocą %-. Jeśli jest tylko jedna praca, %+ i %- mogą odnosić się do tej pracy. W danych wyjściowych dotyczących zadań (np. w wynikach polecenia jobs) bieżące zadanie jest zawsze oznaczone +, a poprzednie — - . Pojedynczy % (bez towarzyszącej specyfikacji stanowiska) odnosi się również do aktualnego stanowiska.
Proste nazwanie zadania może być użyte do przeniesienia go na pierwszy plan: %1 jest synonimem ``fg %1'', przenosząc zadanie 1 z tła do pierwszoplanowy. Podobnie ``%1 &'' wznawia zadanie 1 w tle, co odpowiada ``bg %1''.
Powłoka uczy się natychmiast, gdy zadanie zmienia stan. Zwykle bash czeka, aż ma wydrukować monit, zanim zgłosi zmiany w statusie zadania, aby nie przerywać żadnego innego wyjścia. Jeśli opcja -b wbudowanego polecenia set jest włączona, bash natychmiast zgłasza takie zmiany. Każda pułapka na SIGCHLD jest wykonywana dla każdego wychodzącego dziecka.
Jeśli zostanie podjęta próba wyjścia z bash, gdy zadania są zatrzymane (lub jeśli opcja powłoki checkjobs została włączona za pomocą wbudowanego shopt, uruchomiony ), powłoka drukuje komunikat ostrzegawczy i, jeśli opcja checkjobs jest włączona, wyświetla listę zadań i ich statusów. Polecenia jobs można następnie użyć do sprawdzenia ich statusu. Jeśli podjęta zostanie druga próba wyjścia bez polecenia, powłoka nie wypisze kolejnego ostrzeżenia, a zatrzymane zadania zostaną przerwane.
Kiedy powłoka czeka na zadanie lub proces używając wbudowanej funkcji wait i włączona jest kontrola zadań, wait powróci, gdy zadanie zmieni stan. Opcja -f powoduje, że wait czeka na zakończenie zadania lub procesu przed powrotem.
Podczas wykonywania interaktywnego, bash wyświetla główny monit PS1, gdy jest gotowy do odczytania polecenia, oraz dodatkowy monit PS2, gdy wymaga więcej danych aby wykonać polecenie. Bash wyświetla PS0 po odczytaniu polecenia, ale przed jego wykonaniem. Bash wyświetla PS4 zgodnie z powyższym opisem przed śledzeniem każdego polecenia, gdy włączona jest opcja -x. Bash umożliwia dostosowanie tych ciągów monitów przez wstawienie pewnej liczby znaków specjalnych z odwróconym ukośnikiem, które są dekodowane w następujący sposób:
- \a
znak dzwonka ASCII (07)
- \d
data w formacie „Data miesiąca dnia tygodnia” (np. „Wtorek 26 maja”)
- \D{format}
format jest przekazywany do strftime(3), a wynik jest wstawiany do ciągu zachęty; pusty format daje reprezentację czasu specyficzną dla ustawień regionalnych. Szelki są wymagane
- \e
znak ucieczki ASCII (033)
- \h
nazwa hosta do pierwszego `.'
- \H
nazwa hosta
- \j
liczba zadań aktualnie zarządzanych przez powłokę
- \l
nazwa podstawowa nazwy urządzenia końcowego powłoki
- \n
Nowa linia
- \r
powrót karetki
- \s
nazwa powłoki, nazwa bazowa $0 (część po końcowym ukośniku)
- \t
aktualny czas w formacie 24-godzinnym HH:MM:SS
- \T
aktualny czas w formacie 12-godzinnym HH:MM:SS
- \@
aktualny czas w formacie 12-godzinnym am/pm
- \A
aktualny czas w formacie 24-godzinnym GG:MM
- \u
nazwa użytkownika bieżącego użytkownika
- \v
wersja bash (np. 2.00)
- \V
wydanie bash, wersja + poziom łatki (np. 2.00.0)
- \w
bieżący katalog roboczy, z $HOME w skrócie tyldą (używa wartości zmiennej PROMPT_DIRTRIM)
- \W
nazwa bazowa bieżącego katalogu roboczego, z $HOME w skrócie tyldą
- \!
numer historii tego polecenia
- \#
numer polecenia tego polecenia
- \$
jeśli efektywny UID to 0, #, w przeciwnym razie $
- \nnn
znak odpowiadający liczbie ósemkowej nnn
- \\
ukośnik odwrotny
- \[
rozpocząć sekwencję znaków niedrukowalnych, których można użyć do osadzenia sekwencji kontrolnej terminala w monicie
- \]
zakończyć ciąg znaków niedrukowalnych
Numer polecenia i numer historii są zwykle różne: numer historii polecenia to jego pozycja na liście historii, która może zawierać polecenia przywrócone z pliku historii (patrz HISTORIA poniżej), podczas gdy polecenie liczba to pozycja w sekwencji poleceń wykonywanych podczas bieżącej sesji powłoki. Po zdekodowaniu łańcucha jest on rozszerzany poprzez interpretację parametrów, podstawianie poleceń, interpretację arytmetyczną i usuwanie cudzysłowów, zależnie od wartości opcji powłoki promptvars (zobacz opis opcji shopt< pod WBUDOWANE POLECENIA POWŁOKI poniżej). Może to mieć niepożądane skutki uboczne, jeśli fragmenty łańcucha ze znakami ucieczki pojawiają się w podstawieniach poleceń lub zawierają znaki specjalne do interpretacji słów.
Jest to biblioteka obsługująca odczytywanie danych wejściowych podczas używania powłoki interaktywnej, chyba że przy wywołaniu powłoki zostanie podana opcja --noediting. Edycja linii jest również używana podczas używania opcji -e wbudowanej funkcji read. Domyślnie polecenia edycji linii są podobne do poleceń Emacsa. Dostępny jest również interfejs edycji linii w stylu vi. Edycję linii można włączyć w dowolnym momencie za pomocą opcji -o emacs lub -o vi wbudowanego set (zobacz WBUDOWANE POWŁOKI POLECENIA poniżej). Aby wyłączyć edycję linii po uruchomieniu powłoki, użyj opcji +o emacs lub +o vi wbudowanego elementu set.
W tej sekcji notacja w stylu Emacsa jest używana do oznaczania naciśnięć klawiszy. Klawisze sterujące są oznaczane przez C-klawisz, np. C-n oznacza Control-N. Podobnie klucze meta są oznaczane przez M-klucz, więc M-x oznacza Meta-X. (Na klawiaturach bez klawisza meta M-x oznacza ESC x, tzn. naciśnij klawisz Escape, a następnie x. To czyni ESC prefiksem meta. Kombinacja M-C-x oznacza ESC-Control-x lub naciśnij klawisz Escape przytrzymaj klawisz Control podczas naciskania klawisza x).
Komendom readline można podawać numeryczne argumenty, które normalnie działają jak liczba powtórzeń. Czasami jednak to znak argumentu jest znaczący. Przekazanie negatywnego argumentu do polecenia, które działa w kierunku do przodu (np. kill-line), powoduje, że to polecenie działa w kierunku wstecznym. Polecenia, których zachowanie z argumentami odbiega od tego, opisano poniżej.
Gdy polecenie jest opisane jako tekst zabijanie, usunięty tekst jest zapisywany do ewentualnego odzyskania w przyszłości (szarpanie). Zabity tekst jest zapisywany w pierścieniu zabijania. Kolejne zabójstwa powodują, że tekst jest gromadzony w jednej jednostce, którą można szarpnąć jednocześnie. Polecenia, które nie zabijają tekstu oddzielają fragmenty tekstu w pierścieniu zabijania.
Readline jest dostosowywany poprzez umieszczanie poleceń w pliku inicjującym (plik inputrc). Nazwa tego pliku jest pobierana z wartości zmiennej INPUTRC. Jeśli ta zmienna nie jest ustawiona, wartością domyślną jest ~/.inputrc. Jeśli ten plik nie istnieje lub nie można go odczytać, ostatecznym ustawieniem domyślnym jest /etc/inputrc. Gdy uruchamiany jest program korzystający z biblioteki readline, odczytywany jest plik inicjalizacyjny oraz ustawiane są przypisania klawiszy i zmienne. W pliku inicjującym readline dozwolonych jest tylko kilka podstawowych konstrukcji. Puste linie są ignorowane. Wiersze zaczynające się od # to komentarze. Linie zaczynające się od $ oznaczają konstrukcje warunkowe. Inne linie oznaczają przypisania klawiszy i ustawienia zmiennych.
Domyślne przypisania klawiszy można zmienić za pomocą pliku inputrc. Inne programy korzystające z tej biblioteki mogą dodawać własne polecenia i powiązania.
Na przykład umieszczenie
M-Control-u: universal-argument
Lub
C-Meta-u: universal-argument
do inputrc spowoduje, że M-C-u wykona komendę readline argument uniwersalny.
Rozpoznawane są następujące symboliczne nazwy znaków: RUBOUT, DEL, ESC, LFD, NEWLINE, RET, RETURN, SPC, SPACJA i TAB.
Oprócz nazw poleceń, readline umożliwia powiązanie klawiszy z ciągiem znaków, który jest wstawiany po naciśnięciu klawisza (makro).
Składnia kontrolowania przypisań klawiszy w pliku inputrc jest prosta. Wystarczy nazwa polecenia lub tekst makra i sekwencja klawiszy, z którą ma być powiązany. Nazwę można określić na dwa sposoby: jako symboliczną nazwę klucza, ewentualnie z przedrostkami Meta- lub Control-, albo jako sekwencję klawiszy.
Gdy używasz formy nazwa-klucza: nazwa-funkcji lub makro, nazwa-klucza to nazwa klucza zapisana w Język angielski. Na przykład:
Control-u: universal-argument Meta-Rubout: backward-kill-word Control-o: "> output"
W powyższym przykładzie C-u jest powiązany z funkcją argument-uniwersalny, M-DEL jest powiązany z funkcją backward-kill -word, a C-o musi uruchomić makro wyrażone po prawej stronie (czyli wstawić tekst ``> output'' do linii).
W drugiej postaci, "sekwencja_klawiszy": nazwa-funkcji lub makro, sekwencja-kluczy różni się od nazwa-klucza powyżej, ponieważ ciągi oznaczające całą sekwencję klawiszy można określić, umieszczając sekwencję w cudzysłowach. Można użyć niektórych skrótów klawiaturowych w stylu GNU Emacsa, jak w poniższym przykładzie, ale symboliczne nazwy znaków nie są rozpoznawane.
"\C-u": universal-argument
"\C-x\C-r": re-read-init-file
"\e[11~": "Function Key 1"
W tym przykładzie C-u jest ponownie powiązane z funkcją argument-uniwersalny. C-x C-r jest powiązane z funkcją re-read-init-file, a ESC [ 1 1 ~ jest związane z wstawieniem tekstu `` Klawisz funkcyjny 1''.
Pełny zestaw sekwencji ucieczki w stylu GNU Emacsa to
- \C-
przedrostek kontrolny
- \M-
przedrostek meta
- \e
postać ucieczki
- \\
ukośnik wsteczny
- \"
dosłownie "
- \'
dosłownie
Oprócz sekwencji ucieczki w stylu GNU Emacsa, dostępny jest drugi zestaw znaków ucieczki odwrotnym ukośnikiem:
- \a
alarm (dzwonek)
- \b
spacja
- \d
usuwać
- \f
kanał formularza
- \n
Nowa linia
- \r
powrót karetki
- \t
zakładka pozioma
- \v
zakładka pionowa
- \nnn
ośmiobitowy znak, którego wartością jest wartość ósemkowa nnn (od jednej do trzech cyfr)
- \xHH
ośmiobitowy znak, którego wartością jest wartość szesnastkowa HH (jedna lub dwie cyfry szesnastkowe)
Podczas wprowadzania tekstu makra należy użyć pojedynczych lub podwójnych cudzysłowów, aby wskazać definicję makra. Zakłada się, że tekst niecytowany jest nazwą funkcji. W treści makra opisane powyżej znaki ucieczki odwrotnego ukośnika są rozszerzone. Ukośnik odwrotny spowoduje zacytowanie dowolnego innego znaku w tekście makra, w tym „ i '.
Bash umożliwia wyświetlanie lub modyfikowanie bieżących przypisań klawiszy readline za pomocą wbudowanego polecenia bind. Tryb edycji można przełączać podczas korzystania interaktywnego za pomocą opcji -o wbudowanego polecenia set (zobacz WBUDOWANE POLECENIA POWŁOKI poniżej).
Readline ma zmienne, których można użyć do dalszego dostosowania jego zachowania. Zmienną można ustawić w pliku inputrc za pomocą instrukcji w formie
set variable-name value
lub za pomocą wbudowanego polecenia bind (zobacz WBUDOWANE POLECENIA POWŁOKI poniżej).
O ile nie zaznaczono inaczej, zmienne readline mogą przyjmować wartości On lub Off (bez względu na wielkość liter). Nierozpoznane nazwy zmiennych są ignorowane. Gdy odczytywana jest wartość zmiennej, wartości puste lub zerowe, „on” (wielkość liter nie jest rozróżniana) i „1” są równoważne wł.. Wszystkie inne wartości są równoważne Wył.. Zmienne i ich wartości domyślne to:
Kontroluje, co się dzieje, gdy readline chce zadzwonić dzwonkiem terminala. Jeśli ustawione na none, readline nigdy nie dzwoni. Jeśli ustawione na widoczny, readline używa widocznego dzwonka, jeśli jest dostępny. Jeśli ustawione na audible, readline próbuje zadzwonić dzwonkiem terminala.
Jeśli ustawione na Włączone, readline próbuje powiązać znaki kontrolne traktowane specjalnie przez sterownik terminala jądra z ich odpowiednikami readline.
Jeśli ustawione na Włączone, readline próbuje na krótko przesunąć kursor do nawiasu otwierającego, gdy wstawiany jest nawias zamykający.
Jeśli ustawione na Włączone, podczas wyświetlania uzupełnień, readline wyświetla wspólny przedrostek zestawu możliwych uzupełnień innym kolorem. Definicje kolorów są pobierane z wartości zmiennej środowiskowej LS_COLORS.
Jeśli ustawione na Włączone, readline wyświetla możliwe uzupełnienia przy użyciu różnych kolorów, aby wskazać ich typ pliku. Definicje kolorów są pobierane z wartości zmiennej środowiskowej LS_COLORS.
Ciąg wstawiany podczas wykonywania polecenia readline insert-comment. To polecenie jest powiązane z M-# w trybie emacs i z # w trybie poleceń vi.
Liczba kolumn ekranu używanych do wyświetlania możliwych dopasowań podczas wykonywania uzupełniania. Wartość jest ignorowana, jeśli jest mniejsza niż 0 lub większa niż szerokość ekranu terminala. Wartość 0 spowoduje wyświetlenie dopasowań po jednym w każdym wierszu. Wartość domyślna to -1.
Jeśli ustawione na Włączone, readline wykonuje dopasowywanie i uzupełnianie nazw plików bez uwzględniania wielkości liter.
Jeśli ustawione na Włączone i włączone completion-ignore-case, readline traktuje łączniki (-) i podkreślenia (_) jako odpowiednik podczas dopasowywania i uzupełniania nazw plików bez uwzględniania wielkości liter.
Długość w znakach wspólnego przedrostka listy możliwych uzupełnień, która jest wyświetlana bez modyfikacji. W przypadku ustawienia wartości większej niż zero wspólne przedrostki dłuższe niż ta wartość są zastępowane wielokropkiem podczas wyświetlania możliwych uzupełnień.
Określa, kiedy użytkownik jest proszony o wyświetlenie liczby możliwych uzupełnień wygenerowanych przez polecenie possible-completions. Może być ustawiona na dowolną liczbę całkowitą większą lub równą zeru. Jeśli liczba możliwych uzupełnień jest większa lub równa wartości tej zmiennej, readline zapyta, czy użytkownik chce je zobaczyć; w przeciwnym razie są one po prostu wyświetlane na terminalu.
Jeśli ustawione na Włączone, readline będzie konwertować znaki z ustawionym ósmym bitem na sekwencję klawiszy ASCII poprzez usunięcie ósmego bitu i poprzedzenie znaku ucieczki (w efekcie użycie ucieczki jako przedrostka meta). Domyślnym ustawieniem jest Włączone, ale readline ustawi je na Wyłączone, jeśli ustawienia narodowe zawierają znaki ośmiobitowe.
Jeśli ustawione na Włączone, readline zablokuje uzupełnianie wyrazów. Znaki uzupełniające zostaną wstawione do wiersza tak, jakby zostały odwzorowane na self-insert.
Gdy ustawione na Wł., w systemach operacyjnych, które wskazują, że to obsługują, readline wyświetla znak odpowiadający sygnałowi generowanemu z klawiatury.
Określa, czy readline zaczyna się od zestawu przypisań klawiszy podobnych do Emacsa lub vi. tryb-edycji można ustawić na emacs lub vi.
Jeśli zmienna show-mode-in-prompt jest włączona, ten napis jest wyświetlany bezpośrednio przed ostatnią linią głównego monitu, gdy aktywny jest tryb edycji emacsa. Wartość jest rozwijana jak powiązanie klawisza, więc dostępny jest standardowy zestaw prefiksów meta- i kontrolnych oraz sekwencji ucieczki z ukośnikiem odwrotnym. Użyj znaków specjalnych \1 i \2, aby rozpocząć i zakończyć sekwencje znaków niedrukowalnych, których można użyć do osadzenia sekwencji sterującej terminala w ciągu trybu.
Gdy ustawione na Włączone, readline skonfiguruje terminal w sposób, który umożliwi mu wstawienie każdego wklejenia do bufora edycji jako pojedynczy ciąg znaków, zamiast traktować każdy znak tak, jakby został odczytany z klawiatury. Może to uniemożliwić interpretację wklejonych znaków jako poleceń edycji.
Gdy ustawione na Wł., readline spróbuje włączyć klawiaturę aplikacji, gdy zostanie wywołana. Niektóre systemy wymagają tego, aby włączyć klawisze strzałek.
Gdy ustawione na Włączone, readline spróbuje włączyć dowolny klawisz modyfikujący meta, który terminal twierdzi, że obsługuje, gdy zostanie wywołany. Na wielu terminalach klucz meta służy do wysyłania znaków ośmiobitowych.
Jeśli ustawione na Włączone, interpretacja tyldy jest wykonywana, gdy readline próbuje uzupełnić słowa.
Jeśli ustawione na Wł., kod historii próbuje umieścić punkt w tym samym miejscu na każdej linii historii pobranej za pomocą previous-history lub next-history .
Ustaw maksymalną liczbę wpisów historii zapisywanych na liście historii. Jeśli ustawione na zero, wszystkie istniejące wpisy historii są usuwane i żadne nowe wpisy nie są zapisywane. W przypadku ustawienia wartości mniejszej od zera liczba wpisów historii nie jest ograniczona. Domyślnie liczba wpisów historii jest ustawiona na wartość zmiennej powłoki HISTSIZE. Jeśli zostanie podjęta próba ustawienia history-size na wartość nieliczbową, maksymalna liczba wpisów historii zostanie ustawiona na 500.
Gdy ustawione na Włączone, sprawia, że readline używa pojedynczej linii do wyświetlania, przewijając dane wejściowe w poziomie na pojedynczej linii ekranu, gdy staje się ona dłuższa niż szerokość ekranu, zamiast zawijania do nowej linii. To ustawienie jest automatycznie włączane dla zacisków o wysokości 1.
Jeśli ustawione na Włączone, readline włączy wejście ośmiobitowe (to znaczy nie usunie ósmego bitu z odczytywanych znaków), niezależnie od tego, co terminal twierdzi, że obsługuje. Nazwa meta-flag jest synonimem tej zmiennej. Domyślnym ustawieniem jest Wył., ale readline ustawi je na Wł., jeśli ustawienia narodowe zawierają znaki ośmiobitowe.
Ciąg znaków, który powinien zakończyć wyszukiwanie przyrostowe bez późniejszego wykonywania znaku jako polecenia. Jeśli tej zmiennej nie podano wartości, znaki ESC i C-J zakończą wyszukiwanie przyrostowe.
Ustaw aktualną mapę klawiszy readline. Zbiór prawidłowych nazw map klawiszy to emacs, emacs-standard, emacs-meta, emacs-ctlx, vi, vi-command i vi-insert. vi jest odpowiednikiem vi-komendy; emacs jest odpowiednikiem emacs-standard. Domyślna wartość to emacs; wartość editing-mode wpływa również na domyślną mapę klawiszy.
Określa czas, przez jaki readline będzie czekać na znak podczas czytania niejednoznacznej sekwencji klawiszy (takiej, która może utworzyć kompletną sekwencję klawiszy przy użyciu dotychczas odczytanych danych wejściowych lub może wymagać dodatkowych danych wejściowych, aby dokończyć dłuższą sekwencję klawiszy) . Jeśli żadne wejście nie zostanie odebrane w tym czasie, readline użyje krótszej, ale kompletnej sekwencji klawiszy. Wartość jest podawana w milisekundach, więc wartość 1000 oznacza, że readline będzie czekać jedną sekundę na dodatkowe dane wejściowe. Jeśli ta zmienna jest ustawiona na wartość mniejszą lub równą zeru albo na wartość nieliczbową, readline będzie czekać na naciśnięcie innego klawisza, aby zdecydować, którą sekwencję klawiszy zakończyć.
W przypadku ustawienia Wł. uzupełnione nazwy katalogów mają dołączony ukośnik.
W przypadku ustawienia Wł. wiersze historii, które zostały zmodyfikowane, są wyświetlane z poprzedzającą gwiazdką (*).
Jeśli ustawione na Włączone, uzupełnione nazwy, które są dowiązaniami symbolicznymi do katalogów, mają dołączony ukośnik (zależnie od wartości mark-directories).
Ta zmienna, gdy jest ustawiona na On, powoduje, że readline dopasowuje pliki, których nazwy zaczynają się od `.' (ukryte pliki) podczas uzupełniania nazw plików. Jeśli ustawione na Wył., wiodący `.' musi być podany przez użytkownika w nazwie pliku do uzupełnienia.
Jeśli ustawione na Wł., uzupełnianie menu wyświetla wspólny przedrostek listy możliwych uzupełnień (która może być pusta) przed cyklicznym przeglądaniem listy.
Jeśli ustawione na Włączone, readline będzie wyświetlać znaki z ustawionym ósmym bitem bezpośrednio, zamiast jako sekwencję specjalną z meta-prefiksem. Domyślnym ustawieniem jest Wył., ale readline ustawi je na Wł., jeśli ustawienia narodowe zawierają znaki ośmiobitowe.
Jeśli ustawione na Włączone, readline używa wewnętrznego pagera podobnego do więcej, aby wyświetlić jednocześnie ekran możliwych uzupełnień.
Jeśli ustawione na Włączone, readline wyświetli uzupełnienia z dopasowaniami posortowanymi poziomo w porządku alfabetycznym, zamiast w dół ekranu.
Jeśli ustawione na Włączone, readline cofnie wszystkie zmiany w liniach historii przed powrotem po wykonaniu accept-line. Domyślnie wiersze historii mogą być modyfikowane i zachowywać indywidualne listy cofania dla wywołań readline.
Zmienia to domyślne zachowanie funkcji uzupełniania. Jeśli ustawione na Wł., słowa, które mają więcej niż jedno możliwe uzupełnienie, powodują natychmiastowe wyświetlenie dopasowań zamiast dzwonienia.
Zmienia to domyślne zachowanie funkcji uzupełniania w sposób podobny do show-all-if-ambiguous. Jeśli ustawione na Wł., słowa, które mają więcej niż jedno możliwe uzupełnienie bez żadnego możliwego uzupełnienia częściowego (możliwe uzupełnienia nie mają wspólnego przedrostka), powodują natychmiastowe wyświetlenie dopasowań zamiast dzwonienia.
Jeśli ustawione na Wł., dodaj ciąg znaków na początku zachęty wskazujący tryb edycji: emacs, polecenie vi lub wstawianie vi. Ciągi trybów są ustawiane przez użytkownika (np. emacs-mode-string).
Ustawienie Wł. zmienia domyślne zachowanie uzupełniania podczas wstawiania pojedynczego dopasowania do wiersza. Jest aktywny tylko podczas uzupełniania w środku słowa. Jeśli włączone, readline nie wstawia znaków z uzupełnienia, które pasują do znaku po kropce w uzupełnianym słowie, więc części słowa za kursorem nie są powielane.
Jeśli zmienna show-mode-in-prompt jest włączona, ten łańcuch jest wyświetlany bezpośrednio przed ostatnim wierszem głównego monitu, gdy aktywny jest tryb edycji vi i tryb poleceń. Wartość jest rozwijana jak powiązanie klawisza, więc dostępny jest standardowy zestaw prefiksów meta- i kontrolnych oraz sekwencji ucieczki z ukośnikiem odwrotnym. Użyj znaków specjalnych \1 i \2, aby rozpocząć i zakończyć sekwencje znaków niedrukowalnych, których można użyć do osadzenia sekwencji sterującej terminala w ciągu trybu.
Jeśli zmienna show-mode-in-prompt jest włączona, ten ciąg jest wyświetlany bezpośrednio przed ostatnim wierszem głównego monitu, gdy aktywny jest tryb edycji vi i tryb wstawiania. Wartość jest rozwijana jak powiązanie klawisza, więc dostępny jest standardowy zestaw prefiksów meta- i kontrolnych oraz sekwencji ucieczki z ukośnikiem odwrotnym. Użyj znaków specjalnych \1 i \2, aby rozpocząć i zakończyć sekwencje znaków niedrukowalnych, których można użyć do osadzenia sekwencji sterującej terminala w ciągu trybu.
Jeśli ustawione na Wł., podczas wyświetlania listy możliwych uzupełnień do nazwy pliku zostanie dodany znak oznaczający typ pliku zgłoszony przez stat(2).
Readline implementuje funkcję podobną w duchu do funkcji kompilacji warunkowej preprocesora C, która umożliwia wykonywanie przypisań klawiszy i ustawień zmiennych w wyniku testów. Używane są cztery dyrektywy parsera.
Konstrukcja $if umożliwia tworzenie powiązań na podstawie trybu edycji, używanego terminala lub aplikacji korzystającej z readline. Tekst testu, po jakimkolwiek operatorze porównania, rozciąga się do końca wiersza; o ile nie zaznaczono inaczej, do jego wyizolowania nie są wymagane żadne znaki.
Postać mode= dyrektywy $if jest używana do sprawdzania, czy readline jest w trybie emacs czy vi. Można tego użyć w połączeniu z poleceniem set keymap, na przykład, aby ustawić powiązania tylko w mapach klawiszy emacs-standard i emacs-ctlx jeśli readline uruchamia się w trybie emacs.
Formularz term= może być użyty do włączenia przypisań klawiszy specyficznych dla terminala, być może do powiązania sekwencji klawiszy wyprowadzanych przez klawisze funkcyjne terminala. Słowo po prawej stronie = jest sprawdzane zarówno pod kątem pełnej nazwy terminala, jak i części nazwy terminala przed pierwszym -. Dzięki temu słońce może na przykład dopasować zarówno słońce, jak i słońce-cmd.
Test wersji może służyć do przeprowadzania porównań z określonymi wersjami readline. wersja rozwija się do bieżącej wersji readline. Zestaw operatorów porównania obejmuje =, (i ==), !=, <=, >=, < i >. Numer wersji podany po prawej stronie operatora składa się z głównego numeru wersji, opcjonalnej kropki dziesiętnej i opcjonalnej wersji pomocniczej (np. 7.1). Jeśli wersja pomocnicza zostanie pominięta, przyjmuje się, że jest to 0. Operator może być oddzielony od ciągu znaków version i od argumentu numeru wersji białymi znakami.
Konstrukcja application służy do uwzględnienia ustawień specyficznych dla aplikacji. Każdy program korzystający z biblioteki readline ustawia nazwę aplikacji, a plik inicjalizacyjny może testować określoną wartość. Można to wykorzystać do powiązania sekwencji klawiszy z funkcjami przydatnymi w określonym programie. Na przykład poniższe polecenie dodaje sekwencję klawiszy, która cytuje bieżące lub poprzednie słowo w bash:
$if Bash
# Quote the current or previous word
"\C-xq": "\eb\"\ef\""
$endifKonstrukcja zmienna zapewnia proste testy równości dla zmiennych i wartości readline. Dozwolone operatory porównania to =, == i !=. Nazwa zmiennej musi być oddzielona od operatora porównania białymi znakami; operator może być oddzielony od wartości po prawej stronie spacją. Testowane mogą być zarówno zmienne łańcuchowe, jak i boolowskie. Zmienne logiczne muszą być sprawdzane pod kątem wartości on i off.
To polecenie, jak widać w poprzednim przykładzie, kończy działanie polecenia $if.
Polecenia w tej gałęzi dyrektywy $if są wykonywane, jeśli test się nie powiedzie.
Ta dyrektywa przyjmuje pojedynczą nazwę pliku jako argument i odczytuje polecenia i powiązania z tego pliku. Na przykład poniższa dyrektywa brzmiałaby /etc/inputrc:
$include /etc/inputrcReadline udostępnia polecenia do przeszukiwania historii poleceń (patrz HISTORIA poniżej) w poszukiwaniu wierszy zawierających określony ciąg znaków. Dostępne są dwa tryby wyszukiwania: przyrostowy i nieprzyrostowy.
Wyszukiwanie przyrostowe rozpoczyna się, zanim użytkownik zakończy wpisywanie ciągu wyszukiwania. Po wpisaniu każdego znaku szukanego ciągu readline wyświetla następny wpis z historii pasujący do dotychczas wpisanego ciągu. Wyszukiwanie przyrostowe wymaga tylko tylu znaków, ile potrzeba do znalezienia żądanego wpisu historii. Znaki obecne w wartości zmiennej isearch-terminators służą do zakończenia wyszukiwania przyrostowego. Jeśli tej zmiennej nie przypisano wartości, znaki Escape i Control-J zakończą wyszukiwanie przyrostowe. Control-G przerwie wyszukiwanie przyrostowe i przywróci pierwotną linię. Po zakończeniu wyszukiwania pozycja historii zawierająca wyszukiwany ciąg staje się bieżącym wierszem.
Aby znaleźć inne pasujące wpisy na liście historii, naciśnij odpowiednio Control-S lub Control-R. Spowoduje to wyszukanie wstecz lub do przodu w historii następnego wpisu pasującego do wyszukiwanego ciągu wpisanego do tej pory. Każda inna sekwencja klawiszy powiązana z poleceniem readline zakończy wyszukiwanie i wykona to polecenie. Na przykład nowy wiersz zakończy wyszukiwanie i zaakceptuje wiersz, tym samym wykonując polecenie z listy historii.
Readline zapamiętuje ostatni przyrostowy ciąg wyszukiwania. Jeśli dwa klawisze Control-R zostaną wpisane bez żadnych pośrednich znaków definiujących nowy ciąg wyszukiwania, użyty zostanie dowolny zapamiętany ciąg wyszukiwania.
Wyszukiwania nieinkrementalne odczytują cały ciąg wyszukiwania przed rozpoczęciem wyszukiwania pasujących wierszy historii. Ciąg wyszukiwania może być wpisany przez użytkownika lub może być częścią zawartości bieżącego wiersza.
Poniżej znajduje się lista nazw poleceń i domyślnych sekwencji klawiszy, z którymi są one powiązane. Nazwy poleceń bez towarzyszącej sekwencji klawiszy są domyślnie nieograniczone. W poniższych opisach punkt odnosi się do bieżącej pozycji kursora, a znak odnosi się do pozycji kursora zapisanej poleceniem set-mark. Tekst między punktem a znakiem jest określany jako region.
Przejdź na początek bieżącej linii.
Przejdź na koniec linii.
Przesuń postać do przodu.
Cofnij postać.
Przejdź do przodu do końca następnego słowa. Słowa składają się ze znaków alfanumerycznych (liter i cyfr).
Powrót do początku bieżącego lub poprzedniego słowa. Słowa składają się ze znaków alfanumerycznych (liter i cyfr).
Przejdź do przodu do końca następnego słowa. Słowa są oddzielone niecytowanymi metaznakami powłoki.
Powrót do początku bieżącego lub poprzedniego słowa. Słowa są oddzielone niecytowanymi metaznakami powłoki.
Próba przesunięcia punktu do tej samej kolumny ekranu fizycznego na poprzedniej linii ekranu fizycznego. Nie przyniesie to pożądanego efektu, jeśli bieżąca linia Readline nie zajmuje więcej niż jednej fizycznej linii lub jeśli punkt nie jest większy niż długość znaku zachęty plus szerokość ekranu.
Próba przesunięcia punktu do tej samej kolumny ekranu fizycznego na następnej linii ekranu fizycznego. Nie przyniesie to pożądanego efektu, jeśli bieżąca linia Readline nie zajmuje więcej niż jednej fizycznej linii lub jeśli długość bieżącej linii Readline nie jest większa niż długość zachęty plus szerokość ekranu.
Wyczyść ekran i, jeśli to możliwe, bufor przewijania terminala, a następnie przerysuj bieżącą linię, pozostawiając bieżącą linię u góry ekranu.
Wyczyść ekran, a następnie przerysuj bieżącą linię, pozostawiając bieżącą linię u góry ekranu. Z argumentem odśwież bieżącą linię bez czyszczenia ekranu.
Odśwież bieżącą linię.
Zaakceptuj linię niezależnie od tego, gdzie znajduje się kursor. Jeśli ta linia nie jest pusta, dodaj ją do listy historii zgodnie ze stanem zmiennej HISTCONTROL. Jeśli linia jest zmodyfikowaną linią historii, przywróć linię historii do jej pierwotnego stanu.
Pobierz poprzednie polecenie z listy historii, cofając się na liście.
Pobierz następne polecenie z listy historii, przechodząc do przodu na liście.
Przejdź do pierwszej linii w historii.
Przejdź na koniec historii wprowadzania, czyli do aktualnie wprowadzanej linii.
Wyszukiwanie wstecz, zaczynając od bieżącej linii i przesuwając się „w górę” w historii, jeśli to konieczne. To jest wyszukiwanie przyrostowe.
Wyszukuj do przodu, zaczynając od bieżącego wiersza i przesuwając „w dół” historii, jeśli to konieczne. To jest wyszukiwanie przyrostowe.
Wyszukiwanie wstecz w historii, zaczynając od bieżącego wiersza, przy użyciu nieinkrementalnego wyszukiwania ciągu znaków podanego przez użytkownika.
Wyszukiwanie do przodu w historii przy użyciu nieinkrementalnego wyszukiwania ciągu znaków podanego przez użytkownika.
Wyszukiwanie w przód w historii ciągu znaków między początkiem bieżącej linii a punktem. To jest wyszukiwanie nieinkrementalne.
Wyszukiwanie wstecz w historii ciągu znaków między początkiem bieżącej linii a punktem. To jest wyszukiwanie nieinkrementalne.
Przeszukuj wstecz w historii ciąg znaków między początkiem bieżącej linii a bieżącą pozycją kursora (punkt). Ciąg wyszukiwania może pasować do dowolnego miejsca w wierszu historii. To jest wyszukiwanie nieinkrementalne.
Wyszukiwanie w przód w historii ciągu znaków między początkiem bieżącej linii a punktem. Ciąg wyszukiwania może pasować do dowolnego miejsca w wierszu historii. To jest wyszukiwanie nieinkrementalne.
Wstaw pierwszy argument do poprzedniego polecenia (zwykle drugie słowo w poprzednim wierszu) w punkcie. Z argumentem n wstaw n słowo z poprzedniego polecenia (słowa w poprzednim poleceniu zaczynają się od słowa 0). Argument ujemny wstawia nsłowo od końca poprzedniego polecenia. Po obliczeniu argumentu n jest on wyodrębniany tak, jakby zostało podane rozwinięcie historii "!n".
Wstaw ostatni argument do poprzedniego polecenia (ostatnie słowo poprzedniego wpisu historii). W przypadku argumentu numerycznego zachowuj się dokładnie tak, jak yank-nth-arg. Kolejne wywołania yank-last-arg cofają się po liście historii, wstawiając po kolei ostatnie słowo (lub słowo określone przez argument pierwszego wywołania) każdego wiersza. Każdy argument liczbowy dostarczony do tych kolejnych wywołań określa kierunek poruszania się po historii. Argument ujemny zmienia kierunek w historii (do tyłu lub do przodu). Funkcje interpretacji historii są używane do wyodrębnienia ostatniego słowa, tak jakby określono interpretację historii „!$”.
Rozwiń linię tak, jak robi to powłoka. Wykonuje to interpretację aliasów i historii, jak również wszystkie interpretacje słów powłoki. Zobacz ROZWIJANIE HISTORII poniżej, aby zapoznać się z opisem rozwijania historii.
Wykonaj rozwinięcie historii w bieżącym wierszu. Zobacz ROZWIJANIE HISTORII poniżej, aby zapoznać się z opisem rozwijania historii.
Wykonaj interpretację historii w bieżącym wierszu i wstaw spację. Zobacz ROZWIJANIE HISTORII poniżej, aby zapoznać się z opisem rozwijania historii.
Wykonaj rozszerzenie aliasów w bieżącym wierszu. Zobacz ALIASES powyżej, aby zapoznać się z opisem rozwijania aliasów.
Wykonaj rozszerzenie historii i aliasów w bieżącym wierszu.
Synonim yank-last-arg.
Zaakceptuj bieżącą linię do wykonania i pobierz następną linię względem bieżącej linii z historii do edycji. Argument liczbowy, jeśli jest podany, określa wpis historii, który ma być używany zamiast bieżącego wiersza.
Wywołaj edytor w bieżącym wierszu poleceń i wykonaj wynik jako polecenia powłoki. Bash próbuje wywołać $VISUAL, $EDITOR i emacs jako edytor, w tej kolejności.
Znak wskazujący koniec pliku ustawiony na przykład przez ``stty''. Jeśli ten znak zostanie odczytany, gdy w wierszu nie ma żadnych znaków, a punkt znajduje się na początku wiersza, Readline zinterpretuje to jako koniec wejścia i zwróci EOF.
Usuń znak w punkcie. Jeśli ta funkcja jest powiązana z tym samym znakiem, co znak tty EOF, jak to zwykle bywa z C-d, zobacz efekty powyżej.
Usuń znak za kursorem. Po otrzymaniu argumentu numerycznego zapisz usunięty tekst na pierścieniu śmierci.
Usuń znak pod kursorem, chyba że kursor znajduje się na końcu linii, w takim przypadku znak za kursorem jest usuwany.
Dodaj następny wpisany znak do wiersza dosłownie. Oto jak na przykład wstawiać znaki, takie jak C-q.
Wstaw znak tabulacji.
Wstaw wpisany znak.
Przeciągnij znak przed punktem do przodu nad znakiem w punkcie, przesuwając również punkt do przodu. Jeśli punkt znajduje się na końcu wiersza, to transponuje dwa znaki przed punktem. Negatywne argumenty nie skutkują.
Przeciągnij słowo przed punktem poza słowo po punkcie, przesuwając punkt również nad tym słowem. Jeśli punkt znajduje się na końcu wiersza, transponuje to ostatnie dwa słowa w wierszu.
Wielkie litery bieżącego (lub następnego) słowa. W przypadku argumentu ujemnego pisz wielkie litery poprzednie słowo, ale nie przesuwaj punktu.
Małe litery bieżącego (lub następnego) słowa. W przypadku argumentu ujemnego poprzednie słowo należy zapisać małą literą, ale nie przesuwać punktu.
Bieżące (lub następne) słowo pisz wielką literą. W przypadku argumentu przeczącego pisz poprzednie słowo wielką literą, ale nie przesuwaj punktu.
Przełącz tryb nadpisywania. W przypadku wyraźnego dodatniego argumentu liczbowego przełącza się w tryb nadpisywania. Z jawnym argumentem numerycznym, który nie jest dodatni, przełącza do trybu wstawiania. To polecenie wpływa tylko na tryb emacs; Tryb vi nadpisuje inaczej. Każde wywołanie readline() rozpoczyna się w trybie wstawiania. W trybie nadpisywania znaki związane z samowstawianiem zastępują tekst w miejscu, zamiast przesuwać tekst w prawo. Znaki powiązane z backward-delete-char zastępują znak przed kropką spacją. Domyślnie to polecenie jest niezwiązane.
Zabij tekst od punktu do końca linii.
Zabij wstecz do początku linii.
Zabij wstecz od punktu do początku linii. Zabity tekst jest zapisywany na pierścieniu zabijania.
Zabij wszystkie postacie w bieżącej linii, bez względu na to, gdzie jest punkt.
Zabij od punktu do końca bieżącego słowa lub, jeśli między słowami, do końca następnego słowa. Granice słów są takie same jak te używane przez forward-word.
Zabij słowo za punktem. Granice słów są takie same jak te używane przez backward-word.
Zabij od punktu do końca bieżącego słowa lub, jeśli między słowami, do końca następnego słowa. Granice słów są takie same jak te używane przez shell-forward-word.
Zabij słowo za punktem. Granice słów są takie same jak te używane przez shell-backward-word.
Zabij słowo za punktem, używając białej spacji jako granicy słowa. Zabity tekst jest zapisywany na pierścieniu zabijania.
Zabij słowo za kropką, używając białej spacji i znaku ukośnika jako granic słowa. Zabity tekst jest zapisywany na pierścieniu zabijania.
Usuń wszystkie spacje i tabulatory wokół punktu.
Zabij tekst w bieżącym regionie.
Skopiuj tekst w regionie do bufora zabijania.
Skopiuj słowo przed punktem do bufora zabijania. Granice słów są takie same jak słowo wsteczne.
Skopiuj słowo następujące po punkcie do bufora zabijania. Granice słów są takie same jak forward-word.
Wciągnij górną część pierścienia zabijania do bufora w punkcie.
Obróć pierścień zabijania i szarpnij nową górę. Działa tylko po yank lub yank-pop.
Dodaj tę cyfrę do już zgromadzonego argumentu lub rozpocznij nowy argument. M-- rozpoczyna argument negatywny.
Jest to inny sposób określenia argumentu. Jeśli po tym poleceniu następuje jedna lub więcej cyfr, opcjonalnie z początkowym znakiem minus, cyfry te definiują argument. Jeśli po poleceniu następują cyfry, ponowne wykonanie argumentu uniwersalnego kończy argument numeryczny, ale poza tym jest ignorowane. W szczególnym przypadku, jeśli bezpośrednio po tym poleceniu występuje znak, który nie jest ani cyfrą, ani znakiem minus, liczba argumentów dla następnego polecenia jest mnożona przez cztery. Liczba argumentów wynosi początkowo jeden, więc wykonanie tej funkcji po raz pierwszy powoduje, że argument liczy cztery, drugi raz powoduje, że argument liczy szesnaście i tak dalej.
Próba wykonania uzupełnienia na tekście przed punktem. Bash próbuje uzupełnić, traktując tekst jako zmienną (jeśli tekst zaczyna się od $), nazwę użytkownika (jeśli tekst zaczyna się od ~), nazwę hosta (jeśli tekst zaczyna się od @) lub polecenia (wraz z aliasami i funkcjami). Jeśli żadne z nich nie daje dopasowania, następuje próba uzupełnienia nazwy pliku.
Wypisz możliwe uzupełnienia tekstu przed kropką.
Wstaw wszystkie uzupełnienia tekstu przed kropką, które zostałyby wygenerowane przez possible-completions.
Podobne do complete, ale zastępuje słowo do uzupełnienia pojedynczym dopasowaniem z listy możliwych uzupełnień. Powtarzane wykonywanie kroków menu-complete na liście możliwych uzupełnień, wstawiając po kolei każde dopasowanie. Na końcu listy uzupełnień dzwoni dzwonek (zależnie od ustawienia bell-style) i przywracany jest oryginalny tekst. Argument n przesuwa n pozycji do przodu na liście dopasowań; można użyć argumentu ujemnego, aby cofnąć się po liście. To polecenie ma być powiązane z TAB, ale domyślnie nie jest powiązane.
Identyczne z menu-complete, ale cofa listę możliwych uzupełnień, tak jakby menu-complete otrzymał argument ujemny. To polecenie jest domyślnie nieograniczone.
Usuwa znak pod kursorem, jeśli nie na początku lub na końcu linii (np. delete-char). Jeśli na końcu linii, zachowuje się identycznie jak possible-completions. To polecenie jest domyślnie nieograniczone.
Spróbuj uzupełnić nazwę pliku na tekście przed kropką.
Wypisz możliwe uzupełnienia tekstu przed kropką, traktując go jako nazwę pliku.
Spróbuj uzupełnić tekst przed punktem, traktując go jako nazwę użytkownika.
Wypisz możliwe uzupełnienia tekstu przed kropką, traktując to jako nazwę użytkownika.
Spróbuj uzupełnić tekst przed punktem, traktując go jako zmienną powłoki.
Wypisz możliwe uzupełnienia tekstu przed punktem, traktując go jako zmienną powłoki.
Spróbuj uzupełnić tekst przed punktem, traktując go jako nazwę hosta.
Wypisz możliwe uzupełnienia tekstu przed kropką, traktując to jako nazwę hosta.
Próba uzupełnienia tekstu przed punktem, traktując go jako nazwę polecenia. Uzupełnianie poleceń próbuje dopasować tekst do aliasów, słów zastrzeżonych, funkcji powłoki, wbudowanych elementów powłoki i wreszcie nazw plików wykonywalnych, w tej kolejności.
Wypisz możliwe uzupełnienia tekstu przed kropką, traktując to jako nazwę polecenia.
Spróbuj uzupełnić tekst przed punktem, porównując tekst z wierszami z listy historii pod kątem możliwych dopasowań uzupełnień.
Spróbuj uzupełnić menu na tekście przed punktem, porównując tekst z liniami z listy historii pod kątem możliwych dopasowań uzupełnień.
Wykonaj uzupełnianie nazw plików i wstaw listę możliwych uzupełnień ujętą w nawiasy klamrowe, aby była dostępna dla powłoki (patrz Rozwijanie nawiasów klamrowych powyżej).
Rozpocznij zapisywanie znaków wpisanych w bieżącym makrze klawiatury.
Przestań zapisywać znaki wpisane w bieżącym makrze klawiatury i zapisz definicję.
Ponownie wykonaj ostatnio zdefiniowane makro klawiatury, sprawiając, że znaki w makrze będą wyglądać tak, jakby były wpisywane na klawiaturze.
Wydrukuj ostatnie zdefiniowane makro klawiatury w formacie odpowiednim dla pliku inputrc.
Wczytaj zawartość pliku inputrc i dołącz znalezione tam powiązania lub przypisania zmiennych.
Przerwij bieżące polecenie edycji i zadzwoń dzwonkiem terminala (zależnie od ustawienia bell-style).
Jeśli znak metafizyczny x jest wielką literą, uruchom polecenie, które jest powiązane z odpowiednim metafizycznym znakiem małej litery. Zachowanie jest niezdefiniowane, jeśli x jest już zapisane małymi literami.
Metafikuj następny wpisany znak.
ESC f odpowiada Meta-f.
Przyrostowe cofanie, pamiętane oddzielnie dla każdej linii.
Cofnij wszystkie zmiany wprowadzone w tej linii. To tak, jakby wykonać polecenie cofnij wystarczająco dużo razy, aby przywrócić wiersz do stanu początkowego.
Wykonaj rozwinięcie tyldy na bieżącym słowie.
Ustaw znak do punktu. Jeśli podano argument liczbowy, znacznik jest ustawiany na tej pozycji.
Zamień punkt ze znakiem. Bieżąca pozycja kursora jest ustawiana na zapisaną pozycję, a stara pozycja kursora jest zapisywana jako znacznik.
Znak jest odczytywany, a punkt jest przesuwany do następnego wystąpienia tego znaku. Liczba ujemna wyszukuje poprzednie wystąpienia.
Znak jest odczytywany, a punkt jest przenoszony do poprzedniego wystąpienia tego znaku. Liczba ujemna wyszukuje kolejne wystąpienia.
Odczytaj wystarczającą liczbę znaków, aby wykorzystać sekwencję wielu klawiszy, taką jak te zdefiniowane dla klawiszy, takich jak Home i End. Takie sekwencje zaczynają się od kontrolnego wskaźnika sekwencji (CSI), zwykle ESC-[. Jeśli ta sekwencja jest powiązana z „\[”, klawisze tworzące takie sekwencje nie będą miały żadnego efektu, chyba że zostaną jawnie powiązane z poleceniem readline, zamiast wstawiania zbłąkanych znaków do bufora edycji. Domyślnie nie jest to związane, ale zwykle jest związane z ESC-[.
Bez argumentu liczbowego wartość zmiennej readline comment-begin jest wstawiana na początku bieżącej linii. Jeśli podano argument liczbowy, to polecenie działa jak przełącznik: jeśli znaki na początku wiersza nie pasują do wartości comment-begin, wartość jest wstawiana, w przeciwnym razie znaki w comment-begin są usuwane z początku wiersza. W obu przypadkach wiersz jest akceptowany tak, jakby wpisano znak nowej linii. Domyślna wartość comment-begin powoduje, że to polecenie czyni bieżący wiersz komentarzem powłoki. Jeśli argument liczbowy spowoduje usunięcie znaku komentarza, powłoka wykona wiersz.
Słowo przed punktem jest traktowane jako wzorzec rozwinięcia nazwy ścieżki, z niejawnie dodaną gwiazdką. Ten wzorzec służy do generowania listy pasujących nazw plików dla możliwych uzupełnień.
Słowo przed punktem jest traktowane jako wzorzec rozwinięcia nazwy ścieżki, a lista pasujących nazw plików jest wstawiana, zastępując słowo. Jeśli podano argument liczbowy, przed rozwinięciem nazwy ścieżki dodawana jest gwiazdka.
Zostanie wyświetlona lista rozszerzeń, które zostałyby wygenerowane przez glob-expand-word, a linia zostanie przerysowana. Jeśli podano argument liczbowy, przed rozwinięciem nazwy ścieżki dodawana jest gwiazdka.
Wypisz wszystkie funkcje i ich przypisania klawiszy do strumienia wyjściowego readline. Jeśli podano argument liczbowy, dane wyjściowe są formatowane w taki sposób, że mogą być częścią pliku inputrc.
Wypisuje wszystkie ustawialne zmienne readline i ich wartości do strumienia wyjściowego readline. Jeśli podano argument liczbowy, dane wyjściowe są formatowane w taki sposób, że mogą być częścią pliku inputrc.
Wydrukuj wszystkie sekwencje klawiszy readline powiązane z makrami i łańcuchy, które wysyłają. Jeśli podano argument liczbowy, dane wyjściowe są formatowane w taki sposób, że mogą być częścią pliku inputrc.
Wyświetl informacje o wersji bieżącej instancji bash.
Podczas próby uzupełnienia słowa dla argumentu polecenia, dla którego zdefiniowano specyfikację uzupełniania (compspec) przy użyciu wbudowanego elementu complete (zobacz WBUDOWANE POLECENIA POWŁOKI< poniżej), wywoływane są programowalne funkcje uzupełniania.
Najpierw identyfikowana jest nazwa polecenia. Jeśli słowo polecenia jest łańcuchem pustym (próba uzupełnienia na początku pustej linii), używany jest dowolny compspec zdefiniowany z opcją -E do complete. Jeśli dla tego polecenia zdefiniowano compspec, compspec służy do generowania listy możliwych uzupełnień dla słowa. Jeśli słowo polecenia jest pełną nazwą ścieżki, najpierw wyszukiwane jest compspec dla pełnej ścieżki. Jeśli nie znaleziono compspec dla pełnej ścieżki, następuje próba znalezienia compspec dla części następującej po końcowym ukośniku. Jeśli te wyszukiwania nie zakończą się określeniem compspec, jako domyślny zostanie użyty dowolny parametr określony za pomocą opcji -D w celu ukończenia. Jeśli nie ma domyślnego compspec, bash w ostateczności podejmuje próbę rozwinięcia aliasu słowa polecenia i próbuje znaleźć compspec dla słowa polecenia z każdego udanego rozwinięcia.
Po znalezieniu compspec jest używany do generowania listy pasujących słów. Jeśli spec spec nie zostanie znaleziony, wykonywane jest domyślne uzupełnianie bash, jak opisano powyżej w sekcji Kompletowanie.
Najpierw używane są akcje określone przez compspec. Zwracane są tylko dopasowania poprzedzone uzupełnianym słowem. Gdy opcja -f lub -d jest używana do uzupełniania nazw plików lub katalogów, do filtrowania dopasowań używana jest zmienna powłoki FIGNORE.
Następnie generowane są wszelkie uzupełnienia określone przez wzorzec rozwinięcia nazwy ścieżki do opcji -G. Słowa wygenerowane przez wzorzec nie muszą pasować do uzupełnianego słowa. Zmienna powłoki GLOBIGNORE nie jest używana do filtrowania dopasowań, ale używana jest zmienna FIGNORE.
Następnie rozpatrywany jest łańcuch podany jako argument opcji -W. Łańcuch jest najpierw dzielony przy użyciu znaków ze zmiennej specjalnej IFS jako ograniczników. Cytowanie Shell jest honorowane. Każde słowo jest następnie interpretowane przy użyciu interpretacji nawiasów klamrowych, interpretacji tyldy, interpretacji parametrów i zmiennych, podstawienia poleceń i interpretacji arytmetycznej, jak opisano powyżej w sekcji EXPANSION. Wyniki są dzielone zgodnie z zasadami opisanymi powyżej w sekcji Podział słów. Wyniki interpretacji są dopasowywane przedrostkiem do uzupełnianego słowa, a pasujące słowa stają się możliwymi uzupełnieniami.
Po wygenerowaniu tych dopasowań wywoływana jest dowolna funkcja powłoki lub polecenie określone za pomocą opcji -F i -C. Po wywołaniu polecenia lub funkcji zmiennym COMP_LINE, COMP_POINT, COMP_KEY i COMP_TYPE są przypisywane wartości: opisane powyżej w sekcji Zmienne powłoki. Jeśli wywoływana jest funkcja powłoki, ustawiane są również zmienne COMP_WORDS i COMP_CWORD. Gdy funkcja lub polecenie jest wywoływane, pierwszym argumentem ($1) jest nazwa polecenia, którego argumenty są uzupełniane, drugim argumentem ($2) jest słowo będące zakończone, a trzeci argument ($3) to słowo poprzedzające słowo uzupełniane w bieżącym wierszu poleceń. Nie jest wykonywane żadne filtrowanie wygenerowanych uzupełnień względem uzupełnianego słowa; funkcja lub polecenie ma pełną swobodę w generowaniu dopasowań.
Każda funkcja określona za pomocą -F jest wywoływana jako pierwsza. Funkcja może wykorzystywać dowolne funkcje powłoki, w tym wbudowane compgen opisane poniżej, do generowania dopasowań. Musi umieścić możliwe uzupełnienia w zmiennej tablicowej COMPREPLY, po jednym na element tablicy.
Następnie każde polecenie określone z opcją -C jest wywoływane w środowisku odpowiadającym zastępowaniu poleceń. Powinien wydrukować listę uzupełnień, po jednym w każdym wierszu, na standardowe wyjście. W razie potrzeby można użyć ukośnika odwrotnego do zmiany nowej linii.
Po wygenerowaniu wszystkich możliwych uzupełnień do listy zostanie zastosowany dowolny filtr określony opcją -X. Filtr jest wzorcem używanym do rozwijania nazw ścieżek; & we wzorcu jest zastępowane tekstem uzupełnianego słowa. Dosłowne & można poprzedzić ukośnikiem odwrotnym; ukośnik odwrotny jest usuwany przed próbą dopasowania. Każde uzupełnienie pasujące do wzorca zostanie usunięte z listy. Wiodący ! neguje wzorzec; w takim przypadku uzupełnienia niepasujące do wzorca zostaną usunięte. Jeśli opcja powłoki nocasematch jest włączona, dopasowanie jest przeprowadzane bez względu na wielkość liter.
Na koniec każdy przedrostek i sufiks określony za pomocą opcji -P i -S jest dodawany do każdego członka listy uzupełnień, a wynik jest zwracany do kodu uzupełnienia readline jako lista możliwych uzupełnień.
Jeśli poprzednio zastosowane akcje nie wygenerowały żadnych dopasowań, a opcja -o dirnames została dostarczona jako complete podczas definiowania compspec, następuje próba uzupełnienia nazwy katalogu.
Jeśli opcja -o plusdirs została dostarczona jako complete podczas definiowania compspec, następuje próba uzupełnienia nazwy katalogu i wszelkie dopasowania są dodawane do wyników innych działań.
Domyślnie, jeśli zostanie znaleziony compspec, wszystko, co generuje, jest zwracane do kodu zakończenia jako pełny zestaw możliwych uzupełnień. Domyślne uzupełnienia bash nie są podejmowane, a domyślne uzupełnianie nazw plików readline jest wyłączone. Jeśli opcja -o bashdefault została dostarczona jako complete podczas definiowania compspec, próba domyślnego uzupełnienia bash zostanie podjęta, jeśli compspec nie wygeneruje żadnych dopasowań. Jeśli opcja -o default została dostarczona do complete podczas definiowania compspec, domyślne uzupełnianie readline zostanie wykonane, jeśli compspec (i, jeśli próbowano, domyślny bash uzupełnień) nie generuje żadnych dopasowań.
Kiedy compspec wskazuje, że pożądane jest uzupełnienie nazwy katalogu, programowalne funkcje uzupełniania wymuszają na readline dodanie ukośnika do uzupełnionych nazw, które są dowiązaniami symbolicznymi do katalogów, z zastrzeżeniem wartości zmiennej readline mark-directories, niezależnie od ustawienia zmiennej readline mark-symlinked-directories.
Istnieje pewna obsługa dynamicznego modyfikowania uzupełnień. Jest to najbardziej przydatne w połączeniu z domyślnym uzupełnieniem określonym za pomocą complete -D. Możliwe jest, aby funkcje powłoki wykonywane jako procedury obsługi uzupełniania wskazywały, że uzupełnienie powinno być ponowione, zwracając kod zakończenia 124. Jeśli funkcja powłoki zwraca 124 i zmienia compspec skojarzony z poleceniem, którego dotyczy próba uzupełnienia (dostarczane jako pierwsze argument, gdy funkcja jest wykonywana), programowalne uzupełnianie jest uruchamiane od początku, z próbą znalezienia nowego compspec dla tego polecenia. Pozwala to na dynamiczne budowanie zestawu uzupełnień podczas próby uzupełnienia, zamiast ładowania wszystkich naraz.
Na przykład, zakładając, że istnieje biblioteka compspecs, z których każda jest przechowywana w pliku odpowiadającym nazwie polecenia, następująca domyślna funkcja uzupełniania ładowałaby uzupełnienia dynamicznie:
_completion_loader()
{
. "/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124
kompletny -D -F _completion_loader -o bashdefault -o default
Gdy włączona jest opcja -o history wbudowanej funkcji set, powłoka zapewnia dostęp do historii poleceń, czyli listy wcześniej wpisanych poleceń. Wartość zmiennej HISTSIZE jest używana jako liczba poleceń do zapisania na liście historii. Tekst ostatnich poleceń HISTSIZE (domyślnie 500) jest zapisywany.
Powłoka przechowuje każde polecenie na liście historii przed interpretacją parametrów i zmiennych (patrz EXPANSION powyżej), ale po przeprowadzeniu interpretacji historii, z zastrzeżeniem wartości zmiennych powłoki HISTIGNORE i HISTCONTROL.
Podczas uruchamiania historia jest inicjowana z pliku nazwanego przez zmienną HISTFILE (domyślnie ~/.bash_history). Plik nazwany wartością HISTFILE jest w razie potrzeby obcinany tak, aby zawierał nie więcej niż liczbę wierszy określoną przez wartość HISTFILESIZE. Jeśli parametr HISTFILESIZE nie jest ustawiony lub ma wartość null, wartość nieliczbową lub wartość liczbową mniejszą od zera, plik historii nie jest obcinany.
Kiedy plik historii jest odczytywany, wiersze zaczynające się od znaku komentarza historii, po którym bezpośrednio następuje cyfra, są interpretowane jako znaczniki czasu dla następnego wiersza historii. Te znaczniki czasu są opcjonalnie wyświetlane w zależności od wartości zmiennej HISTTIMEFORMAT. Gdy powłoka z włączoną historią kończy działanie, ostatnie linie $HISTSIZE są kopiowane z listy historii do $HISTFILE.
Jeśli opcja powłoki histappend jest włączona (zobacz opis shopt pod WBUDOWANE POLECENIA POWŁOKI poniżej), wiersze są dołączane do pliku historii, w przeciwnym razie plik historii zostanie nadpisany. Jeśli HISTFILE nie jest ustawione lub jeśli plik historii nie może być zapisywany, historia nie jest zapisywana. Jeśli ustawiona jest zmienna HISTTIMEFORMAT, znaczniki czasu są zapisywane w pliku historii, oznaczone znakiem komentarza historii, dzięki czemu mogą być zachowywane między sesjami powłoki. Wykorzystuje znak komentarza historii do odróżnienia znaczników czasu od innych wierszy historii.
Po zapisaniu historii plik historii jest obcinany tak, aby zawierał nie więcej niż wiersze HISTFILESIZE. Jeśli parametr HISTFILESIZE nie jest ustawiony lub ma wartość null, wartość nieliczbową lub wartość liczbową mniejszą od zera, plik historii nie jest obcinany.
Wbudowane polecenie fc (patrz WBUDOWANE POLECENIA POWŁOKI poniżej) może być użyte do wyświetlenia lub edycji i ponownego wykonania części listy historii. Wbudowane history może służyć do wyświetlania lub modyfikowania listy historii i manipulowania plikiem historii. Podczas korzystania z edycji z wiersza poleceń polecenia wyszukiwania są dostępne w każdym trybie edycji, który zapewnia dostęp do listy historii.
Powłoka pozwala kontrolować, które polecenia są zapisywane na liście historii. Zmienne HISTCONTROL i HISTIGNORE można ustawić tak, aby powłoka zapisywała tylko część wprowadzonych poleceń. Opcja powłoki cmdhist, jeśli jest włączona, powoduje, że powłoka próbuje zapisać każdy wiersz polecenia wielowierszowego w tym samym wpisie historii, dodając średniki tam, gdzie to konieczne, aby zachować poprawność składniową. Opcja powłoki lithist powoduje, że powłoka zapisuje polecenie z osadzonymi znakami nowej linii zamiast średnikami. Zobacz opis wbudowanego shopt poniżej w sekcji WBUDOWANE POLECENIA POWŁOKI, aby uzyskać informacje na temat ustawiania i wyłączania opcji powłoki.
Powłoka obsługuje funkcję rozwijania historii, która jest podobna do interpretacji historii w csh. W tej sekcji opisano, jakie funkcje składni są dostępne. Ta funkcja jest domyślnie włączona w powłokach interaktywnych i można ją wyłączyć za pomocą opcji +H wbudowanego polecenia set (patrz WBUDOWANE POLECENIA POWŁOKI poniżej). Powłoki nieinteraktywne domyślnie nie wykonują interpretacji historii.
Rozszerzenia historii wprowadzają słowa z listy historii do strumienia wejściowego, ułatwiając powtarzanie poleceń, wstawianie argumentów poprzedniego polecenia do bieżącego wiersza wprowadzania lub szybkie naprawianie błędów w poprzednich poleceniach.
Interpretacja historii jest wykonywana natychmiast po odczytaniu całej linii, zanim powłoka podzieli ją na słowa, i jest wykonywana dla każdej linii z osobna, bez uwzględniania cytowania poprzednich linii. Odbywa się w dwóch częściach. Pierwszym z nich jest określenie, którego wiersza z listy historii należy użyć podczas zastępowania. Drugim jest wybranie części tej linii do włączenia do bieżącej. Wiersz wybrany z historii to zdarzenie, a fragmenty tego wiersza, na których wykonywane są działania, to słowa. Dostępne są różne modyfikatory do manipulowania wybranymi słowami. Wiersz jest dzielony na słowa w taki sam sposób, jak podczas czytania danych wejściowych, więc kilka słów rozdzielonych metaznakami ujętych w cudzysłowy jest uważanych za jedno słowo. Rozszerzenia historii są wprowadzane przez pojawienie się znaku rozszerzenia historii, którym domyślnie jest ! . Tylko odwrotny ukośnik ( \ ) i pojedyncze cudzysłowy mogą cytować znak interpretacji historii, ale znak interpretacji historii jest również traktowany jako cudzysłów, jeśli bezpośrednio poprzedza podwójny cudzysłów zamykający w łańcuchu ujętym w podwójne cudzysłowy.
Kilka znaków blokuje interpretację historii, jeśli występują one bezpośrednio po znaku interpretacji historii, nawet jeśli nie są cytowane: spacja, tabulator, znak nowej linii, powrót karetki i =. Jeśli opcja powłoki extglob jest włączona, ( również zablokuje rozszerzanie.
Kilka opcji powłoki, które można ustawić za pomocą wbudowanego shopt, może być użytych do dostosowania zachowania rozwijania historii. Jeśli opcja powłoki histverify jest włączona (zobacz opis wbudowanego shopt poniżej) i używany jest readline, podstawienia historii nie są natychmiast przekazywane do parsera powłoki. Zamiast tego, rozwinięta linia jest ponownie ładowana do bufora edycyjnego readline w celu dalszej modyfikacji. Jeśli używane jest readline i włączona jest opcja powłoki histreedit, nieudane podstawienie historii zostanie ponownie załadowane do bufora edycji readline w celu poprawienia. Opcja -p wbudowanego polecenia history może być użyta do sprawdzenia, co zrobi interpretacja historii przed jej użyciem. Opcja -s wbudowanej historii może być użyta do dodania poleceń na końcu listy historii bez faktycznego ich wykonywania, tak aby były dostępne do późniejszego przywołania.
Powłoka pozwala kontrolować różne znaki używane przez mechanizm interpretacji historii (zobacz opis znaków histologicznych powyżej w sekcji Zmienne powłoki). Powłoka używa znaku komentarza historii do oznaczania znaczników czasu historii podczas zapisywania pliku historii.
Desygnator zdarzenia jest odniesieniem do wpisu wiersza poleceń na liście historii. O ile odniesienie nie jest bezwzględne, zdarzenia odnoszą się do bieżącej pozycji na liście historii.
Rozpocznij zastępowanie historii, z wyjątkiem sytuacji, gdy następuje po nich pusty znak nowej linii, powrót karetki,=lub ( (gdy opcja powłoki extglob jest włączona za pomocą shopt wbudowany).
Patrz linia poleceń n.
Odwołaj się do bieżącego polecenia minus n.
Zapoznaj się z poprzednim poleceniem. Jest to synonim dla `!-1'.
Odwołaj się do ostatniego polecenia poprzedzającego bieżącą pozycję na liście historii, zaczynając od string.
Odwołaj się do ostatniego polecenia poprzedzającego bieżącą pozycję na liście historii zawierającego łańcuch znaków. Końcowy znak ? można pominąć, jeśli bezpośrednio po łańcuchu znaków występuje znak nowej linii. Jeśli brakuje łańcucha, używany jest ciąg z ostatniego wyszukiwania; jest to błąd, jeśli nie ma poprzedniego ciągu wyszukiwania.
Szybka wymiana. Powtórz poprzednie polecenie, zastępując string1 przez string2. Odpowiednik ``!!:s^string1^string2^'' (patrz Modyfikatory poniżej).
Cała linia poleceń wpisana do tej pory.
Desygnatory słów służą do wybierania żądanych słów ze zdarzenia. : oddziela specyfikację zdarzenia od desygnatora słowa. Można go pominąć, jeśli oznaczenie słowa zaczyna się od ^, $, *, - lub %. Słowa są numerowane od początku wiersza, przy czym pierwsze słowo jest oznaczane przez 0 (zero). Słowa są wstawiane do bieżącego wiersza oddzielone pojedynczymi odstępami.
Słowo zerowe. Dla powłoki jest to słowo polecenia.
n-te słowo.
Pierwszy argument. Czyli słowo 1.
Ostatnie słowo. Zwykle jest to ostatni argument, ale zostanie rozszerzony do słowa zerowego, jeśli w wierszu jest tylko jedno słowo.
Pierwsze słowo dopasowane przez ostatni `?łańcuch?' search, jeśli wyszukiwany ciąg zaczyna się od znaku, który jest częścią słowa.
Zakres słów; `-y' jest skrótem od `0-y'.
Wszystkie słowa oprócz zera. Jest to synonim dla `1-$'. Użycie * nie jest błędem, jeśli zdarzenie zawiera tylko jedno słowo; w takim przypadku zwracany jest pusty ciąg.
Skróty x-$.
Skrót x-$ jak x*, ale pomija ostatnie słowo. Jeśli brakuje x, domyślna wartość to 0.
Jeśli desygnator słowa zostanie podany bez specyfikacji zdarzenia, jako zdarzenie zostanie użyte poprzednie polecenie.
Po opcjonalnym oznaczniku słowa może pojawić się sekwencja jednego lub więcej następujących modyfikatorów, z których każdy jest poprzedzony znakiem `:'. Modyfikują one lub edytują słowo lub słowa wybrane ze zdarzenia historii.
Usuń końcowy składnik nazwy pliku, pozostawiając tylko nagłówek.
Usuń wszystkie wiodące składniki nazwy pliku, pozostawiając ogon.
Usuń końcowy sufiks w postaci .xxx, pozostawiając nazwę podstawową.
Usuń wszystko poza sufiksem końcowym.
Wydrukuj nowe polecenie, ale go nie wykonuj.
Cytuj zastąpione słowa, unikając dalszych podstawień.
Zacytuj zastąpione słowa jak w przypadku q, ale podziel słowa na spacje i znaki nowej linii. Modyfikatory q i x wzajemnie się wykluczają; używany jest ostatni dostarczony.
Zastąp nowy pierwsze wystąpienie starego w wierszu zdarzenia. Jako ogranicznik można użyć dowolnego znaku zamiast /. Końcowy ogranicznik jest opcjonalny, jeśli jest ostatnim znakiem wiersza zdarzenia. Ogranicznik może być cytowany w starym i nowym z pojedynczym ukośnikiem odwrotnym. Jeśli & pojawi się w nowym, zostanie zastąpione przez stary. Pojedynczy ukośnik odwrotny będzie cytował &. Jeśli stary ma wartość NULL, jest ustawiany na ostatni podstawiony stary lub, jeśli żadne wcześniejsze podstawienia nie miały miejsca, ostatni łańcuch w !?ciąg znaków[?] szukaj. Jeśli nowy jest pusty, każdy pasujący stary jest usuwany.
Powtórz poprzednią zamianę.
Powoduje zastosowanie zmian na całej linii zdarzenia. Jest używany w połączeniu z `:s' (np. `:gs/stary/ nowy/') lub `:&'. W przypadku użycia z `:s' zamiast/można użyć dowolnego ogranicznika, a końcowy ogranicznik jest opcjonalny, jeśli jest ostatnim znakiem linii zdarzenia. a może być używane jako synonim dla g.
Zastosuj jeden raz następujący modyfikator `s' lub `&' do każdego słowa w wierszu zdarzenia.
O ile nie zaznaczono inaczej, każde wbudowane polecenie udokumentowane w tej sekcji jako akceptujące opcje poprzedzone przez - akceptuje -- oznaczające koniec opcji. Wbudowane :, true, false i test/[ nie akceptują opcje i nie traktuj -- specjalnie. wyjście, wylogowanie, powrót, przerwanie, kontynuacja, pozwolenie i shift akceptują i przetwarzają argumenty zaczynające się od - bez wymagania --. Inne wbudowane funkcje, które akceptują argumenty, ale nie są określone jako opcje akceptujące, interpretują argumenty zaczynające się od - jako opcje nieprawidłowe i wymagają --, aby zapobiec takiej interpretacji.
Bez efektu; polecenie nie robi nic poza rozwijaniem argumentów i wykonywaniem określonych przekierowań. Stan zwrotu to zero.
Odczytuje i wykonuje polecenia z nazwa pliku w bieżącym środowisku powłoki i zwraca kod zakończenia ostatniego polecenia wykonanego z nazwa pliku. Jeśli nazwa pliku nie zawiera ukośnika, nazwy plików w PATH są używane do znalezienia katalogu zawierającego nazwa pliku. Plik wyszukiwany w PATH nie musi być wykonywalny. Gdy bash nie jest w trybie POSIX, bieżący katalog jest przeszukiwany, jeśli w PATH nie znaleziono żadnego pliku. Jeśli opcja ścieżka_źródła wbudowanego polecenia shopt jest wyłączona, ścieżka nie jest przeszukiwana. Jeśli podano jakiekolwiek argumenty, stają się one parametrami pozycyjnymi podczas wykonywania nazwa_pliku.
W przeciwnym razie parametry pozycyjne pozostają niezmienione. Jeśli opcja -T jest włączona, źródło dziedziczy każdą pułapkę na DEBUG; jeśli tak nie jest, wszystkie łańcuchy pułapek DEBUG są zapisywane i odtwarzane wokół wywołania source, a source anuluje ustawienie DEBUG trap podczas wykonywania. Jeśli -T nie jest ustawione, a źródłowy plik zmieni pułapkę DEBUG, nowa wartość zostanie zachowana po zakończeniu source. Status powrotu to status ostatniego polecenia zakończonego w skrypcie (0, jeśli żadne polecenie nie zostało wykonane), a fałsz, jeśli nazwa pliku nie został znaleziony lub nie można go odczytać.
Alias bez argumentów lub z opcją -p wyświetla listę aliasów w postaci alias nazwa=<wartość na standardowe wyjście. Gdy podane są argumenty, alias jest definiowany dla każdego nazwy, którego podana jest wartość. Końcowa spacja w wartości powoduje sprawdzenie następnego słowa pod kątem zastępowania aliasu, gdy alias jest rozwijany. Dla każdego nazwy na liście argumentów, dla którego nie podano wartości, wypisywana jest nazwa i wartość aliasu. Alias zwraca wartość true, chyba że podano nazwę, dla której nie zdefiniowano aliasu.
Wznów każde zawieszone zadanie jobspec w tle, tak jakby zostało rozpoczęte za pomocą &. Jeśli specyfikacja pracy nie jest obecna, używane jest pojęcie bieżącej pracy powłoki. bg jobspec zwraca 0, chyba że jest uruchamiane, gdy kontrola zadań jest wyłączona lub gdy jest uruchamiana z włączoną kontrolą zadań, żaden określony jobspec nie został znaleziony lub został uruchomiony bez kontroli pracy.
Wyświetl bieżące powiązania klawiszy i funkcji readline, powiąż sekwencję klawiszy z funkcją lub makrem readline lub ustaw zmienną readline. Każdy argument nie będący opcją jest poleceniem, tak jak wyglądałoby to w .inputrc, ale każde powiązanie lub polecenie musi być przekazane jako osobny argument; np. „"\C-x\C-r": ponownie przeczytaj plik inicjujący'. Opcje, jeśli są podane, mają następujące znaczenie:
- -m keymap
Użyj mapy klawiszy jako mapy klawiszy, na którą mają wpływ kolejne powiązania. Dopuszczalne nazwy map klawiszy to emacs, emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move, vi-command i vi-insert. vi jest odpowiednikiem vi-command (vi-move jest również synonimem); emacs jest odpowiednikiem emacs-standard.
- -l
Wypisz nazwy wszystkich funkcji readline.
- -p
Wyświetlaj nazwy i powiązania funkcji readline w taki sposób, aby można je było ponownie przeczytać.
- -P
Wyświetl listę aktualnych nazw i powiązań funkcji readline.
- -s
Wyświetlaj sekwencje klawiszy readline powiązane z makrami i ciągi znaków, które wysyłają, w taki sposób, aby można je było ponownie przeczytać.
- -S
Wyświetlaj sekwencje klawiszy readline powiązane z makrami i generowane przez nie ciągi znaków.
- -v
Wyświetlaj nazwy i wartości zmiennych readline w taki sposób, aby można je było ponownie odczytać.
- -V
Wypisz aktualne nazwy i wartości zmiennych readline.
- -f filename
Odczytaj przypisania klawiszy z nazwa pliku.
- -q function
Zapytanie o to, które klawisze wywołują nazwaną funkcję.
- -u function
Odłącz wszystkie klucze powiązane z nazwaną funkcją.
- -r keyseq
Usuń wszelkie bieżące powiązania dla keyseq.
- -x keyseq:shell-command
Powoduje, że komenda-powłoki jest wykonywana za każdym razem, gdy zostanie wprowadzona sekwencja kluczy. Po wykonaniu polecenia-powłoki powłoka ustawia zmienną READLINE_LINE na zawartość bufora linii readline i READLINE_POINT i READLINE_MARK odpowiednio do bieżącej lokalizacji punktu wstawiania i zapisanego punktu wstawiania (znacznika).
Jeśli wykonane polecenie zmieni wartość któregokolwiek z READLINE_LINE, READLINE_POINT lub READLINE_MARK, te nowe wartości zostaną odzwierciedlone w stanie edycji.
- -X
Wypisz wszystkie sekwencje klawiszy powiązane z poleceniami powłoki i skojarzonymi poleceniami w formacie, który może być ponownie użyty jako dane wejściowe.
Zwracana wartość wynosi 0, chyba że podano nierozpoznaną opcję lub wystąpił błąd.
Wyjdź z pętli for, while, until lub select. Jeśli podano n, podziel n poziomów. n musi być ≥ 1. Jeśli n jest większe niż liczba otaczających pętli, wszystkie otaczające pętle zostają zakończone. Zwracana wartość to 0, chyba że n nie jest większe lub równe 1.
Wykonaj określoną wbudowaną powłokę, przekazując jej argumenty i zwróć jej status wyjścia. Jest to przydatne podczas definiowania funkcji, której nazwa jest taka sama jak nazwa wbudowanej powłoki, zachowując funkcjonalność funkcji wbudowanej w ramach funkcji. Wbudowana funkcja cd jest często przedefiniowana w ten sposób. Status zwracany to fałsz, jeśli wbudowany w powłokę nie jest poleceniem wbudowanym w powłokę.
Zwraca kontekst dowolnego aktywnego wywołania podprogramu (funkcji powłoki lub skryptu wykonanego z wbudowanymi elementami . lub source). Bez wyrażenie wywołujący wyświetla numer wiersza i nazwę pliku źródłowego bieżącego wywołania podprogramu standardowego. Jeśli nieujemna liczba całkowita jest podana jako wyrażenie, wywołujący wyświetla numer linii, nazwę podprogramu i plik źródłowy odpowiadający tej pozycji w bieżącym stosie wywołań wykonania. Te dodatkowe informacje mogą być użyte na przykład do wydrukowania śladu stosu. Bieżąca ramka to ramka 0. Zwracana wartość to 0, chyba że powłoka nie wykonuje wywołania podprogramu lub wyrażenie nie odpowiada prawidłowej pozycji w stosie wywołań.
Zmień bieżący katalog na katalog. jeśli dir nie zostanie podany, wartość zmiennej powłoki HOME jest domyślna. Wszelkie dodatkowe argumenty następujące po katalogu są ignorowane. Zmienna CDPATH określa ścieżkę wyszukiwania dla katalogu zawierającego katalog: każda nazwa katalogu w CDPATH jest przeszukiwana pod kątem katalog .
Alternatywne nazwy katalogów w CDPATH są oddzielone dwukropkiem (:). Pusta nazwa katalogu w CDPATH jest taka sama jak bieżący katalog, tj. ``.''. Jeśli katalog zaczyna się od ukośnika (/), CDPATH nie jest używany. Opcja -P powoduje, że cd używa fizycznej struktury katalogów poprzez rozwiązywanie dowiązań symbolicznych podczas przechodzenia przez dir i przed przetwarzaniem wystąpień .. w katalogu (zobacz także opcję -P wbudowanego polecenia set); opcja -L wymusza podążanie za dowiązaniami symbolicznymi poprzez rozwiązanie dowiązania po przetworzeniu instancji .. w katalogu.
Jeśli .. pojawia się w katalog, jest przetwarzane poprzez usunięcie bezpośrednio poprzedzającego komponentu ścieżki z katalog, z powrotem do ukośnika lub początku <reż.. Jeśli opcja -e jest dostarczona z -P, a bieżący katalog roboczy nie może zostać pomyślnie określony po udanej zmianie katalogu, cd zwróci nieudany stan. W systemach, które ją obsługują, opcja -@ przedstawia rozszerzone atrybuty powiązane z plikiem jako katalogiem.
Argument - jest konwertowany na $OLDPWD przed próbą zmiany katalogu. Jeśli używana jest niepusta nazwa katalogu z CDPATH lub jeśli - jest pierwszym argumentem, a zmiana katalogu powiodła się, bezwzględna ścieżka do nowego katalogu roboczego to wypisany na standardowe wyjście. Zwracana wartość to prawda, jeśli katalog został pomyślnie zmieniony; fałsz inaczej.
Uruchom polecenie z args, aby pominąć normalne wyszukiwanie funkcji powłoki. Wykonywane są tylko polecenia wbudowane lub znalezione w PATH. Jeśli podana jest opcja -p, wyszukiwanie polecenia jest wykonywane przy użyciu domyślnej wartości dla PATH, która gwarantuje znalezienie wszystkich standardowych narzędzia. Jeśli podano opcję -V lub -v, wypisywany jest opis polecenia.
Opcja -v powoduje wyświetlenie pojedynczego słowa wskazującego polecenie lub nazwę pliku użytego do wywołania polecenia; opcja -V tworzy bardziej szczegółowy opis. Jeśli podano opcję -V lub -v, kod wyjścia wynosi 0, jeśli polecenie zostało znalezione, i 1, jeśli nie. Jeśli nie podano żadnej opcji i wystąpił błąd lub nie można znaleźć polecenia, kod wyjścia to 127. W przeciwnym razie kodem wyjścia wbudowanego polecenia jest kod wyjścia <polecenie.
Generuj możliwe uzupełnienia dla słowa zgodnie z opcjami, którymi może być dowolna opcja akceptowana przez wbudowane complete z wyjątkiem -p i -r i wypisz dopasowania na standardowe wyjście. Używając opcji -F lub -C, różne zmienne powłoki ustawione przez programowalne funkcje uzupełniania, jeśli są dostępne, nie będą miały użytecznych wartości.
Dopasowania zostaną wygenerowane w taki sam sposób, jak gdyby programowalny kod uzupełniania wygenerował je bezpośrednio ze specyfikacji uzupełniania z tymi samymi flagami. Jeśli określono słowo, zostaną wyświetlone tylko uzupełnienia pasujące do słowa.
Zwracana wartość to prawda, chyba że podano nieprawidłową opcję lub nie wygenerowano żadnych dopasowań.
[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] name [name ...]
Określ sposób uzupełniania argumentów dla każdego nazwy. Jeśli podano opcję -p lub nie podano żadnych opcji, istniejące specyfikacje uzupełniania są drukowane w sposób umożliwiający ich ponowne użycie jako danych wejściowych. Opcja -r usuwa specyfikację uzupełniania dla każdego nazwy lub, jeśli nie podano nazwy, wszystkie specyfikacje uzupełniania. Opcja -D wskazuje, że inne podane opcje i działania powinny mieć zastosowanie do zakończenia polecenia ``domyślnego''; to znaczy próba uzupełnienia dla polecenia, dla którego wcześniej nie zdefiniowano uzupełnienia. Opcja -E wskazuje, że inne dostarczone opcje i akcje powinny dotyczyć zakończenia polecenia ``puste''; to znaczy próba zakończenia w pustym wierszu. Opcja -I wskazuje, że inne podane opcje i działania powinny mieć zastosowanie do uzupełniania na początkowym słowie nieprzypisanym w wierszu lub po ograniczniku polecenia, takim jak ; lub |, co zwykle jest uzupełnieniem nazwy polecenia. Jeśli podano wiele opcji, opcja -D ma pierwszeństwo przed -E i obie mają pierwszeństwo przed -I. Jeśli podano dowolne z -D, -E lub -I, wszystkie inne argumenty nazwa są ignorowane; te uzupełnienia mają zastosowanie tylko do przypadku określonego przez opcję.
Proces stosowania tych specyfikacji uzupełniania podczas próby uzupełniania słów opisano powyżej w sekcji Programowalne uzupełnianie.
Inne opcje, jeśli zostały określone, mają następujące znaczenie. Argumenty opcji -G, -W i -X (oraz, jeśli to konieczne, opcja -P > i -S) powinny być ujęte w cudzysłowy, aby zabezpieczyć je przed rozwinięciem przed wywołaniem wbudowanej funkcji complete.
- -o comp-option
opcja-comp kontroluje kilka aspektów zachowania compspec poza prostym generowaniem uzupełnień. opcja-kompilacji może być jedną z:
- bashdefault
Wykonaj pozostałe domyślne uzupełnienia bash, jeśli compspec nie wygeneruje żadnych dopasowań.
- default
Użyj domyślnego uzupełniania nazw plików readline, jeśli compspec nie generuje żadnych dopasowań.
- dirnames
Wykonaj uzupełnianie nazw katalogów, jeśli compspec nie wygeneruje żadnych dopasowań.
- filenames
Powiedz readline, że compspec generuje nazwy plików, więc może wykonać dowolne przetwarzanie specyficzne dla nazwy pliku (takie jak dodanie ukośnika do nazw katalogów, cytowanie znaków specjalnych lub pomijanie końcowych spacji). Przeznaczony do użycia z funkcjami powłoki.
- noquote
Powiedz readline, aby nie cytował uzupełnionych słów, jeśli są to nazwy plików (cytowanie nazw plików jest ustawieniem domyślnym).
- nosort
Powiedz readline, aby nie sortował listy możliwych uzupełnień alfabetycznie.
- nospace
Powiedz readline, aby nie dodawał spacji (domyślnie) do uzupełnionych słów na końcu linii.
- plusdirs
Po wygenerowaniu dopasowań zdefiniowanych przez compspec następuje próba uzupełnienia nazwy katalogu, a wszelkie dopasowania są dodawane do wyników innych działań.
- -A action
Akcja może być jedną z poniższych, aby wygenerować listę możliwych uzupełnień:
- alias
Pseudonimy. Można również określić jako -a.
- arrayvar
Nazwy zmiennych tablicowych.
- binding
Nazwy powiązań klawiszy Readline.
- builtin
Nazwy wbudowanych poleceń powłoki. Można również określić jako -b.
- command
Nazwy poleceń. Można również podać jako -c.
- directory
Nazwy katalogów. Można również określić jako -d.
- disabled
Nazwy wyłączonych wbudowanych powłok.
- enabled
Nazwy włączonych wbudowanych powłok.
- export
Nazwy wyeksportowanych zmiennych powłoki. Można również podać jako -e.
- file
Nazwy plików. Można również określić jako -f.
- function
Nazwy funkcji powłoki.
- group
Nazwy grup. Można również podać jako -g.
- helptopic
Tematy pomocy zaakceptowane przez wbudowane pomoc.
- hostname
Nazwy hostów pobrane z pliku określonego przez zmienną powłoki HOSTFILE.
- job
Nazwy zadań, jeśli kontrola zadań jest aktywna. Można również określić jako -j.
- keyword
Słowa zastrzeżone powłoki. Można również podać jako -k.
- running
Nazwy uruchomionych zadań, jeśli kontrola zadań jest aktywna.
- service
Nazwy usług. Można również podać jako -s.
- setopt
Prawidłowe argumenty dla opcji -o wbudowanej funkcji set.
- shopt
Nazwy opcji powłoki akceptowane przez wbudowane shopt.
- signal
Nazwy sygnałów.
- stopped
Nazwy zatrzymanych zadań, jeśli kontrola zadań jest aktywna.
- user
Nazwy użytkowników. Można również podać jako -u.
- variable
Nazwy wszystkich zmiennych powłoki. Można również określić jako -v.
- -C command
polecenie jest wykonywane w środowisku podpowłoki, a jego dane wyjściowe są używane jako możliwe uzupełnienia.
- -F function
Funkcja powłoki funkcja jest wykonywana w bieżącym środowisku powłoki. Gdy funkcja jest wykonywana, pierwszym argumentem ($1) jest nazwa polecenia, którego argumenty są uzupełniane, drugim argumentem ($2) jest uzupełniane słowo, a trzeci argument ($3) to słowo poprzedzające słowo uzupełniane w bieżącym wierszu poleceń. Po zakończeniu możliwe uzupełnienia są pobierane z wartości zmiennej tablicowej COMPREPLY.
- -G globpat
Wzorzec rozwijania nazw ścieżek globpat jest rozwijany w celu wygenerowania możliwych uzupełnień.
- -P prefix
prefiks jest dodawany na początku każdego możliwego uzupełnienia po zastosowaniu wszystkich innych opcji.
- -S suffix
sufiks jest dodawany do każdego możliwego uzupełnienia po zastosowaniu wszystkich innych opcji.
- -W wordlist
lista słów jest dzielona przy użyciu znaków ze zmiennej specjalnej IFS jako ograniczników, a każde wynikowe słowo jest rozszerzane. Cytowanie powłoki jest honorowane w obrębie listy słów, aby zapewnić mechanizm dla słów zawierających metaznaki powłoki lub znaki o wartości IFS. Możliwe uzupełnienia to członkowie listy wynikowej, którzy pasują do uzupełnianego słowa.
- -X filterpat
filterpat to wzorzec używany do rozwijania nazw ścieżek. Jest on stosowany do listy możliwych uzupełnień wygenerowanych przez poprzednie opcje i argumenty, a każde uzupełnienie pasujące do filterpat jest usuwane z listy. Wiodący ! w filterpat neguje wzorzec; w takim przypadku wszelkie uzupełnienia niezgodne z filterpat są usuwane.
Zwracana wartość to prawda, chyba że podano nieprawidłową opcję, podano opcję inną niż -p lub -r bez argumentu nazwa, podjęto próbę usunięcia specyfikacji uzupełniania dla nazwy, dla której nie istnieje żadna specyfikacja lub wystąpił błąd podczas dodawania specyfikacji uzupełniania.
Zmodyfikuj opcje uzupełniania dla każdego nazwy zgodnie z opcjami lub dla aktualnie wykonywanego uzupełniania, jeśli nie podano nazwy. Jeśli nie podano żadnych opcji, wyświetl opcje uzupełniania dla każdego nazwy lub aktualnego uzupełniania. Możliwymi wartościami opcji są wartości prawidłowe dla opisanej powyżej wbudowanej funkcji complete. Opcja -D wskazuje, że inne dostarczone opcje powinny mieć zastosowanie do zakończenia polecenia ``default''; to znaczy próba uzupełnienia dla polecenia, dla którego wcześniej nie zdefiniowano uzupełnienia. Opcja -E wskazuje, że inne podane opcje powinny dotyczyć uzupełniania polecenia ``puste''; to znaczy próba zakończenia w pustym wierszu. Opcja -I wskazuje, że inne podane opcje powinny mieć zastosowanie do uzupełniania początkowego słowa nie przypisanego w wierszu lub po ograniczniku polecenia, takim jak ; lub |, który zwykle jest uzupełnieniem nazwy polecenia.
Zwracana wartość to prawda, chyba że podano nieprawidłową opcję, podjęto próbę zmodyfikowania opcji dla nazwy, dla której nie istnieje specyfikacja uzupełniania lub wystąpił błąd danych wyjściowych.
Wznów kolejną iterację obejmującej pętli for, while, until lub select. Jeśli podano n, wznów w n pętli zamykającej. n musi być ≥ 1. Jeśli n jest większe niż liczba otaczających pętli, wznawiana jest ostatnia obejmująca pętla (pętla ``najwyższego poziomu''). Zwracana wartość to 0, chyba że n nie jest większe lub równe 1.
Zadeklaruj zmienne i/lub nadaj im atrybuty. Jeśli nie podano nazwy, wyświetl wartości zmiennych. Opcja -p wyświetli atrybuty i wartości każdego nazwy. Gdy -p jest używane z argumentami nazwa, dodatkowe opcje, inne niż -f i -F, są ignorowane . Podanie -p bez argumentów nazwa spowoduje wyświetlenie atrybutów i wartości wszystkich zmiennych, które mają atrybuty określone w dodatkowych opcjach. Jeśli nie podano żadnych innych opcji z -p, deklaracja wyświetli atrybuty i wartości wszystkich zmiennych powłoki. Opcja -f ogranicza wyświetlanie do funkcji powłoki. Opcja -F blokuje wyświetlanie definicji funkcji; drukowane są tylko nazwa funkcji i atrybuty. Jeśli opcja powłoki extdebug jest włączona za pomocą shopt, wyświetlana jest również nazwa pliku źródłowego i numer wiersza, w którym zdefiniowana jest każda nazwa. Opcja -F implikuje -f. Opcja -g wymusza tworzenie lub modyfikowanie zmiennych w zasięgu globalnym, nawet jeśli deklaracja jest wykonywana w funkcji powłoki. We wszystkich innych przypadkach jest ignorowany. Opcja -I powoduje, że zmienne lokalne dziedziczą atrybuty (z wyjątkiem atrybutu nameref) i wartość dowolnej istniejącej zmiennej o tej samej nazwie w otaczający zasięg. Jeśli nie ma żadnej istniejącej zmiennej, zmienna lokalna jest początkowo usuwana. Poniższych opcji można użyć, aby ograniczyć dane wyjściowe do zmiennych o określonym atrybucie lub nadać zmiennym atrybuty:
- -a
Każda nazwa jest indeksowaną zmienną tablicową (patrz Tablice powyżej).
- -A
Każda nazwa jest tablicą asocjacyjną (patrz Tablice powyżej).
- -f
Używaj tylko nazw funkcji.
- -i
Zmienna jest traktowana jako liczba całkowita; ocena arytmetyczna (patrz OBLICZANIE ARYTMETYCZNE powyżej) jest wykonywana, gdy zmiennej przypisywana jest wartość.
- -l
Gdy zmiennej przypisywana jest wartość, wszystkie wielkie litery są konwertowane na małe. Atrybut wielkich liter jest wyłączony.
- -n
Każdej nazwie nadaj atrybut nazwa, czyniąc z niej odniesienie nazwy do innej zmiennej. Ta inna zmienna jest zdefiniowana przez wartość nazwa. Wszystkie odwołania, przypisania i modyfikacje atrybutów do nazwa, z wyjątkiem użycia lub zmiany samego atrybutu -n, są wykonywane na zmiennej, do której odwołuje się nazwa > wartość. Atrybutu nameref nie można zastosować do zmiennych tablicowych.
- -r
Ustaw nazwa jako tylko do odczytu. Nazwy te nie mogą być następnie przypisywane wartości przez kolejne instrukcje przypisania ani usuwane.
- -t
Nadaj każdej nazwie atrybut trace. Śledzone funkcje dziedziczą pułapki DEBUG i RETURN z wywołującej powłoki. Atrybut trace nie ma specjalnego znaczenia dla zmiennych.
- -u
Gdy zmiennej przypisywana jest wartość, wszystkie małe litery są konwertowane na duże. Atrybut małych liter jest wyłączony.
- -x
Zaznacz nazwy do wyeksportowania do kolejnych poleceń przez środowisko.
Użycie `+' zamiast `-' zamiast tego wyłącza atrybut, z wyjątkiem tego, że +a i +A nie mogą być używane do niszczenia zmiennych tablicowych i +r nie usunie atrybutu tylko do odczytu. W przypadku użycia w funkcji, deklaracja i zestaw sprawiają, że każda nazwa jest lokalna, tak jak w przypadku polecenia local, chyba że Dostarczono opcję -g. Jeśli po nazwie zmiennej występuje =wartość, wartość zmiennej jest ustawiana na wartość. W przypadku używania -a lub -A i składni przypisania złożonego do tworzenia zmiennych tablicowych dodatkowe atrybuty zaczynają obowiązywać dopiero po kolejnych przypisaniach. Zwracana wartość wynosi 0, chyba że napotkano nieprawidłową opcję, podjęto próbę zdefiniowania funkcji za pomocą ``-f foo=bar'', podjęto próbę przypisania wartości zmiennej tylko do odczytu, podjęto próbę przypisania wartość do zmiennej tablicowej bez użycia składni przypisania złożonego (patrz Tablice powyżej), jedna z nazw nie jest prawidłową nazwą zmiennej powłoki, podejmowana jest próba odwrócenia off status tylko do odczytu dla zmiennej tylko do odczytu, podejmowana jest próba wyłączenia statusu tablicy dla zmiennej tablicowej lub podejmowana jest próba wyświetlenia nieistniejącej funkcji za pomocą -f.
Bez opcji wyświetla listę aktualnie zapamiętanych katalogów. Domyślnie wyświetlany jest pojedynczy wiersz z nazwami katalogów oddzielonymi spacjami. Katalogi są dodawane do listy za pomocą polecenia pushd; polecenie popd usuwa wpisy z listy. Bieżący katalog jest zawsze pierwszym katalogiem na stosie.
Czyści stos katalogów, usuwając wszystkie wpisy.
Tworzy listę przy użyciu pełnych nazw ścieżek; domyślny format listy używa tyldy do oznaczenia katalogu domowego.
Wydrukuj stos katalogów z jednym wpisem w wierszu.
Wydrukuj stos katalogów z jednym wpisem w wierszu, poprzedzając każdy wpis jego indeksem na stosie.
Wyświetla ntę pozycję, licząc od lewej strony listy pokazanej przez dirs, gdy jest wywoływana bez opcji, zaczynając od zera.
Wyświetla nty wpis licząc od prawej strony listy pokazanej przez dirs, gdy jest wywoływana bez opcji, zaczynając od zera.
Zwracana wartość wynosi 0, chyba że podano nieprawidłową opcję lub indeks n znajduje się poza końcem stosu katalogów.
Bez opcji usuń każdą specyfikację pracy z tabeli aktywnych ofert pracy. Jeśli specyfikacja pracy nie jest obecna i nie podano opcji -a ani -r, bieżąca praca Jest używane. Jeśli podana jest opcja -h, każdy specyfikacja zadania nie jest usuwany z tabeli, ale jest oznaczany tak, że SIGHUP nie jest wysyłany do zadania jeśli powłoka otrzyma SIGHUP. Jeśli nie podano specyfikacji zadania, opcja -a oznacza usunięcie lub zaznaczenie wszystkich zadań; opcja -r bez argumentu jobspec ogranicza działanie do uruchomionych zadań. Zwracana wartość to 0, chyba że specyfikacja zadania nie określa prawidłowego zadania.
Wypisz argumenty, oddzielone spacjami i znakiem nowej linii. Status powrotu to 0, chyba że wystąpi błąd zapisu. Jeśli określono -n, końcowy znak nowej linii jest pomijany. Jeśli podana jest opcja -e, włączona jest interpretacja następujących znaków ucieczki odwrotnego ukośnika. Opcja -E wyłącza interpretację tych znaków ucieczki, nawet w systemach, w których są one interpretowane domyślnie. Opcji powłoki xpg_echo można użyć do dynamicznego określania, czy echo domyślnie rozszerza te znaki specjalne. echo nie interpretuje -- jako końca opcji. echo interpretuje następujące sekwencje specjalne:
alarm (dzwonek)
spacja
stłumić dalsze wyjście
postać ucieczki
kanał formularza
Nowa linia
powrót karetki
zakładka pozioma
zakładka pionowa
ukośnik wsteczny
ośmiobitowy znak, którego wartością jest wartość ósemkowa nnn (od zera do trzech cyfr ósemkowych)
ośmiobitowy znak, którego wartością jest wartość szesnastkowa HH (jedna lub dwie cyfry szesnastkowe)
znak Unicode (ISO/IEC 10646), którego wartością jest wartość szesnastkowa HHHH (od jednej do czterech cyfr szesnastkowych)
znak Unicode (ISO/IEC 10646), którego wartością jest wartość szesnastkowa HHHHHHHH (od jednej do ośmiu cyfr szesnastkowych)
Włącz i wyłącz wbudowane polecenia powłoki. Wyłączenie polecenia wbudowanego umożliwia wykonanie polecenia dyskowego, które ma taką samą nazwę jak polecenie wbudowane powłoki, bez podawania pełnej nazwy ścieżki, mimo że powłoka zwykle szuka wbudowanych poleceń przed poleceniami dyskowymi. Jeśli użyto -n, każda nazwa jest wyłączona; w przeciwnym razie nazwy są włączone. Na przykład, aby użyć pliku binarnego test znalezionego w PATH zamiast wbudowanej wersji powłoki, uruchom ``enable -n test''. Opcja -f oznacza załadowanie nowego wbudowanego polecenia nazwa z udostępnionego obiektu nazwa pliku w systemach obsługujących ładowanie dynamiczne. Opcja -d usunie wbudowane wcześniej załadowane poleceniem -f. Jeśli nie podano żadnych argumentów nazwa lub podano opcję -p, wypisywana jest lista wbudowanych elementów powłoki. Bez innych argumentów opcji lista składa się ze wszystkich włączonych funkcji wbudowanych powłoki. Jeśli podano -n, drukowane są tylko wyłączone wbudowane elementy. Jeśli podano -a, wydrukowana lista zawiera wszystkie wbudowane funkcje, ze wskazaniem, czy każda z nich jest włączona. Jeśli podano -s, dane wyjściowe są ograniczone do wbudowanych elementów POSIX special. Zwracana wartość to 0, chyba że nazwa nie jest elementem wbudowanym powłoki lub wystąpił błąd podczas ładowania nowego elementu wbudowanego z udostępnionego obiektu.
argumenty są odczytywane i łączone razem w jedno polecenie. To polecenie jest następnie odczytywane i wykonywane przez powłokę, a jego status wyjścia jest zwracany jako wartość eval. Jeśli nie ma żadnych argów lub są tylko puste argumenty, eval zwraca 0.
Jeśli podano polecenie, zastępuje ono powłokę. Nie jest tworzony żaden nowy proces. argumenty stają się argumentami polecenia. Jeśli podano opcję -l, powłoka umieszcza myślnik na początku zerowego argumentu przekazanego do komendy. To właśnie robi login(1). Opcja -c powoduje wykonanie polecenia przy pustym środowisku. Jeśli podano -a, powłoka przekazuje nazwa jako zerowy argument wykonywanego polecenia. Jeśli polecenie nie może zostać wykonane z jakiegoś powodu, nieinteraktywna powłoka kończy działanie, chyba że włączona jest opcja powłoki execfail. W takim przypadku zwraca niepowodzenie. Powłoka interaktywna zwraca błąd, jeśli plik nie może zostać wykonany. Podpowłoka kończy działanie bezwarunkowo, jeśli exec zawiedzie. Jeśli komenda nie zostanie określona, wszystkie przekierowania zostaną zastosowane w bieżącej powłoce, a status powrotu to 0. Jeśli wystąpi błąd przekierowania, status powrotu to 1.
Powoduje zamknięcie powłoki ze statusem n. Jeśli pominięto n, kod wyjścia jest taki sam jak dla ostatniego wykonanego polecenia. Pułapka na EXIT jest wykonywana przed zakończeniem powłoki.
Podane nazwy są zaznaczone do automatycznego eksportu do środowiska kolejnych wykonywanych poleceń. Jeśli podano opcję -f, nazwy odnoszą się do funkcji. Jeśli nie podano nazw lub podano opcję -p, wypisywana jest lista nazw wszystkich wyeksportowanych zmiennych. Opcja -n powoduje usunięcie właściwości eksportu z każdego elementu nazwa. Jeśli po nazwie zmiennej występuje =słowo, wartość zmiennej jest ustawiana na słowo. export zwraca status wyjścia 0, chyba że napotkano nieprawidłową opcję, jedna z nazw nie jest prawidłową nazwą zmiennej powłoki lub -f jest dostarczany z nazwą, która nie jest funkcją.
Pierwszy formularz wybiera zakres poleceń od pierwszego do ostatniego z listy historii i wyświetla lub edytuje je i ponownie wykonuje. Pierwszy i ostatni mogą być podane jako łańcuch (aby zlokalizować ostatnie polecenie rozpoczynające się od tego ciągu) lub jako liczba (indeks na liście historii, gdzie liczba ujemna jest używany jako przesunięcie od bieżącego numeru polecenia). Podczas wyświetlania listy pierwszy lub ostatni równy 0 odpowiada -1, a -0 odpowiada bieżącemu poleceniu (zwykle jest to polecenie fc) ; w przeciwnym razie 0 jest równoważne -1, a -0 jest nieprawidłowe. Jeśli ostatnie nie jest określone, jest ustawiane na bieżące polecenie do wylistowania (tak, że ``fc -l -10'' wyświetla 10 ostatnich poleceń) i na pierwsze W przeciwnym razie. Jeśli pierwszy nie zostanie określony, zostanie ustawione na poprzednie polecenie do edycji i -16 do wyświetlenia.
Opcja -n pomija numery poleceń podczas wyświetlania. Opcja -r odwraca kolejność poleceń. Jeśli podano opcję -l, polecenia są wyświetlane na standardowym wyjściu. W przeciwnym razie edytor podany przez ename jest wywoływany na pliku zawierającym te polecenia. Jeśli nazwa nie jest podana, używana jest wartość zmiennej FCEDIT, a wartość EDITOR, jeśli FCEDIT nie jest ustawiony. Jeśli żadna zmienna nie jest ustawiona, używany jest vi . Po zakończeniu edycji edytowane polecenia są powtarzane i wykonywane.
W drugiej formie polecenie jest ponownie wykonywane po każdym wystąpieniu pat zastąpionym przez rep. Polecenie jest interpretowane tak samo jak pierwsze powyżej. Użytecznym aliasem do użycia z tym jest ``r="fc -s"'', więc wpisanie ``r cc'' uruchamia ostatnie polecenie zaczynające się od ``cc'' i wpisanie ``r'' ponownie wykonuje ostatnie polecenie.
Jeśli używana jest pierwsza postać, zwracana jest wartość 0, chyba że napotkano nieprawidłową opcję lub first lub last określono wiersze historii spoza zakresu. Jeśli podana jest opcja -e, zwracaną wartością jest wartość ostatniego wykonanego polecenia lub niepowodzenie w przypadku wystąpienia błędu z tymczasowym plikiem poleceń. Jeśli używana jest druga postać, statusem powrotu jest status ponownie wykonanego polecenia, chyba że cmd nie określa prawidłowej linii historii, w którym to przypadku fc zwraca błąd.
Wznów specyfikację pracy na pierwszym planie i ustaw ją jako bieżącą pracę. Jeśli specyfikacja pracy nie jest obecna, używane jest pojęcie bieżącej pracy powłoki. Zwracana wartość jest wartością polecenia umieszczonego na pierwszym planie lub niepowodzeniem, jeśli jest uruchamiane, gdy kontrola zadań jest wyłączona lub, gdy jest uruchamiana z włączoną kontrolą zadań, jeśli jobspec nie określa poprawnego zadania lub jobspec określa zadanie, które zostało uruchomione bez kontroli zadania.
getopts jest używany przez procedury powłoki do analizowania parametrów pozycyjnych. optstring zawiera znaki opcji do rozpoznania; jeśli po znaku następuje dwukropek, oczekuje się, że opcja będzie miała argument, który powinien być oddzielony od niej białą spacją. Dwukropek i znak zapytania nie mogą być używane jako znaki opcji. Za każdym razem, gdy jest wywoływana, getopts umieszcza następną opcję w zmiennej powłoki nazwa, inicjując nazwa, jeśli nie istnieje, oraz indeks następny argument do przetworzenia w zmiennej OPTIND.
OPTYCZNA jest inicjowana na 1 przy każdym wywołaniu powłoki lub skryptu powłoki. Gdy opcja wymaga argumentu, getopts umieszcza ten argument w zmiennej
OPTARG. Powłoka nie resetuje automatycznie OPTIND; musi być ręcznie resetowany pomiędzy wieloma wywołaniami getopts w ramach tego samego wywołania powłoki, jeśli ma być użyty nowy zestaw parametrów.
Po napotkaniu końca opcji getopts kończy działanie z wartością zwracaną większą od zera.
OPTYCZNA jest ustawiona na indeks pierwszego argumentu nie będącego opcją, a nazwa jest ustawiona na ?.
getopts zwykle analizuje parametry pozycyjne, ale jeśli podano więcej argumentów jako wartości arg, getopts analizuje je zamiast tego.
getopts może zgłaszać błędy na dwa sposoby. Jeśli pierwszym znakiem łańcucha optymalizacji jest dwukropek, używane jest zgłaszanie błędów cichy. Podczas normalnej pracy komunikaty diagnostyczne są drukowane w przypadku napotkania nieprawidłowych opcji lub brakujących argumentów opcji. Jeśli zmienna OPTERR jest ustawiona na 0, nie zostaną wyświetlone żadne komunikaty o błędach, nawet jeśli pierwszym znakiem łańcucha optymacyjnego nie jest dwukropek.
Jeśli zostanie wyświetlona nieprawidłowa opcja, getopts umieszcza ? do nazwa i jeśli nie jest cichy, wyświetla komunikat o błędzie i usuwa OPTARG. Jeśli getopts milczy, znaleziony znak opcji jest umieszczany w OPTARG i żaden komunikat diagnostyczny nie jest drukowany.
Jeśli wymagany argument nie zostanie znaleziony, a getopts nie milczy, znak zapytania ( ? ) zostanie umieszczony w nazwa, OPTARG jest wyłączone i drukowany jest komunikat diagnostyczny. Jeśli getopts milczy, to dwukropek ( : ) jest umieszczany w nazwie, a opcja OPTARG jest ustawiona na opcję znaleziona postać.
getopts zwraca wartość true, jeśli zostanie znaleziona opcja, określona lub nieokreślona. Zwraca false, jeśli napotkano koniec opcji lub wystąpił błąd.
Za każdym razem, gdy wywoływany jest hash, pełna ścieżka do polecenia nazwa jest ustalana przez przeszukiwanie katalogów w ` PATH i zapamiętywana. Każda wcześniej zapamiętana nazwa ścieżki jest odrzucana. Jeśli podano opcję -p, wyszukiwanie ścieżki nie jest wykonywane, a nazwa pliku jest używana jako pełna nazwa pliku polecenia. Opcja -r powoduje, że powłoka zapomina wszystkie zapamiętane lokalizacje. Opcja -d powoduje, że powłoka zapomina o zapamiętanej lokalizacji każdego nazwy. Jeśli podano opcję -t, wypisywana jest pełna nazwa ścieżki, której odpowiada każda nazwa. Jeśli podano kilka argumentów nazwa za pomocą -t, nazwa jest drukowana przed zaszyfrowaną pełną nazwą ścieżki. Opcja -l powoduje, że dane wyjściowe są wyświetlane w formacie, który może być ponownie użyty jako dane wejściowe. Jeśli nie podano żadnych argumentów lub podano tylko -l, wypisywana jest informacja o zapamiętanych poleceniach. Status zwracany to prawda, chyba że nie znaleziono nazwy lub podano nieprawidłową opcję.
Wyświetl przydatne informacje o wbudowanych poleceniach. Jeśli podano wzorzec, pomoc podaje szczegółową pomoc dotyczącą wszystkich poleceń pasujących do wzorca; w przeciwnym razie drukowana jest pomoc dla wszystkich wbudowanych struktur sterujących powłoki.
Wyświetl krótki opis każdego wzorca
Wyświetl opis każdego wzorca w formacie podobnym do strony podręcznika
Wyświetlaj tylko krótkie streszczenie użycia dla każdego wzorca
Status powrotu to 0, chyba że żadne polecenie nie pasuje do wzorca.
Bez opcji wyświetl listę historii poleceń z numerami wierszy. Wiersze oznaczone * zostały zmodyfikowane. Argument n wyświetla tylko ostatnie n wierszy. Jeśli zmienna powłoki HISTTIMEFORMAT jest ustawiona i nie jest pusta, jest używana jako łańcuch formatujący dla strftime(3) do wyświetlenia znacznika czasu powiązanego z każdym wyświetlonym wpisem historii. Pomiędzy sformatowanym znacznikiem czasu a wierszem historii nie jest drukowany odstęp pośredni. Jeśli podano nazwa_pliku, jest ona używana jako nazwa pliku historii; jeśli nie, używana jest wartość HISTFILE. Opcje, jeśli są podane, mają następujące znaczenie:
- -c
Wyczyść listę historii, usuwając wszystkie wpisy.
- -d offset
Usuń wpis historii na pozycji przesunięcie. Jeśli przesunięcie jest ujemne, jest interpretowane względem jednego większego niż ostatnia pozycja w historii, więc indeksy ujemne liczą wstecz od końca historii, a indeks -1 odnosi się do bieżącego polecenia history -d.
- -d start-end
Usuń wpisy historii między pozycjami początek i koniec, włącznie. Dodatnie i ujemne wartości dla początku i końca są interpretowane w sposób opisany powyżej.
- -a
Dołącz ``nowe'' linie historii do pliku historii. Są to wiersze historii wprowadzone od początku bieżącej sesji bash, ale nie dodane jeszcze do pliku historii.
- -n
Wczytaj linie historii, które nie zostały jeszcze odczytane z pliku historii, do bieżącej listy historii. Są to wiersze dołączane do pliku historii od początku bieżącej sesji bash.
- -r
Przeczytaj zawartość pliku historii i dołącz ją do bieżącej listy historii.
- -w
Zapisz aktualną listę historii do pliku historii, nadpisując zawartość pliku historii.
- -p
Wykonaj podstawienie historii dla następujących argumentów i wyświetl wynik na standardowym wyjściu. Nie przechowuje wyników na liście historii. Każdy arg musi być ujęty w cudzysłów, aby wyłączyć normalne interpretowanie historii.
- -s
Zapisz argumenty na liście historii jako pojedynczy wpis. Ostatnie polecenie na liście historii jest usuwane przed dodaniem argumentów.
Jeśli ustawiona jest zmienna HISTTIMEFORMAT, informacja o znaczniku czasu powiązana z każdym wpisem historii jest zapisywana w pliku historii oznaczonym znakiem komentarza historii. Kiedy plik historii jest odczytywany, wiersze zaczynające się od znaku komentarza historii, po którym bezpośrednio następuje cyfra, są interpretowane jako znaczniki czasu dla kolejnego wpisu historii. Zwracana wartość wynosi 0, chyba że napotkano nieprawidłową opcję, wystąpił błąd podczas odczytu lub zapisu pliku historii, podano nieprawidłowy przesunięcie jako argument opcji -d lub interpretacja historii podana jako argument dla -p kończy się niepowodzeniem.
Pierwszy formularz zawiera listę aktywnych zadań. Opcje mają następujące znaczenie:
- -l
Podaj identyfikatory procesów oprócz zwykłych informacji.
- -n
Wyświetlaj informacje tylko o zadaniach, które zmieniły status od ostatniego powiadomienia użytkownika o ich statusie.
- -p
Podaj tylko identyfikator procesu lidera grupy procesów zadania.
- -r
Wyświetlaj tylko uruchomione zadania.
- -s
Wyświetlaj tylko zatrzymane zadania.
Jeśli podano specyfikację pracy, dane wyjściowe są ograniczone do informacji o tej pracy. Status zwracany to 0, chyba że napotkano nieprawidłową opcję lub podano nieprawidłowy specyfikację zadania.
Jeśli podana jest opcja -x, jobs zastępuje każdy specyfikację zadania znaleziony w poleceniu lub args z odpowiednim identyfikatorem grupy procesów i wykonuje polecenie, przekazując je args, zwracając jego status wyjścia.
Wyślij sygnał nazwany przez sigspec lub signum do procesów nazwanych przez pid lub jobspec. sigspec to albo nazwa sygnału bez rozróżniania wielkości liter, taka jak SIGKILL (z prefiksem SIG lub bez), albo numer sygnału; signum to numer sygnału. Jeśli sigspec nie występuje, zakłada się SIGTERM. Argument -l wyświetla listę nazw sygnałów. Jeśli podano jakieś argumenty, gdy podano -l, zostaną wyświetlone nazwy sygnałów odpowiadające tym argumentom, a kod powrotu to 0. Argument exit_status to -l to liczba określająca numer sygnału lub status zakończenia procesu zakończonego sygnałem. Opcja -L jest równoważna opcji -l. kill zwraca true, jeśli co najmniej jeden sygnał został pomyślnie wysłany, lub false, jeśli wystąpił błąd lub napotkano nieprawidłową opcję.
Każdy arg jest wyrażeniem arytmetycznym do oceny (patrz OBLICZANIE ARYTMETYCZNE powyżej). Jeśli ostatni arg ma wartość 0, let zwraca 1; 0 jest zwracane w przeciwnym razie.
Dla każdego argumentu tworzona jest zmienna lokalna o nazwie nazwa, której przypisywana jest wartość. opcja może być dowolną opcją akceptowaną przez deklarację. Gdy w funkcji zostanie użyte local, powoduje to, że zmienna nazwa, aby mieć widoczny zakres ograniczony do tej funkcji i jej dzieci. Jeśli nazwa to -, zestaw opcji powłoki jest lokalny dla funkcji, w której wywołano local: opcje powłoki zmieniane za pomocą >set wbudowane wewnątrz funkcji są przywracane do ich oryginalnych wartości, gdy funkcja powraca. Przywracanie odbywa się tak, jakby wykonano serię komend set w celu przywrócenia wartości, które obowiązywały przed wykonaniem funkcji. Bez operandów local zapisuje listę zmiennych lokalnych na standardowe wyjście. Błędem jest użycie local poza funkcją. Status zwracany to 0, chyba że local jest używany poza funkcją, podano nieprawidłową nazwę lub nazwa jest zmienną tylko do odczytu.
Wyjdź z powłoki logowania.
Wczytuje wiersze ze standardowego wejścia do indeksowanej zmiennej tablicowej array lub z deskryptora pliku fd, jeśli podano opcję -u. Zmienna MAPFILE jest domyślną tablicą. Opcje, jeśli są podane, mają następujące znaczenie:
- -d
Pierwszy znak delim służy do zakończenia każdej linii wejściowej, zamiast nowej linii. Jeśli delim jest łańcuchem pustym, mapfile zakończy wiersz, gdy odczyta znak NUL.
- -n
Skopiuj maksymalnie count wierszy. Jeśli liczba wynosi 0, kopiowane są wszystkie wiersze.
- -O
Rozpocznij przypisywanie do tablicy od indeksu Origin. Domyślny indeks to 0.
- -s
Odrzuć pierwsze liczbę przeczytanych wierszy.
- -t
Usuń końcowy delim (domyślny znak nowej linii) z każdej odczytanej linii.
- -u
Czytaj wiersze z deskryptora pliku fd zamiast ze standardowego wejścia.
- -C
Oceniaj wywołanie zwrotne za każdym razem, gdy odczytywane są wiersze kwantowe. Opcja -c określa kwant.
- -c
Określ liczbę wierszy odczytywanych między każdym wywołaniem oddzwaniania.
Jeśli podano -C bez -c, domyślną wartością kwantową jest 5000. Podczas oceny wywołania zwrotnego jest dostarczany indeks następny element tablicy, który ma zostać przypisany, oraz wiersz, który ma zostać przypisany do tego elementu jako dodatkowe argumenty. wywołanie zwrotne jest oceniane po odczytaniu linii, ale przed przypisaniem elementu tablicy.
Jeśli nie podano wyraźnego pochodzenia, mapfile wyczyści tablicę przed przypisaniem do niej.
mapfile zwraca pomyślnie, chyba że podano nieprawidłową opcję lub argument opcji, tablica jest nieprawidłowa lub nie można jej przypisać, lub jeśli tablica nie jest tablicą indeksowaną.
Usuwa wpisy ze stosu katalogów. Bez argumentów usuwa górny katalog ze stosu i wykonuje cd do nowego najwyższego katalogu. Argumenty, jeśli są podane, mają następujące znaczenie:
Pomija normalną zmianę katalogu podczas usuwania katalogów ze stosu, tak że manipulowany jest tylko stos.
Usuwa nty wpis licząc od lewej strony listy pokazanej przez katalogi, zaczynając od zera. Na przykład: ``popd +0'' usuwa pierwszy katalog, ``popd +1'' drugi.
Usuwa nty wpis licząc od prawej strony listy pokazanej przez katalogi, zaczynając od zera. Na przykład: ``popd -0'' usuwa ostatni katalog, ``popd -1'' przedostatni.
Jeśli polecenie popd powiedzie się, wykonywany jest również dirs i zwracany jest kod 0. popd zwraca wartość false, jeśli wybrano nieprawidłową opcję napotkano, stos katalogów jest pusty, określono nieistniejący wpis stosu katalogów lub zmiana katalogu nie powiedzie się.
Zapisz sformatowane argumenty na standardowe wyjście pod kontrolą formatu. Opcja -v powoduje, że dane wyjściowe są przypisywane do zmiennej var zamiast być drukowane na standardowym wyjściu.
format to ciąg znaków, który zawiera trzy typy obiektów: zwykłe znaki, które są po prostu kopiowane na standardowe wyjście, sekwencje specjalne znaków, które są konwertowane i kopiowane do standardowego wyjścia specyfikacje wyjścia i formatu, z których każda powoduje wypisanie następnego kolejnego argumentu. Oprócz standardowego printf(1) specyfikacji formatu, printf interpretuje następujące rozszerzenia:
- %b
powoduje, że printf rozwija sekwencje specjalne z ukośnikiem odwrotnym w odpowiednim argumencie w taki sam sposób jak echo -e.
- %q
powoduje, że printf wyświetla odpowiedni argument w formacie, który może być ponownie użyty jako wejście powłoki.
- %(datefmt)T
powoduje, że printf wyświetla ciąg daty i godziny wynikający z użycia datefmt jako ciągu formatującego dla strftime (3). Odpowiedni argument jest liczbą całkowitą reprezentującą liczbę sekund, które upłynęły od epoki. Można użyć dwóch specjalnych wartości argumentów: -1 reprezentuje bieżący czas, a -2 reprezentuje czas wywołania powłoki. Jeśli nie podano żadnego argumentu, konwersja zachowuje się tak, jakby podano -1. Jest to wyjątek od zwykłego zachowania printf.
Dyrektywy %b, %q i %T używają argumentów szerokości i precyzji pola ze specyfikacji formatu i zapisują tyle bajtów z (lub używają tego szerokiego pola) argumentu rozszerzonego, który zwykle zawiera więcej znaków niż oryginalny .
Argumenty do specyfikatorów formatu niebędących ciągami są traktowane jak stałe C, z wyjątkiem tego, że dozwolony jest wiodący znak plus lub minus, a jeśli wiodący znak jest pojedynczym lub podwójnym cudzysłowem, wartością jest wartość ASCII następującego po nim znaku.
format jest ponownie używany w razie potrzeby do wykorzystania wszystkich argumentów. Jeśli format wymaga więcej argumentów niż podano, specyfikacje dodatkowego formatu zachowują się tak, jakby podano odpowiednio wartość zerową lub łańcuch pusty. Wartość zwracana wynosi zero w przypadku powodzenia, niezerowa w przypadku niepowodzenia.
Dodaje katalog na początek stosu katalogów lub obraca stos, czyniąc nowy wierzchołek stosu bieżącym katalogiem roboczym. Bez argumentów pushd wymienia dwa górne katalogi i zwraca 0, chyba że stos katalogów jest pusty. Argumenty, jeśli są podane, mają następujące znaczenie:
- -n
Pomija normalną zmianę katalogu podczas obracania lub dodawania katalogów do stosu, dzięki czemu manipulowany jest tylko stos.
- +n
Obraca stos tak, że nty katalog (licząc od lewej strony listy pokazanej przez dirs, zaczynając od zera) znajduje się na górze .
- -n
Obraca stos tak, aby nty katalog (licząc od prawej strony listy pokazanej przez dirs, zaczynając od zera) znalazł się na górze .
- dir
Dodaje katalog do stosu katalogów u góry, czyniąc go nowym bieżącym katalogiem roboczym, tak jakby został dostarczony jako argument wbudowanej funkcji cd.
Jeśli polecenie pushd powiedzie się, wykonywane jest również polecenie dirs. Jeśli używana jest pierwsza forma, pushd zwraca 0, chyba że cd do katalogu nie powiedzie się. W drugiej postaci pushd zwraca 0, chyba że stos katalogów jest pusty, określono nieistniejący element stosu katalogów lub zmiana katalogu na określony nowy bieżący katalog nie powiedzie się.
Wydrukuj bezwzględną ścieżkę do bieżącego katalogu roboczego. Wydrukowana nazwa ścieżki nie zawiera dowiązań symbolicznych, jeśli podano opcję -P lub włączono opcję -o fizyczne wbudowanego polecenia set. Jeśli używana jest opcja -L, wydrukowana nazwa ścieżki może zawierać dowiązania symboliczne. Status zwracany to 0, chyba że podczas odczytu nazwy bieżącego katalogu wystąpi błąd lub podano nieprawidłową opcję.
Jedna linia jest odczytywana ze standardowego wejścia lub z deskryptora pliku fd podanego jako argument opcji -u, dzielona na słowa, jak opisano powyżej w Word Dzielenie, i pierwsze słowo jest przypisywane do pierwszego imię, drugie słowo do drugiego nazwa i tak dalej. Jeśli jest więcej słów niż nazw, pozostałe słowa i ich rozdzielacze są przypisywane do ostatniego imię. Jeśli ze strumienia wejściowego odczytanych jest mniej słów niż nazw, pozostałym nazwom przypisuje się wartości puste. Znaki w IFS są używane do dzielenia linii na słowa przy użyciu tych samych reguł, których powłoka używa do interpretacji (opisane powyżej w sekcji Podział wyrazów). Znak ukośnika odwrotnego ( \) może być użyte do usunięcia specjalnego znaczenia następnego czytanego znaku i kontynuacji wiersza. Opcje, jeśli są podane, mają następujące znaczenie:
- -a aname
Słowa są przypisywane do kolejnych indeksów zmiennej tablicowej nazwa, zaczynając od 0. nazwa jest usuwana przed przypisaniem jakichkolwiek nowych wartości. Inne argumenty nazwa są ignorowane.
- -d delim
Pierwszy znak delim służy do zakończenia linii wejściowej, zamiast nowej linii. Jeśli delim jest łańcuchem pustym, read zakończy linię, gdy odczyta znak NUL.
- -e
Jeśli standardowe wejście pochodzi z terminala, readline (patrz READLINE powyżej) jest używane do uzyskania linii. Readline używa bieżących (lub domyślnych, jeśli edycja linii nie była wcześniej aktywna) ustawień edycji, ale używa domyślnego uzupełniania nazw plików Readline.
- -i text
Jeśli readline jest używane do odczytania wiersza, tekst jest umieszczany w buforze edycyjnym przed rozpoczęciem edycji.
- -n nchars
odczyt powraca po przeczytaniu nznaków znaków, zamiast czekać na pełny wiersz danych wejściowych, ale uwzględnia ogranicznik, jeśli jest mniej niż nznaków znaki są odczytywane przed ogranicznikiem.
- -N nchars
odczyt powraca po przeczytaniu dokładnie nznaków znaków zamiast czekać na pełną linię wejścia, chyba że napotkano EOF lub przekroczono limit czasu odczytu. Znaki separatora napotkane na wejściu nie są traktowane specjalnie i nie powodują powrotu read, dopóki nznaków nie zostaną odczytane. Wynik nie jest podzielony na znaki w IFS; intencją jest, aby zmienna była przypisywana dokładnie do przeczytanych znaków (z wyjątkiem ukośnika odwrotnego; zobacz opcję -r poniżej).
- -p prompt
Wyświetlaj monit w przypadku błędu standardowego, bez końcowego znaku nowej linii, przed próbą odczytania danych wejściowych. Monit jest wyświetlany tylko wtedy, gdy dane wejściowe pochodzą z terminala.
- -r
Ukośnik odwrotny nie działa jako znak zmiany znaczenia. Ukośnik odwrotny jest uważany za część linii. W szczególności para odwrotnego ukośnika-nowej linii nie może być następnie używana jako kontynuacja wiersza.
- -s
Tryb cichy. Jeśli wejście pochodzi z terminala, znaki nie są powtarzane.
- -t timeout
Powoduje przekroczenie limitu czasu odczytu i zwrócenie niepowodzenia, jeśli pełny wiersz wejścia (lub określona liczba znaków) nie zostanie odczytany w ciągu limitu czasu sekund. limit czasu może być liczbą dziesiętną z częścią ułamkową po kropce dziesiętnej. Ta opcja jest skuteczna tylko wtedy, gdy read czyta dane wejściowe z terminala, potoku lub innego specjalnego pliku; nie ma to żadnego wpływu podczas czytania ze zwykłych plików. Jeśli przekroczy limit czasu odczytu, odczyt zapisuje częściowe odczytane dane wejściowe do określonej zmiennej nazwa. Jeśli przekroczono limit czasu wynosi 0, odczyt zwraca natychmiast, bez próby odczytania jakichkolwiek danych. Status wyjścia wynosi 0, jeśli dane wejściowe są dostępne w określonym deskryptorze pliku, w przeciwnym razie jest niezerowe. Status wyjścia jest większy niż 128, jeśli limit czasu został przekroczony.
- -u fd
Odczytaj dane wejściowe z deskryptora pliku fd.
Jeśli nie podano żadnych nazw, odczytana linia, bez końcowego ogranicznika, ale poza tym niezmodyfikowana, jest przypisywana do zmiennej REPLY. Status wyjścia wynosi zero, chyba że napotkano koniec pliku, upłynął limit czasu read (w takim przypadku stan jest większy niż 128), błąd przypisania zmiennej (taki jak przypisanie do zmiennej tylko do odczytu) występuje lub podany jest nieprawidłowy deskryptor pliku jako argument dla -u.
Podane nazwy są oznaczone jako tylko do odczytu; wartości tych nazw nie mogą zostać zmienione przez późniejsze przypisanie. Jeśli podano opcję -f, funkcje odpowiadające nazwom są tak zaznaczone. Opcja -a ogranicza zmienne do tablic indeksowanych; opcja -A ogranicza zmienne do tablic asocjacyjnych. Jeśli podano obie opcje, pierwszeństwo ma -A. Jeśli nie podano żadnych argumentów nazwa lub podano opcję -p, wypisywana jest lista wszystkich nazw tylko do odczytu. Inne opcje mogą służyć do ograniczenia danych wyjściowych do podzbioru zbioru nazw tylko do odczytu. Opcja -p powoduje, że dane wyjściowe są wyświetlane w formacie, który może być ponownie użyty jako dane wejściowe. Jeśli po nazwie zmiennej występuje =słowo, wartość zmiennej jest ustawiana na słowo. Zwrot status wynosi 0, chyba że napotkano nieprawidłową opcję, jedna z nazw nie jest prawidłową nazwą zmiennej powłoki lub -f podano z nazwą to nie jest funkcja.
Powoduje, że funkcja przestaje działać i zwraca wartość określoną przez n swojemu wywołującemu. Jeśli pominięto n, zwracany jest status ostatniego polecenia wykonanego w treści funkcji. Jeśli return jest wykonywany przez program obsługi pułapek, ostatnie polecenie użyte do określenia statusu jest ostatnim poleceniem wykonanym przed programem obsługi pułapek. Jeśli return jest wykonywany podczas pułapki DEBUG, ostatnie polecenie użyte do określenia stanu jest ostatnim poleceniem wykonanym przez moduł obsługi pułapki przed wywołaniem return. Jeśli return jest używany poza funkcją, ale podczas wykonywania skryptu przez polecenie . (źródło) powoduje, że powłoka przestaje wykonywać ten skrypt i zwraca albo n lub status wyjścia ostatniego polecenia wykonanego w skrypcie jako status wyjścia skryptu. Jeśli podano n, zwracana wartość to najmniej znaczące 8 bitów. Status zwracany jest różny od zera, jeśli return jest argumentem nieliczbowym lub jest używany poza funkcją, a nie podczas wykonywania skryptu przez . lub źródło. Każde polecenie powiązane z pułapką RETURN jest wykonywane przed wznowieniem wykonywania po funkcji lub skrypcie.
Bez opcji nazwa i wartość każdej zmiennej powłoki są wyświetlane w formacie, który może być ponownie użyty jako dane wejściowe do ustawiania lub resetowania aktualnie ustawionych zmiennych. Zmiennych tylko do odczytu nie można zresetować. W trybie POSIX wyświetlane są tylko zmienne powłoki. Dane wyjściowe są sortowane zgodnie z bieżącymi ustawieniami regionalnymi. Kiedy opcje są określone, ustawiają lub usuwają atrybuty powłoki. Wszelkie argumenty pozostałe po przetworzeniu opcji są traktowane jako wartości parametrów pozycyjnych i są przypisywane kolejno do $1, $2, ... $n. Opcje, jeśli są określone, mają następujące znaczenie:
- -a
Każdej tworzonej lub modyfikowanej zmiennej lub funkcji nadawany jest atrybut export i oznaczany do eksportu do środowiska kolejnych poleceń.
- -b
Zgłaszaj stan zakończonych zadań w tle natychmiast, a nie przed następnym monitem głównym. Jest to skuteczne tylko wtedy, gdy włączona jest kontrola zadań.
- -e
Wyjdź natychmiast, jeśli potok (który może składać się z jednego prostego polecenia), lista, lub polecenie złożone (patrz GRAMATYKA POWŁOKI powyżej) kończy działanie z niezerowym statusem. Powłoka nie kończy działania, jeśli polecenie, które się nie powiedzie, jest częścią listy poleceń bezpośrednio po słowie kluczowym while lub until, część testu następuje po if lub elif słowa zastrzeżone, część każdego polecenia wykonywanego na liście && lub || z wyjątkiem polecenia następującego po końcowym && lub ||, dowolne polecenie w potoku oprócz ostatniego lub jeśli wartość zwracana przez polecenie jest odwracana za pomocą !. Jeśli polecenie złożone inne niż podpowłoka zwraca status niezerowy, ponieważ polecenie nie powiodło się podczas ignorowania -e, powłoka nie wychodzi. Pułapka na ERR, jeśli jest ustawiona, jest wykonywane przed zamknięciem powłoki. Ta opcja dotyczy środowiska powłoki i każdego środowiska podpowłoki oddzielnie (patrz
ŚRODOWISKO WYKONYWANIA POLECEŃ powyżej) i może spowodować zamknięcie podpowłoki przed wykonaniem wszystkich poleceń w podpowłoce.
Jeśli polecenie złożone lub funkcja powłoki jest wykonywana w kontekście, w którym -e jest ignorowane, żadne polecenie wykonywane w treści polecenia złożonego lub funkcji nie będzie miało wpływu na ustawienie -e, nawet jeśli -e jest ustawione, a polecenie zwraca status niepowodzenia. Jeśli polecenie złożone lub funkcja powłoki ustawia -e podczas wykonywania w kontekście, w którym -e jest ignorowane, ustawienie to nie będzie miało żadnego efektu, dopóki polecenie złożone lub polecenie zawierające wywołanie funkcji kończy się.
- -f
Wyłącz rozwijanie nazw ścieżek.
- -h
Zapamiętaj lokalizację poleceń, gdy są one wyszukiwane do wykonania. Ta opcja jest domyślnie włączona.
- -k
Wszystkie argumenty w postaci instrukcji przypisania są umieszczane w środowisku polecenia, a nie tylko te, które poprzedzają nazwę polecenia.
- -m
Tryb monitorowania. Kontrola zadań jest włączona. Ta opcja jest domyślnie włączona dla powłok interaktywnych w systemach, które ją obsługują (patrz KONTROLA ZADAŃ powyżej). Wszystkie procesy działają w osobnej grupie procesów. Po zakończeniu zadania w tle powłoka drukuje linię zawierającą status wyjścia.
- -n
Czytaj polecenia, ale ich nie wykonuj. Może to być użyte do sprawdzenia skryptu powłoki pod kątem błędów składniowych. Jest to ignorowane przez powłoki interaktywne.
- -o option-name
nazwa-opcji może być jedną z następujących:
- allexport
To samo co -a.
- braceexpand
To samo co -B.
- emacs
Użyj interfejsu edycji wiersza poleceń w stylu emacsa. Jest to domyślnie włączone, gdy powłoka jest interaktywna, chyba że powłoka jest uruchamiana z opcją --noediting. Ma to również wpływ 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łącz historię poleceń, jak opisano powyżej w sekcji HISTORIA. Ta opcja jest domyślnie włączona w powłokach interaktywnych.
- ignoreeof
Efekt jest taki, jakby zostało wykonane polecenie powłoki ``IGNOREEOF=10'' (patrz Zmienne powłoki powyżej).
- 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
Jeśli jest ustawiona, zwracana wartość potoku jest wartością ostatniego (najbardziej na prawo) polecenia do zakończenia z niezerowym statusem lub zerem, jeśli wszystkie polecenia w potoku zakończą się pomyślnie. Ta opcja jest domyślnie wyłączona.
- posix
Zmień zachowanie bash tam, gdzie domyślna operacja różni się od standardu POSIX, aby była zgodna ze standardem (tryb POSIX). Zobacz ZOBACZ TAKŻE poniżej, aby zapoznać się z dokumentem szczegółowo opisującym wpływ trybu POSIX na zachowanie basha.
- privileged
To samo co -p.
- verbose
To samo co -v.
- vi
Użyj interfejsu edycji wiersza poleceń w stylu vi. Ma to również wpływ na interfejs edycyjny używany przez read -e.
- xtrace
To samo co -x.
Jeśli podano -o bez nazwy-opcji, wypisywane są wartości bieżących opcji. Jeśli podano +o bez nazwy-opcji, seria set poleceń w celu odtworzenia bieżących ustawień opcji jest wyświetlany na standardowym wyjściu.
- -p
Włącz tryb uprzywilejowany. W tym trybie pliki $ENV i $BASH_ENV nie są przetwarzane, funkcje powłoki nie są dziedziczone ze środowiska, a SHELLOPTS, BASHOPTS, CDPATH i GLOBIGNORE, jeśli występują w środowisku, są ignorowane. Jeśli powłoka jest uruchomiona z efektywnym identyfikatorem użytkownika (grupy) różnym od rzeczywistego identyfikatora użytkownika (grupy) i nie podano opcji -p, to te działania są podejmowane, a efektywny identyfikator użytkownika to ustaw na rzeczywisty identyfikator użytkownika. Jeśli podczas uruchamiania zostanie podana opcja -p, efektywny identyfikator użytkownika nie zostanie zresetowany. Wyłączenie tej opcji powoduje ustawienie efektywnych identyfikatorów użytkowników i grup na rzeczywiste identyfikatory użytkowników i grup.
- -t
Wyjdź po przeczytaniu i wykonaniu jednego polecenia.
- -u
Traktuj nieustawione zmienne i parametry inne niż parametry specjalne „@” i „*” jako błąd podczas wykonywania interpretacji parametrów. Jeśli próba interpretacji zostanie podjęta na nieustawionej zmiennej lub parametrze, powłoka wypisze komunikat o błędzie i, jeśli nie jest interaktywna, zakończy działanie z niezerowym statusem.
- -v
Drukuj wiersze wejściowe powłoki podczas ich czytania.
- -x
Po rozwinięciu każdego prostego polecenia, for command, case command, select command lub arytmetycznego for command, wyświetl rozwiniętą wartość < PS4, po którym następuje polecenie i jego rozszerzone argumenty lub powiązana lista słów.
- -B
Powłoka wykonuje rozwinięcie nawiasów (patrz Rozwijanie nawiasów powyżej). To jest domyślnie włączone.
- -C
Jeśli jest ustawiony, bash nie zastępuje istniejącego pliku operatorami przekierowania >, >& i . Można to obejść podczas tworzenia plików wyjściowych przy użyciu operatora przekierowania >| zamiast >.
- -E
Jeśli jest ustawiona, każda pułapka na ERR jest dziedziczona przez funkcje powłoki, podstawienia poleceń i polecenia wykonywane w środowisku podpowłoki. Pułapka ERR zwykle nie jest dziedziczona w takich przypadkach.
- -H
Włącz podstawianie historii w stylu !. Ta opcja jest domyślnie włączona, gdy powłoka jest interaktywna.
- -P
Jeśli jest ustawiona, powłoka nie rozpoznaje dowiązań symbolicznych podczas wykonywania poleceń takich jak cd, które zmieniają bieżący katalog roboczy. Zamiast tego używa fizycznej struktury katalogów. Domyślnie bash podąża za logicznym łańcuchem katalogów podczas wykonywania poleceń zmieniających bieżący katalog.
- -T
Jeśli ustawione, wszelkie pułapki na DEBUG i RETURN są dziedziczone przez funkcje powłoki, podstawienia poleceń i polecenia wykonywane w środowisku podpowłoki. Pułapki DEBUG i RETURN zwykle nie są dziedziczone w takich przypadkach.
- --
Jeśli po tej opcji nie ma argumentów, parametry pozycyjne są nieustawione. W przeciwnym razie parametry pozycyjne są ustawiane na args, nawet jeśli niektóre z nich zaczynają się od -.
- -
Zasygnalizuj koniec opcji, aby wszystkie pozostałe arg zostały przypisane do parametrów pozycyjnych. Opcje -x i -v są wyłączone. Jeśli nie ma args, parametry pozycyjne pozostają niezmienione.
Opcje są domyślnie wyłączone, chyba że zaznaczono inaczej. Użycie + zamiast - powoduje wyłączenie tych opcji. Opcje można również podać jako argumenty wywołania powłoki. Bieżący zestaw opcji można znaleźć w $-. Status zwracany jest zawsze prawdziwy, chyba że napotkano nieprawidłową opcję.
Parametry pozycyjne z n+1 ... mają zmienioną nazwę na $1 .... Parametry reprezentowane przez numery $# do $#-n+1 są nieustawione. n musi być liczbą nieujemną mniejszą lub równą $#. Jeśli n wynosi 0, żadne parametry nie są zmieniane. Jeśli nie podano n, przyjmuje się, że wynosi 1. Jeśli n jest większe niż $#, parametry pozycyjne nie ulegają zmianie. zwracany status jest większy od zera, jeśli n jest większe od $# lub mniejsze od zera; inaczej 0.
Przełącz wartości ustawień sterujących opcjonalnym zachowaniem powłoki. Ustawienia mogą być wymienione poniżej lub, jeśli używana jest opcja -o, ustawienia dostępne z opcją -o wbudowanego polecenia set.< Bez opcji lub z opcją -p wyświetlana jest lista wszystkich możliwych do ustawienia opcji ze wskazaniem, czy każda z nich jest ustawiona; jeśli podano nazwy_opcji, dane wyjściowe są ograniczone do tych opcji. Opcja -p powoduje wyświetlenie danych wyjściowych w postaci, którą można ponownie wykorzystać jako wejście. Inne opcje mają następujące znaczenie:
Włącz (ustaw) każdą nazwę_opcji.
Wyłącz (odznacz) każdą nazwę_opcji.
Tłumi normalne wyjście (tryb cichy); zwracany status wskazuje, czy nazwa_opcji jest ustawiona czy nie. Jeśli podano wiele argumentów nazwa_opcji z -q, status powrotu wynosi zero, jeśli wszystkie nazwy_opcji są włączone; niezerowe w przeciwnym razie.
Ogranicza wartości optname do wartości zdefiniowanych dla opcji -o do wbudowanego elementu set.
Jeśli użyto -s lub -u bez argumentów optname, shopt pokazuje tylko te opcje, które są odpowiednio ustawione lub nieustawione. O ile nie zaznaczono inaczej, opcje shopt są domyślnie wyłączone (nieustawione).
Status zwracany przy wyświetlaniu opcji wynosi zero, jeśli wszystkie nazwy_opcji są włączone, w przeciwnym razie jest niezerowy. Podczas ustawiania lub usuwania opcji zwracany jest kod zero, chyba że nazwa_opcji nie jest prawidłową opcją powłoki.
Lista opcji shopt to:
Jeśli jest ustawiona, powłoka pomija wielokrotne obliczanie indeksów dolnych tablicy asocjacyjnej podczas obliczania wyrażeń arytmetycznych, podczas wykonywania wbudowanych funkcji, które mogą wykonywać przypisania zmiennych, oraz podczas wykonywania wbudowanych funkcji, które wykonują dereferencje tablicowe.
Jeśli jest ustawiona, nazwa polecenia, która jest nazwą katalogu, jest wykonywana tak, jakby była argumentem polecenia cd. Ta opcja jest używana tylko przez powłoki interaktywne.
Jeśli jest ustawiona, przyjmuje się, że argumentem wbudowanego polecenia cd, który nie jest katalogiem, jest nazwa zmiennej, której wartością jest katalog, do którego ma nastąpić zmiana.
Jeśli jest ustawiona, drobne błędy w pisowni składnika katalogu w poleceniu cd zostaną poprawione. Sprawdzane błędy to transponowane znaki, brakujący znak i jeden znak za dużo. Jeśli zostanie znaleziona poprawka, drukowana jest poprawiona nazwa pliku i polecenie jest kontynuowane. Ta opcja jest używana tylko przez powłoki interaktywne.
Jeśli jest ustawiona, bash sprawdza, czy polecenie znalezione w tablicy hash istnieje, zanim spróbuje je wykonać. Jeśli zaszyfrowane polecenie już nie istnieje, przeprowadzane jest normalne wyszukiwanie ścieżki.
Jeśli jest ustawiona, bash wyświetla stan wszystkich zatrzymanych i uruchomionych zadań przed wyjściem z interaktywnej powłoki. Jeśli jakieś zadania są uruchomione, powoduje to odroczenie wyjścia do czasu próby drugiego wyjścia bez polecenia interweniującego (patrz KONTROLA ZADANIA powyżej). Powłoka zawsze odkłada wyjście, jeśli jakiekolwiek zadania zostaną zatrzymane.
Jeśli ustawione, bash sprawdza rozmiar okna po każdym zewnętrznym (niewbudowanym) poleceniu i, jeśli to konieczne, aktualizuje wartości LINES i COLUMNS . Opcja jest wyłączona domyślnie.
Jeśli jest ustawiona, bash próbuje zapisać wszystkie wiersze polecenia wielowierszowego w tym samym wpisie historii. Pozwala to na łatwą ponowną edycję poleceń wielowierszowych. Ta opcja jest domyślnie włączona, ale działa tylko wtedy, gdy włączona jest historia poleceń, jak opisano powyżej w sekcji HISTORIA.
Te aspekty kontrolują tryb zgodności powłoki (patrz TRYB ZGODNOŚCI POWŁOKI poniżej).
Jeśli ustawione, bash cytuje wszystkie metaznaki powłoki w nazwach plików i katalogów podczas uzupełniania. Jeśli nie jest ustawiona, bash usuwa metaznaki, takie jak znak dolara, z zestawu znaków, które będą cytowane w zakończonych nazwach plików, gdy te metaznaki pojawią się w odwołaniach do zmiennych powłoki w słowach do uzupełnienia. Oznacza to, że znaki dolara w nazwach zmiennych, które rozwijają się do katalogów, nie będą cytowane; jednak wszelkie znaki dolara pojawiające się w nazwach plików również nie będą cytowane. Jest to aktywne tylko wtedy, gdy bash używa odwrotnych ukośników do cytowania zakończonych nazw plików. Ta zmienna jest ustawiona domyślnie, co jest domyślnym zachowaniem basha w wersjach do 4.2.
Jeśli ustawione, bash zastępuje nazwy katalogów wynikami interpretacji słów podczas uzupełniania nazw plików. Zmienia to zawartość bufora edycji readline. Jeśli nie jest ustawiona, bash próbuje zachować to, co wpisał użytkownik.
Jeśli ustawione, bash próbuje poprawić pisownię nazw katalogów podczas uzupełniania wyrazów, jeśli początkowo podana nazwa katalogu nie istnieje.
Jeśli ustawione, bash zawiera nazwy plików zaczynające się od `.' w wynikach rozwinięcia nazwy ścieżki. Nazwy plików ``.'' i ``..'' muszą być zawsze jawnie dopasowane, nawet jeśli ustawiono dotglob.
Jeśli jest ustawiona, powłoka nieinteraktywna nie zakończy działania, jeśli nie może wykonać pliku określonego jako argument wbudowanego polecenia exec. Powłoka interaktywna nie kończy działania, jeśli exec zawiedzie.
Jeśli ustawione, aliasy są rozwijane w sposób opisany powyżej w sekcji ALIASY. Ta opcja jest domyślnie włączona dla powłok interaktywnych.
Jeśli ustawione podczas wywołania powłoki lub w pliku startowym powłoki, zorganizuj wykonanie profilu debuggera przed uruchomieniem powłoki, identycznie jak opcja --debugger. Jeśli ustawione po wywołaniu, zachowanie przeznaczone do użycia przez debugery jest włączony:
Opcja -F wbudowanej deklaracji wyświetla nazwę pliku źródłowego i numer wiersza odpowiadający każdej nazwie funkcji podanej jako argument.
Jeśli polecenie uruchomione przez pułapkę DEBUG zwraca wartość różną od zera, następne polecenie jest pomijane i nie jest wykonywane.
Jeśli polecenie uruchomione przez pułapkę DEBUG zwraca wartość 2, a powłoka jest wykonywana w podprogramie (funkcja powłoki lub skrypt powłoki wykonywany przez wbudowane elementy . lub source), shell symuluje wezwanie do return.
BASH_ARGC i BASH_ARGV są aktualizowane zgodnie z powyższym opisem.
Śledzenie funkcji jest włączone: podstawianie poleceń, funkcje powłoki i podpowłoki wywoływane za pomocą ( polecenia ) dziedziczą pułapki DEBUG i RETURN.
Śledzenie błędów jest włączone: zastępowanie poleceń, funkcje powłoki i podpowłoki wywoływane za pomocą ( polecenia ) dziedziczą pułapkę ERR.
Jeśli jest ustawiona, włączone są rozszerzone funkcje dopasowywania wzorców opisane powyżej w sekcji Rozwijanie nazw ścieżek.
Jeśli jest ustawiony, wykonywane jest cytowanie $'string' i $"string" wewnątrz $ {parametrów} rozwinięć ujętych w podwójne cudzysłowy. Opcja jest wyłączona domyślnie.
Jeśli jest ustawiona, wzorce, które nie pasują do nazw plików podczas interpretacji nazw ścieżek, powodują błąd interpretacji.
Jeśli ustawione, sufiksy określone przez zmienną powłoki FIGNORE powodują ignorowanie słów podczas uzupełniania słów, nawet jeśli ignorowane słowa są jedynymi możliwymi uzupełnieniami. Zobacz ZMIENNE POWŁOKI powyżej, aby zapoznać się z opisem FIGNORE. Opcja jest wyłączona domyślnie.
Jeśli ustawione, wyrażenia zakresu używane w wyrażeniach nawiasów klamrowych dopasowujących wzorce (zobacz Dopasowywanie wzorców powyżej) zachowują się tak, jakby były używane w tradycyjnych ustawieniach narodowych języka C podczas przeprowadzania porównań. Oznacza to, że bieżąca kolejność zestawiania ustawień regionalnych nie jest brana pod uwagę, więc b nie będzie zestawiać między A i B oraz dużymi i małe litery ASCII zostaną zestawione razem.
Jeśli jest ustawiony, wzorzec ** używany w kontekście rozwijania nazw ścieżek będzie pasował do wszystkich plików i zero lub więcej katalogów i podkatalogów. Jeśli po wzorcu następuje /, pasują tylko katalogi i podkatalogi.
Jeśli jest ustawiona, komunikaty o błędach powłoki są zapisywane w standardowym formacie komunikatów o błędach GNU.
Jeśli jest ustawiona, lista historii jest dołączana do pliku nazwanego przez wartość zmiennej HISTFILE po zamknięciu powłoki, zamiast nadpisywać plik.
Jeśli jest ustawione i używane jest readline, użytkownik ma możliwość ponownej edycji nieudanej zamiany historii.
Jeśli jest ustawiona i używany jest readline, wyniki podstawienia historii nie są natychmiast przekazywane do parsera powłoki. Zamiast tego wynikowa linia jest ładowana do bufora edycji readline, umożliwiając dalsze modyfikacje.
Jeśli jest ustawione i używane jest readline, bash będzie próbował uzupełnić nazwę hosta, gdy słowo zawierające @ jest uzupełniane (patrz >Wypełnianie pod READLINE powyżej). Ta opcja jest domyślnie włączona.
Jeśli jest ustawiona, bash wyśle SIGHUP do wszystkich zadań po zamknięciu interaktywnej powłoki logowania.
Jeśli jest ustawiona, zastępowanie poleceń dziedziczy wartość opcji errexit, zamiast usuwać jej ustawienie w środowisku podpowłoki. Ta opcja jest włączona, gdy włączony jest tryb POSIX.
Jeśli jest ustawiona, pozwól, aby słowo zaczynające się od # powodowało ignorowanie tego słowa i wszystkich pozostałych znaków w tej linii w powłoce interaktywnej (patrz KOMENTARZE powyżej). Opcja jest wyłączona domyślnie.
Jeśli jest ustawiona, a kontrola zadań nie jest aktywna, powłoka uruchamia ostatnie polecenie potoku, które nie zostało wykonane w tle w bieżącym środowisku powłoki.
Jeśli jest ustawiona, a opcja cmdhist jest włączona, polecenia wielowierszowe są zapisywane w historii z osadzonymi znakami nowej linii, zamiast używania separatorów średników tam, gdzie to możliwe.
Jeśli ustawione, zmienne lokalne dziedziczą wartość i atrybuty zmiennej o tej samej nazwie, która istnieje w poprzednim zakresie przed przypisaniem nowej wartości. Atrybut nameref nie jest dziedziczony.
Jeśli jest ustawiona, wywołanie unset dla zmiennych lokalnych w poprzednich zakresach funkcji oznacza je, więc kolejne wyszukiwania znajdują je jako nieustawione, dopóki ta funkcja nie zwróci. Jest to identyczne z zachowaniem usuwania ustawień zmiennych lokalnych w bieżącym zakresie funkcji.
Powłoka ustawia tę opcję, jeśli jest uruchamiana jako powłoka logowania (patrz WYWOŁANIE powyżej). Wartość nie może zostać zmieniona.
Jeśli jest ustawiona, a plik, który bash sprawdza w poszukiwaniu poczty, został uzyskany od czasu ostatniego sprawdzania, wiadomość ``Poczta w pliku poczty została odczyt'' jest wyświetlany.
Jeśli jest ustawiona i używane jest readline, bash nie będzie próbował przeszukiwać PATH w poszukiwaniu możliwych uzupełnień, gdy próba uzupełnienia jest wykonywana w pustej linii.
Jeśli ustawiona, bash dopasowuje nazwy plików bez rozróżniania wielkości liter podczas wykonywania interpretacji nazw (patrz Rozwijanie nazw ścieżek powyżej).
Jeśli ustawiona, bash dopasowuje wzorce bez uwzględniania wielkości liter podczas dopasowywania podczas wykonywania case lub [[ poleceń warunkowych, podczas wykonywania interpretacji słów podstawiania wzorców lub podczas filtrowania możliwych uzupełnień jako część programowalnego zakończenia.
Jeśli jest ustawiona, bash pozwala wzorcom, które nie pasują do żadnego pliku (zobacz Rozwijanie nazw ścieżek powyżej), rozwinąć się do ciągu pustego, zamiast do samych siebie.
Jeśli jest ustawiona, funkcje programowalnego uzupełniania (patrz Programowalne uzupełnianie powyżej) są włączone. Ta opcja jest domyślnie włączona.
Jeśli ustawiona i programowalne uzupełnianie jest włączone, bash traktuje nazwę polecenia, która nie ma żadnych uzupełnień, jako możliwy alias i próbuje rozwinąć alias. Jeśli ma alias, bash próbuje programowalnego uzupełnienia przy użyciu słowa polecenia wynikającego z rozszerzonego aliasu.
Jeśli jest ustawiona, łańcuchy podpowiedzi podlegają interpretacji parametrów, podstawianiu poleceń, interpretacji arytmetycznej i usuwaniu cudzysłowów po rozwinięciu, jak opisano w sekcji POMOTY powyżej. Opcja jest wyłączona domyślnie.
Powłoka ustawia tę opcję, jeśli została uruchomiona w trybie ograniczonym (patrz POWŁOKA OGRANICZONA poniżej). Wartość nie może zostać zmieniona. Nie jest to resetowane podczas wykonywania plików startowych, dzięki czemu pliki startowe mogą wykryć, czy powłoka jest ograniczona.
Jeśli jest ustawiona, wbudowane shift wyświetla komunikat o błędzie, gdy licznik przesunięć przekroczy liczbę parametrów pozycyjnych.
Jeśli jest ustawiona, wbudowane źródło (.) używa wartości PATH do znalezienia katalogu zawierającego plik podany jako argument. Opcja jest wyłączona domyślnie.
Jeśli jest ustawiona, wbudowana funkcja echa domyślnie rozwija sekwencje ucieczki z ukośnikiem odwrotnym.
Wstrzymaj wykonywanie tej powłoki, dopóki nie otrzyma sygnału SIGCONT. Powłoki logowania nie można zawiesić; opcja -f może być użyta do obejścia tego i wymuszenia zawieszenia. Status zwracany to 0, chyba że powłoka jest powłoką logowania i nie podano -f lub kontrola zadań nie jest włączona.
Zwraca status 0 (prawda) lub 1 (fałsz) w zależności od oceny wyrażenia warunkowego wyrażenie. Każdy operator i operand muszą być oddzielnymi argumentami.
WYRAŻENIA WARUNKOWE. test nie akceptuje żadnych opcji ani nie akceptuje i nie ignoruje argumentu -- jako oznaczającego koniec opcji.
Wyrażenia można łączyć za pomocą następujących operatorów, wymienionych w malejącej kolejności pierwszeństwa. Ocena zależy od liczby argumentów; patrz poniżej. Pierwszeństwo operatorów jest używane, gdy istnieje pięć lub więcej argumentów.
- ! expr
Prawda, jeśli wyrażenie jest fałszywe.
- ( expr )
Zwraca wartość wyrażenie. Może to być użyte do nadpisania zwykłego pierwszeństwa operatorów.
- expr1 -a expr2
Prawda, jeśli zarówno wyr1, jak i wyr2 są prawdziwe.
- expr1 -o expr2
Prawda, jeśli wyr1 lub wyr2 jest prawdziwe.
testuj i [ oceniaj wyrażenia warunkowe przy użyciu zestawu reguł opartych na liczbie argumentów.
- 0 arguments
Wyrażenie jest fałszywe.
- 1 argument
Wyrażenie jest prawdziwe wtedy i tylko wtedy, gdy argument nie jest pusty.
- 2 arguments
Jeśli pierwszym argumentem jest !, wyrażenie jest prawdziwe wtedy i tylko wtedy, gdy drugi argument ma wartość NULL. Jeśli pierwszym argumentem jest jeden z jednoargumentowych operatorów warunkowych wymienionych powyżej w sekcji WYRAŻENIA WARUNKOWE, wyrażenie jest prawdziwe, jeśli test jednoargumentowy jest prawdziwy. Jeśli pierwszy argument nie jest prawidłowym jednoargumentowym operatorem warunkowym, wyrażenie jest fałszywe.
- 3 arguments
Następujące warunki są stosowane w podanej kolejności. Jeśli drugim argumentem jest jeden z binarnych operatorów warunkowych wymienionych powyżej w sekcji WYRAŻENIA WARUNKOWE, wynik wyrażenia jest wynikiem testu binarnego z użyciem pierwszego i trzeciego argumentu jako operandów. Operatory -a i -o są uważane za operatory binarne, gdy występują trzy argumenty. Jeśli pierwszym argumentem jest !, wartością jest negacja testu dwuargumentowego przy użyciu drugiego i trzeciego argumentu. Jeśli pierwszy argument to dokładnie (a trzeci argument to dokładnie ), wynikiem jest jednoargumentowy test drugiego argumentu. W przeciwnym razie wyrażenie jest fałszywe.
- 4 arguments
Jeśli pierwszym argumentem jest !, wynikiem jest zaprzeczenie wyrażenia trójargumentowego złożonego z pozostałych argumentów. W przeciwnym razie wyrażenie jest analizowane i oceniane zgodnie z priorytetem przy użyciu reguł wymienionych powyżej.
- 5 or more arguments
Wyrażenie jest analizowane i oceniane zgodnie z priorytetem przy użyciu reguł wymienionych powyżej.
W połączeniu z test lub [, operatory < i > sortują leksykograficznie przy użyciu kolejności ASCII.
Wydrukuj skumulowane czasy użytkownika i systemowe dla powłoki i dla procesów uruchamianych z powłoki. Stan zwrotu to 0.
Polecenie arg ma zostać odczytane i wykonane, gdy powłoka otrzyma sygnał(y) sigspec. Jeśli arg jest nieobecny (i istnieje pojedynczy sigspec) lub -, każdy określony sygnał jest resetowany do swojego pierwotną dyspozycję (wartość, jaką miała w chwili wejścia do muszli). Jeśli arg jest łańcuchem pustym, sygnał określony przez każdy sigspec jest ignorowany przez powłokę i polecenia, które wywołuje. Jeśli arg nie występuje, a podano -p, to wyświetlane są polecenia pułapki powiązane z każdym sigspec. Jeśli nie podano żadnych argumentów lub podano tylko -p, trap wypisuje listę poleceń związanych z każdym sygnałem. Opcja -l powoduje, że powłoka drukuje listę nazw sygnałów i odpowiadających im numerów. Każdy sigspec jest nazwą sygnału zdefiniowaną w pliku <signal.h> lub numerem sygnału. W nazwach sygnałów nie jest rozróżniana wielkość liter, a SIG jest opcjonalny.
Jeśli sigspec to EXIT (0), polecenie arg jest wykonywane przy wyjściu z powłoki. Jeśli sigspec to DEBUG, polecenie arg jest wykonywane przed każdym prostym poleceniem, for polecenie, case polecenie, select polecenie, każda arytmetyka for i przed wykonaniem pierwszego polecenia w funkcji powłoki (patrz GRAMATYKA POWŁOKI powyżej). Zapoznaj się z opisem opcji extdebug w wbudowanym shopt, aby poznać szczegóły jej wpływu na pułapkę DEBUG. Jeśli sigspec to RETURN, polecenie arg jest wykonywane za każdym razem, gdy funkcja powłoki lub skrypt jest wykonywany z . lub wbudowane kody źródłowe zakończą wykonywanie.
Jeśli sigspec to ERR, polecenie arg jest wykonywane za każdym razem, gdy potok (który może składać się z pojedynczego prostego polecenia), lista lub polecenie złożone zwraca niezerowy kod wyjścia, z zastrzeżeniem następujących warunków. Pułapka ERR nie jest wykonywana, jeśli polecenie zakończone niepowodzeniem jest częścią listy poleceń bezpośrednio po słowie kluczowym while lub until, część testu w instrukcja if, część polecenia wykonywanego na liście && lub ||, z wyjątkiem polecenia następującego po ostatnim && lub || , dowolne polecenie w potoku oprócz ostatniego lub jeśli wartość zwracana przez polecenie jest odwracana za pomocą !. Są to te same warunki, których przestrzega opcja errexit (-e).
Sygnały zignorowane po wejściu do powłoki nie mogą zostać uwięzione ani zresetowane. Uwięzione sygnały, które nie są ignorowane, są resetowane do ich oryginalnych wartości w środowisku podpowłoki lub podpowłoki, gdy takie jest tworzone. Status zwracany to fałsz, jeśli jakikolwiek sigspec jest nieprawidłowy; w przeciwnym razie trap zwraca wartość true.
Bez żadnych opcji wskaż, jak każda nazwa będzie interpretowana, jeśli zostanie użyta jako nazwa polecenia. Jeśli użyta zostanie opcja -t, type wypisuje łańcuch składający się z aliasu, słowa kluczowego, funkcja, wbudowana lub plik, jeśli nazwa jest aliasem, słowem zastrzeżonym powłoki, funkcją, plikiem wbudowanym lub plikiem dyskowym, odpowiednio. Jeśli nazwa nie zostanie znaleziona, nic nie zostanie wydrukowane i zwrócony zostanie status wyjścia false. Jeśli używana jest opcja -p, type albo zwraca nazwę pliku dyskowego, który zostałby wykonany, gdyby jako nazwę polecenia podano nazwa lub nic, jeśli ``wpisz -t nazwa'' nie zwróci pliku. Opcja -P wymusza wyszukiwanie PATH dla każdego nazwy, nawet jeśli ``wpisz -t nazwa'' nie zwróci pliku. Jeśli polecenie jest zahaszowane, -p i -P wypisują zaszyfrowaną wartość, która niekoniecznie jest plikiem, który pojawia się jako pierwszy w PATH. Jeśli używana jest opcja -a, type wypisuje wszystkie miejsca, które zawierają plik wykonywalny o nazwie nazwa. Obejmuje to aliasy i funkcje, tylko wtedy, gdy nie jest również używana opcja -p. Tabela zaszyfrowanych poleceń nie jest sprawdzana podczas używania -a. Opcja -f blokuje wyszukiwanie funkcji powłoki, tak jak w przypadku wbudowanego polecenia command. type zwraca true, jeśli wszystkie argumenty zostały znalezione, false, jeśli jakieś nie znajdują się.
Zapewnia kontrolę nad zasobami dostępnymi dla powłoki i uruchamianymi przez nią procesami w systemach, które pozwalają na taką kontrolę. Opcje -H i -S określają, czy ustalony jest twardy lub miękki limit dla danego zasobu. Po ustawieniu twardego limitu użytkownik inny niż root nie może go zwiększyć; limit miękki może zostać zwiększony do wartości limitu twardego. Jeśli nie określono ani -H, ani -S, ustawiane są zarówno miękkie, jak i twarde limity. Wartość limit może być liczbą w jednostce określonej dla zasobu lub jedną z wartości specjalnych hard, soft lub nieograniczony, które oznaczają odpowiednio aktualny twardy limit, aktualny miękki limit i brak limitu. Jeśli pominięto limit, wypisywana jest bieżąca wartość miękkiego limitu zasobu, chyba że podano opcję -H. Jeśli określono więcej niż jeden zasób, nazwa limitu i jednostka, jeśli to konieczne, są drukowane przed wartością. Inne opcje są interpretowane w następujący sposób:
- -a
Wszystkie aktualne limity są zgłaszane; nie ma ustalonych limitów
- -b
Maksymalny rozmiar bufora gniazda
- -c
Maksymalny rozmiar tworzonych plików podstawowych
- -d
Maksymalny rozmiar segmentu danych procesu
- -e
Maksymalny priorytet planowania („miły”)
- -f
Maksymalny rozmiar plików zapisywanych przez powłokę i jej dzieci
- -i
Maksymalna liczba oczekujących sygnałów
- -k
Maksymalna liczba kolejek, które można przydzielić
- -l
Maksymalny rozmiar, który może być zablokowany w pamięci
- -m
Maksymalny rozmiar zestawu rezydentnego (wiele systemów nie przestrzega tego limitu)
- -n
Maksymalna liczba otwartych deskryptorów plików (większość systemów nie pozwala na ustawienie tej wartości)
- -p
Rozmiar potoku w blokach 512-bajtowych (nie można tego ustawić)
- -q
Maksymalna liczba bajtów w kolejkach komunikatów POSIX
- -r
Maksymalny priorytet planowania w czasie rzeczywistym
- -s
Maksymalny rozmiar stosu
- -t
Maksymalna ilość czasu procesora w sekundach
- -u
Maksymalna liczba procesów dostępnych dla jednego użytkownika
- -v
Maksymalna ilość pamięci wirtualnej dostępnej dla powłoki i, w niektórych systemach, dla jej dzieci
- -x
Maksymalna liczba blokad plików
- -P
Maksymalna liczba pseudoterminali
- -R
Maksymalny czas, w którym proces w czasie rzeczywistym może działać przed zablokowaniem, w mikrosekundach
- -T
Maksymalna liczba wątków
Jeśli podano limit i nie użyto opcji -a, limit jest nową wartością określonego zasobu. Jeśli nie podano żadnej opcji, przyjmuje się -f. Wartości są podane w przyrostach 1024-bajtowych, z wyjątkiem -t, które jest wyrażone w sekundach; -R, czyli w mikrosekundach; -p, która jest wyrażona w blokach 512-bajtowych; -P, -T, -b, -k, -n, i -u, które są wartościami nieskalowanymi; oraz, w trybie POSIX, -c i -f, które są przyrostami 512-bajtowymi. Status zwracany to 0, chyba że podano nieprawidłową opcję lub argument albo wystąpił błąd podczas ustawiania nowego limitu.
Maska tworzenia plików użytkownika jest ustawiona na tryb. Jeśli tryb zaczyna się od cyfry, jest interpretowany jako liczba ósemkowa; w przeciwnym razie jest interpretowana jako maska trybu symbolicznego, podobna do akceptowanej przez chmod(1). Jeśli tryb zostanie pominięty, wypisywana jest bieżąca wartość maski. Opcja -S powoduje wydrukowanie maski w postaci symbolicznej; domyślnym wyjściem jest liczba ósemkowa. Jeśli podano opcję -p i pominięto tryb, dane wyjściowe mają postać, która może być ponownie wykorzystana jako dane wejściowe. Status zwracany to 0, jeśli tryb został pomyślnie zmieniony lub jeśli nie podano argumentu tryb, aw przeciwnym razie fałsz.
Usuń każdą nazwę z listy zdefiniowanych aliasów. Jeśli podano -a, wszystkie definicje aliasów są usuwane. Zwracana wartość to prawda, chyba że podany nazwa nie jest zdefiniowanym aliasem.
Dla każdej nazwy usuń odpowiednią zmienną lub funkcję. Jeśli podano opcję -v, każda nazwa odnosi się do zmiennej powłoki i ta zmienna jest usuwana. Zmienne tylko do odczytu nie mogą być usuwane. Jeśli podano -f, każda nazwa odnosi się do funkcji powłoki, a definicja funkcji jest usuwana. Jeśli podano opcję -n, a nazwa jest zmienną z atrybutem nazwa, nazwa zostanie anulowana, a nie zmienna, do której się odwołuje. -n nie działa, jeśli podano opcję -f.
Jeśli nie podano żadnych opcji, każdy nazwa odnosi się do zmiennej; jeśli nie ma zmiennej o tej nazwie, funkcja o tej nazwie, jeśli istnieje, jest nieustawiona. Każda nieustawiona zmienna lub funkcja jest usuwana ze środowiska przekazywanego kolejnym poleceniom. Jeśli którykolwiek z BASH_ALIASES, BASH_ARGV0, BASH_CMDS, BASH_COMMAND, BASH_SUBSHELL, BASHPID, COMP_WORDBREAKS, DIRSTACK, EPOCHREALTIME, EPOCHSECONDS, NAZWA FUNKCJI >, GRUPY, HISTCMD, LINENO, LOSOWO, SECONDS lub SRANDOM są nieustawione, tracą swoje specjalne właściwości, nawet jeśli zostaną później zresetowane.
Status wyjścia to prawda, chyba że nazwa jest tylko do odczytu.
Poczekaj na każdy określony proces potomny i zwróć jego status zakończenia. Każdy id może być identyfikatorem procesu lub specyfikacją zadania; jeśli podano specyfikację zadania, wszystkie procesy w potoku tego zadania są oczekiwane. Jeśli id nie jest podane, wait czeka na wszystkie uruchomione zadania w tle i podstawienie ostatnio wykonanego procesu, jeśli jego identyfikator procesu jest taki sam jak $!,< i zwracany stan to zero. Jeśli podano opcję -n, wait czeka na jedno zadanie z listy id lub, jeśli nie, ids są dostarczane, dowolne zadanie, do wykonania i zwraca status wyjścia. Jeśli żaden z podanych argumentów nie jest dzieckiem powłoki lub jeśli nie podano żadnych argumentów, a powłoka nie ma nieoczekiwanych dzieci, kod zakończenia wynosi 127. Jeśli podano opcję -p, proces lub zadanie identyfikator zadania, dla którego zwracany jest status wyjścia, jest przypisywany do zmiennej nazwa_zmiennej, której nazwa pochodzi z argumentu opcji. Zmienna zostanie początkowo usunięta, przed jakimkolwiek zadanie. Jest to przydatne tylko wtedy, gdy podana jest opcja -n. Podanie opcji -f, gdy włączona jest kontrola zadań, wymusza czekanie na id, aby zakończyć przed zwróceniem swojego stanu, zamiast powracać, gdy stan się zmieni. Jeśli id określa nieistniejący proces lub zadanie, status powrotu to 127. W przeciwnym razie status powrotu to status wyjścia ostatniego oczekiwanego procesu lub zadania.
Bash-4.0 wprowadził koncepcję „poziomu kompatybilności powłoki”, określonego jako zestaw opcji do wbudowanego shopt compat31, compat32, compat40 , compat41 itd.). Obecnie istnieje tylko jeden poziom zgodności — każda opcja wzajemnie się wyklucza. Poziom zgodności ma na celu umożliwienie użytkownikom wybrania zachowania z poprzednich wersji, które jest niezgodne z nowszymi wersjami, podczas migracji skryptów w celu korzystania z bieżących funkcji i zachowań. Ma to być rozwiązanie tymczasowe.
Ta sekcja nie wspomina o zachowaniu, które jest standardowe dla konkretnej wersji (np. ustawienie compat32 oznacza, że cytowanie rhs operatora dopasowania wyrażenia regularnego cytuje specjalne znaki wyrażenia regularnego w słowie, co jest domyślnym zachowaniem w bash- 3.2 i nowsze).
Jeśli użytkownik włączy, powiedzmy, compat32, może to wpłynąć na zachowanie innych poziomów zgodności, włącznie z bieżącym poziomem zgodności. Pomysł polega na tym, że każdy poziom zgodności kontroluje zachowanie, które zmieniło się w tej wersji bash, ale to zachowanie mogło występować we wcześniejszych wersjach. Na przykład zmiana polegająca na używaniu porównań opartych na ustawieniach regionalnych za pomocą polecenia [[ pojawiła się w bash-4.1, a wcześniejsze wersje używały porównań opartych na ASCII, więc włączenie compat32 umożliwi porównania oparte na ASCII również. Ta szczegółowość może nie być wystarczająca do wszystkich zastosowań, w związku z czym użytkownicy powinni ostrożnie stosować poziomy zgodności. Przeczytaj dokumentację konkretnej funkcji, aby poznać bieżące zachowanie.
Bash-4.3 wprowadził nową zmienną powłoki:
BASH_COMPAT. Wartość przypisana do tej zmiennej (dziesiętny numer wersji, np. 4.2, lub liczba całkowita odpowiadająca opcji compatNN, np. 42) określa poziom zgodności.
Począwszy od bash-4.4, Bash zaczął wycofywać starsze poziomy kompatybilności. Ostatecznie opcje zostaną usunięte na rzecz BASH_COMPAT.
Bash-5.0 to ostateczna wersja, dla której będzie dostępna indywidualna opcja shopt dla poprzedniej wersji. Użytkownicy powinni używać BASH_COMPAT na bash-5.0 i nowszych wersjach.
W poniższej tabeli opisano zmiany zachowania kontrolowane przez każde ustawienie poziomu zgodności. Znacznik compatNN jest używany jako skrót do ustawiania poziomu zgodności na NN za pomocą jednego z następujące mechanizmy. W przypadku wersji wcześniejszych niż bash-5.0 poziom kompatybilności można ustawić za pomocą odpowiedniej opcji shopt compatNN. W przypadku wersji bash-4.3 i nowszych preferowana jest zmienna BASH_COMPAT, która jest wymagana w przypadku wersji bash-5.1 i nowszych.
cytowanie prawego rogu [[ operatora dopasowania wyrażenia regularnego polecenia (=~) nie ma specjalnego efektu
przerwanie listy poleceń typu "a ; b ; c" powoduje wykonanie następnej komendy z listy (w bash-4.0 i nowszych wersjach powłoka zachowuje się tak, jakby otrzymała przerwanie, więc przerwanie jednej komendy z listy przerywa wykonanie całej listy)
operatory < i > w poleceniu [[ nie biorą pod uwagę bieżących ustawień regionalnych podczas porównywania ciągów znaków; używają porządku ASCII. Wersje Bash wcześniejsze niż bash-4.1 używają sortowania ASCII i strcmp(3); bash-4.1 i nowsze używają bieżącej kolejności sortowania i strcoll(3).
w trybie posix po czasie mogą następować opcje i nadal być rozpoznawane jako słowo zastrzeżone (jest to interpretacja POSIX 267)
w trybie posix parser wymaga, aby w części word ujętej w podwójne cudzysłowy wystąpiła parzysta liczba cudzysłowów rozszerzenie parametrów i traktuje je specjalnie, tak aby znaki w pojedynczych cudzysłowach były uważane za cytowane (jest to interpretacja POSIX 221)
łańcuch zastępczy w podstawieniu wzorca w podwójnym cudzysłowie nie podlega usunięciu cudzysłowu, jak ma to miejsce w wersjach po bash-4.2
w trybie POSIX pojedyncze cudzysłowy są uważane za specjalne podczas interpretacji word części interpretacji parametrów w cudzysłowach i mogą być użyte do cytowania nawiasu zamykającego lub innego znaku specjalnego (to jest częścią interpretacji POSIX 221); w późniejszych wersjach pojedyncze cudzysłowy nie są specjalne w rozwinięciach słów z podwójnymi cudzysłowami
powłoka nie wyświetla komunikatu ostrzegawczego, jeśli podjęto próbę użycia podanego w cudzysłowie przypisania złożonego jako argumentu do zadeklarowania (deklaracja -a foo='(1 2)'). Późniejsze wersje ostrzegają, że to użycie jest przestarzałe
błędy interpretacji słów są uważane za błędy niekrytyczne, które powodują niepowodzenie bieżącego polecenia, nawet w trybie POSIX (domyślnym zachowaniem jest uczynienie ich błędami krytycznymi, które powodują zamknięcie powłoki)
podczas wykonywania funkcji powłoki stan pętli (while/until/etc.) nie jest resetowany, więc przerwanie lub kontynuacja w tej funkcji spowoduje przerwanie lub kontynuację pętli w kontekście wywołującym. Bash-4.4 i później zresetuj stan pętli, aby temu zapobiec
powłoka konfiguruje wartości używane przez BASH_ARGV i BASH_ARGC, dzięki czemu mogą one rozszerzyć się do parametrów pozycyjnych powłoki, nawet jeśli rozszerzony tryb debugowania nie jest włączony
podpowłoka dziedziczy pętle z kontekstu nadrzędnego, więc break lub kontynuuj spowoduje wyjście z podpowłoki. Bash-5.0, a później zresetuj stan pętli, aby uniemożliwić wyjście
przypisania zmiennych poprzedzające wbudowane funkcje, takie jak export i readonly, które ustawiają atrybuty, nadal wpływają na zmienne o tej samej nazwie w środowisku wywołującym, nawet jeśli powłoka nie jest w trybie POSIX
Bash-5.1 zmienił sposób generowania $RANDOM, wprowadzając nieco więcej losowości. Jeśli poziom kompatybilności powłoki jest ustawiony na 50 lub mniej, powraca do metody bash-5.0 i wcześniejszych wersji, więc zaszczepienie generatora liczb losowych przez przypisanie wartości do < RANDOM da taką samą sekwencję jak w bash-5.0/p>
Jeśli tablica skrótów poleceń jest pusta, wersje bash przed bash-5.1 wyświetlały komunikat informacyjny w tej sprawie, nawet jeśli tworzyły dane wyjściowe, które można ponownie wykorzystać jako dane wejściowe. Bash-5.1 pomija ten komunikat, gdy dostarczona jest opcja -l.
Jeśli bash zostanie uruchomiony z nazwą rbash lub zostanie podana opcja -r przy wywołaniu, powłoka zostanie ograniczona. Ograniczona powłoka służy do konfigurowania środowiska bardziej kontrolowanego niż standardowa powłoka. Zachowuje się identycznie jak bash z wyjątkiem tego, że następujące czynności są niedozwolone lub nie są wykonywane:
zmiana katalogów za pomocą cd
ustawianie lub usuwanie wartości SHELL, PATH, HISTFILE, ENV lub BASH_ENV >
określając nazwy poleceń zawierające /
podanie nazwy pliku zawierającej / jako argument do wbudowanego polecenia .
podanie nazwy pliku zawierającej ukośnik jako argumentu wbudowanego polecenia history
podanie nazwy pliku zawierającej ukośnik jako argumentu opcji -p wbudowanego polecenia hash
importowanie definicji funkcji ze środowiska powłoki podczas uruchamiania
parsowanie wartości SHELLOPTS ze środowiska powłoki podczas uruchamiania
przekierowanie danych wyjściowych za pomocą operatorów przekierowania >, >|, <>, >&, &> i >>
za pomocą wbudowanego polecenia exec w celu zastąpienia powłoki innym poleceniem
dodawanie lub usuwanie wbudowanych poleceń za pomocą opcji -f i -d do wbudowanego polecenia enable
za pomocą wbudowanego polecenia enable, aby włączyć wyłączone wbudowane wbudowane powłoki
podając opcję -p wbudowanemu poleceniu command
wyłączenie trybu ograniczonego za pomocą ustaw +r lub ustaw +o ograniczone.
Te ograniczenia są egzekwowane po odczytaniu jakichkolwiek plików startowych.
rbash wyłącza wszelkie ograniczenia w powłoce uruchomionej w celu wykonania skryptu.
http://pubs.opengroup.org/onlinepubs/9699919799/
Plik wykonywalny bash
Ogólnosystemowy plik inicjujący, wykonywany dla powłok logowania
Osobisty plik inicjujący, wykonywany dla powłok logowania
Indywidualny plik startowy dla powłoki interaktywnej
Indywidualny plik czyszczenia powłoki logowania, wykonywany po zamknięciu powłoki logowania
Indywidualny plik readline inicjujący
Brian Fox, Fundacja Wolnego Oprogramowania
bfox@gnu.org
Chet Ramey, Uniwersytet Case Western Reserve
chet.ramey@case.edu
Jeśli znajdziesz błąd w bash, powinieneś go zgłosić. Ale najpierw upewnij się, że to naprawdę jest błąd i że pojawia się w najnowszej wersji bash. Najnowsza wersja jest zawsze dostępna na ftp://ftp.gnu.org/pub/gnu/bash/.
Po ustaleniu, że błąd rzeczywiście istnieje, użyj polecenia bashbug, aby przesłać raport o błędzie. Jeśli masz poprawkę, zachęcamy do wysłania jej pocztą! Sugestie i „filozoficzne” raporty o błędach można przesyłać pocztą na adres bug-bash@gnu.org lub publikować w grupie dyskusyjnej Usenet gnu.bash.bug .
WSZYSTKIE raporty o błędach powinny zawierać:
bashbug automatycznie wstawia pierwsze trzy elementy do szablonu, który udostępnia do zgłaszania błędów.
Komentarze i zgłoszenia błędów dotyczące tej strony podręcznika należy kierować na adres chet.ramey@case.edu.
Jest za duży i za wolny.
Istnieją pewne subtelne różnice między bash a tradycyjnymi wersjami sh, głównie ze względu na specyfikację POSIX.
Aliasy są mylące w niektórych zastosowaniach.
Wbudowanych poleceń i funkcji powłoki nie można zatrzymać ani ponownie uruchomić.
Polecenia złożone i sekwencje poleceń w postaci `a ; B ; c” nie są obsługiwane z wdziękiem podczas próby zawieszenia procesu. Po zatrzymaniu procesu powłoka natychmiast wykonuje następne polecenie w sekwencji. Wystarczy umieścić sekwencję poleceń w nawiasach, aby wtłoczyć ją w podpowłokę, którą można zatrzymać jako całość.
Zmienne tablicowe nie mogą (jeszcze) być eksportowane.
W danej chwili może istnieć tylko jeden aktywny koproces.