Pepel - Linux Command - Unix naredba

IME

sh - zapovjedni prevoditelj ( shell )

SINOPSIS

sh [- / + aCefnuvxIimqsVEbc ] [- o longname ] - riječi [ cilj ... ]

OPIS

Sh je standardni prevoditelj za sustav za sustav. Trenutna verzija sh je u postupku promjene kako bi bila u skladu s POSIX 1003.2 i 1003.2a specifikacijama za ljusku. Ova verzija ima mnoge značajke koje ga u nekim pogledima čine sličnima Kornovoj ljusci, ali nije klon ljuske Korn (vidi ksh (1)). Samo ove značajke koje je odredio POSIX i nekoliko Berkeley ekstenzija ugrađuju se u ovu ljusku. Očekujemo da će POSIX usklađenost do trenutka kada se BSD otpusti. Ova stranica za muškarce nije namijenjena za udžbenik ili kompletnu specifikaciju ljuske.

Pregled

Shema je naredba koja čita linije iz datoteke ili terminala, interpretira ih i općenito izvršava druge naredbe. To je program koji se izvodi kada se korisnik prijavljuje u sustav (iako korisnik može odabrati drugu ljusku s naredbom chsh (1)). Shema provodi jezik koji ima konstrukcije kontrole protoka, makro objekt koji pruža različite značajke uz pohranu podataka, zajedno s ugrađenim povijesnim i linijskim mogućnostima za uređivanje. Ona uključuje mnoge značajke za pomoć interaktivnoj upotrebi i ima prednost da je interpretativni jezik uobičajen za interaktivnu i neinteraktivnu upotrebu (skriptne ljuske). To jest, naredbe se mogu upisivati ​​izravno na pokrenutu ljusku ili se mogu staviti u datoteku i datoteku može izvršiti izravno od ljuske.

prizivanje

Ako nema argumenata i ako je standardni ulaz ljuske spojen na terminal (ili ako je postavljena oznaka - i ), a opcija - c nije prisutna, ljuska se smatra interaktivnom ljuskom . Interaktivna ljuska obično traži prije svake naredbe i drugačije obrađuje programske i naredbe pogrešaka (kao što je opisano u nastavku). Prilikom prvog pokretanja, ljuska pregledava argument 0, a ako počinje s crticom `- ', školjka se također smatra kopčom za prijavu. To obično automatski obavlja sustav kada se korisnik prijavi. Shema za prijavu najprije čita naredbe iz / etc / profile i .profile datoteke ako postoje. Ako je varijabla okruženja ENV postavljena prilikom ulaska u ljusku ili je postavljena u .profil ljuske za prijavu, ljuska sljedeći čita naredbe iz datoteke koju imenuje ENV. Stoga, korisnik treba stavljati naredbe koje treba izvršiti samo na vrijeme prijave u .profile datoteci i naredbe koje se izvršavaju za svaku ljusku unutar ENV datoteke. Da biste postavili ENV varijablu na neku datoteku, stavite sljedeći redak u svoj .profil vašeg kućnog imenika

ENV = $ HOME / .shinit; izvoz ENV

zamjenjujući `` .shinit '' bilo koji naziv datoteke koji želite. Budući da se ENV datoteka čitaju za svaku pozivnicu ljuske, uključujući skriptne ljuske i neinteraktivne ljuske, sljedeća je paradigma korisna za ograničavanje naredbi u ENV datoteci u interaktivne pozive. Stavite naredbe unutar `` case '' i `` esac '' dolje (ove naredbe su opisane kasnije):

slučaj $ - u * i *)

# naredbe samo za interaktivnu upotrebu

...

ESAC

Ako su navedeni argumenti naredbenog retka osim opcija, shema predstavlja prvi argument kao naziv datoteke iz koje treba pročitati naredbe (shema skripte), a ostali argumenti postavljeni su kao položajni parametri ljuske ($ 1 , $ 2 itd.). Inače, ljuska čita naredbe sa svog standardnog ulaza.

Obrada popisa argumenta

Sve pojedinačne opcije slova imaju odgovarajuće ime koje se može koristiti kao argument za opciju o . Set- o ime se nalazi uz opciju pojedinačnog slova u opisu u nastavku. Određivanje crtice `` - '' uključi opciju, a pomoću plus `` + '' onemogućuje opciju. Sljedeće opcije mogu se postaviti iz naredbenog retka ili s ugrađenim setom (1) (opisano kasnije).

-a allexport

Izvezi sve varijable dodijeljene. (UKLJUČENO za 4.4alfa)

c

Čitajte naredbe iz naredbenog retka. Nijedna naredba neće se pročitati iz standardnog ulaza.

-C noclobber

Ne prebrisati postojeće datoteke s ``> '' (UNIMPLEMENTED za 4.4alpha)

-i errexit

Ako nije interaktivan, odmah izađite ako nijedna neispitana naredba ne uspije. Izlazni status naredbe smatra se eksplicitno testiranim ako se naredba koristi za kontrolu ako je elif dok je ili dok je naredba operandi lijeve ruke operatera `` && '' ili `` || ''.

-f noglob

Onemogućavanje proširenja naziva staze .

-n noexec

Ako nisu interaktivne, pročitajte naredbe, ali ih ne izvršite. To je korisno za provjeru sintakse skripti ljuske.

-u imenica

Napišite poruku standardnoj pogrešci prilikom pokušaja proširenja varijable koja nije postavljena i ako je ljuska ne interaktivna, odmah izađite. (UKLJUČENO za 4.4alfa)

- glupo

Shema piše svoj unos na standardnu ​​pogrešku kako se čita. Korisno za uklanjanje pogrešaka.

-x xtrace

Napišite svaku naredbu na standardnu ​​pogrešku (prethodi "+" prije nego što se izvrši. Korisno za ispravljanje pogrešaka.

-q quietprofile

Ako su postavke - v ili - x postavljene, nemojte ih primjenjivati ​​pri čitanju datoteka za inicijalizaciju, a to su: / etc / profile .profile i datoteka navedena u varijabli okruženja ENV .

- Ne zanemarim

Zanemari EOF-ove od ulaza kada su interaktivne.

interaktivan

Snažite ljusku da se ponaša interaktivno.

-m monitor

Uključite kontrolu zadataka (postavite automatski kada su interaktivne).

-s stdin

Čitanje naredbi iz standardnog ulaza (automatski se postavlja ako nema argumenata datoteka). Ova opcija nema učinka kada se postavi nakon što je školjka već počela prikazivati ​​(tj. S setom (1)).

-V vi

Omogućite ugrađeni vi (1) uređivač naredbene linije (onemogućuje - E ako je postavljen).

-E emacs

Omogućite ugrađeni editor za naredbeni redak emacs (1) (onemogućuje - V ako je postavljen).

-b obavijestiti

Omogući asinkronu obavijest o dovršenju pozadinske radnje. (UKLJUČENO za 4.4alfa)

Leksička struktura

Shell čita ulaze u smislu linija iz datoteke i razbija ih riječima u praznom prostoru (praznine i kartice), te na određenim sekvencama znakova koji su posebni za ljusku pod nazivom "operatori". Postoje dvije vrste operatora: kontrolnih operatora i operatera preusmjeravanja (njihovo značenje se raspravlja kasnije). Slijedi popis operatora:

"Kontrolni operatori:"

& && (); ;; | ||

"Operater preusmjeravanja:"

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

citirajući

Citanje se koristi za uklanjanje posebnog značenja određenih znakova ili riječi u ljusci, kao što su operatori, razmak, ili ključne riječi. Postoje tri vrste citiranja: podudarne pojedinačne citate, podudarne dvostruke navodnike i obrnute obrasce.

Obrnuta kosa crta

Povratna traka zadržava doslovno značenje sljedećeg znaka, s iznimkom Aq newline. Pozadina koja prelazi Aq novu liniju tretira se kao nastavak linije.

Pojedinačni citati

Prilikom dodavanja znakova u pojedinačnim citatima čuva se doslovno značenje svih znakova (osim jednokratnih navoda, što je nemoguće staviti pojedinačne citate u pojedinačni niz).

Dvostruki navodi

Zatvaranje znakova unutar dvostrukih citata čuva doslovno značenje svih znakova, osim: dollarign ($) backquote (`) i backslash (\) Povratni unos unutar dvostrukih citata povijesno je čudan i služi samo sljedećim znakovima:

