Pepel - ukaz Linux - ukaz Unix

NAME

sh - ukazni tolmač ( lupina )

POVZETEK

sh [- / + aCefnuvxIimqsVEbc ] [- o longname ] - besede [ cilj ... ]

OPIS

Sh je standardni ukazni tolmač za sistem. Trenutna različica sh se spreminja v skladu s specifikacijami POSIX 1003.2 in 1003.2a 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)). V to lupino se vključijo samo funkcije, ki jih določi POSIX in nekaj Berkeleyjevih razširitev. Pričakujemo skladnost z POSIX do trenutka, ko se sprosti 4.4 BSD. 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 nobenih argumentov in če je standardni vhod lupine priključen na terminal (ali če je nastavljena zastavica - i ) in opcija -c ni prisotna, se lupina šteje 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 je okoljska spremenljivka ENV nastavljena ob vstopu v lupino ali je nastavljena v .profile prijavne lupine, potem lupina bere ukaze iz datoteke, navedene v ENV. Zato mora uporabnik postaviti ukaze, ki jih je treba izvršiti samo pri čas prijave v datoteko .profile in ukaze, ki se izvajajo za vsako lupino znotraj datoteke ENV . Če želite nastaviti spremenljivko ENV v neko datoteko, v svojo .profile v domačem imeniku postavite naslednjo vrstico

ENV = $ HOME / .shinit; izvoz ENV

nadomeščanje ".shinit" poljubnega imena datoteke . Ker se ENV datoteka bere za vsako sklicevanje na lupino, vključno z lupinskimi skripti in neinteraktivnimi lupinami, je naslednja paradigma uporabna za omejitev ukazov v datoteki ENV 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 opcijo- o . Ime nastavka - se nahaja poleg možnosti enojne črke 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).

-Aleksport

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)

-re errexit

Če ni interaktiven, takoj izstopite, če neuspeli ukaz ne uspe. Izhodni status ukaza se izrecno preskusi, če se ukaz uporablja za nadzor elifa med ali dokler 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 glagol

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.

-k tihoprofil

Če so nastavljene možnosti - v ali - x , jih ne uporabljajte pri branju datotek za inicializacijo, to so / etc / profile .profile in datoteko, ki jo določa spremenljivka okolja ENV .

-Ne zanemarjam

Preusmeri EOF iz vhoda, kadar je interaktiven.

-i interaktiven

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 (tj. Z nastavljeno (1)).

-V vi

Omogoči vgrajeni vi (1) urejevalnik ukazne vrstice (onemogoči - E, če je bil nastavljen).

-E emacs

Omogoči vgrajeni urejevalnik ukazne vrstice emacs (1) (onemogoči - V, če je bil nastavljen).

-b obveščam

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:"

<>> | << >> <&> & << - <>

Citiranje

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.

Backslash

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.

Single Quotes

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).

Double Quotes

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

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:

! Ta elif Ta fi Ta, medtem ko je ta primer

drugače Ta za Ta potem Ta {Ta}

Ta je naredil Ta do Ta, če je ta

Njihov pomen je opisan kasneje.

Aliases

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:

lf 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.

Ukazi

Lupina razlaga besede, ki jih bere glede na jezik, katerega specifikacija je zunaj obsega te strani s strani (glej BNF v dokumentu POSIX 1003.2). Č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.

Preprosti ukazi

Če je bil prepoznan preprost ukaz, lupina opravi naslednja dejanja:

  1. 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.
  2. 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.
  3. 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

kjer je redir-op 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 možnost - C.

[n] >> datoteka

Dodajte standardni izhod (ali n) v datoteko.

[n]

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.

Iskanje in izvedba

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 (tj. Če se ne začne z "čarobno številko", katere predstavitev ASCII je "#!", Zato execve (2) vrne Er ENOEXEC, potem) bo lupina program razlagala v podskupina. 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".

