NAME
sh - ukazni tolmač (lupina)
POVZETEK
sh -/ + aCefnuvxIimqsVEbc -o longname -words cilj …
OPIS
Sh je standardni ukazni tolmač za sistem. Trenutna različicash je v postopku spreminjanja, da bo v skladu zPOSIX 1003.2 in 1003.2a specifikacije za lupino. Ta različica ima številne funkcije, zaradi katerih je v nekaterih pogledih podobna ukazu Korn, vendar ni klon lupine Korn (glej ksh (1)). Samo funkcije, ki jih označujePOSIX plus nekaj Berkeleyjevih razširitev, se vključijo v to lupino. PričakujemoPOSIX skladnost s časom 4.4 BSD se sprosti. Ta manska stran ni namenjena vadnici ali popolni specifikaciji lupine.
Pregled
Lupina je ukaz, ki bere vrstice iz datoteke ali terminala, jih razlaga in na splošno izvaja druge ukaze. Program se izvaja, ko se uporabnik prijavi v sistem (čeprav lahko uporabnik z ukazom chsh (1) izbere drugo lupino). Lupina izvaja jezik, ki ima konstrukte za kontrolo toka, makro objekt, ki poleg shranjevanja podatkov zagotavlja različne funkcije, skupaj z vgrajeno zgodovino in zmogljivostmi za urejanje vrstic. Vključuje veliko funkcij za pomoč pri interaktivni uporabi in ima prednost, da je tolmačni jezik skupen za interaktivno in neinteraktivno uporabo (skripte lupine). To pomeni, da se ukazi lahko vnesejo neposredno v potekajočo lupino ali se lahko dajo v datoteko in datoteko lahko neposredno izvede ukazna lupina.
Povabilo
Če ni prisotnih nobenih argumentov in če je standardni vhod lupine priključen na terminal (ali če je -jazzastava je nastavljena), in -c možnost ni prisotna, lupina velja za interaktivno lupino. Interaktivna lupina običajno zahteva pred vsakim ukazom in drugače obravnava napake programiranja in ukaza (kot je opisano spodaj). Pri prvem zagonu lupina pregleda argument 0 in če se začne s pomišljajem "-" se lupina šteje tudi za prijavno lupino. To običajno naredi sistem samodejno, ko se uporabnik najprej prijavi. Lučka za prijavo najprej bere ukaze iz datotek / etc / profile in .profile, če obstajajo. Če spremenljivka okoljaENV je nastavljen na vstop v lupino ali je nastavljen v .profile prijavne lupine, potem lupina bere ukaze iz datoteke, ki je navedena vENVZato mora uporabnik postaviti ukaze, ki jih je treba izvesti le ob času prijave v datoteki .profile, in ukaze, ki se izvajajo za vsako lupino v notranjostiENV mapa. Če želite nastavitiENV spremenljivko v neko datoteko, postavite naslednjo vrstico v vašo .profile vašega domačega imenika
ENV = $ HOME / .shinit; izvoz ENV
nadomeščanje ".shinit" poljubnega imena datoteke. Od letaENV datoteka se bere za vsako sklicevanje na lupino, vključno s skripti lupine in neinteraktivnimi lupinami, je naslednja paradigma uporabna za omejevanje ukazov vENV datoteko za interaktivne pozive. Postavite ukaze v "case" in "esac" spodaj (ti ukazi so opisani pozneje):
primer $ - v * i *)
# ukazi samo za interaktivno uporabo
…
esac
Če so poleg opcij ukazne vrstice podane tudi ukazne vrstice, potem lupina obravnava prvi argument kot ime datoteke, iz katere bere ukaze (lupinski skript), preostali argumenti pa so nastavljeni kot pozicijski parametri lupine ($ 1 , 2 $, itd.). V nasprotnem primeru lupina bere ukaze iz svojega standardnega vhoda.
Predelava seznamov argumentov
Vse enopomenske črke imajo ustrezno ime, ki se lahko uporabi kot argument za -o možnost. Komplet -o ime je pod eno-črkovno možnostjo v spodnjem opisu. Določanje pomišljaja `` - '' pa vklopi to možnost, pri tem pa izključite možnost »+«. Naslednje možnosti lahko nastavite iz ukazne vrstice ali z vgrajenim (1) vgrajenim (opisanim pozneje).
-a allexport
Izvozi vse spremenljivke, dodeljene. (UNIMPLEMENTED za 4,4 alfa)
-c
Preberite ukaze iz ukazne vrstice. Noben ukaz ne bo prebral iz standardnega vhoda.
-C noclobber
Ne prepisujte obstoječih datotek z ``> '' (UNIMPLEMENTED za 4,4 alpha)
-e errexit
Če ni interaktiven, takoj izstopite, če neuspeli ukaz ne uspe. Izhodni status ukaza se šteje za izrecno testiran, če se ukaz uporablja za nadzorče elifwhile alido ali če je ukaz levi ročni operand operaterja `` && '' ali `` || ''.
-f noglob
Onemogoči razširitev poti.
-n noexec
Če ne interaktivno, preberite ukaze, vendar jih ne izvršite. To je uporabno za preverjanje sintakse skriptov lupine.
-u nounset
Napišite sporočilo o standardni napaki pri poskusu razširitve spremenljivke, ki ni nastavljena, in če lupina ni interaktivna, takoj zapustite. (UNIMPLEMENTED za 4,4 alfa)
-v verbose
Lupina zapisuje svoj prispevek k standardni napaki, ko jo berete. Uporabno za razhroščevanje.
-x xtrace
Vsak ukaz vnesite v standardno napako (pred katerim je izveden "+"). Uporabno za razhroščevanje.
-q tihoprofil
Če -v ali -x opcije so bile nastavljene, jih ne uporabljajte pri branju datotek za inicializacijo, to so / etc / profile .profile in datoteko, ki jo določiENV spremenljivka okolja.
-JAZ ignoreeof
Preusmeri EOF iz vhoda, kadar je interaktiven.
-jaz interaktivno
Prisilite lupino, da se interaktivno obnaša.
-m monitor
Vklopite kontrolo opravil (samodejno nastavite interaktivno).
-s stdin
Preberite ukaze iz standardnega vhoda (nastavite samodejno, če ni prisotnih argumentov datoteke). Ta možnost nima učinka, ko nastavite, ko je lupina že začela teči (to pomeni z nastavljeno (1)).
-V vi
Omogoči vgrajeni vi (1) urejevalnik ukazne vrstice (onemogoči -E če je bil določen).
-E emacs
Omogoči vgrajen emacs (1) urejevalnik ukazne vrstice (onemogoči -V če je bil določen).
-b obvestiti
Omogoči asinhrono obvestilo o opravljenem delu ozadja. (UNIMPLEMENTED za 4,4 alfa)
Leksikalna struktura
Lupina bere vnos v smislu vrstic iz datoteke in jo prelomi v besede na praznih prostorih (prazne in zavihke) in pri določenih sekvencah znakov, ki so posebni za lupino, imenovano `` operaterji '' Obstajata dve vrsti operaterjev: nadzorni operaterji in operatorji preusmerjanja (njihov pomen je opisan pozneje). Sledi seznam operaterjev:
"Operaterji nadzora:"
& && ( ) ; ;; | || "Operater preusmeritve:" < > >| << >> <& >& <<- <>
Quoting se uporablja za odstranitev posebnega pomena določenih znakov ali besed v lupini, kot so operaterji, presledki ali ključne besede. Obstajajo tri vrste citiranja: ujemanje posameznih narekov, ujemanje dvojnih narekov in poševnica. Naslednja črka ohranja dobesedni pomen naslednjega znaka, z izjemo Aq nove linije. Nasprotna črka, ki je pred Aq novo linijo, se obravnava kot nadaljevanje vrstice. Zaprti znaki v posameznih narekovajih ohranjajo dobesedni pomen vseh znakov (razen enojnih narekov, zaradi česar ni mogoče dati enojnih narekov v nizu z enim citatom). Zapiralni znaki v dvojnih narekovajih ohranjajo dobesedni pomen vseh znakov, razen dolgih ($) in (b) poševnega črte (). Bližnjica v dvojnih narekovajev je zgodovinsko čudna in služi kot citat le naslednjih znakov: $ ` V nasprotnem primeru ostane dobesedno. Rezervirane besede so besede, ki imajo za lupino poseben pomen in so prepoznane na začetku linije in po kontrolorju. Pridržane besede so naslednje: ! Taelif Ta fi Ta, medtem ko je ta primer drugače Taza Ta potem Ta {Ta} naredi Tadokler ni Ta, če je ta Njihov pomen je opisan kasneje. Alias je ime in ustrezna vrednost, ki je nastavljena z uporabo ukaza built-in alias (1). Kadar se lahko zgodi rezervirana beseda (glejte zgoraj), in po preverjanju rezerviranih besed, lupina preveri besedo in preveri, ali se ujema z vzdevkom. Če to naredi, jo nadomesti v vhodnem toku s svojo vrednostjo. Na primer, če obstaja vzdevek z imenom `` lf '' z vrednostjo `` ls -F '', potem vnos: Če je foobar bi postal ls -F foobar Aliasi zagotavljajo priročen način, da naivni uporabniki ustvarijo kratke stike za ukaze, ne da bi se morali naučiti ustvarjanja funkcij z argumenti. Prav tako se lahko uporabljajo za ustvarjanje leksikalne nejasne kode. Ta uporaba je odvrača. Lupina razlaga besede, ki jih bere v skladu z jezikom, katerega specifikacija je zunaj obsega te strani (glej BNF vPOSIX 1003.2 dokument). Čeprav je v bistvu črta in če prva beseda črte (ali po upravljavcu) ni rezervirana beseda, je lupina prepoznala preprost ukaz. V nasprotnem primeru je mogoče prepoznati kompleksen ukaz ali kak drug poseben konstrukt. Če je bil prepoznan preprost ukaz, lupina opravi naslednja dejanja: Glavne besede oblike `` ime = vrednost '' so odstranjene in dodeljene okolju preprostega ukaza. Operaterji preusmerjanja in njihovi argumenti (kot so opisani spodaj) so odstranjeni in shranjeni za obdelavo. Preostale besede se razširijo, kot je opisano v razdelku »Razširitve« in prva preostala beseda se šteje za ime ukaza in ukaz se nahaja. Preostale besede se štejejo za argumente ukaza. Če ni prišlo do nobenega imena ukaza, dodeljene spremenljivke `` name = value '', priznane v 1. točki, vplivajo na trenutno lupino. Preusmeritve se izvajajo, kot je opisano v naslednjem poglavju. Preusmeritve Preusmeritve se uporabljajo za spreminjanje, če ukaz bere vnos ali pošlje svoj izhod. Na splošno preusmeritve odpirajo, zapirajo ali podvajajo obstoječe sklicevanje na datoteko. Celoten format za preusmeritev je: n redir-op datoteka kje redir-op je eden prej omenjenih preusmerjalcev. Sledi seznam možnih preusmeritev. Bq n je neobvezna številka, kot v "3" (ne "Bq 3", ki se nanaša na deskriptor datoteke. n> datoteko Preusmeri standardni izhod (ali n) v datoteko. n> | mapa Enako, vendar preglasite -C možnost. n >> datoteka Dodajte standardni izhod (ali n) v datoteko. n <datoteka Preusmeri standardni vhod (ali n) iz datoteke. n1 <& n2 Podvojeni standardni vhod (ali n1) iz deskriptorja datoteke n2. n <& - Zapri standardni vhod (ali n). n1> & n2 Podvojeni standardni izhod (ali n1) iz n2. n> in - Zaprite standardni izhod (ali n). n <> datoteko Odprite datoteko za branje in pisanje na standardnem vhodu (ali n). Naslednje preusmerjanje se pogosto imenuje »tukaj-dokument« n << razmejitev tukaj-doc-besedilo … razmejitev Vsa besedila o zaporednih vrsticah do ločila se shranijo in dajo na voljo ukazu na standardnem vhodu ali deskriptorju datoteke n, če je naveden.Če navedemo ločilo, kot je navedeno v začetni vrstici, se tukaj-doc-besedilo obravnava dobesedno, v nasprotnem primeru je besedilo podano razširjanju parametrov, zamenjavi ukazov in aritmetični ekspanziji (kot je opisano v razdelku »Razširitve«) 'Če je operater `` << -' 'namesto `` <<' ', so vodilni zavihki tukaj-doc-beseda odstranjeni. Obstajajo tri vrste ukazov: funkcije ukazne lupine, vgrajeni ukazi in običajni programi - in v tem vrstnem redu iščete po imenu (po imenu). Vsak se izvaja na drugačen način. Ko se izvaja funkcija ukazne lupine, so vsi parametri lojalnosti lupine (razen $ 0, ki ostanejo nespremenjeni) nastavljeni na argumente funkcije lupine. Spremenljivke, ki so izrecno nameščene v okolju ukaza (s postavljanjem dodelitev nanje pred ime funkcije), postanejo lokalne funkciji in so nastavljene na dane vrednosti. Nato se izvede ukaz, podan v definiciji funkcije. Položajni parametri se ob končanem ukazu povrnejo na prvotne vrednosti. To se zgodi v trenutni lupini. Vgrajene Shell se izvajajo v notranjosti lupine, ne da bi se sprostili nov proces. V nasprotnem primeru, če se ime ukaza ne ujema s funkcijo ali je vgrajeno, se ukaz išče kot običajen program v datotečnem sistemu (kot je opisano v naslednjem poglavju). Ko je običajni program izveden, lupina zažene program, ki prenaša argumente in okolje programu. Če program ni normalna izvedljiva datoteka (to pomeni, če se ne začne z "čarobno številko", katereASCII predstavitev je "#!", tako da execve (2) vrne Er ENOEXEC, potem) bo lupina program razložila v podskupini. Otroška lupina se v tem primeru ponovno inicializira, tako da bo učinek tako, kot da bi bila uporabljena nova lupina za ravnanje z ad-hoc lupinskim skriptom, razen, da bo lokacija zaprtih ukazov, ki se nahajajo v starševski lupini, zapomnila otrok. Upoštevajte, da prejšnje različice tega dokumenta in izvorne kode same zavajajoče in sporadično nanašajo na lupinski skript brez magične številke kot "postopek lupine". Pri iskanju ukaza lupina najprej vidi, ali ima to ime funkcijo lupine. Potem išče vgrajen ukaz s tem imenom. Če vgrajeni ukaz ni mogoče najti, se zgodi ena od dveh stvari: Imena ukazov, ki vsebujejo poševnico, so preprosto izvedena brez iskanja. Lupina išče vsak vnosPATH v zameno za ukaz. VrednostPATHspremenljivka mora biti vrsta vnosov, ločenih s kolonami. Vsak vnos vsebuje ime imenika. Trenutni imenik je lahko implicitno označen z imenom praznega imenika ali izrecno z enim samim obdobjem. Stanje izhodnega ukaza Vsak ukaz ima status izhoda, ki lahko vpliva na vedenje drugih ukazov ukazne lupine. Paradigma je, da ukaz zapušča z nič za normalno ali uspešno, in ni nič za napako, napako ali lažno navedbo. Na strani za človeka za vsak ukaz je treba navesti različne izhodne kode in kaj pomenijo. Poleg tega vgrajeni ukazi vrnejo izhodne kode, kot tudi izvršeno funkcijo lupine. Kompleksni ukazi so kombinacije preprostih ukazov z nadzornimi operaterji ali rezerviranimi besedami, skupaj z ustvarjanjem večjega kompleksnega ukaza. Na splošno je ukaz eden od naslednjih: Če ni drugače navedeno, je izhodni status ukaza zadnjega preprostega ukaza, ki ga izvede ukaz. Plinovod je zaporedje enega ali več ukazov, ločenih s strani upravljavca. | Standardni izhod vseh, razen zadnjega ukaza, je povezan s standardnim vhodom naslednjega ukaza. Standardni izhod zadnjega ukaza je kot običajno podedovan iz lupine. Oblika plinovoda je: ! ukaz1 | command2 … Standardni izhod ukaza1 je povezan s standardnim vhodom ukaza2. Standardni vhod, standardni izhod ali oba ukaza se šteje, da jih cevovod dodeli pred preusmeritvijo, ki jo določijo operatorji preusmeritve, ki so del ukaza. Če plinovod ni v ozadju (o katerem je razloženo kasneje), lupina čaka, da se izvedejo vsi ukazi. Če rezervirana beseda! ne pred cevovodom, je status izhoda izhodni status zadnjega ukaza, navedenega v plinovodu. V nasprotnem primeru je izhodni status logična NOT statusa izhoda zadnjega ukaza. To pomeni, da če zadnji ukaz vrne nič, je stanje izhoda 1; če se zadnji ukaz vrne več kot nič, je stanje izhoda nič. Ker dodelitev cevovodov standardnega vhoda ali standardnega izhoda ali oboje poteka pred preusmeritvijo, jo je mogoče spremeniti s preusmeritvijo. Na primer: $ command1 2> & 1 | command2 pošilja standardni izhod in standardno napako ukaza1 na standardni vhod ukaza2. A; ali Upoštevajte, da v nasprotju z nekaterimi drugimi lupinami je vsak proces v plinovodu otrok lika, ki se sklicuje (razen če je zgrajena lupina, v tem primeru pa se izvaja v trenutni lupini - vendar je vsak učinek, ki ga ima na okolje, izbrisan). Če ukaz upravitelj ukaza ampersand (&) prekine ukaz, asinhrono izvrši ukaz, to pomeni, da lupina ne počaka, da se ukaz izvede pred izvedbo naslednjega ukaza. Format za zagon ukaza v ozadju je: command1 & command2 & … Če lupina ni interaktivno, je standardni vnos asinhronega ukaza nastavljen na / dev / null Seznam je zaporedje nič ali več ukazov, ločenih z novimi vrsticami, podpičji ali ampersandsi, opcijsko pa jih prekine eden od teh treh znakov. Ukazi na seznamu se izvajajo v zaporedju, v katerem so napisani. Če ukazu sledi ampersand, lupina zažene ukaz in takoj nadaljuje na naslednji ukaz; sicer čaka, da se ukaz prekliče, preden nadaljuje z naslednjim. `` && '' in `` || '' so operatorji seznama AND-OR. `` && '' izvrši prvi ukaz, nato pa izvede drugi ukaz, če je izhodni status prvega ukaza nič. `` || '' je podoben, vendar izvrši drugi ukaz, če je stanje izhoda prvega ukaza neveljavno. `` && '' in `` || '' imata enako prednost. Sintaksa ukaza if je če je seznam nato seznam elif seznam nato seznam … drug seznam fi Sintaksa ukaza medtem ko je medtem ko seznam naredi seznam Končano Dva seznama se večkrat izvajajo, medtem ko je izhodni status prvega seznama nič. Dokler ukaz ni podoben, vendar ima besedo do mesta, medtem ko se ponavlja, dokler stanje izhoda prvega seznama ni nič. Sintaksa ukaza za je za spremenljivko v besedo … naredi seznam Končano Besede so razširjene in seznam se večkrat izvaja s spremenljivko, ki je nastavljena na vsako besedo. narediti in narediti se lahko nadomestijo z ,, {"" in "}}" Sintaksa prekinitve in nadaljevanja ukaza je odmor num nadaljuj število Odmik preneha z najhitrejšo zanko za ali med zankami. Nadaljujte z naslednjo ponovitvijo najnovejše zanke. Ti se izvajajo kot vgrajeni ukazi. Sintaksa ukaza primera je primer besed v vzorec); … esac Vzorec je dejansko lahko en ali več vzorcev (glej Shell Patterns, opisane pozneje), ločene z znaki »` `. Komande lahko združite s pisanjem (seznam) ali {list; Prvi od teh izvede ukaze v podskupini. Vgrajeni ukazi, združeni v (seznam), ne bodo vplivali na trenutno lupino. Druga oblika ne krije druge lupine, zato je nekoliko bolj učinkovita. Združevanje ukazov skupaj na ta način omogoča, da svoje rezultate preusmerite, kot da bi bili en program: {printf hello; printf svet n ";}> pozdrav Funkcije Sintaksa definicije funkcije je ime () ukaz Definicija funkcije je izvedbeni izraz; ko se izvede, namesti funkcijo z imenom in vrne status izhoda nič. Ukaz je običajno seznam, ki je priložen med `` {'' in ''} '' Spremenljivke je mogoče razglasiti kot lokalno funkciji z uporabo lokalnega ukaza. To se mora pojaviti kot prvi stavek funkcije, sintaksa pa je lokalna spremenljivka | - … Lokalni se izvaja kot vgrajen ukaz. Ko spremenljivka postane lokalna, podeduje začetno vrednost in izvožene in readonly zastavice iz spremenljivke z istim imenom v okoliškem obsegu, če obstaja. V nasprotnem primeru je spremenljivka na začetku ni nastavljena. Lupina uporablja dinamični obseg, tako da če spremenite spremenljivko x lokalno v funkcijo f, ki nato pokliče funkcijo g, se sklicevanja na spremenljivko x, izvedena znotraj g, nanašajo na spremenljivko x, ki je navedena znotraj f, ne na globalno spremenljivko z imenom x . Edini poseben parameter, kot ga lahko naredimo lokalno, je `` - '', ki lokalno spreminja vse možnosti ukazne lupine, ki se spremenijo prek ukaza znotraj funkcije, ki jih je treba obnoviti na prvotne vrednosti, ko se funkcija vrne. Sintaksa ukaza za vrnitev je vrnitev exitstatus Konča trenutno izvršilno funkcijo. Vrnitev se izvaja kot vgrajen ukaz. Lupina ohranja nabor parametrov. Parameter, označen z imenom, se imenuje spremenljivka. Pri zagonu lupka spremeni vse spremenljivke okolja v spremenljivke lupine. Nove spremenljivke lahko nastavite z uporabo obrazca ime = vrednost Spremenljivke, ki jih nastavi uporabnik, morajo imeti ime, sestavljeno izključno iz abecednih številk, številk in podčrtav, ki ne smejo biti številčni. Parameter lahko označimo tudi s številko ali posebnim znakom, kot je razloženo spodaj. Položajni parameter je parameter, označen s številko (n> 0). Lučka jih prvotno nastavi na vrednosti svojih argumentov ukazne vrstice, ki sledijo imenu skripta lupine. Nastavljeno (1) vgrajeno lahko uporabite tudi za nastavitev ali ponastavitev. Poseben parameter je parameter, označen z enim od naslednjih posebnih znakov. Vrednost parametra je navedena poleg njenega znaka. * Razširjuje se na pozicijske parametre, začenši z ene. Ko se razširitev pojavlja v dvojnem nizu, se razširi na eno polje z vrednostjo vsakega parametra, ločenega s prvim znakomIFS spremenljivka ali a @ Razširjuje se na pozicijske parametre, začenši z ene.Ko se razširitev zgodi v dvojnih narekovajih, se vsak pozicijski parameter razširi kot ločen argument. Če ni nobenih pozicijskih parametrov, razširitev @ generira nič argumentov, tudi če je @ dvojno citiran. Kaj to v bistvu pomeni, na primer, če je $ 1 "abc" in $ 2 je "def ghi", potem Qq $ @ razširi na dva argumenta: abc def ghi # Razširi na število pozicijskih parametrov. ? Razširi do statusa izhoda najnovejšega plinovoda. - (vezaj.) Razširi na trenutne zastave možnosti (imena z eno črko, združena v niz), kot je določeno pri pozivu, z nastavljenim vgrajenim ukazom ali implicitno z lupino. $ Razširi v identifikacijsko številko procesa za uveljavljeno lupino. Poddrška ohranja enako vrednost $ kot njeno matično podjetje. ! Razširi v identifikacijsko številko procesa zadnjega ukaza za ozadje, ki se izvaja iz trenutne lupine. Za plinovod je ID procesa, kot je zadnji ukaz v plinovodu. 0 (nič.) Razširi na ime skripte ali lupine. Razširitve besed Ta klavzula opisuje različne širitve, ki se izvajajo pri besedah. Vse razširitve se ne izvajajo za vsako besedo, kot je razloženo kasneje. Razširitve Tilde, razširitve parametrov, zamenjave ukazov, aritmetične razširitve in citatne selitve, ki se pojavljajo znotraj ene besede, se razširijo na eno samo polje. To je samo razcepitev polja ali razširitev poti, ki lahko ustvari več polj iz ene besede. Enotna izjema tega pravila je razširitev posebnega parametra @ znotraj dvojnih narekov, kot je bilo opisano zgoraj. Vrstni red razširjanja besed je: Razširitev Tilde, razširitev parametrov, zamenjava ukazov, aritmetično razširitev (vsi se pojavljajo hkrati). Razdelitev polja se izvaja na poljih, ki jih generira korak (1), razen če jeIFS spremenljivka je nič. Razširitev poti (razen če je nastavljeno -f je v veljavi). Citat Removal. Znak $ se uporablja za uvedbo razširitve parametrov, zamenjave ukazov ali aritmetične ocene. Beseda, ki se začne z znakom tilde, ki ne podpiše (~), je podvržena širjenju tilde. Vsi znaki do poševnice (/) ali konca besede se obravnavajo kot uporabniško ime in se zamenjajo z domačim imenikom uporabnika. Če uporabniško ime manjka (kot v ~ / foobar), se tilda nadomesti z vrednostjo HOME spremenljivka (domači imenik trenutnega uporabnika). Format za razširitev parametrov je naslednji: $ {izraz} kjer je izraz sestavljen iz vseh znakov, dokler se ujemanje ``} '' Any ``} '' ne uide s poševno črko ali znotraj navedenega niza, in znaki v vgrajenih aritmetičnih razsežnostih, zamenjavah ukazov in spremenljivih širitvah niso preučeni pri določanju ujemanje ``} '' Najpreprostejša oblika razširitve parametrov je: $ {parameter} Vrednost, če obstaja, parametra je zamenjana. Ime parametra ali simbol se lahko zapiše v zavihke, ki so neobvezni, razen za parametre položaja z več kot eno številko ali če temu sledi znak, ki ga je mogoče razlagati kot del imena. Če pride do razširitve parametra znotraj dvojnih narekov: Razširitev poti se ne izvede na rezultatih razširitve. Razdelitev polja se ne izvaja na rezultatih razširitve, z izjemo @. Poleg tega se lahko razširitev parametrov spremeni z uporabo enega od naslednjih oblik. $ {parameter: -word} Uporabite privzete vrednosti. Če je parameter unset ali null, je razširitev besede zamenjana; v nasprotnem primeru se vrednost parametra nadomesti. $ {parameter: = beseda} Dodeli privzete vrednosti. Če je parameter unset ali null, je razširitev besede dodeljena parametru. V vseh primerih je končna vrednost parametra nadomeščena. Na ta način lahko dodelite samo spremenljivke, ne pozicijske parametre ali posebne parametre. $ {parameter:? beseda} Označite napako, če je Null ali Unset. Če je parameter unset ali null, je razširitev besede (ali sporočila, ki označuje, da je opuščena, če je beseda izpuščena) zapisana v standardno napako in lupina zapusti z ničelnim izhodnim statusom. V nasprotnem primeru se vrednost parametra nadomesti. Interaktivna lupina ni treba zapreti. $ {parameter: + beseda} Uporabite alternativno vrednost. Če je parameter neveljaven ali nič, je null substituiran; sicer se zamenja beseda. V predhodno prikazanih parametrih, uporaba dvopičja v formatu pomeni preskus za parameter, ki je neusklajen ali neveljaven; izpuščanje debelega črevesa povzroči preizkus parametra, ki je izključen. $ {# parameter} Dolžina strune. Dolžina znakov vrednosti parametra. Naslednje štiri različice razširitve parametrov omogočajo obdelavo substitu. V vsakem primeru se za ovrednotenje vzorcev uporablja obrazec za ujemanje vzorcev (glej Shell Patterns), namesto z zapisom regularnega izraza. Če je parameter * ali @, rezultat razširitve ni določen. Vključitev celotnega niza razširitvenih nizov v dvojnih narekovajev ne povzroči navedbe naslednjih štirih vrst vzorcev znakov, medtem ko ima navedba znakov v oklepajih ta učinek. $ {parameter% beseda} Odstranite najmanjši vzorčni pokrovček. Beseda je razširjena, da proizvede vzorec. Razširitev parametrov nato privede do parametra, pri čemer je najmanjši del priponke, ki ga ujema z izbrisanim vzorcem. $ {parameter %% beseda} Odstranite največji vzorec Suffix.Beseda je razširjena, da proizvede vzorec. Razširitev parametrov nato prikaže parameter, pri čemer se največji del priponke ujema z izbrisanim vzorcem. $ {parameter # beseda} Odstrani najmanjši vzorčni predpono. Beseda je razširjena, da proizvede vzorec. Razširitev parametrov nato privede do parametra, pri čemer je najmanjši del predpone, ki se ujema z izbrisanim vzorcem. $ {parameter ## beseda} Odstranite največji vzorčni predpono. Beseda je razširjena, da proizvede vzorec. Razširitev parametrov nato prikaže parameter, pri čemer največji del predpone ustreza izbrisanemu vzorcu. Zamenjava ukaza Zamenjava ukaza omogoča zamenjavo izhoda ukaza namesto samega ukaznega imena. Zamenjava ukaza se pojavi, ko je ukaz zaprt, kot sledi: $ (ukaz) ali Po `` backquoted '' različico Pc: `command` Lupina razširi zamenjavo ukazov tako, da izvrši ukaz v okolju podvrste in zamenja zamenjavo ukazov s standardnim izhodom ukaza, odstranjuje zaporedja enega ali več Aritmetična ekspanzija zagotavlja mehanizem za vrednotenje aritmetičnega izraza in nadomesti njegovo vrednost. Format aritmetične ekspanzije je naslednji: $ ((izraz)) Izraz se obravnava, kot da bi bil v dvojnih narekovajih, le da se dvojni citat znotraj izraza ne obravnava posebej. Lupina razširi vse žetone v izrazu za razširitev parametrov, zamenjavo ukazov in odstranitev citira. Nato lupina obravnava to kot aritmetični izraz in nadomesti vrednost izraza. Po razširitvi parametrov, zamenjavi ukazov in aritmetičnem razširitvi lupina pregleda rezultate razširitev in zamenjave, ki se v dvojnih narekovajih ne pojavljajo za delitev polja in lahko povzroči več polj. Lupina obravnava vsak likIFS kot ločilo in uporabite ločila za razdelitev rezultatov razširitve parametrov in zamenjave ukazov v polja. Razen če -f zastava je nastavljena, generiranje imena datoteke se izvede, ko je delitev besed zaključena. Vsaka beseda se obravnava kot niz vzorcev, ločenih s poševnicami. Proces širitve nadomesti besedo z imeni vseh obstoječih datotek, katerih imena se lahko oblikujejo z zamenjavo vsakega vzorca z nizom, ki ustreza določenemu vzorcu. Obstajata dve omejitvi: prvič, vzorec se ne more ujemati z nizom, ki vsebuje poševnico, in drugič, vzorec se ne more ujemati z nizom, ki se začne z obdobjem, razen če je prvi znak vzorca obdobje. V naslednjem poglavju so opisani vzorci, uporabljeni za razširitev Pathname Expansion in ukaz case (1). Vzorec sestavljajo normalni znaki, ki se ujemajo z njimi in meta-znaki. Metapodatki so ``! '' `` * '' '``?' 'In `` ' 'Ti znaki izgubljajo svoj pomen, če so citirani. Ko se izvede ukazna ali spremenljiva zamenjava in znak za dolar ali povratni narekovaj ni dvojno citiran, se vrednost spremenljivke ali izhod ukaza skenira za te znake in jih spremenijo v meta-znake. Zvezdica (`` * '') se ujema z nizom znakov. Vprašaj se ujema z vsakim znakom. Levi nosilec (`` '') uvaja razred znakov. Konec znakovnega razreda je označen z (`` ''), če manjka `` '', potem se `` '' ujema s '' '' namesto uvajanjem razreda znakov. Razred znakov se ujema z znaki med oglatimi oklepaji. Številke znakov se lahko določijo z znakom minus. Razred znakov se lahko dopolni s klicajočo točko prvega znaka razreda znakov. Če želite v razred znakov vključiti »` '', navedite prvi znak (po "`! ", Če obstaja). Če želite vključiti znak minus, postanite prvi ali zadnji znak Ta razdelek navaja vgrajene ukaze, ki so zgrajeni, ker morajo izvajati nekaj operacij, ki jih ni mogoče izvesti z ločenim procesom. Poleg tega obstaja še nekaj drugih ukazov, ki so lahko vgrajeni za učinkovitost (npr. Echo 1). : Neveljavni ukaz, ki vrne 0 (true) izhodno vrednost. . mapa Oboje v navedeni datoteki bere in izvede lupina. alias ime = niz … Če ime = niz je določena, lupina definira vzdevek ime z vrednostjo niz Če samo ime je določen, vrednost vzdevka ime natisne. Brez argumentov,alias vgrajeni natisne imena in vrednosti vseh definiranih vzdevkov (glejunalias) bg delo … Nadaljujte določena opravila (ali trenutno opravilo, če ni opravil nobenih opravil) v ozadju. ukaz ukaz arg … Izvedite določen vgrajen ukaz. (To je uporabno, če imate funkcijo lupine z enakim imenom kot vgrajeni ukaz.) cd imenik Preklopi na določen imenik (privzeto$ HOME) Če je vnos zaCDPATH se pojavlja v okoljucd ukaz ali spremenljivko lupineCDPATH je nastavljen in ime imenika se ne začne s poševnico, nato pa so v imeniku navedeneCDPATH bo iskal določen imenik. Oblika zapisaCDPATH je enak kot priPATH V interaktivni lupini,cd ukaz natisne ime imenika, na katerega je dejansko preklopil, če se to razlikuje od imena, ki ga je dal uporabnik. Ti so lahko različni, kerCDPATH uporabljen mehanizem ali pa je bil prekrit simbolična povezava. eval niz … Konkretirajte vse argumente s presledki. Nato ponovno analizirajte in izvršite ukaz. exec ukaz arg … Če ukaz ni izpuščen, se postopek lupine nadomesti z določenim programom (ki mora biti pravi program, ne zgrajena lupina ali funkcija). Preusmeritve naexecukazi so označeni kot trajni, tako da niso preklicani, ko jeexec ukaz zaključi. izhod exitstatus Prekinite postopek lupine. Če exitstatus da se uporablja kot izhodni status lupine; sicer se uporabi status izhoda prejšnjega ukaza. izvoz ime … izvoz -p Navedena imena se izvažajo tako, da se bodo pojavila v okolju naslednjih ukazov. Edini način za neizvozno spremenljivko je, da ga izklopite. Lupina omogoča, da se vrednost spremenljivke nastavi ob istem času, ko se izvozi s pisanjem ime izvoza = vrednost Brez argumentov ukaz za izvoz navaja imena vseh izvoženih spremenljivk. Z -strizbrana možnost bo formatirana ustrezno za neinteraktivno uporabo. fc-e urednik najprej zadnji fc -l -št najprej zadnji fc -s staro = novo najprej Thefc vgrajene sezname ali urejanje in ponovno izvede ukaze, ki so bili predhodno vneseni v interaktivno lupino. urednik Za urejanje ukazov uporabite urejevalnik, ki ga imenuje urednik. Urejalni niz je ime ukaza, ki je predmet iskanja prekPATH spremenljivka. Vrednost vFCEDIT spremenljivka se uporablja kot privzeto, kadar -e ni določen. ČeFCEDIT je neveljaven ali nevezan, vrednostUREDNIK Uporablja se spremenljivka. ČeUREDNIK je null ali unset, ed (1) se uporablja kot urednik. -l (ell) Navedite ukaze in ne kličite urejevalnika na njih. Ukazi so zapisani v zaporedju, ki ga označujejo prvi in zadnji operandi,r z vsakim ukazom pred številko ukaza. -n Zaustavi ukazne številke pri vnosu z -l. -r Preverite vrstni red ukazov, ki so navedeni (z -l ali urediti (brez -l niti -s) -s Ponovno izvršite ukaz, ne da bi priklicali urejevalnika. najprej zadnji Izberite ukaze za seznam ali urejanje. Število predhodnih ukazov, do katerih lahko dostopate, se določi z vrednostjoVSAKOST spremenljivka. Vrednost prve ali zadnje ali oboje je ena od naslednjih: + številka Pozitivno število, ki predstavlja številko ukaza; ukazne številke se lahko prikažejo z -l možnost. - številka Negativna decimalna številka, ki predstavlja ukaz, s katerim je bilo predhodno izvedeno število ukazov. Na primer, -1 je takoj prejšnji ukaz. niz Niz, ki označuje zadnji vneseni ukaz, ki se začne s tem nizom. Če stari = nov operand ni naveden tudi z -s nizna oblika prvega operanda ne more vsebovati vgrajenega znaka enakosti. Naslednje spremenljivke okolja vplivajo na izvajanje fc: FCEDIT Ime urejevalnika za uporabo. VSAKOST Število predhodnih ukazov, ki so dostopni. fg delo Premaknite določeno nalogo ali trenutno opravilo v ospredje. getopts optstring var ThePOSIX getopts ukaz, ne da bi ga zamenjali z Bell Labs -rebrni getopt (1). Prvi argument mora biti serija črk, ki lahko poljubno sledi dvopičje, ki označuje, da opcija zahteva argument. Navedena spremenljivka je nastavljena na razčlenjeno možnost. Thegetopts ukaz zastareli starejšo orodje getopt (1) zaradi obravnavanja argumentov, ki vsebujejo presledke. Thegetopts se lahko uporabijo za pridobivanje opcij in njihovih argumentov s seznama parametrov. Ko se prikliče,getopts postavlja vrednost naslednje možnosti iz niza možnosti na seznamu v spremenljivki ukazne lupine, ki jo določa var in to je indeks v spremenljivki lupineOPTIND Ko se sklicuje lupina,OPTIND se inicializira na 1. Za vsako možnost, ki zahteva argument, jegetopts vgrajen bo ga postavil v spremenljivko lupineOPTARG Če v možnosti ni dovoljena možnost optstring potemOPTARG bo neomejeno. optstring je niz priznanih opcijskih črk. Če črku sledi dvopičje, se pričakuje, da bo imel argument, ki ga je mogoče ločiti od njega s presledkom. Če znaka možnosti ni mogoče najti, če je pričakovano,getopts nastavi spremenljivko var do ``? ''getopts se bo potem neusklajenoOPTARG in napišite izhod v standardno napako. Z določitvijo dvopičja kot prvega znaka optstring vse napake bodo prezrte. Ko je dosežena zadnja možnost, se vrne nenevarna vrednost. Če ne obstajajo preostali argumenti,getopts bo nastavljen var na posebno možnost, `` - '' drugače bo nastavljena var do ``? '' Naslednji kodni fragment prikazuje, kako lahko obdelamo argumente za ukaz, ki lahko sprejme možnosti a in b in možnost c, ki zahteva argument. medtem ko getopts abc: fstoritiprimer $ f ina | b) zastava = $ f ;;c) carg = $ OPTARG ;;?) echo $ USAGE; izhod 1 ;;esacKončanoshift `expr $ OPTIND - 1` Ta koda bo sprejela eno od naslednjih enakovrednih: datoteko cmd -acargDatoteka datoteke cmd -a -c argcmd -carg -a datotečna datotekacmd -a -carg - datotečna datoteka hash -vrv ukaz … Lupina ima tabelo razpršitve, ki spominja na lokacije ukazov. Brez kakršnih koli argumentov,hash ukaz natisne vsebino te tabele. Vpisi, ki niso bili pregledani od zadnjegacd ukaz označen z zvezdico; je mogoče, da so ti vnosi neveljavni. Z argumenti,hash ukaz odstrani navedene ukaze iz tabele razpršitve (razen če so funkcije) in jih nato najde. Z -v opcija, hash natisne lokacije ukazov, ko jih najde. The -r opcija povzroči, da ukaz hash izbriše vse vnose v tabeli hash, razen funkcij. jobid delo Natisnite ID procesa procesov v delovnem mestu. Če je delo argument je izpuščen, se uporablja trenutno opravilo. službe V tem ukazu so navedeni vsi postopki v ozadju, ki so otroci trenutnega postopka lupine. pwd Natisnite trenutni imenik. Vgrajeni ukaz se lahko razlikuje od programa z istim imenom, ker ukaz builtin zapomni, kaj je trenutni imenik, in ne vsakič, da ga ponovno izračunate. To naredi hitreje. Če pa se trenutni imenik preimenuje, je vgrajena različicapwd bo še naprej natisnilo staro ime za imenik. preberite-str hitro -r spremenljivka … Potrdilo se natisne, če -str možnost je določena in standardni vhod je terminal. Potem se črta od standardnega vhoda bere. Zadnja linija se črta iz črte in črta se razdeli, kot je opisano v razdelku o razdelitvi besed, zgoraj, in kosi so dodeljeni spremenljivkam po vrstnem redu. Določiti je treba vsaj eno spremenljivko. Če je več kosov od spremenljivk, ostanejo kosi (skupaj z znaki vIFS ki so jih ločili) se dodelijo zadnji spremenljivki. Če je več spremenljivk kot kosov, se preostalim spremenljivkam dodeli ničelni niz. Thepreberite vgrajen bo pokazal uspeh, razen če EOF naleti na vnos, v tem primeru se vrne neuspeh. Privzeto, razen če -r opcija je podana, backslash `` '' deluje kot znak za izhod v sili, kar povzroči dobesedno obravnavo naslednjega znaka. Če poševni črni črti sledi novo linijo, se črta poševnica in nova vrstica črta. le za branje ime … readonly -p Navedena imena so označena kot samo za branje, tako da jih ni mogoče kasneje spremeniti ali odpraviti. Lupina omogoča, da se vrednost spremenljivke nastavi istočasno, ko je označena samo za branje s pisanjem readonly name = vrednost Brez argumentov, ukaz readonly navaja imena vseh spremenljivk samo za branje. Z -str izbrana možnost bo formatirana ustrezno za neinteraktivno uporabo. nastavite { -možnosti | + možnosti | - arg … Thenastavite ukaz izvaja tri različne funkcije. Brez argumentov navede vrednosti vseh spremenljivk lupine. Če so podane možnosti, nastavi določene možnosti zastavice ali jih izbriše, kot je opisano v poglavju Sx Argument List Processing. Tretja uporaba nastavljenega ukaza je, da nastavite vrednosti pozicijskih parametrov ukazne lupine na določene argumente. Če želite spremeniti pozicijske parametre, ne da bi spremenili nobene možnosti, uporabite »` - '' kot prvi argument, ki ga želite nastaviti. Če ni prisotnih nobenih argumentov, ukaz, ki je nastavljen, bo izbrisal vse pozicijske parametre (enakovredne izvedbi »shift $ #«. spremenljiva vrednost Dodeli vrednost spremenljivki. (Na splošno je bolje pisati spremenljivko = vrednost namesto uporabesetvar setvarje namenjen za uporabo v funkcijah, ki dodeljujejo vrednosti spremenljivkam, katerih imena so prenesena kot parametri.) premik n N-krat spremenite pozicijske parametre. Apremik nastavi vrednost $1 na vrednost $2 vrednost $2 na vrednost $3 in tako naprej, zmanjša vrednost $# z eno. Če je n večje od števila pozicijskih parametrov,premik bo izdal sporočilo o napaki in zapustil stanje vrnitve 2. krat Natisnite nabrane uporabniške in sistemske čase za lupino in za procese, ki se izvajajo iz lupine. Stanje vrnitve je 0. past ukrepanje signal … Vzrok lupino za razčlenjevanje in izvedbo dejanja, ko je sprejet katerikoli od navedenih signalov. Signali se določijo s številko signala. Če signal je0 se dejanje izvaja, ko lupina izstopi. ukrepanje je lahko neveljaven ali `` - '', prvi povzroči, da se zanemarjeni določeni signal, slednji pa povzroči privzeto dejanje. Ko lupka odklene podvrsto, ponastavi zajete (vendar ne prezreti) signale na privzeto dejanje. Thepast ukaz ne vpliva na signale, ki so bili ob vpisu v lupino ignorirani. tip ime … Vsako ime tolmačite kot ukaz in natisnite ločljivost iskanja v ukazu. Možne ločljivosti so: ključna beseda lupine, vzdevek, zgrajena lupina, ukaz, vzdevek za sledenje in ni mogoče najti. Za vzdevke je natisnjeno širjenje vzdevka; za ukaze in vzdevke za sledenje je natisnjena celotna pot imenika. ulimit-H -S --tfdscmlpn vrednost Povprašajte ali nastavite trde ali mehke omejitve v procesih ali nastavite nove omejitve.Izbira med trdimi mejami (ki ne smejo kršiti nobenega postopka in ki se ne smejo dvigniti, ko se spusti), in mehko mejo (ki povzroči, da se procesi signalizirajo, vendar niso nujno ubiti in se lahko dvignejo) te oznake: -H nastavite ali poizvedujete o trdnih omejitvah -S nastavite ali sprašujete mehke meje. Če niti -H niti -S je podana mehka meja ali nastavljena obe meji. Če sta oba navedena, zadnja zmaga. Omejitev, ki jo je treba izprašati ali nastaviti, se nato izbere tako, da določi katerokoli od teh oznak: -a prikaži vse trenutne omejitve -t prikaži ali nastavite omejitev časa CPU (v sekundah) -f prikaže ali nastavi omejitev največje datoteke, ki jo je mogoče ustvariti (v 512-bajtnih blokih) -d prikazati ali nastaviti omejitev velikosti podatkovnega segmenta procesa (v kilobajtih) -s prikaži ali nastavite omejitev velikosti sklada procesa (v kilobajtih) -c prikaže ali nastavi omejitev največje velikosti velikosti jedra, ki se lahko proizvede (v 512-bajtnih blokih) -m prikaži ali nastavite omejitev celotnega fizičnega pomnilnika, ki ga lahko uporablja proces (v kilobajtih) -l prikažite ali nastavite omejitev, koliko pomnilnika se lahko zaklene z mlockom (2) (v kilobajtih) -p prikaži ali nastavite omejitev števila procesov, ki jih lahko ta uporabnik hkrati -n prikaži ali nastavite omejitev za datoteke s številkami, ki jih lahko odpre hkrati Če nobeden od teh ni podan, je omejitev velikosti datoteke, ki je prikazana ali nastavljena. Če je vrednost podana, je omejitev nastavljena na to številko; sicer se prikaže trenutna meja. Omejitve poljubnega postopka se lahko prikažejo ali nastavijo s pomočjo pripomočka sysctl (8). umask maska Določite vrednost umask (glej umask (2)) na določeno osmiško vrednost. Če je argument izpuščen, se natisne vrednost umask. neali-a ime Če ime je določena, lupina odstrani ta vzdevek. Če -a je podan, so odstranjeni vsi vzdevki. unset ime … Navedene spremenljivke in funkcije so neusklajene in neeksportirane. Če določeno ime ustreza spremenljivki in funkciji, sta tako spremenljivka kot funkcija neusklajena. počakaj delo Počakajte, da je določeno opravilo končano in vrnite status izhoda zadnjega postopka v opravilu. Če je argument izpuščen, počakajte, da se dokončajo vsa opravila in vrne status izhoda nič. Kdajsh se interaktivno uporablja od terminala, trenutnega ukaza in zgodovine ukazov (glejfc v Sx Vgrajenem) lahko uredite z vi-načinom urejanja ukazne vrstice. Ta način uporablja spodaj opisane ukaze, podobne podmnožici tistih, opisanih na strani vi man. Ukaz 'set' -o vi omogoča urejanje vi-mode in postavite sh v način vstavljanja vi. Če je omogočen vi-način, lahko sh shrani med načinom vstavljanja in ukaznim načinom. Urejevalnik ni opisan v celoti, ampak bo v kasnejšem dokumentu. Podobno je vi: tipkanje AQ ESC vas bo vrnil v ukazni ukazni ukaz VI. Povlecite Aq vrnitev, medtem ko v ukaznem načinu premaknete linijo v lupino. Uporabi človek ukaz ( % človek ), da vidite, kako se na vašem računalniku uporablja ukaz. Citiranje
Backslash
Single Quotes
Double Quotes
Rezervirane besede
Aliases
Ukazi
Preprosti ukazi
Iskanje in izvedba
Iskanje poti
Kompleksni ukazi
Cevovodi
Ukazi v ozadju -
Seznami - splošno govori
Operaterji seznama kratkega stika
Konstrukcija pretoka - če, medtem, za, primer
Združevanje ukazov skupaj
Spremenljivke in parametri
Pozicijski parametri
Posebni parametri
Razširitev Tilde (zamenjava domačega imenika uporabnika)
Razširitev parametrov
Aritmetično razširitev
Razdelitev belega prostora (razdelitev polja)
Razširitev poti (ustvarjanje imena datoteke)
Shell Patterns
Vgrajeni
Urejanje ukazne vrstice