$ `\

Inače ostaje doslovno.

Rezervirane riječi

Rezervirane riječi su riječi koje imaju posebno značenje za ljusku i priznaju se na početku linije i nakon kontrolnog operatora. Sljedeće su rezervirane riječi:

! Ta elif Ta fi Ta dok je Ta slučaj

drugo Ta za Ta zatim Ta {Ta}

učinio Ta do Ta ako Ta esac

Njihovo značenje raspravlja se kasnije.

nadimci

Alias ​​je naziv i odgovarajuća vrijednost postavljena pomoću alias (1) builtin naredbe. Kad god se rezervirana riječ može dogoditi (vidi gore), a nakon provjere rezerviranih riječi, ljuska provjerava riječ da vidi odgovara li pseudonim. Ako se to dogodi, zamjenjuje je u ulaznom toku s njegovom vrijednošću. Na primjer, ako se radi o pseudonima pod nazivom `` lf '' s vrijednošću `` ls -F '' onda unos:

Ako se pojavi

postat će

ls -F foobar

Aliase pružaju prikladan način za naivne korisnike da kreiraju skraćene oznake za naredbe bez da moraju naučiti kako stvoriti funkcije pomoću argumenata. Također se mogu koristiti za izradu leksički nejasnog koda. Ta je upotreba obeshrabrena.

naredbe

Shema interpretira riječi koje čita u skladu s jezikom, čija je specifikacija izvan opsega ove man stranice (pogledajte BNF u POSIX 1003.2 dokumentu). U osnovi, međutim, čitanje linije i ako prva riječ linije (ili nakon kontrolnog operatora) nije rezervirana riječ, tada je ljuska prepoznala jednostavnu naredbu. Inače, prepoznata je složena naredba ili neki drugi posebni konstrukt.

Jednostavne naredbe

Ako je prepoznata jednostavna naredba, ljuska izvodi sljedeće radnje:

  1. Vodeće riječi oblika `` name = value '' su uklonjene i dodijeljene okolišu jednostavne naredbe. Operatori preusmjeravanja i njihovi argumenti (kako je opisano u nastavku) oduzimaju se i spremaju za obradu.
  2. Preostale riječi proširene su kako je opisano u odjeljku pod nazivom "Proširenja", a prva preostala riječ smatra se naredbom i naredba se nalazi. Preostale riječi smatraju se argumentima naredbe. Ako nije došlo do naziva naredbe, tada se zadaci varijabli `` name = value '' prepoznati u točki 1 utječu na trenutnu ljusku.
  3. Preusmjeravanja se izvode kao što je opisano u sljedećem odjeljku.

preusmjeravanja

Preusmjeravanja se koriste za promjenu gdje naredba čita svoj unos ili šalje njegov output. Općenito, preusmjeravanja otvaraju, zatvaraju ili dupliciraju postojeću referencu na datoteku. Opći format koji se koristi za preusmjeravanje je:

[n] redir-op datoteka

gdje je redir-op jedan od prethodno spomenutih operatera preusmjeravanja. Slijedi popis mogućih preusmjeravanja. Bq n je izborni broj, kao u '3' (ne `Bq 3 'koji se odnosi na deskriptor datoteka.

[n]> datoteku

Preusmjerite standardni izlaz (ili n) na datoteku.

[n]> | datoteka

Isto, ali nadjačati - C opciju.

[n] >> datoteku

Dodajte standardni izlaz (ili n) u datoteku.

[n]

Preusmjeri standardni unos (ili n) iz datoteke.

[n1] <& n2

Dvostruki standardni unos (ili n1) iz deskriptora n2.

[n] <&

Zatvorite standardni ulaz (ili n).

[n1]> & n2

Dvostruki standardni izlaz (ili n1) od n2.

[n]> &

Zatvorite standardni izlaz (ili n).

[n] <> datoteku

Otvorite datoteku za čitanje i pisanje na standardni ulaz (ili n).

Sljedeća preusmjeravanja često se naziva "ovdje-dokument"

[n] << delimiter

ovdje-doc-tekst ...

graničnik

Svi tekstovi na uzastopnim redovima do graničnika se spremaju i stavljaju na raspolaganje naredbi na standardnom ulazu, ili deskriptor n ako je naveden. Ako se citira graničnik naveden na početnoj liniji, ovdje se dokument obrađuje doslovno, inače se tekst podvrgava ekspanziji parametara, zamjenom naredbe i aritmetičkom ekspanzijom (kao što je opisano u odjeljku o proširenju). 'Ako je operator `` << -' 'umjesto `` <<' 'onda se vodeće kartice u ovdje-doc-tekstu oduzimaju.

