EnglezăFrancezăSpaniolă

Ad


Favicon OnWorks

mksh - Online în cloud

Rulați mksh în furnizorul de găzduire gratuit OnWorks prin Ubuntu Online, Fedora Online, emulator online Windows sau emulator online MAC OS

Aceasta este comanda mksh care poate fi rulată în furnizorul de găzduire gratuit OnWorks folosind una dintre multiplele noastre stații de lucru online gratuite, cum ar fi Ubuntu Online, Fedora Online, emulator online Windows sau emulator online MAC OS

PROGRAM:

NUME


mksh, sh — MirBSD Korn coajă

REZUMAT


mksh [-+abCefhiklmnprUuvXx] [-T [!]tty | -] [-+o opțiune] [-c şir | -s | fişier
[argument ...]]
nume încorporat [argument ...]

DESCRIERE


mksh este un interpret de comandă destinat atât utilizării interactive, cât și a scripturilor shell. Este
limbajul de comandă este un superset al limbajului shell sh(C) și în mare măsură compatibil cu
coajă originală Korn. Uneori, această pagină de manual poate oferi sfaturi de scriptare; în timp ce acesta
uneori ia în considerare scripturile shell portabile sau diverse standarde
informațiile sunt prezentate în primul rând cu mksh în minte și ar trebui luate ca atare.

Sunt an Android utilizator, so ceea ce este mksh?
mksh este un interpret de comandă/shell UNIX, similar cu COMMAND.COM or CMD.EXE, care are
a fost inclus cu Android Open Source Project de ceva vreme. Practic, este un program
care rulează într-un terminal (fereastra consolă), preia intrarea utilizatorului și rulează comenzi sau scripturi,
ceea ce poate fi cerut să facă și de către alte programe, chiar și în fundal. Orice privilegiu
Prin urmare, ferestrele pop-up pe care le puteți întâlni nu sunt mksh probleme, ci întrebări ale altora
program care îl utilizează.

Invocare
Cele mai multe integrate pot fi apelate direct, de exemplu, dacă o legătură indică de la numele său la
coajă; nu toate au sens, au fost testate sau funcționează deloc.

Opțiunile sunt următoarele:

-c şir mksh va executa comenzile conținute în şir.

-i Shell interactiv. Un shell care citește comenzile de la intrarea standard este
„interactiv” dacă se utilizează această opțiune sau dacă atât intrarea standard, cât și eroarea standard
sunt atașate la a tty(4). Un shell interactiv are controlul jobului activat, ignoră
semnalele SIGINT, SIGQUIT și SIGTERM și imprimă solicitări înainte de a citi intrarea
(vezi parametrii PS1 și PS2). De asemenea, procesează parametrul ENV sau
mkshrc fișier (vezi mai jos). Pentru shell-uri non-interactive, the trackall opțiunea este activată
implicit (vezi set comanda de mai jos).

-l Shell de autentificare. Dacă numele de bază cu care se apelează shell-ul (adică argv[0]) începe cu
„-” sau dacă se folosește această opțiune, se presupune că shell-ul este un shell de conectare; vedea
Startup fișiere de mai jos.

-p Cochilie privilegiată. Un shell este „privilegiat” dacă ID-ul utilizatorului real sau ID-ul grupului o face
nu se potrivește cu ID-ul de utilizator efectiv sau ID-ul grupului (vezi getuid(2) și getgid(2)).
Ștergerea opțiunii privilegiate face ca shell-ul să-și stabilească ID-ul de utilizator efectiv
(ID de grup) la ID-ul de utilizator real (ID de grup). Pentru implicații suplimentare, vezi Startup
fișiere. Dacă shell-ul este privilegiat și acest flag nu este setat în mod explicit,
Opțiunea „privilegiată” este ștearsă automat după procesarea fișierelor de pornire.

-r Înveliș restricționat. Un shell este „restricționat” dacă se folosește această opțiune. Următoarele
restricțiile intră în vigoare după ce shell-ul procesează orice profil și ENV
fișiere:

· cd (Și chdir) comanda este dezactivată.
· Parametrii SHELL, ENV și PATH nu pot fi modificați.
· Numele comenzilor nu pot fi specificate cu căi absolute sau relative.
· -p opțiunea comenzii încorporate comandă nu poate fi folosit.
· Redirecționările care creează fișiere nu pot fi utilizate (adică „>”, „>|”, „>>”, „<>”).

-s Shell-ul citește comenzile de la intrarea standard; toate argumentele non-opțiune sunt
parametrii poziționali.

-T nume Icre mksh pe tty(4) dispozitiv dat. Cărările nume, /dev/ttyCname și
/dev/ttyname sunt încercate în ordine. Dacă nu nume începe cu un semn de exclamare
('!'), aceasta se face într-un subshell și revine imediat. Dacă nume este o liniuță
('-'), detașează-te de terminalul de control (daemonise).

Pe lângă cele de mai sus, opțiunile descrise în set poate fi folosită și comanda încorporată
pe linia de comandă: ambele [-+abCefhkmnuvXx] Și [-+o opțiune] poate fi folosit pentru o singură literă
sau, respectiv, opțiuni lungi.

Dacă nici cel -c nici -s este specificată opțiunea, primul argument non-opțiune specifică
numele unui fișier din care shell-ul citește comenzile. Dacă nu există argumente non-opțiune,
shell citește comenzile de la intrarea standard. Numele shell-ului (adică conținutul lui
$0) se determină după cum urmează: dacă -c este folosită opțiunea și există un argument fără opțiune,
este folosit ca nume; dacă comenzile sunt citite dintr-un fișier, fișierul este folosit ca
Nume; în caz contrar, este folosit numele de bază cu care a fost apelat shell-ul (adică argv[0]).

Starea de ieșire a shell-ului este 127 dacă fișierul de comandă specificat pe linia de comandă ar putea
nu poate fi deschis, sau diferit de zero dacă a apărut o eroare de sintaxă fatală în timpul execuției a
scenariu. În absența erorilor fatale, starea de ieșire este cea a ultimei comenzi
executat, sau zero, dacă nu este executată nicio comandă.

Startup fișiere
Pentru locația reală a acestor fișiere, consultați DOSARE. Un shell de conectare procesează sistemul
mai întâi profilul. Un shell privilegiat procesează apoi profilul suid. O autentificare fără privilegii
shell procesează în continuare profilul utilizatorului. Un shell interactiv non-privilegiat verifică valoarea
a parametrului ENV după supunerea acestuia la parametru, comandă, aritmetică și tilde ('~')
substituţie; dacă este nesetat sau este gol, profilul utilizatorului mkshrc este procesat; în caz contrar, dacă un fișier
al cărui nume este rezultatul substituției există, este procesat; inexistenţa este tăcută
ignorat. Un shell privilegiat renunță apoi privilegii dacă niciunul nu a fost -p opțiunea dată pe
linia de comandă și nici setată în timpul execuției fișierelor de pornire.

Comandă sintaxă
Apoi, shell-ul începe să analizeze intrarea prin eliminarea oricăror combinații backslash-newline
spargandu-l in cuvinte. Cuvintele (care sunt secvențe de caractere) sunt delimitate fără ghilimele
caractere cu spații albe (spațiu, tab și linie nouă) sau meta-caractere ('<', '>', '|', ';', '(',
')', și '&'). Pe lângă delimitarea cuvintelor, spațiile și tabulatorii sunt ignorate, în timp ce liniile noi
de obicei delimitează comenzile. Meta-caracterele sunt folosite pentru a construi următoarele jetoane:
„<”, „<&”, „<<”, „<<<”, „>”, „>&”, „>>”, „&>”, etc. sunt folosite pentru a specifica redirecționări (vezi
Intrare ieșire redirecționare de mai jos); '|' este folosit pentru a crea conducte; „|&” este folosit pentru a crea co-
procese (vezi Co-procese de mai jos); ';' este folosit pentru a separa comenzi; „&” este folosit pentru a crea
conducte asincrone; „&&” și „||” sunt folosite pentru a specifica execuția condiționată; ';;', ';&'
și „;|” sunt folosite în caz declarații; „(( .. ))” este folosit în expresii aritmetice; și
în cele din urmă, „( .. )” este folosit pentru a crea subshell-uri.