Iskanje poti

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:

  1. Imena ukazov, ki vsebujejo poševnico, so preprosto izvedena brez iskanja.
  2. Lupina poizvedbe poišče vsak vnos v PATH . Vrednost spremenljivke PATH mora biti niz 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

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:

  • preprost ukaz
  • cevovod
  • seznam ali seznam sestavin
  • sestavljen ukaz
  • definicija funkcije

Če ni drugače navedeno, je izhodni status ukaza zadnjega preprostega ukaza, ki ga izvede ukaz.

Cevovodi

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 terminator povzroči, da se predhodni AND-OR-seznam (opisan naslednji) izvede zaporedno; & povzroči asinhrono izvedbo prejšnjega seznama IN-OR.

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).

Ukazi v ozadju -

Č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

Seznami - splošno govori

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.

Operaterji seznama kratkega stika

`` && '' 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.

Konstrukcija pretoka - če, medtem, za, primer

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 »` `.

Združevanje ukazov skupaj

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.

Spremenljivke in parametri

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.

Pozicijski parametri

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.

Posebni parametri

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 zgodi v dvomestnem nizu, se razširi na eno polje z vrednostjo vsakega parametra, ločenega s prvim znakom spremenljivke IFS , ali z , če je IFS neusklajen.

@

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:

  1. Razširitev Tilde, razširitev parametrov, zamenjava ukazov, aritmetično razširitev (vsi se pojavljajo hkrati).
  2. Razdelitev polja se izvaja na poljih, ki jih generira korak (1), razen če je spremenljivka IFS nična.
  3. Razširitev poti (razen če je nastavljeno - f velja).
  4. Citat Removal.

Znak $ se uporablja za uvedbo razširitve parametrov, zamenjave ukazov ali aritmetične ocene.

Razširitev Tilde (nadomeščanje domačega imenika uporabnika)

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 spremenljivke HOME (domači imenik trenutnega uporabnika).

Razširitev parametrov

Format za razširitev parametrov je naslednji:

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:

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:

  1. Razširitev poti se ne izvede na rezultatih razširitve.
  2. 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.

Uporabite privzete vrednosti. Če je parameter unset ali null, je razširitev besede zamenjana; v nasprotnem primeru se vrednost parametra nadomesti.

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.

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.

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.

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širitev parametrov v dvojnih narekovajev ne povzroči navedbe naslednjih štirih vrst vzorcev znakov, medtem ko ima navedba znakov v oklepajih ta učinek.

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.

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.

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.

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 subshell in nadomesti zamenjavo ukazov s standardnim izhodom ukaza, pri čemer se na koncu zamenjave odstranijo zaporedja ene ali več s. (Embedded s pred koncem izida se ne odstranijo, vendar pa se med delitvijo polja lahko prevedejo v s, odvisno od vrednosti IFS in citiranja, ki velja.)

Aritmetično razširitev

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.

Razdelitev belega prostora (razdelitev polja)

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 znak IFS kot ločilo in uporabi ločila za razdelitev rezultatov razširitve parametrov in zamenjave ukazov v polja.

Razširitev poti (ustvarjanje imena datoteke)

Razen, če je podana zastavica - f , se po končanem besedilu izvede generiranje imena datoteke. 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).

Shell Patterns

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

Vgrajeni

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 v učinkovitost (npr. Echo 1).

:

Neveljavni ukaz, ki vrne 0 (true) izhodno vrednost.

. mapa

Oboje v navedeni datoteki bere in izvaja lupina.

vzdevek [ ime [ = niz ... ]]

Če je podana ime = niz , lupina definira ime vzdevka s nizom vrednosti. Če je samo ime podano, se natisne vrednost imena vzdevka. Brez argumentov, vzdevek builtin natisne imena in vrednosti vseh definiranih vzdevkov (glej nealie)

bg [ delo] ...

Nadaljujte določena opravila (ali trenutno opravilo, če ni opravil nobenih opravil) v ozadju.