Pretraživanje i izvršavanje

Postoje tri vrste naredbi: funkcije ljuske, ugrađene naredbe i normalni programi - i naredba se traži (po imenu) u tom redoslijedu. Svaki od njih izvršava se na drugačiji način.

Kada se izvršava funkcija ljuske, svi parametri položaja ljuske (osim $ 0 koji ostaju nepromijenjeni) postavljeni su na argumente funkcije ljuske. Varijable koje su eksplicitno smještene u okruženje naredbe (postavljanjem zadataka prije njihova naziva) lokalno su postavljene na funkciju i postavljene su na zadane vrijednosti. Zatim se izvršava naredba navedena u definiciji funkcije. Parametri pozicije se vraćaju na njihove izvorne vrijednosti kada naredba završi. Sve se to događa unutar trenutne ljuske.

Shellovi ugrađeni su interno izvedeni na ljusku bez mriješćenja novog procesa.

U suprotnom, ako naziv naredbe ne odgovara funkciji ili ugrađenoj, naredba se pretražuje kao uobičajeni program u datotečnom sustavu (kao što je opisano u sljedećem odjeljku). Kada se izvodi normalan program, ljuska pokreće program, dajući argumente i okoliš programu. Ako program nije normalna izvršna datoteka (tj. Ako ne počinje s "čarobnim brojem" čija je ASCII reprezentacija "#!", Pa izvršiti (2) vraća Er ENEEXEC tada) ljuska će interpretirati program u subshell. Dječja ljuska će se ponovno pokrenuti u ovom slučaju, tako da će učinak biti kao da se nova ljuska poziva da obrađuje ad-hoc skriptu ljuske, osim što će se lokacija raspršenih naredbi koje se nalaze u matičnoj ljusci biti zapamćena dijete.

Imajte na umu da se prethodne verzije ovog dokumenta i samog izvornog koda pogrešno i sporadično odnose na skriptu ljuske bez čarobnog broja kao "postupak skiciranja".

Traženje putova

Kada pronađete naredbu, ljuska prvo izgleda da vidi ima li funkcija ljuske tog imena. Potom traži ugrađenu naredbu tim imenom. Ako se ne pronađe ugrađena naredba, dogodit će se jedna od dvije stvari:

  1. Nazivi naredbi koji sadrže oštrinu jednostavno se izvršavaju bez obavljanja bilo kakvih pretraživanja.
  2. Shema traži svaki unos u PATH zauzvrat za naredbu. Vrijednost varijable PATH trebala bi biti niz unosa odvojenih dvotočkom. Svaki unos se sastoji od naziva direktorija. Trenutačni imenik može implicitno biti označen praznim nazivom direktorija ili izričito jednom vremenskom razdoblju.

Status izlaza naredbi

Svaka naredba ima status izlaza koji može utjecati na ponašanje drugih naredbi ljuske. Paradigma je ta da naredba izlazi s nula za normalno ili uspjeh, a ne nulu za neuspjeh, pogrešku ili pogrešnu indikaciju. Stranica čovjeka za svaku naredbu trebala bi naznačiti različite izlazne kodove i što oni znače. Osim toga, ugrađene naredbe vraćaju izlazne kodove, kao i izvršena funkcija ljuske.

Kompleksne naredbe

Kompleksne naredbe su kombinacije jednostavnih naredbi s kontrolnim operatorima ili rezerviranim riječima, zajedno stvarajući veću složenu naredbu. Općenitije, naredba je jedna od sljedećih:

  • jednostavna naredba
  • cjevovod
  • popis ili popis spojeva
  • compound naredba
  • definicija funkcije

Ako nije drugačije navedeno, izlazni status naredbe je posljednja jednostavna naredba koju izvršava naredba.

cjevovodi

Cjevovod je redoslijed jedne ili više naredbi odijeljenih od strane kontrolnog operatora. Standardni izlaz svih osim zadnjeg naredbe povezan je s standardnim unosom sljedeće naredbe. Standardni izlaz zadnje naredbe nasljeđuje se iz ljuske, kao i obično.

Format za cjevovod je:

[!] naredba1 [| command2 ...]

Standardni izlaz naredbe1 povezan je s standardnim unosom naredbe2. Smatra se da je standardni ulaz, standardni izlaz ili oba naredba dodijeljen cjevovodom prije bilo kakvog preusmjeravanja navedenog od strane operatera preusmjeravanja koji su dio naredbe.

Ako cjevovod nije u pozadini (raspravljen kasnije), ljuska čeka da sve naredbe završi.

Ako je rezervirana riječ! ne prethodi cjevovodu, izlazni status je izlazni status posljednje naredbe navedene u cjevovodima. U suprotnom, izlazni status je logičan NIJE od izlaznog stanja posljednje naredbe. To jest, ako zadnja naredba vraća nulu, izlazni status je 1; ako zadnja naredba vraća veću od nule, izlazni status je nula.

Budući da se cijevni dodjeljivanje standardnog unosa ili standardnog izlaza ili oboje odvija prije preusmjeravanja, može se modificirati preusmjeravanjem. Na primjer:

$ command1 2> & 1 | command2

šalje i standardni izlaz i standardnu ​​pogrešku naredbe1 na standardni unos naredbe2.

A; ili terminator uzrokuje izvršavanje prethodnog AND-OR popisa (opisano sljedeće); & & uzrokuje nesinkroni izvršenje prethodnog AND-OR popisa.

Imajte na umu da, za razliku od nekih drugih školjaka, svaki proces u cjevovodu je dijete pozivajuće ljuske (osim ako je ugrađena školjka, u tom slučaju izvršava u trenutnoj ljusci - ali je on uklonjen bilo koji efekt koji ima na okoliš).

Naredbe pozadine -

Ako naredba prekine upravljački operater apsolutno (&), shema izvršava naredbu asinkrono - to jest, ljuska ne čeka da naredba završi prije izvršenja sljedeće naredbe.

Format za pokretanje naredbe u pozadini je:

command1 & [command2 & ...]

Ako ljuska nije interaktivna, standardni unos asinkronog naredbe postavljen je na / dev / null

Popisi - Općenito govoreći

Popis je redoslijed nulte ili više naredbi odvojene novim, polukvadima ili širim znakovima, a po želji se može prekinuti s jednim od ta tri znaka. Naredbe na popisu izvršavaju se redoslijedom pisanja. Ako naredba slijedi znak i zaporku, započeti naredbu i odmah prijeći na sljedeću naredbu; inače čeka naredbu da se ukine prije nastavka na sljedeći.