Spațiile albe și meta-caracterele pot fi citate individual folosind o bară oblică inversă („\”) sau în
grupuri care folosesc ghilimele duble ("'") sau simple ("'"). Rețineți că următoarele caractere sunt
tratate în mod special de către cochilie și trebuie citate dacă vor să se reprezinte:
'\', '"', ''', '#', '$', '`', '~', '{', '}', '*', '?' şi '['. primele trei dintre acestea
sunt personajele citate mai sus menționate (vezi Citându-l de mai jos); „#”, dacă este folosit la
începutul unui cuvânt, introduce un comentariu – totul după „#” până la cel mai apropiat
noua linie este ignorată; „$” este folosit pentru a introduce parametrul, comanda și aritmetica
substituții (vezi Înlocuire de mai jos); '`' introduce o înlocuire de comandă în stil vechi
(A se vedea Înlocuire de mai jos); „~” începe o extindere a directorului (vezi Tildă expansiune de mai jos); '{'
și '}' delimitează csh(1) alternări de stil (vezi Bretele expansiune de mai jos); și, în sfârșit, '*',
„?” și „[” sunt folosite în generarea numelui fișierelor (vezi Fișier nume modele de mai jos).

Pe măsură ce cuvintele și simbolurile sunt analizate, shell-ul creează comenzi, dintre care există două de bază
tipuri: simple-comenzi, de obicei programe care sunt executate și comenzi-compuse, astfel
as pentru și if instrucțiuni, constructe de grupare și definiții de funcții.

O comandă simplă constă dintr-o combinație de atribuiri de parametri (vezi parametrii
mai jos), redirecționări de intrare/ieșire (vezi Intrare ieșire redirecționări de mai jos), și cuvinte de comandă;
singura restricție este aceea că asignările de parametri sunt înaintea oricăror cuvinte de comandă. The
cuvintele de comandă, dacă există, definesc comanda care urmează să fie executată și argumentele acesteia. The
comanda poate fi o comandă încorporată în shell, o funcție sau o comandă externă (adică o comandă separată
fișier executabil care este localizat folosind parametrul PATH; vedea Comandă execuție de mai jos).
Rețineți că toate constructele de comandă au o stare de ieșire: pentru comenzile externe, aceasta este legată
la statutul revenit de aștepta(2) (dacă comanda nu a putut fi găsită, starea de ieșire este
127; dacă nu a putut fi executat, starea de ieșire este 126); starea de ieșire a altei comenzi
constructele (comenzi încorporate, funcții, comenzi compuse, conducte, liste etc.) sunt toate
bine definite și sunt descrise acolo unde este descris constructul. Starea de ieșire a unui
comanda constând doar din alocarea parametrilor este cea a ultimei înlocuiri de comandă
efectuate în timpul parametrizării sau 0 dacă nu au existat substituții de comandă.

Comenzile pot fi înlănțuite folosind „|” jeton pentru a forma conducte, în care
ieșirea standard a fiecărei comenzi, dar ultima este transmisă prin conducte (vezi ţeavă(2)) la intrarea standard a
următoarea comandă. Starea de ieșire a unei conducte este cea a ultimei sale comenzi, cu excepția cazului în care
il eşecul conductei opțiunea este setată (vezi acolo). Toate comenzile unei conducte sunt executate separat
subcochilii; acest lucru este permis de POSIX, dar diferă de ambele variante ale AT&T UNIX ksh, În cazul în care
toate, cu excepția ultimei comenzi au fost executate în subshell-uri; vezi citit descrierea builtin pentru
implicații și soluții alternative. O conductă poate fi prefixată de „!” cuvânt rezervat care
face ca starea de ieșire a conductei să fie completată logic: dacă starea inițială
a fost 0, starea completată va fi 1; dacă statutul inițial nu a fost 0, completat
starea va fi 0.

liste de comenzi pot fi create prin separarea conductelor prin oricare dintre următoarele simboluri:
„&&”, „||”, „&”, „|&” și „;”. Primele două sunt pentru execuție condiționată: „cmd1 && cmd2Matei 22:21
execută cmd2 numai dacă starea de ieşire a cmd1 este zero; '||' este opusul - cmd2 is
executat numai dacă starea de ieșire a cmd1 este diferit de zero. „&&” și „||” au prioritate egală
care este mai mare decât cea a lui „&”, „|&” și „;”, care au, de asemenea, o prioritate egală. Notă
că „&&” și „||” operatorii sunt „asociativi de stânga”. De exemplu, ambele
comenzile vor tipări doar „bara”:

$ false && echo foo || bara de ecou
$ adevărat || echo foo && echo bar

Indicatorul „&” face ca comanda anterioară să fie executată asincron; adică coaja
pornește comanda, dar nu așteaptă să se finalizeze (shell-ul ține evidența fișierului
starea comenzilor asincrone; vedea Loc de munca Control de mai jos). Când o comandă asincronă este
pornit când controlul jobului este dezactivat (adică în majoritatea scripturilor), comanda este pornită cu
semnalele SIGINT și SIGQUIT ignorate și cu intrare redirecționată de la / Dev / null (in orice caz,
redirecționările specificate în comanda asincronă au prioritate). Operatorul „|&”.
pornește un co-proces care este un tip special de proces asincron (vezi Co-procese
de mai jos). Rețineți că o comandă trebuie să urmeze „&&” și „||” operatori, deși nu este necesar
urmați „&”, „|&” sau „;”. Starea de ieșire a unei liste este cea a ultimei comenzi executate,
cu excepția listelor asincrone, pentru care starea de ieșire este 0.

Comenzile compuse sunt create folosind următoarele cuvinte rezervate. Aceste cuvinte sunt doar
recunoscute dacă nu sunt citate și dacă sunt folosite ca prim cuvânt al unei comenzi (de ex
nu pot fi precedate de atribuiri de parametri sau redirecționări):

case else functioneaza atunci ! (
face esac dacă timpul [[ ((
terminat până la {
elif pentru select while }

În următoarele descrieri compuse ale comenzilor, listele de comenzi (notate ca listă) care sunt
urmate de cuvintele rezervate trebuie să se termine cu punct și virgulă, linie nouă sau (din punct de vedere sintactic
corect) cuvânt rezervat. De exemplu, următoarele sunt toate valide:

$ { echo foo; bara de ecou; }
$ { echo foo; bara de ecou }
$ { { echo foo; bara de ecou; } }

Acest lucru nu este valabil:

$ { echo foo; bară de ecou }

(listă)
Executa listă într-un subshell. Nu există o modalitate implicită de a trece schimbările de mediu de la
un subshell înapoi la părintele său.

{ listă;}
Construcție compusă; listă este executat, dar nu într-un subshell. Rețineți că „{” și „}”
sunt cuvinte rezervate, nu meta-caractere.

caz cuvânt în [[(] model [| model] ...) listă terminator] ... esac
caz declarația încearcă să se potrivească cuvânt împotriva unui specificat model; listă
asociat cu primul model potrivit cu succes este executat. Modele utilizate în
caz instrucțiunile sunt aceleași cu cele utilizate pentru modelele de nume de fișier, cu excepția faptului că
restricții cu privire la '.' și „/” sunt eliminate. Rețineți că orice spațiu necotat înainte
și după ce un model este dezbrăcat; orice spațiu dintr-un model trebuie citat. Amandoua
cuvântul și tiparele sunt supuse înlocuirii parametrilor, comenzilor și aritmetice,
precum și înlocuirea tildei.

Din motive istorice, se pot folosi bretele deschise și închise în loc de in și ESAC de exemplu
caz $ foo { *) ecou bar ;; }.

Lista terminatorsunt:

';;' Terminați după listă.

';&' Treceți în următoarea listă.

';|' Evaluați tuplurile rămase din lista de modele.

Starea de ieșire a unui caz declaraţia este cea a executatului listă; daca nu listă is
executat, starea de ieșire este zero.

pentru nume [în cuvânt ...]; do listă; Terminat
Pentru fiecare cuvânt în lista de cuvinte specificată, parametrul nume este setat la cuvântul și
listă este executat. Dacă in nu este folosit pentru a specifica o listă de cuvinte, parametrii poziționali
($1, $2 etc.) sunt folosite în schimb. Din motive istorice, bretele deschise și închise pot fi
folosit în loc de do și făcut de exemplu pentru i; { ecou $i; }. Starea de ieșire a unui pentru
declarația este ultima stare de ieșire a listă; dacă listă nu se execută niciodată, starea de ieșire
este zero.

if listă; apoi listă; [elif listă; apoi listă;] ... [altfel listă;] fi
Dacă starea de ieșire a primului listă este zero, al doilea listă este executat; in caz contrar,
il listă în urma Elif, dacă există, se execută cu consecințe similare. Eu cad
listele care urmează if și Elifs eșuează (adică ieșire cu starea diferită de zero), the listă
în urma altfel este executat. Starea de ieșire a unui if afirmația este aceea de non-
condiţional listă care se executa; dacă nu necondiționat listă este executat, ieșirea
starea este zero.

selecta nume [în cuvânt ...]; do listă; Terminat
selecta declarația oferă o metodă automată de a prezenta utilizatorului un meniu
și selectând din ea. O listă enumerată a celor specificate cuvânt(s) este imprimat
eroare standard, urmată de un prompt (PS3: în mod normal „#? „). Un număr corespunzător
unul dintre cuvintele enumerate este apoi citit din intrarea standard, nume este setat la
cuvântul selectat (sau dezactivat dacă selecția nu este validă), RĂSPUNS este setat la ceea ce a fost citit
(spațiul de început/în urmă este eliminat) și listă este executat. Dacă o linie goală (de ex
zero sau mai mulți octeți IFS), meniul este retipărit fără a fi executat listă.

Cand listă completează, lista enumerată este tipărită dacă REPLY este NULL, promptul este
tipărit și așa mai departe. Acest proces continuă până când este citit un sfârșit de fișier, o întrerupere
este primit, sau a rupe instrucțiunea este executată în interiorul buclei. Dacă „în cuvânt...” este
omis, sunt utilizați parametrii poziționali (adică $1, $2 etc.). Pentru istoric
motive, se pot folosi bretele deschise și închise în loc de do și făcut de exemplu selecta i; {
ecou $i; }. Starea de ieșire a unui selecta afirmația este zero dacă a rupe afirmația este
folosit pentru a ieși din buclă, diferit de zero în caz contrar.

până la listă; jos listă; Terminat
Acest lucru funcționează ca în timp ce, cu excepția faptului că corpul este executat numai în timp ce starea de ieșire a
prima listă este diferit de zero.

în timp ce listă; jos listă; Terminat
A în timp ce este o buclă pre-verificată. Corpul său este executat la fel de des ca statutul de ieșire al
prima listă este zero. Starea de ieșire a unui în timp ce declarația este ultima stare de ieșire
a listă în corpul buclei; dacă corpul nu este executat, starea de ieșire este
zero.

funcţie nume { listă;}
Definește funcția nume (A se vedea funcţii de mai jos). Rețineți că redirecționările au fost specificate
după definirea unei funcții sunt efectuate ori de câte ori funcția este executată, nu când
se execută definiţia funcţiei.

nume() comandă
În mare parte la fel ca funcţie (A se vedea funcţii de mai jos). Spațiu alb (spațiu sau tab) după
nume vor fi ignorate de cele mai multe ori.

funcţie nume() { listă;}
La fel ca nume() (pocniism). The funcţie cuvântul cheie este ignorat.

timp [-p] [conducte]
Comandă execuție secțiunea descrie timp cuvânt rezervat.

(( expresie ))
Expresia aritmetică expresie este evaluat; echivalent cu „expresie lasă” (vezi
Aritmetică expresii si lăsa comanda, mai jos) într-un construct compus.

[[ expresie ]]
În mod similar cu test și [ ... ] comenzi (descrise mai târziu), cu următoarele
exceptii:

· Divizarea câmpurilor și generarea numelor de fișier nu sunt efectuate pe argumente.

· -a (Si si -o Operatorii (OR) sunt înlocuiți cu „&&” și, respectiv, „||”.

· Operatori (de ex. '-f', '=', '!') trebuie să fie fără ghilimele.

· Substituțiile de parametri, comenzi și aritmetice sunt efectuate așa cum sunt expresiile
evaluarea expresiei evaluată și leneșă este utilizată pentru „&&” și „||” operatori.
Aceasta înseamnă că în următoarea afirmație, $( este evaluată dacă și numai dacă
fișierul foo există și este ușor de citit:

$ [[ -r foo && $(

· Al doilea operand al expresiilor „!=” și „=” este un subset de modele (de ex
comparatia [[ foobar = f*r ]] reușește). Acest lucru funcționează chiar și indirect:

$ bar=foobar; baz='f*r'
$ [[ $bar = $baz ]]; eco $?
$ [[ $bar = "$baz" ]]; eco $?

Poate în mod surprinzător, prima comparație reușește, în timp ce a doua nu.
În prezent, acest lucru nu se aplică tuturor metacaracterelor extglob.

Citându-l
Citarea este folosită pentru a împiedica shell-ul să trateze caractere sau cuvinte în mod special. Sunt
trei metode de a cita. În primul rând, „\” citează următorul caracter, cu excepția cazului în care este la
sfârșitul unei linii, caz în care atât „\” cât și linia nouă sunt eliminate. În al doilea rând, un singur
ghilimele ("'") citează totul până la următorul ghilimeleu simplu (aceasta poate cuprinde linii). În al treilea rând, a
ghilimele duble ('"') citează toate caracterele, cu excepția '$', ''' și '\', până la următorul fără escape
citat dublu. „$” și „`” din ghilimele duble au semnificația lor obișnuită (adică parametrul,
aritmetică sau substituție de comandă), cu excepția faptului că nu se efectuează nicio împărțire a câmpurilor asupra rezultatelor
de substituții cu ghilimele duble, iar forma în stil vechi de substituție de comandă are
ghilimele inverse pentru ghilimele duble sunt activate. Dacă un „\” în interiorul unui șir între ghilimele este
urmat de '\', '$', ''' sau '"', este înlocuit de al doilea caracter; dacă este urmat
printr-o linie nouă, atât „\” cât și linia nouă sunt eliminate; în caz contrar, atât „\” cât și
caracterele care urmează sunt neschimbate.

Dacă un șir cu ghilimele simple este precedat de un „$” fără ghilimele, extinderea bară oblică inversă în stil C (vezi
de mai jos) se aplică (chiar și ghilimelele simple din interior pot fi evadate și nu se termină
sfoara atunci); rezultatul extins este tratat ca orice alt șir cu ghilimele simple. În cazul în care o
șirul cu ghilimele duble este precedat de un „$” fără ghilimele, „$” este pur și simplu ignorat.

backslash expansiune
În locurile în care barele oblice inverse sunt extinse, anumite UNIX C și AT&T ksh sau GNU pocni stil
evadările sunt traduse. Acestea includ „\a”, „\b”, „\f”, „\n”, „\r”, „\t”, „\U########”,
„\u####” și „\v”. Pentru „\U########” și „\u####”, „#” înseamnă o cifră hexazecimală de aceeași
nu poate fi niciunul până la patru sau opt; aceste evadări traduc un punct de cod Unicode în UTF-8.
În plus, „\E” și „\e” se extind la caracterul de evacuare.

În imprima modul încorporat, '\"', '\'' şi '\?' sunt excluse în mod explicit; secvențe octale
trebuie să aibă niciunul de până la trei cifre octale „#” prefixate cu cifra zero ('\0###');
secvențele hexazecimale „\x##” sunt limitate la niciunul, până la două cifre hexazecimale „#”; ambii
secvențele octale și hexazecimale se convertesc în octeți bruti; „\#”, unde # nu este niciunul dintre cele de mai sus,
se traduce în \# (se păstrează barele oblice inverse).

Extinderea backslash în modul stil C diferă ușor: secvențele octale „\###” trebuie să aibă
nicio cifră zero care să prefixeze cea de până la trei cifre octale „#” și produc octeți bruti;
secvențele hexazecimale „\x#*” mănâncă cu lăcomie cât mai multe cifre hexazecimale „#” pot și
se termină cu prima cifră non-hexazecimală; acestea traduc un punct de cod Unicode în
UTF-8. Secvența „\c#”, unde „#” este orice octet, se traduce prin Ctrl-# (care practic
înseamnă „\c?” devine DEL, orice altceva este AND pe biți cu 0x1F). În cele din urmă, „\#”, unde
# nu este niciunul dintre cele de mai sus, se traduce prin # (are bara oblică inversă tăiată), chiar dacă este un
linie nouă.

Pseudonime
Există două tipuri de alias: aliasuri de comandă normale și aliasuri urmărite. Aliasuri de comandă
sunt utilizate în mod normal ca o mână scurtă pentru o comandă lungă sau folosită des. Cochilia se extinde
aliasuri de comandă (adică înlocuiește numele aliasului cu valoarea sa) când citește primul cuvânt
a unei comenzi. Un alias extins este reprocesat pentru a verifica dacă există mai multe aliasuri. Dacă o comandă
alias se termină într-un spațiu sau filă, următorul cuvânt este de asemenea verificat pentru extinderea aliasului. The
Procesul de extindere a aliasului se oprește atunci când este găsit un cuvânt care nu este un alias, când un cuvânt citat
este găsit sau când este găsit un cuvânt alias care este în curs de extindere. Aliasurile sunt
în special o caracteristică interactivă: în timp ce se întâmplă să funcționeze în scripturi și pe
în linia de comandă, în unele cazuri, aliasurile sunt extinse în timpul lexării, deci utilizarea lor trebuie să fie în a
separați arborele de comenzi de definiția lor; în caz contrar, alias-ul nu va fi găsit.
În mod remarcabil, listele de comenzi (separate prin punct și virgulă, în substituțiile de comenzi și prin linie nouă)
poate fi același arbore de analiză.

Următoarele aliasuri de comandă sunt definite automat de către shell:

autoload='\typeset -fu'
functions='\typeset -f'
hash='\ alias încorporat -t'
istoric='\builtin fc -l'
întreg='\typeset -i'
local='\typeset'
login='\autentificare exec'
nameref='\typeset -n'
nohup='nohup'
r='\builtin fc -e -'
tip='\builtin wherece -v'

Aliasurile urmărite permit shell-ului să-și amintească unde a găsit o anumită comandă. Primul
când shell-ul caută o cale pentru o comandă care este marcată ca alias urmărit, salvează
calea completă a comenzii. Data viitoare când comanda este executată, shell-ul verifică
calea salvată pentru a vedea că este încă valabilă și, dacă da, evită repetarea căutării căii.
Aliasurile urmărite pot fi listate și create folosind alias -t. Rețineți că schimbarea PATH
parametrul șterge căile salvate pentru toate aliasurile urmărite. Dacă trackall opțiunea este setată
(de exemplu, set -o trackall or set -h), shell-ul urmărește toate comenzile. Această opțiune este setată
automat pentru shell-uri non-interactive. Pentru shell-uri interactive, doar următoarele
comenzile sunt urmărite automat: pisică(1), cc(1), chmod(1), cp(1), data(1), ed(1),
emacs(1), grep(1), ls(1), face(1), mv(1), pr(1), rm(1), sete(1), sh(1), vi(1), și care(1).

Înlocuire
Primul pas pe care îl face shell-ul în executarea unei comenzi simple este să efectueze substituții
cuvintele poruncii. Există trei tipuri de înlocuire: parametru, comandă și
aritmetic. Substituțiile de parametri, care sunt descrise în detaliu în secțiunea următoare,
ia forma $nume sau ${...}; înlocuirile de comenzi iau forma $(comandă) Sau
(depreciat) `comandă` sau (executat în mediul curent) ${ comandă;} și bandă
linii noi de sfârșit; iar substituțiile aritmetice iau forma $((expresie)). Analizând
înlocuirea comenzii din mediul curent necesită un spațiu, tab sau linie nouă după deschidere
acolade și ca acolada de închidere să fie recunoscută ca un cuvânt cheie (adică este precedată de o nouă linie
sau punct și virgulă). Se mai numesc funsubs (substituții de funcție) și se comportă ca
funcţionează în asta local și reveni munca, și în asta ieşire termină shell-ul părinte; coajă
opțiunile sunt partajate.

O altă variantă de substituție sunt valsubs (substituții de valoare) ${|comandă;} care sunt
executat și în mediul curent, ca funsubs, dar își partajează I/O-ul cu părintele;
în schimb, ei evaluează indiferent de variabila locală de expresie, inițial goală, REPLY
stabilit în cadrul comandăs.

Dacă o înlocuire apare în afara ghilimelelor duble, rezultatele înlocuirii sunt
în general, supus împărțirii cuvintelor sau câmpului în funcție de valoarea curentă a IFS
parametru. Parametrul IFS specifică o listă de octeți care sunt utilizați pentru a rupe un șir
în mai multe cuvinte; orice octeți din spațiul setat, tab și noua linie care apar în IFS
octeții se numesc „spații albe IFS”. Secvențe de unul sau mai mulți octeți de spațiu alb IFS, în
combinație cu zero sau un octeți de spațiu alb non-IFS, delimitează un câmp. Ca caz special,
Spațiile albe IFS de început și de sfârșit sunt eliminate (adică, niciun câmp gol de început sau de sfârșit nu este
creat de acesta); Spațiile albe de început sau de sfârșit non-IFS creează un câmp gol.

Exemplu: Dacă IFS este setat la „ :”, iar VAR este setat la
„ A : B::D”, înlocuirea pentru $VAR are ca rezultat patru câmpuri: „A”,
„B”, „” (un câmp gol) și „D”. Rețineți că dacă parametrul IFS este setat la gol
șir, nu se face divizarea câmpului; dacă este nesetat, valoarea implicită a spațiului, tabulatorului și
se folosește noua linie.

De asemenea, rețineți că împărțirea câmpului se aplică numai rezultatului imediat al
substituţie. Folosind exemplul anterior, înlocuirea pentru $VAR:E are ca rezultat
câmpurile: „A”, „B”, „” și „D:E”, nu „A”, „B”, „”, „D” și „E”. Acest comportament este POSIX
compatibil, dar incompatibil cu alte implementări shell care fac împărțirea câmpurilor
pe cuvântul care conținea înlocuirea sau utilizați IFS ca delimitator general de spațiu alb.

Rezultatele înlocuirii sunt, dacă nu se specifică altfel, de asemenea supuse expansiunii bretelor
și extinderea numelui fișierului (consultați secțiunile relevante de mai jos).

O înlocuire de comandă este înlocuită cu rezultatul generat de comanda specificată, care este
rulați într-un subshell. Pentru $(comandă) și ${|comandă;} și ${ comandă;} substituții, normal
regulile de citare sunt folosite când comandă este analizat; cu toate acestea, pentru ` depreciatcomandă` forma, a
'\' urmat de oricare dintre '$', ''' sau '\' este eliminat (la fel cum este '"' când înlocuirea face parte
a unui șir între ghilimele); o bară oblică inversă „\” urmată de orice alt caracter este neschimbată.
Ca caz special în substituțiile de comandă, o comandă de formăfişier este interpretat ca
înseamnă înlocuirea conținutului de fişier. Rețineți că $( are același efect ca și $(cat foo).

Rețineți că unele shell-uri nu folosesc un parser recursiv pentru înlocuirea comenzilor, ceea ce duce la
eșec pentru anumite constructe; pentru a fi portabil, utilizați ca soluție „x=$(cat) <<"EOF"' (sau
newline-ținând extensia 'x=<<"EOF"') în schimb pentru a înghiți pur și simplu șirul. IEEE Std 1003.1
(„POSIX.1”) recomandă utilizarea instrucțiunilor case de forma „x=$(case $foo în (bar) echo $bar
;; (*) echo $baz ;; esac)' în schimb, care ar funcționa, dar nu ar servi drept exemplu pentru aceasta
problema de portabilitate.

x=$(caz $foo in bar) echo $bar ;; *) echo $baz ;; esac)
# de mai sus nu reușește să analizeze shell-urile vechi; mai jos este soluția
x=$(eval $(pisică)) <<"EOF"
case $foo in bar) echo $bar ;; *) echo $baz ;; esac
EOF

Substituțiile aritmetice sunt înlocuite cu valoarea expresiei specificate. Pentru
exemplu, comanda imprima $((2+3*4)) afişează 14. Vezi Aritmetică expresii pentru o
descrierea unei expresii.

parametrii
Parametrii sunt variabile shell; li se pot atribui valori iar valorile lor pot fi accesate
folosind o substituție de parametri. Numele unui parametru este unul dintre single-urile speciale
parametrii de punctuație sau cifre descriși mai jos sau o literă urmată de zero sau
mai multe litere sau cifre („_” contează ca o literă). Ultima formă poate fi tratată ca matrice
prin adăugarea unui index de matrice de forma [expres] Unde expres este o expresie aritmetică.
Indicii de matrice în mksh sunt limitate la intervalul de la 0 la 4294967295, inclusiv. Acesta este,
sunt un întreg fără semn pe 32 de biți.

Substituțiile de parametri iau forma $nume, {$nume} sau ${nume[expres]} Unde nume este
numele parametrului. Înlocuirea tuturor elementelor matricei cu ${nume[*]} și ${nume[@]} lucrări
echivalent cu $* și $@ pentru parametrii poziționali. Dacă înlocuirea se efectuează pe a
parametru (sau un element de parametru de matrice) care nu este setat, se înlocuiește un șir nul
cu excepția cazului în care substantiv opțiune (set -o substantiv or set -u) este setat, caz în care apare o eroare.

Parametrilor li se pot atribui valori în mai multe moduri. În primul rând, shell-ul se stabilește implicit
unii parametri precum „#”, „PWD” și „$”; acesta este singurul mod special un singur personaj
parametrii sunt setati. În al doilea rând, parametrii sunt importați din mediul shell-ului la
lansare. În al treilea rând, parametrilor li se pot atribui valori pe linia de comandă: de exemplu, FOO=bar
setează parametrul „FOO” la „bar”; mai multe atribuiri de parametri pot fi date pe un singur
linie de comandă și pot fi urmate de o comandă simplă, caz în care atribuirile sunt
în vigoare numai pe durata comenzii (astfel de atribuiri sunt, de asemenea, exportate; vezi
mai jos pentru implicațiile acestui lucru). Rețineți că atât numele parametrului, cât și „=” trebuie să fie
necotat pentru ca shell-ul să recunoască o atribuire a parametrilor. Construcția FOO+=baz De asemenea, este
recunoscut; valorile vechi și noi sunt imediat concatenate. A patra modalitate de setare
un parametru este cu exporturile, global, numai în citire, și tipărit comenzi; vezi lor
descrierile din Comandă execuție secțiune. A cincea, pentru și selecta buclele setează parametri
precum şi getopts, citit, și set -A comenzi. În sfârșit, pot fi alocați parametri
valori folosind operatori de atribuire în interiorul expresiilor aritmetice (vezi Aritmetică expresii
de mai jos) sau folosind ${nume=valoare} forma substituirii parametrului (vezi mai jos).

Parametrii cu atributul de export (setați folosind exporturile or tipărit -x comenzi, sau prin
asignările de parametri urmate de comenzi simple) sunt puse în mediu (vezi
despre(7)) a comenzilor rulate de shell ca nume=valoare perechi. Ordinea în care parametrii
apar în mediul unei comenzi nu este specificat. Când carcasa pornește, ea
extrage parametrii și valorile acestora din mediul său și setează automat exportul
atribut pentru acei parametri.

Modificatorii pot fi aplicați la ${nume} formă de substituție a parametrilor:

${nume:-cuvânt}
If nume este setată și nu NULL, este înlocuită; in caz contrar, cuvânt este substituit.

${nume:+cuvânt}
If nume este setat și nu NULL, cuvânt este substituit; în caz contrar, nimic nu se înlocuiește.

${nume:=cuvânt}
If nume este setată și nu NULL, este înlocuită; în caz contrar, este atribuit cuvânt și
valoarea rezultată a nume este substituit.

${nume:?cuvânt}
If nume este setată și nu NULL, este înlocuită; in caz contrar, cuvânt este imprimat pe
eroare standard (precedată de nume:) și apare o eroare (care provoacă în mod normal rezilierea
a unui script shell, a unei funcții sau a unui script provenit din „.' incorporat). Dacă cuvânt is
omis, se folosește în schimb șirul „parametru nul sau nesetat”. Momentan un bug,
if cuvânt este o variabilă care se extinde la șirul nul, mesajul de eroare este de asemenea
imprimate.

Rețineți că, pentru toate cele de mai sus, cuvânt este considerat de fapt citat și o analiză specială
se aplică regulile. Regulile de analiză diferă, de asemenea, dacă expresia este între ghilimele: cuvânt
apoi folosește reguli de ghilimele duble, cu excepția ghilimelelor în sine ('"') și a închiderii
acolade, care, dacă bara oblică inversă a scăpat, se aplică eliminarea citatelor.

În modificatorii de mai sus, „:” poate fi omis, caz în care condițiile depind doar de
nume fiind setat (spre deosebire de set și nu NULL). Dacă cuvânt este necesar, parametru, comandă,
pe ea se efectuează aritmetica și substituția tildei; dacă cuvânt nu este necesar, nu este
evaluat.

Următoarele forme de înlocuire a parametrilor pot fi, de asemenea, utilizate (dacă nume este o matrice, the
elementul cu cheia „0” va fi înlocuit în context scalar):

${#nume}
Numărul de parametri de poziție dacă nume este „*”, „@” sau nu este specificat; in caz contrar
lungimea (în caractere) a valorii șirului de parametru nume.

${#nume[*]}
${#nume[@]}
Numărul de elemente din matrice nume.

${%nume}
Lățimea (în coloanele ecranului) a valorii șirului de parametru nume, sau -1 dacă
${nume} conține un caracter de control.

${!nume}
Numele variabilei la care face referire nume. Aceasta va fi nume cu excepția cazului în care nume is
o referință de nume (variabilă legată), creată de numeref comandă (care este un alias
pentru tipărit -n).

${!nume[*]}
${!nume[@]}
Numele indicilor (cheilor) din matrice nume.

${nume#model}
${nume##model}
If model se potrivește cu începutul valorii parametrului nume, textul potrivit este
șters din rezultatul înlocuirii. Un singur „#” are ca rezultat cel mai scurt
meci, iar două dintre ele rezultă în cel mai lung meci. Nu poate fi aplicat unui vector
(${*} sau ${@} sau ${array[*]} sau ${array[@]}).

${nume%model}
${nume%%model}
Ca și înlocuirea ${..#..}, dar șterge de la sfârșitul valorii. Nu poate fi
aplicat unui vector.

${nume/model/şir}
${nume/#model/şir}
${nume/%model/şir}
${nume//model/şir}
Cel mai lung meci al model în valoarea parametrului nume este înlocuit cu şir
(șters dacă şir este gol; bara oblică ('/') poate fi omisă în acest caz).
O bară oblică urmată de „#” sau „%” face ca modelul să fie ancorat la
începutul sau, respectiv, sfârșitul valorii; gol neancorat models cauza nr
înlocuire; o singură bară oblică sau utilizarea a model care se potrivește cu golul
șir de caractere face ca înlocuirea să aibă loc o singură dată; două bare oblice provoacă toate
aparițiile potrivirilor în valoarea de înlocuit. Nu poate fi aplicat unui vector.
Implementat ineficient, poate fi lent.

${nume:post:len}
Prima len personaje ale nume, începând de la poziție post, sunt înlocuite. Ambii
post și :len sunt optionale. Dacă post este negativ, numărarea începe la sfârșitul lui
şir; dacă este omis, este implicit 0. Dacă len este omis sau mai mare decât
lungimea șirului rămas, totul este înlocuit. Ambii post și len sunt
evaluate ca expresii aritmetice. În prezent, post trebuie să înceapă cu un spațiu,
paranteza de deschidere sau cifra de recunoscut. Nu poate fi aplicat unui vector.

${nume@#}
Hash-ul (folosind algoritmul BAFH) al expansiunii nume. Acesta este de asemenea folosit
intern pentru hashtablele shell-ului.

${nume@Q}
O expresie citată sigură pentru reintrare, a cărei valoare este valoarea lui nume
parametrul, este înlocuit.

Rețineți că model poate avea nevoie de model de globbing extins (@(...)), simplu ('...') sau dublu
("...") citat care scapă dacă nu -o sh este setat.

Următorii parametri speciali sunt setați implicit de shell și nu pot fi setați direct
folosind sarcini:

! ID de proces al ultimului proces de fundal început. Dacă nu există procese de fundal
a fost pornit, parametrul nu este setat.

# Numărul de parametri de poziție ($1, $2 etc.).

$ PID-ul shell-ului sau PID-ul shell-ului original dacă este un subshell. Do NU
utilizați acest mecanism pentru a genera nume de fișiere temporare; vedea mktemp(1) în schimb.

- Concatenarea opțiunilor curente cu o singură literă (vezi set comanda de mai jos
pentru o listă de opțiuni).

? Starea de ieșire a ultimei comenzi non-asincrone executată. Dacă ultima comandă
a fost ucis de un semnal, $? este setat la 128 plus numărul semnalului, dar cel mult 255.

0 Numele shell-ului, determinat după cum urmează: primul argument la mksh daca era
invocat cu -c au fost date opțiune și argumente; altfel cel fişier argument, dacă
a fost furnizat; sau altfel numele de bază cu care a fost invocat shell (adică argv[0]). 0 USD
este, de asemenea, setat la numele scriptului curent sau numele funcției curente,
dacă a fost definită cu funcţie cuvânt cheie (adică o funcție de stil shell Korn).

1 .. 9 Primii nouă parametri de poziție care au fost furnizați shell-ului, funcției sau
scriptul obținut folosind „.” incorporat. Alți parametri de poziție pot fi
accesat folosind ${număr}.

* Toți parametrii poziționali (cu excepția lui 0), adică $1, $2, $3, ...
Dacă sunt utilizați în afara ghilimelelor, parametrii sunt cuvinte separate (care sunt supuse
la împărțirea cuvintelor); dacă sunt utilizați între ghilimele duble, parametrii sunt separați prin
primul caracter al parametrului IFS (sau șirul gol dacă IFS este NULL).

@ La fel ca $*, cu excepția cazului în care este folosit între ghilimele duble, caz în care un cuvânt separat este
generat pentru fiecare parametru de poziție. Dacă nu există parametri de poziție, nu
cuvântul este generat. $@ poate fi folosit pentru a accesa argumente, textual, fără a pierde
Argumente NULL sau divizarea argumentelor cu spații.

Următorii parametri sunt setați și/sau utilizați de shell:

_ (subliniere) Când o comandă externă este executată de către shell, acest parametru
este setat în mediul noului proces pe calea celui executat
comanda. În utilizarea interactivă, acest parametru este setat și în shell-ul părinte la
ultimul cuvânt al comenzii anterioare.

BASHPID PID-ul shell-ului sau al subshell-ului.

CDPATH Ca PATH, dar folosit pentru a rezolva argumentul la cd comandă încorporată. Notă
asta dacă CDPATH este setat și nu conține „.' sau un element șir gol, the
directorul curent nu este căutat. De asemenea cd se va afișa comanda încorporată
directorul rezultat atunci când o potrivire este găsită în orice cale de căutare, alta decât cea
cale goală.

COLUMNS Setați la numărul de coloane de pe terminal sau fereastră. Întotdeauna setat, implicit
la 80, cu excepția cazului în care valoarea raportată de stty(1) este diferit de zero și suficient de sănătos
(minimul este 12x3); similar pentru LINII. Acest parametru este utilizat de către
moduri de editare interactivă a liniilor și de către selecta, set -o, și ucide -l comenzi
pentru a formata coloanele de informații. Import din mediu sau dezactivare
acest parametru elimină legarea la dimensiunea reală a terminalului în favoarea
valoarea oferită.

ENV Dacă se găsește că acest parametru este setat după executarea oricăror fișiere de profil, fișierul
valoarea extinsă este folosită ca fișier de pornire shell. De obicei, conține funcție
și definiții de alias.

ERRNO Valoare întreagă a shell-urilor greseala variabil. Indică motivul ultimul
apelul de sistem a eșuat. Nu este inca implementat.

EXECSHELL Dacă este setat, se presupune că acest parametru conține shell-ul pentru care urmează să fie folosit
executa comenzi care execve(2) nu se execută și care nu încep cu a
„#!coajă” secvență.

FCEDIT Editorul folosit de fc comanda (vezi mai jos).

FPATH La fel ca PATH, dar folosit atunci când o funcție nedefinită este executată pentru a localiza fișierul
definirea functiei. De asemenea, este căutat atunci când o comandă nu poate fi găsită folosind
CALE. Vedea funcţii mai jos pentru mai multe informații.

HISTFILE Numele fișierului folosit pentru a stoca istoricul comenzilor. Când este atribuit sau dezactivat,
fisierul este deschis, istoricul este trunchiat apoi incarcat din fisier; ulterior
comenzile noi (constând posibil din mai multe linii) sunt atașate odată ce acestea
compilat cu succes. De asemenea, mai multe invocări ale shell-ului vor împărtăși
istoric dacă parametrii lor HISTFILE indică toți același fișier.

notițe: Dacă HISTFILE este nesetat sau este gol, nu este utilizat niciun fișier istoric. Aceasta este
diferit de AT&T UNIX ksh.

HISTSIZE Numărul de comenzi stocate în mod normal pentru istoric. Valoarea implicită este 2047. Do
nu setați această valoare la valori nebunești de mari, cum ar fi 1000000000, deoarece mksh poate să
atunci nu aloca suficientă memorie pentru istoric și nu va începe.

HOME Directorul implicit pentru cd comanda și valoarea înlocuită cu an
necalificat ~ (A se vedea Tildă expansiune de mai jos).

IFS Separator de câmp intern, utilizat în timpul înlocuirii și de către citit comandă, să
împărțiți valorile în argumente distincte; setat în mod normal la spațiu, tab și newline.
Vedea Înlocuire de mai sus pentru detalii.

notițe: Acest parametru nu este importat din mediu atunci când shell-ul este
a început.

KSHEGID ID-ul de grup efectiv al shell-ului.

KSHGID ID-ul de grup real al shell-ului.

KSHUID ID-ul utilizatorului real al shell-ului.

KSH_VERSION Numele și versiunea shell-ului (numai citire). Vezi și comenzile versiunii
in Emacs editare mod și Vi editare mod secțiuni, mai jos.

LINENO Numărul de linie al funcției sau al scriptului shell care se află în prezent
executat.

LINII Setați la numărul de linii de pe terminal sau fereastră. Întotdeauna setat, implicit la
24. Vezi COLONNE.

EPOCREALTIME
Timp de la epocă, după cum a revenit gettimeofday(2), formatat ca zecimal
tv_sec urmată de un punct ('.') și tv_usec completat la exact șase zecimale
cifre.

OLDPWD Directorul de lucru anterior. Dezactivat dacă cd nu s-a schimbat cu succes
directoare de când a pornit shell-ul sau dacă shell-ul nu știe unde se află.

OPTARG Când se utilizează getopts, conține argumentul pentru o opțiune analizată, dacă aceasta
necesită unul.

OPTIND Indexul următorului argument care urmează să fie procesat la utilizare getopts. Atribuirea 1
la acest parametru cauze getopts a procesa argumentele de la început
data viitoare când este invocat.

PATH O listă separată cu două puncte (punct virgulă pe OS/2) de directoare care sunt căutate
atunci când căutați comenzi și fișiere provenite din sursa folosind „.' comanda (vezi mai jos).
Un șir gol care rezultă dintr-o două două puncte adiacente sau două adiacente
colon, este tratat ca un „.” (directorul curent).

PGRP ID-ul de proces al liderului grupului de procese al shell-ului.

PIPESTATUS O matrice care conține codurile de nivel de eroare (starea de ieșire), unul câte unul, ale ultimului
conducta rulează în prim-plan.

PPID ID-ul de proces al părintelui shell-ului.

PS1 Promptul principal pentru shell-uri interactive. Parametru, comandă și aritmetică
se efectuează înlocuiri, iar „!' este înlocuită cu comanda curentă
număr (vezi fc comanda de mai jos). Un literal „!” poate fi introdus în prompt de
plasarea '!!' în PS1.

Promptul implicit este „$” pentru utilizatorii non-root, „#” pentru root. Dacă mksh is
invocat de root și PS1 nu conține caracterul „#”, valoarea implicită
va fi folosit chiar dacă PS1 există deja în mediu.

mksh distribuția vine cu un eșantion punct.mkshrc conţinând un sofisticat
exemplu, dar s-ar putea să vă placă următorul (rețineți că
${HOSTNAME:=$(hostname)} și clauza distinctivă root-vs-user sunt (în
acest exemplu) executat la momentul atribuirii PS1, în timp ce $USER și $PWD sunt
a scăpat și astfel va fi evaluat de fiecare dată când este afișat un prompt):

PS1='${USER:=$(id -un)}'"@${HOSTNAME:=$(nume gazdă)}:\$PWD $(
if (( ID_UTILIZATOR )); apoi imprima \$; altfel imprimă \#; fi)"

Rețineți că, din moment ce editorii de linie de comandă încearcă să-și dea seama cât durează promptul
este (deci să știe cât de departe este până la marginea ecranului), coduri de evadare în
promptul tinde să încurce lucrurile. Puteți spune shell-ului să nu conteze sigur
secvențe (cum ar fi codurile de evacuare) prefixând promptul cu un caracter
(cum ar fi Ctrl-A) urmat de o întoarcere a căruciorului și apoi delimitarea evadării
coduri cu acest caracter. Orice apariții ale acelui caracter în prompt sunt
neimprimat. Apropo, nu mă învinovăți pentru acest hack; este derivat din
original ksh88(1), care a tipărit caracterul delimitator, astfel încât ați rămas fără
noroc dacă nu ai avut caractere care nu se imprimă.

Deoarece barele oblice inverse și alte caractere speciale pot fi interpretate de shell,
pentru a seta PS1, fie să scape de backslash în sine, fie să folosească ghilimele duble. The
din urmă este mai practic. Acesta este un exemplu mai complex, evitând direct
introduceți caractere speciale (de exemplu, cu ^V în modul de editare emacs), care
încorporează directorul de lucru curent, în video invers (culoarea ar funcționa,
prea), în șirul prompt:

x=$(tipărește \\001)
PS1="$x$(printează \\r)$x$(tput so)$x\$PWD$x$(tput se)$x> "

Datorită unei sugestii puternice din partea lui David G. Korn, mksh acum susține și
urmatoarea forma:

PS1=$'\1\r\1\e[7m\1$PWD\1\e[0m\1> '

PS2 șir de prompt secundar, implicit „>”, utilizat atunci când este nevoie de mai multă intrare
completați o comandă.

Prompt PS3 folosit de selecta declarație atunci când citiți o selecție de meniu. Implicit
este '#? '.

PS4 Folosit pentru a prefix comenzile care sunt imprimate în timpul urmăririi execuției (vezi set
-x comanda de mai jos). Substituțiile de parametri, comenzi și aritmetice sunt
efectuată înainte de a fi tipărită. Valoarea implicită este „+”. Poate doriți să o setați
la „[$EPOCHREALTIME] „, pentru a include marcajele de timp.

PWD Directorul de lucru curent. Poate fi nesetat sau NULL dacă shell-ul nu știe
unde este.

RANDOM De fiecare dată când este referit RANDOM, i se atribuie un număr între 0 și 32767
mai întâi dintr-un PRNG Linear Congruențial.

RĂSPUNS Parametru implicit pentru citit comanda dacă nu sunt date nume. De asemenea, folosit în
selecta bucle pentru a stoca valoarea care este citită de la intrarea standard.

SECONDE Numărul de secunde de la începutul shell-ului sau, dacă parametrul a fost
a atribuit o valoare întreagă, numărul de secunde de la atribuire plus
valoarea care a fost atribuită.

TMOUT Dacă este setat la un număr întreg pozitiv într-un shell interactiv, acesta specifică valoarea maximă
numărul de secunde în care shell-ul va aștepta intrarea după imprimarea primarului
prompt (PS1). Dacă timpul este depășit, cochilia iese.

TMPDIR Fișierele shell temporare ale directorului sunt create în. Dacă acest parametru nu este
setat sau nu conține calea absolută a unui director care poate fi scris, temporar
fișierele sunt create în / tmp.

USER_ID ID-ul de utilizator efectiv al shell-ului.

Tildă expansiune
Expansiunea tildelor care se face în paralel cu înlocuirea parametrilor, se face pe cuvinte
începând cu un „~” fără ghilimele. Caracterele care urmează tildei, până la primul „/”, dacă
oricare, se presupune a fi un nume de conectare. Dacă numele de conectare este gol, „+” sau „-”, valoarea lui
parametrul HOME, PWD sau OLDPWD este înlocuit, respectiv. În caz contrar, parola
fișierul este căutat după numele de conectare, iar expresia tilde este înlocuită cu cea a utilizatorului
directorul principal. Dacă numele de conectare nu se găsește în fișierul cu parole sau dacă vreo citare sau
înlocuirea parametrilor are loc în numele de conectare, nu se efectuează nicio înlocuire.

În asignările de parametri (cum ar fi cele care preced o comandă simplă sau cele care apar în
argumente ale alias, exporturile, global, numai în citire, și tipărit), extinderea tildei se face după
orice atribuire (adică după semnul egal) sau după două puncte (':'); nume de conectare
sunt delimitate și de două puncte.

Directorul principal al numelor de conectare extinse anterior sunt stocate în cache și reutilizate. The alias -d
comanda poate fi folosită pentru a lista, modifica și adăuga la acest cache (de ex alias -d
fac=/usr/local/facilities; cd ~fac/bin).

Bretele expansiune (alternanţă)
Expresiile acolade iau următoarea formă:

prefix{str1,...,strN}sufix

Expresiile sunt extinse la N cuvinte, fiecare dintre acestea fiind concatenarea lui prefix, stri,
și sufix (de exemplu, „a{c,b{X,Y},d}e” se extinde la patru cuvinte: „as”, „abXe”, „abYe” și „ade”).
După cum s-a menționat în exemplu, expresiile acolade pot fi imbricate, iar cuvintele rezultate nu
sortat. Expresiile acolade trebuie să conțină o virgulă fără ghilimele (',') pentru ca extinderea să aibă loc (de ex
{} și {foo} nu sunt extinse). Expansiunea bretelor se realizează după înlocuirea parametrilor
și înainte de generarea numelui fișierului.

Fișier nume modele
Un model de nume de fișier este un cuvânt care conține unul sau mai multe fără ghilimele „?”, „*”, „+”, „@” sau „!”
caractere sau secvențe „[..]”. Odată ce a fost efectuată extinderea bretei, carcasa se înlocuiește
modele de nume de fișiere cu numele sortate ale tuturor fișierelor care se potrivesc cu modelul (dacă nu
fișierele se potrivesc, cuvântul rămâne neschimbat). Elementele modelului au următoarea semnificație:

? Se potrivește cu orice caracter.

* Se potrivește cu orice secvență de octeți.

[..] Se potrivește cu oricare dintre octeții din paranteze. Intervalele de octeți pot fi specificate de
separarea a doi octeți printr-un „-” (de exemplu, „[a0-9]” se potrivește cu litera „a” sau cu orice cifră).
Pentru a se reprezenta, un „-” trebuie fie citat, fie primul sau ultimul octet
în lista de octeți. În mod similar, un „]” trebuie citat sau primul octet din listă
dacă este să se reprezinte în locul sfârșitului listei. Deasemenea o '!' apărând
la începutul listei are o semnificație specială (vezi mai jos), astfel încât să-l reprezinte singur
trebuie să fie citate sau să apară mai târziu în listă.

[!..] La fel ca [..], cu excepția faptului că se potrivește cu orice octet care nu este între paranteze.

*(model|...|model)
Se potrivește cu orice șir de octeți care se potrivește cu zero sau mai multe apariții ale specificate
modele. Exemplu: modelul *(foo|bar) se potrivește cu șirurile „”, „foo”, „bar”,
„foobarfoo”, etc.

+(model|...|model)
Se potrivește cu orice șir de octeți care se potrivește cu una sau mai multe apariții ale specificate
modele. Exemplu: modelul +(foo|bar) se potrivește cu șirurile „foo”, „bar”,
„foobar”, etc.

?(model|...|model)
Se potrivește cu șirul gol sau cu un șir care se potrivește cu unul dintre modelele specificate.
Exemplu: modelul ?(foo|bar) se potrivește doar cu șirurile „”, „foo” și „bar”.

@(model|...|model)
Se potrivește cu un șir care se potrivește cu unul dintre modelele specificate. Exemplu: modelul
@(foo|bar) se potrivește doar cu șirurile „foo” și „bar”.

!(model|...|model)
Se potrivește cu orice șir care nu se potrivește cu unul dintre modelele specificate. Exemple: The
model !(foo|bar) se potrivește cu toate șirurile, cu excepția „foo” și „bar”; modelul !(*)
se potrivește fără șiruri; modelul !(?)* se potrivește cu toate șirurile (gândește-te la asta).

Rețineți că globbingul complicat, în special cu alternative, este lentă; folosind separat
comparațiile pot (sau nu) să fie mai rapide.

Rețineți că mksh (Și pdksh) nu se potrivește niciodată cu '.' și „..”, dar AT&T UNIX ksh, Bourne sh, și GNU
pocni face.

Rețineți că niciunul dintre elementele de model de mai sus nu se potrivește nici cu o perioadă ('.') la începutul lui a
nume de fișier sau o bară oblică ('/'), chiar dacă sunt utilizate în mod explicit într-o secvență [..]; De asemenea
nume '.' și „..” nu se potrivesc niciodată, chiar și după modelul „.*”.

În cazul în care markdirs opțiunea este setată, toate directoarele care rezultă din generarea numelor de fișiere sunt
marcat cu un „/” în urmă.

Intrare ieșire redirecționare
Când o comandă este executată, intrarea ei standard, ieșirea standard și eroarea standard (fișier
descriptorii 0, 1 și, respectiv, 2) sunt în mod normal moșteniți din shell. Trei
excepții de la aceasta sunt comenzile în conducte, pentru care intrare standard și/sau standard
ieșirile sunt cele setate de pipeline, comenzile asincrone create atunci când este controlul jobului
dezactivat, pentru care intrarea standard este inițial setată să fie de la / Dev / null, și comenzi pentru
care a fost specificată oricare dintre următoarele redirecționări:

>fişier Ieșirea standard este redirecționată către fişier. Dacă fişier nu există, este creat;
dacă există, este un fișier obișnuit, iar fișierul noclobber opțiunea este setată, o eroare
apare; în caz contrar, fișierul este trunchiat. Rețineți că aceasta înseamnă comanda cmd
<foo >foo se va deschide foo pentru citire și apoi trunchiați-l când îl deschide pt
scris, înainte cmd are ocazia să citească cu adevărat foo.

>|fişier La fel ca >, cu excepția faptului că fișierul este trunchiat, chiar dacă noclobber opțiunea este setată.

>>fişier La fel ca >, cu excepția cazului în care fişier există la care este atașat în loc să fie trunchiat.
De asemenea, fișierul este deschis în modul adăugare, așa că scrierile merg întotdeauna la sfârșitul
dosar (vezi deschide(2)).

<fişier Intrarea standard este redirecționată de la fişier, care este deschis pentru citire.

<>fişier La fel ca <, cu excepția faptului că fișierul este deschis pentru citire și scriere.

<<marcator După ce ați citit linia de comandă care conține acest tip de redirecționare (numită a
„aici document”), shell-ul copiază linii din sursa comenzii în a
fișier temporar până la o linie care se potrivește marcator se citește. Când comanda este
executat, intrarea standard este redirecționată din fișierul temporar. Dacă marcator
nu conține caractere între ghilimele, conținutul fișierului temporar este procesat
ca și cum ar fi cuprins între ghilimele duble de fiecare dată când comanda este executată, deci parametru,
comandă și înlocuiri aritmetice sunt efectuate, împreună cu backslash ('\')
escape pentru „$”, „`”, „\” și „\newline”, dar nu pentru „””. Dacă sunt multiple aici
documentele sunt folosite pe aceeași linie de comandă, sunt salvate în ordine.

Daca nu marcator este dat, documentul aici se termină la următorul << și substituție
va fi efectuat. Dacă marcator este doar un set de „''” simplu sau dublu „""'
ghilimele fără nimic între ele, documentul aici se termină la următoarea linie goală
iar înlocuirea nu va fi efectuată.

<< -marcator La fel ca <<, cu excepția faptului că filele principale sunt îndepărtate din liniile din documentul de aici.

<<cuvânt La fel ca <<, cu excepția asta cuvânt is documentul de aici. Aceasta se numește aici
șir.

<&fd Intrarea standard este duplicată din descriptorul de fișier fd. fd poate fi un număr,
indicarea numărului unui descriptor de fișier existent; litera „p”, indicând
descriptorul de fișier asociat cu rezultatul co-procesului curent; sau
caracterul „-”, indicând intrarea standard care urmează să fie închisă. Rețineți că fd is
limitat la o singură cifră în majoritatea implementărilor shell.

>&fd La fel ca <&, cu excepția faptului că operațiunea se face pe ieșire standard.

&>fişier La fel ca >fişier 2> & 1. Acesta este un GNU depreciat (moștenire). pocni extensie suportată
by mksh care acceptă, de asemenea, numărul fd explicit anterior, de exemplu,
3&>fişier este la fel ca 3>fişier 2> & 3 in mksh dar o eroare de sintaxă în GNU pocni.

&>|fişier, &>>fişier, &>&fd
La fel ca >|fişier, >>fişier, Sau >&fd, urmat de 2> & 1, ca mai sus. Acestea sunt mksh
extensii.

În oricare dintre redirecțiile de mai sus, descriptorul fișierului care este redirecționat (adică standard
intrare sau ieșire standard) poate fi dat în mod explicit precedând redirecționarea cu un număr
(portabil, doar o singură cifră). Substituții de parametri, comenzi și aritmetice, tilde
substituțiile și (dacă shell-ul este interactiv) generarea numelor de fișiere sunt toate efectuate
il fişier, marcator, și fd argumente de redirecţionare. Rețineți, totuși, că rezultatele oricărei
generarea numelor de fișiere sunt utilizate numai dacă se potrivește un singur fișier; dacă mai multe fișiere se potrivesc,
este folosit cuvântul cu caractere extinse pentru generarea numelui fișierului. Rețineți că în restricționat
shell-uri, redirecționările care pot crea fișiere nu pot fi utilizate.

Pentru comenzi simple, redirecționările pot apărea oriunde în comandă; pentru comenzi-compuse
(if declarații etc.), orice redirecționări trebuie să apară la sfârșit. Redirecționările sunt procesate
după ce conductele sunt create și în ordinea în care sunt date, astfel încât următoarele vor tipări un
eroare cu un număr de linie adăugat înaintea acesteia:

$ cat /foo/bar 2>&1 >/dev/null | pr -n -t

Descriptorii de fișiere creați prin redirecționări I/O sunt privați pentru shell.

Aritmetică expresii
Expresiile aritmetice întregi pot fi folosite cu lăsa comandă, în interiorul expresiilor $((..)),
referințe din interiorul matricei (de ex nume[expres]), ca argumente numerice pentru test comanda, iar ca
valoarea unei atribuiri unui parametru întreg. avertizare: Acest lucru afectează și implicit
conversie în număr întreg, de exemplu, așa cum este făcută de lăsa comanda. Niciodată utilizați utilizator nebifat
intrare, de exemplu din mediu, în aritmetică!

Expresiile sunt calculate folosind aritmetica semnată și mksh_ari_t tip (un semnat pe 32 de biți
întreg), cu excepția cazului în care încep cu un singur caracter „#”, caz în care folosesc mksh_uari_t (a
întreg fără semn pe 32 de biți).

Expresiile pot conține identificatori de parametri alfanumeric, referințe de matrice și numere întregi
constante și pot fi combinate cu următorii operatori C (listați și grupați în
ordine crescătoare de prioritate):

Operatori unari:

+ - ! ~ ++ --

Operatori binari:

,
= += -= *= /= %= <<<= >>>= <<= >>= &= ^= |=
||
&&
|
^
&
==! =
<<=>> =
<<< >>> << >>
+ -
* /%

Operatori ternari:

?: (precedenta este imediat mai mare decât atribuirea)

Operatori de grupare:

()

Constantele și expresiile întregi sunt calculate folosind o lățime de exact 32 de biți, semnată sau
nesemnat, tip cu wraparound silențios pe depășire întreg. Constantele întregi pot fi
specificate cu baze arbitrare folosind notația de bază#număr, În cazul în care de bază este o zecimală
întreg care specifică baza și număr este un număr din baza specificată. În plus,
numerele întregi de bază 16 pot fi specificate prin prefixarea lor cu „0x” (insensibil la majuscule și minuscule) în toate
forme de expresii aritmetice, cu excepția argumentelor numerice ale test comandă încorporată.
Prefixarea numerelor cu o singură cifră zero („0”) nu determină interpretarea ca octal, ca
nu este sigur de făcut.

Ca special mksh extensie, numerele de la baza lui unu sunt tratate fie ca (8-bit
transparent) puncte de cod ASCII sau Unicode, în funcție de shell-ul utf8-mod steag (actual
setare). AT&T UNIX ksh93 Sintaxa lui „'x'” în loc de „1#x” este de asemenea acceptată. Notă
că octeții NUL (valoarea integrală a zero) nu pot fi utilizați. Un parametru nesetat sau gol
evaluează la 0 în context întreg. În modul Unicode, octeții bruti sunt mapați în interval
EF80..EFFF ca în OPTU-8, care se află în PUA și a fost atribuit de CSUR pentru această utilizare. Dacă
mai mult de un octet în modul ASCII sau o secvență de mai mult de un octet care nu formează un valid
iar secvența CESU-8 minimă este trecută, comportamentul este nedefinit (de obicei, shell-ul se anulează
cu o eroare de analiză, dar rar, reușește, de exemplu pe secvența C2 20). De aceea tu
ar trebui să utilizați întotdeauna modul ASCII, cu excepția cazului în care știți că intrarea este bine formată UTF-8 în
interval de 0000..FFFD dacă utilizați această caracteristică, spre deosebire de citit -a.

Operatorii sunt evaluați după cum urmează:

unar +
Rezultatul este argumentul (inclus pentru completitudine).

unar -
Negare.

! NU logic; rezultatul este 1 dacă argumentul este zero, 0 dacă nu.

~ Aritmetică (bit-wise) NU.

++ Creștere; trebuie aplicat unui parametru (nu o expresie literală sau altă expresie).
Parametrul este incrementat cu 1. Când este utilizat ca operator de prefix, rezultatul
este valoarea incrementată a parametrului; atunci când este utilizat ca operator postfix,
rezultatul este valoarea originală a parametrului.

-- Similar cu ++, cu excepția faptului că parametrul este diminuat cu 1.

, Separă două expresii aritmetice; partea stângă este evaluată mai întâi,
apoi dreapta. Rezultatul este valoarea expresiei din dreapta
lateral.

= Atribuire; variabila din stânga este setată la valoarea din dreapta.

+= -= *= /= %= <<<= >>>= <<= >>= &= ^= |=
Operatori de atribuire.a fost><op>=expres> este la fel caa fost>=a fost><op><expres>,
cu orice prioritate de operator înexpres> conservat. De exemplu, „var1 *= 5 +
3” este același cu specificarea „var1 = var1 * (5 + 3)”.

|| SAU logic; rezultatul este 1 dacă oricare dintre argumente este diferit de zero, 0 dacă nu. The
argumentul din dreapta este evaluat numai dacă argumentul din stânga este zero.

&& ȘI logic; rezultatul este 1 dacă ambele argumente sunt diferite de zero, 0 dacă nu. The
Argumentul din dreapta este evaluat numai dacă argumentul din stânga este diferit de zero.

| Aritmetică (în funcție de biți) SAU.

^ XOR aritmetică (în funcție de biți) (OR exclusiv).

& Aritmetică (bit-wise) AND.

== Egal; rezultatul este 1 dacă ambele argumente sunt egale, 0 dacă nu.

!= Nu este egal; rezultatul este 0 dacă ambele argumente sunt egale, 1 dacă nu.

< Mai puțin de; rezultatul este 1 dacă argumentul din stânga este mai mic decât cel din dreapta, 0 dacă
nu.

<= > >=
Mai mic sau egal, mai mare decât, mai mare sau egal. Vedea <.

<<< >>>
Rotiți la stânga (dreapta); rezultatul este similar cu schimbarea (vezi <<) cu excepția faptului că
biții deplasați la un capăt sunt deplasați la celălalt capăt, în loc de zero
sau semne biți.

<< >> Shift la stânga (dreapta); rezultatul este argumentul din stânga cu biții deplasați la stânga
(dreapta) cu suma dată în argumentul potrivit.

+ - * /
Adunarea, scăderea, înmulțirea și împărțirea.

% Rest; rezultatul este restul simetric al diviziunii stângii
argument de dreapta. Pentru a obține modulul matematic al lui „a Mod b”, utilizați
formula „(a % b + b) % b”.

<arg1>?arg2>:arg3>
Dacăarg1> este diferit de zero, rezultatul estearg2>; altfel rezultatul estearg3>.
Argumentul non-rezultat nu este evaluat.

Co-procese
Un co-proces (care este o conductă creată cu operatorul „|&”) este un proces asincron
în care shell-ul poate scrie atât (folosind imprima -p) și citiți din (folosind citit -p). Intrarea
iar ieșirea co-procesului poate fi, de asemenea, manipulată folosind >&p și <&p redirecționări,
respectiv. Odată ce un co-proces a fost început, altul nu poate fi început până când co-procesul
ieșiri de proces sau până când intrarea co-procesului a fost redirecționată folosind un Exec n>&p
redirecționare. Dacă intrarea unui co-proces este redirecționată în acest fel, următorul co-proces va fi
început va partaja ieșirea cu primul co-proces, cu excepția cazului în care ieșirea inițialei
co-procesul a fost redirecționat folosind un Exec n<&p redirecționare.

Câteva note referitoare la co-procese:

· Singura modalitate de a închide intrarea co-procesului (deci co-procesul citește un sfârșit de fișier) este
pentru a redirecționa intrarea către un descriptor de fișier numerotat și apoi închideți acel descriptor de fișier:
Exec 3>&p; Exec 3>&-

· Pentru ca co-procesele să partajeze o ieșire comună, shell-ul trebuie să păstreze scrierea
porțiune a conductei de ieșire deschisă. Aceasta înseamnă că sfârșitul fișierului nu va fi detectat până când
toate co-procesele care partajează rezultatul co-procesului au ieșit (când toate ies,
shell își închide copia țevii). Acest lucru poate fi evitat prin redirecționarea ieșirii către a
descriptor de fișier numerotat (deoarece acest lucru determină și shell-ul să își închidă copia). Rețineți că
acest comportament este ușor diferit de shell-ul original Korn care își închide copia
a porțiunii de scriere a ieșirii de co-proces când a început cel mai recent co-proces
(în loc de când toate co-procesele de partajare) iese.

· imprima -p va ignora semnalele SIGPIPE în timpul scrierilor dacă semnalul nu este prins sau
ignorat; același lucru este valabil dacă intrarea de co-proces a fost duplicată într-un alt fișier
descriptor şi imprima -un este folosit.

funcţii
Funcțiile sunt definite folosind fie shell-ul Korn funcţie nume-funcție sintaxa sau
Shell Bourne/POSIX nume-funcție() sintaxa (vezi mai jos diferența dintre cele două
forme). Funcțiile sunt ca .‐script-uri (adică scripturi obținute folosind încorporarea „.’) în aceea că
sunt executate în mediul curent. Cu toate acestea, spre deosebire de .‐scripturi, argumentele shell
(adică parametrii poziționali $1, $2 etc.) nu sunt niciodată vizibili în interiorul lor. Când coaja este
determinând locația unei comenzi, funcțiile sunt căutate după încorporare specială
comenzile, înainte de a fi căutate încorporații și PATH.

O funcție existentă poate fi ștearsă folosind dezactivat -f nume-funcție. O listă de funcții poate
fi obținut folosind tipărit +f iar definițiile funcției pot fi enumerate folosind tipărit -f.
încărcare automată comanda (care este un alias pentru tipărit -fu) poate fi folosit pentru a crea nedefinit
funcții: când este executată o funcție nedefinită, shell-ul caută calea specificată în
parametrul FPATH pentru un fișier cu același nume ca și funcția care, dacă este găsită, este citită
si executat. Dacă după executarea fișierului se constată că funcția numită este definită,
funcția este executată; în caz contrar, căutarea normală a comenzii este continuată (adică shell-ul
caută în tabelul obișnuit de comandă încorporat și PATH). Rețineți că dacă o comandă nu este găsită
utilizând PATH, se încearcă încărcarea automată a unei funcții folosind FPATH (acesta este un document nedocumentat
caracteristică a carcasei originale Korn).

Funcțiile pot avea două atribute, „urmărire” și „export”, cu care pot fi setate tipărit -ft
și tipărit -fx, respectiv. Când o funcție urmărită este executată, shell-ul xtrace
opțiunea este activată pe durata funcției. Atributul „export” al funcțiilor este
momentan nu este folosit. În shell-ul original Korn, funcțiile exportate sunt vizibile pentru shell
scripturile care sunt executate.

Deoarece funcțiile sunt executate în mediul shell curent, asignările de parametri au fost efectuate
funcțiile din interior sunt vizibile după finalizarea funcției. Dacă acesta nu este cel dorit
efect, tipărit comanda poate fi folosită în interiorul unei funcții pentru a crea un parametru local. Notă
că AT&T UNIX ksh93 utilizează domeniul de aplicare static (un domeniu de aplicare global, un domeniu de aplicare local per funcție)
și permite variabile locale numai pe funcțiile de stil Korn, în timp ce mksh folosește domeniul dinamic
(sfere imbricate de diferite localități). Rețineți că parametrii speciali (de ex $$, $!) nu poate fi
acoperite în acest fel.

Starea de ieșire a unei funcții este cea a ultimei comenzi executate în funcție. A
funcția poate fi făcută să termine imediat folosind reveni comanda; poate fi folosit și acesta
pentru a specifica în mod explicit starea de ieșire.

Funcții definite cu funcţie cuvintele rezervate sunt tratate diferit în cele ce urmează
moduri din funcţiile definite cu () notaţie:

· Parametrul $0 este setat la numele funcției (funcțiile în stil Bourne lasă $0
neatins).

· Atribuțiile de parametri care preced apelurile de funcții nu sunt păstrate în mediul shell
(executarea funcțiilor în stilul Bourne va păstra sarcinile).

· OPTIND este salvat/resetat și restaurat la intrarea și ieșirea din funcție deci getopts poate fi
utilizat corect atât în ​​interiorul cât și în afara funcției (funcțiile în stil Bourne părăsesc OPTIND
neatins, deci folosind getopts în interiorul unei funcții interferează cu utilizarea getopts in afara
funcţie).

· Opțiuni Shell (set -o) au domeniu de aplicare local, adică modificările din interiorul unei funcții sunt resetate
ieșirea sa.

În viitor, pot fi adăugate și următoarele diferențe:

· Un mediu capcană/semnal separat va fi utilizat în timpul execuției funcțiilor. Acest
va însemna că capcanele instalate în interiorul unei funcții nu vor afecta capcanele și semnalele carcasei
care nu sunt ignorate în shell (dar pot fi prinse) își vor avea efectul implicit în
o functie.

· Capcana EXIT, dacă este setată într-o funcție, va fi executată după ce funcția revine.

Comandă execuție
După evaluarea argumentelor din linia de comandă, a redirecționărilor și a atribuirilor de parametri,
tipul de comandă este determinat: o comandă încorporată specială, o funcție, o comandă încorporată normală sau
numele unui fișier de executat găsit folosind parametrul PATH. Verificările se fac în
ordinea de mai sus. Comenzile speciale încorporate diferă de alte comenzi prin aceea că PATH
parametrul nu este folosit pentru a le găsi, o eroare în timpul execuției lor poate provoca o non-
shell interactiv pentru ieșire și alocări de parametri care sunt specificate înainte de comandă
sunt păstrate după finalizarea comenzii. Comenzile obișnuite încorporate sunt diferite doar în asta
parametrul PATH nu este folosit pentru a le găsi.

Originală ksh și POSIX diferă oarecum în ce comenzi sunt considerate speciale sau
regulat.

Utilități speciale încorporate POSIX:

., :, rupe, continua, eval, Exec, ieşire, exporturile, numai în citire, reveni, set, schimbare, ori, capcană,
dezactivat

Suplimentar mksh comenzi de păstrare a sarcinilor:

builtin, global, sursă, tipărit, aștepta

Construcții care nu sunt speciale:

[, alias, bg, lega, pisică, cd, comandă, ecou, fals, fc, fg, getopts, de locuri de muncă, ucide, lăsa, imprima,
PWD, citit, cale reală, redenumi, dormi, suspenda, test, adevărat, limită, masca, Unalias, de unde

Odată ce tipul de comandă a fost determinat, orice atribuire a parametrilor din linia de comandă sunt
efectuate și exportate pe durata comenzii.

Următoarele descriu comenzile speciale și regulate încorporate și rezervate similare
cuvinte:

. fişier [arg ...]
Aceasta se numește comanda „punct”. Executați comenzile în fişier în curent
mediu inconjurator. Fișierul este căutat în directoarele PATH. Dacă argumentele sunt
dat, parametrii poziționali pot fi utilizați pentru a le accesa în timp ce fişier este în curs de
executat. Dacă nu sunt date argumente, parametrii de poziție sunt cei ai
mediul în care este utilizată comanda.

: [...]
Comanda nulă. Starea de ieșire este setată la zero.

[ expresie ]
Vedea test.

alias [-d | -t [-r] | +-x] [-p] [+] [nume [=valoare] ...]
Fara argumente, alias listează toate aliasurile. Pentru orice nume fără valoare,
aliasul existent este listat. Orice nume cu o valoare definește un alias (vezi Pseudonime
de mai sus).

La listarea aliasurilor, se folosește unul dintre cele două formate. În mod normal, aliasurile sunt listate ca
nume=valoare, În cazul în care valoare este citat. Dacă opțiunile au fost precedate de „+” sau de un singur „+”
este dat doar pe linia de comandă nume este tipărit.

-d opțiunea determină listarea aliasurilor de director care sunt utilizate în extinderea tilde
sau set (vezi Tildă expansiune de mai sus).

În cazul în care -p este folosită opțiunea, fiecare alias este prefixat cu șirul „alias”.

-t opțiunea indică faptul că aliasurile urmărite urmează să fie listate/setate (valori specificate
pe linia de comandă sunt ignorate pentru aliasurile urmărite). The -r opțiunea indică faptul că
toate aliasurile urmărite vor fi resetate.

-x seturi de optiuni (+x șterge) atributul de export al unui alias sau, dacă nu există nume
dat, listează aliasurile cu atributul de export (exportarea unui alias are nr
efect).

bg [muncă ...]
Reluați lucrările oprite specificate în fundal. Dacă nu sunt specificate locuri de muncă, %+
este asumat. Vedea Loc de munca Control mai jos pentru mai multe informații.

lega [-l]
Sunt listate legăturile curente. Dacă -l este dat steagul, lega în schimb listează
numele funcțiilor la care pot fi asociate tastele. Vedea Emacs editare mod pentru mai multe
informaţii.

lega [-m] şir=[substitui] ...
lega şir=[editare-comanda] ...
Comanda de editare specificată este legată de cea dată şir, care ar trebui să fie formată din a
caracter de control precedat opțional de unul dintre cele două caractere de prefix și
opțional succedat de un caracter tilde. Intrarea viitoare a şir va determina
comanda de editare să fie invocată imediat. Dacă -m este dat steag, specificat
intrare şir va fi imediat înlocuit ulterior cu cel dat substitui şir
care poate conține comenzi de editare, dar nu și alte macrocomenzi. Dacă un postfix tilde este
dat, un tilde după unul sau două preturi și caracterul de control este ignorat,
orice alt caracter final va fi procesat ulterior.

Caracterele de control pot fi scrise folosind notația caret, adică ^X reprezintă Ctrl-X.
Rețineți că, deși sunt acceptate doar două caractere prefix (de obicei ESC și ^X),
unele secvențe cu mai multe caractere pot fi acceptate.

Următoarele legături implicite arată cum sunt tastele săgeată, tasta de pornire, terminarea și ștergerea
pe un terminal BSD wsvt25, xterm-xfree86 sau GNU sunt legate (desigur, unele
secvențele de evacuare nu vor funcționa chiar așa de frumos):

bind '^X'=prefix-2
bind '^[['=prefix-2
bind '^XA'=up-istory
bind '^XB'=down-istory
bind '^XC'=forward-char
bind '^XD'=car-backward-char
bind '^X1~'=început-de-linie
bind '^X7~'=început-de-linie
bind '^XH'=început-de-linie
bind '^X4~'=sfârşitul liniei
bind '^X8~'=sfârşitul liniei
bind '^XF'=sfârşitul liniei
bind '^X3~'=delete-char-forward

rupe [nivel]
Ieșiți din nivelcel mai interior pentru, selecta, până la, Sau în timp ce buclă. nivel implicit la 1.

builtin [--] comandă [arg ...]
Executați comanda încorporată comandă.

pisică [-u] [fişier ...]
Citiți fișierele succesiv, în ordinea liniei de comandă și scrieți-le în ieșirea standard.
În cazul în care o fişier este o singură liniuță ('-') sau absentă, citită din intrarea standard. Pentru direct
apeluri încorporate, POSIX -u opțiunea este acceptată ca opțiune fără opțiune. Pentru apeluri din shell, dacă
sunt date orice opțiuni, o externă pisică(1) utilitatea este preferată în detrimentul încorporat.

cd [-L] [dir]
cd -P [-e] [dir]
chdir [-eLP] [dir]
Setați directorul de lucru la dir. Dacă parametrul CDPATH este setat, acesta listează
calea de căutare pentru directorul care conține dir. O cale NULL înseamnă curent
director. Dacă dir se găsește în orice componentă a căii de căutare CDPATH, alta decât
Calea NULL, numele noului director de lucru va fi scris în ieșirea standard.
If dir lipsește, este utilizat directorul de acasă HOME. Dacă dir este „-”, precedentul
este utilizat directorul de lucru (vezi parametrul OLDPWD).

În cazul în care -L este utilizată opțiunea (cale logică) sau dacă fizic opțiunea nu este setată (vezi
set comanda de mai jos), referințe la „..” în dir sunt relativ la calea folosită pentru a ajunge
directorul. Dacă -P este utilizată opțiunea (calea fizică) sau dacă fizic opțiunea este
set, „..” este relativ la arborele de directoare ale sistemului de fișiere. PWD și OLDPWD
parametrii sunt actualizați pentru a reflecta directorul de lucru actual și vechi,
respectiv. Dacă -e opțiunea este setată pentru traversarea sistemului de fișiere fizic și PWD
nu a putut fi setat, codul de ieșire este 1; mai mare de 1 dacă a apărut o eroare, 0
in caz contrar.

cd [-eLP] vechi nou
chdir [-eLP] vechi nou
Șirul nou este înlocuit vechi în directorul curent și shell-ul
încearcă să se schimbe în noul director.

comandă [-pVv] cmd [arg ...]
Dacă nici cel -v nici -V este dată opțiunea, cmd se executa exact ca si cum comandă HAD
nu a fost specificat, cu două excepții: în primul rând, cmd nu poate fi o funcție shell; și
în al doilea rând, comenzile speciale încorporate își pierd specialitatea (adică redirecționarea și
Erorile de utilitate nu fac ca shell-ul să iasă, iar asignările de comenzi nu sunt
permanent).

În cazul în care -p este dată, o cale de căutare implicită este utilizată în locul valorii curente
de PATH, a cărui valoare reală depinde de sistem.

În cazul în care -v este dată opțiunea, în loc să se execute cmd, informații despre ceea ce ar fi
executat este dat (și același lucru se face și pentru arg ...). Pentru încorporate, funcții și
cuvintele cheie, numele lor sunt pur și simplu tipărite; pentru aliasuri, o comandă care le definește este
imprimat; pentru utilitarele găsite prin căutarea parametrului PATH, calea completă a
comanda este tipărită. Dacă nu este găsită nicio comandă (adică căutarea căii eșuează), nimic nu este
tipărite și comandă ieșiri cu un statut diferit de zero. The -V opțiunea este ca -v
opțiunea, cu excepția faptului că este mai detaliată.

continua [nivel]
Salt la începutul nivelcel mai interior pentru, selecta, până la, Sau în timp ce buclă.
nivel implicit la 1.

ecou [-A] [arg ...]
Avertisment: acest utilitar nu este portabil; utilizați shell-ul încorporat Korn imprima in schimb.

Tipărește argumentele (separate prin spații) urmate de o nouă linie, conform standardului
ieșire. Linia nouă este suprimată dacă oricare dintre argumente conține bară oblică inversă
secvența „\c”. Vezi imprima comanda de mai jos pentru o listă cu alte secvențe backslash
care sunt recunoscute.

Opțiunile sunt furnizate pentru compatibilitate cu scripturile shell BSD. The -n opțiune
suprimă linia nouă, -e permite interpretarea backslash (o opțiune fără opțiune, deoarece
acest lucru se face în mod normal) și -E suprimă interpretarea backslash.

În cazul în care POSIX or sh opțiunea este setată sau acesta este un apel direct încorporat, doar primul
argumentul este tratat ca o opțiune și numai dacă este exact „-n”. Backslash
interpretarea este dezactivată.

eval comandă ...
Argumentele sunt concatenate (cu spații între ele) pentru a forma un singur șir
pe care apoi shell-ul îl analizează și îl execută în mediul curent.

Exec [-a argv0] [-c] [comandă [arg ...]]
Comanda este executată fără bifurcare, înlocuind procesul shell. Aceasta este
în prezent absolută, adică Exec nu se întoarce niciodată, chiar dacă comandă nu este găsit. The
-a opțiunea permite setarea unei alte valori argv[0] și -c curăță mediul înconjurător
înainte de a executa procesul fiu, cu excepția variabilei _ și a atribuirilor directe.

Dacă nu este dată nicio comandă cu excepția redirecționării I/O, redirecționarea I/O este permanentă
iar carcasa nu este înlocuită. Orice descriptori de fișier mai mari de 2 care sunt deschisi
or DUP(2) în acest fel nu sunt puse la dispoziția altor comenzi executate (de ex
comenzi care nu sunt încorporate în shell). Rețineți că shell-ul Bourne diferă
Aici; transmite acești descriptori de fișiere.

ieşire [Starea]
Shell-ul iese cu starea de ieșire specificată. Dacă Starea nu este specificată, ieșirea
status este valoarea curentă a $? parametru.

exporturile [-p] [parametru[=valoare]]
Setează atributul de export al parametrilor numiți. Parametrii exportați sunt transferați
mediul la comenzile executate. Dacă sunt specificate valori, parametrii numiți
sunt de asemenea atribuite.

Dacă nu sunt specificati parametri, toți parametrii cu atributul de export setat sunt
imprimat câte unul pe rând; fie numele lor, fie, dacă un „-” fără literă de opțiune este
specificat, perechi nume=valoare sau, cu -p, exporturile comenzi potrivite pentru reintrare.

fals O comandă care iese cu o stare diferită de zero.

fc [-e editor | -l [-n,-r] [primul [ultimul]]
primul și ultimul selectați comenzi din istoric. Comenzile pot fi selectate după istoric
număr (numerele negative merg înapoi de la linia curentă, cea mai recentă) sau a
șir care specifică cea mai recentă comandă care începe cu acel șir. The -l opțiune
listează comanda pe ieșirea standard și -n inhibă numerele implicite de comandă.
-r opțiunea inversează ordinea listei. Fără -l, comenzile selectate sunt
editat de editorul specificat cu -e opțiune, sau dacă nu -e este specificat, cel
editor specificat de parametrul FCEDIT (dacă acest parametru nu este setat, /bin/ed is
utilizat), și apoi executat de shell.

fc -e - | -s [-g] [vechi=nou] [prefix]
Re-execuți comanda selectată (comanda anterioară în mod implicit) după executare
substituirea optionala a vechi cu nou. Dacă -g este specificat, toate aparițiile de
vechi sunt înlocuite cu nou. Înțelesul lui -e - și -s este identic: re-executa
comanda selectată fără a invoca un editor. Această comandă este de obicei accesată cu
cele predefinite: alias r='fc -e -'

fg [muncă ...]
Reluați jobul(ele) specificat(e) în prim-plan. Dacă nu sunt specificate locuri de muncă, %+ is
asumat. Vedea Loc de munca Control mai jos pentru mai multe informații.

getopts optstring nume [arg ...]
Folosit de procedurile shell pentru a analiza argumentele specificate (sau parametrii poziționali,
dacă nu se oferă argumente) și să verifice opțiunile legale. optstring contine
literele de opțiune care getopts este să recunoaștem. Dacă o literă este urmată de două puncte, semnul
se așteaptă ca opțiunea să aibă un argument. Opțiunile care nu iau argumente pot fi
grupate într-un singur argument. Dacă o opțiune preia un argument și opțiunea
caracterul nu este ultimul caracter al argumentului în care se găsește, restul
argumentul este considerat argumentul opțiunii; în caz contrar, următorul argument este
argumentul optiunii.

De fiecare data getopts este invocat, plasează următoarea opțiune în parametrul shell nume
iar indexul argumentului care urmează să fie procesat de următorul apel la getopts în
parametrul shell OPTIND. Dacă opțiunea a fost introdusă cu un „+”, opțiunea a fost plasată
in nume este prefixat cu un „+”. Când o opțiune necesită un argument, getopts locuri
este în parametrul shell OPTARG.

Când se întâlnește o opțiune ilegală sau un argument de opțiune lipsă, un semn de întrebare
sau se introduce un colon nume (indicând o opțiune ilegală sau un argument lipsă,
respectiv) și OPTARG este setat la caracterul opțiune care a cauzat problema.
Mai mult decât atât, dacă optstring nu începe cu două puncte, este plasat un semn de întrebare
nume, OPTARG este dezactivat și un mesaj de eroare este tipărit la eroare standard.

Când se întâlnește sfârșitul opțiunilor, getopts ieșiri cu o ieșire diferită de zero
stare. Opțiunile se termină la primul argument (argument non-opțiune) care nu începe
cu un „-”, sau când este întâlnit un argument „--”.

Analiza opțiunilor poate fi resetată setând OPTIND la 1 (acest lucru se face automat
ori de câte ori este invocată shell-ul sau o procedură shell).

Avertisment: modificarea valorii parametrului shell OPTIND la o altă valoare decât 1 sau
analizarea diferitelor seturi de argumente fără a reseta OPTIND, poate duce la neașteptate
rezultate.

global ...
Vedea tipărit.

hașiș [-r] [nume ...]
Fără argumente, toate căile de comandă executabile cu hash sunt listate. The -r opțiune
face ca toate comenzile hash să fie eliminate din tabelul hash. Fiecare nume este căutat
ca și cum ar fi un nume de comandă și adăugat la tabelul hash dacă este un executabil
comanda.

de locuri de muncă [-lnp] [muncă ...]
Afișează informații despre jobul(ele) specificat(e); dacă nu sunt specificate locuri de muncă, toate locurile de muncă
sunt afișate. The -n opțiunea face ca informațiile să fie afișate numai pentru joburile care
și-au schimbat starea de la ultima notificare. Dacă -l este folosită opțiunea
ID-ul de proces al fiecărui proces dintr-un job este de asemenea listat. The -p opțiunea cauzează numai
grup de procese al fiecărei lucrări de tipărit. Vedea Loc de munca Control mai jos pentru formatul de muncă
și jobul afișat.

ucide [-s semne | -semnum | -semne] { muncă | pid | pgrp } ...
Trimiteți semnalul specificat la joburile, ID-urile de proces sau grupurile de procese specificate. Dacă
nu este specificat niciun semnal, semnalul TERM este trimis. Dacă este specificată o lucrare, semnalul
este trimis grupului de procese al jobului. Vedea Loc de munca Control mai jos pentru formatul de muncă.

ucide -l [stare de ieșire ...]
Tipăriți numele semnalului corespunzător stare de ieșire. Dacă nu sunt specificate argumente, a
Sunt tipărite lista tuturor semnalelor, numerele lor și o scurtă descriere a acestora.

lăsa [expresie ...]
Fiecare expresie este evaluată (vezi Aritmetică expresii de mai sus). Dacă toate expresiile
sunt evaluate cu succes, starea de ieșire este 0 (1) dacă ultima expresie a fost evaluată
la non-zero (zero). Dacă apare o eroare în timpul analizării sau evaluării unui
expresie, starea de ieșire este mai mare decât 1. Deoarece expresiile ar putea trebui să fie
citat, (( expres )) este zahăr sintactic pentru { let 'expres'; }.

lăsa] Alias ​​folosit intern pentru lăsa.

mknod [-m mod] nume b|c major minor
mknod [-m mod] nume p
Creați un fișier special pentru dispozitiv. Tipul de fișier poate fi b (dispozitiv de tip bloc), c
(dispozitiv tip caracter) sau p (denumită conductă, FIFO). Fișierul creat poate fi modificat
conform acestuia mod (prin intermediul -m opțiune), major (numărul principal al dispozitivului) și minor
(numărul dispozitivului minor). În mod normal, aceasta nu face parte din mksh; cu toate acestea, distribuitorii pot
am adăugat acest lucru ca fiind integrat ca un hack de viteză.

imprima [-nprsu[n] | -R [-cel mai,argument ...]
imprima își imprimă argumentele pe rezultatul standard, separate prin spații și terminate
cu o linie nouă. The -n opțiunea suprimă linia nouă. În mod implicit, anumite C scapă
sunt traduse. Acestea includ pe cele menționate în backslash expansiune mai sus, de asemenea
ca „\c”, ceea ce este echivalent cu utilizarea -n opțiune. Extinderea backslash poate fi
inhibat cu -r opțiune. -s opțiunea se imprimă în fișierul istoric în loc de
ieșire standard; cel -u opțiunea se imprimă în descriptorul fișierului n (n implicit la 1 dacă
omis); si -p opțiunea se imprimă în co-proces (vezi Co-procese de mai sus).

-R opțiunea este folosită pentru a emula, într-o anumită măsură, BSD-ul ecou(1) comanda care face
nu procesează secvențele „\” decât dacă -e este dată opțiunea. Ca mai sus, -n opțiune
suprimă linia nouă din urmă.

printf format [argumente ...]
Ieșire formatată. Aproximativ la fel ca printf(1), utilitate, cu excepția utilizărilor
la fel backslash expansiune și codul I/O și nu gestionează virgulă mobilă ca
restul din mksh. Este de preferat un utilitar extern față de cel încorporat. Acest lucru nu este
în mod normal parte din mksh; cu toate acestea, este posibil ca distribuitorii să fi adăugat acest lucru ca încorporat ca a
hack de viteză. Nu utilizați în codul nou.

PWD [-LP]
Tipăriți directorul de lucru actual. Dacă -L este utilizată opțiunea sau dacă fizic
opțiunea nu este setată (vezi set comanda de mai jos), este tipărită calea logică (adică
cale obișnuită cd la directorul curent). Dacă -P este folosită opțiunea (calea fizică).
sau dacă fizic opțiunea este setată, calea determinată din sistemul de fișiere (de
următoarele directoare „..” către directorul rădăcină) este tipărită.

citit [-A | -a] [-d x] [-N z | -n z] [-p | -u[n,-t n] [-rs] [p ...]
Citește o linie de intrare, separă intrarea în câmpuri folosind parametrul IFS (vezi
Înlocuire de mai sus) și atribuie fiecare câmp parametrilor specificați p. Daca nu
parametrii sunt specificați, parametrul REPLY este folosit pentru a stoca rezultatul. Cu
-A și -a opțiuni, doar niciun parametru sau un parametru este acceptat. Dacă sunt mai multe
parametri decât câmpuri, parametrii suplimentari sunt setați la șirul gol sau 0; dacă
există mai multe câmpuri decât parametri, ultimul parametru îi este atribuit celui rămas
câmpuri (inclusiv separatorii de cuvinte).

Opțiunile sunt următoarele:

-A Stocați rezultatul în parametru p (sau RĂSPUNS) ca matrice de cuvinte.

-a Stocați rezultatul fără împărțirea cuvintelor în parametru p (sau RĂSPUNS) ca
matrice de caractere (caractere late dacă utf8-mod opțiunea este adoptată,
octeți altfel); punctele de cod sunt codificate implicit ca numere zecimale.

-d x Utilizați primul octet al x, NUL dacă este gol, în loc de caracterul ASCII newline
ca delimitator de linie de intrare.

-N z În loc să citiți până la sfârșitul rândului, citiți exact z octeți. Dacă EOF sau a
apare timeout, o citire parțială este returnată cu starea de ieșire 1.

-n z În loc să citiți până la sfârșitul rândului, citiți până la z octeți, dar revine de îndată ce
sunt citiți orice octeți, de exemplu de la un dispozitiv terminal lent, sau dacă EOF sau un timeout
are loc.

-p Citiți din co-procesul activ în prezent, vezi Co-procese mai sus pentru detalii
pe aceasta.

-u[n] Citiți din descriptorul fișierului n (implicit la 0, adică intrare standard). The
argumentul trebuie să urmeze imediat caracterul opțiunii.

-t n Întrerupeți citirea după n secunde (specificată ca valoare zecimală pozitivă cu an
parte fracțională opțională). Starea de ieșire a citit este 1 dacă timeout
a avut loc, dar citirile parțiale pot fi totuși returnate.

-r În mod normal, caracterul ASCII backslash scapă de semnificația specială a
următorul caracter și este eliminat din intrare; citit nu se oprește când
întâlnind o secvență backslash-newline și nu stochează acea linie nouă în
rezultatul. Această opțiune activează modul brut, în care barele oblice inverse nu sunt
prelucrate.

-s Linia de intrare este salvată în istoric.

Dacă intrarea este un terminal, atât -N și -n opțiunile îl setează în modul brut; ei
citește un fișier întreg dacă -1 este trecut ca z a susținut.

Primul parametru poate avea un semn de întrebare și un șir atașat la el, în care
în cazul în care șirul este folosit ca prompt (imprimat la eroare standard înainte ca orice intrare să fie
citiți) dacă intrarea este a tty(4) (de ex citit nfoo?'numar of foos: ').

Dacă nu este citită nicio intrare sau a avut loc un timeout, citit ieșiri cu un statut diferit de zero.

Un alt set de trucuri la îndemână: Dacă citit este rulat într-o buclă, cum ar fi în timp ce citit foo; do ...?
făcut apoi spațiile albe principale vor fi eliminate (IFS) și barele oblice inverse vor fi procesate. Tu
poate doriți să utilizați în timp ce IFS= citit -r foo; do ...? făcut pentru I/O impecabil. În mod similar,
atunci când utilizați -a opțiunea, utilizarea -r opțiunea ar putea fi prudentă; același lucru se aplică
pentru:

găsi . -type f -print0 |& \
în timp ce IFS= citește -d '' -pr nume fișier; do
print -r -- „s-a găsit <${filename#./}>”
făcut

Bucla interioară va fi executată într-un subshell, iar modificările variabilelor nu pot fi
propagat dacă este executat într-o conductă:

bar | baz | în timp ce citește foo; face...; Terminat

Utilizați în schimb co-procese:

bar | baz |&
while read -p foo; face...; Terminat
exec 3>&p; exec 3>&-

numai în citire [-p] [parametru [=valoare] ...]
Setează atributul de numai citire al parametrilor numiți. Dacă sunt date valori,
parametrii sunt setați la ei înainte de a seta atributul. Odată realizat un parametru
numai în citire, nu poate fi dezactivat și valoarea sa nu poate fi modificată.

Dacă nu sunt specificati parametri, numele tuturor parametrilor sunt doar pentru citire
sunt tipărite câte unul pe linie, cu excepția cazului în care -p este utilizată opțiunea, caz în care
numai în citire comenzile care definesc toți parametrii numai pentru citire, inclusiv valorile acestora, sunt
imprimate.

cale reală [--] nume
Tipărește calea absolută rezolvată corespunzător nume. Dacă nume se termină cu a
slash ('/'), se verifică și existența și dacă este un director;
in caz contrar, cale reală returnează 0 dacă calea fie există, fie poate fi creată
imediat, adică toate, cu excepția ultimei componente, există și sunt directoare.

redenumi [--] din la
Redenumește fișierul din la la. Ambele trebuie să fie nume de căi complete și pe același dispozitiv.
Acest încorporat este destinat situațiilor de urgență în care /bin/mv devine inutilizabil și
apelează direct redenumi(2).

reveni [Starea]
Se întoarce dintr-o funcție sau . script, cu stare de ieșire Starea. Daca nu Starea este dată,
se foloseşte starea de ieşire a ultimei comenzi executate. Dacă este utilizat în afara unei funcții
or . script, are același efect ca ieşire. Rețineți că mksh tratează atât profil cât și
Fișierele ENV ca . scripturi, în timp ce shell-ul original Korn tratează numai profilurile ca .
scripturi.

set [+-abCefhiklmnprsUuvXx] [+-o opțiune] [+-A nume] [--] [arg ...]
set comanda poate fi folosită pentru a seta (-) sau clar (+) opțiunile shell, setați poziționalul
parametrii sau setați un parametru de matrice. Opțiunile pot fi modificate folosind +-o opțiune
sintaxă, unde opțiune este numele lung al unei opțiuni sau folosind +-scrisoare sintaxă,
Unde scrisoare este numele cu o singură literă al opțiunii (nu toate opțiunile au o singură literă
Nume). Următorul tabel listează atât literele opțiunilor (dacă există) cât și numele lungi
împreună cu o descriere a ceea ce face opțiunea:

-A nume
Setează elementele parametrului matricei nume la arg ... If -A Este folosit,
matricea este resetată (adică golită) mai întâi; dacă +A este folosit, primele N elemente sunt setate
(unde N este numărul de argumente); restul sunt lăsate neatinse.

O sintaxă alternativă pentru comandă set -A foo -- a b c care este compatibil cu
GNU pocni și, de asemenea, susținut de AT&T UNIX ksh93 este: foo=(a b c); foo+=(d e)

-a | -o allexport
Toți parametrii noi sunt creați cu atributul de export.

-b | -o notifica
Imprimați mesajele de notificare a sarcinii în mod asincron, în loc să fie chiar înainte de
prompt. Folosit numai dacă este activat controlul jobului (-m).

-C | -o noclobber
Preveniți > redirecționarea să suprascrie fișierele existente. În schimb, >| trebuie sa fie folosit
pentru a forța o suprascriere. Rețineți că acest lucru nu este sigur de utilizat pentru crearea
fișiere temporare sau fișiere de blocare din cauza unui TOCTOU într-o verificare care permite redirecționarea
ieșire la / Dev / null sau alte fișiere de dispozitiv chiar și în noclobber Mod.

-e | -o errexit
Ieșiți (după executarea capcanei ERR) de îndată ce apare o eroare sau o comandă
eșuează (adică iese cu o stare diferită de zero). Acest lucru nu se aplică comenzilor
a cărui stare de ieșire este testată în mod explicit de un construct shell, cum ar fi if, până la,
în timp ce, Sau ! declarații. Pentru && sau ||, doar starea ultimei comenzi este
testat.

-f | -o noglob
Nu extindeți modelele de nume de fișiere.

-h | -o trackall
Creați aliasuri urmărite pentru toate comenzile executate (vezi Pseudonime de mai sus). Activat
implicit pentru shell-uri non-interactive.

-i | -o interactiv
Shell-ul este un shell interactiv. Această opțiune poate fi utilizată numai atunci când shell-ul
este invocat. Vezi mai sus pentru o descriere a ceea ce înseamnă aceasta.

-k | -o cuvinte cheie
Atribuțiile parametrilor sunt recunoscute oriunde într-o comandă.

-l | -o Logare
Shell-ul este un shell de conectare. Această opțiune poate fi folosită numai când shell-ul este
invocat. Vezi mai sus pentru o descriere a ceea ce înseamnă aceasta.

-m | -o monitorizează
Activați controlul jobului (implicit pentru shell-uri interactive).

-n | -o noexec
Nu executați nicio comandă. Util pentru verificarea sintaxei scripturilor (ignorat
dacă interactiv).

-p | -o privilegiat
Shell-ul este un shell privilegiat. Este setat automat dacă, atunci când shell
începe, UID-ul sau GID-ul real nu se potrivește cu UID-ul (EUID) sau GID-ul efectiv
(EGID), respectiv. Vezi mai sus pentru o descriere a ceea ce înseamnă aceasta.

-r | -o limitat
Cochilia este o cochilie restricționată. Această opțiune poate fi folosită numai când shell-ul este
invocat. Vezi mai sus pentru o descriere a ceea ce înseamnă aceasta.

-s | -o stdin
Dacă este folosit când shell-ul este invocat, comenzile sunt citite de la intrarea standard. A stabilit
automat dacă shell-ul este invocat fără argumente.

Cand -s este utilizat cu set comandă face ca argumentele specificate să fie
sortate înainte de a le atribui parametrilor poziționali (sau matricei nume, dacă
-A este folosit).

-U | -o utf8-mod
Activați suportul UTF-8 în Emacs editare mod și manipularea internă a șirurilor
funcții. Acest flag este dezactivat în mod implicit, dar poate fi activat setându-l
pe linia de comandă shell; este activat automat pentru shell-urile interactive dacă
solicitat la compilare, sistemul dvs. acceptă setlocale(LC_CTYPE, "") Şi
facultativ nl_langinfo(SET DE CODURI), sau mediul LC_ALL, LC_CTYPE sau LANG
variabile și cel puțin una dintre acestea returnează ceva care se potrivește cu „UTF-8” sau
„utf8” fără a ține seama de majuscule; pentru apeluri directe încorporate în funcție de
variabilele de mediu menționate mai sus; sau pentru stdin sau scripturi, dacă intrarea
începe cu un marcaj de ordine UTF-8 byte.

În viitorul apropiat, urmărirea localității va fi implementată, ceea ce înseamnă că set -+U is
schimbat ori de câte ori se modifică una dintre variabilele de mediu POSIX legate de local.

-u | -o substantiv
Referirea unui parametru nesetat, altul decât „$@” sau „$*”, este tratată ca un
eroare, cu excepția cazului în care se folosește unul dintre modificatorii „-”, „+” sau „=”.

-v | -o prolix
Scrieți intrarea shell-ului în eroarea standard pe măsură ce este citită.

-X | -o markdirs
Marcați directoarele cu un „/” în urmă în timpul generării numelui fișierului.

-x | -o xtrace
Imprimați arbori de comenzi când sunt executați, precedați de valoarea PS4.

-o bgnice
Lucrările de fundal sunt executate cu prioritate mai mică.

-o braceexpand
Activați extinderea bretelor (alias alternanță). Aceasta este activată implicit. Dacă
dezactivată, extinderea tildei după semnul egal este dezactivată ca efect secundar.

-o emacs
Activați editarea în linie de comandă asemănătoare BRL emacs (numai shell-uri interactive); vedea Emacs
editare mod.

-o gmacs
Activați editarea în linia de comandă asemănătoare gmacs (numai shell-uri interactive). În prezent
identic cu editarea emacs, cu excepția faptului că transpose-chars (^T) acționează ușor
diferit.

-o ignoreeof
Shell-ul nu va ieși (cu ușurință) când este citit sfârșitul fișierului; ieşire trebuie sa fie folosit.
Pentru a evita bucle infinite, shell-ul va ieși dacă EOF este citit de 13 ori la rând.

-o mostenire-xtrace
Nu resetați -o xtrace la intrarea în funcţii. Aceasta este activată implicit.

-o nu
Nu opriți joburile care rulează cu un semnal SIGHUP când iese un shell de conectare.
Momentan setat implicit, dar acest lucru se poate schimba în viitor pentru a fi compatibil
cu AT&T UNIX ksh, care nu are această opțiune, dar trimite SIGHUP
semnal.

-o nolog
Fara efect. În shell-ul original Korn, acest lucru împiedică definirea funcțiilor
fiind stocate în fișierul istoric.

-o fizic
Cauzele cd și PWD comenzi pentru a utiliza „fizic” (adică sistemul de fișiere) '..'
directoare în loc de directoare „logice” (adică shell-ul se ocupă de „..”, care
permite utilizatorului să fie uit de legăturile simbolice către directoare). Șterge până la
Mod implicit. Rețineți că setarea acestei opțiuni nu afectează valoarea curentă a
parametrul PWD; doar cd comanda modifică PWD. Vezi cd și PWD comenzi
mai sus pentru mai multe detalii.

-o eşecul conductei
Faceți starea de ieșire a unei conducte (înainte de a completa logic)
nivelul de eroare din dreapta, diferit de zero, sau zero dacă toate comenzile au ieșit cu zero.

-o POSIX
Comportați-vă mai aproape de standarde (vezi POSIX mod pentru detalii). Automat
activat dacă numele de bază al invocării shell începe cu „sh” și aceasta
caracteristica de autodetecție este compilată în (nu în MirBSD). Ca efect secundar, setarea
acest steag se stinge braceexpand modul, care poate fi reactivat manual și
sh modul (cu excepția cazului în care ambele sunt activate în același timp).

-o sh
Permite / Bin / sh (kludge) modul (vezi SH mod). Activat automat dacă
numele de bază al invocării shell începe cu „sh” și această caracteristică de autodetecție
este compilat în (nu în MirBSD). Ca efect secundar, setarea acestui steag se dezactivează
braceexpand modul, care poate fi reactivat manual și POSIX modul (cu excepția cazului în care
ambele sunt activate în același timp).

-o vi
Permite vi(1) editare asemănătoare cu linia de comandă (numai shell-uri interactive). Vedea Vi
editare mod pentru documentare și limitări.

-o vi-esccomplete
În editarea în linia de comandă vi, completați comanda și numele fișierului când escape (^[)
este introdus în modul de comandă.

-o vi-tabcomplete
În editarea în linia de comandă vi, completați comanda și numele fișierului atunci când fila (^I) este
intrat în modul de inserare. Aceasta este valoarea implicită.

-o viraw
Fara efect. În shell-ul original Korn, cu excepția cazului în care viraw a fost setată, comanda vi-
modul de linie ar permite tty(4) șoferul face lucrul până când a fost introdus ESC (^[).
mksh este întotdeauna în modul viraw.

Aceste opțiuni pot fi utilizate și la invocarea shell-ului. Setul actual de
opțiunile (cu nume cu o singură literă) pot fi găsite în parametrul „$-”. set -o cu
niciun nume de opțiune nu va lista toate opțiunile și dacă fiecare este activată sau dezactivată; set +o voi
tipăriți numele lungi ale tuturor opțiunilor care sunt activate în prezent. Într-o versiune viitoare, set
+o se va comporta conform POSIX și va imprima comenzi pentru a restabili opțiunile curente
in schimb.

Argumentele rămase, dacă există, sunt parametri de poziție și sunt atribuite, în ordine, la
parametrii poziționali (adică $1, $2 etc.). Dacă opțiunile se termină cu „--” și acolo
nu există argumente rămase, toți parametrii de poziție sunt șterși. Dacă nu există opțiuni sau
sunt date argumente, sunt imprimate valorile tuturor numelor. Pentru istoric necunoscut
Din motive, o opțiune singuratică „-” este tratată în mod special – șterge atât -v și -x
opțiuni.

schimbare [număr]
Parametrii de poziție număr+ 1, număr+2 etc. sunt redenumite în „1”, „2” etc.
număr implicit la 1.

dormi secunde
Suspend execuția pentru minimum secunde specificată ca valoare zecimală pozitivă
cu o parte fracțională opțională. Livrarea semnalului poate continua execuția mai devreme.

sursă fişier [arg ...]
Aprecieri . („punct”), cu excepția faptului că directorul de lucru curent este atașat la căutare
cale (GNU pocni extensie).

suspenda
Oprește shell-ul ca și cum ar fi primit caracterul de suspendare de la terminal. Este
nu este posibilă suspendarea unui shell de conectare decât dacă procesul părinte este membru al
aceeași sesiune terminală, dar este membru al unui grup de procese diferit. Ca general
regula, dacă shell-ul a fost pornit de un alt shell sau prin su(1), poate fi suspendat.

test expresie
[ expresie ]
test evaluează expresie și returnează starea zero dacă este adevărat, 1 dacă este fals sau mai mare
decât 1 dacă a existat o eroare. Este folosit în mod normal ca comanda de condiție a if și
în timp ce declarații. Legăturile simbolice sunt urmate pentru toți fişier expresii cu excepţia -h și
-L.

Sunt disponibile următoarele expresii de bază:

-a fişier fişier există.

-b fişier fişier este un dispozitiv special bloc.

-c fişier fişier este un dispozitiv de caracter special.

-d fişier fişier este un director.

-e fişier fişier există.

-f fişier fişier este un fișier obișnuit.

-G fişier fişiergrupul lui este ID-ul efectiv al grupului shell-ului.

-g fişier fişierModul lui are bitul setgid setat.

-H fişier fişier este un director dependent de context (util doar pe HP-UX).

-h fişier fişier este o legătură simbolică.

-k fişier fişiermodul lui are lipicios(8) set de biți.

-L fişier fişier este o legătură simbolică.

-O fişier fişierproprietarul lui este ID-ul de utilizator efectiv al shell-ului.

-o opțiune Coajă opțiune este setat (vezi set comanda de mai sus pentru o listă de
Opțiuni). Ca extensie non-standard, dacă opțiunea începe cu
un '!', testul este negat; testul eșuează întotdeauna dacă opțiune
nu există (deci [ -o foo -o -o !foo ] returnează adevărat dacă și numai
dacă opțiunea foo există). Același lucru se poate realiza cu [ -o ?foo ]
ca în AT&T UNIX ksh93. opțiune poate fi, de asemenea, steagul scurt condus de
fie „-” fie „+” (fără negație logică), de exemplu „-x” sau „+x”
în loc de „xtrace”.

-p fişier fişier este o conductă numită (FIFO).

-r fişier fişier există și este ușor de citit.

-S fişier fişier este unix(4)-socket de domeniu.

-s fişier fişier Nu este gol.

-t fd Descriptor de fișier fd este tty(4) dispozitiv.

-u fişier fişierModul lui are bitul setuid setat.

-w fişier fişier există și poate fi scris.

-x fişier fişier există și este executabil.

file1 -nt file2 file1 este mai nou decât file2 or file1 există și file2 nu.

file1 -bine file2 file1 este mai vechi decât file2 or file2 există și file1 nu.

file1 -dacă file2 file1 este același fișier ca file2.

şir şir are lungime diferită de zero.

-n şir şir Nu este gol.

-z şir şir este gol.

şir = şir Corzile sunt egale.

şir == şir Corzile sunt egale.

şir > şir Primul operand șir este mai mare decât al doilea operand șir.

şir < şir Primul operand șir este mai mic decât al doilea operand șir.

şir != şir Corzile nu sunt egale.

număr -echivalentul număr Numerele se compară la fel.

număr - este număr Numerele comparate nu sunt egale.

număr -GE număr Numerele se compară mai mari sau egale.

număr -gt număr Numerele se compară mai mari decât.

număr -la număr Numerele se compară mai mici sau egale.

număr -lt număr Numerele se compară mai puțin decât.

Expresiile de bază de mai sus, în care operatorii unari au prioritate față de cei binari
operatori, pot fi combinați cu următorii operatori (enumerati în ordine crescătoare
de prioritate):

expr -o expr SAU logic.
expr -a expr ȘI logic.
! expr NU logic.
( expr ) Grupare.

Rețineți că un număr poate fi de fapt o expresie aritmetică, cum ar fi o expresie matematică
termenul sau numele unei variabile întregi:

x=1; [ "x" -eq 1 ] se evaluează la adevărat

Rețineți că unele reguli speciale sunt aplicate (cu ajutorul POSIX) dacă numărul de
argumente la test sau în interiorul parantezelor [ ... ] este mai mic de cinci: dacă conduce '!'
argumentele pot fi eliminate astfel încât să rămână doar unul până la trei argumente, apoi
se execută comparația redusă; (mulțumită lui XSI) paranteze \( ... \) mai jos patru- şi
forme cu trei argumente la forme cu două și, respectiv, cu un argument; trei argumente
formele preferă în cele din urmă operațiile binare, urmate de negație și paranteză
coborare; formele cu două și patru argumente preferă negația urmată de paranteză; cel
forma cu un singur argument implică întotdeauna -n.

notițe: O greșeală comună este să folosiți „if [ $foo = bar ]” care eșuează dacă parametrul „foo”
este NULL sau nesetat, dacă are spații încorporate (adică octeți IFS), sau dacă este un unar
operator ca '!' sau '-n'. Folosiți în schimb teste precum „dacă [ x"$foo" = x"bar" ]” sau
operator dublu paranteză „dacă [[ $foo = bar ]]” sau, pentru a evita potrivirea modelului (vezi [[
mai sus): „dacă [[ $foo = „$bar” ]]”

[[ ... ]] construcția este nu numai mai sigură de utilizat, ci și adesea mai rapidă.

timp [-p] [conducte]
În cazul în care o conducte este dat, se raportează timpii folosiți pentru executarea conductei. Daca nu
pipeline este dat, apoi utilizatorul și timpul de sistem folosit de shell în sine și tot
sunt raportate comenzile pe care le-a rulat de când a fost pornit. Vremurile raportate sunt
timpul real (timpul scurs de la început până la sfârșit), timpul CPU al utilizatorului (timpul petrecut
rulează în modul utilizator) și timpul CPU al sistemului (timpul petrecut rulând în modul kernel).
Timpurile sunt raportate la eroare standard; formatul de ieșire este:

0m0.00s real 0m0.00s utilizator 0m0.00s sistem

În cazul în care -p opțiunea este dată, rezultatul este puțin mai lung:

real 0.00
utilizator 0.00
sys 0.00

Este o eroare să specificați -p opțiune decât dacă conducte este o comandă simplă.

Redirecționările simple ale erorilor standard nu afectează rezultatul timp comanda:

$ time sleep 1 2>afile
$ { time sleep 1; } 2>afile

Timpii pentru prima comandă nu merg la „afile”, dar cei de la a doua comandă da.

ori Imprimați timpii acumulați de utilizator și de sistem folosiți atât de shell, cât și de procese
că a început cochilia care au ieșit. Formatul de ieșire este:

0m0.00s 0m0.00s
0m0.00s 0m0.00s

capcană n [semnal ...]
Dacă primul operand este un întreg zecimal fără semn, aceasta resetează toate semnalele specificate
la acțiunea implicită, adică este același cu apelarea capcană cu semnul minus ('-') ca
manipulant, urmat de argumentele (n [semnal ...]), toate fiind tratate ca
Semnalele.

capcană [manipulant semnal ...]
Setează un handler de capcane care urmează să fie executat atunci când oricare dintre cele specificate semnalsunt
primit. manipulant este fie un șir gol, care indică semnalele care urmează să fie
ignorat, un semn minus ('-'), care indică faptul că acțiunea implicită trebuie luată pentru
semnalele (vezi semnal(3)), sau un șir care conține comenzi shell care urmează să fie executate la
prima oportunitate (adică când se termină comanda curentă sau înainte de imprimare
următorul prompt PS1) după primirea unuia dintre semnale. semnal este numele unui
semnal (de exemplu TUBA sau ALRM) sau numărul semnalului (vezi ucide -l comandă
de mai sus).

Există două semnale speciale: EXIT (cunoscut și ca 0), care este executat atunci când
shell-ul este pe cale să iasă și ERR, care este executat după ce apare o eroare; o eroare este
ceva care ar determina ieșirea carcasei dacă set -e or set -o errexit opțiune
au fost setate. Manipulatorii EXIT sunt executați în mediul ultimului executat
comanda.

Rețineți că, pentru shell-urile neinteractive, gestionarea capcanelor nu poate fi schimbat pentru semnale
care au fost ignorate când a pornit obuzul.

Fără argumente, starea actuală a capcanelor care au fost setate de la shell
început este prezentat ca o serie de capcană comenzi. Rețineți că rezultatul capcană nu poti
să fie condus în mod util către un alt proces (un artefact al faptului că capcanele sunt curățate
când sunt create subprocese).

Capcana DEBUG a shell-ului Korn original și gestionarea capcanelor ERR și EXIT în
funcțiile nu sunt încă implementate.

adevărat O comandă care iese cu o valoare zero.

global [[+-alpnrtUux] [-L[n,-R[n,-Z[n,-i[n]] | -f [-tux,nume [=valoare] ...]
tipărit [[+-alpnrtUux] [-LRZ[n,-i[n]] | -f [-tux,nume [=valoare] ...]
Afișează sau setează atributele parametrilor. Cu nu nume argumente, atribute ale parametrilor
sunt afișate; dacă nu sunt utilizate opțiuni, atributele curente ale tuturor parametrilor sunt
tipărit ca tipărit comenzi; dacă este dată o opțiune (sau „-” fără literă de opțiune),
sunt imprimați toți parametrii și valorile acestora cu atributele specificate; dacă opțiuni
sunt introduse cu „+”, valorile parametrilor nu sunt tipărite.

If nume sunt date argumente, sunt setate atributele parametrilor numiți (-) Sau
eliminat (+). Opțional pot fi specificate valori pentru parametri. Pentru nume[*], cel
modificarea afectează întreaga matrice și nu poate fi specificată nicio valoare.

If tipărit este utilizat în interiorul unei funcții, toți parametrii specificați sunt localizați. Acest
nu se face de altfel identic global. notițe: Aceasta înseamnă că mksh 's global
comanda este nu echivalent cu alte limbaje de programare' deoarece nu permite a
funcție apelată dintr-o altă funcție pentru a accesa un parametru la un domeniu cu adevărat global,
dar împiedică doar introducerea unuia accesat în domeniul local.

Cand -f este folosit, tipărit operează pe atributele funcțiilor. Ca și în cazul
parametri, dacă nu nume sunt date argumente, funcțiile sunt listate cu valorile lor
(adică definiții), cu excepția cazului în care opțiunile sunt introduse cu „+”, caz în care numai
sunt raportate numele funcțiilor.

-a Atribut de matrice indexat.

-f Modul de funcționare. Afișează sau setează funcțiile și atributele acestora, în loc de
parametri.

-i[n] Atribut întreg. n specifică baza de utilizat la afișarea întregului
(dacă nu este specificat, se folosește baza dată în prima atribuire).
Parametrilor cu acest atribut li se pot atribui valori care conțin aritmetică
expresii.

-L[n] Atribut de justificare la stânga. n specifică lățimea câmpului. Dacă n nu este specificat,
lățimea curentă a unui parametru (sau lățimea primei valori atribuite)
este folosit. Spații albe de început (și zerouri, dacă sunt utilizate cu -Z opțiune) este
dezbrăcat. Dacă este necesar, valorile sunt fie trunchiate, fie cu spațiu pentru a se potrivi
lățimea câmpului.

-l Atribut cu litere mici. Toate caracterele majuscule din valori sunt convertite în
literă mică. (În shell-ul original Korn, acest parametru însemna „întreg lung”
atunci când este folosit cu -i opțiune.)

-n Creați o variabilă legată (referința numelui): orice acces la variabilă nume
va accesa variabila valoare în domeniul actual (acesta este diferit de
AT&T UNIX ksh93!) in schimb. De asemenea, diferit de AT&T UNIX ksh93 este faptul că
valoare este evaluat alene la momentul respectiv nume este accesat. Acesta poate fi folosit de
funcții pentru a accesa variabilele ale căror nume sunt transmise ca parametri, în schimb
de folosire eval.

-p Tipărire finalizată tipărit comenzi care pot fi folosite pentru a recrea atributele
și valorile parametrilor.

-R[n] Atributul Justify Right. n specifică lățimea câmpului. Dacă n nu este
specificat, lățimea curentă a unui parametru (sau lățimea primului său
valoarea atribuită) este utilizată. Spațiile albe din urmă sunt eliminate. Daca este necesar,
valorile sunt fie îndepărtate de caracterele de început, fie adăugite cu spațiu pentru a le face
se potrivesc cu lăţimea câmpului.

-r Atribut numai pentru citire. Parametrii cu acest atribut nu pot fi alocați
sau dezactivat. Odată setat acest atribut, nu poate fi dezactivat.

-t Atributul etichetei. Nu are nicio semnificație pentru coajă; furnizate pentru utilizarea aplicației.

Pentru funcții, -t este atributul urmei. Când funcţionează cu urmă
atribute sunt executate, the xtrace (-x) opțiunea shell este oprită temporar
pe.

-U Atribut întreg fără semn. Numerele întregi sunt tipărite ca valori fără semn (combine
cu -i opțiune). Această opțiune nu se află în shell-ul original Korn.

-u Atribut majuscule. Toate caracterele minuscule din valori sunt convertite în
majuscule. (În shell-ul original Korn, acest parametru însemna „nesemnat
întreg” atunci când este folosit împreună cu -i opțiunea care însemna litere mari ar fi
nu va fi folosit niciodată pentru baze mai mari de 10. A se vedea -U opțiune.)

Pentru funcții, -u este atributul nedefinit. Vedea funcţii mai sus pentru
implicatii ale acestui lucru.

-x Atribut de export. Parametrii (sau funcțiile) sunt plasați în mediul de
orice comenzi executate. Funcțiile exportate nu sunt încă implementate.

-Z[n] Atribut de umplere zero. Dacă nu este combinat cu -L, aceasta este la fel ca -R, cu exceptia
zero padding este folosită în loc de space padding. Pentru numere întregi, numărul
în loc de bază este căptușită.

Dacă vreunul dintre -i, -L, -l, -R, -U, -u, Sau -Z opțiunile sunt schimbate, toate celelalte din aceasta
set sunt șterse, cu excepția cazului în care sunt date și pe aceeași linie de comandă.

limită [-aBCcdefHilMmnOPpqrSsTtVvw] [valoare]
Afișează sau setează limite de proces. Dacă nu sunt utilizate opțiuni, limita de dimensiune a fișierului (-f) este
asumat. valoare, dacă este specificat, poate fi fie o expresie aritmetică, fie cuvântul
"nelimitat". Limitele afectează shell-ul și orice procese create de shell
după ce se impune o limită. Rețineți că este posibil ca unele sisteme să nu permită existența unor limite
crescut odată ce sunt setate. De asemenea, rețineți că tipurile de limite disponibile sunt de sistem
dependente – unele sisteme au doar -f limită.

-a Afișează toate limitele; dacă nu -H este utilizat, sunt afișate limitele soft.

-B n Setați dimensiunea bufferului de socket la n kibibytes.

-C n Setați numărul de fire din cache la n.

-c n Impune o limită de dimensiune de n blocuri pe dimensiunea haldelor de miez.

-d n Impune o limită de dimensiune de n kibibytes pe dimensiunea zonei de date.

-e n Setează maximul frumos la n.

-f n Impune o limită de dimensiune de n blocuri pe fișierele scrise de shell și copilul său
procese (fișierele de orice dimensiune pot fi citite).

-H Setați numai limita rigidă (prestabilit este să setați atât limitele hard, cât și cele soft).

-i n Setați numărul de semnale în așteptare la n.

-l n Impune o limită de n kibibytes pe cantitatea de memorie fizică blocată (cablată).

-M n Setați memoria blocată AIO la n kibibytes.

-m n Impune o limită de n kibibytes pe cantitatea de memorie fizică utilizată.

-n n Impune o limită de n descriptori de fișiere care pot fi deschise simultan.

-O n Setați numărul de operațiuni AIO la n.

-P n Limitați numărul de fire per proces la n.

-p n Impune o limită de n procese care pot fi rulate de utilizator în orice moment.

-q n Limitați dimensiunea cozilor de mesaje POSIX la n octeți.

-r n Setați prioritatea maximă în timp real la n.

-S Setați numai limita soft (prestabilit este să setați atât limitele hard, cât și cele soft).

-s n Impune o limită de dimensiune de n kibibytes pe dimensiunea zonei stivei.

-T n Impune o limită de timp de n secunde reale pentru a fi folosite de fiecare proces.

-t n Impune o limită de timp de n Secunde CPU petrecute în modul utilizator pentru a fi utilizate de fiecare
proces.

-V n Setați numărul de monitoare vnode pe Haiku la n.

-v n Impune o limită de n kibibytes pe cantitatea de memorie virtuală (spațiu de adrese)
folosit.

-w n Impune o limită de n kibibytes pe cantitatea de spațiu de swap utilizată.

Până la limită este în cauză, un bloc are 512 octeți.

masca [-S] [masca]
Afișați sau setați masca de creare a permisiunii de fișier sau umask (vezi masca(2)). Dacă -S
este utilizată opțiunea, masca afișată sau setată este simbolică; în caz contrar, este un octal
număr.

Măștile simbolice sunt ca cele folosite de chmod(1). Când sunt folosite, ele descriu ce
permisiunile pot fi puse la dispoziție (spre deosebire de măștile octale în care un bit setat înseamnă
bitul corespunzător urmează să fie șters). De exemplu, „ug=rwx,o=" setează masca astfel
fișierele nu vor putea fi citite, inscriptibile sau executabile de „alții” și este echivalent
(pe majoritatea sistemelor) la masca octală „007”.

Unalias [-adt] [nume ...]
Aliasurile pentru numele date sunt eliminate. Dacă -a este folosită opțiunea, toate aliasurile
sunt eliminate. Dacă -t or -d sunt utilizate opțiunile, se efectuează operațiunile indicate
pe aliasuri urmărite sau, respectiv, directoare.

dezactivat [-fv] parametru ...
Dezactivați parametrii numiți (-v, implicit) sau funcții (-f). Cu parametru[*],
atributele sunt păstrate, numai valorile sunt nesetate.

Starea de ieșire este diferită de zero dacă oricare dintre parametri are atributul de numai citire
set, zero altfel.

aștepta [muncă ...]
Așteptați ca lucrările specificate să se termine. Starea de ieșire a aștepta este cel din urmă
job specificat; dacă ultimul loc de muncă este oprit de un semnal, starea de ieșire este 128 + the
numărul semnalului (vezi ucide -l stare de ieșire de mai sus); dacă ultimul loc de muncă specificat nu poate
să fie găsit (pentru că nu a existat niciodată sau s-a terminat deja), statutul de ieșire al aștepta
este 127. Vezi Loc de munca Control mai jos pentru formatul de muncă. aștepta va reveni dacă un semnal
pentru care a fost setată o capcană este primită sau dacă un semnal SIGHUP, SIGINT sau SIGQUIT
este primit.

Dacă nu sunt specificate locuri de muncă, aștepta așteaptă toate joburile care rulează în prezent (dacă există) să
termină și iese cu starea zero. Dacă monitorizarea lucrărilor este activată, finalizarea
starea lucrărilor este tipărită (acesta nu este cazul când lucrările sunt specificate în mod explicit).

de unde [-pv] [nume ...]
Fara -v opțiunea, este aceeași ca comandă -v, cu excepția că pseudonimele nu sunt tipărite
ca comanda alias. Cu -v opțiune, este exact la fel ca comandă -V. În
în orice caz, cel -p opțiunea diferă: calea de căutare nu este afectată în de unde, Dar
căutarea se limitează la cale.

Loc de munca Control
Controlul jobului se referă la capacitatea shell-ului de a monitoriza și controla joburile care sunt procese sau
grupuri de procese create pentru comenzi sau conducte. Cel puțin, carcasa ține evidența
a stării joburilor de fundal (adică asincrone) care există în prezent; acest
informațiile pot fi afișate folosind de locuri de muncă comenzi. Dacă controlul jobului este complet activat
(folosind set -m or set -o monitorizează), așa cum este pentru shell-urile interactive, procesele unui job
sunt plasate în propriul grup de procese. Lucrările din prim-plan pot fi oprite prin tastarea suspendării
caracter de la terminal (în mod normal ^Z), joburile pot fi repornite fie în prim-plan, fie
fundal folosind fg și bg comenzile, iar starea terminalului este salvată sau restaurată
atunci când un job din prim-plan este oprit sau, respectiv, repornit.

Rețineți că numai comenzile care creează procese (de exemplu, comenzi asincrone, subshell
comenzile și comenzile neîncorporate, nefuncționale) pot fi oprite; comenzi ca citit nu poti
fi.

Când un job este creat, i se atribuie un număr de job. Pentru shell-urile interactive, acest număr este
tipărit în interiorul „[..]”, urmat de ID-urile de proces ale proceselor din lucrare când an
se execută comanda asincronă. Un loc de muncă poate fi menționat în bg, fg, de locuri de muncă, ucide, și aștepta
comenzi fie prin ID-ul de proces al ultimului proces din conducta de comandă (cum este stocat în
il $! parametru) sau prefixând numărul jobului cu un semn de procente ('%'). Alt procent
secvențele pot fi folosite și pentru a face referire la joburi:

%+ | %% | % Cel mai recent loc de muncă oprit sau, dacă nu există locuri de muncă oprite, cel mai vechi
muncă de rulare.

% - Slujba care ar fi %+ loc de muncă dacă acesta din urmă nu a existat.

%n Lucrarea cu numărul locului de muncă n.

%?şir Lucrarea cu comanda sa care conține șirul şir (apare o eroare dacă
se potrivesc mai multe locuri de muncă).

%şir Lucrarea cu comanda sa care începe cu șirul şir (apare o eroare dacă
se potrivesc mai multe locuri de muncă).

Când o lucrare își schimbă starea (de exemplu, o lucrare de fundal se termină sau o lucrare din prim-plan este oprită),
shell imprimă următoarele informații de stare:

[număr] pavilion Starea comandă

Unde...

număr este numărul locului de muncă al postului;

pavilion este caracterul „+” sau „-” dacă jobul este %+ or %- loc de muncă, respectiv, sau spațiu
dacă nu este niciunul;

Starea indică starea curentă a jobului și poate fi:

Terminat [număr]
Slujba a ieșit. număr este statutul de ieșire al jobului care este omis
dacă starea este zero.

Rulare Lucrarea nu s-a oprit și nici nu a ieșit (rețineți că rularea nu se oprește
înseamnă neapărat consumarea timpului CPU – procesul ar putea fi blocat
în așteptarea unui eveniment).

Oprit [semnal]
Lucrarea a fost oprită de către indicat semnal (dacă nu este dat niciun semnal,
munca a fost oprită de SIGTSTP).

semnal-descriere [„core dumping”]
Lucrarea a fost oprită de un semnal (de exemplu, eroare de memorie, blocare); utilizare ucide -l
pentru o listă de descrieri ale semnalelor. Mesajul „core dumed” indică
procesul a creat un fișier de bază.

comandă este comanda care a creat procesul. Dacă există mai multe procese în
loc de muncă, fiecare proces va avea o linie care arată comandă si posibil al ei Starea, dacă
este diferit de starea procesului anterior.

Când se încearcă ieșirea din shell în timp ce există joburi în starea oprită,
shell avertizează utilizatorul că există joburi oprite și nu iese. Dacă o altă încercare este
imediat făcut să iasă din shell, joburile oprite primesc un semnal SIGHUP și shell
iesirile. În mod similar, dacă nu opțiunea nu este setată și există joburi care rulează atunci când se încearcă
este făcut pentru a ieși dintr-un shell de autentificare, shell-ul avertizează utilizatorul și nu iese. Dacă alta
se încearcă imediat ieșirea din shell, joburile care rulează sunt trimise un semnal SIGHUP și
cochilia iese.

POSIX mod
Introducerea set -o POSIX modul va cauza mksh pentru a se comporta și mai conform POSIX pe alocuri
unde implicitele sau opiniile diferă. Rețineți că mksh va funcționa în continuare cu nesemnat
aritmetică pe 32 de biți; utilizare lksh dacă aritmetica pe gazdă lung tip de date, complet cu ISO C
Comportament nedefinit, sunt necesare; referi la lksh(1) pagina de manual pentru detalii. Cele mai multe altele
istoric, AT&T UNIX ksh-diferențele compatibile sau de părere pot fi dezactivate folosind aceasta
modul; acestea sunt:

· GNU pocni Redirecționare I / O &>fişier nu mai este suportat.

· Descriptorii de fișiere creați prin redirecționări I/O sunt moșteniți de procesele copil.

· Numerele cu cifra de început zero sunt interpretate ca octale.

· ecou încorporat nu interpretează barele oblice inverse și acceptă doar opțiunea exactă „-n".

· ... (lista este incompletă și se poate modifica pentru R53)

SH mod
Mod de compatibilitate; destinat utilizării cu scripturi vechi care nu pot fi reparate cu ușurință; cel
modificările sunt după cum urmează:

· GNU pocni Redirecționare I / O &>fişier nu mai este suportat.

· Descriptorii de fișiere creați prin redirecționări I/O sunt moșteniți de procesele copil.

· ecou încorporat nu interpretează barele oblice inverse și acceptă doar opțiunea exactă „-n".

· ... (lista este incompletă și se poate modifica pentru R53)

Interactiv intrare linie editare
Shell acceptă trei moduri de citire a liniilor de comandă de la a tty(4) într-un mod interactiv
sesiune, controlată de emacs, gmacs, și vi opțiuni (cel mult una dintre acestea poate fi setată la
o singura data). Valoarea implicită este emacs. Modurile de editare pot fi setate explicit folosind set built-in.
Dacă niciuna dintre aceste opțiuni nu este activată, shell-ul citește pur și simplu linii folosind standardul tty(4)
conducător auto. Dacă emacs or gmacs opțiunea este setată, shell-ul permite editarea emacs a fișierului
comanda; în mod similar, dacă vi opțiunea este setată, shell-ul permite editarea vi-like a
comanda. Aceste moduri sunt descrise în detaliu în secțiunile următoare.

În aceste moduri de editare, dacă o linie este mai lungă decât lățimea ecranului (vezi COLUMNE
parametru), un caracter „>”, „+” sau „<” este afișat în ultima coloană care indică acest lucru
există mai multe caractere după, înainte și după, sau înainte de poziția curentă,
respectiv. Linia este derulată orizontal după cum este necesar.

Liniile finalizate sunt introduse în istoric, cu excepția cazului în care încep cu un octet IFS sau IFS
spațiu alb sau sunt aceleași cu linia anterioară.

Emacs editare mod
Cand emacs opțiunea este setată, editarea interactivă a liniei de intrare este activată. Avertisment: acest mod
este ușor diferit de modul emacs din shell-ul original Korn. În acest mod, diverse
comenzile de editare (de obicei legate de unul sau mai multe caractere de control) provoacă acțiuni imediate
fără a aștepta o nouă linie. Mai multe comenzi de editare sunt legate de un control special
caractere atunci când shell-ul este invocat; aceste legături pot fi modificate folosind lega comanda.

Mai jos este o listă de comenzi de editare disponibile. Fiecare descriere începe cu
numele comenzii, sufixat cu două puncte; un [n] (dacă comanda poate fi prefixată cu a
numara); și orice taste la care este legată în mod implicit comanda, scrise folosind notația caret de ex
caracterul ASCII ESC este scris ca ^[. Aceste secvențe de control nu sunt sensibile la majuscule și minuscule.
Un prefix de numărare pentru o comandă este introdus folosind secvența ^[n, În cazul în care n este o succesiune de 1
sau mai multe cifre. Dacă nu se specifică altfel, dacă o contorizare este omisă, aceasta este implicită la 1.

Rețineți că editarea numelor comenzilor sunt folosite numai cu lega comanda. În plus, mulți
comenzile de editare sunt utile doar pe terminalele cu cursor vizibil. Legăturile implicite
au fost aleși să semene cu legăturile de taste Emacs corespunzătoare. Al utilizatorului tty(4) caractere
(de exemplu, ȘTERGERE) sunt obligați să înlocuiască rezonabile și să anuleze legăturile implicite.

avorta: ^C, ^G
Anulați comanda curentă, goliți memoria tampon de linie și setați starea de ieșire la
întrerupt.

inserare automată: [n]
Pur și simplu face ca caracterul să apară ca intrare literală. Cele mai multe personaje obișnuite
sunt legate de aceasta.

caracter înapoi: [n] ^B, ^XD, ANSI-CurLeft, PC-CurLeft
Mută ​​cursorul înapoi n caractere.

cuvânt înapoi: [n] ^[b, ANSI-Ctrl-CurLeft, ANSI-Alt-CurLeft
Mută ​​cursorul înapoi la începutul cuvântului; cuvintele constau din
caractere alfanumerice, caractere de subliniere („_”) și semnul dolarului („$”).

începutul-istoriei: ^[
Se trece la începutul istoriei.

începutul liniei: ^A, ANSI-Home, PC-Home
Mută ​​cursorul la începutul liniei de intrare editate.

cuvânt cu majuscule: [n] ^[C, ^[c
Cu majuscule primul caracter din următorul n cuvinte, lăsând cursorul după sfârșit
a ultimului cuvânt.

ecran clar: ^[^L
Imprimă o secvență configurabilă în timp de compilare pentru a șterge ecranul și a porni cursorul,
redesenează întregul prompt și linia de intrare editată curent. Secvența implicită
funcționează pentru aproape toate terminalele standard.

comentariu: ^[#
Dacă linia curentă nu începe cu un caracter de comentariu, se adaugă unul la
începutul liniei și se introduce linia (ca și cum ar fi fost apăsat return);
în caz contrar, caracterele de comentariu existente sunt eliminate și cursorul este plasat la
începutul liniei.

complet: ^[^[
Completează automat atât cât este unic pentru numele comenzii sau numele fișierului
care conțin cursorul. Dacă întreaga comandă sau numele fișierului rămas este unic, a
spațiul este tipărit după finalizarea acestuia, cu excepția cazului în care este un nume de director, caz în care
„/” este atașat. Dacă nu există nicio comandă sau un nume de fișier cu cuvântul parțial curent
ca prefix, este scos un caracter de clopoțel (de obicei provocând un bip).

comandă completă: ^X^[
Completează automat atât cât este unic, numele comenzii care are parțial
cuvânt până la cursor ca prefix, ca în Completă comanda de mai sus.

fişier-complet: ^[^X
Completează automat atât cât este unic numele fișierului care are parțial
cuvânt până la cursor ca prefix, ca în Completă comanda descrisă mai sus.

listă completă: ^I, ^[=
Completați cât mai mult posibil din cuvântul curent și enumerați-l pe cel posibil
completări pentru acesta. Dacă este posibilă o singură completare, potriviți ca în Completă
comanda de mai sus. Rețineți că ^I este de obicei generat de tasta TAB (tabulator).

delete-char-backward: [n] ȘTERGE, ^?, ^H
ștergeri n caractere înaintea cursorului.

delete-char-forward: [n] ANSI-Del, PC-Del
ștergeri n caractere după cursor.

șterge-cuvânt-înapoi: [n] WERASE, ^[^?, ^[^H, ^[h
ștergeri n cuvintele dinaintea cursorului.

șterge-cuvânt-înainte: [n] ^[d
Șterge caracterele de după cursor până la sfârșitul n cuvinte.

istoric: [n] ^N, ^XB, ANSI-CurDown, PC-CurDown
Derulează înainte memoria tampon de istorie n linii (mai târziu). Fiecare linie de intrare inițial
începe imediat după ultima intrare din memoria tampon de istorie, deci istoric nu este
util până când fie istoricul cautarilor, istoricul de căutare or istorie a fost
efectuat.

cuvânt mic: [n] ^[L, ^[l
Următorul cu litere mici n cuvinte.

linie de editare: [n] ^Xe
Editați linia n sau linia curentă, dacă nu este specificată, în mod interactiv. Actualul
comanda executată este fc -e ${VISUAL:-${EDITOR:-vi}} n.

sfârşitul istoriei: ^[>
Se trece la sfârșitul istoriei.

sfârşitul liniei: ^E, ANSI-End, PC-End
Mută ​​cursorul la sfârșitul liniei de introducere.

eot: ^_
Acționează ca un final de fișier; acest lucru este util deoarece intrarea în modul de editare dezactivează normal
canonizarea intrării terminalului.

eot-or-delete: [n] ^D
Actioneaza ca EOT dacă singur pe o linie; altfel acționează ca delete-char-forward.

eroare: (nelegat)
Eroare (suneți la sonerie).

schimb-punct-și-marca: ^X^X
Plasează cursorul acolo unde se află marcajul și setează marcajul acolo unde era cursorul.

expand-file: ^[*
Adaugă un „*” cuvântului curent și înlocuiește cuvântul cu rezultatul de
efectuând un fișier globbing pe cuvânt. Dacă niciun fișier nu se potrivește cu modelul, clopoțelul este
treaptă.

forward-char: [n] ^F, ^XC, ANSI-CurRight, PC-CurRight
Mută ​​cursorul înainte n caractere.

cuvânt înainte: [n] ^[f, ANSI-Ctrl-CurRight, ANSI-Alt-CurRight
Mută ​​cursorul înainte până la sfârșitul ncuvantul.

du-te la istorie: [n] ^[g
Merge la numărul istoric n.

kill-line: Ucide
Șterge întreaga linie de intrare.

kill-region: ^W
Șterge intrarea dintre cursor și marcaj.

kill-to-eol: [n] ^K
Șterge intrarea de pe cursor până la sfârșitul liniei dacă n nu este specificat;
în caz contrar, șterge caracterele dintre cursor și coloană n.

lista: ^[?
Imprimă o listă sortată, în coloane, de nume de comenzi sau nume de fișiere (dacă există) care pot
completați cuvântul parțial care conține cursorul. Numele directorului au „/” adăugat
lor.

list-command: ^X?
Imprimă o listă sortată, în coloane, de nume de comenzi (dacă există) care pot completa
cuvânt parțial care conține cursorul.

fișier-listă: ^X^Y
Tipărește o listă sortată, în coloane, de nume de fișiere (dacă există) care pot completa fișierul
cuvânt parțial care conține cursorul. Indicatorii de tip de fișier sunt atașați așa cum este descris
în listă de mai sus.

linie nouă: ^J, ^M
Face ca linia de intrare curentă să fie procesată de către shell. Cursorul curent
poziţia poate fi oriunde pe linie.

newline-and-next: ^O
Determină ca linia de intrare curentă să fie procesată de către shell și următoarea linie de la
istoria devine linia curentă. Acest lucru este util numai după o istorie,
istoricul cautarilor or istoricul de căutare.

nu-op: RENUNȚĂ
Acest lucru nu face nimic.

prefix-1: ^[
Introduce o secvență de comandă de 2 caractere.

prefix-2: ^X, ^[[, ^[O
Introduce o secvență de comandă de 2 caractere.

prev-hist-word: [n] ^[., ^[_
Ultimul cuvânt sau, dacă este dat, nal-lea cuvânt (bazat pe zero) din precedentul (pe repetat
execuție, al doilea, al treilea etc.) este introdusă comanda la cursor. Utilizarea de
această comandă de editare aruncă marcajul la gunoi.

citat: ^^, ^V
Următorul caracter este luat la propriu, mai degrabă decât ca o comandă de editare.

redesenează: ^L
Retipărește ultima linie a șirului de prompt și linia de intrare curentă pe o nouă linie
linia.

căutare-caracter-înapoi: [n] ^[^]
Căutați înapoi în linia curentă pentru napariția următorului personaj
dactilografiat.

căutare-caracter-înainte: [n] ^]
Căutați înainte în linia curentă pentru napariția următorului personaj
dactilografiat.

istoria-căutări: ^R
Intrați în modul de căutare incrementală. Lista istoricului intern este căutată înapoi
comenzi care se potrivesc cu intrarea. Un „^” inițial în șirul de căutare ancorează
căutare. Tasta de evacuare va părăsi modul de căutare. Alte comenzi, inclusiv secvențe
de evadare ca prefix-1 urmată de a prefix-1 or prefix-2 cheia va fi executată după
părăsind modul de căutare. The avorta Comanda (^G) va restabili linia de intrare înainte
căutarea a început. Succesiv istoricul cautarilor comenzile continuă căutarea înapoi la
următoarea apariție anterioară a tiparului. Bufferul istoric reține doar a
număr finit de linii; cele mai vechi sunt aruncate după caz.

istoric de căutare: ANSI-PgUp, PC-PgUp
Căutați înapoi în memoria tampon de istorie pentru comenzi al căror început se potrivește cu
porțiunea liniei de intrare dinaintea cursorului. Când este folosit pe o linie goală, aceasta are
acelasi efect ca istorie.

istoric-căutări-în jos: ANSI-PgDn, PC-PgDn
Căutați înainte prin bufferul istoric comenzile al căror început se potrivește cu
porțiunea liniei de intrare dinaintea cursorului. Când este folosit pe o linie goală, aceasta are
acelasi efect ca istoric. Acest lucru este util numai după o istorie,
istoricul cautarilor or istoricul de căutare.

set-mark-command: ^[
Setați marcajul la poziția cursorului.

transpose-chars: ^T
Dacă la sfârșitul rândului, sau dacă gmacs opțiunea este setată, aceasta le schimbă pe cele două
caracterele anterioare; în caz contrar, schimbă caracterele anterioare și actuale și
mută cursorul cu un caracter la dreapta.

istoric: [n] ^P, ^XA, ANSI-CurUp, PC-CurUp
Derulează înapoi memoria tampon de istorie n linii (mai devreme).

cuvânt cu majuscule: [n] ^[U, ^[u
Următorul cu majuscule n cuvinte.

versiunea: ^[^V
Afișează versiunea de mksh. Bufferul de editare curent este restaurat de îndată ce o cheie
este apăsat. Apăsarea tastei de restaurare este procesată, cu excepția cazului în care este un spațiu.

trage: ^Y
Inserează cel mai recent șir de text eliminat în poziția curentă a cursorului.

yank-pop: ^[y
Imediat după o smulge, înlocuiește șirul de text inserat cu următorul anterior
șir de text ucis.

Vi editare mod
Notă: Modul de editare din linia de comandă vi este orfan, dar încă funcțional. Este curat pe 8 biți
dar în mod specific nu acceptă UTF-8 sau MBCS.

Editorul de linie de comandă vi în mksh are practic aceleași comenzi ca și vi(1) redactor cu
urmatoarele exceptii:

· Începi în modul de inserare.

· Există nume de fișier și comenzi de completare a comenzilor: =, \, *, ^X, ^E, ^F și,
optional, și .

· _ comanda este diferită (în mksh, este comanda ultimul argument; în vi(1) merge
până la începutul liniei curente).

· / și G comenzile se deplasează în direcția opusă j comanda.

· Comenzile care nu au sens într-un editor cu o singură linie nu sunt disponibile (de exemplu, screen
comenzi de mișcare și ex(1) colon stil (:) comenzi).

Aprecieri vi(1), există două moduri: modul „inserare” și modul „comandă”. În modul de inserare, majoritatea
caracterele sunt pur și simplu introduse în buffer la poziția curentă a cursorului pe măsură ce sunt tastate;
cu toate acestea, unele personaje sunt tratate special. În special, următoarele personaje sunt
luate din curent tty(4) setări (vezi stty(1)) și au sensul lor obișnuit (valori normale
sunt între paranteze): kill (^U), erase (^?), werase (^W), eof (^D), intr (^C) și quit (^\).
Pe lângă cele de mai sus, următoarele caractere sunt, de asemenea, tratate special în insert
mod:

^E Enumerarea comenzii și a numelui fișierului (vezi mai jos).

^F Completarea comenzii și a numelui fișierului (vezi mai jos). Dacă este folosit de două ori la rând, lista de
este afișată posibilele completări; dacă este folosit a treia oară, finalizarea este anulată.

^H Șterge caracterul anterior.

^J | ^M Sfârșitul rândului. Linia curentă este citită, analizată și executată de shell.

^V Literal în continuare. Următorul caracter introdus nu este tratat special (poate fi folosit pentru
introduceți caracterele descrise aici).

^X Extinderea numelui de comandă și fișier (vezi mai jos).

Pune editorul în modul de comandă (vezi mai jos).

Numele fișierului opțional și completarea comenzii (vezi ^F de mai sus), activat cu set -o
vi-tabcomplete.

În modul de comandă, fiecare caracter este interpretat ca o comandă. Personaje care nu
corespund comenzilor, sunt combinații ilegale de comenzi sau sunt comenzi care nu pot fi
efectuate, toate cauzează bipuri. În următoarele descrieri ale comenzilor, un [n] indică
comanda poate fi prefixată de un număr (de ex 10l se deplasează la dreapta cu 10 caractere); dacă nu există un număr
se folosește prefixul, n se presupune că este 1, dacă nu se specifică altfel. Termenul „actual
poziție” se referă la poziția dintre cursor și caracterul care precedă cursorul.
Un „cuvânt” este o secvență de litere, cifre și caractere de subliniere sau o secvență de non-
caractere cu litere, fără cifre, fără caractere de subliniere și fără spații albe (de exemplu, „ab2*&^” conține două
cuvinte) și un „cuvânt mare” este o secvență de caractere care nu fac spații albe.

Special mksh comenzi vi:

Următoarele comenzi nu sunt sau sunt diferite de editorul normal de fișiere vi:

[n]_ Introduceți un spațiu urmat de nCuvântul cel mare din ultima comandă din istorie
la poziția curentă și intră în modul de inserare; dacă n nu este specificat, ultimul
se introduce cuvântul.

# Introduceți caracterul de comentariu ('#') la începutul liniei curente și reveniți
linia către coajă (echivalent cu I#^J).

[n]g Ca G, cu excepția cazului în care n nu este specificat, merge la cel mai recent amintit
linia.

[n]v Editați linia n folosind vi(1) redactor; dacă n nu este specificat, linia curentă este
editat. Comanda efectivă executată este fc -e ${VISUAL:-${EDITOR:-vi}} n.

* și ^X Comandă sau extinderea numelui fișierului este aplicată cuvântului mare curent (cu un
se adaugă „*” dacă cuvântul nu conține caractere globbing de fișiere) – cuvântul mare este
înlocuit cu cuvintele rezultate. Dacă cuvântul mare actual este primul de pe
aliniază sau urmează unul dintre caracterele „;”, „|”, „&”, „(” sau „)” și nu
conține o bară oblică ('/'), apoi extinderea comenzii este făcută; altfel nume de fișier
extinderea se face. Expansiunea de comandă se va potrivi cu cuvântul mare împotriva tuturor
aliasuri, funcții și comenzi încorporate, precum și orice fișiere executabile găsite
prin căutarea directoarelor în parametrul PATH. Extinderea numelui fișierului se potrivește
cuvântul mare împotriva fișierelor din directorul curent. După extindere,
cursorul este plasat chiar după ultimul cuvânt, iar editorul este în modul de inserare.

[n]\, [n]^F, [n] , și [n]
Completarea numelui comenzii/fișierului. Înlocuiți cuvântul mare actual cu cel mai lung
potrivire unică obținută după efectuarea extinderii comenzii și a numelui fișierului.
este recunoscut doar dacă vi-tabcomplete opțiunea este setată, în timp ce este doar
recunoscut dacă vi-esccomplete opțiunea este setată (vezi set -o). dacă n este specificat,
il nEste selectată finalizarea posibilă (așa cum este raportată de numele comenzii/fișierului
comanda de enumerare).

= și ^E Enumerarea numelui de comandă/fișier. Listați toate comenzile sau fișierele care se potrivesc cu
cuvant mare actual.

^V Afișează versiunea de mksh. Bufferul de editare curent este restabilit de îndată ce a
tasta este apăsată. Apăsarea tastei de restabilire este ignorată.

@c Extindere macro. Executați comenzile găsite în alias c.

Comenzi de mișcare în interiorul liniilor:

[n]mână [n]^H
Mută ​​la stânga n caractere.

[n]teren [n]
Misca-te la dreapta n caractere.

0 Treceți la coloana 0.

^ Treceți la primul caracter fără spații albe.

[n]| Mutați la coloană n.

$ Treceți la ultimul caracter.

[n]b Deplasați-vă înapoi n cuvinte.

[n]B Întoarce-te n cuvinte mari.

[n]e Deplasați-vă până la sfârșitul cuvântului, n ori.

[n]E Înaintați până la sfârșitul cuvântului mare, n ori.

[n]w Înaintați n cuvinte.

[n]W Înaintați n cuvinte mari.

% Găsiți potrivire. Editorul așteaptă cu nerăbdare cea mai apropiată paranteză, paranteză sau acolade
și apoi mută cursorul la paranteza, paranteza sau acolade care se potrivesc.

[n]fc Treceți înainte la napariția personajului c.

[n]Fc Deplasați-vă înapoi la napariția personajului c.

[n]tc Deplasați-vă înainte chiar înainte de napariția personajului c.

[n]Tc Deplasați-vă înapoi chiar înainte de napariția personajului c.

[n]; Se repetă ultimul f, F, t, Sau T comanda.

[n], se repetă ultima f, F, t, Sau T comandă, dar se mișcă în direcția opusă.

Comenzi de mișcare între linii:

[n]j, [n]+ și [n]^N
Treceți la nurmătorul rând din istorie.

[n]k, [n]-, și [n]^P
Treceți la nal-lea rând anterior din istorie.

[n]G Mutați la linie n în istorie; dacă n nu este specificat, numărul primului
este folosită linia amintită.

[n]g Ca G, cu excepția cazului în care n nu este specificat, merge la cea mai recentă linie amintită.

[n]/şir
Căutați înapoi prin istorie pentru na linia conţinând şir; dacă şir
începe cu „^”, restul șirului trebuie să apară la începutul istoricului
linie pentru a se potrivi.

[n]?şir
La fel ca /, cu excepția faptului că caută înainte prin istorie.

[n]n Căutați napariția ultimului șir de căutare; direcția căutării
este la fel cu ultima căutare.

[n]N Căutați napariția ultimului șir de căutare; direcția căutării
este opusul ultimei căutări.

ANSI-CurUp, PC-PgUp
Luați caracterele de la începutul liniei la poziția curentă a cursorului ca
căutați șirul și faceți o căutare înapoi în istoric pentru liniile care încep cu aceasta
şir; păstrați poziția cursorului. Acesta funcționează numai în modul de inserare și îl păstrează
activat.

Editați comenzi

[n]a Adăugați text n ori; intră în modul de inserare imediat după poziția curentă. The
append este replicat numai dacă se reintroduce modul de comandă, adică este folosit.

[n]A La fel ca a, cu excepția faptului că se anexează la sfârșitul rândului.

[n]i Inserați text n ori; intră în modul de inserare în poziția curentă. Inserarea
este replicat numai dacă se reintroduce modul de comandă, adică este folosit.

[n]I La fel ca i, cu excepția faptului că inserarea se face chiar înaintea primului caracter care nu este gol.

[n]s Înlocuiți-l pe următorul n caractere (adică ștergeți caracterele și intrați în insert
Mod).

S Înlocuiește întreaga linie. Toate caracterele de la primul caracter care nu este gol până la sfârșit
ale liniei sunt șterse și se intră în modul de inserare.

[n]cmutare-cmd
Schimbarea de la poziția curentă la poziția rezultată din n mutare-cmds (adică
ștergeți regiunea indicată și intrați în modul de inserare); dacă mutare-cmd is c, Linia
începând de la primul caracter neblank este schimbat.

C Schimbați de la poziția curentă la sfârșitul liniei (adică ștergeți până la sfârșitul
linia și intră în modul de inserare).

[n]x Ștergeți următorul n caractere.

[n]X Ștergeți precedentul n caractere.

D Ștergeți până la sfârșitul liniei.

[n]dmutare-cmd
Ștergeți din poziția curentă în poziția rezultată din n mutare-cmds;
mutare-cmd este o comandă de mișcare (vezi mai sus) sau d, caz în care linia curentă este
eliminat.

[n]rc Înlocuiește-l pe următorul n personaje cu personajul c.

[n]R Înlocuiește. Intrați în modul de inserare, dar suprascrieți caracterele existente în loc să le inserați
înaintea caracterelor existente. Înlocuirea se repetă n ori.

[n]~ Schimbați cazul următoarei n caractere.

[n]ymutare-cmd
Strângeți de la poziția curentă la poziția rezultată din n mutare-cmds în
tampon de tragere; dacă mutare-cmd is y, toată linia este smulsă.

Y Rotiți de la poziția curentă până la sfârșitul liniei.

[n]p Lipiți conținutul tamponului de tracțiune imediat după poziția curentă, n ori.

[n]P La fel ca p, cu excepția faptului că tamponul este lipit în poziția curentă.

Diverse comenzi vi

^J și ^M
Linia curentă este citită, analizată și executată de shell.

^L și ^R
Redesenați linia curentă.

[n]. Repetați ultima comandă de editare n ori.

u Anulați ultima comandă de editare.

U Anulați toate modificările care au fost făcute liniei curente.

Tastele PC Home, End, Del și cursor
Se deplasează conform așteptărilor, atât în ​​modul de inserare, cât și în modul de comandă.

introduce și părăsi
Caracterele terminale de întrerupere și ieșire determină ștergerea liniei curente și
un nou prompt pentru a fi tipărit.

Utilizați mksh online folosind serviciile onworks.net


Servere și stații de lucru gratuite

Descărcați aplicații Windows și Linux

  • 1
    Alt-F
    Alt-F
    Alt-F oferă o sursă gratuită și deschisă
    firmware alternativ pentru DLINK
    DNS-320/320L/321/323/325/327L and
    DNR-322L. Alt-F are Samba și NFS;
    suportă ext2/3/4...
    Descărcați Alt-F
  • 2
    usm
    usm
    Usm este un pachet slackware unificat
    manager care se ocupă automat
    rezolvarea dependenței. Se unifică
    diverse depozite de pachete, inclusiv
    slackware, slacky, p...
    Descărcați usm
  • 3
    Chart.js
    Chart.js
    Chart.js este o bibliotecă Javascript care
    permite designerilor și dezvoltatorilor să deseneze
    tot felul de diagrame folosind HTML5
    element de pânză. Chart js oferă o excelentă
    matrice...
    Descărcați Chart.js
  • 4
    iReport-Designer pentru JasperReports
    iReport-Designer pentru JasperReports
    NOTĂ: Asistență iReport/Jaspersoft Studio
    Anunț: Începând cu versiunea 5.5.0,
    Jaspersoft Studio va fi oficial
    client de proiectare pentru JasperReports. raportez
    voi...
    Descărcați iReport-Designer pentru JasperReports
  • 5
    PostInstallerF
    PostInstallerF
    PostInstallerF va instala toate
    software pe care Fedora Linux și altele
    nu include implicit, după
    rulează Fedora pentru prima dată. Este
    usor pentru ...
    Descărcați PostInstallerF
  • 6
    strace
    strace
    Proiectul strace a fost mutat la
    https://strace.io. strace is a
    diagnostic, depanare și instruire
    userspace tracer pentru Linux. Este folosit
    a monitoriza un...
    Descărcați strace
  • Mai mult »

Comenzi Linux

Ad