ukaz ukaznega ukaza ...

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 (privzeti $ HOME) Če se v okolju ukaza cd prikaže vnos za CDPATH ali pa je nastavljena spremenljivka lupine CDPATH in ime imenika se ne začne s poševnico, potem bodo iskali po imeniku, ki je naveden v CDPATH za določen imenik. Oblika CDPATH je enaka kot v PATH. V interaktivni lupini, bo ukaz cd natiskal ime imenika, ki ga je dejansko preklopil, če se to razlikuje od imena, ki ga je dal uporabnik. Te so lahko drugačne, ker je bil uporabljen mehanizem CDPATH ali ker je bila prekoračena simbolična povezava.

eval niz ...

Konkretirajte vse argumente s presledki. Nato ponovno analizirajte in izvršite ukaz.

exec [ ukazni argument ... ]

Če ukaz ni izpuščen, se postopek lupine nadomesti z določenim programom (ki mora biti pravi program, ne zgrajena lupina ali funkcija). Preusmeritve ukaza exec so označene kot trajne, tako da se ne končajo, ko se ukaz exec konča.

izhod [ exitstatus ]

Prekinite postopek lupine. Če je podan exitstatus , se uporabi kot izhodni status lupine; sicer se uporabi status izhoda prejšnjega ukaza.

ime izvoza ...

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 izbrano možnostjo -p bo izhod ustrezno oblikovan za neinteraktivno uporabo.

fc [- e urednik ] [ prvi [ zadnji ]]

fc -l [- nr ] [ prva [ zadnja ]]

fc -s [ staro = novo ] [ prvo ]

Fc vgrajeni seznami 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 prek spremenljivke PATH . Vrednost v spremenljivki FCEDIT se uporablja kot privzeto, kadar - e ni podan. Če je FCEDIT neveljaven ali ni nastavljen, se uporabi vrednost spremenljivke EDITOR . Če je EDITOR neveljaven ali ni nastavljen, se kot urejevalnik uporablja ed (1).

-l (ell)

Navedite ukaze in ne kličite urejevalnika na njih. Ukazi so zapisani v zaporedju, ki ga označujejo prvi in ​​zadnji operandi, kar vpliva - r z vsakim ukazom, ki mu sledi ukazna številka.

-n

Zaustavi ukazne številke pri vnosu z -l.

-r

Preverite vrstni red ukazov, ki so našteti (z - l ali urejenimi (z ne - 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 vrednostjo spremenljivke HISTSIZE . Vrednost prve ali zadnje ali oboje je ena od naslednjih:

[+] številka

Pozitivno število, ki predstavlja številko ukaza; ukazne številke lahko prikažete z možnostjo- l .

- š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 - s nizna oblika prvega operanda ne more vsebovati vdelanega 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

Ukaz POSIX getopts , ne da bi ga bilo treba zamenjati z belim laboratorijem, ki ga je izbral 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.

Ukaz getopts zastarela starejšo orodje getopt (1) zaradi obravnavanja argumentov, ki vsebujejo presledke.

Vgrajene getopts se lahko uporabijo za pridobivanje opcij in njihovih argumentov s seznama parametrov. Pri pozivu , getopts postavlja vrednost naslednje možnosti iz niza možnosti na seznamu v spremenljivki lupine, ki jo je določil var, in je indeks v spremenljivki lupine OPTIND. Ko se lupina sklicuje, se OPTIND inicializira na 1. Za vsako možnost, ki zahteva argument, getopts builtin ga bo postavil v spremenljivko lupine OPTARG Če opcija ni dovoljena v optstringu, potem OPTARG ne bo nastavljen.

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, bodo getopts nastavili spremenljivko var na ``? '' Getopts , nato pa bo opustila OPTARG in zapisala izhod na standardno napako. Z določitvijo debelega črevesa kot prvega znaka optstring bodo vse napake ignorirane.

Ko je dosežena zadnja možnost, se vrne nenevarna vrednost. Če ne obstajajo preostali argumenti, bodo getopts nastavili var na posebno možnost, »-« »drugače bo nastavljeno na» ``? ''

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: f
storiti
primer $ f in
a | b) zastava = $ f ;;
c) carg = $ OPTARG ;;
\?) echo $ USAGE; izhod 1 ;;
esac
Končano
shift `expr $ OPTIND - 1`