Operatori popisa kratkog spoja

`` && '' i `` || '' su operatori AND-OR liste. `&& '' izvršava prvu naredbu, a zatim izvršava drugu naredbu iff izlazni status prve naredbe je nula. `` || '' je sličan, ali izvršava drugu naredbu iff izlazni status prve naredbe je nonzero. `` && '' i `` || '' imaju isti prioritet.

Konstrukcije kontrole protoka - ako, dok, za slučaj

Sintaksa naredbe ako je

ako je popis
zatim popišite
[elif popis
zatim popis] ...
[drugi popis]
fi

Sintaksa dok je naredba

dok je popis
učiniti popis
učinio

Dva popisa se izvode opetovano, dok je izlazni status prvog popisa nula. Sve dok naredba nije slična, ali ima riječ dok se ne nalazi na mjestu, a to uzrokuje da se ponavlja dok izlazni status prvog popisa nije nula.

Sintaksa naredbe za je

za varijable u riječi ...
učiniti popis
učinio

Riječi se proširuju, a zatim se popis vrši više puta s promjenom postavljenom na svaku riječ zauzvrat. učiniti i učinjeno može biti zamijenjeno s `` {'' i ``} ''

Sintaksa prekida i nastavka naredbe jest

prekid [broj]
nastavak [num]

Break prekida najbrži broj za ili za vrijeme petlje. Nastavak se nastavlja sljedećom iteracijom najdublje petlje. One se primjenjuju kao ugrađene naredbe.

Sintaksa naredbe slučaja je

slučajna riječ
obrazac) popis ;;
...
ESAC

Uzorak može biti jedan ili više uzoraka (pogledajte Shell obrasci opisani kasnije), odvojeni znakovima `` ''.

Grupiranje naredbi zajedno

Naredbe se mogu grupirati pisanjem

(popis)

ili

{list;

Prvi od njih izvršava naredbe u podskupu. Ugrađene naredbe grupirane u (popis) neće utjecati na trenutnu ljusku. Drugi oblik ne kruti drugu ljusku tako da je nešto učinkovitiji. Skupiranje naredbi na ovaj način omogućuje preusmjeravanje njihovog izlaza kao da su jedan program:

{printf hello; printf svijetu \ n ";}> pozdrav

funkcije

Sintaksa definicije funkcije je

ime () naredba

Definicija funkcije je izvršna izjava; kada se izvrši, instalira funkciju naziva i vraća izlazni status nula. Naredba je obično popis koji se nalazi između `` {'' i ``} ''

Varijable mogu biti deklarirane lokalno na funkciju pomoću lokalne naredbe. Ovo bi se trebalo pojaviti kao prva izjava funkcije, a sintaksa je

lokalni [varijabla | -] ...

Lokalno se provodi kao ugrađena naredba.

Kada varijabla bude lokalna, nasljeđuje početnu vrijednost i izvozi i čita samo zastavice iz istog naziva varijable u obližnjem opsegu, ako postoji. Inače, varijabla se početno ne postavi. Shema koristi dinamičku opseg, tako da ako napravite varijablu x lokalno na funkciju f, koja tada naziva funkciju g, reference na varijablu x napravljene unutar g odnose se na varijablu x deklariranu unutar f, a ne na globalnu varijablu x ,

Jedini poseban parametar koji se može napraviti lokalno je `` - '' Izrada `` - '' lokalnih bilo koje opcije ljuske koje se mijenjaju preko naredbe unutar funkcije za vraćanje na izvorne vrijednosti kada se funkcija vraća.

Sintaksa povratne naredbe jest

povratak [exitstatus

Prekidi trenutno izvršnu funkciju. Povratak se provodi kao ugrađena naredba.

Varijable i parametri

Shema održava skup parametara. Parametar označen nazivom zove se varijabla. Pri pokretanju ljuska okreće sve varijable okoline u varijable ljuske. Nove varijable mogu se postaviti pomoću obrasca

name = vrijednost

Varijable koje je postavio korisnik moraju imati naziv koji se sastoji samo od abeceda, numeričkih brojeva i podcrtava - prvi od njih ne smije biti numerički. Parametar se također može označiti brojem ili posebnim znakom kao što je objašnjeno u nastavku.

Položajni parametri

Pozicionirani parametar je parametar označen brojem (n> 0). Shema ih početno postavlja na vrijednosti svojih argumenata naredbenog retka koji slijede naziv skripte ljuske. Set (1) builtin također se može koristiti za njihov postavljanje ili resetiranje.

Posebni parametri

Poseban parametar je parametar označen jednim od sljedećih posebnih znakova. Vrijednost parametra je navedena pored njenog znaka.

*

Proširuje se na pozicijske parametre, počevši od jednog. Kada se ekspanzija pojavljuje unutar dvostrukog navoja , proširuje se na jedno polje s vrijednošću svakog parametra odijeljenog prvim znakom IFS varijable ili s ako je IFS neizrazito.

@

Proširuje se na pozicijske parametre, počevši od jednog. Kada se ekspanzija odvija unutar dvostrukih citata, svaki parametar položaja proširuje se kao zaseban argument. Ako nema pozicijskih parametara, širenje @ generira nulte argumente, čak i ako je dvostruko citiran. Što zapravo znači da je $ 1 `` abc '' i $ 2 `` def ghi '' onda Qq $ @ proširuje se na dva argumenta:

abc def ghi

#

Proširuje se na broj pozicijskih parametara.

?

Proširuje se do izlaznog statusa najnovijeg plinovoda.

- (crtica)

Proširuje se na trenutne opcijske oznake (jednake slovne opcije nazivaju se u nizu) kao što je navedeno u pozivu, skupom ugrađenom naredbom ili implicitno od strane ljuske.

$

Proširuje se na ID procesa pozvane ljuske. Subshell zadržava istu vrijednost od $ kao njegov roditelj.

!

Proširuje se na ID procesa najnovije pozadinske naredbe izvršene iz trenutne ljuske. Za cjevovod, ID procesa je onaj zadnje naredbe u cjevovodima.

0 (nula.)

Proširuje se na ime skripte ljuske ili ljuske.

Proširenja riječi

Ova klauzula opisuje razne ekspanzije koje se izvode na riječima. Nisu svi ekspanzije izvedene na svakoj riječi, kao što je objašnjeno kasnije.

Proširenja tilda, proširenja parametara, zamjena naredbi, aritmetička ekspanzija i uklanjanje uzoraka koji se pojavljuju unutar jedne riječi proširuju se na jedno polje. To je samo proširenje terena ili proširenje staza koja može stvoriti više polja iz jedne riječi. Jedina iznimka ovom pravilu je širenje posebnog parametra @ unutar dvostrukih citata, kao što je gore opisano.

Poredak proširenja riječi je:

  1. Proširenje tilde, proširenje parametara, zamjena naredbe, aritmetička ekspanzija (sve se to događa istodobno).
  2. Polje se odvaja na poljima generiranim korakom (1), osim ako IFS varijabla nije nula.
  3. Proširenje putnog imena (osim ako je postavka na snazi).
  4. Uklanjanje kvota.

$ Znak služi za uvođenje ekspanzije parametara, zamjene naredbe ili aritmetičke procjene.

Tilde proširenje (zamjenjujući kućni imenik korisnika)

Riječ koja započinje s neočekivanim znakom tilda (~) podložna je ekspanziji tilde. Svi znakovi do oštrice (/) ili kraja riječi tretiraju se kao korisničko ime i zamjenjuju se korisnikovim kućnim imenikom. Ako korisničko ime nedostaje (kao u ~ / foobar), tilda se zamjenjuje vrijednostom HOME varijable (kućnog imenika trenutnog korisnika).

Proširenje parametara

Format za širenje parametara je sljedeći:

gdje se izraz sastoji od svih znakova sve dok se podudaranje ``} '' Bilo koji ``} 'izbjegne unatrag ili unutar citiranog niza, a znakovi u ugrađenim aritmetičkim proširenjima, zamjenskim zamjenama i varijabilnim ekspanzivima se ne ispituju pri određivanju podudaranje ``} ''

Najjednostavniji oblik za proširenje parametara je:

Zamijenjena je vrijednost parametra ako postoji.

Naziv parametra ili simbol mogu biti zatvoreni u braces, koji su opcionalni, osim za pozicijske parametre s više od jedne znamenke ili kada parametar slijedi znak koji bi se mogao tumačiti kao dio naziva. Ako se proširenje parametra odvija unutar dvostrukih navodnika:

  1. Ekspanzija imena polja ne provodi se na rezultatima proširenja.
  2. Teren se ne provodi na rezultatima ekspanzije, osim @.

Osim toga, proširenje parametara može se izmijeniti pomoću jednog od sljedećih formata.

Upotrijebi zadane vrijednosti. Ako je parametar poništen ili null, proširenje riječi je zamijenjeno; inače, vrijednost parametra je zamijenjena.

Dodijeli zadane vrijednosti. Ako je parametar poništen ili null, širenje riječi dodjeljuje se parametru. U svim slučajevima, konačna vrijednost parametra je zamijenjena. Na taj način se mogu dodijeliti samo varijable, a ne pozicionirani parametri ili posebni parametri.

Označite pogrešku ako je Null ili Unset. Ako je parametar poništen ili null, proširenje riječi (ili poruka koja označava da je isključena ako je riječ izostavljena) napisana je u standardnu ​​pogrešku, a ljuska izlazi s statusom izlaznih podataka. Inače, vrijednost parametra je zamijenjena. Interaktivna ljuska ne mora izaći.

Upotrijebite alternativnu vrijednost. Ako je parametar poništen ili null, zamijenjen je null; inače, proširenje riječi je zamijenjeno.

U prethodno prikazanim ekspanzijama parametara, upotreba dvotočke u formatu rezultira testom za parametar koji nije postavljen ili null; Izostavljanje debelog crijeva rezultira testom za parametar koji je isključen.

String Length. Duljina u znakovima vrijednosti parametra.

Sljedeće četiri vrste ekspanzije parametara omogućuju obradu podgregata. U svakom slučaju, uzorak za podudaranje uzoraka (vidi Shell obrasce), a ne regularni izraz, koristi se za procjenu uzoraka. Ako je parametar * ili @, rezultat ekspanzije nije definiran. Ograničavanje cijelog ekspanzijskog stringa parametra u dvostrukim navodnicima ne uzrokuje citiranje sljedećih četiri varijanta znakova uzorka, dok se citiranje znakova unutar braces ima ovaj efekt.

Ukloni najmanji uzorak sufiksa. Riječ se proširuje kako bi se stvorio uzorak. Ekspanzija parametra zatim rezultira parametrom, pri čemu je najmanji dio sufiksa koji se podudara s obrascem obrisan.

Ukloni najveći uzorak sufiksa. Riječ se proširuje kako bi se stvorio uzorak. Ekspanzija parametra tada rezultira parametrom, pri čemu je najveći dio sufiksa koji se podudara s obrascem izbrisanim.

Ukloni najmanji obrazac prefiksa. Riječ se proširuje kako bi se stvorio uzorak. Ekspanzija parametra zatim rezultira parametrom, pri čemu je najmanji dio prefiksa koji se podudara s obrascem obrisan.

Ukloni najveći obrazac prefiksa. Riječ se proširuje kako bi se stvorio uzorak. Ekspanzija parametra dovodi do parametra, pri čemu je najveći dio prefiksa koji se podudara s obrascem obrisan.

Zamjena naredbe

Zamjena naredbe dopušta da se izlaz naredbe zamijeni umjesto samog naredbenog imena. Zamjena naredbe se događa kada je naredba zatvorena na sljedeći način:

$ (Naredba)

ili Po `` backquoted '' verzija Pc:

`command`

Shell proširuje zamjenu naredbe izvršavanjem naredbe u okruženju podgrupe i zamjenom zamjene naredbe sa standardnim izlazom naredbe, uklanjanjem sekvenci jednog ili više na kraju zamjene. (Embedded prije kraja izlaza ne uklanjaju se, međutim, tijekom razdvajanja polja, oni se mogu prevesti u , ovisno o vrijednosti IFS-a i citiranju koji je na snazi.)

Aritmetička ekspanzija

Aritmetička ekspanzija pruža mehanizam za procjenu aritmetičke ekspresije i zamjene njegove vrijednosti. Format aritmetičke ekspanzije je sljedeći:

$ ((Izraz))

Izraz se tretira kao da je riječ o dvostrukim citatima, osim što se dvostruki citat unutar izraza ne tretira posebno. Shema širi sve znakove u izrazu za proširenje parametara, zamjenu naredbi i uklanjanje citata.

Zatim, školjka to tretira kao aritmetički izraz i zamjenjuje vrijednost izraza.

Bijelo prostorno razdvajanje (razdvajanje polja)

Nakon proširenja parametara, zamjene naredbe i aritmetičkog širenja ljuska skenira rezultate proširenja i zamjena koje se nisu pojavile u dvostrukim navodima za razdvajanje polja i može rezultirati više polja.

Školjka tretira svaki lik IFS-a kao graničar i koristi graničnike za podjelu rezultata ekspanzije parametara i zamjene naredbi u polja.

Proširenje naziva naziva datoteke (generiranje naziva datoteka)

Ako nije podešena oznaka - f , generiranje naziva datoteke izvodi se nakon što je riječ podijeljena. Svaka se riječ promatra kao niz uzoraka, odvojene kravama. Proces ekspanzije zamjenjuje riječ s imenima svih postojećih datoteka čija se imena mogu formirati zamjenom svakog uzorka nizom koji odgovara navedenom uzorku. Postoje dva ograničenja: prvo, uzorak se ne može podudarati s nizom koji sadrži sloj, a drugi, uzorak se ne može podudarati s nizom koji počinje s razdobljem, osim ako prvi znak uzorka nije razdoblje. Sljedeći odjeljak opisuje obrasce koji se koriste za proširenje putnog imena i naredbu slučaju (1).

Shell obrasci

Uzorak se sastoji od uobičajenih znakova, koji se podudaraju s njima i meta-znakova. Metapodaci su ``! '' `` * '' ``? '' I `` ['' Ovi znakovi gube svoja posebna značenja ako su citirani. Kada se izvršava naredba ili varijabilna supstitucija, a dolarni znak ili natrag citati nisu dvostruko citirani, vrijednost varijable ili izlaz naredbe se skenira za te znakove i oni se pretvaraju u meta znakova.

Zvjezdica (`* * ') odgovara bilo kojem nizu znakova. Pitanje odgovara bilo kojem pojedinom znaku. Lijevi zagrada (`` ['') uvodi klasu znakova. Kraj klase znakova označen je s (``] '') ako ``] '' nedostaje, a `` ['' odgovara `` ['' umjesto uvođenja klase znakova. Klasa znakova odgovara bilo kojem od znakova između kvadratnih zagrada. Niz znakova može se navesti pomoću znaka minus. Klasa karaktera može se dopuniti izradom uskličnika prvim znakom klase znakova.

