Aceasta este comanda bsd-csh 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
csh — un shell (interpret de comandă) cu sintaxă asemănătoare C
REZUMAT
csh [-bcefimnstVvXx] [argument ...]
csh [-l]
DESCRIERE
csh este un interpret de limbaj de comandă care încorporează un mecanism istoric (vezi Istorie
substituții), facilități de control al locului de muncă (vezi Locuri de munca), numele fișierului interactiv și numele utilizatorului
finalizare (vezi Fișier nume completare), și o sintaxă asemănătoare C. Este folosit atât ca un
shell interactiv de conectare și un procesor de comenzi de script shell.
Argument listă prelucrare
Dacă primul argument (argumentul 0) al shell-ului este o liniuță ('-'), atunci acesta este un shell de conectare.
Un shell de conectare poate fi, de asemenea, specificat prin invocarea shell-ului cu -l steag ca singur
a susținut.
Restul argumentelor steagului sunt interpretate după cum urmează:
-b Acest flag forțează o „încărcare” din procesarea opțiunilor, provocând orice shell suplimentar
argumente să fie tratate ca argumente non-opțiune. Argumentele rămase nu vor fi
interpretate ca opțiuni shell. Acesta poate fi folosit pentru a transmite opțiuni unui script shell
fără confuzie sau posibile subterfugii. Shell nu va rula un set-user-ID
script fără această opțiune.
-c Comenzile sunt citite din următorul (singur) argument care trebuie să fie prezent. Orice
argumentele rămase sunt plasate în argv.
-e Shell-ul se iese dacă orice comandă invocată se termină anormal sau produce o valoare diferită de zero
starea de ieșire.
-f Shell-ul va porni mai repede, deoarece nu va căuta și nici nu va executa comenzi
din dosar .cshrc în directorul principal al invocatorului. Notă: dacă mediul
variabila HOME nu este setată, pornirea rapidă este implicită.
-i Shell-ul este interactiv și solicită intrarea sa de nivel superior, chiar dacă nu pare
a fi un terminal. Shell-urile sunt interactive fără această opțiune dacă intrările lor și
ieșirile sunt terminale.
-l Shell-ul este un shell de conectare (aplicabil numai dacă -l este singurul steag specificat).
-m Citeste .cshrc, indiferent de proprietar și grup. Această opțiune este periculoasă și ar trebui
să fie folosit numai de su(1).
-n Comenzile sunt analizate, dar nu sunt executate. Acest lucru ajută la verificarea sintactică a shell-ului
scenarii. Când este utilizat în mod interactiv, shell-ul poate fi terminat apăsând control-D
(caracter de sfârșit de fișier), deoarece ieşire nu va funcționa.
-s Intrarea comenzii este preluată din intrarea standard.
-t O singură linie de intrare este citită și executată. O bară oblică inversă („\”) poate fi folosită pentru a scăpa
noua linie la sfârșitul acestei linii și continuați pe o altă linie.
-V Cauzele prolix variabilă să fie setată chiar înainte .cshrc este executat.
-v Cauzele prolix variabilă care urmează să fie setată, cu efectul că intrarea comenzii este ecou
după înlocuirea istoricului.
-X Cauzele ecou variabilă să fie setată chiar înainte .cshrc este executat.
-x Cauzele ecou variabilă care urmează să fie setată, astfel încât comenzile să fie repetate imediat înainte
execuţie.
După procesarea argumentelor steag, dacă argumentele rămân, dar niciunul dintre ele -c, -i, -s, -t
au fost date opțiuni, primul argument este luat ca numele unui fișier de comenzi care urmează să fie
executat. Shell deschide acest fișier și își salvează numele pentru o posibilă reînlocuire prin
„$0”. Deoarece multe sisteme folosesc fie versiunea standard 6, fie versiunea 7 shell-uri al căror shell
Scripturile nu sunt compatibile cu acest shell, shell-ul va executa un astfel de shell „standard”.
dacă primul caracter al unui script nu este un semn hash ('#'); adică, dacă scriptul nu
incepe cu un comentariu. Argumentele rămase inițializează variabila argv.
Un exemplu de csh începe prin a executa comenzi din fișier /etc/csh.cshrc și, dacă aceasta este
un shell de conectare, /etc/csh.login. Apoi execută comenzi de la .cshrc în directorul principal
al invocatorului și, dacă acesta este un shell de conectare, fișierul .Autentificare in aceeasi locatie. Este
tipic pentru utilizatorii de pe CRT să pună comanda stty crt în lor .Autentificare dosar, și de asemenea
invoca tset(1) acolo.
În cazul normal, shell-ul va începe să citească comenzile din terminal, solicitând cu
'% .' Procesarea argumentelor și utilizarea shell-ului pentru a procesa fișiere care conțin comandă
scripturile vor fi descrise mai târziu.
Shell-ul efectuează în mod repetat următoarele acțiuni: o linie de intrare de comandă este citită și
împărțit în „cuvinte”. Această secvență de cuvinte este plasată în lista istoricului comenzilor și
analizat. În cele din urmă, fiecare comandă din linia curentă este executată.
Când un shell de autentificare se termină, acesta execută comenzi din fișiere .deconectare în casa utilizatorului
director și /etc/csh.logout.
Lexical structura
Shell împarte liniile de intrare în cuvinte în spații libere și file, cu următoarele excepții.
Caracterele „&”, „|”, „;”, „<”, „>”, „(” și „)” formează cuvinte separate. Dacă este dublat
„&&”, „||”, „<<” sau „>>”, aceste perechi formează cuvinte unice. Aceste metacaractere parser pot
să fie făcut parte din alte cuvinte, sau să aibă sensul lor special împiedicat, precedându-le cu
o bară oblică inversă („\”). O linie nouă precedată de un „\” este echivalent cu un spațiu liber.
Șirurile cuprinse în perechi de ghilimele potrivite, ''', ''' sau '"', formează părți ale unui cuvânt;
metacaracterele din aceste șiruri, inclusiv spațiile libere și tabele, nu formează cuvinte separate.
Aceste citate au o semantică care va fi descrisă mai târziu. În perechi de „'' sau '"'
caractere, o linie nouă precedată de un „\” oferă un caracter nou linie adevărat.
Când intrarea shell-ului nu este un terminal, caracterul „#” introduce un comentariu care
continuă până la sfârșitul liniei de intrare. Acest sens special este prevenit atunci când este precedat de
'\' și între ghilimele folosind ''', ''' și '"'.
Comenzi
O comandă simplă este o secvență de cuvinte, primul dintre care specifică comanda care urmează să fie
executat. O comandă simplă sau o secvență de comenzi simple separate prin „|” personaje
formează o conductă. Ieșirea fiecărei comenzi dintr-o conductă este conectată la intrarea
Următorul. Secvențele de conducte pot fi separate prin „;” și sunt apoi executate secvenţial.
O secvență de conducte poate fi executată fără a aștepta imediat încheierea acesteia
urmând-o cu un „&”.
Oricare dintre cele de mai sus poate fi plasată în „(' ')' pentru a forma o comandă simplă (care poate fi o componentă
a unei conducte, de exemplu). De asemenea, este posibilă separarea conductelor cu „||” sau „&&”
arătând, ca în limbajul C, că al doilea urmează să fie executat numai dacă primul eșuează sau
reușește, respectiv. (Vedea Expresii.)
Locuri de munca
Cochilia asociază a muncă cu fiecare conductă. Păstrează un tabel cu lucrările curente, tipărite de
il de locuri de muncă comanda și le atribuie numere întregi mici. Când se începe un job
asincron cu „&”, shell-ul imprimă o linie care arată astfel:
[1] 1234
arătând că jobul care a fost pornit asincron era jobul numărul 1 și avea unul (top-
nivel), al cărui ID de proces a fost 1234.
Dacă executați un loc de muncă și doriți să faceți altceva, puteți lovi ^Z (control-Z), care
trimite un semnal SIGSTOP la jobul curent. În mod normal, shell-ul va arăta că lucrarea
a fost „Oprit” și imprimați o altă solicitare. Apoi puteți manipula starea acesteia
job, punându-l în fundal cu bg comanda sau executați alte comenzi și
în cele din urmă, adu locul de muncă înapoi în prim plan cu fg comanda. A ^Z intră în vigoare
imediat și este ca o întrerupere în acea ieșire în așteptare și intrare necitită sunt eliminate
când este tastat. Există o altă cheie specială ^Y care nu generează un semnal SIGSTOP
până când un program încearcă citit(2) acesta. Această solicitare poate fi introdusă util înainte atunci când dvs
ați pregătit câteva comenzi pentru o lucrare pe care doriți să o opriți după ce le-a citit.
Un job rulat în fundal se va opri dacă încearcă să citească de pe terminal.
Lucrările de fundal sunt în mod normal permise să producă rezultate, dar aceasta poate fi dezactivată dând
comanda stty a opri. Dacă setați această opțiune tty, lucrările de fundal se vor opri când
ei încearcă să producă rezultate așa cum fac atunci când încearcă să citească intrarea.
Există mai multe moduri de a face referire la locuri de muncă din shell. Caracterul „%” introduce un job
Nume. Dacă doriți să vă referiți la locul de muncă numărul 1, îl puteți denumi „%1”. Doar denumirea unui loc de muncă
îl aduce în prim plan; prin urmare %1 este un sinonim pentru fg %1, aducând locul de muncă numărul 1 înapoi în
primul plan. La fel, spunând %1 & reia locul de muncă numărul 1 în fundal. Locurile de muncă pot
de asemenea, să fie denumite prin prefixe ale șirului introdus pentru a le începe, dacă aceste prefixe sunt
lipsit de ambiguitate; prin urmare %ex ar reporni în mod normal o suspendare ex(1) loc de muncă, dacă ar fi unul singur
job suspendat al cărui nume începea cu șirul „ex”. De asemenea, se poate spune %?şir,
care specifică un loc de muncă al cărui text conține şir, dacă există un singur astfel de job.
Shell menține o noțiune a locurilor de muncă actuale și anterioare. În ieșirea despre locuri de muncă,
jobul curent este marcat cu un „+”, iar jobul anterior cu un „-”. Abrevierea „%+”
se referă la jobul curent și „%-” se referă la jobul anterior. Pentru o analogie strânsă cu
sintaxa lui istorie mecanism (descris mai jos), „%%” este, de asemenea, un sinonim pentru curent
de locuri de muncă.
Mecanismul de control al postului cere ca stty(1) opțiune nou fi setat. Este un artefact
de la un nou implementarea driverului tty care permite generarea de caractere de întrerupere
de la tastatură pentru a spune joburilor să se oprească. Vedea stty(1) pentru detalii despre setarea opțiunilor din
șofer nou tty.
Stare de raportare
Shell învață imediat ori de câte ori un proces își schimbă starea. În mod normal, vă informează
ori de câte ori un loc de muncă devine blocat, astfel încât să nu mai fie posibil niciun progres, ci doar înainte
imprimă un prompt. Acest lucru se face astfel încât să nu vă perturbe munca. Dacă,
cu toate acestea, setați variabila shell notifica, shell-ul vă va notifica imediat despre modificări
de statut în joburile de fundal. Există, de asemenea, o comandă shell notifica care marchează un singur
proces astfel încât modificările sale de stare să fie raportate imediat. În mod implicit notifica mărci
procesul curent; spune pur și simplu notifica după începerea unei lucrări de fundal pentru a o marca.
Când încercați să părăsiți shell-ul în timp ce lucrările sunt oprite, veți fi avertizat că „Ați
locuri de muncă oprite”. Puteți folosi de locuri de muncă comandă să vadă ce sunt. Dacă încerci să ieși din nou
imediat, shell-ul nu vă va avertiza a doua oară, iar joburile suspendate vor fi
terminat.
Fișier nume completare
Când funcția de completare a numelui fișierului este activată prin setarea variabilei shell simțit (A se vedea
set), csh va completa interactiv numele de fișiere și numele de utilizator din prefixe unice când
sunt introduse de la terminal urmate de caracterul de escape (tasta de escape sau
Control-[). De exemplu, dacă directorul curent arată ca
DSC.OLD bin cmd lib xmpl.c
DSC.NEW chaosnet cmtest mail xmpl.o
bench class dev mbox xmpl.out
iar intrarea este
% vi ch
csh va completa prefixul „ch” la singurul nume de fișier care se potrivește „chaosnet”, schimbând
linia de intrare la
% vi chaosnet
Cu toate acestea, dat
% vi D
csh va extinde doar intrarea la
% vi DSC.
și va suna soneria terminalului pentru a indica faptul că extinderea este incompletă, deoarece acolo
sunt două nume de fișiere care se potrivesc cu prefixul „D”.
Dacă un nume de fișier parțial este urmat de caracterul de sfârșit de fișier (de obicei control-D), atunci,
în loc să completezi numele, csh va lista toate numele de fișiere care se potrivesc cu prefixul. Pentru
de exemplu, intrarea
% vi D
face ca toate fișierele care încep cu „D” să fie listate:
DSC.NOU DSC.VECHI
în timp ce linia de intrare rămâne neschimbată.
Același sistem de evadare și de sfârșit de fișier poate fi, de asemenea, utilizat pentru a extinde numele de utilizator parțiale, dacă
cuvântul de completat (sau listat) începe cu caracterul tilde ('~'). De exemplu,
dactilografiere
cd ~ro
poate produce expansiunea
cd ~rădăcină
Utilizarea soneriei terminalului pentru a semnala erori sau potriviri multiple poate fi inhibată de
setarea variabilei nu bip.
În mod normal, toate fișierele din directorul anume sunt candidate pentru completarea numelui. Fișiere
cu anumite sufixe pot fi excluse din considerare prin setarea variabilei fignora la
lista de sufixe de ignorat. Astfel, dacă fignora este setat de comandă
% set fignore = (.o .out)
apoi tastând
% vi x
ar avea ca rezultat completarea la
% vi xmpl.c
ignorând fișierele „xmpl.o” și „xmpl.out”. Cu toate acestea, dacă singura finalizare posibilă
necesită a nu ignora aceste sufixe, atunci ele nu sunt ignorate. În plus, fignora face
nu afectează lista de nume de fișiere prin control-D. Toate fișierele sunt listate, indiferent de acestea
sufixe.
substitutii
Descriem acum diferitele transformări pe care shell-ul le efectuează asupra intrării în ordinea în care
pe care acestea apar.
Istorie substituții
Substituțiile istorice plasează cuvintele din introducerea comenzii anterioare ca părți ale comenzilor noi,
facilitând repetarea comenzilor, repetarea argumentelor unei comenzi anterioare în curent
comandă sau remediați greșelile de ortografie din comanda anterioară cu o tastare mică și un nivel ridicat
grad de încredere. Substituțiile istorice încep cu caracterul „!” și poate începe
oriunde în fluxul de intrare (cu condiția ca acestea să facă nu cuib). Acest '!' poate
precedat de un „\” pentru a preveni semnificația sa specială; pentru comoditate, un „!” caracterul este trecut
neschimbat atunci când este urmat de un gol, tab, linie nouă, „=” sau „(”. (Înlocuiri istorice
apar și când o linie de intrare începe cu „^”. Această abreviere specială va fi descrisă
mai târziu.) Orice linie de intrare care conține înlocuirea istoricului este redată înainte pe terminal
se execută așa cum ar fi fost tastat fără înlocuirea istoricului.
Comenzile introduse de la terminal care constau din unul sau mai multe cuvinte sunt salvate în istoric
listă. Substituțiile istorice reintroduc secvențe de cuvinte din aceste comenzi salvate
în fluxul de intrare. Mărimea listei de istorie este controlată de istorie variabil;
comanda anterioară este întotdeauna reținută, indiferent de valoarea variabilei istoric.
Comenzile sunt numerotate succesiv de la 1.
Pentru certitudine, luați în considerare următorul rezultat din istorie comanda:
09 scrie michael
10 ex scrie.c
11 cat oldwrite.c
12 dif *scrie.c
Comenzile sunt afișate cu numerele lor de eveniment. De obicei, nu este necesar să folosiți eveniment
numere, dar numărul evenimentului curent poate fi făcut parte din prompt prin plasarea unui „!” în
șir prompt.
Cu evenimentul curent 13 ne putem referi la evenimentele anterioare prin numărul evenimentului „!11”, relativ
ca în „!-2” (referitor la același eveniment), printr-un prefix al unui cuvânt de comandă ca în „!d” pentru
evenimentul 12 sau „!wri” pentru evenimentul 9, sau printr-un șir conținut într-un cuvânt din comandă ca în
'!?mic?' referindu-se tot la evenimentul 9. Aceste forme, fără alte modificări, pur și simplu se reintroduc
cuvintele evenimentelor specificate, fiecare separate printr-un singur spațiu liber. Ca caz special,
'!!' se referă la comanda anterioară; prin urmare '!!' singur este o refaceți.
Pentru a selecta cuvinte dintr-un eveniment, putem urmări specificația evenimentului printr-un „:” și a
desemnator pentru cuvintele dorite. Cuvintele unei linii de intrare sunt numerotate de la 0, primul
(de obicei comandă) cuvânt fiind 0, al doilea cuvânt (primul argument) fiind 1 etc. De bază
indicatorii de cuvinte sunt:
0 primul (comandă) cuvânt
n nal-lea argument
^ primul argument; adică „1”
$ ultimul argument
% cuvânt potrivit de (imediat precedent) ?s? căutare
X y gama de cuvinte
-y abreviere „0-y”
* prescurtează „^-$”, sau nimic dacă doar 1 cuvânt în eveniment
x* abreviere „x-$”
x- ca „x*”, dar omițând cuvântul „$”
„:” care separă specificația evenimentului de cuvântul desemnator poate fi omis dacă
Selectorul de argumente începe cu „^”, „$”, „*”, „-” sau „%”. După cuvântul opțional
designator, se poate plasa o secvență de modificatori, fiecare precedat de un „:”. Următoarele
modificatorii sunt definiți:
h Eliminați o componentă de nume de cale finală, lăsând capul.
r Eliminați o componentă finală „.xxx”, lăsând numele rădăcinii.
e Eliminați toate părțile cu excepția extensiei „.xxx”.
s/l/r/ Substitui l pentru r.
t Îndepărtați toate componentele principale ale numelui de cale, lăsând coada.
& Repetați înlocuirea anterioară.
g Aplicați modificarea o dată pe fiecare cuvânt, prefixând cele de mai sus; de exemplu, „g&”.
a Aplicați modificarea de cât mai multe ori posibil pe un singur cuvânt, prefixând
de mai sus. Poate fi folosit împreună cu „g” pentru a aplica o înlocuire la nivel global.
p Tipăriți noua linie de comandă, dar nu o executați.
q Citați cuvintele substituite, prevenind alte substituții.
x Ca „q”, dar despărțiți în cuvinte la spații libere, file și linii noi.
Dacă nu este precedată de un „g”, modificarea se aplică numai primului cuvânt modificabil. Cu
substituții, este o eroare ca niciun cuvânt să nu fie aplicabil.
Partea stângă a substituțiilor nu sunt expresii regulate în sensul editorilor,
ci în schimb șiruri. Orice caracter poate fi folosit ca delimitator în loc de „/”; A '\'
citează delimitatorul în l si r siruri de caractere. Caracterul „&” din partea dreaptă
este înlocuit cu textul din stânga. Un „\” indică și „&”. UN NUL l ('//') folosește
șir anterior fie din an l sau dintr-un șir de scanare contextuală s în '!?s\?'. The
delimitatorul final în înlocuire poate fi omis dacă urmează imediat o nouă linie ca
poate că următorul '?' într-o scanare contextuală.
O referință istorică poate fi dată fără o specificare a evenimentului; de exemplu, '!$'. Aici
referința este la comanda anterioară, cu excepția cazului în care a avut loc o referință anterioară a istoricului pe
aceeași linie, caz în care această formă repetă referința anterioară. Astfel „!?foo?^ !$” dă
primul și ultimul argument din comanda care se potrivesc cu „?foo?”.
O abreviere specială a unei referințe istorice apare atunci când primul caracter neblank al
o linie de intrare este un „^”. Acest lucru este echivalent cu „!:s^” oferind o prescurtare convenabilă pentru
substituiri pe textul liniei precedente. Prin urmare ^lb^lib repară ortografia „lib” în
comanda anterioară. În cele din urmă, o înlocuire a istoricului poate fi înconjurată cu „{” și „}” dacă
necesar să-l izolăm de personajele care urmează. Astfel, după ls -ld ~paul am putea
do !{la de a face ls -ld ~paula, În timp ce !la ar căuta o comandă care începe cu „la”.
Cotațiile cu ´ si "
Cotația șirurilor de caractere prin „'' și '"' poate fi folosită pentru a preveni toate sau unele dintre cele rămase
substituiri. Șirurile cuprinse în „” sunt împiedicate de orice interpretare ulterioară.
Șirurile incluse în „”” pot fi extinse așa cum este descris mai jos.
În ambele cazuri, textul rezultat devine (în totalitate sau parțial) un singur cuvânt; doar într-o specială
caz (vezi Comandă Înlocuire mai jos) un șir între ghilimele „”” produce părți din mai mult de unul
cuvânt; ''' șirurile ghilimele nu funcționează niciodată.
Alias substituție
Shell-ul menține o listă de aliasuri care pot fi stabilite, afișate și modificate de către
alias si Unalias comenzi. După ce o linie de comandă este scanată, aceasta este analizată în distinct
comenzi și primul cuvânt al fiecărei comenzi, de la stânga la dreapta, este verificat pentru a vedea dacă are un
alias. Dacă se întâmplă, atunci textul care este aliasul pentru acea comandă este recitit cu
mecanism istoric disponibil ca și cum acea comandă ar fi fost linia anterioară de intrare. The
cuvintele rezultate înlocuiesc comanda și lista de argumente. Dacă nu se face referire la
listă istorică, apoi lista de argumente rămâne neschimbată.
Astfel, dacă aliasul pentru „ls” este „ls -l”, comanda ls / usr s-ar mapa la ls -l / usr,
lista de argumente aici fiind netulburată. În mod similar, dacă aliasul pentru „căutare” era „grep !^
/ Etc / passwd" atunci căutare proiect de lege s-ar mapa la grep proiect de lege / Etc / passwd.
Dacă se găsește un alias, se realizează transformarea cuvântului textului introdus și
procesul de aliasing începe din nou pe linia de intrare reformată. Looping-ul este prevenit dacă primul
cuvântul noului text este același cu cel vechi, semnalându-l pentru a preveni aliasarea ulterioară.
Alte bucle sunt detectate și provoacă o eroare.
Rețineți că mecanismul permite alias-urilor să introducă metasintaxa parserului. Astfel, putem alias
imprima 'relatii cu publicul \!* | lpr' a face o comandă care prsunt argumentele sale pentru imprimanta de linie.
Variabil substituție
Shell-ul menține un set de variabile, fiecare având ca valoare o listă de zero sau mai multe
cuvinte. Unele dintre aceste variabile sunt setate de shell sau la care se face referire. De exemplu,
il argv variabila este o imagine a listei de argumente a shell-ului și cuvintele acestei variabile
valoare sunt menționate în moduri speciale.
Valorile variabilelor pot fi afișate și modificate utilizând set si dezactivat comenzi.
Dintre variabilele la care se referă shell, un număr este comutator; cochiliei nu-i pasă ce
valoarea lor este, numai dacă sunt setate sau nu. De exemplu, cel prolix variabila este a
comutare care face ca intrarea comenzii să fie ecou. Setarea acestei variabile rezultă din
il -v opțiunea de linie de comandă.
Alte operații tratează variabilele numeric. The @ comanda permite calcule numerice
să fie efectuat și rezultatul atribuit unei variabile. Valorile variabile sunt, totuși, întotdeauna
reprezentate ca (zero sau mai multe) șiruri. În scopul operațiilor numerice, valoarea nul
șir este considerat a fi zero, iar al doilea și cuvintele suplimentare ale valorilor cu mai multe cuvinte sunt
ignorat.
După ce linia de intrare este aliasată și analizată și înainte ca fiecare comandă să fie executată, variabilă
înlocuirea este efectuată, tastată cu caractere „$”. Această expansiune poate fi prevenită prin
precedând „$” cu un „\”, cu excepția între ghilimele duble („"'), unde este mereu apare, și
între ghilimele simple (`''), unde it nu apare. Șirurile citate de backticks (` `) sunt
interpretat mai târziu (vezi Comandă substituție de mai jos), deci înlocuirea „$” nu are loc acolo
până mai târziu, dacă este deloc. Un „$” este transmis neschimbat dacă este urmat de un gol, tab sau sfârșitul
linia.
Redirecționările de intrare/ieșire sunt recunoscute înainte de extinderea variabilelor și sunt variabile
extins separat. În caz contrar, numele comenzii și întreaga listă de argumente sunt extinse
împreună. Este astfel posibil ca primul cuvânt (de comandă) (până la acest punct) să genereze mai mult
decât un cuvânt, primul dintre care devine numele poruncii, iar restul devine
argumente.
Cu excepția cazului în care sunt incluse în „”” sau nu i se oferă modificatorul „:q”, rezultatele înlocuirii variabilei pot
eventual, comanda și numele fișierului vor fi înlocuite. În „"', o variabilă a cărei valoare constă
de mai multe cuvinte se extinde la (o porțiune din) un singur cuvânt, cu cuvintele variabilei
valoare separată prin spații libere. Când modificatorul „:q” este aplicat unei substituții, variabila
se va extinde la mai multe cuvinte, fiecare cuvânt separat de un spațiu liber și citat pentru a preveni
ulterior comanda sau înlocuirea numelui de fișier.
Următoarele metasecvențe sunt furnizate pentru introducerea valorilor variabile în shell
intrare. Cu excepția celor menționate, este o eroare să faceți referire la o variabilă care nu este setată.
$nume
${name}
Sunt înlocuite cu cuvintele valorii variabilei nume, fiecare separată de a
gol. Bretele izolează nume din următoarele personaje care altfel ar fi
o parte din ea. Variabilele Shell au nume formate din până la 20 de litere și
cifre care încep cu o literă. Caracterul de subliniere este considerat a
scrisoare. Dacă nume nu este o variabilă shell, dar este setată în mediu, atunci
acea valoare este returnată (dar modificatorii „:” și celelalte forme prezentate mai jos sunt
nu este disponibil aici).
$name[selector]
${name[selector]}
Poate fi folosit pentru a selecta doar câteva dintre cuvinte din valoarea lui nume.
selectorul este supus înlocuirii „$” și poate consta dintr-un singur număr
sau două numere separate prin „-”. Primul cuvânt al valorii unei variabile este
numerotate cu „1”. Dacă primul număr al unui interval este omis, acesta este implicit „1”.
Dacă ultimul număr al unui interval este omis, acesta este implicit „$#name”. The
selectorul „*” selectează toate cuvintele. Nu este o eroare ca un interval să fie gol dacă
al doilea argument este omis sau în interval.
$#nume
${#name}
Oferă numărul de cuvinte din variabilă. Acest lucru este util pentru utilizare ulterioară într-un
„$argv[selector]”.
$0 Înlocuiește numele fișierului din care este citită intrarea comenzii. Un
apare eroarea dacă numele nu este cunoscut.
număr $
${number}
Echivalent cu „$argv[număr]”.
$* Echivalent cu „$argv[*]”.
Modificatorii „:e”, „:h”, „:t”, „:r”, „:q” și „:x” pot fi aplicați substituțiilor
mai sus, precum „:gh”, „:gt” și „:gr”. Dacă în formularul de comandă apar acolade „{' „}”, atunci
modificatorii trebuie să apară între acolade. Implementarea actuală permite doar un singur „:”
modificator la fiecare extindere „$”.
Următoarele înlocuiri nu pot fi modificate cu modificatorii „:”.
$?nume
${?name}
Înlocuiește șirul „1” dacă numele este setat, „0” dacă nu este.
$?0 Înlocuiește „1” dacă numele fișierului de intrare curent este cunoscut, „0” dacă nu este.
$$ Înlocuiește numărul de proces (zecimal) al shell-ului (părinte). Do NU utilizare
acest mecanism pentru generarea numelor de fișiere temporare; vedea mktemp(1) în schimb.
$! Înlocuiți numărul de proces (zecimal) al ultimului proces de fundal început
prin această carapace.
$< Înlocuiește o linie din intrarea standard, fără alte interpretări.
Poate fi folosit pentru a citi de la tastatură într-un script shell.
Comandă si nume de fișier substituție
Restul de substituții, de comandă și de nume de fișier, sunt aplicate selectiv
argumentele comenzilor încorporate. Prin selectiv, înțelegem că porțiuni de expresii
care nu sunt evaluate nu sunt supuse acestor expansiuni. Pentru comenzi care nu sunt
intern în shell, numele comenzii este înlocuit separat de lista de argumente.
Acest lucru se întâmplă foarte târziu, după ce se efectuează redirecționarea intrare-ieșire și într-un copil al
înveliș principal.
Comandă substituție
Înlocuirea comenzii este afișată printr-o comandă inclusă în „`”. Ieșirea dintr-o astfel de comandă
este în mod normal împărțit în cuvinte separate la spații libere, tab-uri și linii noi, cu cuvintele nule fiind
aruncat; acest text înlocuiește apoi șirul original. Numai între ghilimele (`"').
liniile noi forțează cuvintele noi; se păstrează spațiile libere și filele.
În orice caz, linia nouă finală unică nu forțează un cuvânt nou. Rețineți că așa este
este posibil ca o substituție de comandă să producă doar o parte dintr-un cuvânt, chiar dacă comanda
scoate o linie completă.
Filename substituție
Dacă un cuvânt conține oricare dintre caracterele „*”, „?”, „[” sau „{”, sau începe cu caracterul
„~”, atunci acel cuvânt este un candidat pentru înlocuirea numelui de fișier, cunoscut și sub denumirea de „globbing”.
Acest cuvânt este apoi considerat un model și înlocuit cu o listă sortată alfabetic de
nume de fișiere care se potrivesc cu modelul. Într-o listă de cuvinte care specifică înlocuirea numelui de fișier
este o eroare pentru că niciun model nu se potrivește cu un nume de fișier existent, dar nu este necesar pentru fiecare
model care să se potrivească. Doar metacaracterele „*”, „?” și „[” implică potrivirea modelului, the
caracterele „~” și „{” fiind mai asemănătoare cu abrevierile.
În numele de fișiere care se potrivesc, caracterul '.' la începutul unui nume de fișier sau imediat
după un „/”, precum și caracterul „/” trebuie să se potrivească în mod explicit. Caracterul '*'
se potrivește cu orice șir de caractere, inclusiv șirul nul. Caracterul '?' se potrivește cu oricare
un singur personaj.
Secvența „[...]” se potrivește cu oricare dintre caracterele incluse. În „[...]”, o pereche de
caracterele separate prin „-” se potrivesc cu orice caracter lexical dintre cele două (inclusiv).
În „[...]”, numele lui a caracter clasă închis în „[:” și „:]” reprezintă listă
dintre toate personajele aparținând acelei clase. Clase de caractere acceptate:
alnum cntrl spatiu inferior
imprimare cu cifre alfa de sus
grafic gol punct xdigit
Aceste caractere potrivesc folosind macrocomenzile specificate în ctype(3). Este posibil ca o clasă de caractere să nu fie
utilizat ca punct final al unui interval.
Caracterul „~” de la începutul unui nume de fișier se referă la directoarele de acasă. Permanent
singur, adică „~”, se extinde în directorul principal al invocatorului, așa cum se reflectă în valoarea lui
variabila Acasă. Când este urmat de un nume format din litere, cifre și „-”
caractere, shell-ul caută un utilizator cu acel nume și îi înlocuiește acasă
director; astfel „~ken” se poate extinde la „/usr/ken” și „~ken/chmach” la „/usr/ken/chmach”.
Dacă caracterul „~” este urmat de un alt caracter decât o literă sau „/”, sau nu
apar la începutul unui cuvânt, acesta este lăsat netulburat.
Metanotația „a{b,c,d}e” este o prescurtare pentru „abe ace ade”. Ordinea de la stânga la dreapta este
păstrate, rezultatele meciurilor fiind sortate separat la un nivel scăzut pentru a păstra acest lucru
Ordin. Acest construct poate fi imbricat. Astfel, „~source/s1/{oldls,ls}.c” se extinde la
„/usr/source/s1/oldls.c /usr/source/s1/ls.c” fără șansa de eroare dacă directorul principal
pentru „sursă” este „/usr/source”. În mod similar, „../{memo,*box}” se poate extinde la „../memo ../box
../box”. (Rețineți că „memo” nu a fost sortat cu rezultatele meciului la „*box”.) Ca a
cazurile speciale „{”, „}” și „{}” sunt transmise nederanjate.
Intrare ieșire
Intrarea standard și ieșirea standard ale unei comenzi pot fi redirecționate cu următoarele
sintaxă:
< nume Deschide fișierul nume (care este prima variabilă, comandă și nume de fișier extins) ca
intrarea standard.
<< cuvânt
Citiți intrarea shell până la o linie identică cu cuvânt. cuvânt nu este
supuse înlocuirii variabilelor, comenzilor sau numelor de fișier și fiecare linie de intrare
este comparat cu cuvânt înainte ca orice înlocuire să se facă pe linia de intrare.
Cu excepția cazului în care apare ghilimele „\”, „””, „” sau „`”. cuvânt, variabilă și comandă
înlocuirea este efectuată pe liniile intermediare, permițând „\” să citeze „$”,
„\” și „`”. Comenzile care sunt înlocuite au toate spațiile goale, file și
liniile noi păstrate, cu excepția liniei noi finale care este eliminată. The
textul rezultat este plasat într-un fișier temporar anonim care este dat către
comanda ca intrare standard.
> nume
>! Nume
>& nume
>&! Nume
Fișierul nume este folosit ca ieșire standard. Dacă fișierul nu există atunci
este creat; dacă fișierul există, acesta este trunchiat; conținutul său anterior este
pierdut.
Dacă variabila noclobber este setat, atunci fișierul nu trebuie să existe sau să fie a
fișier cu caractere speciale (de exemplu, un terminal sau / Dev / null) sau rezultă o eroare.
Acest lucru ajută la prevenirea distrugerii accidentale a fișierelor. Aici '!' formele pot
fi folosit pentru a suprima această verificare.
Formularele care implică „&” direcționează rezultatul erorii standard în cel specificat
fişier, precum şi ieşirea standard. nume este extins în același mod ca „<”
numele fișierelor de intrare sunt.
>> nume
>>& nume
>>! Nume
>>&! Nume
Utilizează fișierul nume ca ieșire standard; ca „>”, dar plasează ieșirea la sfârșit
a dosarului. Dacă variabila noclobber este setat, atunci este o eroare pentru
fișierul să nu existe decât dacă unul dintre '!' se dau forme. În rest similar cu
'>'.
O comandă primește mediul în care a fost invocat shell-ul așa cum a fost modificat de intrare-
parametrii de ieșire și prezența comenzii într-o conductă. Astfel, spre deosebire de unele anterioare
shell-uri, comenzile rulate dintr-un fișier de comenzi shell nu au acces la textul
comenzi implicite; în schimb, primesc intrarea standard originală a shell-ului. The
Mecanismul „<<” ar trebui utilizat pentru a prezenta datele inline. Acest lucru permite scripturilor de comandă shell să
funcționează ca componente ale conductelor și permite shell-ului să blocheze citirea intrării sale. Rețineți că
intrarea standard implicită pentru o comandă executată detașată este nu modificat pentru a fi fișierul gol
/ Dev / null; în schimb, intrarea standard rămâne ca intrarea standard originală a shell-ului.
Dacă acesta este un terminal și dacă procesul încearcă să citească de pe terminal, atunci
procesul se va bloca și utilizatorul va fi notificat (vezi Locuri de munca de mai sus).
Ieșirea de eroare standard poate fi direcționată printr-o conductă cu ieșirea standard. Pur şi simplu
utilizați forma „|&” în loc de doar „|”.
Expresii
Câteva dintre comenzile încorporate (care vor fi descrise mai târziu) au expresii, în care
operatorii sunt similari cu cei din C, cu aceeasi prioritate, dar cu opus
grupare: de la dreapta la stanga. Aceste expresii apar în @, ieşire, if și în timp ce comenzi.
Următorii operatori sunt disponibili:
|| && | ↑ & == != =~ !~ <= >= < > << >> + - * / % ! ~ ( )
Aici precedența crește la dreapta, „==” „!=” „=~” și „!~”, „<=” „>=” „<” și „>”,
'<<' și '>>', '+' și '-', '*' '/' și '%' fiind, în grupuri, la același nivel. „==”
Operatorii '!=' '=~' și '!~' își compară argumentele ca șiruri de caractere; toate celelalte operează
numerele. Operatorii „=~” și „!~” sunt ca „!=” și „==”, cu excepția faptului că partea dreaptă
este model (conținând, de exemplu, *, ? și cazuri de „[...]”) față de care stânga-
operandul de mână este potrivit. Acest lucru reduce nevoia de utilizare a comuta declarație în coajă
scripturi atunci când tot ceea ce este nevoie cu adevărat este potrivirea modelelor.
Șirurile care încep cu „0” sunt considerate numere octale. Argumentele nule sau lipsă sunt
considerat „0”. Rezultatele tuturor expresiilor sunt șiruri de caractere, care reprezintă zecimale
numerele. Este important de reținut că nu pot apărea două componente ale unei expresii în
același cuvânt; cu excepția cazului în care sunt adiacente componentelor expresiilor care sunt sintactic
semnificative pentru parser ('&', '|', '<', '>', '(' şi ')'), ar trebui să fie înconjurate de
spații.
De asemenea, disponibile în expresii ca operanzi primitivi sunt execuțiile comenzilor incluse în „{”
și „}” și trimiteți cererile din formular -l nume Unde l este unul din:
r acces de citire
w acces de scriere
x executa accesul
e existența
o proprietate
z dimensiune zero
f dosar simplu
directorul d
Numele specificat este comanda și numele fișierului extins și apoi testat pentru a vedea dacă are
relația specificată cu utilizatorul real. Dacă fișierul nu există sau este inaccesibil, atunci
toate întrebările returnează false, adică „0”. Execuțiile comenzilor reușesc, returnând true, adică,
„1”, dacă comanda iese cu starea 0, altfel eșuează, returnând false, adică „0”.
Dacă sunt necesare informații de stare mai detaliate, atunci comanda ar trebui să fie executată în exterior
o expresie și variabila Starea examinat.
Mod de control debit
Shell conține mai multe comenzi care pot fi utilizate pentru a regla fluxul de control în interior
fișiere de comandă (scripturi shell) și (în moduri limitate, dar utile) de la intrarea terminalului. Aceste
toate comenzile funcționează forțând shell-ul să recitească sau să ignore intrarea sa și, din cauza
implementare, restricționați plasarea unor comenzi.
pentru fiecare, comuta și în timp ce declarațiile, precum și cele dacă-atunci-altfel forma de if
declarația necesită ca cuvintele cheie majore să apară într-o singură comandă simplă pe o linie de intrare
așa cum se arată mai jos.
Dacă intrarea shell-ului nu poate fi căutată, shell-ul tamponează intrarea ori de câte ori se află o buclă
citește și efectuează căutări în acest buffer intern pentru a realiza recitirea implicată de
buclă. (În măsura în care acest lucru o permite, backward goto va avea succes pe non-seekable
intrări.)
Built-in comenzi
Comenzile încorporate sunt executate în shell. Dacă apare o comandă încorporată ca oricare
componentă a unei conducte, cu excepția ultimei, apoi este executată într-un sub-shell.
alias
alias nume
alias nume listă de cuvinte
Prima formă imprimă toate aliasurile. A doua formă tipărește aliasul pentru nume.
Forma finală atribuie cele specificate listă de cuvinte ca alias de nume; listă de cuvinte
este înlocuit comanda și numele fișierului. nume nu are voie să fie „alias” sau
„unalias”.
aloc Afișează cantitatea de memorie dinamică dobândită, împărțită în utilizată și liberă
memorie. Cu un argument arată numărul de blocuri libere și utilizate în fiecare
categorie de mărime. Categoriile încep de la mărimea 8 și se dublează la fiecare pas. Acest
Ieșirea comenzii poate varia în funcție de tipurile de sistem, deoarece alte sisteme decât
VAX poate folosi un alocator de memorie diferit.
bg
bg %muncă ...
Pune joburile curente sau specificate în fundal, continuându-le dacă
au fost opriți.
rupe Determină reluarea execuției după capăt a celei mai apropiate împrejmuiri pentru fiecare or
în timp ce. Comenzile rămase pe linia curentă sunt executate. Multi-nivel
pauzele sunt astfel posibile scriindu-le pe toate pe o singură linie.
breaksw
Provoacă o pauză de la a comuta, reluând după endsw.
caz etichetă:
O etichetă în a comuta declarație așa cum este discutată mai jos.
cd
cd nume
chdir
chdir nume
Schimbați directorul de lucru al shell-ului în director nume. Dacă niciun argument nu este
dat apoi schimbați în directorul principal al utilizatorului. Dacă nume nu se gaseste ca
un subdirector al directorului curent (și nu începe cu „/”, „./” sau
'../'), apoi fiecare componentă a variabilei cdpath este verificat pentru a vedea dacă are
un subdirector nume. În cele din urmă, dacă toate celelalte nu reușesc, dar nume este o variabilă shell
a cărui valoare începe cu „/”, atunci se încearcă să se vadă dacă este un director.
continua
Continuați execuția celei mai apropiate împrejmuiri în timp ce or pentru fiecare. Restul
sunt executate comenzile de pe linia curentă.
lipsă:
Etichetează cazul implicit în a comuta afirmație. Valoarea implicită ar trebui să vină după
toate caz etichete.
dirs Imprimă stiva de directoare; partea de sus a stivei este în stânga, primul
directorul din stivă fiind directorul curent.
ecou listă de cuvinte
ecou -n listă de cuvinte
Cuvintele specificate sunt scrise în ieșirea standard a shell-ului, separate prin
spații și se termină cu o linie nouă, cu excepția cazului în care -n este specificată opțiunea.
altfel
capăt
endif
endsw Vezi descrierea pentru fiecare, if, comuta și în timp ce declarațiile de mai jos.
eval arg ...
(Ca în sh(1).) Argumentele sunt citite ca intrare în shell și rezultatul
comandă(e) executată(e) în contextul shell-ului curent. Acesta este de obicei folosit
pentru a executa comenzi generate ca rezultat al comenzii sau variabilei
substituție, deoarece analizarea are loc înaintea acestor substituții. Vedea tset(1)
pentru un exemplu de utilizare eval.
Exec comandă
Comanda specificată este executată în locul shell-ului curent.
ieşire
ieşire (expres)
Shell-ul iese fie cu valoarea lui Starea variabilă (prima formă) sau
cu valoarea specificată expres (a doua formă).
fg
fg %muncă ...
Aduce lucrările curente sau specificate în prim-plan, continuându-le dacă
au fost opriți.
pentru fiecare nume (listă de cuvinte)
...
capăt Variabila nume este setată succesiv fiecărui membru al listă de cuvinte si
succesiune de comenzi între această comandă și potrivire capăt sunt executate.
(Ambii pentru fiecare si capăt trebuie să apară singur pe rânduri separate.) The built-in
comandă continua poate fi folosit pentru a continua bucla prematur și încorporat
comandă rupe pentru a-l rezilia prematur. Când această comandă este citită din
terminal, bucla este citită o dată solicitând cu '?' înainte de orice declarații în
bucla sunt executate. Dacă faceți o greșeală introducând o buclă la terminal
îl poți șterge.
glob listă de cuvinte
Aprecieri ecou dar nu sunt recunoscute evadări „\” și cuvintele sunt delimitate de NUL
caractere din ieșire. Util pentru programele care doresc să folosească shell-ul pentru
nume de fișier extinde o listă de cuvinte.
goto cuvânt
Specificat cuvânt este numele fișierului și comanda extinsă pentru a produce un șir din
formularul „etichetă”. Shell-ul își derulează intrarea cât mai mult posibil și caută
pentru o linie de forma „etichetă:”, eventual precedată de spații libere sau file.
Execuția continuă după linia specificată.
hashstat
Tipăriți o linie de statistici care arată cât de eficient a fost tabelul hash intern
la localizarea comenzilor (și evitarea Exece). Un Exec se încearcă pentru fiecare
componentă a cale unde funcția hash indică o posibilă lovitură și în
fiecare componentă care nu începe cu un „/”.
istorie
istorie n
istorie -h n
istorie -r n
Afișează lista de evenimente istorice; dacă n este dat, numai n cele mai recente evenimente
sunt tipărite. The -h opțiunea face ca lista istorică să fie tipărită fără
numerele conducătoare. Acest format produce fișiere potrivite pentru aprovizionare folosind
-h opțiunea pentru sursă. -r opțiunea inversează ordinea tipăririi pentru a fi cea mai mare
mai întâi recent în loc de cel mai vechi mai întâi.
if (expres) comanda
Dacă expresia specificată se evaluează ca adevărată, atunci single comandă cu
argumentele este executată. Înlocuirea variabilă activată comandă se întâmplă devreme, la
în același timp se întâmplă și pentru restul if comanda. comandă trebuie să fie un simplu
comandă, nu o conductă, o listă de comenzi sau o listă de comenzi între paranteze.
Redirecționarea de intrare/ieșire are loc chiar dacă expres este fals, adică atunci când comanda este
nu executat (acesta este o eroare).
if (expres) apoi
...
altfel if (expr2) apoi
...
altfel
...
endif Dacă este specificat expres este adevărat apoi comenzile până la prima altfel sunt
executat; altfel daca expr2 este adevărat atunci comenzile până la a doua altfel
sunt executate etc. Orice număr de altfel-dacă perechile sunt posibile; unul singur endif
Este nevoie. altfel parte este de asemenea opțională. (Cuvintele altfel si endif
trebuie să apară la începutul liniilor de intrare; cel if trebuie să apară singur pe ea
linia de intrare sau după an altfel.)
de locuri de muncă
de locuri de muncă -l
Listează locurile de muncă active; cel -l opțiunea listează ID-urile de proces în plus față de
informatii normale.
ucide %muncă
ucide [-s nume_semnal] pid
ucide -sig pid ...
ucide -l [exit_status]
Trimite fie semnalul SIGTERM (terminare), fie semnalul specificat către
locuri de muncă sau procese specificate. Semnalele sunt date fie prin număr, fie prin nume
(după cum este indicat în ⟨semnal.h⟩, lipsit de prefixul „SIG”). Numele semnalelor sunt
enumerate de „kill -l”; daca un stare_ieșire este specificat, doar corespunzătoare
numele semnalului va fi scris. Nu există implicit; doar a spune „ucide” nu
trimite un semnal la locul de muncă curent. Dacă semnalul trimis este SIGTERM
(încheiere) sau SIGHUP (închidere), atunci jobul sau procesul va primi un SIGCONT
(continuare) semnal de asemenea.
limita
limita resursă
limita resursă utilizare maximă
limita -h
limita -h resursă
limita -h resursă utilizare maximă
Limitează consumul de către procesul curent și fiecare proces pe care îl creează
nu depășesc individual utilizare maximă pe cele specificate resursă. Daca nu
utilizare maximă este dat, apoi este tipărită limita curentă; daca nu resursă is
date, atunci toate limitările sunt date. Dacă -h steag este dat, greu
limitele sunt utilizate în locul limitelor curente. Limitele dure impun a
plafonul pe valorile limitelor de curent. Numai superutilizatorul poate ridica valoarea
limite stricte, dar un utilizator poate reduce sau ridica limitele actuale în limitele legale
Gama.
Resursele controlabile în prezent includ:
cputime numărul maxim de secunde CPU care trebuie utilizat de fiecare proces.
mărime fișier cel mai mare fișier unic (în octeți) care poate fi creat.
dimensiunea datelor creșterea maximă a regiunii de date+stive prin sbrk(2) dincolo
sfârşitul textului programului.
dimensiunea stivelor dimensiunea maximă a regiunii stivei extinse automat.
coredumpsize dimensiunea celui mai mare dump de bază (în octeți) care va fi
creat.
utilizarea memoriei dimensiunea maximă (în octeți) la care se stabilește rezidentul unui proces
dimensiunea (RSS) poate crește.
blocat cu memorie Dimensiunea maximă (în octeți) pe care un proces o poate bloca în memorie
folosind mlock(2) funcția.
maxproc Numărul maxim de procese simultane pentru acest ID de utilizator.
openfiles Numărul maxim de fișiere deschise simultan pentru acest ID de utilizator.
vmemoryuse dimensiunea maximă (în octeți) la care poate mări dimensiunea totală a unui proces
se dezvolta.
utilizare maximă poate fi dat ca un număr (în virgulă mobilă sau întreg) urmat
printr-un factor de scară. Pentru toate limitele, altele decât cputime scara implicită este „k”
sau „kilobytes” (1024 bytes); un factor de scară de „m” sau „megaocteți” poate fi, de asemenea
folosit. Pentru cputime scara implicită este „secunde”; un factor de scară „m” pentru
minute sau „h” pentru ore, sau un timp de forma „mm:ss” care oferă minute și
pot fi folosite și secunde.
Pentru amandoi resursă nume și factori de scară, prefixe clare ale numelor
este suficient.
Logare Terminați un shell de conectare, înlocuindu-l cu o instanță de /usr/bin/login.
Aceasta este o modalitate de deconectare, inclusă pentru compatibilitate cu sh(1).
Logout Închideți un shell de conectare. Mai ales util dacă ignoreeof este setat.
frumos
frumos +număr
frumos comandă
frumos +număr comandă
Prima formă setează prioritatea de programare pentru acest shell la 4. Al doilea
formularul stabilește prioritatea celui dat număr. Ultimele două forme rulează comanda
la prioritatea 4 și număr respectiv. Cu cât este mai mare numărul, cu atât mai puțin CPU
procesul va primi. Superutilizatorul poate specifica prioritatea negativă utilizând
„frumos -număr...”. comandă este întotdeauna executat într-un sub-shell și
restricții impuse comenzilor în mod simplu if se aplică declarații.
nu
nu comandă
Prima formă poate fi folosită în scripturile shell pentru a face ignorarea blocajelor
restul scenariului. A doua formă determină comanda specificată
fi condus cu hangup ignorate. Toate procesele detașate cu „&” sunt efective
nu´ed.
notifica
notifica %muncă ...
Determină ca shell-ul să notifice utilizatorul în mod asincron când starea
se schimbă locurile de muncă curente sau specificate; în mod normal, notificarea este prezentată înainte de a
prompt. Acest lucru este automat dacă variabila shell notifica este setat.
onintr
onintr -
onintr etichetă
Controlați acțiunea shell-ului asupra întreruperilor. Prima formă restaurează
acțiunea implicită a shell-ului asupra întreruperilor, care este de a termina scripturile shell
sau pentru a reveni la nivelul de intrare a comenzii terminalului. A doua formă onintr -
face ca toate întreruperile să fie ignorate. Forma finală determină coaja să
executa a goto etichetă când se primește o întrerupere sau un proces copil
se încheie deoarece a fost întrerupt.
În orice caz, dacă shell-ul rulează detașat și există întreruperi
ignorate, toate formele de onintr nu au niciun sens și întreruperile continuă să existe
ignorat de shell și de toate comenzile invocate. In cele din urma, onintr afirmatiile sunt
ignorat în fișierele de pornire a sistemului unde întreruperile sunt dezactivate
(/etc/csh.cshrc, /etc/csh.login).
popd
popd +n
Afișează stiva de directoare, revenind la noul director superior. Cu un
argument „+n” elimină na-a intrare în stivă. Membrii din
stiva de directoare sunt numerotate de sus, începând cu 0.
pushd
pushd nume
pushd +n
Fara argumente, pushd schimbă primele două elemente ale directorului
grămadă. Având în vedere un nume argument, pushd modificări în noul director (ala cd) Şi
împinge vechiul director de lucru curent (ca în cwd) în stiva de directoare.
Cu un argument numeric, pushd rotește nAl-lea argument al directorului
stivuiți pentru a fi elementul de sus și se modifică. Membrii din
stiva de directoare sunt numerotate de sus, începând cu 0.
reface Determină tabelul hash intern al conținutului directoarelor din cale
variabilă care urmează să fie recalculată. Acest lucru este necesar dacă se adaugă comenzi noi
directoare în cale în timp ce sunteți autentificat. Acest lucru ar trebui să fie doar
necesar dacă adăugați comenzi într-unul dintre propriile directoare sau dacă este un sistem
programatorul modifică conținutul unui director de sistem.
repeta conta comandă
Specificat comandă, care este supus acelorași restricții ca și
comandă într-o singură linie if declarația de mai sus, este executată conta ori. I/O
redirecționările apar exact o dată, chiar dacă conta este 0.
set
set nume
set nume=cuvânt
set nume[index]=cuvânt
set nume=(lista de cuvinte)
Prima formă a comenzii arată valoarea tuturor variabilelor shell.
Variabilele care au ca valoare altceva decât un singur cuvânt se imprimă ca a
lista de cuvinte între paranteze. A doua formă se stabilește nume la șirul nul. The
seturi de a treia formă nume la single cuvânt. A patra formă stabilește index'th
componentă a nume la cuvânt; această componentă trebuie să existe deja. Forma finală
seturi nume la lista de cuvinte din listă de cuvinte. Valoarea este întotdeauna comandă și
nume de fișier extins.
Aceste argumente pot fi repetate pentru a seta mai multe valori într-un singur set
comanda. Rețineți totuși că expansiunea variabilă are loc pentru toate argumentele
înainte de a avea loc orice setare.
settenv
settenv nume
settenv nume valoare
Primul formular listează toate variabilele de mediu curente. Este echivalent cu
printenv(1). Ultima formă stabilește valoarea variabilei de mediu nume pentru a fi
valoare, un singur șir. A doua formă se stabilește nume la un șir gol. The
cele mai frecvent utilizate variabile de mediu USER, TERM și PATH sunt
importat automat și exportat din csh variabile utilizator, durată și
cale; nu este nevoie de utilizare settenv pentru acestea.
schimbare
schimbare variabil
Membrii argv sunt deplasate la stânga, aruncând argv[1]. Este un
eroare pentru argv să nu fie setat sau să aibă mai puțin de un cuvânt ca valoare. The
a doua formă îndeplinește aceeași funcție pe variabila specificată.
sursă nume
sursă -h nume
Shell-ul citește comenzile de la nume. sursă comenzile pot fi imbricate; dacă ei
sunt imbricate prea adânc, shell-ul poate rămâne fără descriptori de fișiere. O eroare în
a sursă la orice nivel se termină toate imbricate sursă comenzi. În mod normal de intrare
în timpul sursă comenzile nu sunt plasate în lista istoricului; cel -h cauzele opțiunii
comenzile să fie plasate pe lista istoricului fără a fi executate.
opri
opri %muncă ...
Oprește joburile curente sau specificate care se execută în fundal.
suspenda
Face ca ochiul să se oprească în loc, la fel ca și cum i-ar fi fost oprit
semnal cu ^Z. Acesta este cel mai adesea folosit pentru a opri obuzele începute de su(1).
comuta (şir)
caz str1:
...
breaksw
...
lipsă:
...
breaksw
endsw Fiecare etichetă de caz este asociată succesiv cu cea specificată şir, Care este
prima comandă și numele fișierului extinse. Metacaracterele fișierului '*', '?' și
„[...]” poate fi folosit în etichetele de caz, care sunt extinse variabil. Dacă niciunul
dintre etichete se potrivesc înainte de a fi găsită eticheta „implicit”, apoi execuția
începe după eticheta implicită. Fiecare etichetă de caz și eticheta implicită trebuie
apar la începutul unei linii. Comanda breaksw determină executarea la
continua dupa endsw. În caz contrar, controlul poate cădea prin etichetele carcasei și
eticheta implicită ca în C. Dacă nicio etichetă nu se potrivește și nu există nicio etichetă implicită,
execuția continuă după endsw.
timp
timp comandă
Fără niciun argument, un rezumat al timpului folosit de această cochilie și copiii săi este
tipărite. Dacă sunt date argumente, comanda simplă specificată este cronometrată și a
rezumatul timpului, așa cum este descris sub timp variabila este tipărită. Daca este necesar,
un shell suplimentar este creat pentru a imprima statistica de timp atunci când comanda
completează.
masca
masca valoare
Masca de creare a fișierului este afișată (prima formă) sau setată la valoarea specificată
(a doua formă). Masca este dată în octal. Valorile comune pentru mască sunt
002 oferind accesul total la grup și accesul de citire și executare altora sau
022 oferind accesul cu excepția accesului de scriere pentru utilizatorii din grup sau alții.
Unalias model
Toate aliasurile ale căror nume se potrivesc cu modelul specificat sunt eliminate. Astfel toate
aliasurile sunt eliminate de Unalias *. Nu este o eroare ca nimic să fie
Unaliased.
unash Utilizarea tabelului hash intern pentru a accelera locația programelor executate este
dezactivat.
nelimitat
nelimitat resursă
nelimitat -h
nelimitat -h resursă
Elimină limitarea asupra resursă. Daca nu resursă este specificat, apoi toate
resursă limitările sunt eliminate. Dacă -h este dat, hardul corespunzător
limitele sunt eliminate. Numai superutilizatorul poate face acest lucru.
dezactivat model
Toate variabilele ale căror nume se potrivesc cu modelul specificat sunt eliminate. Astfel toate
variabilele sunt eliminate de dezactivat *; asta are o latură vizibil dezagreabilă-
efecte. Nu este o eroare ca nimic să fie dezactivat.
unsetenv model
Elimină toate variabilele ale căror nume se potrivesc cu modelul specificat din
mediu inconjurator. Vezi și settenv comanda de mai sus și printenv(1).
aștepta Așteptați toate lucrările de fundal. Dacă shell-ul este interactiv, atunci o întrerupere
poate perturba așteptarea. După întrerupere, shell-ul imprimă numele și lucrările
numărul tuturor locurilor de muncă cunoscute a fi remarcabile.
care comandă
Afișează comanda rezolvată care va fi executată de shell.
în timp ce (expres)
...
capăt În timp ce expresia specificată este evaluată ca fiind diferită de zero, comenzile dintre
în timp ce si potrivirea capăt sunt evaluate. rupe si continua poate fi obișnuit cu
terminați sau continuați bucla prematur. (Cel în timp ce si capăt trebuie să apară
singur pe liniile lor de intrare.) Prompting apare aici prima dată prin intermediul
bucla ca pentru pentru fiecare instrucțiune dacă intrarea este un terminal.
%muncă Aduce jobul specificat în prim plan.
%muncă & Continuă lucrarea specificată în fundal.
@
@ nume= expr
@ nume[index]= expr
Prima formă imprimă valorile tuturor variabilelor shell. A doua formă
setează cele specificate nume la valoarea de expres. Dacă expresia conține „<”,
'>', '&' sau '|' atunci trebuie plasată măcar această parte a expresiei
în '(' ')'. A treia formă atribuie valoarea lui expres la index'th
argument de nume. Amândoi nume şi sa index„a-a componentă trebuie să existe deja.
Operatorii '*=', '+=' etc. sunt disponibili ca în C. Spaţiul de separare
numele de la operatorul de atribuire este opțional. Spațiile sunt, totuși,
obligatoriu în separarea componentelor de expres, care altfel ar fi singur
cuvinte.
Operatorii postfix speciali „++” și „--” cresc și decrementează nume
respectiv; adică „@ i++”.
Predefinit si mediu inconjurator variabile
Următoarele variabile au o semnificație specială pentru shell. Din acestea, argv, cwd, Acasă, cale,
prompt, coajă si Starea sunt întotdeauna stabilite de coajă. În afară de cwd si Starea, Acest
setarea are loc numai la inițializare; aceste variabile nu vor fi apoi modificate decât dacă sunt făcute
explicit de către utilizator.
Shell copiază variabila de mediu USER în variabilă utilizator, TERMEN în durată și
ACASĂ în Acasăși le copiază înapoi în mediu ori de câte ori shell-ul normal
variabilele sunt resetate. Variabila de mediu PATH este de asemenea gestionată; nu este necesar
să vă faceți griji cu privire la setarea sa în altă parte decât în fișier .cshrc ca inferior csh procesele vor
importa definiția de cale din mediu și reexportați-l dacă apoi îl schimbați.
argv Setați la argumentele shell-ului, din această variabilă este pozițional
parametrii sunt înlocuiți; adică „$1” este înlocuit cu „$argv[1]”, etc.
cdpath Oferă o listă de directoare alternative căutate pentru a găsi subdirectoare în chdir
comenzi.
cwd Calea completă a directorului curent.
ecou Setați când -x este dată opțiunea de linie de comandă. Determină fiecare comandă și ea
argumente care să fie repetate chiar înainte de a fi executat. Pentru comenzi neîncorporate toate
expansiunile apar înainte de ecou. Comenzile încorporate sunt ecou înainte de comandă și
înlocuirea numelui de fișier, deoarece aceste înlocuiri sunt apoi efectuate selectiv.
simțit Activați completarea numelui fișierului.
histchars Se poate da o valoare șir pentru a schimba caracterele folosite în istorie
substituţie. Primul caracter al valorii sale este folosit ca istoric
caracter de substituție, înlocuind caracterul implicit „!”. Al doilea
caracterul valorii sale înlocuiește caracterul „^” în înlocuiri rapide.
histfile Poate fi setat la calea în care istoricul va fi salvat/restaurat.
istorie Se poate da o valoare numerică pentru a controla dimensiunea listei istorice. Orice
comanda care a fost referită în atâtea evenimente nu va fi eliminată. De asemenea
valori mari ale istorie poate epuiza shell-ul din memorie. Ultimul executat
comanda este întotdeauna salvată în lista istorică.
Acasă Directorul principal al invocatorului, inițializat din mediu. The
extinderea numelui de fișier „~” se referă la această variabilă.
ignoreeof Dacă este setat, shell-ul ignoră sfârșitul fișierului de la dispozitivele de intrare care sunt terminale.
Acest lucru împiedică obuzele să fie ucise accidental de control-D.
Poștă Fișierele în care shell-ul verifică corespondența. Această verificare se face după fiecare
finalizarea comenzii care va avea ca rezultat un prompt, dacă un interval specificat are
scurs. Pe shell scrie „Ai e-mail nou”. dacă fișierul există cu acces
timp nu mai mare decât timpul de modificare.
Dacă primul cuvânt al valorii de Poștă este numeric, specifică un e-mail diferit
interval de verificare, în secunde, decât cel implicit, care este de 10 minute.
Dacă sunt specificate mai multe fișiere de e-mail, atunci shell-ul spune „New mail in nume" cand
există e-mail în dosar nume.
noclobber După cum este descris în secțiunea privind Intrare ieșire, sunt impuse restricții la ieșire
redirecționare pentru a se asigura că fișierele nu sunt distruse accidental și că „>>”
redirecționările se referă la fișierele existente.
noglob Dacă este setată, extinderea numelui fișierului este inhibată. Această inhibiție este cea mai utilă în coajă
scripturi care nu au de-a face cu nume de fișiere sau după o listă de nume de fișiere
au fost obținute și extinderile ulterioare nu sunt de dorit.
nonpotrivire Dacă este setată, nu este o eroare ca o extensie de nume de fișier să nu se potrivească cu niciuna existentă
dosare; în schimb modelul primitiv este returnat. Este încă o eroare pentru
modelul primitiv să fie malformat; adică, „echo [” încă dă o eroare.
notifica Dacă este setat, shell-ul notifică în mod asincron cu privire la finalizarea lucrărilor; implicit este să
prezentați finalizarea lucrărilor chiar înainte de a tipări un prompt.
cale Fiecare cuvânt al cale variabila specifică un director în care urmează să fie comenzile
căutat spre executare. Un cuvânt nul specifică directorul curent. Daca exista
Nu. cale variabilă, atunci se vor executa numai numele de căi complete. Calea obișnuită de căutare
este ".", "/ cos","/ usr / bin","/ sbin"Și"/ usr / sbin”, dar aceasta poate varia de la
sistem la sistem. Pentru superutilizator, calea implicită de căutare este „/ cos",
/ usr / bin","/ sbin", Și"/ usr / sbin”. O coajă căreia nu i se dă nici -c nici
il -t opțiunea va distribui în mod normal conținutul directoarelor din cale
variabilă după citire .cshrc, și de fiecare dată cale variabila este resetată. Daca noua
comenzile sunt adăugate la aceste directoare în timp ce shell-ul este activ, poate fi
necesar să se facă a reface sau este posibil ca comenzile să nu fie găsite.
prompt Șirul care este imprimat înainte de fiecare comandă este citit dintr-un interactiv
intrare terminală. În cazul în care o '!' apare în șir va fi înlocuit cu
numărul evenimentului curent, cu excepția cazului în care este dat un „\” anterior. Implicit este „%” sau „#” pentru
superutilizatorul.
salvahist I se dă o valoare numerică pentru a controla numărul de intrări din lista istorică
care sunt salvate în ~/.istorie când utilizatorul se deconectează. Orice comandă care a fost
la care se face referire în aceste multe evenimente vor fi salvate. În timpul pornirii surselor shell
~/.istorie în lista istorică, permițând salvarea istoricului între conectări. De asemenea
valori mari ale salvahist va încetini carcasa în timpul pornirii. Dacă salvahist
este doar setat, shell-ul va folosi valoarea lui istorie.
coajă Fișierul în care se află shell-ul. Această variabilă este folosită în bifurcarea shell-urilor la
interpretează fișierele care au setați biți de execuție, dar care nu sunt executabile de către
sistem. (Vezi descrierea lui Neîncorporat comandă execuție de mai jos.)
Inițializat la home (dependent de sistem) a shell-ului.
Starea Starea returnată de ultima comandă. Dacă s-a terminat anormal, atunci 0200
se adaugă la stare. Comenzile încorporate care eșuează returnează starea de ieșire 1, toate
alte comenzi încorporate setează starea la 0.
timp Controlează sincronizarea automată a comenzilor. Dacă este setată, atunci orice comandă care necesită mai mult
decât atât de multe secunde CPU vor provoca o linie care oferă utilizatorului, sistemului și timpilor reale,
și un procent de utilizare care este raportul dintre timpii de utilizare și sistem și real
timpul să fie tipărit când se încheie.
prolix Setat de -v opțiunea de linie de comandă, face ca cuvintele fiecărei comenzi să fie tipărite
după înlocuirea istoricului.
Neîncorporat comandă execuție
Când se constată că o comandă de executat nu este o comandă încorporată, shell-ul încearcă să o facă
executați comanda prin execve(2). Fiecare cuvânt din variabilă cale denumește un director din
pe care shell-ul va încerca să execute comanda. Dacă nu i se dă nici a -c nici a -t
opțiunea, shell-ul va hash numele din aceste directoare într-un tabel intern, astfel încât acesta
va încerca doar un Exec într-un director dacă există posibilitatea ca comanda să se afle
Acolo. Această comandă rapidă accelerează foarte mult locația comenzii atunci când sunt prezente multe directoare
calea de căutare. Dacă acest mecanism a fost dezactivat (prin unash), sau dacă coaja a fost
dat a -c or -t argument și, în orice caz, pentru fiecare componentă a directorului cale asta da
nu începe cu un „/”, shell-ul se concatenează cu numele comenzii date pentru a forma un nume de cale
a unui fișier pe care apoi încearcă să-l execute.
Comenzile între paranteze sunt întotdeauna executate într-un sub-shell. Prin urmare
(cd; pwd); pwd
tipărește Acasă director; lăsându-te acolo unde erai (tipărind asta după acasă
director), în timp ce
CD; pwd
te lasa in Acasă director. Comenzile între paranteze sunt cel mai adesea folosite pentru a preveni
chdir de a afecta carcasa actuală.
Dacă fișierul are permisiuni de execuție, dar nu este un binar executabil pentru sistem, atunci acesta
se presupune că este un fișier care conține comenzi shell și este generat un nou shell pentru a-l citi.
Dacă există un alias pentru coajă atunci cuvintele aliasului vor fi adăugate argumentului
listă pentru a forma comanda shell. Primul cuvânt al aliasului ar trebui să fie numele complet al căii
shell-ul (de exemplu, „$shell”). Rețineți că acesta este un caz special, care apare târziu alias
substituție și permite doar ca cuvintele să fie adăugate înaintea listei de argumente fără modificare.
Semnal manipulare
În mod normal, shell-ul ignoră semnalele SIGQUIT. Lucrări care rulează detașate (fie de & sau bg or
%... & comenzi) sunt imune la semnalele generate de la tastatură, inclusiv la blocări.
Alte semnale au valorile pe care shell-ul le-a moștenit de la părintele său. Cochilia
gestionarea întreruperilor și a semnalelor de terminare în scripturile shell poate fi controlată de onintr.
shell-urile de conectare captează semnalul SIGTERM (terminare); în caz contrar, acest semnal este transmis
copii din stat în părintele cochiliei. Întreruperile nu sunt permise la conectare
shell citește fișierul .deconectare.
LIMITAREA
Lungimea cuvintelor - Cuvintele nu pot avea mai mult de 1024 de caractere. Numărul de argumente pentru a
comanda care implică extinderea numelui de fișier este limitată la 1/6 din numărul de caractere
permis într-o listă de argumente. Substituțiile de comenzi nu pot înlocui mai multe caractere decât
sunt permise într-o listă de argumente. Pentru a detecta bucla, shell-ul restricționează numărul de alias
înlocuiri pe o singură linie la 20.
Utilizați bsd-csh online folosind serviciile onworks.net