Ta koda bo sprejela eno od naslednjih enakovrednih:

datoteko cmd -acarg
Datoteka datoteke cmd -a -c arg
cmd -carg -a datotečna datoteka
cmd -a -carg - datotečna datoteka

ukaz hash -rv ...

Lupina ima tabelo razpršitve, ki spominja na lokacije ukazov. Brez kakršnih koli argumentov, ukaz hash natisne vsebino te tabele. Vpisi, ki niso bili pregledani od zadnjega ukaza cd, so označeni z zvezdico; je mogoče, da so ti vnosi neveljavni.

Z argumenti ukaz hash odstrani navedene ukaze iz razpredelnice razpršitve (razen če so funkcije) in jih nato najde. Z opcijo -v razprši odtise lokacij ukazov, ko jih najde. Možnost -r povzroči ukaz hash, da izbriše vse vnose v tabeli razpršitve, razen funkcij.

delovno mesto [ delo ]

Natisnite ID procesa procesov v delovnem mestu. Če je argument za opravilo opuščen, se uporabi 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, bo vgrajena različica pwd še naprej natisnila staro ime za imenik.

preberite [- p prompt ] [- r ] spremenljivka ...

Potrdi se natisne, če je podana opcija -p 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, se preostali kosi (skupaj z znaki v IFS, ki so jih ločili) dodelili zadnji spremenljivki. Če je več spremenljivk kot kosov, se preostalim spremenljivkam dodeli ničelni niz. Vgrajeni bralec bo pokazal uspeh, razen če EOF naleti na vnos, v tem primeru se vrne neuspeh.

Privzeto, razen če je podana opcija -r, poševnica "` \ "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.

ponovljeno 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 izbrano možnostjo -p bo izhod ustrezno oblikovan za neinteraktivno uporabo.

nastavite [{- možnosti | + možnosti | - argument ... ]

Komandni 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 da bi uporabila setvar setvar , namenjena uporabi v funkcijah, ki dodeljujejo vrednosti spremenljivkam, katerih imena so prenesena kot parametri.)

premik [ n ]

N-krat spremenite pozicijske parametre. Premik nastavi vrednost $ 1 na vrednost $ 2, vrednost $ 2, na vrednost $ 3 in tako naprej, zmanjša vrednost $ # za eno. Če je n večje od števila pozicijskih parametrov, bo premik 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.

signal za pasti ...

Vzrok lupino za razčlenjevanje in izvedbo dejanja, ko je sprejet katerikoli od navedenih signalov. Signali se določijo s številko signala. Če je signal 0, se dejanje izvrši, ko lupina zapusti. dejanje je lahko neveljavno ali "` - "", ki povzroči, da se navedeni signal ne upošteva, in sledi vzrok za privzeto dejanje. Ko lupka odklene podvrsto , ponastavi zajete (vendar ne prezreti) signale na privzeto dejanje. Ukaz za past ne vpliva na signale, ki so bili ob vstopu v lupino prezreti.

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 ] [- a-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 ni podano nobeno - H ali - S , se prikaže mehka meja ali oba omejitev. Č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 [ mask ]

Določite vrednost umask (glej umask (2)) na določeno osmiško vrednost. Če je argument izpuščen, se natisne vrednost umask.

unalias [- a ] [ ime ]

Če je ime podano, lupina odstrani ta vzdevek. Če je - a podano, so odstranjeni vsi vzdevki.

neveljavno 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č.

Urejanje ukazne vrstice

Ko se sh interaktivno uporablja od terminala, lahko trenutni ukaz in zgodovina ukazov (glej fc v Sx Builtins) uredite z uporabo vi-mode 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.

Pomembno: Uporabite ukaz man ( % man ), da vidite, kako se na vašem računalniku uporablja ukaz.