Da biste uključili ``] '' u klase znakova, učinite to prvim znakom navedenim (nakon ``! '' Ako postoji). Da biste uključili znak minus, navedite ga na popisu prvog ili zadnjeg znaka

Builtins

Ovaj odjeljak navodi ugrađene naredbe koje su ugrađene jer trebaju obavljati neke operacije koje se ne mogu izvesti zasebnim postupkom. Pored toga, postoji nekoliko drugih naredbi koje mogu biti ugrađene u učinkovitost (npr. Echo 1).

:

Null naredba koja vraća vrijednost 0 (true) exit.

, datoteka

Naredbe u navedenoj datoteci čita i izvodi ljuska.

alias [ naziv [ = niz ... ]]

Ako je navedeno string name = name , shema definira naziv pseudonima s nizom vrijednosti Ako je samo naziv naveden, vrijednost imena alias se ispisuje. Bez argumenata, alias builtin ispisuje imena i vrijednosti svih definiranih pseudonima (vidi unalias)

bg [ posao] ...

Nastavite s navedenim zadacima (ili trenutni posao ako niste dobili zadatke) u pozadini.

naredba naredbe arg ...

Izvršite navedenu ugrađenu naredbu. (To je korisno kada imate funkciju ljuske s istim nazivom kao ugrađena naredba.)

