ksh

Autres langues

Langue: pl

Autres versions - même langue

Version: 22 lutego 1999 (openSuse - 09/10/07)

Section: 1 (Commandes utilisateur)

NAZWA

ksh - Publiczna implementacja pow³oki Korna

WYWO£ANIE

ksh [+-abCefhikmnprsuvxX] [+-o opcja] [ [ -c ³añcuch_komend [nazwa_komendy]|-s|plik ] [argument ...] ]

OPIS

ksh to interpreter komend zaprojektowany zarówno do interakcyjnej pracy z systemem, jak i do wykonywania skryptów. Jego jêzyk komend jest nadzbiorem (superset) jêzyka pow³oki sh(1).

Uruchamianie pow³oki

Nastêpuj±ce opcje mog± byæ u¿yte wy³±cznie w linii komend:
-c ³añcuch_komend
pow³oka wykonuje komendê(y) zawart±(e) w ³añcuchu_komend
-i
tryb interakcyjny --- patrz poni¿ej
-l
pow³oka zameldowania --- patrz poni¿ej tryb interakcyjny --- patrz poni¿ej
-s
pow³oka wczytuje komendy ze standardowego wej¶cia; wszelkie argumenty nie bêd±ce opcjami s± argumentami pozycyjnymi
-r
tryb ograniczony --- patrz poni¿ej

Ponadto wszelkie opcje, opisane w omówieniu wbudowanej komend± set, mog± równie¿ zostaæ u¿yte w linii poleceñ.

Je¶li nie zosta³a podana ani opcja -c, ani opcja -s, wówczas pierwszy argument nie bêd±cy opcj±, okre¶la plik, z którego zostan± wczytane komendy. Je¶li brak jest argumentów nie bêd±cych opcjami, to pow³oka wczytuje komendy ze standardowego wej¶cia. Nazwa pow³oki (tj. zawarto¶æ parametru $0) jest ustalana jak nastêpuje: je¶li u¿yto opcji -c i podano argument nie bêd±cy opcj±, to jest on nazw±; je¶li komendy s± wczytywane z pliku, wówczas nazwa tego pliku zostaje u¿yta jako nazwa pow³oki; w ka¿dym innym przypadku zostaje u¿yta nazwa, pod któr± pow³oka zosta³a wywo³ana (tzn. warto¶æ argv[0]).

Pow³oka jest interakcyjna, je¶li u¿yto opcji -i lub je¶li zarówno standardowe wej¶cie, jak i standardowe wyj¶cie b³êdów, jest skojarzone z jakim¶ terminalem. W interakcyjnej pow³oce kontrola zadañ (je¶li takowa jest dostêpna w danym systemie) jest w³±czona oraz ignorowane s± nastêpuj±ce sygna³y: INT, QUIT oraz TERM. Ponadto pow³oka wy¶wietla zachêtê przed odczytywaniem poleceñ (patrz parametry PS1 i PS2). Dla nieinterakcyjnych pow³ok, uaktywnia siê domy¶lnie opcja trackall (patrz poni¿ej: komenda set).

Pow³oka jest ograniczona, je¶li zastosowano opcjê -r lub gdy albo g³ówna czê¶æ nazwy (basename), pod jak± wywo³ano pow³okê, albo parametr SHELL, pasuj± do wzorca *r*sh (na przyk³ad: rsh, rksh, rpdksh itp.). Po przetworzeniu przez pow³okê wszystkich plików profili i $ENV w³±czane s± nastêpuj±ce ograniczenia:

  *
niedostêpna jest komenda cd
  *
nie mog± byæ zmieniane parametry: SHELL, ENV i PATH.
  *
nazwy poleceñ nie mog± byæ podawane z u¿yciem ¶cie¿ek bezwzglêdnych lub wzglêdnych [t³um.: tj. dostêpne s± tylko przez nazwê bez ¶cie¿ki]
  *
niedostêpna jest opcja -p wbudowanego polecenia command
  *
nie mog± byæ u¿ywane przekierowania tworz±ce pliki (np.: >, >|, >>, <>)

Pow³oka jest uprzywilejowana, je¶li zastosowano opcjê -p lub je¶li rzeczywisty identyfikator u¿ytkownika lub jego grupy nie jest zgodny z efektywnym identyfikatorem u¿ytkownika czy grupy (patrz: getuid(2), getgid(2)). Uprzywilejowana pow³oka nie przetwarza ani $HOME/.profile, ani parametru ENV (patrz poni¿ej), przetwarza za to plik /etc/suid_profile. Wykasowanie opcji uprzywilejowania powoduje, ¿e pow³oka ustawia swój efektywny identyfikator u¿ytkownika i grupy na warto¶ci faktycznego identyfikatora u¿ytkownika (user-id) i jego grupy (group-id).

Je¶li g³ówna czê¶æ nazwy, pod jak± dana pow³oka zosta³a wywo³ana (tzn. argv[0]) zaczyna siê od - lub u¿yto opcji -l, to zak³ada siê, ¿e pow³oka ma byæ pow³ok± zg³oszeniow± i wczytywana jest zawarto¶æ plików /etc/profile i $HOME/.profile, je¶li takie istniej± i mo¿na je odczytaæ.

Je¿eli parametr ENV jest ustawiony podczas uruchamiania pow³oki (albo w wypadku pow³ok zg³oszeniowych - po przetworzeniu dowolnych plików profilowych), to jego zawarto¶æ zostaje poddana zastêpowaniu. Zastêpowane s± parametry, komendy, wyra¿enia arytmetyczne oraz tylda. Nastêpnie wynikaj±ca z tej operacji nazwa jest interpretowana jako nazwa pliku, podlegaj±cego wczytaniu i wykonaniu. Je¶li parametr ENV jest pusty (i niezerowy), a pdksh zosta³ skompilowany ze zdefiniowanym makrem DEFAULT_ENV, to po wykonaniu wszelkich ju¿ wy¿ej wymienionych podstawieñ, zostaje wczytany plik okre¶lony tym makrem.

Kod wyj¶cia pow³oki wynosi 127, je¶li plik komend podany we linii wywo³ania nie móg³ zostaæ otwarty, lub kod wyj¶cia jest niezerowy, je¶li wyst±pi³ krytyczny b³±d sk³adni podczas wykonywania tego skryptu. W razie braku b³êdów krytycznych, kod wyj¶cia jest równy kodowi ostatnio wykonanej komendy lub zeru, je¶li nie wykonano ¿adnej komendy.

Sk³adnia poleceñ

Pow³oka rozpoczyna analizê sk³adniow± wej¶cia od podzia³u go na poszczególne s³owa word. S³owa, stanowi±ce ci±gi znaków, ograniczane s± niecytowanymi bia³ymi znakami whitespace (spacja, tabulator i nowa linia) lub metaznakami (<, >, |, ;, &, ( i )). Poza ograniczaniem s³ów spacje i tabulatory s± ignorowane. Natomiast znaki zmiany linii zwykle rozgraniczaj± komendy. Metaznaki stosowane s± do tworzenia nastêpuj±cych symboli: <, <&, <<, >, >&, >>, itd., s³u¿±cych do okre¶lania przekierowañ (patrz: "Przekierowywanie wej¶cia/wyj¶cia" poni¿ej); | s³u¿y do tworzenia potoków; |& s³u¿y do tworzenia koprocesów (patrz: "Koprocesy" poni¿ej); ; s³u¿y do oddzielania komend; & s³u¿y do tworzenia potoków asynchronicznych; && i || s³u¿± do okre¶lenia wykonania warunkowego; ;; jest u¿ywany w poleceniach case; (( .. )) s± u¿ywane w wyra¿eniach arytmetycznych; i w koñcu, ( .. ) s³u¿± do tworzenia podpow³ok.