cd [ katalog ]

Prebacite se na navedeni direktorij (zadani $ HOME) Ako se u okruženju naredbe cd pojavljuje unos za CDPATH ili je postavljena varijabla ljuske CDPATH i naziv direktorija ne započinje slojem , pretraživat će se imenici navedeni u CDPATH za navedeni direktorij. Format CDPATH je isti kao i kod PATH U interaktivnoj ljusci, naredba cd ispisuje naziv direktorija koji je zapravo prebacio ako se to razlikuje od imena koje je korisnik dao. To može biti različito bilo zbog korištenja CDPATH mehanizma ili zbog križanja simboličke veze.

evalni niz ...

Spojite sve argumente sa razmakom. Zatim ponovno analizirati i izvršiti naredbu.

exec [ naredba arg ... ]

Ako naredba ne bude izostavljena, proces ljuske zamjenjuje se navedenim programom (koji mora biti pravi program, a ne ugrađen ili ugrađen). Svaka preusmjeravanja izvršne naredbe označena su kao trajna, tako da se ne poništavaju kada izvršna naredba završi.

izlaz [ exitstatus ]

Prekinite postupak školjke. Ako se daje izlazni status, koristi se kao izlazni status ljuske; inače se koristi izlazni status prethodne naredbe.

izvoz ime ...

izvoz -p

Navedena imena se izvoze tako da će se pojaviti u okruženju naknadnih naredbi. Jedini način za un-export varijable je da ga poništite. Shema omogućava postavljanje vrijednosti varijable u isto vrijeme kada se izvozi pisanjem

izvoz ime = vrijednost

Bez argumenata, izvozna naredba navodi imena svih izvezenih varijabli. S opcijom - p navedeno je izlaz prikladno oblikovan za neinteraktivnu uporabu.

fc [- urednik ] [ prvi [ posljednji ]]

fc -l [- nr ] [ prva [ posljednja ]]

fc -s [ old = new ] [ prvo ]

Fc izgrađen liste, ili uređivanja i ponovno izvršava, naredbe prethodno unesene u interaktivnu ljusku.

urednik

Koristite urednik kojeg zove urednik za uređivanje naredbi. String editor je naziv naredbe, podložan pretraživanju putem PATH varijable. Vrijednost u varijabli FCEDIT se koristi kao zadana kada - e nije navedena. Ako je FCEDIT null ili unset, koristi se vrijednost varijable EDITOR . Ako je EDITOR null ili unset, ed (1) se koristi kao urednik.

-l (ell)

Navedite naredbe, a ne pozivajte ih na uređivač. Naredbe su napisane u slijedu koji je označen prvim i zadnjim operandom, jer je pogođen - r sa svakom naredbom koja prethodi naredbom broj.

-n

Potisnite brojeve naredbi kada unosite sa -l.

-r

Preokrenite redoslijed navedenih naredbi (sa - l ili editiranim (s ni - l nor - s)

-s

Ponovno izvršite naredbu bez pozivanja urednika.

prvi

posljednji

Odaberite naredbe za popis ili uređivanje. Broj prethodnih naredbi kojima se može pristupiti određuje se vrijednost HISTSIZE varijable . Vrijednost prve ili zadnje ili oboje su jedno od sljedećeg:

[+] Broj

Pozitivan broj koji predstavlja naredbeni broj; brojevi naredbi mogu se prikazati pomoću opcije - l .

-broj

Negativni decimalni broj koji predstavlja naredbu koja je prethodno izvršena broj naredbi. Primjerice, -1 je odmah prethodna naredba.

niz

Niz koji označava zadnju naredbu koja počinje tim nizom. Ako stari = novi operand nije također naveden s - string oblik prvog operanda ne može sadržavati ugrađeni jednak znak.

Sljedeće varijable okruženja utječu na izvršenje fc:

FCEDIT

Naziv urednika koji treba koristiti.

HISTSIZE

Broj prethodnih naredbi koje su dostupne.

fg [ posao ]

Pomaknite određeni posao ili trenutačni posao u prvi plan.

getopts optstring var

POSIX getopts naredba, ne treba se zbuniti s Bell Labs- dobivenim getopt (1).

Prvi argument mora biti niz slova, od kojih svaki po izboru može slijediti dvotočka, što znači da opcija zahtijeva argument. Navedena varijabla postavljena je na analizu opcije.

Naredba getopts obustavlja starije getopt (1) uslužni program zbog rukovanja argumentima koji sadrže razmak.

Getopts builtin mogu se koristiti za dobivanje opcija i njihovih argumenata s popisa parametara. Kada se poziva, getopts stavlja vrijednost sljedeće opcije iz opcijskog niza u popisu u varijabli ljuske koju je odredio var i njegov indeks u varijabli ljuske OPTIND Kada se poziva ljuska, OPTIND se inicijalizira na 1. Za svaku opciju koja zahtijeva argument, getopts builtin će ga staviti u varijablu ljuske OPTARG Ako opcija nije dopuštena u optstringu, OPTARG će biti isključen.

optstring je niz prepoznatljivih opcijskih slova. Ako slovo slijedi dvotočka, očekuje se da će opcija imati argument koji može biti ili neće biti odvojen od bijelog prostora. Ako znak opcije nije pronađen gdje se očekuje, getopts će postaviti varijablu var na ``? '' Getopts će zatim isključiti OPTARG i pisati izlaz na standardnu ​​pogrešku. Označavanjem debelog crijeva kao prvim znakom optstringa zanemaruju se sve pogreške.

Neto vrijednost se vraća kada se postigne zadnja opcija. Ako nema preostalih argumenata, getopts će postaviti var na posebnu opciju, `` - '' inače će postaviti var na ``? ''

Sljedeći fragment koda pokazuje kako se može obraditi argumente za naredbu koja može preuzeti opcije [a] i [b] i opciju [c] koja zahtijeva argument.

dok getopts abc: f
čini
slučaj $ f u
a | b) zastavica = $ f ;;
c) carg = $ OPTARG ;;
\?) echo $ USAGE; izlaz 1;
ESAC
učinio
pomak `expr $ OPTIND - 1`

Ovaj kôd prihvaća sve od sljedećeg kao ekvivalent:

cmd-varalica datoteke
cmd -a -c arg datoteka
cmd -carg -a datoteka
cmd -a -carg - datoteka

hash -rv naredba ...

Školjka održava hash stol koji pamti mjesta naredbi. Bez ikakvih argumenata, hash naredba ispisuje sadržaj ove tablice. Unosi koji nisu pregledani od posljednje naredbe za cd su označeni zvjezdicom; moguće je da ti unosi nisu važeći.

Uz argumente, hash naredba uklanja navedene naredbe iz hash tablice (osim ako su funkcije), a zatim ih smješta. Pomoću opcije - v , hash ispisuje mjesta naredbi kako ih pronalazi. Opcija - r uzrokuje hash naredbu za brisanje svih unosa u hash tablici osim za funkcije.

posao [ posao ]

Ispišite procese procesa u tom poslu. Ako je argument radova izostavljen, koristi se trenutačni posao.

poslovi

Ova naredba navodi sve pozadinske procese koji su djeca trenutnog procesa ljuske.

pwd

Ispišite trenutni direktorij. Ugrađena naredba može se razlikovati od programa istog naziva jer ugrađena naredba pamti ono što je trenutni direktorij umjesto da ga rekomplira svaki put. To ga čini bržim. Međutim, ako je trenutni direktorij preimenovan, ugrađena verzija pwd nastavit će ispisivati ​​stari naziv za direktorij.

pročitajte [- p prompt ] [- r ] varijablu ...

Odziv se ispisuje ako je navedena opcija - p i standardni ulaz je terminal. Zatim se redak čita iz standardnog ulaza. Novi redak koji se zavija briše se iz linije i linija se razdijeli kako je opisano u odjeljku o podjeli riječi iznad, a dijelovi se dodjeljuju varijablama redoslijedom. Morate navesti najmanje jednu varijablu. Ako postoji više komada od varijabli, preostali dijelovi (zajedno s likovima u IFS koji ih razdvajaju) dodjeljuju se zadnjoj varijabli. Ako postoji više varijabli od komada, preostale varijable dodjeljuju se null niz. Pročitati ugrađeni će pokazati uspjeh, osim ako EOF se susreće na ulaz, u kojem slučaju neuspjeh je vraćen.

Prema zadanim postavkama, osim ako je navedena opcija - r , obrnuta traka `` \ '' djeluje kao znak za bijeg, uzrokujući doslovno obrađivanje sljedećeg znaka. Ako se obrnutim redoslijedom slijedi novi redak, obrisani i novi redovi bit će izbrisani.

ime samo za čitanje ...

readonly -p

Navedena imena označena su kao samo za čitanje, tako da se ne mogu naknadno mijenjati ili poništiti. Shema omogućava postavljanje vrijednosti varijable u isto vrijeme kada je označeno samo za pisanje

readonly name = vrijednost

Bez argumenata, naredba za čitanje navodi imena svih varijabli samo za čitanje. S opcijom - p navedeno je izlaz prikladno oblikovan za neinteraktivnu uporabu.