Bia³e znaki lub metaznaki mo¿na zacytowywaæ pojedynczo przy u¿yciu znaku odwrotnego uko¶nika (\) lub grupami w podwójnych (") lub pojedynczych (') cudzys³owach. Zauwa¿, i¿ nastêpuj±ce znaki podlegaj± równie¿ specjalnej interpretacji przez pow³okê i musz± byæ cytowane, je¶li maj± byæ u¿yte dos³ownie: \, ", ', #, $, `, ~, {, }, *, ? i [. Pierwsze trzy to wy¿ej wspomniane symbole cytowania (patrz: "Cytowanie" poni¿ej); #, na pocz±tku s³owa rozpoczyna komentarz --- wszystko po znaku #, a¿ do koñca linii jest ignorowane; $ s³u¿y do wprowadzenia podstawienia parametru, komendy lub wyra¿enia arytmetycznego (patrz: "Podstawienia" poni¿ej); ` rozpoczyna podstawienia komendy w starym stylu (patrz: "Podstawienia" poni¿ej); ~ rozpoczyna rozwiniêcie katalogu (patrz: "Rozwijanie tyld" poni¿ej); { i } obejmuj± alternacje w stylu csh(1) (patrz: "Rozwijanie nawiasów" poni¿ej); i na koniec, *, ? oraz [ s± stosowane przy tworzeniu nazw plików (patrz: "Wzorce nazw plików" poni¿ej).

W trakcie analizy s³ów i symboli, pow³oka tworzy komendy, których wyró¿nia siê dwa rodzaje: komendy proste, zwykle programy do wykonania, oraz komendy z³o¿one, takie jak dyrektywy for i if, struktury grupuj±ce i definicje funkcji.

Polecenie proste sk³ada siê z kombinacji przyporz±dkowañ warto¶ci parametrom (patrz: "Parametry"), przekierowañ wej¶cia/wyj¶cia (patrz: "Przekierowania wej¶cia/wyj¶cia") i s³ów komend; Jedynym ograniczeniem jest to, ¿e wszelkie podstawienia warto¶ci parametrów musz± wystêpowaæ przed s³owami komend. S³owa komend, je¶li zosta³y podane, okre¶laj± polecenie, które nale¿y wykonaæ, wraz z jego argumentami. Komenda mo¿e byæ komend± wbudowan± pow³oki, funkcj± lub komend± zewnêtrzn±, tzn. oddzielnym plikiem wykonywalnym, który jest odnajdowany przy u¿yciu warto¶ci parametru PATH (patrz: "Wykonywanie komend" poni¿ej). Trzeba zauwa¿yæ, ¿e wszystkie komendy maj± swój kod zakoñczenia: dla poleceñ zewnêtrznych jest on powi±zany z kodem zwracanym przez wait(2) (je¶li komenda nie zosta³a odnaleziona, wówczas kod wynosi 127, natomiast je¶li nie mo¿na by³o jej wykonaæ, to kod wynosi 126). Kody zwracane przez inne polecenia (komendy wbudowane, funkcje, potoki, listy, itp.) s± precyzyjnie okre¶lone, a ich opis towarzyszy opisowi danego konstruktu. Kod wyj¶cia komendy zawieraj±cej jedynie przyporz±dkowania warto¶ci parametrom, odpowiada kodowi ostatniego wykonanego podczas tego podstawienia lub zeru, je¶li ¿adne podstawienia nie mia³y miejsca.

Przy pomocy symbolu | komendy mog± zostaæ powi±zane w potoki. W potokach standardowe wyj¶cie wszystkich komend poza ostatnim, zostaje wyprowadzone (patrz pipe(2)) na standardowe wej¶cie nastêpnej komendy. Kod wyj¶cia potoku jest równy kodowi zwróconemu przez ostatni± komendê potoku. Potok mo¿e zostaæ poprzedzony zarezerwowanym s³owem !, powoduj±cym zmianê kodu wyj¶cia na jego logiczne przeciwieñstwo. Tzn. je¶li pierwotnie kod wyj¶cia wynosi³ 0, to bêdzie on mia³ warto¶æ 1, natomiast je¶li pierwotn± warto¶ci± nie by³o 0, to kodem przeciwstawnym jest 0.

Listê komend tworzymy rozdzielaj±c potoki jednym z nastêpuj±cych symboli: &&, ||, &, |& i ;. Pierwsze dwa oznaczaj± warunkowe wykonanie: cmd1 && cmd2 wykonuje cmd2 tylko wtedy, je¿eli kod wyj¶cia cmd1 by³ zerowy. Natomiast || zachowuje siê dok³adnie odwrotnie. --- cmd2 zostaje wykonane jedynie, je¶li kod wyj¶cia cmd1 by³ ró¿ny od zera. && i || wi±¿± równowa¿nie, a zarazem mocniej ni¿ &, |& i ;, które z kolei równie¿ posiadaj± tê sam± si³ê wi±zania. Symbol & powoduje, ¿e poprzedzaj±ca go komenda zostanie wykonana asynchronicznie, tzn. pow³oka uruchamia dan± komendê, jednak nie czeka na jej zakoñczenie (pow³oka ¶ledzi dok³adnie wszystkie asynchroniczne komendy --- patrz: "Kontrola zadañ" poni¿ej). Je¶li komenda asynchroniczna jest uruchomiona przy wy³±czonej kontroli zadañ (tj. w wiêkszo¶ci skryptów), wówczas jest ona uruchamiana z wy³±czonymi sygna³ami INT i QUIT oraz przekierowanym wej¶ciem do /dev/null (aczkolwiek przekierowania, ustalone w samej komendzie asynchronicznej maj± tu pierwszeñstwo). Operator |& rozpoczyna koproces, stanowi±cy specjalnego rodzaju komendê asynchroniczn± (patrz: "Koprocesy" poni¿ej). Zauwa¿, ¿e po operatorach && i || musi wystêpowaæ komenda, podczas gdy nie jest to konieczne po &, |& i ;. Kodem wyj¶cia listy komend jest kod ostatniego wykonanego w niej polecenia, z wyj±tkiem list asynchronicznych, dla których kod wynosi 0.

Komendy z³o¿one tworzymy przy pomocy nastêpuj±cych s³ów zarezerwowanych --- s³owa te s± rozpoznane tylko wtedy, gdy nie s± zacytowane i wystêpuj± jako pierwsze wyrazy w komendzie (tj. nie s± poprzedzone ¿adnymi przyporz±dkowywaniami warto¶ci parametrom czy przekierowaniami):

case else function then !
do esac if time [[
done fi in until {
elif for select while }
Uwaga: Niektóre pow³oki (lecz nie nasza) wykonuj± polecenia steruj±ce w podpow³oce, gdy przekierowano jeden lub wiêcej z ich deskryptorów plików, tak wiêc wszelkiego rodzaju zmiany otoczenia w nich mog± nie dzia³aæ. Aby zachowaæ przeno¶no¶æ nale¿y stosowaæ polecenie exec do przekierowañ deskryptorów plików przed poleceniem steruj±cym.

W poni¿szym opisie poleceñ z³o¿onych, listy komend (zaznaczone przez lista), po których nastêpuje s³owo zarezerwowane, musz± koñczyæ siê ¶rednikiem, prze³amaniem wiersza lub (poprawnym gramatycznie) s³owem zarezerwowanym. Przyk³adowo,

{ echo foo; echo bar; }
{ echo foo; echo bar<newline>}
{ { echo foo; echo bar; } }
s± poprawne, natomiast
{ echo foo; echo bar }
nie.
( lista )
Wykonaj listê w podpow³oce. Nie ma bezpo¶redniej mo¿liwo¶ci przekazania warto¶ci parametrów podpow³oki z powrotem do jej pow³oki macierzystej.
{ lista }
Konstrukcja z³o¿ona; lista zostaje wykonana, lecz nie w podpow³oce. Zauwa¿, ¿e { i } to zarezerwowane s³owa, a nie metaznaki.
case s³owo in [ [(] wzorzec [| wzorzec] ... ) lista ;; ] ... esac
Wyra¿enie case stara siê dopasowaæ s³owo do jednego z danych wzorców; wykonywana jest lista powi±zana z pierwszym poprawnie dopasowanym wzorcem. Wzorce stosowane w wyra¿eniach case odpowiadaj± wzorcom stosowanym do specyfikacji nazw plików z wyj±tkiem tego, ¿e nie obowi±zuj± ograniczenia zwi±zane z . i /. Proszê zwróciæ uwagê na to, ¿e wszelkie niecytowane bia³e znaki przed wzorcem i po nim zostaj± usuniête; wszelkie spacje we wzorcu musz± byæ cytowane. Zarówno s³owa, jak i wzorce podlegaj± podstawieniom parametrów, rozwiniêciom arytmetycznym oraz podstawieniu tyldy. Ze wzglêdów historycznych, mo¿emy zastosowaæ nawiasy otwieraj±cy i zamykaj±cy zamiast in i esac (w szczególno¶ci wiêc, case $foo { *) echo bar; }). Kodem wyj¶cia wyra¿enia case jest kod wykonanej listy; je¶li nie zosta³a wykonana ¿adna lista, wówczas kod wyj¶cia wynosi zero.
for nazwa [ in s³owo ... zakoñczenie ] do lista done
gdzie zakoñczenie jest albo znakiem koñca linii, albo ;. Dla ka¿dego s³owa w podanej li¶cie s³ów, parametr nazwa zostaje ustawiony na to s³owo i lista zostaje wykonana. Je¿eli nie bêdzie u¿yte in do specyfikacji listy s³ów, to zamiast tego zostan± u¿yte parametry pozycyjne ("$1", "$2", itp.). Ze wzglêdów historycznych, mo¿emy zastosowaæ nawiasy otwieraj±cy i zamykaj±cy zamiast do i done (w szczególno¶ci, for i; { echo $i; }). Kodem wyj¶cia wyra¿enia for jest ostatni kod wyj¶cia danej listy; je¶li lista nie zosta³a w ogóle wykonana, wówczas kod wynosi zero.
if lista then lista [elif lista then lista] ... [else lista] fi
Je¶li kod wyj¶cia pierwszej listy jest zerowy, to zostaje wykonana druga lista; w przeciwnym razie, je¶li mamy takow±, zostaje wykonana lista po elif, z podobnymi konsekwencjami. Je¶li wszystkie listy po if i elif wyka¿± b³±d (tzn. zwróc± niezerowy kod), to zostanie wykonana lista po else. Kodem wyj¶cia wyra¿enia if jest kod wykonanej listy, niestanowi±cej warunku. Je¶li ¿adna nieokre¶laj±ca warunku lista nie zostanie wykonana, wówczas kod wyj¶cia wynosi zero.
select nazwa [ in s³owo ... zakoñczenie ] do lista done
gdzie zakoñczenie jest albo prze³amaniem wiersza, albo ;. Wyra¿enie select umo¿liwia automatyczn± prezentacjê u¿ytkownikowi menu, wraz z mo¿liwo¶ci± wyboru z niego. Przeliczona lista wykazanych s³ów zostaje wypisana na standardowym wyj¶ciu b³êdów, po czym zostaje wy¶wietlony symbol zachêty (PS3, czyli domy¶lnie `#? '). Nastêpnie zostaje wczytana liczba odpowiadaj±ca danemu punktowi menu ze standardowego wej¶cia, po czym nazwie zostaje przyporz±dkowane w ten sposób wybrane s³owo (lub warto¶æ pusta, je¿eli wybór by³ niew³a¶ciwy), zmiennej REPLY zostaje przyporz±dkowane to, co zosta³o wczytane (po usuniêciu pocz±tkowych i koñcowych bia³ych znaków), i lista zostaje wykonana. Je¶li wprowadzono pust± liniê (dok³adniej: zero lub wiêcej znaczków IFS), wówczas menu zostaje ponownie wy¶wietlone, bez wykonywania listy. Gdy wykonanie listy zostaje zakoñczone, wówczas przeliczona lista wyborów zostaje wy¶wietlona ponownie, je¶li REPLY jest zerowe, ponownie wy¶wietlany jest symbol zachêty i tak dalej. Proces ten siê powtarza, a¿ do wczytania znaku koñca pliku, otrzymania sygna³u przerwania lub wykonania polecenia przerwania (break) w ¶rodku pêtli. Je¶li opuszczono in s³owo ..., wówczas u¿yte zostaj± parametry pozycyjne (tzn., "$1", "$2", itp.). Ze wzglêdów historycznych, mo¿emy zastosowaæ nawiasy otwieraj±cy i zamykaj±cy zamiast do i done (w szczególno¶ci, select i; { echo $i; }). Kodem wyj¶cia wyra¿enia select jest zero, je¶li u¿yto polecenia przerwania do wyj¶cia z pêtli albo niezero w przeciwnym wypadku.
until lista do lista done
Dzia³a dok³adnie jak while, z wyj±tkiem tego, ¿e zawarto¶æ pêtli jest wykonywana jedynie wtedy, gdy kod wyj¶cia pierwszej listy jest niezerowy.
while lista do lista done
Wyra¿enie while okre¶la pêtlê o warunku sprawdzanym przed wykonaniem. Zawarto¶æ pêtli jest wykonywana dopóki, dopóty kod wyj¶cia pierwszej listy jest zerowy. Kodem wyj¶cia wyra¿enia while jest ostatni kod wyj¶cia listy w zawarto¶ci tej pêtli; gdy zawarto¶æ nie zostanie w ogóle wykonana, wówczas kod wynosi zero.
function nazwa { lista }
Definiuje funkcjê o nazwie nazwa. Patrz: "Funkcje" poni¿ej. Proszê zwróciæ uwagê, ¿e przekierowania tu¿ po definicji funkcji zostaj± zastosowane podczas wykonywania jej zawarto¶ci, a nie podczas przetwarzania jej definicji.
nazwa () polecenie
Niemal dok³adnie to samo co w function. Patrz: "Funkcje" poni¿ej.
(( wyra¿enie ))
Warto¶æ wyra¿enia arytmetycznego wyra¿enie zostaje przeliczona; równowa¿ne do let "wyra¿enie". patrz: "Wyra¿enia arytmetyczne" i opis polecenia let poni¿ej..
[[ expression ]]
Podobne do komend test i [ ... ] (które opisujemy pó¼niej), z nastêpuj±cymi ró¿nicami:
  *
Rozdzielanie pól i generacja nazw plików nie s± wykonywane na argumentach.
  *
Operatory -a (i) oraz -o (lub) zostaj± zast±pione odpowiednio przez && i ||.
  *
Operatory (dok³adniej: -f, =, !, itp.) nie mog± byæ cytowane.
  *
Drugi operand dla != i = jest traktowany jako wzorzec (w szczególno¶ci, porównanie
[[ foobar = f*r ]]
jest sukcesem).
  *
Mamy do dyspozycji dwa dodatkowe operatory binarne: < i >, które zwracaj± prawdê, gdy pierwszy ³añcuchowy operand jest odpowiednio mniejszy lub wiêkszy od drugiego operandu ³añcuchowego.
  *
Jednoargumentowa postaæ operacji test, która sprawdza, czy jedyny operand jest d³ugo¶ci zerowej, jest niedozwolona - operatory zawsze muszê byæ wykazywane jawnie, w szczególno¶ci, zamiast
[ ci±g ]
nale¿y u¿yæ
[[ -n ci±g ]]
  *
Podstawienia parametrów, komend i arytmetyczne zostaj± wykonane w trakcie wyliczania wyra¿enia. Do operatorów && i || stosowana jest metoda uproszczonego okre¶lania ich warto¶ci. To znaczy, ¿e w wyra¿eniu
[[ -r foo && $(< foo) = b*r ]]
warto¶æ $(< foo) zostaje wyliczona wtedy i tylko wtedy, gdy plik o nazwie foo istnieje i jest czytelny.

Cytowanie

Cytowanie stosuje siê do zapobiegania traktowaniu przez pow³okê pewnych znaków czy s³ów w specjalny sposób. Istniej± trzy metody cytowania: Po pierwsze, \ cytuje nastêpny znak, chyba ¿e mie¶ci siê on na koñcu wiersza, wówczas zarówno \ jak i znak nowej linii zostaj± usuniête. Po drugie pojedynczy cudzys³ów (') wycytowywuje wszystko, a¿ po nastêpny pojedynczy cudzys³ów (wraz ze zmianami linii w³±cznie). Po trzecie, podwójny cudzys³ów (") wycytowywuje wszystkie znaki, poza $, ` i \, a¿ po nastêpny niecytowany podwójny cudzys³ów. $ i ` wewn±trz podwójnych cudzys³owów zachowuj± zwyk³e znaczenie (tzn. oznaczaj± podstawienie warto¶ci parametru, komendy lub wyra¿enia arytmetycznego), je¶li tylko nie zostanie wykonany jakikolwiek podzia³ pól na wyniku podwójnymi cudzys³owami wycytowanych podstawieñ. Je¶li po \, wewn±trz ci±gu znaków cytowanego podwójnymi cudzys³owami nastêpuje \, $, ` lub ", to zostaje on zast±piony drugim z tych znaków. Je¶li po nim nastêpuje znak nowej linii, wówczas zarówno \, jak i znak zmiany linii zostaj± usuniête; w przeciwnym razie zarówno znak \, jak i nastêpuj±cy po nim znak nie podlegaj± ¿adnej zamianie.

Uwaga: patrz "Tryb POSIX" poni¿ej pod wzglêdem szczególnych regu³ obowi±zuj±cych sekwencje znaków postaci "...`...\"...`..".

Aliasy

Istniej± dwa rodzaje aliasów: normalne aliasy komend i aliasy ¶ledzone. Aliasy komend stosowane s± zwykle jako skróty dla d³ugich a czêsto stosowanych komend. Pow³oka rozwija aliasy komend (tzn. podstawia pod nazwê aliasu jego zawarto¶æ), gdy wczytuje pierwsze s³owo komendy. Rozwiniêty alias zostaje ponownie przetworzony, aby uwzglêdniæ ewentualne wystêpowanie dalszych aliasów. Je¶li alias komendy koñczy siê spacj± lub tabulatorem, to wówczas nastêpne s³owo zostaje równie¿ sprawdzone pod wzglêdem rozwiniêcia aliasów. Proces rozwijania aliasów koñczy siê przy napotkaniu s³owa, które nie jest aliasem, gdy napotka siê wycytowane s³owo, lub gdy napotka siê alias, który jest w³a¶nie eksportowany.

Nastêpuj±ce aliasy s± definiowane domy¶lnie przez pow³okê:

autoload='typeset -fu'
functions='typeset -f'
hash='alias -t'
history='fc -l'
integer='typeset -i'
local='typeset'
login='exec login'
newgrp='exec newgrp'
nohup='nohup '
r='fc -e -'
stop='kill -STOP'
suspend='kill -STOP $$'
type='whence -v'

¦ledzone aliasy pozwalaj± pow³oce na zapamiêtanie, gdzie odnalaz³a ona konkretn± komendê. Gdy pow³oka po raz pierwszy szuka w ¶cie¿ce pocenia oznaczonego jako alias ¶ledzony, to zapamiêtuje sobie pe³n± ¶cie¿kê tej komendy. Gdy pow³oka nastêpnie wykonuje dan± komendê po raz drugi, wówczas sprawdza, czy ta ¶cie¿ka jest nadal aktualna i je¶li tak jest, to nie przegl±da ju¿ wiêcej pe³nej ¶cie¿ki w poszukiwaniu danej komendy. ¦ledzone aliasy mo¿na wy¶wietliæ lub stworzyæ stosuj±c alias -t. Zauwa¿, ¿e zmieniaj±c warto¶æ parametru PATH czy¶cimy równie¿ ¶cie¿ki dla wszelkich ¶ledzonych aliasów. Je¶li zosta³a w³±czona opcja trackall (tzn., set -o trackall lub set -h), wówczas pow³oka ¶ledzi wszelkie komendy. Ta opcja zostaje w³±czona domy¶lnie dla wszelkich nieinterakcyjnych pow³ok. Dla pow³ok interakcyjnych jedynie nastêpuj±ce komendy s± ¶ledzone domy¶lnie: cat, cc, chmod, cp, date, ed, emacs, grep, ls, mail, make, mv, pr, rm, sed, sh, vi i who.

Podstawienia

Pierwszym krokiem, jaki wykonuje pow³oka podczas wykonywania prostej komendy, jest przeprowadzenia podstawieñ na s³owach tej komendy. Istniej± trzy rodzaje podstawieñ: parametrów, komend i arytmetyczne. Podstawienia parametrów, które dok³adniej opiszemy w nastêpnej sekcji, maj± postaæ $name lub ${...}; podstawienia komend maj± postaæ $(command) lub `command`; a podstawienia arytmetyczne: $((expression)).

Je¶li podstawienie wystêpuje poza podwójnymi cudzys³owami, wówczas wynik tego podstawienia podlega zwykle podzia³owi s³ów lub pól, w zale¿no¶ci od bie¿±cej warto¶ci parametru IFS. Parametr IFS okre¶la listê znaków, s³u¿±cych jako separatory w podziale ³añcuchów znakowych na pojedyncze wyrazy. Wszelkie znaki z tego zestawu oraz tabulator, spacja i nowa linia w³±cznie, nazywane s± bia³ymi znakami IFS. Ci±gi jednego lub wielu bia³ych znaków z IFS w powi±zaniu z zerem oraz jednym lub wiêcej bia³ych znaków nie wymienionych w IFS, rozgraniczaj± pola. Wyj±tkowo pocz±tkowe i koñcowe bia³e znaki IFS s± usuwane (tzn. nie s± przez nie tworzone ¿adne pocz±tkowe czy koñcowe puste pola); natomiast pocz±tkowe lub koñcowe bia³e znaki spoza IFS tworz± puste pola. Przyk³adowo: je¶li IFS zawiera `<spacja>:', to ci±g znaków `<spacja>A<spacja>:<spacja><spacja>B::D' zawiera cztery pola: `A', `B', `' i `D'. Proszê zauwa¿yæ, ¿e je¶li parametr IFS jest ustawiony na pusty ci±g znaków, to wówczas ¿aden podzia³ pól nie ma miejsca; gdy parametr ten nie jest ustawiony w ogóle, wówczas stosuje siê domy¶lnie jako rozgraniczniki spacji, tabulatora i nowej linii.

Je¶li nie podajemy inaczej, to wynik podstawienia podlega równie¿ rozwijaniu nawiasów i nazw plików (patrz odpowiednie akapity poni¿ej).

Podstawienie komendy zostaje zast±pione wyj¶ciem, wygenerowanym podczas wykonania danej komendy przez podpow³okê. Dla podstawienia $(komenda) zachodz± normalne regu³y cytowania podczas analizy komendy, choæ jednak dla postaci `komenda`, znak \ z jednym z $, ` lub \ tu¿ po nim, zostaje usuniêty (znak \ z nastêpstwem jakiegokolwiek innego znaku zostaje niezmieniony). Jako przypadek wyj±tkowy podczas podstawiania komend, komenda postaci < plik zostaje zinterpretowana, jako oznaczaj±ca podstawienie zawarto¶ci pliku plik ($(< foo) ma wiêc ten sam efekt co $(cat foo), jest jednak bardziej efektywne albowiem nie zostaje odpalony ¿aden dodatkowy proces).
UWAGA: Wyra¿enia $(komenda) s± analizowane obecnie poprzez odnajdywanie zaleg³ego nawiasu, niezale¿nie od wycytowañ. Miejmy nadziejê, ¿e zostanie to mo¿liwie szybko poprawione.

Podstawienia arytmetyczne zostaj± zast±pione warto¶ci± wyniku danego wyra¿enia. Przyk³adowo wiêc, komenda echo $((2+3*4)) wy¶wietla 14. Patrz: "Wyra¿enia arytmetyczne", aby odnale¼æ opis wyra¿eñ.

Parametry

Parametry to zmienne w pow³oce; mo¿na im przyporz±dkowywaæ warto¶ci oraz wyczytywaæ je przez podstawienia parametrów. Nazwa parametru jest albo jednym ze znaków interpunkcyjnych o specjalnym znaczeniu lub cyfr±, jakie opisujemy poni¿ej, lub liter± z nastêpstwem jednej lub wiêcej liter albo cyfr (`_' zalicza siê to liter). Podstawienia parametrów maj± postaæ $nazwa lub ${nazwa}, gdzie nazwa jest nazw± danego parametru. Gdy podstawienie zostanie wykonane na parametrze, który nie zosta³ ustalony, wówczas zerowy ci±g znaków jest jego wynikiem, chyba ¿e zosta³a w³±czona opcja nounset (set -o nounset lub set -u), co oznacza, ¿e wystêpuje wówczas b³±d.

Warto¶ci mo¿na przyporz±dkowywaæ parametrom na wiele ró¿nych sposobów. Po pierwsze, pow³oka domy¶lnie ustala pewne parametry, takie jak #, PWD, itp.; to jedyny sposób, w jaki s± ustawiane specjalnymi parametry o d³ugo¶ci jednego znaku. Po drugie, parametry zostaj± importowane z otocznia pow³oki podczas jej uruchamiania. Po trzecie, parametrom mo¿na przypisaæ warto¶ci w wierszu poleceñ, tak jak np. `FOO=bar' przypisuje parametrowi FOO warto¶æ bar; wielokrotne przypisania warto¶ci s± mo¿liwe w jednym wierszu komendy i mo¿e po nich wystêpowaæ prosta komenda, co powoduje, ¿e przypisania te s± wówczas jedynie aktualne podczas wykonywania danej komendy (tego rodzaju przypisania zostaj± równie¿ wyeksportowane, patrz poni¿ej, co do tego konsekwencji). Proszê zwróciæ uwagê, i¿ aby pow³oka rozpozna³a je jako przypisanie warto¶ci parametrowi, zarówno nazwa parametru jak i = nie mog± byæ cytowane. Czwartym sposobem ustawiania parametrów jest zastosowanie jednej z komend: export, readonly lub typeset; patrz ich opisy w rozdziale "Wykonywanie komend". Po czwarte, pêtle for i select ustawiaj± parametry, tak jak i równie¿ komendy getopts, read i set -A. Na zakoñczenie, parametrom mo¿na przyporz±dkowywaæ warto¶ci stosuj±c operatory nadania warto¶ci wewn±trz wyra¿eñ arytmetycznych (patrz: "Wyra¿enia arytmetyczne" poni¿ej) lub stosuj±c postaæ ${nazwa=warto¶æ} podstawienia parametru (patrz poni¿ej).

Parametry opatrzone atrybutem eksportowania (ustawianego przy pomocy komendy export lub typeset -x albo przez przyporz±dkowanie warto¶ci parametru z nastêpuj±c± prost± komend±) zostaj± umieszczone w otoczeniu (patrz environ(5)) poleceñ wykonywanych przez pow³okê jako pary nazwa=warto¶æ. Kolejno¶æ, w jakiej parametry wystêpuj± w otoczeniu komendy jest bli¿ej nieustalona. Podczas uruchamiania pow³oka pozyskuje parametry ze swojego otoczenia i automatycznie ustawia na tych parametrach atrybut eksportowania.

Mo¿na stosowaæ modyfikatory do postaci ${nazwa} podstawienia parametru:

${nazwa:-s³owo}
je¿eli parametrnazwa jest ustawiony i niezerowy, wówczas zostaje podstawiona jego w³asna warto¶æ, w przeciwnym razie zostaje podstawione s³owo.
${nazwa:+s³owo}
je¶li parametr nazwa jest ustawiony i niezerowy, wówczas zostaje podstawione s³owo, inaczej nic nie zostaje podstawione.
${nazwa:=s³owo}
je¶li parametr nazwa jest ustawiony i niezerowy, wówczas zostaje podstawiony on sam, w przeciwnym razie zostaje mu przyporz±dkowana warto¶æ s³owo i warto¶æ wynikaj±ca ze s³owa zostaje podstawiona.
${nazwa:?s³owo}
je¿eli parametr nazwa jest ustawiony i niezerowy, wówczas zostaje podstawiona jego w³asna warto¶æ, w przeciwnym razie s³owo zostaje wy¶wietlone na standardowym wyj¶ciu b³êdów (tu¿ po nazwa:) i zachodzi b³±d (powoduj±cy normalnie zakoñczenie ca³ego skryptu pow³oki, funkcji lub .-skryptu). Je¶li s³owo zosta³o pominiête, wówczas zamiast niego zostaje u¿yty ³añcuch `parameter null or not set'.

W powy¿szych modyfikatorach mo¿emy omin±æ :, czego skutkiem bêdzie, ¿e warunki bêd± jedynie wymagaæ, aby nazwa by³ ustawiony lub nie (a nie ¿eby by³ ustawiony i niezerowy). Je¶li potrzebna jest warto¶æ s³owo, wówczas zostaj± na nim wykonane podstawienia parametrów, komend, arytmetyczne i tyldy; natomiast, je¶li s³owo oka¿e siê niepotrzebne, wówczas jego warto¶æ nie zostanie obliczana.

Mo¿na stosowaæ, równie¿ podstawienia parametrów o nastêpuj±cej postaci:

${#nazwa}
Liczba parametrów pozycyjnych, je¶li nazw± jest *, @ lub nie jest podana albo d³ugo¶æ ci±gu bêd±cego warto¶ci± parametru nazwa.
${#nazwa[*]}, ${#nazwa[@]}
Liczba elementów w tablicy nazwa.
${nazwa#wzorzec}, ${nazwa##wzorzec}
Gdy wzorzec nak³ada siê na pocz±tek warto¶ci parametru nazwa, wówczas pasuj±cy tekst zostaje pominiêty w wynikaj±cym z tego podstawieniu. Pojedynczy # oznacza najkrótsze mo¿liwe dopasowanie do wzorca, a dwa # oznaczaj± jak najd³u¿sze dopasowanie.
${nazwa%wzorzec}, ${nazwa%%wzorzec}
Podobnie jak w podstawieniu ${..#..}, tylko ¿e dotyczy koñca warto¶ci.

Nastêpuj±ce specjalne parametry zostaj± ustawione domy¶lnie przez pow³okê i nie mo¿na przyporz±dkowywaæ jawnie warto¶ci nadanych:

!
Id ostatniego uruchomionego w tle procesu. Je¶li nie ma aktualnie procesów uruchomionych w tle, wówczas parametr ten jest nieustawiony.
#
Liczba parametrów pozycyjnych (tzn., $1, $2, itp.).
$
ID procesu odpowiadaj±cego danej pow³oce lub PID pierwotnej pow³oki, je¶li mamy do czynienia z podpow³ok±.
-
Konkatenacja bie¿±cych opcji jednoliterowych (patrz komenda set poni¿ej, aby poznaæ dostêpne opcje).
?
Kod wyj¶cia ostatniej wykonanej komendy nieasynchronicznej. Je¶li ostatnia komenda zosta³a zabita sygna³em, wówczas $? przyjmuje warto¶æ 128 plus numer danego sygna³u.
0
Nazwa, pod jak± dana pow³oka zosta³a wywo³ana (tzn., argv[0]), lub nazwa komendy, która zosta³a wywo³ana przy u¿yciu opcji -c i nazwa komendy zosta³a podana, lub argument plik, je¶li taki zosta³ podany. Je¶li opcja posix nie jest ustawiona, to $0 zawiera nazwê bie¿±cej funkcji lub skryptu.
1 ... 9
Pierwszych dziewiêæ parametrów pozycyjnych podanych pow³oce czy funkcji lub .-skryptowi. Dostêp do dalszych parametrów pozycyjnych odbywa siê przy pomocy ${liczba}.
*
Wszystkie parametry pozycyjne (z wyj±tkiem parametru 0), tzn., $1 $2 $3.... Gdy u¿yte poza podwójnymi cudzys³owami, wówczas parametry zostaj± rozgraniczone w pojedyncze s³owa (podlegaj±ce rozgraniczaniu s³ów); je¶li u¿yte pomiêdzy podwójnymi cudzys³owami, wówczas parametry zostaj± rozgraniczone pierwszym znakiem podanym przez parametr IFS (albo pustymi ci±gami znaków, je¶li IFS jest zerowy).
@
Tak jak $*, z wyj±tkiem zastosowania w podwójnych cudzys³owach, gdzie oddzielne s³owo zostaje wygenerowane dla ka¿dego parametru pozycyjnego z osobna - je¶li brak parametrów pozycyjnych, wówczas nie generowane jest ¿adne s³owo ("$@" mo¿e byæ u¿yte aby otrzymaæ dostêp bezpo¶redni do argumentów bez utraty argumentów zerowych lub rozgraniczania ich przerwami).

Nastêpuj±ce parametry s± ustawiane przez pow³okê:

_ (podkre¶lenie)
Gdy jaka¶ komenda zostaje wykonywana przez pow³okê, ten parametr przyjmuje w otoczeniu odpowiedniego nowego procesu warto¶æ ¶cie¿ki tej komendy. W interakcyjnym trybie pracy, ten parametr przyjmuje w pierwotnej pow³oce ponadto warto¶æ ostatniego s³owa poprzedniej komendy Podczas warto¶ciowania wiadomo¶ci typu MAILPATH, parametr ten zawiera wiêc nazwê pliku, który siê zmieni³ (patrz parametr MAILPATH poni¿ej).
CDPATH
¦cie¿ka przeszukiwania dla wbudowanej komendy cd. Dzia³a tak samo jak PATH dla katalogów nierozpoczynaj±cych siê od / w komendach cd. Proszê zwróciæ uwagê, ¿e je¶li CDPATH jest ustawiony i nie zawiera ani . ani ¶cie¿ki pustej, to wówczas katalog bie¿±cy nie jest przeszukiwany.
COLUMNS
Liczba kolumn terminala lub okienka. Obecnie ustawiany warto¶ci± cols zwracan± przez komendê stty(1), je¶li ta warto¶æ nie jest równa zeru. Parametr ten ma znaczenie w interakcyjnym trybie edycji wiersza komendy i dla komend select, set -o oraz kill -l, w celu w³a¶ciwego formatowania zwracanych informacji.
EDITOR
Je¶li nie zosta³ ustawiony parametr VISUAL, wówczas kontroluje on tryb edycji wiersza komendy w pow³okach interakcyjnych. Patrz parametr VISUAL poni¿ej, aby siê dowiedzieæ, jak to dzia³a.
ENV
Je¶li parametr ten oka¿e siê byæ ustawionym po przetworzeniu wszelkich plików profilowych, wówczas jego rozwiniêta warto¶æ zostaje wykorzystana jako nazwa pliku zawieraj±cego dalsze komendy inicjuj±ce pow³oki. Zwykle zawiera definicje funkcji i aliasów.
ERRNO
Ca³kowita warto¶æ odpowiadaj±ca zmiennej errno pow³oki --- wskazuje przyczynê wyst±pienia b³êdu, gdy ostatnie wywo³anie systemowe nie powiod³o siê.

Jak dotychczas niezaimplementowane.

EXECSHELL
Je¶li ustawiono, to wówczas zawiera pow³okê, jakiej nale¿y u¿yæ do wykonywania komend, których nie zdo³a³ wykonaæ execve(2), a które nie zaczynaj± siê od ci±gu `#! pow³oka'.
FCEDIT
Edytor u¿ywany przez komendê fc (patrz poni¿ej).
FPATH
Podobnie jak PATH, je¶li pow³oka natrafi na niezdefiniowan± funkcjê podczas pracy, stosowane do lokalizacji pliku zawieraj±cego definicjê tej funkcji. Równie¿ przeszukiwane, gdy komenda nie zosta³a odnaleziona przy u¿yciu PATH. Patrz "Funkcje" poni¿ej co do dalszych informacji.
HISTFILE
Nazwa pliku u¿ywanego do zapisu historii komend. Je¶li warto¶æ zosta³a ustalona, wówczas historia zostaje za³adowana z danego pliku. Podobnie wielokrotne wcielenia pow³oki bêd± korzysta³y z jednej historii, je¶li dla nich warto¶ci parametru HISTFILE wskazuje na jeden i ten sam plik.
UWAGA: je¶li HISTFILE nie zosta³o ustawione, wówczas ¿aden plik historii nie zostaje u¿yty. W oryginalnej wersji pow³oki Korna natomiast, przyjmuje siê domy¶lnie $HOME/.sh_history; w przysz³o¶ci mo¿e pdksh, bêdzie równie¿ stosowa³ domy¶lny plik historii.
HISTSIZE
Liczba komend zapamiêtywana w historii, domy¶lnie 128.
HOME
Domy¶lna warto¶æ dla komendy cd oraz podstawiana pod niewycytowane ~ (patrz: "Rozwijanie tyldy" poni¿ej).
IFS
Wewnêtrzny separator pól, stosowany podczas podstawieñ i wykonywania komendy read, do rozdzielania warto¶ci na oddzielne argumenty; domy¶lnie spacja, tabulator i prze³amanie wiersza. Szczegó³y zosta³y opisane w punkcie "Podstawienia" powy¿ej.
Uwaga: ten parametr nie jest importowany z otoczenia, podczas uruchamiania pow³oki.
KSH_VERSION
Wersja i data kompilacji pow³oki (tylko do odczytu). Patrz równie¿ na komendy wersji w "Interakcyjnej edycji wiersza poleceñ w trybie emacs" i "Edycji wiersza poleceñ vi" poni¿ej.
LINENO
Numer wiersza w funkcji lub aktualnie wykonywanym skrypcie.
LINES
Ilo¶æ wierszy terminala lub okienka pracy.

Jeszcze niezaimplementowane.

MAIL
Je¶li ustawiony, to u¿ytkownik jest informowany o nadej¶ciu nowej poczty do wymienionego w tej opcji pliku docelowego. Ten parametr jest ignorowany, je¶li zosta³ ustawiony parametr MAILPATH.
MAILCHECK
Jak czêsto pow³oka ma sprawdzaæ, czy pojawi³a siê nowa poczta w plikach podanych przez MAIL lub MAILPATH. Je¶li 0, to pow³oka sprawdza przed ka¿d± now± zachêt±. Warto¶ci± domy¶ln± jest 600 (10 minut).
MAILPATH
Lista plików sprawdzanych w poszukiwaniu nowej poczty. Lista ta rozdzielana jest dwukropkami, ponadto po nazwie ka¿dego z plików mo¿na podaæ ? i wiadomo¶æ, która ma byæ wy¶wietlona, je¶li nadesz³a nowa poczta. Dla danej wiadomo¶ci zostan± wykonane podstawienia komend, parametrów i arytmetyczne. Podczas podstawieñ parametr $_ zawiera nazwê tego pliku. Domy¶lnym zawiadomieniem o nowej poczcie jest you have mail in $_ (masz pocztê w $_).
OLDPWD
Poprzedni katalog roboczy. Nieustalony, je¶li cd nie zmieni³o z powodzeniem katalogu od czasu uruchomienia pow³oki lub je¶li pow³oka nie wie, gdzie siê aktualnie znajduje.
OPTARG
Podczas u¿ywania getopts zawiera argument dla aktualnie rozpoznawanej opcji, je¶li jest on oczekiwany.
OPTIND
Indeks ostatniego przetworzonego argumentu podczas u¿ywania getopts. Przyporz±dkowanie 1 temu parametrowi spowoduje, ¿e ponownie wywo³ane getopts przetworzy argumenty od pocz±tku.
PATH
Lista rozdzielonych dwukropkiem katalogów, które s± przeszukiwane podczas odnajdywania jakiej¶ komendy lub plików typu .. Pusty ³añcuch wynikaj±cy z pocz±tkowego lub koñcowego dwukropka, albo dwóch s±siednich dwukropków jest traktowany jako `.', czyli katalog bie¿±cy.
POSIXLY_CORRECT
Ustawienie tego parametru powoduje w³±czenie opcji posix. Patrz: "Tryb POSIX" poni¿ej.
PPID
Identyfikator ID procesu rodzicielskiego pow³oki (tylko do odczytu).
PS1
PS1 to podstawowy symbol zachêty dla pow³ok interakcyjnych. Podlega podstawieniom parametrów, komend i arytmetycznym, ponadto ! zostaje zast±pione kolejnym numerem polecenia (patrz komenda fc poni¿ej). Sam znak ! mo¿e zostaæ umieszczony w zachêcie u¿ywaj±c !! w PS1. Zauwa¿, ¿e poniewa¿ edytory wiersza komendy staraj± siê obliczyæ, jak d³ugi jest symbol zachêty (aby móc ustaliæ, ile miejsca pozostaje wolnego do prawego brzegu ekranu), sekwencje wyj¶ciowe w zachêcie zwykle wprowadzaj± pewien ba³agan. Istnieje mo¿liwo¶æ podpowiedzenia pow³oce, ¿eby nie uwzglêdnia³a pewnych ci±gów znaków (takich jak kody wyj¶cia) przez podanie przedrostka na pocz±tku symbolu zachêty bêd±cego niewy¶wietlalnym znakiem (takim jak np. control-A) z nastêpstwem prze³amania wiersza oraz odgraniczaj±c nastêpnie kody wyj¶cia przy pomocy tego niewy¶wietlalnego znaku. Gdy brak niewy¶wietlalnych znaków, to nie ma ¿adnej rady... Nawiasem mówi±c, nie ja jestem odpowiedzialny za ten hack. To pochodzi z oryginalnego ksh. Domy¶ln± warto¶ci± jest `' dla nieuprzywilejowanych u¿ytkowników, a `' dla roota..
PS2
Drugorzêdna zachêta, o domy¶lnej warto¶ci `> ', która jest stosowana, gdy wymagane s± dalsze wprowadzenia w celu dokoñczenia komendy.
PS3
Zachêta stosowana przez wyra¿enie select podczas wczytywania wyboru z menu. Domy¶lnie `#? '.
PS4
Stosowany jako przedrostek komend, które zostaj± wy¶wietlone podczas ¶ledzenia toku pracy (patrz polecenie set -x poni¿ej). Domy¶lnie `'.
PWD
Obecny katalog roboczy. Mo¿e byæ nieustawiony lub zerowy, je¶li pow³oka nie wie, gdzie siê znajduje.
RANDOM
Prosty generator liczb pseudolosowych. Za ka¿dym razem, gdy odnosimy siê do RANDOM, jego warto¶ci zostaje przyporz±dkowana nastêpna liczba z przypadkowego ci±gu liczb. Miejsce w danym ci±gu mo¿e zostaæ ustawione nadaj±c warto¶æ RANDOM (patrz rand(3)).
REPLY
Domy¶lny parametr komendy read, je¶li nie pozostan± podane jej ¿adne nazwy. Stosowany równie¿ w pêtlach select do zapisu warto¶ci wczytywanej ze standardowego wej¶cia.
SECONDS
Liczba sekund, które up³ynê³y od czasu uruchomienia pow³oki lub je¶li parametrowi zosta³a nadana warto¶æ ca³kowita, liczba sekund od czasu nadania tej warto¶ci plus ta warto¶æ.
TMOUT
Gdy ustawiony na pozytywn± warto¶æ ca³kowit±, wiêksz± od zera, wówczas ustala w interakcyjnej pow³oce czas w sekundach, przez jaki bêdzie ona czeka³a na wprowadzenie jakiego¶ polecenia po wy¶wietleniu podstawowego symbolu zachêty (PS1). Po przekroczeniu tego czasu pow³oka zakoñczy swoje dzia³anie.
TMPDIR
Katalog, w którym umieszczane s± tymczasowe pliki pow³oki. Je¶li parametr ten nie jest ustawiony lub gdy nie zawiera pe³nej ¶cie¿ki do zapisywalnego katalogu, wówczas domy¶lnie tymczasowe pliki mieszcz± siê w /tmp.
VISUAL
Je¶li zosta³ ustawiony, ustala tryb edycji wiersza komend w pow³okach interakcyjnych. Je¶li ostatni element ¶cie¿ki podanej w tym parametrze zawiera ci±g znaków vi, emacs lub gmacs, to odpowiednio zostaje uaktywniony tryb edycji: vi, emacs lub gmacs (Gosling emacs).

Rozwijanie tyldy

Rozwijanie znaków tyldy, które ma miejsce równolegle do podstawieñ parametrów, zostaje wykonane na s³owach rozpoczynaj±cych siê niecytowanym ~. Znaki po tyldzie do pierwszego /, je¶li taki wystêpuje, s± domy¶lnie traktowane jako nazwa u¿ytkownika. Je¶li nazwa u¿ytkownika jest pusta lub ma warto¶æ + albo -, to zostaje podstawiona warto¶æ parametrów odpowiednioHOME, PWD lub OLDPWD. W przeciwnym razie zostaje przeszukany plik hase³ (plik passwd) w celu odnalezienia danej nazwy u¿ytkownika i w miejscu wyst±pienia tyldy zostaje podstawiony katalog domowy danego u¿ytkownika. Je¶li nazwa u¿ytkownika nie zostanie odnaleziona w pliku hase³ lub gdy w nazwie u¿ytkownika wystêpuje jakiekolwiek cytowanie albo podstawienie parametru, wówczas nie zostaje wykonane ¿adne podstawienie.

W ustawieniach parametrów (tych poprzedzaj±cych proste komendy lub tych wystêpuj±cych w argumentach dla alias, export, readonly, i typeset), rozwijanie znaków tyld zostaje wykonywane po jakimkolwiek niewycytowanym (:) i nazwy u¿ytkowników zostaj± ujête w dwukropki.

Katalogi domowe poprzednio rozwiniêtych nazw u¿ytkowników zostaj± umieszczone w pamiêci podrêcznej i przy ponownym u¿yciu zostaj± stamt±d pobierane. Komenda alias -d mo¿e byæ u¿yta do wylistowania, zmiany i dodania do tej pamiêci podrêcznej (w szczególno¶ci, `alias -d fac=/usr/local/facilities; cd ~fac/bin').

Rozwijanie nawiasów (przemiany)

Rozwiniêcia nawiasów przyjmuj±ce postaæ
prefiks{ci±g1,...,ci±gN}sufiks
zostaj± rozwiniête w N wyrazów, z których ka¿dy zawiera konkatenacjê prefiks, ci±gn i sufiks (w szczególno¶ci., `a{c,b{X,Y},d}e' zostaje rozwiniête do czterech wyrazów: ace, abXe, abYe i ade). Jak ju¿ wy¿ej wspomniano, rozwiniêcia nawiasów mog± byæ nak³adane na siebie, a wynikaj±ce s³owa nie s± sortowane. Wyra¿enia nawiasowe musz± zawieraæ niecytowany przecinek (,), aby nast±pi³o rozwijanie (tak wiêc {} i {foo} nie zostaj± rozwiniête). Rozwiniêcie nawiasów nastêpuje po podstawieniach parametrów i przed generowaniem nazw plików.

Wzorce nazw plików

Wzorcem nazwy pliku jest s³owo zwieraj±ce jeden lub wiêcej z niecytowanych symboli ? lub * lub sekwencji [..]. Po wykonaniu rozwiniêcia nawiasów, pow³oka zamienia wzorce nazw plików na uporz±dkowane nazwy plików, które pasuj± do tego wzorca (je¶li ¿adne pliki nie pasuj±, wówczas dane s³owo zostaje pozostawione bez zmian). Elementy wzorców maj± nastêpuj±ce znaczenia:

?
oznacza dowolny pojedynczy znak.
*
oznacza dowoln± sekwencjê znaków.
[..]
oznacza ka¿dy ze znaków pomiêdzy klamrami. Mo¿na podaæ zakresy znaków u¿ywaj±c - pomiêdzy dwoma ograniczaj±cymi zakres znakami, tzn. [a0-9] oznacza literê a lub dowoln± cyfrê. Aby przedstawiæ sam znak - nale¿y go albo zacytowaæ albo musi byæ to pierwszy lub ostatni znak w li¶cie znaków. Podobnie ] musi albo byæ wycytowywane, albo byæ pierwszym lub ostatnim znakiem w li¶cie, je¶li ma oznaczaæ samego siebie, a nie zakoñczenie listy. Równie¿ ! wystêpuj±cy na pocz±tku listy ma specjalne znaczenie (patrz poni¿ej), tak wiêc aby reprezentowa³ samego siebie musi zostaæ wycytowany lub wystêpowaæ dalej w li¶cie.
[!..]
podobnie jak [..], tylko ¿e oznacza dowolny znak niewystêpuj±cy pomiêdzy klamrami.
*(wzorzec| ... |wzorzec)
oznacza ka¿dy ci±g zawieraj±cy zero lub wiêcej wyst±pieñ podanych wzorców. Przyk³adowo: wzorzec *(foo|bar) obejmuje ci±gi `', `foo', `bar', `foobarfoo', itp..
+(wzorzec| ... |wzorzec)
obejmuje ka¿dy ci±g znaków obejmuj±cy jedno lub wiêcej wyst±pieñ danych wzorców. Przyk³adowo: wzorzec +(foo|bar) obejmuje ci±gi `foo', `bar', `foobarfoo', itp..
?(wzorzec| ... |wzorzec)
oznacza ci±g pusty lub ci±g obejmuj±cy jeden z danych wzorców. Przyk³adowo: wzorzec ?(foo|bar) obejmuje jedynie ci±gi `', `foo' i `bar'.
@(wzorzec| ... |wzorzec)
obejmuje ci±g obejmuj±cy jeden z podanych wzorców. Przyk³adowo: wzorzec @(foo|bar) obejmuje wy³±cznie ci±gi `foo' i `bar'.
!(wzorzec| ... |wzorzec)
obejmuje dowolny ci±g nie obejmuj±cy ¿adnego z danych wzorców. Przyk³adowo: wzorzec !(foo|bar) obejmuje wszystkie ci±gi poza `foo' i `bar'; wzorzec !(*) nie obejmuje ¿adnego ci±gu; wzorzec !(?)* obejmuje wszystkie ci±gi (proszê siê nad tym zastanowiæ).

Proszê zauwa¿yæ, ¿e wzorce w pdksh obecnie nigdy nie obejmuj± . i .., w przeciwieñstwie do oryginalnej pow³oki ksh, Bourne'a sh i basha, tak wiêc to bêdzie musia³o siê ewentualnie zmieniæ (na z³e).

Proszê zauwa¿yæ, ¿e powy¿sze elementy wzorców nigdy nie obejmuj± kropki (.) na pocz±tku nazwy pliku ani uko¶nika (/), nawet gdy zosta³y one podane jawnie w sekwencji [..]; ponadto nazwy . i .. nigdy nie s± obejmowane, nawet poprzez wzorzec .*.

Je¶li zosta³a ustawiona opcja markdirs, wówczas, wszelkie katalogi wynikaj±ce z generacji nazw plików zostaj± oznaczone koñcz±cym /.

POSIX-owe klasy znaków (tzn., [:nazwa_klasy:] wewn±trz wyra¿enia typu [..]) jak na razie nie zosta³y zaimplementowane.

Przekierowanie wej¶cia/wyj¶cia

Podczas wykonywania komendy, jej standardowe wej¶cie, standardowe wyj¶cie i standardowe wyj¶cie b³êdów (odpowiednio deskryptory plików 0, 1 i 2) s± zwykle dziedziczone po pow³oce. Trzema wyj±tkami od tej regu³y s± komendy w potokach, dla których standardowe wej¶cie i/lub standardowe wyj¶cie odpowiadaj± tym, ustalonym przez potok, komendy asychroniczne, tworzone je¶li kontrola prac zosta³a wy³±czona, których standardowe wej¶cie zostaje ustawione na /dev/null, oraz komendy, dla których zosta³o ustawione jedno lub kilka z nastêpuj±cych przekierowañ:
> plik
Standardowe wyj¶cie zostaje przekierowane do plik-u. Je¶li plik nie istnieje, wówczas zostaje utworzony; je¶li istnieje i jest to regularny plik oraz zosta³a ustawiona opcja noclobber, wówczas wystêpuje b³±d, w przeciwnym razie dany plik zostaje uciêty do pocz±tku. Proszê zwróciæ uwagê, i¿ oznacza to, ¿e komenda jaka¶_komenda < foo > foo otworzy plik foo do odczytu, a nastêpnie skasuje jego zawarto¶æ, gdy otworzy go do zapisu, zanim jaka¶_komenda otrzyma szansê przeczytania czegokolwiek z foo.
>| plik
tak jak dla >, tylko ¿e zawarto¶æ pliku zostanie skasowana niezale¿nie od ustawienia opcji noclobber.
>> plik
tak jak dla >, tylko ¿e je¶li dany plik ju¿ istnieje, to nowe dane bêd± dopisywane do niego, zamiast kasowania poprzedniej jego zawarto¶ci. Ponadto plik ten zostaje otwarty w trybie dopisywania, tak wiêc wszelkiego rodzaju operacje zapisu na nim dotycz± jego aktualnego koñca. (patrz open(2)).
< plik
standardowe wej¶cie zostaje przekierowane do pliku, który jest otwierany w trybie do odczytu.
<> plik
tak jak dla <, tylko ¿e plik zostaje otworzony w trybie zapisu i czytania.
<< znacznik
po wczytaniu wiersza komendy zawieraj±cego tego rodzaju przekierowanie (zwane tu-dokumentem), pow³oka kopiuje wiersze z komendy do tymczasowego pliku, a¿ do natrafienia na wiersz odpowiadaj±cy znacznikowi. Podczas wykonywania polecenia jego standardowe wej¶cie jest przekierowane do pewnego pliku tymczasowego. Je¶li znacznik nie zawiera wycytowanych znaków, zawarto¶æ danego pliku tymczasowego zostaje przetworzona tak, jakby zawiera³a siê w podwójnych cudzys³owach za ka¿dym razem, gdy dana komenda jest wykonywana. Tak wiêc zostan± na nim wykonane podstawienia parametrów, komend i arytmetyczne wraz z interpretacj± odwrotnego uko¶nika (\) i znaków wyj¶æ dla $, `, \ i \nowa_linia. Je¶li wiele tu-dokumentów zostanie zastosowanych w jednym i tym samym wierszy komendy, to s± one zachowane w podanej kolejno¶ci.
<<- znacznik
tak jak dla <<, tylko ¿e pocz±tkowe tabulatory zostaj± usuniête z tu-dokumentu.
<& fd
standardowe wej¶cie zostaje powielone z deskryptora pliku fd. fd mo¿e byæ pojedyncz± cyfr±, wskazuj±c± na numer istniej±cego deskryptora pliku, liter± p, wskazuj±c± na plik powi±zany w wyj¶ciem obecnego koprocesu, lub znakiem -, wskazuj±cym, ¿e standardowe wej¶cie powinno zostaæ zamkniête.
>& fd
tak jak dla <&, tylko ¿e operacja dotyczy standardowego wyj¶cia.

W ka¿dym z powy¿szych przekierowañ, mo¿na podaæ jawnie deskryptor pliku, którego ma ono dotyczyæ, (tzn. standardowego wej¶cia lub standardowego wyj¶cia) przez poprzedzaj±c± odpowiedni± pojedyncz± cyfrê. Podstawienia parametrów komend, arytmetyczne, tyld, tak jak i (gdy pow³oka jest interakcyjna) generacje nazw plików - zostan± wykonane na argumentach przekierowañ plik, znacznik i fd. Trzeba jednak zauwa¿yæ, ¿e wyniki wszelkiego rodzaju generowania nazw plików zostan± u¿yte tylko wtedy, gdy okre¶laj± nazwê jednego pliku; je¶li natomiast obejmuj± one wiele plików, wówczas zostaje zastosowane dane s³owo bez rozwiniêæ wynikaj±cych z generacji nazw plików. Proszê zwróciæ uwagê, ¿e w pow³okach ograniczonych, przekierowania tworz±ce nowe pliki nie mog± byæ stosowane.

Dla prostych poleceñ, przekierowania mog± wystêpowaæ w dowolnym miejscu komendy, w komendach z³o¿onych (wyra¿eniach if, itp.), wszelkie przekierowania musz± znajdowaæ siê na koñcu. Przekierowania s± przetwarzane po tworzeniu potoków i w kolejno¶ci, w jakiej zosta³y podane, tak wiêc

cat /foo/bar 2>&1 > /dev/null | cat -n
wy¶wietli b³±d z numerem linii wiersza poprzedzaj±cym go.

Wyra¿enia arytmetyczne

Ca³kowite wyra¿enia arytmetyczne mog± byæ stosowane przy pomocy komendy let, wewn±trz wyra¿eñ $((..)), wewn±trz odwo³añ do tablic (w szczególno¶ci, nazwa[wyra¿enie]), jako numeryczne argumenty komendy test, i jako warto¶ci w przyporz±dkowywaniach do ca³kowitych parametrów.

Wyra¿enia mog± zawieraæ alfanumeryczne identyfikatory parametrów, odwo³ania do tablic i ca³kowite sta³e. Mog± zostaæ równie¿ po³±czone nastêpuj±cymi operatorami jêzyka C: (wymienione i zgrupowane w kolejno¶ci rosn±cego priorytetu).

Operatory unarne:
+ - ! ~ ++ --
Operatory binarne:
,
= *= /= %= += -= <<= >>= &= ^= |=
||
&&
|
^
&
== !=
< <= >= >
<< >>
+ -
* / %
Operator trinarny:
?: (priorytet jest bezpo¶rednio wy¿szy od przyporz±dkowania)
Operatory grupuj±ce:
( )

Sta³e ca³kowite mog± byæ podane w dowolnej bazie, stosuj±c notacjê baza#liczba, gdzie baza jest dziesiêtn± liczb± ca³kowit± specyfikuj±c± bazê, a liczba jest liczb± zapisan± w danej bazie.

Operatory s± wyliczane w nastêpuj±cy sposób:

unarny +
wynikiem jest argument (podane wy³±cznie dla pe³no¶ci opisu).
unary -
negacja.
!
logiczna negacja; wynikiem jest 1 je¶li argument jest zerowy, a 0 je¶li nie.
~
arytmetyczna negacja (bit-w-bit).
++
inkrement; musi byæ zastosowanym do parametru (a nie litera³u lub innego wyra¿enia) - parametr zostaje powiêkszony o 1. Je¶li zosta³ zastosowany jako operator przedrostkowy, wówczas wynikiem jest inkrementowana warto¶æ parametru, a je¶li zosta³ zastosowany jako operator przyrostkowy, to wynikiem jest pierwotna warto¶æ parametru.
--
podobnie do ++, tylko ¿e wynikiem jest zmniejszenie parametru o 1.
,
Rozdziela dwa wyra¿enia arytmetyczne; lewa strona zostaje wyliczona jako pierwsza, a nastêpnie prawa strona. Wynikiem jest warto¶æ wyra¿enia po prawej stronie.
=
przyporz±dkowanie; zmiennej po lewej zostaje nadana warto¶æ po prawej.
*= /= %= += -= <<= >>= &= ^= |=
operatory przyporz±dkowania; <var> <op>= <expr> jest tym samym co <var> = <var> <op> ( <expr> ).
||
logiczna alternatywa; wynikiem jest 1 je¶li przynajmniej jeden z argumentów jest niezerowy, 0 gdy nie. Argument po prawej zostaje wyliczony jedynie, gdy argument po lewej jest zerowy.
&&
logiczna koniunkcja; wynikiem jest 1 je¶li obydwa argumenty s± niezerowe, 0 gdy nie. Prawy argument zostaje wyliczony jedynie, gdy lewy jest niezerowy.
|
arytmetyczna alternatywa (bit-w-bit).
^
arytmetyczne albo (bit-w-bit).
&
arytmetyczna koniunkcja (bit-w-bit).
==
równo¶æ; wynikiem jest 1, je¶li obydwa argumenty s± sobie równe, 0 gdy nie.
!=
nierówno¶æ; wynikiem jest 0, je¶li obydwa argumenty s± sobie równe, 1 gdy nie.
<
mniejsze od; wynikiem jest 1, je¶li lewy argument jest mniejszy od prawego, 0 gdy nie.
<= >= >
mniejsze lub równe, wiêksze lub równe, wiêksze od. Patrz <.
<< >>
przesuñ w lewo (prawo); wynikiem jest lewy argument z bitami przesuniêtymi na lewo (prawo) o liczbê pól podan± w prawym argumencie.
+ - * /
suma, ró¿nica, iloczyn i iloraz.
%
reszta; wynikiem jest reszta z dzielenia lewego argumentu przez prawy. Znak wyniku jest nieustalony, je¶li który¶ z argumentów jest ujemny.
<arg1> ? <arg2> : <arg3>
je¶li <arg1> jest niezerowy, to wynikiem jest <arg2>, w przeciwnym razie <arg3>.

Koprocesy

Koproces to potok stworzony poprzez operator |&, który jest procesem asynchronicznym, do którego pow³oka mo¿e zarówno pisaæ (u¿ywaj±c print -p), jak i czytaæ (u¿ywaj±c read -p). Wej¶ciem i wyj¶ciem koprocesu mo¿na równie¿ manipulowaæ przy pomocy przekierowañ >&p i odpowiednio <&p. Po uruchomieniu koprocesu, nastêpne nie mog± byæ uruchomione dopóki dany koproces nie zakoñczy pracy lub dopóki wej¶cie koprocesu nie zostanie przekierowane przez exec n>&p. Je¶li wej¶cie koprocesu zostanie przekierowane w ten sposób, to nastêpny w kolejce do uruchomienia koproces bêdzie wspó³dzieli³ wyj¶cie z pierwszym koprocesem, chyba ¿e wyj¶cie pierwszego koprocesu zosta³o przekierowane przy pomocy exec n<&p.

Pewne uwagi dotycz±ce koprocesów:

  *
jedyn± mo¿liwo¶ci± zamkniêcia wej¶cia koprocesu (tak aby koproces wczyta³ zakoñczenie pliku) jest przekierowanie wej¶cia na numerowany deskryptor pliku, a nastêpnie zamkniêcie tego deskryptora (w szczególno¶ci, exec 3>&p;exec 3>&-).
  *
aby koprocesy mog³y wspó³dzieliæ jedno wyj¶cie, pow³oka musi zachowaæ otwart± czê¶æ wpisow± danego potoku wyj¶ciowego. Oznacza to, ¿e zakoñczenie pliku nie zostanie wykryte do czasu, a¿ wszystkie koprocesy wspó³dziel±ce wyj¶cie zostan± zakoñczone (gdy zostan± one zakoñczone, wówczas pow³oka zamyka swoj± kopiê potoku). Mo¿na temu zapobiec przekierowuj±c wyj¶cie na numerowany deskryptor pliku (poniewa¿ powoduje to równie¿ zamkniêcie przez pow³okê swojej kopii). Proszê zwróciæ uwagê, i¿ to zachowanie jest nieco odmienne od oryginalnej pow³oki Korna, która zamyka czê¶æ zapisow± swojej kopii wyj¶cia koprocesu, gdy ostatnio uruchomiony koproces (zamiast gdy wszystkie wspó³dziel±ce koprocesy) zostanie zakoñczony.
  *
print -p ignoruje sygna³ SIGPIPE podczas zapisu, je¶li dany sygna³ nie zosta³ przechwycony lub zignorowany; nie zachodzi to jednak, gdy wej¶cie koprocesu zosta³o powielone na inny deskryptor pliku i stosowane jest print -un.

Funkcje

Funkcje definiuje siê albo przy pomocy syntaktyki pow³oki Korna function name, albo syntaktyki pow³oki Bourne'a/POSIX-owej: name() (patrz poni¿ej, co do ró¿nic zachodz±cych pomiêdzy tymi dwiema formami). Funkcje, tak jak i .-skrypty, s± wykonywane w bie¿±cym otoczeniu, aczkolwiek, w przeciwieñstwie do .-skryptów, argumenty pow³oki (tzn. argumenty pozycyjne, $1, itd.) nigdy nie s± widoczne wewn±trz nich. Podczas ustalania po³o¿enia komendy, funkcje s± przeszukiwane po przeszukaniu specjalnych komend wbudowanych, za¶ przed regularnymi oraz nieregularnymi komendami wbudowanymi i przed przeszukaniem PATH.

Istniej±ca funkcja mo¿e zostaæ usuniêta poprzez unset -f nazwa-funkcji. Listê funkcji mo¿na otrzymaæ poprzez typeset +f, a definicje funkcji mo¿na otrzymaæ poprzez typeset -f. autoload (co jest aliasem dla typeset -fu) mo¿e zostaæ u¿yte do tworzenia niezdefiniowanych funkcji. Je¶li ma byæ wykonana niezdefiniowana funkcja, wówczas pow³oka przeszukuje ¶cie¿kê podan± w parametrze FPATH szukaj±c pliku o nazwie identycznej z nazw± danej funkcji. Je¶li plik taki zostanie odnaleziony, to bêdzie wczytany i wykonany. Je¶li po wykonaniu tego pliku dana funkcja bêdzie zdefiniowana, wówczas zostanie ona wykonana, w przeciwnym razie zostanie wykonane zwyk³e odnajdywanie komend (tzn., pow³oka przeszukuje tablicê zwyk³ych komend wbudowanych i PATH). Proszê zwróciæ uwagê, ¿e je¶li komenda nie zostanie odnaleziona na podstawie PATH, wówczas zostaje podjêta próba odnalezienia funkcji przez FPATH (jest to nieudokumentowanym zachowaniem siê oryginalnej pow³oki Korna).

Funkcje mog± mieæ dwa atrybuty - ¶ledzenia i eksportowania, które mog± byæ ustawiane przez typeset -ft i odpowiednio typeset -fx. Podczas wykonywania funkcji ¶ledzonej, opcja xtrace pow³oki zostaje w³±czona na czas danej funkcji, w przeciwnym razie opcja xtrace pozostaje wy³±czona. Atrybut eksportowania nie jest obecnie u¿ywany. W oryginalnej pow³oce Korna, wyeksportowane funkcje s± widoczne dla skryptów pow³oki, gdy s± one wykonywane.

Poniewa¿ funkcje s± wykonywane w obecnym kontek¶cie pow³oki, przyporz±dkowania parametrów wykonane wewn±trz funkcji pozostaj± widoczne po zakoñczeniu danej funkcji. Je¶li jest to niepo¿±dane, wówczas komenda typeset mo¿e byæ zastosowana wewn±trz funkcji do tworzenia lokalnych parametrów. Proszê zwróciæ uwagê, i¿ w ¿aden sposób nie mo¿na ograniczyæ widoczno¶ci parametrów specjalnych (tzn. $$, $!).

Kodem wyj¶cia funkcji jest kod wyj¶cia ostatniej wykonanej w niej komendy. Funkcjê mo¿na przerwaæ bezpo¶rednio przy pomocy komendy return; mo¿na to równie¿ zastosowaæ do jawnego okre¶lenia kodu wyj¶cia.

Funkcje zdefiniowane przy pomocy zarezerwowanego s³owa function, s± traktowane odmiennie w nastêpuj±cych punktach od funkcji zdefiniowanych poprzez notacjê ():

  *
parametr $0 zostaje ustawiony na nazwê funkcji (funkcje w stylu Bourne'a nie dotykaj± $0).
  *
przyporz±dkowania warto¶ci parametrom poprzedzaj±ce wywo³anie funkcji nie zostaj± zachowane w bie¿±cym kontek¶cie pow³oki (wykonywanie funkcji w stylu Bourne'a zachowuje te przyporz±dkowania).
  *
OPTIND zostanie zachowany i skasowany na pocz±tku oraz nastêpnie odtworzony na zakoñczenie funkcji, tak wiêc getopts mo¿e byæ poprawnie stosowane zarówno wewn±trz funkcji, jak i poza nimi (funkcje w stylu Bourne'a nie dotykaj± OPTIND, tak wiêc stosowanie getopts wewn±trz funkcji jest niezgodne ze stosowaniem getopts poza funkcjami).
W przysz³o¶ci zostan± dodane równie¿ nastêpuj±ce ró¿nice:
  *
Podczas wykonywania funkcji bêdzie stosowany oddzielny kontekst ¶ledzenia/sygna³ów. Tak wiêc ¶ledzenia ustawione wewn±trz funkcji nie bêd± mia³y wp³ywu na ¶ledzenia i sygna³y pow³oki, nieignorowane przez ni± (które mog± byæ przechwytywane), i bêd± mia³y domy¶lne ich znaczenie wewn±trz funkcji.
  *
¦ledzenie EXIT-a, je¶li zostanie ustawione wewn±trz funkcji, zostanie wykonane po zakoñczeniu funkcji.

Tryb POSIX-owy

Dana pow³oka ma byæ w zasadzie zgodna ze standardem POSIX, jednak, w niektórych przypadkach, zachowanie zgodne ze standardem POSIX jest albo sprzeczne z zachowaniem oryginalnej pow³oki Korna, albo z wygod± u¿ytkownika. To, jak pow³oka zachowuje siê w takich wypadkach, jest ustalane stanem opcji posix (set -o posix) --- je¶li jest ona w³±czona, to zachowuje siê zgodnie z POSIX-em, a w przeciwnym razie - nie. Opcja posix zostaje automatycznie ustawiona, je¶li pow³oka startuje w otoczeniu zawieraj±cym ustawiony parametr POSIXLY_CORRECT. (Pow³okê mo¿na równie¿ skompilowaæ tak, aby zachowanie zgodne z POSIX-em by³o domy¶lnie ustawione, ale jest to zwykle niepo¿±dane).

A oto lista wp³ywów ustawienia opcji posix:

  *
\" wewn±trz cytowanych podwójnymi cudzys³owami `..` podstawieñ komend: w trybie POSIX-owym, \" jest interpretowany podczas interpretacji komendy; w trybie nie-POSIX-owym, odwrotny uko¶nik zostaje usuniêty przed interpretacj± podstawienia komendy. Na przyk³adecho "`echo \"hi\"`" produkuje `"hi"' w trybie POSIX-owym, `hi' a w trybie nie-POSIX-owym. W celu unikniêcia problemów, proszê stosowaæ postaæ $(...) podstawienia komend.
  *
wyj¶cie kill -l: w trybie POSIX-owym nazwy sygna³ów s± wymieniane wiersz po wierszu; w nie-POSIX-owym trybie numery sygna³ów, ich nazwy i opis zostaj± wymienione w kolumnach. W przysz³o¶ci zostanie dodana nowa opcja (zapewne -v) w celu rozró¿nienia tych dwóch zachowañ.
  *
kod wyj¶cia fg: w trybie POSIX-owym, kod wyj¶cia wynosi 0, je¶li nie wyst±pi³y ¿adne b³êdy; w trybie nie-POSIX-owym, kod wyj¶cia odpowiada kodowi ostatniego zadania wykonywanego w pierwszym planie.
  *
kod wyj¶cia poleceniaeval: je¿eli argumentem eval bêdzie puste polecenie (np.: eval "`false`"), to jego kodem wyj¶cia w trybie POSIX-owym bêdzie 0. W trybie nie-POSIX-owym, kodem wyj¶cia bêdzie kod wyj¶cia ostatniego podstawienia komendy, które zosta³o dokonane podczas przetwarzania argumentów polecenia eval (lub 0, je¶li nie by³o podstawieñ komend).
  *
getopts: w trybie POSIX-owym, opcje musz± zaczynaæ siê od -; w trybie nie-POSIX-owym, opcje mog± siê zaczynaæ albo od -, albo od +.
  *
rozwijanie nawiasów (zwane równie¿ przemian±): w trybie POSIX-owym rozwijanie nawiasów jest wy³±czone; w trybie nie-POSIX-owym rozwijanie nawiasów jest w³±czone. Proszê zauwa¿yæ, ¿e set -o posix (lub ustawienie parametru POSIXLY_CORRECT) automatycznie wy³±cza opcjê braceexpand, mo¿e ona byæ jednak jawnie w³±czona pó¼niej.
  *
set -: w trybie POSIX-owym, nie wy³±cza to ani opcji verbose, ani xtrace; w trybie nie-POSIX-owym, wy³±cza.
  *
kod wyj¶cia set: w trybie POSIX-owym, kod wyj¶cia wynosi 0, je¶li nie wyst±pi³y ¿adne b³êdy; w trybie nie-POSIX-owym, kod wyj¶cia odpowiada kodowi wszelkich podstawieñ komend wykonywanych podczas generacji komendy set. Przyk³adowo, `set -- `false`; echo $?' wypisuje 0 w trybie POSIX-owym, a 1 w trybie nie-POSIX-owym. Taka konstrukcja stosowana jest w wiêkszo¶ci skryptów pow³oki stosuj±cych stary wariant komendy getopt(1).
  *
rozwijanie argumentów komend alias, export, readonly i typeset: w trybie POSIX-owym, nastêpuje normalne rozwijanie argumentów; w trybie nie-POSIX-owym, rozdzielanie pól, dopasowywanie nazw plików, rozwijanie nawiasów i (zwyk³e) rozwijanie tyld s± wy³±czone, ale rozwijanie tyld w przyporz±dkowaniach pozostaje w³±czone.
  *
specyfikacja sygna³ów: w trybie POSIX-owym, sygna³y mog± byæ podawane jedynie cyframi, je¶li numery sygna³ów s± zgodne z warto¶ciami z POSIX-a (tzn. HUP=1, INT=2, QUIT=3, ABRT=6, KILL=9, ALRM=14 i TERM=15); w trybie nie-POSIX-owym, sygna³y zawsze mog± byæ podane cyframi.
  *
rozwijanie aliasów: w trybie POSIX-owym, rozwijanie aliasów zostaje jedynie wykonywane, podczas wczytywania s³ów komend; w trybie nie-POSIX-owym, rozwijanie aliasów zostaje wykonane równie¿ na ka¿dym s³owie po jakim¶ aliasie, które koñczy siê bia³± przerw±. Na przyk³ad nastêpuj±ca pêtla for
alias a='for ' i='j'
a i in 1 2; do echo i=$i j=$j; done
u¿ywa parametru i w trybie POSIX-owym, natomiast j w trybie nie-POSIX-owym.
  *
test: w trybie POSIX-owym, wyra¿enie "-t" (poprzedzone pewn± liczb± argumentów "!") zawsze jest prawdziwe, gdy¿ jest ci±giem o d³ugo¶ci niezerowej; w nie-POSIX-owym trybie, sprawdza czy deskryptor pliku 1 jest jakim¶ tty (tzn., argument fd do testu -t mo¿e zostaæ pominiêty i jest domy¶lnie równy 1).

Wykonywanie komend

Po wyliczeniu argumentów wiersza komendy, wykonaniu przekierowañ i przyporz±dkowañ parametrów, zostaje ustalony typ komendy: specjalna wbudowana, funkcja, regularna wbudowana lub nazwa pliku, który nale¿y wykonaæ, znajdowanego przy pomocy parametru PATH. Testy te zostaj± wykonane w wy¿ej podanym porz±dku. Specjalne wbudowane komendy ró¿ni± siê tym od innych komend, ¿e do ich odnalezienia nie jest u¿ywany parametr PATH, b³±d podczas ich wykonywania mo¿e spowodowaæ zakoñczenie pow³oki nieinterakcyjnej i przyporz±dkowania warto¶ci parametrów poprzedzaj±ce komendê zostaj± zachowane po jej wykonaniu. Aby tylko wprowadziæ zamieszanie, je¶li opcja posix zosta³a w³±czona (patrz komenda set poni¿ej), to pewne specjale komendy staj± siê bardzo specjalne, gdy¿ nie jest wykonywane rozdzielanie pól, rozwijanie nazw plików, rozwijanie nawiasów, ani rozwijanie tyld na argumentach, które wygl±daj± jak przyporz±dkowania. Zwyk³e wbudowane komendy wyró¿niaj± siê jedynie tym, ¿e do ich odnalezienia nie jest stosowany parametr PATH.

Oryginalny ksh i POSIX ró¿ni± siê nieco w tym, jakie komendy s± traktowane jako specjalne, a jakie jako zwyk³e:

Specjalne polecenia w POSIX
. continue exit return trap
: eval export set unset
break exec readonly shift
Dodatkowe specjalne komendy w ksh
builtin times typeset
Bardzo specjalne komendy (tryb nie-POSIX-owy)
alias readonly set typeset
Regularne komendy w POSIX
alias command fg kill umask
bg false getopts read unalias
cd fc jobs true wait
Dodatkowe regularne komendy ksh
[ let pwd ulimit
echo print test whence

W przysz³o¶ci dodatkowe specjalne komendy oraz regularne komendy ksh mog± byæ traktowane odmiennie od specjalnych i regularnych komand POSIX.

Po ustaleniu typu komendy, wszelkie przyporz±dkowania warto¶ci parametrów zostaj± wykonane i wyeksportowane na czas trwania komendy.

Poni¿ej opisujemy specjalne i regularne polecenia wbudowane:

. plik [arg1 ...]
Wykonaj komendy z pliku w bie¿±cym otoczeniu. Plik zostaje odszukiwany przy u¿yciu katalogów z PATH. Je¶li zosta³y podane argumenty, to parametry pozycyjne mog± byæ u¿ywane w celu uzyskania dostêpu do nich podczas wykonywania pliku. Je¿eli nie zosta³y podane ¿adne argumenty, to argumenty pozycyjne odpowiadaj± tym z bie¿±cego otoczenia, w którym dana komenda zosta³a u¿yta.
: [ ... ]
Komenda zerowa. Kodem wyj¶cia jest zero.
alias [ -d | +-t [-r] ] [+-px] [+-] [name1[=value1] ...]
Bez argumentów, alias wy¶wietla wszystkie obecne aliasy. Dla ka¿dej nazwy bez podanej warto¶ci zostaje wy¶wietlony istniej±cy odpowiedni alias. Ka¿da nazwa z podan± warto¶ci± definiuje alias (patrz: "Aliasy" powy¿ej).

Do wy¶wietlania aliasów u¿ywany jest jeden z dwóch formatów: zwykle aliasy s± wy¶wietlane jako nazwa=warto¶æ, przy czym warto¶æ jest cytowana; je¶li opcje mia³y przedrostek + lub samo + zosta³o podane we wierszu komendy, tylko nazwa zostaje wy¶wietlona. Ponadto, je¶li zosta³a zastosowana opcja -p, to dodatkowo ka¿dy wiersz zaczyna siê od ci±gu "alias ".

Opcja -x ustawia (a +x kasuje) atrybut eksportu dla aliasu, lub je¶li nie podano ¿adnych nazw, wy¶wietla aliasy wraz z ich atrybutem eksportu (eksportowanie aliasu nie ma ma ¿adnego efektu).

Opcja -t wskazuje, ¿e ¶ledzone aliasy maj± byæ wy¶wietlone/ustawione (warto¶ci podane w wierszu komendy zostaj± zignorowane dla ¶ledzonych aliasów). Opcja -r wskazuje, ¿e wszystkie ¶ledzone aliasy maj± zostaæ usuniête.

Opcja -d nakazuje wy¶wietlenie lub ustawienie aliasów katalogów, które s± stosowane w rozwiniêciach tyld (patrz: "Rozwiniêcia tyld" powy¿ej).

bg [job ...]
Podejmij ponownie wymienione zatrzymane zadanie(-a) w tle. Je¶li nie podano ¿adnego zadania, to przyjmuje siê domy¶lnie %+. Ta komenda jest dostêpna jedynie w systemach obs³uguj±cych kontrolê zadañ. Dalsze informacje mo¿na znale¼æ poni¿ej w rozdziale "Kontrola zadañ".
bind [-m] [klawisz[=komenda-edycji] ...]
Ustawienie lub wyliczenie obecnych przyporz±dkowañ klawiszy/makr w emacsowym trybie edycji komend. Patrz "Interakcyjna edycja wiersza poleceñ w trybie emacs" w celu pe³nego opisu.
break [poziom]
break przerywa poziom zagnie¿d¿enia w pêtlach for, select, until lub while. Domy¶lnie poziom wynosi 1.
builtin komenda [arg1 ...]
Wykonuje wbudowan± komendê komenda.
cd [-LP] [katalog]
Ustawia aktualny katalog roboczy na katalog. Je¶li zosta³ ustawiony parametr CDPATH, to wypisuje listê katalogów, w których bêdzie szukaæ katalogu. Pusta zawarto¶æ w CDPATH oznacza katalog bie¿±cy. Je¶li zostanie u¿yty niepusty katalog z CDPATH, to na standardowym wyj¶ciu bêdzie wy¶wietlona jego pe³na ¶cie¿ka. Je¶li nie podano katalogu, to zostanie u¿yty katalog domowy $HOME. Je¶li katalogiem jest -, to zostanie zastosowany poprzedni katalog roboczy (patrz parametr OLDPWD). Je¶li u¿yto opcji -L (¶cie¿ka logiczna) lub je¶li nie zosta³a ustawiona opcja physical (patrz komenda set poni¿ej), wówczas odniesienia do .. w katalogu s± wzglêdne wobec ¶cie¿ki zastosowanej do doj¶cia do danego katalogu. Je¶li podano opcjê -P (fizyczna ¶cie¿ka) lub gdy zosta³a ustawiona opcja physical, to .. jest wzglêdne wobec drzewa katalogów systemu plików. Parametry PWD i OLDPWD zostaj± uaktualnione tak, aby odpowiednio zawiera³y bie¿±cy i poprzedni katalog roboczy.
cd [-LP] stary nowy
Ci±g nowy zostaje podstawiony w zamian za stary w bie¿±cym katalogu i pow³oka próbuje przej¶æ do nowego katalogu.
command [-pvV] komenda [arg1 ...]
Je¶li nie zosta³a podana opcja -v ani opcja -V, to komenda zostaje wykonana dok³adnie tak, jakby nie podano command, z dwoma wyj±tkami: po pierwsze, komenda nie mo¿e byæ funkcj± w pow³oce, oraz po drugie, specjalne wbudowane komendy trac± swoj± specjalno¶æ (tzn. przekierowania i b³êdy w u¿yciu nie powoduj±, ¿e pow³oka zostaje zakoñczona, a przyporz±dkowania parametrów nie zostaj± wykonane). Je¶li podano opcjê -p, zostaje zastosowana pewna domy¶lna ¶cie¿ka zamiast obecnej warto¶ci PATH (warto¶æ domy¶lna ¶cie¿ki jest zale¿na od systemu, w jakim pracujemy: w systemach POSIX-owych jest to warto¶æ zwracana przez
getconf CS_PATH
).

Je¶li podano opcjê -v, to zamiast wykonania polecenia komenda, zostaje podana informacja, co by zosta³o wykonane (i to samo dotyczy równie¿ arg1 ...): dla specjalnych i zwyk³ych wbudowanych komend i funkcji, zostaj± po prostu wy¶wietlone ich nazwy, dla aliasów, zostaje wy¶wietlona komenda definiuj±ca dany alias, oraz dla komend odnajdowanych przez przeszukiwanie zawarto¶ci parametru PATH, zostaje wy¶wietlona pe³na ¶cie¿ka danej komendy. Je¶li komenda nie zostanie odnaleziona, (tzn. przeszukiwanie ¶cie¿ki nie powiedzie siê), nic nie zostaje wy¶wietlone i command zostaje zakoñczone z niezerowym kodem wyj¶cia. Opcja -V jest podobna do opcji -v, tylko ¿e bardziej gadatliwa.

continue [poziom]
continue skacze na pocz±tek poziomu z najg³êbiej zagnie¿d¿onej pêtli for, select, until lub while. level domy¶lnie 1.
echo [-neE] [arg ...]
Wy¶wietla na standardowym wyj¶ciu swoje argumenty (rozdzielone spacjami), zakoñczone prze³amaniem wiersza. Prze³amanie wiersza nie nastêpuje, je¶li którykolwiek z parametrów zawiera sekwencjê odwrotnego uko¶nika \c. Patrz komenda print poni¿ej, co do listy innych rozpoznawanych sekwencji odwrotnych uko¶ników.

Nastêpuj±ce opcje zosta³y dodane dla zachowania zgodno¶ci ze skryptami z systemów BSD: -n wy³±cza koñcowe prze³amanie wiersza, -e w³±cza interpretacjê odwrotnych uko¶ników (operacja zerowa, albowiem ma to domy¶lnie miejsce) oraz -E wy³±czaj±ce interpretacjê odwrotnych uko¶ników.

eval komenda ...
Argumenty zostaj± powi±zane (z przerwami pomiêdzy nimi) do jednego ci±gu, który nastêpnie pow³oka rozpoznaje i wykonuje w obecnym otoczeniu.
exec [komenda [arg ...]]
Komenda zostaje wykonana bez rozwidlania (fork), zastêpuj±c proces pow³oki.

Je¶li nie podano ¿adnych argumentów wszelkie przekierowania wej¶cia/wyj¶cia s± dozwolone i pow³oka nie zostaje zast±piona. Wszelkie deskryptory plików wiêksze ni¿ 2 otwarte lub zdup(2)-owane w ten sposób nie s± dostêpne dla innych wykonywanych komend (tzn., komend nie wbudowanych w pow³okê). Zauwa¿, ¿e pow³oka Bourne'a ró¿ni siê w tym: przekazuje bowiem deskryptory plików.

exit [kod]
Pow³oka zostaje zakoñczona z podanym kodem wyj¶cia. Je¶li kod nie zosta³ podany, wówczas kod wyj¶cia przyjmuje bie¿±c± warto¶æ parametru ?.
export [-p] [parametr[=warto¶æ]] ...
Ustawia atrybut eksportu danego parametru. Eksportowane parametry zostaj± przekazywane w otoczeniu do wykonywanych komend. Je¶li podano warto¶ci, to zostaj± one równie¿ przyporz±dkowane danym parametrom.

Je¶li nie podano ¿adnych parametrów, wówczas nazwy wszystkich parametrów z atrybutem eksportu zostaj± wy¶wietlone wiersz po wierszu, chyba ¿e u¿yto opcji -p, wtedy zostaj± wy¶wietlone komendy export definiuj±ce wszystkie eksportowane parametry wraz z ich warto¶ciami.

false
Komenda koñcz±ca siê z niezerowym kodem powrotu.
fc [-e edytor | -l [-n]] [-r] [pierwszy [ostatni]]
pierwszy i ostatni wybieraj± komendy z historii. Komendy mo¿emy wybieraæ przy pomocy ich numeru w historii lub podaj±c ci±g znaków okre¶laj±cy ostatnio u¿yt± komendê rozpoczynaj±c± siê od tego¿ ci±gu. Opcja -l wy¶wietla dan± komendê na stdout, a -n wy³±cza domy¶lne numery komend. Opcja -r odwraca kolejno¶æ komend w li¶cie historii. Bez -l, wybrane komendy podlegaj± edycji przez edytor podany poprzez opcjê -e, albo je¶li nie podano -e, przez edytor podany w parametrze FCEDIT (je¶li nie zosta³ ustawiony ten parametr, wówczas stosuje siê /bin/ed), i nastêpnie wykonana przez pow³okê.
fc [-e - | -s] [-g] [stare=nowe] [prefiks]
Wykonuje ponownie wybran± komendê (domy¶lnie poprzedni± komendê) po wykonaniu opcjonalnej zamiany stare na nowe. Je¶li podano -g, wówczas wszelkie wyst±pienia stare zostaj± zast±pione przez nowe. Z tej komendy korzysta siê zwykle przy pomocy zdefiniowanego domy¶lnie aliasu r='fc -e -'.
fg [zadanie ...]
Przywraca na pierwszy plan zadanie(-nia). Je¶li nie podano jawnie ¿adnego zadania, wówczas odnosi siê to domy¶lnie do %+. Ta komenda jest jedynie dostêpna na systemach wspomagaj±cych kontrolê zadañ. Patrz "Kontrola zadañ" dla dalszych informacji.
getopts ci±gopt nazwa [arg ...]
getopts jest stosowany przez procedury pow³oki do rozpoznawania podanych argumentów (lub parametrów pozycyjnych, je¶li nie podano ¿adnych argumentów) i do sprawdzenia zasadno¶ci opcji. ci±gopt zawiera litery opcji, które getopts ma rozpoznawaæ. Je¶li po literze wystêpuje przecinek, wówczas oczekuje siê, ¿e opcja ma argument. Opcje niemaj±ce argumentów mog± byæ grupowane w jeden argument. Je¶li opcja oczekuje argumentu i znak opcji nie jest ostatnim znakiem argumentu, w którym siê znajduje, wówczas reszta argumentu zostaje potraktowana jako argument danej opcji. W przeciwnym razie nastêpny argument jest argumentem opcji.

Za ka¿dym razem, gdy zostaje wywo³ane getopts, umieszcza siê nastêpn± opcjê w parametrze pow³oki nazwa i indeks nastêpnego argumentu pod obróbkê w parametrze pow³oki OPTIND. Je¶li opcja zosta³a podana z +, to opcja zostaje umieszczana w nazwa z przedrostkiem +. Je¶li opcja wymaga argumentu, to getopts umieszcza go w parametrze pow³oki OPTARG. Je¶li natrafi siê na niedopuszczaln± opcjê lub brakuje argumentu opcji, wówczas w nazwa zostaje umieszczony znak zapytania albo dwukropek (wskazuj±c na nielegaln± opcjê, albo odpowiednio brak argumentu) i OPTARG zostaje ustawiony na znak, który by³ przyczyn± tego problemu. Ponadto zostaje wówczas wy¶wietlony komunikat o b³êdzie na standardowym wyj¶ciu b³êdów, je¶li ci±gopt nie zaczyna siê od dwukropka.

Gdy napotkamy na koniec opcji, getopts przerywa pracê niezerowym kodem wyj¶cia. Opcje koñcz± siê na pierwszym (nie podlegaj±cym opcji) argumencie, który nie rozpoczyna siê od -, albo je¶li natrafimy na argument --.

Rozpoznawanie opcji mo¿e zostaæ ponowione ustawiaj±c OPTIND na 1 (co nastêpuje automatycznie za ka¿dym razem, gdy pow³oka lub funkcja w pow³oce zostaje wywo³ana).

Ostrze¿enie: Zmiana warto¶ci parametru pow³oki OPTIND na warto¶æ wiêksz± ni¿ 1, lub rozpoznawanie odmiennych zestawów parametrów bez ponowienia OPTIND mo¿e doprowadziæ do nieoczekiwanych wyników.

hash [-r] [nazwa ...]
Je¶li brak argumentów, wówczas wszystkie ¶cie¿ki wykonywalnych komend z kluczem s± wymieniane. Opcja -r nakazuje wyrzucenia wszelkim komend z kluczem z tablicy kluczy. Ka¿da nazwa zostaje odszukiwana tak, jak by to by³a nazwa komendy i dodana do tablicy kluczy je¶li jest to wykonywalna komenda.
jobs [-lpn] [zadanie ...]
Wy¶wietl informacje o danych zadaniach; gdy nie podano ¿adnych zadañ wszystkie zadania zostaj± wy¶wietlone. Je¶li podano opcjê -n, wówczas informacje zostaj± wy¶wietlone jedynie o zadaniach, których stan zmieni³ siê od czasu ostatniego powiadomienia. Zastosowanie opcji -l powoduje dodatkowo wykazanie identyfikatora ka¿dego procesu w zadaniach. Opcja -p powoduje, ¿e zostaje wy¶wietlona jedynie jedynie grupa procesowa ka¿dego zadania. patrz "Kontrola zadañ" dla informacji o formie parametru zdanie i formacie, w którym zostaj± wykazywane zadania.
kill [-s nazsyg | -numsyg | -nazsyg ] { job | pid | -pgrp } ...
Wy¶lij dany sygna³ do danych zadañ, procesów z danym id, lub grup procesów. Je¶li nie podano jawnie ¿adnego sygna³u, wówczas domy¶lnie zostaje wys³any sygna³ TERM. Je¶li podano zadanie, wówczas sygna³ zostaje wys³any do grupy procesów danego zadania. Patrz poni¿ej "Kontrola zadañ" dla informacji o formacie zadania.
kill -l [kod_wyj¶cia ...]
Wypisz nazwê sygna³u, który zabi³ procesy, które zakoñczy³y siê danym kodem_wyj¶cia. Je¶li brak argumentów, wówczas zostaje wy¶wietlona lista wszelkich sygna³ów i ich numerów, wraz z krótkim ich opisem.
let [wyra¿enie ...]
Ka¿de wyra¿enie zostaje wyliczone, patrz "Wyra¿enia arytmetyczne" powy¿ej. Je¶li wszelkie wyra¿enia zosta³y poprawnie wyliczone, kodem wyj¶cia jest 0 (1), je¶li warto¶ci± ostatniego wyra¿enia
 nie by³o zero (zero). Je¶li wyst±pi b³±d podczas rozpoznawania lub wyliczania wyra¿enia, kod wyj¶cia jest wiêkszy od 1. Poniewa¿ mo¿e zaj¶æ konieczno¶æ wycytowania wyra¿eñ, wiêc (( wyr. )) jest syntaktycznie s³odszym wariantem let "wyr".
print [-nprsun | -R [-en]] [argument ...]
Print wy¶wietla swe argumenty na standardowym wyj¶ciu, rozdzielone przerwami i zakoñczone prze³amaniem wiersza. Opcja -n zapobiega domy¶lnemu prze³amaniu wiersza. Domy¶lnie pewne wyprowadzenia z C zostaj± odpowiednio przet³umaczone. W¶ród nich mamy \b, \f, \n, \r, \t, \v, i \0### (# oznacza cyfrê w systemie ósemkowym, tzn. od 0 po 3). \c jest równowa¿ne z zastosowaniem opcji -n. \ wyra¿eniom mo¿na zapobiec przy pomocy opcji -r. Opcja -s powoduje wypis do pliku historii zamiast standardowego wyj¶cia, a opcja -u powoduje wypis do deskryptora pliku n (n wynosi domy¶lnie 1 przy pominiêciu), natomiast opcja -p pisze do do koprocesu (patrz "Koprocesy" powy¿ej).

Opcja -R jest stosowana do emulacji, w pewnym stopniu, komendy echo w wydaniu BSD, która nie przetwarza sekwencji \ bez podania opcji -e. Jak powy¿ej opcja -n zapobiega koñcowemu prze³amaniu wiersza.

pwd [-LP]
Wypisz bie¿±cy katalog roboczy. Przy zastosowaniu opcji -L lub gdy nie zosta³a ustawiona opcja physical (patrz komenda set poni¿ej), zostaje wy¶wietlona ¶cie¿ka logiczna (tzn. ¶cie¿ka konieczna aby wykonaæ cd do bie¿±cego katalogu). Przy zastosowaniu opcji -P (¶cie¿ka fizyczna) lub gdy zosta³a ustawiona opcja physical, zostaje wy¶wietlona ¶cie¿ka ustalona przez system plików (¶ledz±c katalogi .. a¿ po katalog g³ówny).
read [-prsun] [parametr ...]
Wczytuje wiersz wprowadzenia ze standardowego wej¶cia, rozdziela ten wiersz na pola przy uwzglêdnieniu parametru IFS ( patrz "Podstawienia" powy¿ej) i przyporz±dkowuje pola odpowiednio danym parametrom. Je¶li mamy wiêcej parametrów ni¿ pól, wówczas dodatkowe parametry zostaj± ustawione na zero, a natomiast je¶li jest wiêcej pól ni¿ paramterów to ostatni parametr otrzymuje jako warto¶æ wszystkie dodatkowe pola (wraz ze wszelkimi rozdzielaj±cymi przerwami). Je¶li nie podano ¿adnych parametrów, wówczas zostaje zastosowany parametr REPLY. Je¶li wiersz wprowadzania koñczy siê odwrotnym uko¶nikiem i nie podano opcji -r, to odwrotny uko¶nik i prze³amanie wiersza zostaj± usuniête i zostaje wczytana dalsza czê¶æ danych. Gdy nie zostanie wczytane ¿adne wprowadzenie, read koñczy siê niezerowym kodem wyj¶cia.

Pierwszy parametr mo¿e mieæ do³±czony znak zapytania i ci±g, co oznacza, ¿e dany ci±g zostanie zastosowany jako zachêta do wprowadzenia (wy¶wietlana na standardowym wyj¶ciu b³êdów zanim zostanie wczytane jakiekolwiek wprowadzenie) je¶li wej¶cie jest terminalem (e.g., read nco¶?'ile co¶ków: ').

Opcje -un i -ppowoduj±, ¿e wprowadzenia zostanie wczytywane z deskryptora pliku n albo odpowiednio bie¿±cego koprocesu (patrz komentarze na ten temat w "Koprocesy" powy¿ej). Je¶li zastosowano opcjê -s, wówczas wprowadzenie zostaje zachowane w pliku historii.

readonly [-p] [parametr[=warto¶æ]] ...
Patrz parametr wy³±cznego odczytu nazwanych parametrów. Je¶li zosta³y podane warto¶ci wówczas zostaj± one nadane parametrom przed ustawieniem danego atrybutu. Po nadaniu cechy wy³±cznego odczytu parametrowi, nie ma wiêcej mo¿liwo¶ci wykasowania go lub zmiany jego warto¶ci.

Je¶li nie podano ¿adnych parametrów, wówczas zostaj± wypisane nazwy wszystkich parametrów w cech± wy³±cznego odczytu wiersz po wierszu, chyba ¿e zastosowano opcjê -p, co powoduje wypisanie pe³nych komend readonly definiuj±cych parametry wy³±cznego odczytu wraz z ich warto¶ciami.

return [kod]
Powrót z funkcji lub . skryptu, z kodem wyj¶cia kod. Je¶li nie podano warto¶ci kod, wówczas zostaje domy¶lnie zastosowany kod wyj¶cia ostatnio wykonanej komendy. Przy zastosowaniu poza funkcj± lub . skryptem, komenda ta ma ten sam efekt co exit. Proszê zwróciæ uwagê, i¿ pdksh traktuje zarówno profile jak i pliki z $ENV jako . skrypty, podczas gdy oryginalny Korn shell jedynie profile traktuje jako . skrypty.
set [+-abCefhkmnpsuvxX] [+-o [opcja]] [+-A nazwa] [--] [arg ...]
Komenda set s³u¿y do ustawiania (-) albo kasowania (+) opcji pow³oki, ustawiania parametrów pozycyjnych lub ustawiania parametru ci±gowego. Opcje mog± byæ zmienione przy pomocy syntaktyki +-o opcja, gdzie opcja jest pe³n± nazw± pewnej opcji lub stosuj±c postaæ +-litera, gdzie litera oznacza jednoliterow± nazwê danej opcji (niewszystkie opcje posiadaj± jednoliterow± nazwê). Nastêpuj±ca tablica wylicza zarówno litery opcji (gdy mamy takowe), jak i pe³ne ich nazwy wraz z opisem wp³ywów danej opcji.
-A Ustawia elementy parametru ci±gowego nazwa na arg ...; Je¶li zastosowano -A, ci±g zostaje uprzednio ponowiony (tzn., wyczyszczony); Je¶li zastosowano +A, zastaj± ustawione pierwsze N elementów (gdzie N jest ilo¶ci± argsów), reszta pozostaje niezmieniona.
-a allexport wszystkie nowe parametry zostaj± tworzone z cech± eksportowania
-b notify Wypisuj komunikaty o zadaniach asynchronicznie, zamiast tu¿ przed zachêt±. Ma tylko znaczenia je¶li zosta³a w³±czona kontrola zadañ (-m).
-C noclobber Zapobiegaj przepisywaniu istniej±cych ju¿ plików poprzez przekierowania > (do wymuszenia przepisania musi zostaæ zastosowane >|).
-e errexit Wyjd¼ (po wykonaniu komendy pu³apki ERR) tu¿ po wyst±pieniu b³êdu lub niepomy¶lnym wykonaniu jakiej¶ komendy (tzn., je¶li zosta³a ona zakoñczona niezerowym kodem wyj¶cia). Nie dotyczy to komend, których kod wyj¶cia zostaje jawnie przetestowany konstruktem pow³oki takim jak wyra¿enia if, until, while, && lub ||.
-f noglob Nie rozwijaj wzorców nazw plików.
-h trackall Twórz ¶ledzone aliasy dla wszystkich wykonywanych komend (patrz "Aliasy" powy¿ej). Domy¶lnie w³±czone dla nieinterakcyjnych pow³ok.
-i interactive W³±cz tryb interakcyjny - mo¿e zostaæ w³±czone/wy³±czone jedynie podczas odpalania pow³oki.
-k keyword Przyporz±dkowania warto¶ci parametrom zostaj± rozpoznawane gdziekolwiek w komendzie.
-l login Pow³oka ma byæ pow³ok± zameldowania - mo¿e zostaæ w³±czone/wy³±czone jedynie podczas odpalania pow³oki (patrz "Uruchamianie pow³oki" powy¿ej).
-m monitor W³±cz kontrolê zadañ (domy¶lne dla pow³ok interakcyjnych).
-n noexec Nie wykonuj jakichkolwiek komend - przydatne do sprawdzania syntaktyki skryptów (ignorowane dla interakcyjnych pow³ok).
-p privileged Ustawiane automatycznie, je¶li gdy pow³oka zostaje odpalona i rzeczywiste uid lub gid nie jest identyczne z odpowiednio efektywnym uid lub gid. Patrz "Uruchamianie pow³oki" powy¿ej dla opisu, co to znaczy.
-r restricted Ustaw tryb ograniczony --- ta opcja mo¿e zostaæ jedynie zastosowana podczas odpalania pow³oki. Patrz "Uruchamianie pow³oki" dla opisu, co to znaczy.
-s stdin Gdy zostanie zastosowane podczas odpalania pow³oki, wówczas komendy zostaj± wczytywane ze standardowego wej¶cia. Ustawione automatycznie, je¶li pow³oka zosta³a odpalona bez jakichkolwiek argumentów.

Je¶li -s zostaje zastosowane w komendzie set, wówczas podane argumenty zostaj± uporz±dkowane zanim zostan± one przydzielone parametrom pozycyjnym (lub ci±gowi nazwa, je¶li -A zosta³o zastosowane).

-u nounset Odniesienie do nieustawionego parametru zostaje traktowane jako b³±d, chyba ¿e zosta³ zastosowany jeden z modyfikatorów -, + lub =.
-v verbose Wypisuj wprowadzenia pow³oki na standardowym wyj¶ciu b³êdów podczas ich wczytywania.
-x xtrace Wypisuj komendy i przyporz±dkowania parametrów podczas ich wykonywania poprzedzone warto¶ci± PS4.
-X markdirs Podczas generowania nazw plików oznaczaj katalogi koñcz±cym /.
bgnice Zadania w tle zostaj± wykonywane z ni¿szym priorytetem.
braceexpand W³±cz rozwijanie nawiasów (aka, alternacja).
emacs W³±cz edycjê wiersza komendy w stylu BRL emacsa (dotyczy wy³±cznie pow³ok interakcyjnych); patrz "Interakcyjna edycja wiersza poleceñ w trybie emacs".
gmacs W³±cz edycjê wiersza komendy w stylu gmacsa (Gosling emacs) (dotyczy wy³±cznie pow³ok interakcyjnych); obecnie identyczne z trybem edycji emacs z wyj±tkiem tego, ¿e przemiana (^T) zachowuje siê nieco inaczej.
ignoreeof Pow³oka nie zostanie zakoñczona je¶li zostanie wczytany znak zakoñczenia pliku. Nale¿y u¿yæ jawnie exit.
nohup Nie zabijaj bie¿±cych zadañ sygna³em HUP gdy pow³oka zameldowania zostaje zakoñczona. Obecnie ustawione domy¶lnie, co siê jednak zmieni w przysz³o¶ci w celu poprawienia kompatybilno¶ci z oryginalnym Korn shell (który nie posiada tej opcji, aczkolwiek wysy³a sygna³ HUP).
nolog Bez znaczenia - w oryginalnej pow³oce Korn. Zapobiega sortowaniu definicji funkcji w pliku historii.
physical Powoduje, ¿e komendy cd oraz pwd stosuj± `fizyczne' (tzn. pochodz±ce od systemu plików) .. katalogi zamiast `logicznych' katalogów (tzn., ¿e pow³oka interpretuje .., co pozwala u¿ytkownikowi nie troszczyæ siê o dowi±zania symboliczne do katalogów). Domy¶lnie wykasowane. Proszê zwróciæ uwagê, i¿ ustawianie tej opcji nie wp³ywa na bie¿±c± warto¶æ parametru PWD; jedynie komenda cd zmienia PWD. Patrz komendy cd i pwd powy¿ej dla dalszych szczegó³ów.
posix W³±cz tryb POSIX-owy. Patrz: "Tryb POSIX" powy¿ej.
vi W³±cz edycjê wiersza komendy w stylu vi (dotyczy tylko pow³ok interakcyjnych).
viraw Bez znaczenia - w oryginalnej pow³oce Korna, dopóki nie zosta³o ustawione viraw, tryb wiersza komendy vi pozostawia³ pracê napêdowi tty a¿ do wprowadzenia ESC (^[). pdksh jest zawsze w trybie viraw.
vi-esccomplete W trybie edycji wiersza komendy vi wykonuj rozwijania komend / plików gdy zostanie wprowadzone escape (^[) w trybie komendy.
vi-show8 Dodaj przedrostek `M-' dla znaków z ustawionym ósmym bitem. Je¶li nie zostanie ustawiona ta opcja, wówczas, znaki z zakresu 128-160 zostaj± wypisane bez zmian, co mo¿e byæ przyczyn± problemów.
vi-tabcomplete W trybie edycji wiersza komendy vi wykonuj rozwijania komend/ plików je¶li tab (^I) zostanie wprowadzone w trybie wprowadzania.

Tych opcji mo¿na u¿yæ równie¿ podczas odpalania pow³oki. Obecny zestaw opcji (z jednoliterowymi nazwami) znajduje siê w parametrze -. set -o bez podania nazwy opcji wy¶wietla wszystkie opcja i informacjê o ich ustawieniu lub nie; set +o wypisuje pe³ne nazwy opcji obecnie w³±czonych.

Pozosta³e argumenty, je¶li podano takowe, s± traktowane jako parametry pozycyjne i zostaj± przyporz±dkowane, przy zachowaniu kolejno¶ci, parametrom pozycyjnym (tzn., 1, 2, itd.). Je¶li opcje koñcz± siê -- i brak dalszych argumentów, wówczas wszystkie parametry pozycyjne zostaj± wyczyszczone. Je¶li nie podano ¿adnych opcji lub argumentów, wówczas zostaj± wy¶wietlone warto¶ci wszystkich nazw. Z nieznanych historycznych powodów, samotna opcja - zostaje traktowana specjalnie: kasuje zarówno opcjê -x, jak i -v.

shift [liczba]
Parametry pozycyjne liczba+1, liczba+2 itd. zostaj± przeniesione pod 1, 2, itd. liczba wynosi domy¶lnie 1.
test wyra¿enie
[ wyra¿enie ]
test wylicza wyra¿enia i zwraca kod wyj¶cia zero je¶li prawda, i kod 1 jeden je¶li fa³sz, a wiêcej ni¿ 1 je¶li wyst±pi³ b³±d. Zostaje zwykle zastosowane jako komenda warunkowa wyra¿eñ if i while. Mamy do dyspozycji nastêpuj±ce podstawowe wyra¿enia:
ci±g ci±g ma niezerow± d³ugo¶æ. Proszê zwróciæ uwagê, i¿ mog± wyst±piæ trudno¶ci je¶li ci±g oka¿e siê byæ operatorem (dok³adniej, -r) - ogólnie lepiej jest zamiast tego stosowaæ test postaci
[ X"ciag" != X ]
(podwójne wycytowania zostaj± zastosowane je¶li ci±g zawiera przerwy lub znaki rozwijania plików).
-r plik plik istnieje i jest czytelny
-w plik plik istnieje i jest zapisywalny
-x plik plik istnieje i jest wykonywalny
-a plik plik istnieje
-e plik plik istnieje
-f plik plik jest zwyk³ym plikiem
-d plik plik jest katalogiem
-c plik plik jest specjalnym plikiem napêdu ci±gowego
-b plik plik jest specjalnym plikiem napêdu blokowego
-p plik plik jest potokiem nazwanym
-u plik plik o ustawionym bicie setuid
-g plik plik' o ustawionym bicie setgid
-k plik plik o ustawionym bicie lepko¶ci
-s plik plik nie jest pusty
-O plik w³a¶ciciel pliku zgadza siê z efektywnym user-id pow³oki
-G plik grupa pliku zgadza siê z efektywn± group-id pow³oki
-h plik plik jest symbolicznym [WK: twardym?] dowi±zaniem
-H plik plik jest zale¿nym od kontekstu katalogiem (tylko sensowne pod HP-UX)
-L plik plik jest symbolicznym dowi±zaniem
-S plik plik jest gniazdem
-o opcja Opcja pow³oki jest ustawiona (patrz komenda set powy¿ej dla listy mo¿liwych opcji). Jako niestandardowe rozszerzenie, je¶li opcja zaczyna siê od !, to wynik testu zostaje negowany; test wypada zawsze negatywnie gdy dana opcja nie istnieje (tak wiêc
[ -o co¶ -o -o !co¶ ]
zwraca prawdê tylko i tylko wtedy, gdy opcja co¶ istnieje).
plik -nt plik pierwszy plik jest nowszy od nastêpnego pliku
plik -ot plik pierwszy plik jest starszy od nastêpnego pliku
plik -ef plik pierwszy plik jest to¿samy z drugim plikiem
-t [fd] Deskryptor pliku jest przyrz±dem tty. Je¶li nie zosta³a ustawiona opcja posix (set -o posix, patrz "Tryb POSIX" powy¿ej), wówczas fd mo¿e zostaæ pominiêty, co oznacza przyjêcie domy¶lnej warto¶ci 1 (zachowanie siê jest wówczas odmienne z powodu specjalnych regu³ POSIX-a opisywanych powy¿ej).
ci±g ci±g jest niepusty
-z ci±g ci±g jest pusty
-n ci±g ci±g jest niepusty
ci±g = ci±g ci±gi s± sobie równe
ci±g == ci±g ci±gi s± sobie równe
ci±g != ci±g ci±gi siê ró¿ni±
liczba -eq liczba liczby s± równe
liczba -ne liczba liczby ró¿ni± siê
liczba -ge liczba liczba jest wiêksza lub równa od drugiej
liczba -gt liczba liczba jest wiêksza od drugiej
liczba -le liczba liczba jest mniejsza lub równa od drugiej
liczba -lt liczba liczba jest mniejsza od drugiej

Powy¿sze podstawowe wyra¿enie, w których unarne operatory maj± pierwszeñstwo przed operatorami binarnymi, mog± byæ stosowane w po³±czeniu z nastêpuj±cymi operatorami (wymienionymi w kolejno¶ci odpowiadaj±cej ich pierwszeñstwu):

wyra¿enie -o wyra¿enie logiczne lub
wyra¿enie -a wyra¿enie logiczne i
! wyra¿enie logiczna negacja
( wyra¿enie ) grupowanie

W systemie operacyjny niewspomagaj±cy napêdów /dev/fd/n (gdzie n jest numerem deskryptora pliku), komenda test stara siê je emulowaæ dla wszystkich testów operuj±cych na plikach (z wyj±tkiem testu -e). W szczególno¶ci., [ -w /dev/fd/2 ] sprawdza czy jest dostêpny zapis na deskryptor pliku 2.

Proszê zwróciæ uwagê, ¿e zachodz± specjalne regu³y (zawdziêczane ), je¶li liczba argumentów do test lub [ ... ] jest mniejsza od piêciu: je¶li pierwsze argumenty ! mog± zostaæ pominiête, tak ¿e pozostaje tylko jeden argument, wówczas zostaje przeprowadzony test d³ugo¶ci ci±gu (ponownie, nawet je¶li dany argument jest unarnym operatorem); je¶li pierwsze argumenty ! mog± zostaæ pominiête tak, ¿e pozostaj± trzy argumenty i drugi argument jest operatorem binarnym, wówczas zostaje wykonana dana binarna operacja (nawet je¶li pierwszy argument jest unarnym operatorem operator, wraz z nieusuniêtym !).

Uwaga: Czêstym b³êdem jest stosowanie if [ $co¶ = tam ], co daje wynik negatywny je¶li parametr co¶ jest zerowy lub nieustawiony, zawiera przerwy (tzn., znaki z IFS), lub gdy jest operatorem jednoargumentowym, takim jak ! lub -n. Proszê zamiast tego stosowaæ testy typu if [ "X$co¶" = Xtam ].

times
Wy¶wietla zgromadzony czas w przestrzeni u¿ytkownika oraz systemu, który potrzebowa³a pow³oka i w niej wystartowane procesy, które siê zakoñczy³y.
trap [obrabiacz sygna³ ...]
Ustawia obrabiacz, który nale¿y wykonaæ w razie odebrania danego sygna³u. Obrabiacz mo¿e byæ albo zerowym ci±giem, wskazuj±cym na zamiar ignorowania sygna³ów danego typu, albo minusem (-), wskazuj±cym, ¿e ma zostaæ podjêta akcja domy¶lna dla danego sygna³u (patrz signal(2 lub 3)), albo ci±giem zawieraj±cym komendy pow³oki które maj± zostaæ wyliczone i wykonane przy pierwszej okazji (tzn. po zakoñczeniu bie¿±cej komendy lub przed wypisaniem nastêpnego symboli zachêty PS1) po odebraniu jednego z danych sygna³ów. Signal jest nazw± danego sygna³u (tak jak np., PIPE lub ALRM) lub jego numerem (patrz komenda kill -l powy¿ej). Istniej± dwa specjalne sygna³y: EXIT (równie¿ znany jako 0), który zostaje wykonany tu¿ przed zakoñczeniem pow³oki, i ERR który zostaje wykonany po wyst±pieniu b³êdu (b³êdem jest co¶, co powodowa³oby zakoñczenie pow³oki je¶li zosta³y ustawione opcje -e lub errexit --- patrz komendy set powy¿ej). Obrabiacze EXIT zostaj± wykonane w otoczeniu ostatniej wykonywanej komendy. Proszê zwróciæ uwagê, ¿e dla pow³ok nieinterakcyjnych obrabiacz wykroczeñ nie mo¿e zostaæ zmieniony dla sygna³ów, które by³y ignorowane podczas startu danej pow³oki.

Bez argumentów, trap wylicza, jako seria komend trap, obecny status wykroczeñ, które zosta³y ustawione od czasu startu pow³oki.

Traktowanie sygna³ów DEBUG oraz ERR i EXIT i oryginalnej pow³oki Korna w funkcjach nie zosta³o jak do tej pory jeszcze zrealizowane.

true
Komenda koñcz±ca siê zerow± warto¶ci± kodu wyj¶cia.
typeset [[+-Ulprtux] [-L[n]] [-R[n]] [-Z[n]] [-i[n]] | -f [-tux]] [nazwa[=warto¶æ] ...]
Wy¶wietlaj lub ustawiaj warto¶ci atrybutów parametrów. Bez argumentów nazwa, zostaj± wy¶wietlone atrybuty parametrów: je¶li brak argumentów bêd±cych opcjami, zostaj± wy¶wietlone atrybuty wszystkich parametrów jako komendy typeset; je¶li podano opcjê (lub - bez litery opcji) wszystkie parametry i ich warto¶ci posiadaj±ce dany atrybut zostaj± wy¶wietlone; je¶li opcje zaczynaj± siê od +, to nie zostaj± wy¶wietlone warto¶ci parametrów.

Je¶li podano argumenty If nazwa, zostaj± ustawione atrybuty danych parametrów (-) lub odpowiednio wykasowane (+). Warto¶ci parametrów mog± zostaæ ewentualnie podane. Je¶li typeset zostanie zastosowane wewn±trz funkcji, wszystkie nowotworzone parametry pozostaj± lokalne dla danej funkcji.

Je¶li zastosowano -f, wówczas typeset operuje na atrybutach funkcji. Tak jak dla parametrów, je¶li brak nazws, zostaj± wymienione funkcje wraz z ich warto¶ciami (tzn., definicjami), chyba ¿e podano opcje zaczynaj±ce siê od +, w którym wypadku zostaj± wymienione tylko nazwy funkcji.

-Ln Atrybut przyrównania do lewego brzegu: n oznacza szeroko¶æ pola. Je¶li brak n, to zostaje zastosowana bie¿±ca szeroko¶æ parametru (lub szeroko¶æ pierwszej przyporz±dkowywanej warto¶ci). Prowadz±ce bia³e przerwy (tak jak i zera, je¶li ustawiono opcjê -Z) zostaj± wykasowane. Je¶li trzeba, warto¶ci zostaj± albo obciête lub dodane przerwy do osi±gniêcia wymaganej szeroko¶ci.
-Rn Atrybut przyrównania do prawego brzegu: n oznacza szeroko¶æ pola. Je¶li brak n, to zostaje zastosowana bie¿±ca szeroko¶æ parametru (lub szeroko¶æ pierwszej przyporz±dkowywanej warto¶ci). Bia³e przerwy na koñcu zostaj± usuniête. Je¶li trzeba, warto¶ci zostaj± albo pozbawione prowadz±cych znaków albo przerwy zostaj± dodane do osi±gniêcia wymaganej szeroko¶ci.
-Zn Atrybut wype³niania zerami: je¶li nie skombinowany z -L, to oznacza to samo co -R, tylko, ¿e do rozszerzania zostaje zastosowane zero zamiast przerw.
-in Atrybut ca³kowito¶ci: n podaje bazê do zastosowania podczas wypisywania danej warto¶ci ca³kowitej (je¶li nie podano, to baza zostaje zaczerpniêta z bazy zastosowanej w pierwszym przyporz±dkowaniu warto¶ci). Parametrom z tym atrybutem mog± byæ przyporz±dkowywane warto¶ci zawieraj±ce wyra¿enia arytmetyczne.
-U Atrybut dodatniej ca³kowito¶ci: liczby ca³kowite zostaj± wy¶wietlone jako warto¶ci bez znaku (stosowne jedynie w powi±zaniu z opcj± -i). Tej opcji brak w oryginalnej pow³oce Korna.
-f Tryb funkcji: wy¶wietlaj lub ustawiaj funkcje i ich atrybuty, zamiast parametrów.
-l Atrybut ma³ej litery: wszystkie znaki z du¿ej litery zostaj± w warto¶ci zamienione na ma³e litery. (W oryginalnej pow³oce Korna, parametr ten oznacza³ `d³ugi ca³kowity' gdy by³ stosowany w po³±czeniu z opcj± -i).
-p Wypisuj pe³ne komendy typeset, które mo¿na nastêpnie zastosowaæ do odtworzenia danych atrybutów (lecz nie warto¶ci) parametrów. To jest wynikiem domy¶lnym (opcja ta istnieje w celu zachowania kompatybilno¶ci z ksh93).
-r Atrybut wy³±cznego odczytu: parametry z danym atrybutem nie przyjmuj± nowych warto¶ci i nie mog± zostaæ wykasowane. Po ustawieniu tego atrybutu nie mo¿na go ju¿ wiêcej odaktywniæ.
-t Atrybut zaznaczenia: bez znaczenia dla pow³oki; istnieje jedynie do zastosowania w aplikacjach.

Dla funkcji -t, to atrybut ¶ledzenia. Je¶li zostaj± wykonywane funkcje z atrybutem ¶ledzenia, to opcja pow³oki xtrace (-x) zostaje tymczasowo w³±czona.

-u Atrybut du¿ej litery: wszystkie znaki z ma³ej litery w warto¶ciach zostaj± przestawione na du¿e litery. (W oryginalnej pow³oce Korna, ten parametr oznacza³ `ca³kowity bez znaku' je¶li zosta³ zastosowany w po³±czeniu z opcj± -i, oznacza³o to, ¿e nie mo¿na by³o stosowaæ du¿ych liter dla baz wiêkszych ni¿ 10. patrz opcja -U).

Dla funkcji, -u to atrybut niezdefiniowania. Patrz "Funkcje" powy¿ej dla implikacji tego.

-x Atrybut eksportowania: parametry (lub funkcje) zostaj± umieszczone w otoczenia wszelkich wykonywanych komend. Eksportowanie funkcji nie zosta³o jeszcze do tej pory zrealizowane.
ulimit [-acdfHlmnpsStvw] [warto¶æ]
Wy¶wietl lub ustaw ograniczenia dla procesów. Je¶li brak opcji, to ograniczenie ilo¶ci plików (-f) zostaje przyjête jako domy¶le. warto¶æ, je¶li podana, mo¿e byæ albo wyra¿eniem arytmetycznym lub s³owem unlimited (nieograniczone). Ograniczenia dotycz± pow³oki i wszelkich procesów przez ni± tworzonych po nadaniu ograniczenia. Proszê zwróciæ uwagê, i¿ niektóre systemy mog± zabraniaæ podnoszenia warto¶ci ograniczeñ po ich nadaniu. Ponadto proszê zwróciæ uwagê, ¿e rodzaje dostêpnych ograniczeñ zale¿± od danego systemu - niektóre systemy posiadaj± jedynie mo¿liwo¶æ ograniczania -f.
-a
Wy¶wietla wszystkie ograniczenia; je¶li nie podano -H, to zostaj± wy¶wietlone ograniczenia miêkkie.
-H
Ustaw jedynie ograniczenie twarde (domy¶lnie zostaj± ustawione zarówno ograniczenie twarde jak te¿ i miêkkie).
-S
Ustaw jedynie ograniczenie miêkkie (domy¶lnie zostaj± ustawione zarówno ograniczenie twarde jak te¿ i miêkkie).
-c
Ogranicz wielko¶ci plików zrzutów core do n bloków.
-d
Ogranicz wielko¶æ obszaru danych do n kilobajtów.
-f
Ogranicz wielko¶æ plików zapisywanych przez pow³okê i jej programy pochodne do n bloków (pliki dowolnej wielko¶ci mog± byæ wczytywane).
-l
Ogranicz do n kilobajtów ilo¶æ podkluczonej (podpiêtej) fizycznej pamiêci.
-m
Ogranicz do n kilobajtów ilo¶æ u¿ywanej fizycznej pamiêci.
-n
Ogranicz do n liczbê jednocze¶nie otwartych deskryptorów plików.
-p
Ogranicz do n liczbê jednocze¶nie wykonywanych procesów danego u¿ytkownika.
-s
Ogranicz do n kilobajtów rozmiar obszaru stosu.
-t
Ogranicz do n sekund czas zu¿ywany przez pojedyncze procesy.
-v
Ogranicz do n kilobajtów ilo¶æ u¿ywanej wirtualnej pamiêci; pod niektórymi systemami jest to maksymalny stosowany wirtualny adres (w bajtach, a nie w kilobajtach).
-w
Ogranicz do n kilobajtów ilo¶æ stosowanego obszaru odk³adania.

Dla ulimit blok to zawsze 512 bajtów.

umask [-S] [maska]
Wy¶wietl lub ustaw maskê zezwoleñ w tworzeniu plików, lub umask (patrz umask(2)). Je¶li zastosowano opcjê -S, maska jest wy¶wietlana lub podawana symbolicznie, w przeciwnym razie jako liczba ósemkowa.
Symboliczne maski s± podobne do tych stosowanych przez chmod(1):
[ugoa]{{=+-}{rwx}*}+[,...]
gdzie pierwsza grupa znaków jest czê¶ci± kto, a druga grupa czê¶ci± op, i ostatnio grupa czê¶ci± perm. Czê¶æ kto okre¶la, która czê¶æ umaski ma zostaæ zmodyfikowana. Litery oznaczaj±:
u
prawa u¿ytkownika
g
prawa grupy
o
prawa pozosta³ych (nieu¿ytkownika, niegrupy)
a
wszelkie prawa naraz (u¿ytkownika, grupy i pozosta³ych)

Czê¶æ op wskazujê jak prawa kto maj± byæ zmienione:

=
nadaj
+
dodaj do
-
usuñ z

Czê¶æ perm wskazuje które prawa maj± zostaæ nadane, dodane lub usuniête:

r
prawo czytania
w
prawo zapisu
x
prawo wykonywania

Gdy stosuje siê maski symboliczne, to opisuj± one, które prawa mog± zostaæ udostêpnione (w przeciwieñstwie do masek ósemkowych, w których ustawienie bitu oznacza, ¿e ma on zostaæ wykasowany). Przyk³ad: `ug=rwx,o=' ustawia maskê tak, ¿e pliki nie bêd± odczytywalne, zapisywalne i wykonywalne przez `innych'. Jest ono równowa¿ne (w wiêkszo¶ci systemów) oktalnej masce `07'.

unalias [-adt] [nazwa1 ...]
Aliasy dla danej nazwy zostaj± usuniête. Gdy zastosowano opcjê -a, to wszelkie aliasy zostaj± usuniête. Gdy zastosowano opcjê -t lub -d, to wymienione operacje zostaj± wykonane jedynie na ¶ledzonych lub odpowiednio aliasach katalogów.
unset [-fv] parametr ...
Kasuj wymienione parametry (-v, oznacza domy¶lne) lub funkcje (-f). Status zakoñczenia jest niezerowy je¶li który¶ z danych parametrów by³ ju¿ wykasowany, a zero z przeciwnym razie.
wait [zadanie]
Czekaj na zakoñczenie danego zadania/zadañ. Kodem wyj¶cia wait jest kod ostatniego podanego zadania: je¶li dane zadanie zosta³o zabite sygna³em, kod wyj¶cia wynosi 128 + numer danego sygna³u (patrz kill -l kod_wyj¶cia powy¿ej); je¶li ostatnie dane zadanie nie mo¿e zostaæ odnalezione (bo nigdy nie istnia³o lub ju¿ zosta³o zakoñczone), to kod zakoñczenia wait wynosi 127. Patrz "Kontrola zadañ" poni¿ej w celu informacji o formacie zadanie. Wait zostaje zakoñczone je¶li zajdzie sygna³, na który zosta³ ustawiony obrabiacz, lub gdy zostanie odebrany sygna³ HUP, INT lub QUIT.

Je¶li nie podano zadañ, wait wait czeka na zakoñczenie wszelkich obecnych zadañ (je¶li istniej± takowe) i koñczy siê zerowym kodem wyj¶cia. Je¶li kontrola zadañ zosta³a w³±czona, to zostaje wy¶wietlony kod wyj¶cia zadañ (to nie ma miejsca, je¶li zadania zosta³y jawnie podane).

whence [-pv] [nazwa ...]
Dla ka¿dej nazwy zostaje wymieniony odpowiednio typ komendy (reserved word, built-in, alias, function, tracked alias lub executable). Je¶li podano opcjê -p, to zostaje odszukana ¶cie¿ka dla nazw, bêd±cych zarezerwowanymi s³owami, aliasami, itp. Bez opcji -v whence dzia³a podobnie do command -v, poza tym, ¿e whence odszukuje zarezerwowane s³owa i nie wypisuje aliasów jako komendy alias; z opcj± -v, whence to to samo co command -V. Zauwa¿, ¿e dla whence, opcja -p nie ma wp³ywu na przeszukiwan± ¶cie¿kê, tak jak dla command. Je¶li typ jednej lub wiêcej spo¶ród nazw nie móg³ zostaæ ustalony to kod wyj¶cia jest niezerowy.

Kontrola zadañ

Kontrola zadañ oznacza zdolno¶æ pow³oki to monitorowania i kontrolowania wykonywanych zadañ, które s± procesami lub grupami procesów tworzonych przez komendy lub potoki. Pow³oka przynajmniej ¶ledzi status obecnych zadañ w tle (tzn., asynchronicznych); tê informacjê mo¿na otrzymaæ wykonuj±c komendê jobs. Je¶li zosta³a uaktywniona pe³na kontrola zadañ (stosuj±c set -m lub set -o monitor), tak jak w pow³okach interakcyjnych, to procesy pewnego zadania zostaj± umieszczane we w³asnej grupie procesów, pierwszoplanowe zadnia mog± zostaæ zatrzymane przy pomocy klawisza wstrzymania z terminalu (zwykle ^Z), zadania mog± zostaæ ponownie podjête albo na pierwszym planie albo w tle, stosuj±c odpowiednio komendy fg i bg, i status terminala zostaje zachowany a nastêpnie odtworzony, je¶li zadanie na pierwszym planie zostaje zatrzymane lub odpowiednio wznowione.

Proszê zwróciæ uwagê, ¿e tylko komendy tworz±ce procesy (tzn., komendy asynchroniczne, komendy podpow³ok i niewbudowane komendy nie bêd±ce funkcjami) mog± zostaæ wstrzymane; takie komendy jak read nie mog± tego.

Gdy zostaje stworzone zadanie, to przyporz±dkowuje mu siê numer zadania. Dla interakcyjnych pow³ok, numer ten zostaje wy¶wietlony w [..], i w nastêpstwie identyfikatory procesów w zadaniu, je¶li zostaje wykonywane asynchroniczne zadanie. Do zadania mo¿emy odnosiæ siê w komendach bg, fg, jobs, kill i wait albo poprzez id ostatniego procesu w potoku komend (tak jak jest on zapisywany w parametrze $!) lub poprzedzaj±c numer zadania znakiem procentu (%). Równie¿ nastêpuj±ce sekwencjê z procentem mog± byæ stosowane do odnoszenia siê do zadañ:

%+ Ostatnio zatrzymane zadanie lub, gdy brak zatrzymanych zadañ, najstarsze wykonywane zadanie.
%%, % To samo co %+.
%- Zadanie, które by³oby pod %+ gdyby nie zosta³o zakoñczone.
%n Zadanie z numerem zadania n.
%?ci±g Zadanie zawieraj±ce ci±g ci±g (wystêpuje b³±d, gdy odpowiada mu kilka zadañ).
%ci±g Zadanie zaczynaj±ce siê ci±giem ci±g (wystêpuje b³±d, gdy odpowiada mu kilka zadañ).

Je¶li zadanie zmienia status (tzn., gdy zadanie w tle zostaje zakoñczone lub zadanie na pierwszym planie zostaje wstrzymane), pow³oka wy¶wietla nastêpuj±ce informacje o statusie:

[numer] flaga status komenda
gdzie
 numer
to numer danego zadania.
 flaga
jest + lub - je¶li zadaniem jest odpowiednio zadanie z %+ lub %-, lub przerwa je¶li nie jest ani jednym ani drugim.
 status
Wskazuje obecny stan danego zadania i mo¿e to byæ
Running
Zadanie nie jest ani wstrzymane ani zakoñczone (proszê zwróciæ uwagê, i¿ przebieg nie koniecznie musi oznaczaæ spotrzebowywanie czasu CPU --- proces mo¿e byæ zablokowany, czekaj±c na pewne zaj¶cie).
Done [(numer)]
zadanie zakoñczone. numer to kod wyj¶cia danego zadania, który zostaje pominiêty, je¶li wynosi on zero.
Stopped [(sygna³)]
zadanie zosta³o wstrzymane danym sygna³em sygna³ (gdy brak sygna³u, to zadanie zosta³o zatrzymane przez SIGTSTP).
opis-sygna³u [(core dumped)]
zadanie zosta³o zabite sygna³em (tzn., Memory fault, Hangup, itp. --- zastosuj kill -l dla otrzymania listy opisów sygna³ów). Wiadomo¶æ (core dumped) wskazuje, ¿e proces stworzy³ plik zrzutu core.
 command
to komenda, która stworzy³a dany proces. Je¶li dane zadanie zawiera kilka procesów, to ka¿dy proces zostanie wy¶wietlony w osobnym wierszy pokazuj±cym jego command i ewentualnie jego status, je¶li jest on odmienny od statusu poprzedniego procesu.

Je¶li próbuje siê zakoñczyæ pow³okê, podczas gdy istniej± zadania w stanie zatrzymania, to pow³oka ostrzega u¿ytkownika, ¿e s± zadania w stanie zatrzymania i nie koñczy pracy. Gdy tu¿ potem zostanie podjêta ponowna próba zakoñczenia pow³oki, to zatrzymane zadania otrzymuj± sygna³ HUP i pow³oka koñczy pracê. podobnie, je¶li nie zosta³a ustawiona opcja nohup, i s± zadania w pracy, gdy zostanie podjêta próba zakoñczenia pow³oki zameldowania, pow³oka ostrzega u¿ytkownika i nie koñczy pracy. Gdy tu¿ potem zostanie ponownie podjêta próba zakoñczenia pracy pow³oki, to bie¿±ce procesy otrzymuj± sygna³ HUP i pow³oka koñczy pracê.

Interakcyjna edycja wiersza poleceñ w trybie emacs

Je¶li zosta³a ustawiona opcja emacs,jest w³±czona interakcyjna edycja wiersza wprowadzeñ. Ostrze¿enie: Ten tryb zachowuje siê nieco inaczej ni¿ tryb emacsa w oryginalnej pow³oce Korna i 8-my bit zostaje wykasowany w trybie emacsa. W trybie tym ró¿ne komendy edycji (zazwyczaj pod³±czone pod jeden lub wiêcej znaków steruj±cych) powoduj± natychmiastowe akcje bez odczekiwania nastêpnego prze³amania wiersza. Wiele komend edycji jest zwi±zywanych z pewnymi znakami steruj±cymi podczas odpalania pow³oki; te zwi±zki mog± zostaæ zmienione przy pomocy nastêpuj±cych komend:
bind
Obecne zwi±zki zostaj± wyliczone.
bind ci±g=[komenda-edycji]
Dana komenda edycji zostaje podwi±zana pod dany ci±g, który powinien sk³adaæ siê ze znaku steruj±cego (zapisanego przy pomocy strza³ki w górê ^X), poprzedzonego ewentualnie jednym z dwóch znaków przedsionkownych. Wprowadzenie danego ci±gu bêdzie wówczas powodowa³o bezpo¶rednie wywo³anie danej komendy edycji. Proszê zwróciæ uwagê, ¿e choæ tylko dwa znaki przedsionkowe (zwykle ESC i ^X) s± wspomagane, to mog± równie¿ zostaæ podane niektóre ci±gi wieloznakowe. Nastêpuj±ce pod³±cza klawisze terminala ANSI lub xterm (które s± w domy¶lnych podwi±zaniach). Oczywi¶cie niektóre sekwencje wyprowadzenia nie chc± dzia³aæ tak g³adko:
bind '^[['=prefix-2
bind '^XA'=up-history
bind '^XB'=down-history
bind '^XC'=forward-char
bind '^XD'=backward-char
bind -l
Wymieñ nazwy funkcji, do których mo¿na pod³±czyæ klawisze.
bind -m ci±g=[podstawienie]
Dany ci±g wprowadzenia ci±g zostanie zamieniony bezpo¶rednio na dane podstawienie, które mo¿e zawieraæ komendy edycji.

Nastêpuje lista dostêpnych komend edycji. Ka¿dy z poszczególnych opisów zaczyna siê nazw± komendy, liter± n, je¶li komenda mo¿e zostaæ poprzedzona licznikiem, i wszelkimi klawiszami, do których dana komenda jest pod³±czona domy¶lnie (w zapisie stosuj±cym notacjê strza³kow±, tzn., znak ASCII ESC jest pisany jako ^[). Licznik poprzedzaj±cy komendê wprowadzamy stosuj±c ci±g ^[n, gdzie n to ci±g sk³adaj±cy siê z jednej lub wiêcej cyfr; chyba ¿e podano inaczej licznik, je¶li zosta³ pominiêty, wynosi domy¶lnie 1. Proszê zwróciæ uwagê, ¿e nazwy komend edycji stosowane s± jedynie w komendzie bind. Ponadto, wiele komend edycji jest przydatnych na terminalach z widocznym kursorem. Domy¶lne podwi±zania zosta³y wybrane tak, aby by³y zgodne z odpowiednimi podwi±zaniami Emacsa. Znaki u¿ytkownika tty (w szczególno¶ci, ERASE) zosta³y pod³±czenia do stosownych podstawieñ i kasuj± domy¶lne pod³±czenia.

abort ^G
Przydatne w odpowiedzi na zapytanie o wzorzec przeszukiwania_historii do przerwania tego szukania.
auto-insert n
Powoduje po prostu wy¶wietlenie znaku jako bezpo¶rednie wprowadzenie. Wiêkszo¶æ zwyk³ych znaków jest pod to pod³±czona.
backward-char n ^B
Przesuwa kursor n znaków wstecz.
backward-word n ^[B
Przesuwa kursor wstecz na pocz±tek s³owa; s³owa sk³adaj± siê ze znaków alfanumerycznych, podkre¶lenia (_) i dolara ($).
beginning-of-history ^[<
Przesuwa na pocz±tek historii.
beginning-of-line ^A
Przesuwa kursor na pocz±tek edytowanego wiersza wprowadzenia.
capitalize-word n ^[c, ^[C
Przemienia pierwszy znak w nastêpnych n s³owach na du¿± literê, pozostawiaj±c kursor za koñcem ostatniego s³owa. Je¶li bie¿±cy wiersz nie zaczyna siê od znaku komentarza, zostaje on dodany na pocz±tku wiersza i wiersz zostaje wprowadzony (tak jakby naci¶niêto prze³amanie wiersza), w przeciwnym razie istniej±ce znaki komentarza zostaj± usuniête i kursor zostaje umieszczony na pocz±tku wiersza.
complete ^[^[
Automatycznie dope³nia tyle ile jest jednoznaczne w nazwie komendy lub nazwie pliku zawieraj±cej kursor. Je¶li ca³a pozosta³a czê¶æ komendy lub nazwy pliku jest jednoznaczna to przerwa zostaje wy¶wietlona po wype³nieniu, chyba ¿e jest to nazwa katalogu, w którym to razie zostaje do³±czone /. Je¶li nie ma komendy lub nazwy pliku zaczynaj±cej siê od takiej czê¶ci s³owa, to zostaje wyprowadzony znak dzwonka (zwykle powodujacy s³yszalne zabuczenie).
complete-command ^X^[
Automatycznie dope³nia tyle ile jest jednoznaczne z nazwy komendy zawieraj±cej czê¶ciowe s³owo przed kursorem, tak jak w komendzie complete opisanej powy¿ej.
complete-file ^[^X
Automatycznie dope³nia tyle ile jest jednoznaczne z nazwy pliku zawieraj±cego czê¶ciowe s³owo przed kursorem, tak jak w komendzie complete opisanej powy¿ej.
complete-list ^[=
Wymieñ mo¿liwe dope³nienia bie¿±cego s³owa.
delete-char-backward n ERASE, ^?, ^H
Skasuj n znaków przed kursorem.
delete-char-forward n
Skasuj n znaków po kursorze.
delete-word-backward n ^[ERASE, ^[^?, ^[^H, ^[h
Skasuj n s³ów przed kursorem.
delete-word-forward n ^[d
Kasuje znaki po kursorze, a¿ do koñca n s³ów.
down-history n ^N
Przewija bufor historii w przód n wierszy (pó¼niej). Ka¿dy wiersz wprowadzenia zaczyna siê oryginalnie tu¿ po ostatnim miejscu w buforze historii, tak wiêc down-history nie jest przydatny dopóki nie wykonano search-history lub up-history.
downcase-word n ^[L, ^[l
Zamieñ na ma³e litery nastêpnych n s³ów.
end-of-history ^[>
Porusza do koñca historii.
end-of-line ^E
Przesuwa kursor na koniec wiersza wprowadzenia.
eot ^_
Dzia³a jako koniec pliku; Jest to przydatne, albowiem tryb edycji wprowadzenia wy³±cza normaln± regularyzacjê wprowadzenia terminala.
eot-or-delete n ^D
Dzia³a jako eot je¶li jest samotne na wierszu; w przeciwnym razie dzia³a jako delete-char-forward.
error
Error (ring the bell).
exchange-point-and-mark ^X^X
Umie¶æ kursor na znaczniku i ustaw znacznik na miejsce, w którym by³ kursor.
expand-file ^[*
Dodaje * do bie¿±cego s³owa i zastêpuje dane s³owo wynikiem rozwiniêcia nazwy pliku na danym s³owie. Gdy nie pasuj± ¿adne pliki, zadzwoñ.
forward-char n ^F
Przesuwa kursor naprzód o n znaków.
forward-word n ^[f
Przesuwa kursor naprzód na zakoñczenie n-tego s³owa.
goto-history n ^[g
Przemieszcza do historii numer n.
kill-line KILL
Kasuje ca³y wiersz wprowadzenia.
kill-region ^W
Kasuje wprowadzenie pomiêdzy kursorem a znacznikiem.
kill-to-eol n ^K
Je¶li ominiêto n, to kasuje wprowadzenia od kursora do koñca wiersza, w przeciwnym razie kasuje znaki pomiêdzy kursorem a n-t± kolumn±.
list ^[?
Wy¶wietla sortowan±, skolumnowan± listê nazw komend lub nazw plików (je¶li s± takowe), które mog³yby dope³niæ czê¶ciowe s³owo zawieraj±ce kursor. Do nazw katalogów zostaje do³±czone /.
list-command ^X?
Wy¶wietla sortowan±, skolumnowan± listê nazw komend (je¶li s± takowe), które mog³yby dope³niæ czê¶ciowe s³owo zawieraj±ce kursor.
list-file ^X^Y
Wy¶wietla sortowan±, skolumnowan± listê nazw plików (je¶li s± takowe), które mog³yby dope³niæ czê¶ciowe s³owo zawieraj±ce kursor. Specyfikatory rodzaju plików zostaj± do³±czone tak jak powy¿ej opisano pod list.
newline ^J, ^M
Powoduje przetworzenie bie¿±cego wiersza wprowadzeñ przez pow³okê. Kursor mo¿e znajdowaæ siê aktualnie gdziekolwiek w wierszu.
newline-and-next ^O
Powoduje przetworzenie bie¿±cego wiersza wprowadzeñ przez pow³okê, po czym nastêpny wiersz z historii staje siê wierszem bie¿±cym. Ma to tylko sens po poprzednim up-history lub search-history.
no-op QUIT
Nie robi nic.
prefix-1 ^[
Przedsionek 1-znakowej sekwencji komendy.
prefix-2 ^X
prefix-2 ^[[
Przedsionek 2-znakowej sekwencji komendy.
prev-hist-word n ^[., ^[_
Ostatnie (n-te) s³owo poprzedniej komendy zostaje wprowadzone na miejscu kursora.
quote ^^
Nastêpny znak zostaje wziêty dos³ownie zamiast jako komenda edycji.
redraw ^L
Przerysuj ponownie zachêtê i bie¿±cy wiersz wprowadzenia.
search-character-backward n ^[^]
Szukaj w ty³ w bie¿±cym wierszu n-tego wyst±pienia nastêpnego wprowadzonego znaku.
search-character-forward n ^]
Szukaj w przód w bie¿±cym wierszu n-tego wyst±pienia nastêpnego wprowadzonego znaku.
search-history ^R
Wejd¼ w krocz±cy tryb szukania. Wewnêtrzna lista historii zostaje przeszukiwana wstecz za komendami odpowiadaj±cymi wprowadzeniu. pocz±tkowe ^ w szukanym ci±gu zakotwicza szukanie. Klawisz przerwania powoduje opuszczenie trybu szukania. Inne komendy zostan± wykonywane po opuszczeniu trybu szukania. Ponowne komendy search-history kontynuuj± szukanie wstecz do nastêpnego poprzedniego wyst±pienia wzorca. Bufor historii zawiera tylko skoñczon± ilo¶æ wierszy; dla potrzeby najstarsze zostaj± wyrzucone.
set-mark-command ^[<space>
Postaw znacznik na bie¿±cej pozycji kursora.
stuff
Pod systemami to wspomagaj±cymi, wypycha pod³±czony znak z powrotem do wej¶cia terminala, gdzie mo¿e on zostaæ specjalnie przetworzony przez terminal. Jest to przydatne np. dla opcji BRL ^T minisystata.
stuff-reset
Dzia³a tak jak stuff, a potem przerywa wprowadzenie tak jak przerwanie.
transpose-chars ^T
Na koñcu wiersza lub je¶li w³±czono opcjê gmacs, zamienia dwa poprzedzaj±ce znaki; w przeciwnym razie zamienia poprzedni i bie¿±cy znak, po czym przesuwa kursor jeden znak na prawo.
up-history n ^P
Przewija bufor historii n wierszy wstecz (wcze¶niej).
upcase-word n ^[U, ^[u
Zamienia nastêpnych n s³ów w du¿e litery.
version ^V
Wypisuje wersjê ksh. Obecny bufor edycji zostaje odtworzony gdy tylko zostanie naci¶niêty jakikolwiek klawisz (po czym ten klawisz zostaje przetworzony, chyba ¿e
 jest to przerwa).
yank ^Y
Wprowad¼ ostatnio skasowany ci±g tekstu na bie¿±c± pozycjê kursora.
yank-pop ^[y
bezpo¶rednio po yank, zamienia wprowadzony tekst na nastêpny poprzednio skasowany ci±g tekstu.

Interkacyjny tryb edycji wiersza poleceñ vi

Edytor vi wiersza komendy w ksh obs³uguje w zasadzie te same komendy co edytor vi (patrz vi(1)), poza nastêpuj±cymi wyj±tkami:
  *
zaczyna w trybie wprowadzania,
  *
ma komendy uzupe³niania nazw plików i komend (=, \, *, ^X, ^E, ^F i, opcjonalnie, <tab>),
  *
komenda _ dzia³a odmiennie (w ksh jest to komenda ostatniego argumentu, a w vi przechodzenie do pocz±tku bie¿±cego wiersza),
  *
komendy / i G poruszaj± siê w kierunkach odwrotnych do komendy j
  *
brak jest komend, które nie maj± znaczenia w edytorze obs³uguj±cym jeden wiersz (w szczególno¶ci, przewijanie ekranu, komendy ex :, itp.).

Proszê zwróciæ uwagê, ¿e ^X oznacza control-X; oraz <esc>, <space> i <tab> stosowane s± za escape, space i tab, odpowiednio (bez ¿artów).

Tak jak w vi, s± dwa tryby: tryb wprowadzania i tryb komend. W trybie wprowadzania, wiêkszo¶æ znaków zostaje po prostu umieszczona w buforze na bie¿±cym miejscu kursora w kolejno¶ci ich wpisywania, chocia¿ niektóre znaki zostaj± traktowane specjalnie. W szczególno¶ci nastêpuj±ce znaki odpowiadaj± obecnym ustawieniom tty (patrz stty(1)) i zachowuj± ich normalne znaczenia (normalne warto¶ci s± podane w nawiasach): skasuj (^U), wyma¿ (^?), wyma¿ s³owo (^W), eof (^D), przerwij (^C) i zakoñcz (^\). Poza powy¿szymi dodatkowo równie¿ nastêpuj±ce znaki zostaj± traktowane specjalnie w trybie wprowadzania:

^H kasuje poprzedni znak
^V bezpo¶rednio nastêpny: nastêpny naci¶niêty znak nie zostaje traktowany specjalnie (mo¿na tego u¿yæ do wprowadzenia opisywanych tu znaków)
^J ^M koniec wiersza: bie¿±cy wiersz zostaje wczytany, rozpoznany i wykonany przez pow³okê
<esc> wprowadza edytor w tryb komend (patrz poni¿ej)
^E wyliczanie komend i nazw plików (patrz poni¿ej)
^F dope³nianie nazw plików (patrz poni¿ej). Je¶li zostanie u¿yte dwukrotnie, to wówczas wy¶wietla listê mo¿liwych dope³nieñ; je¶li zostanie u¿yte trzykrotnie, to kasuje dope³nienie.
^X rozwijanie nazw komend i plików (patrz poni¿ej)
<tab> opcjonalnie dope³nianie nazw plików i komend (patrz ^F powy¿ej), w³±czane przez set -o vi-tabcomplete

Je¶li jaki¶ wiersz jest d³u¿szy od szeroko¶ci ekranu (patrz parametr COLUMNS), to zostaje wy¶wietlony znak >, + lub < w ostatniej kolumnie, wskazuj±cy odpowiednio na wiêcej znaków po, przed i po, oraz przed obecn± pozycj±. Wiersz jest przewijany poziomo w razie potrzeby.

W trybie komend, ka¿dy znak zostaje interpretowany jako komenda. Znaki którym nie odpowiada ¿adna komenda, które s± niedopuszczaln± komend± lub s± komendami nie do wykonania, wszystkie wyzwalaj± dzwonek. W nastêpuj±cych opisach komend, n wskazuje, ¿e komendê mo¿na poprzedziæ numerem (tzn., 10l przesuwa w prawo o 10 znaków); gdy brak przedrostka numerowego, to zak³ada siê, ¿e n jest równe 1, chyba ¿e powiemy inaczej. Zwrot `bie¿±ca pozycja' odnosi siê do pozycji pomiêdzy kursorem a znakiem przed nim. `S³owo' to ci±g liter, cyfr lub podkre¶leñ albo ci±g nie nieliter, niecyfr, niepodkre¶leñ, niebia³ych-znaków (tak wiêc, ab2*&^ zawiera dwa s³owa), oraz `du¿e s³owo' jest ci±giem niebia³ych znaków.

Specjalne ksh komendy vi
Nastêpuj±cych komend brak lub s± one odmienne od tych w normalnym edytorze plików vi:
n_
wprowad¼ przerwê z nastêpstwem n-tego du¿ego s³owa z ostatniej komendy w historii na bie¿±cej pozycji i wejd¼ w tryb wprowadzania; je¶li nie podano n to domy¶lnie zostaje wprowadzone ostatnie s³owo.
#
wprowad¼ znak komentarza (#) na pocz±tku bie¿±cego wiersza i przeka¿ ten wiersz do pow³oki ( tak samo jak I#^J).
ng
tak jak G, z tym ¿e, je¶li nie podano n to dotyczy to ostatnio zapamiêtanego wiersza.
nv
edytuj wiersze n stosuj±c edytor vi; je¶li nie podano n, to edytuje bie¿±cy wiersz. W³a¶ciw± wykonywan± komend± jest `fc -e ${VISUAL:-${EDITOR:-vi}} n'.
* i ^X
dope³nianie komendy lub nazwy pliku zostaje zastosowane do obecnego du¿ego s³owa (po dodaniu *, je¶li to s³owo nie zawiera ¿adnych znaków dope³niania nazw plików) - du¿e s³owo zostaje zast±pione s³owami wynikowymi. Je¶li bie¿±ce du¿e s³owo jest pierwszym w wierszu (lub wystêpuje po jednym z nastêpuj±cych znaków: ;, |, &, (, )) i nie zawiera uko¶nika (/) to rozwijanie komendy zostaje wykonane, w przeciwnym razie zostaje wykonane rozwijanie nazwy plików. Rozwijanie komend podpasowuje du¿e s³owo pod wszelkie aliasy, funkcje i wbudowane komendy jak i równie¿ wszelkie wykonywalne pliki odnajdywane przeszukuj±c katalogi wymienione w parametrze PATH. Rozwijanie nazw plików dopasowuje du¿e s³owo do nazw plików w bie¿±cym katalogu. Po rozwiniêciu, kursor zostaje umieszczony tu¿ po ostatnim s³owie na koñcu i edytor jest w trybie wprowadzania.
n\, n^F, n<tab> i n<esc>
dope³nianie nazw komend/plików: zastêpuje bie¿±ce du¿e s³owo najd³u¿szym, jednoznacznym dopasowaniem otrzymanym przez rozwiniêcie nazwy komendy/pliku. <tab> zostaje jedynie rozpoznane je¶li zosta³a w³±czona opcja vi-tabcomplete, podczas gdy <esc> zostaje jedynie rozpoznane je¶li zosta³a w³±czona opcja vi-esccomplete (patrz set -o). Je¶li podano n to zostaje u¿yte n-te mo¿liwe dope³nienie (z tych zwracanych przez komendê wyliczania dope³nieñ nazw komend/plików).
= i ^E
wyliczanie nazw komend/plików: wymieñ wszystkie komendy lub pliki pasuj±ce pod obecne du¿e s³owo.
^V
wy¶wietl wersjê pdksh; jest ona wy¶wietlana do nastêpnego naci¶niêcia klawisza (ten klawisz zostaje zignorowany).
@c
rozwiniêcie makro: wykonaj komendy znajduj±ce siê w aliasie _c.
Komendy przemieszczania w wierszu
nh i n^H
przesuñ siê na lewo n znaków.
nl i n<space>
przesuñ siê w prawo n znaków.
0
przesuñ siê do kolumny 0.
^
przesuñ siê do pierwszego niebia³ego znaku.
n|
przesuñ siê do kolumny n.
$
przesuñ siê do ostatniego znaku.
nb
przesuñ siê wstecz n s³ów.
nB
przesuñ siê wstecz n du¿ych s³ów.
ne
przesuñ siê na przód do koñca s³owo n razy.
nE
przesuñ siê na przód do koñca du¿ego s³owa n razy.
nw
przesuñ siê na przód o n s³ów.
nW
przesuñ siê na przód o n du¿ych s³ów.
%
odnajd¼ wzór: edytor szuka do przodu najbli¿szego nawiasu zamykaj±cego (okr±g³ego, prostok±tnego lub klamrowego), a nastêpnie przesuwa siê miêdzy nim a odpowiadaj±cym mu nawiasem otwieraj±cym.
nfc
przesuñ siê w przód do n-tego wyst±pienia znaku c.
nFc
przesuñ siê w ty³ do n-tego wyst±pienia znaku c.
ntc
przesuñ siê w przód tu¿ przed n-te wyst±pienie znaku c.
nTc
przesuñ siê w ty³ tu¿ przed n-te wyst±pienie znaku c.
n;
powtarza ostatni± komendê f, F, t lub T.
n,
powtarza ostatni± komendê f, F, t lub T, lecz porusza siê w przeciwnym kierunku.
Komendy przemieszczania miêdzy wierszami
nj, n+ i n^N
przejd¼ do n-tego nastêpnego wiersza w historii.
nk, n- i n^P
przejd¼ do n-tego poprzedniego wiersza w historii.
nG
przejd¼ do wiersza n w historii; je¶li brak n, to przenosi siê do pierwszego zapamiêtanego wiersza w historii.
ng
tak jak G, tylko, ¿e je¶li nie podano n to idzie do ostatnio zapamiêtanego wiersza.
n/ci±g
szukaj wstecz w historii n-tego wiersza zawieraj±cego ci±g; je¶li ci±g zaczyna siê od ^, to reszta ci±gu musi wystêpowaæ na samym pocz±tku wiersza historii aby pasowa³a.
n?string
tak jak /, tylko, ¿e szuka do przodu w historii.
nn
szukaj n-tego wyst±pienia ostatnio szukanego ci±gu; kierunek jest ten sam co kierunek ostatniego szukania.
nN
szukaj n-tego wyst±pienia ostatnio szukanego ci±gu; kierunek jest przeciwny do kierunku ostatniego szukania.
Komendy edycji
na
dodaj tekst n-krotnie: przechodzi w tryb wprowadzania tu¿ po bie¿±cej pozycji. Dodanie zostaje jedynie wykonane, je¶li zostanie ponownie uruchomiony tryb komendy (tzn., je¶li <esc> zostanie u¿yte).
nA
tak jak a, z t± ró¿nic±, ¿e dodaje do koñca wiersza.
ni
dodaj tekst n-krotnie: przechodzi w tryb wprowadzania na bie¿±cej pozycji. Dodanie zostaje jedynie wykonane, je¶li zostanie ponownie uruchomiony tryb komendy (tzn., je¶li <esc> zostanie u¿yte).
nI
tak jak i, z t± ró¿nic±, ¿e dodaje do tu¿ przed pierwszym niebia³ym znakiem.
ns
zamieñ nastêpnych n znaków (tzn., skasuj te znaki i przejd¼ do trybu wprowadzania).
S
zast±p ca³y wiersz: wszystkie znaki od pierwszego niebia³ego znaku do koñca wiersza zostaj± skasowane i zostaje uruchomiony tryb wprowadzania.
nckomenda-przemieszczenia
przejd¼ z bie¿±cej pozycji do pozycji wynikaj±cej z n komenda-przemieszczenias (tj., skasuj wskazany region i wejd¼ w tryb wprowadzania); je¶li komend±-przemieszczenia jest c, to wiersz zostaje zmieniony od pierwszego niebia³ego znaku pocz±wszy.
C
zmieñ od obecnej pozycji do koñca wiersza (tzn. skasuj do koñca wiersza i przejd¼ do trybu wprowadzania).
nx
skasuj nastêpnych n znaków.
nX
skasuj poprzednich n znaków.
D
skasuj do koñca wiersza.
ndmove-cmd
skasuj od obecnej pozycji do pozycji wynikaj±cej z n krotnego move-cmd; move-cmd mo¿e byæ komend± przemieszczania (patrz powy¿ej) lub d, co powoduje skasowanie bie¿±cego wiersza.
nrc
zamieñ nastêpnych n znaków na znak c.
nR
zamieñ: wejd¼ w tryb wprowadzania lecz przepisuj istniej±ce znaki zamiast wprowadzania przed istniej±cymi znakami. Zamiana zostaje wykonana n krotnie.
n~
zmieñ wielko¶æ nastêpnych n znaków.
nymove-cmd
wytnij od obecnej pozycji po pozycjê wynikaj±c± z n krotnego move-cmd do bufora wycinania; je¶li move-cmd jest y, to ca³y wiersz zostaje wyciêty.
Y
wytnij od obecnej pozycji do koñca wiersza.
np
wklej zawarto¶æ bufora wycinania tu¿ po bie¿±cej pozycji, n krotnie.
nP
tak jak p, tylko ¿e bufor zostaje wklejony na bie¿±cej pozycji.
Ró¿ne komendy vi
^J i ^M
bie¿±cy wiersz zostaje wczytany, rozpoznany i wykonany przez pow³okê.
^L i ^R
odrysuj bie¿±cy wiersz.
n.
wykonaj ponownie ostatni± komendê edycji n razy.
u
odwróæ ostatni± komendê edycji.
U
odwróæ wszelkie zmiany dokonane w danym wierszu.
intr i quit
znaki terminala przerwy i zakoñczenia powoduj± skasowania bie¿±cego wiersza i wy¶wietlenie nowej zachêty.

PLIKI

~/.profile
/etc/profile
/etc/suid_profile

B£ÊDY

Wszelkie b³êdy w pdksh nale¿y zg³aszaæ pod adresem pdksh@cs.mun.ca. Proszê podaæ wersjê pdksh (echo $KSH_VERSION), maszynê, system operacyjny i stosowany kompilator oraz opis jak powtórzyæ dany b³±d (najlepiej ma³y skrypt pow³oki demonstruj±cy dany b³±d). Nastêpuj±ce mo¿e byæ równie¿ pomocne, je¶li ma znaczenie (je¶li nie jeste¶ pewny to podaj to równie¿): stosowane opcje (zarówno z opcje options.h jak i ustawione -o opcje) i twoja kopia config.h (plik generowany przez skrypt configure). Nowe wersje pdksh mo¿na otrzymaæ z ftp://ftp.cs.mun.ca/pub/pdksh/.

AUTORZY

Ta pow³oka powsta³a z publicznego klonu siódmego wydania pow³oki Bourne'a wykonanego przez Charlesa Forsytha i z czê¶ci pow³oki BRL autorstwa Doug A. Gwyna, Douga Kingstona, Rona Natalie;a, Arnolda Robbinsa, Lou Salkinda i innych. Pierwsze wydanie pdksh stworzy³ Eric Gisin, a nastêpnie troszczyli siê ni± kolejno John R. MacMillan (chance!john@sq.sq.com), i Simon J. Gerraty (sjg@zen.void.oz.au). Obecnym opiekunem jest Michael Rendell (michael@cs.mun.ca). Plik CONTRIBUTORS w dystrybucji ¼róde³ zawiera bardziej kompletn± listê ludzi i ich wk³adu do rozwoju tej pow³oki.

T³umaczenie tego podrêcznika na jêzyk polski wykona³ Marcin Dalecki <dalecki@cs.net.pl>.

ZOBACZ TAK¯E

awk(1), sh(1), csh(1), ed(1), getconf(1), getopt(1), sed(1), stty(1), vi(1), dup(2), execve(2), getgid(2), getuid(2), open(2), pipe(2), wait(2), getopt(3), rand(3), signal(3), system(3), environ(5)

The KornShell Command and Programming Language, Morris Bolsky i David Korn, 1989, ISBN 0-13-516972-0.

UNIX Shell Programming, Stephen G. Kochan, Patrick H. Wood, Hayden.

IEEE Standard for information Technology - Portable Operating System Interface (POSIX) - Part 2: Shell and Utilities, IEEE Inc, 1993, ISBN 1-55937-255-9.