postavite [{- opcije | + mogućnosti | - arg ... ]

Postavljena naredba obavlja tri različite funkcije.

Bez argumenata navodi se vrijednosti svih varijabli ljuske.

Ako se daju opcije, postavlja navedene opcijske oznake ili ih briše kako je opisano u odjeljku koji se zove SX obrada popisa argumenta.

Treća upotreba naredbe je da postavite vrijednosti položajnih parametara ljuske na specificirane argine. Da biste promijenili parametre pozicije bez promjene opcija, upotrijebite `` - '' kao prvi argument za postavljanje. Ako nema argumenata, naredba poništit će sve pozicijske parametre (ekvivalent za izvršenje `` shift $ #). ''

varijabilna vrijednost

Dodjeljuje vrijednost varijabli. (Općenito, bolje je napisati varijable = vrijednost umjesto korištenja setvar setvar namijenjen je korištenju u funkcijama koje dodjeljuju vrijednosti varijablama čija se imena prenose kao parametri.)

pomak [ n ]

Pomaknite pozicijske parametre n puta. Pomak određuje vrijednost od $ 1 do vrijednosti $ 2 u vrijednosti od $ 2 do vrijednosti $ 3 i tako dalje, smanjujući vrijednost od $ # po jedan. Ako je n veći od broja položajnih parametara, pomak će izdati poruku o pogrešci i izaći s statusom povratka 2.

puta

Ispišite vrijeme akumuliranih korisnika i sustava za ljusku i za procese koji se izvode iz ljuske. Status povratka je 0.

zamka akcijskog signala ...

Uzrok ljuske za analiziranje i izvršavanje akcije kada se primi bilo koji od navedenih signala. Signali su određeni brojem signala. Ako je signal 0 , akcija se izvodi nakon izlaska ljuske. akcija može biti nula ili `` - '' prvo što uzrokuje da se navedeni signal zanemari i potonji uzrokuje da se zadana radnja poduzme. Kada se ljuska odvoji od podgrupa , resetira zapečaćene (ali ne zanemarene) signale na zadanu radnju. Naredba trap nema utjecaja na signale koji su zanemareni pri ulasku u ljusku.

upišite [ ime ... ]

Tumačite svako ime kao naredbu i ispišite rezoluciju naredbenog pretraživanja. Moguće rezolucije su: ključna riječ, alias, ugrađena shema , naredba, praćeni alias i nije pronađena. Za pseudonima ispisuje se proširenje pseudonima; za naredbe i prave pseudonime ispisuje se potpuni put naredbe.

ulimit [ -H-S ] [- a -tfdscmlpn [ vrijednost ]]

Upitajte ili postavite tvrdo ili meko ograničenje na procese ili postavite nove granice. Izbor između tvrdog ograničenja (koji ne smije prekršiti nikakav postupak i koji se ne može podići nakon što ga spusti) i mekana granica (koja uzrokuje signalizaciju procesa, ali ne nužno ubijena i koja se može podići) ove zastave:

H

postaviti ili pitati o tvrdim granicama

-S

postaviti ili pitati o mekim granicama. Ako nije navedeno ni - H nor - S , prikazuje se mekana granica ili su postavljene obje granice. Ako su oba navedena, posljednja dobiva.

Granica koja se interpretira ili postavlja se, dakle, odabire navođenjem bilo koje od ovih zastavica:

-a

prikaži sve trenutne granice

-t

prikazati ili postaviti ograničenje na vrijeme procesora (u sekundama)

f

prikazati ili postaviti ograničenje najveće datoteke koja se može stvoriti (u blokovima od 512 byte)

-D

prikaz ili postavljanje ograničenja veličine segmenta podataka u procesu (u kilobajtima)

-s

prikazati ili postaviti ograničenje veličine stupa procesa (u kilobajtima)

c

prikazati ili postaviti ograničenje na najveću veličinu dumpova koji se može proizvesti (u blokovima od 512 byte)

-m

prikazati ili postaviti ograničenje ukupne fizičke memorije koja se može koristiti procesom (u kilobajtima)

-l

pokazati ili postaviti ograničenje koliko memorije proces može zaključati s mlock (2) (u kilobajtima )

-p

prikazati ili postaviti ograničenje broja procesa koje taj korisnik može imati istodobno

-n

prikazati ili postaviti ograničenje broja datoteka koje proces može biti otvoren odjednom

Ako nijedna od navedenih nije navedena, to je ograničenje veličine datoteke koja se prikazuje ili postavlja. Ako je navedena vrijednost, granica je postavljena na taj broj; inače će se prikazati trenutna granica.

Ograničenja proizvoljnog procesa mogu se prikazati ili postaviti pomoću uslužnog programa sysctl (8).

umask [ mask ]

Postavite vrijednost umask (vidi umask (2)) na navedenu oktalnu vrijednost. Ako je argument izostavljen, umask vrijednost se ispisuje.

unalias [- a ] [ ime ]

Ako je navedeno ime , ljuska uklanja taj pseudonim. Ako je navedeno - svi se aliasi uklanjaju.

unset ime ...

Navedene varijable i funkcije nisu postavljene i neizvedene. Ako zadano ime odgovara i varijabli i funkciji, oba varijabla i funkcija su neizravni.

pričekajte [ posao ]

Pričekajte da se navedeni zadatak dovrši i vratiti izlazni status posljednjeg postupka u tom zadatku. Ako je argument izostavljen, pričekajte da sva radna mjesta budu dovršena, a povratni status izlaza je nula.

Uređivanje naredbene linije

Kad se sh koristi interaktivno od terminala, trenutna naredba i povijest naredbi (pogledajte fc u Sx Builtins) mogu se uređivati ​​pomoću vi-mode naredbenog retka uređivanja. Ovaj način rada koristi naredbe opisane u nastavku, slične podskupu onih opisanih na stranici vi. Naredba `set '-o vi omogućuje vi-mod uređivanje i stavlja sh u vi insert način. S omogućenim vi-načinom, sh se može prebacivati ​​između načina umetanja i naredbe. Urednik ovdje nije u cijelosti opisan, već će biti u kasnijem dokumentu. To je slično vi: upisivanjem Aq ESC će vas baciti u naredbu VI naredbu način. Udaranje Aq povratak u komandnom načinu će proći liniju do ljuske.

Važno: Upotrijebite naredbu čovjek ( % man ) kako biste vidjeli kako se naredba koristi na vašem računalu.