Tuhka - Linux Command - Unix Command

NIMI

sh - komentotulkki ( shell )

SYNOPSIS

sh [- / + aCefnuvxIimqsVEbc ] [- o longname ] - sanat [ kohde ... ]

KUVAUS

Sh on järjestelmän vakiokomentotulkki. Sh: n nykyistä versiota muutetaan parhaillaan kuoren POSIX 1003.2- ja 1003.2a-määritysten mukaisiksi. Tässä versiossa on monia ominaisuuksia, jotka tekevät siitä samanlaisen näkökulman Korn-kuoriin, mutta se ei ole Korn-kuori-klooni (ks. Ksh (1)). Vain POSIXin ja muutamien Berkeley-laajennusten määrittämät ominaisuudet sisällytetään tähän kuoreen. Odotamme POSIX- yhteensopivuutta aika ajoin 4.4 BSD vapautetaan. Tätä man sivua ei ole tarkoitettu opetusohjelmaksi tai kuoren täydelliseksi määrittelyksi.

Yleiskatsaus

Kuori on komento, joka lukee rivit joko tiedostosta tai päätteestä, tulkitsee ne ja yleensä suorittaa muita komentoja. Ohjelma on käynnissä, kun käyttäjä kirjautuu järjestelmään (vaikka käyttäjä voi valita toisen shellin chsh (1) -komennolla). Kuori toteuttaa kielen, jolla on virtauksen ohjausrakenteet, makroasema, joka tarjoaa erilaisia ​​ominaisuuksia tiedon tallennuksen lisäksi yhdessä sisäänrakennetun historian ja rivinmuokkaustoimintojen kanssa. Se sisältää monia ominaisuuksia interaktiivisen käytön tukemiseksi ja sillä on se etu, että tulkitseva kieli on yhteinen sekä vuorovaikutteiseen että ei-interaktiiviseen käyttöön (shell-komentosarjat). Eli komennot voidaan kirjoittaa suoraan käynnissä olevaan kuoriin tai voidaan laittaa tiedostoon ja tiedosto voidaan suorittaa suoraan kuorella.

rukous

Jos mitään argumentteja ei ole ja jos kuoren vakiotulo kytketään päätelaitteeseen (tai jos - i- lippu on asetettu), ja c- vaihtoehtoa ei ole, kuori katsotaan vuorovaikutteiseksi kuoreksi . Interaktiivinen kuori opastaa yleensä ennen jokaista komentoa ja käsittelee ohjelmointi- ja komento- virheet eri tavalla (kuten jäljempänä kuvataan). Kun ensin käynnistetään, kuori tarkastelee argumenttia 0, ja jos se alkaa dashilla `- ', kuori katsotaan myös kirjautumiskuvaksi. Järjestelmä tekee sen automaattisesti automaattisesti, kun käyttäjä kirjautuu sisään sisään. Sisäänkirjautumiskuori lukee ensin tiedostot / etc / profile ja .profile, jos ne ovat olemassa. Jos ENV-ympäristömuuttuja asetetaan kuoren sisääntuloon tai asetetaan sisäänkirjautumiskuoren .profile-tiedostoon, kuori lukee seuraavaksi komennot ENV: ssä mainitusta tiedostosta. Siksi käyttäjän on annettava komentoja, jotka on suoritettava vain .profile-tiedoston sisäänkirjautumisaika ja komennot, jotka suoritetaan jokaiselle ENV- tiedoston sisällä olevalle kuvalle . Jos haluat asettaa ENV- muuttujan johonkin tiedostoon, aseta seuraava rivi kotihakemiston .profile-tiedostoon

ENV = $ HOME / .shinit; vienti ENV

korvaamalla `` .shinit '' haluamallasi tiedostonimellä . Koska ENV- tiedosto luetaan jokaiselle kuoren kutsulle, mukaanlukien komentosarjat ja ei-interaktiiviset kuoret, seuraava paradigma on hyödyllinen rajoittamaan komentoja ENV- tiedostossa vuorovaikutteisiin kutsuihin. Paikka komentojen alla `` case '' ja `` esac '' alla (nämä komennot on kuvattu myöhemmin):

case $ - in * i *)

# komennot vain vuorovaikutteiseen käyttöön

...

ESAC

Jos vaihtoehtojen lisäksi on määritetty komentorivin argumentteja, kuori käsittelee ensimmäisen argumentin tiedoston nimenä, josta komentojen lukeminen (shell-komentosarja) ja jäljelle jäävät argumentit asetetaan kuoren sijaintiparametreiksi ($ 1 , $ 2 jne.). Muussa tapauksessa kuori lukee komennot sen vakiotulosta.

Argumenttilistan käsittely

Kaikilla yksittäisen kirjeen vaihtoehdoilla on vastaava nimi, jota voidaan käyttää argumenttina optiolle - o . Set- o- nimi on annettu alla olevan kuvan yhden kirjaimen vieressä. Viivan määrittäminen `` - '' kytkee vaihtoehdon päälle, kun käytät plus `` + '' pois käytöstä. Seuraavat vaihtoehdot voidaan asettaa komentoriviltä tai integroidulla asetuksella (1) (kuvattu myöhemmin).

- allexport

Vie kaikki määritetyt muuttujat. (POISTETTU 4,4 alfa)

-C

Lue käskyjä komentoriviltä. Vakiotulosta ei näy komentoja.

-C noklobber

Älä korvaa olemassa olevia tiedostoja ``> '' (UNIMPLEMENTED 4.4alpha)

-e errexit

Jos et ole vuorovaikutteinen, poistu välittömästi, jos jokin testattu komento epäonnistuu. Komennon poistumistilaan katsotaan nimenomaan testattu, jos komentoa käytetään hallitsemaan jos elif, kunnes tai kunnes komento on operaattorin `` && '' tai `` operaattorin vasemmanpuoleinen operandi.

-f noglob

Poista polkuympäristön laajennus.

-n noexec

Jos et ole vuorovaikutteinen, lue komentoja, mutta älä suorita niitä. Tämä on hyödyllinen komentosarjoja koskevan syntaksin tarkistamiseksi.

-u sanasto

Kirjoita viestin vakiovirheeseen yritettäessä laajentaa muuttujaa, jota ei ole määritetty, ja jos kuori ei ole vuorovaikutteinen, poistu välittömästi. (POISTETTU 4,4 alfa)

-v verbose

Kuori kirjoittaa panoksensa vakiovirheeseen, kun se luetaan. Hyödyllisiä virheenkorjaukseen.

-x xtrace

Kirjoita jokainen komento normaaliin virheeseen (jota edeltää `+ 'ennen sen suorittamista. Hyödyllinen virheenkorjausta varten.

-q quietprofile

Jos - v tai - x -asetukset on asetettu, älä aseta niitä alustustiedostoja luettaessa, koska ne ovat / etc / profile .profile ja ENV- ympäristömuuttujan määrittämä tiedosto.

- Minä jätän huomiotta

Ohita EOF: t tulosta interaktiivisesti.

-i interaktiivinen

Pakota kuori käyttäytymään interaktiivisesti.

-monitori

Ota työn hallinta käyttöön (aseta automaattisesti vuorovaikutteisesti).

-s stdin

Lue komentoja vakiotulosta (asetetaan automaattisesti, jos tiedostojen argumentteja ei ole). Tällä asetuksella ei ole vaikutusta, kun se on asetettu sen jälkeen, kun kuori on jo käynnistynyt (eli asetuksella (1)).

-V vi

Ota sisäänrakennettu vi (1) komentorivin editori käyttöön (poista - E, jos se on asetettu).

-E emacs

Ota käyttöön sisäänrakennettu emacs (1) komentorivin editori (poista - V jos se on asetettu).

-b ilmoittaa

Ota asynkroninen ilmoitus taustatyön päättymisestä. (POISTETTU 4,4 alfa)

Leksikaalinen rakenne

Kuori lukee syötteen riveittäin tiedostosta ja jakaa sen sanoiksi välilyönnillä (aihiot ja välilehdet) ja tietyissä merkkijonoissa, jotka ovat erikoisia kuorelle, jota kutsutaan "operaattoreiksi". Kahdentyyppisiä operaattoreita ovat: valvontaoperaattorit ja uudelleenohjausoperaattorit (niiden merkitys käsitellään myöhemmin). Seuraavassa on luettelo toimijoista:

"Ohjausoperaattorit:"

& && (); ;; | ||

"Uudelleenohjausoperaattori:"

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

Lainaaminen

Lainanottoa käytetään poistamaan tiettyjen merkkien tai sanojen erityinen merkitys kuoreen, kuten operaattoreihin, välilyöntiin tai avainsanoihin. Lainauksissa on kolme tyyppiä: sovitut yksittäiset lainausmerkit, sovitut kaksinkertaiset lainausmerkit ja vastakkainasettelu.

Kenoviiva

Vastakkaisella kielellä säilyy seuraavan merkin kirjaimellinen merkitys, lukuun ottamatta Aq newlinea. Aq-uudisviivaa edeltävä vastakkainasku käsitellään rivin jatkona.

Yksittäiset lainaukset

Yksittäisten lainausmerkkien sisältämät hahmot säilyttävät kaikkien merkkien kirjaimellisen merkityksen (paitsi yksittäisiä lainauksia, minkä vuoksi on mahdotonta laatia yksittäisiä lainauksia yhdellä lainattuun merkkijonoon).

Double Quotes

Kaksinkertaisten lainausmerkkien sisältämien hahmojen sulkeminen säilyttää kaikkien merkkien kirjaimellisen merkityksen, paitsi dollarin ($) backquote (`) ja backslash (\) Kaksinkertaisen lainausmerkin sisäpuolella olevan rivinvaihdon on historiallisesti kummallinen ja siinä käytetään vain seuraavia merkkejä:

$ `\

Muuten se pysyy kirjaimellisesti.

Varatut sanat

Varatut sanat ovat sanoja, joilla on erityinen merkitys shellille ja jotka tunnistetaan rivin alussa ja valvontatoiminnan jälkeen. Seuraavat ovat varatut sanat:

! Ta elif ta Ta Ta ta Ta-tapauksessa

muutoin Ta ta Ta Ta {Ta}

Ta Ta Ta Ta Ta Ta Taac

Niiden merkitystä käsitellään myöhemmin.

aliakset

Alias ​​on nimi ja vastaava arvo, joka on määritetty alias (1) builtin komennolla. Aina kun varattua sanaa voi esiintyä (ks. Edellä) ja varatun sanan tarkistuksen jälkeen kuori tarkistaa sanan, jos se vastaa aliaksia. Jos se on, se korvaa sen syötevirralla sen arvolla. Esimerkiksi jos on olemassa alias nimeltä `` lf '', jonka arvo on `` ls -F '', niin panos:

Jos lohko

olisi tullut

ls -F foobar

Aliases antaa kätevä tapa naiiviille käyttäjille luoda komentojonotarkkuuksia ilman, että tarvitsee oppia luomaan funktioita argumenteilla. Niitä voidaan myös käyttää luomaan loivasti epäselvää koodia. Tätä käyttöä ei suositella.

komennot

Kuori tulkitsee sanat, jotka se lukee kielen mukaan, jonka määrittely ei kuulu tämän man sivun piiriin (katso BNF POSIX 1003.2 -asiakirjassa). Pohjimmiltaan kuitenkin linja luetaan ja jos rivin ensimmäinen sana (tai valvontatoiminnon jälkeen) ei ole varattu sana, niin shell on tunnistanut yksinkertaisen komennon. Muussa tapauksessa monimutkainen komento tai jokin muu erikoisrakenne on ehkä tunnustettu.

Yksinkertaiset komennot

Jos yksinkertainen komento on tunnistettu, kuori suorittaa seuraavat toimenpiteet:

  1. Johtavat sanat lomakkeesta `` name = arvo '' poistetaan käytöstä ja asetetaan yksinkertaisen komennon ympäristöön. Uudelleenohjausoperaattorit ja niiden argumentit (kuten jäljempänä kuvataan) poistetaan käytöstä ja tallennetaan käsittelyä varten.
  2. Jäljellä olevat sanat laajennetaan kappaleessa `` Laajennukset '' kuvatulla tavalla ja ensimmäinen jäljellä oleva sana katsotaan käskynimeksi ja komento sijaitsee. Jäljellä olevat sanat ovat komennon argumentteja. Jos komentojen nimeä ei saatu, niin kohdassa 1 tunnistetut `` name = value '' -muuttujakohdat vaikuttavat nykyiseen kuoriin.
  3. Uudelleenohjaukset suoritetaan seuraavassa osassa kuvatulla tavalla.

uudelleenohjaus

Uudelleenohjauksia käytetään muuttamaan, jos komento lukee tulonsa tai lähettää sen tuloksen. Yleensä uudelleenohjaukset avaavat, sulkevat tai kopioivat olemassa olevan viittauksen tiedostoon. Uudelleenohjaukseen käytetty yleinen muoto on:

[n] redir-op -tiedosto

jossa redir-op on yksi aikaisemmin mainituista uudelleenohjausoperaattoreista. Seuraavassa on luettelo mahdollisista uudelleenohjauksista. Bq n on valinnainen numero, kuten `3 '(ei` Bq 3', joka viittaa tiedostojen kuvaajiin.

[n]> -tiedosto

Suorita normaalin lähdön (tai n) tiedostoon.

[n]> | tiedosto

Sama, mutta ohita - C- vaihtoehto.

[n] >> -tiedosto

Lisää standardilähtö (tai n) tiedostoon.

[n]

Redirect standardin syöttö (tai n) tiedostosta.

[n1] <& n2

Kopioi vakiotulo (tai n1) tiedostojen kuvaajasta n2.

[n] <&

Sulje vakio tulo (tai n).

[n1]> & n2

Kopioi standardituotos (tai n1) n2: sta.

[n]> &

Sulje vakio lähtö (tai n).

[n] <> -tiedosto

Avaa tiedoston lukemiseen ja kirjoittamiseen vakiotuloon (tai n).

Seuraava uudelleenohjaus kutsutaan usein nimellä `here-document ''

[n] << erotin

täällä-doc-tekstiä ...

erotinmerkki

Kaikki teksti peräkkäisillä linjoilla rajojen poikki asti tallennetaan pois ja annetaan komennon käyttöön vakiotuloon tai tiedoston kuvaajaan n, jos se on määritetty. Jos aloitusviivalla määritelty erotin on mainittu, tässä-doc-tekstissä käsitellään kirjaimellisesti, muuten tekstiä kohdistetaan parametrien laajentamiseen, komennon korvaamiseen ja aritmeettiseen laajentamiseen (kuten on kuvattu luvussa "Laajennukset"). 'Jos operaattori on `` << -' 'sijasta `` <<' ', niin etusivulla olevat välilehdet täällä-doc-tekstissä poistetaan.

Haku ja toteutus

Komentoja on kolme: komentotulkin toiminnot, sisäänrakennetut komennot ja tavalliset ohjelmat - ja komentoa haetaan (nimen mukaan) tässä järjestyksessä. Ne toteutetaan eri tavoin.

Kun shell-toiminto suoritetaan, kaikki shell-sijainnin parametrit (paitsi $ 0, joka pysyy ennallaan) asetetaan shell-toiminnon argumentteille. Muuttujat, jotka on nimenomaisesti sijoitettu komennon ympäristöön (asettamalla tehtävät niille ennen funktion nimeä), tehdään paikallisesti funktioon ja asetetaan annettuihin arvoihin. Tällöin funktiomäärityksessä annettu komento suoritetaan. Asemointiparametrit palautetaan alkuperäisiin arvoihinsa komennon päätyttyä. Kaikki tämä tapahtuu nykyisessä kuoressa.

Shellin sisäänrakennukset suoritetaan sisäisesti kuoreen, eikä uutta prosessia kutu.

Muuten, jos komennon nimi ei vastaa funktiota tai sisäänrakennettua, komentoa haetaan tavallisena ohjelmana tiedostojärjestelmässä (kuten seuraavassa osassa kuvataan). Kun normaali ohjelma suoritetaan, kuori ajaa ohjelmaa ja ohjataan argumentit ja ympäristö ohjelmaan. Jos ohjelma ei ole normaali suoritustiedosto (eli jos se ei aloita "maaginen numerolla", jonka ASCII- esitys on "#!", Niin execve (2) palauttaa Er ENEEXECin sitten) kuori tulkitsee ohjelman subshell. Lapsikuori käynnistyy uudelleen tässä tapauksessa niin, että vaikutus on aivan kuin uusi kuori olisi kutsuttu käsittelemään ad-hoc-komentojonoa, paitsi että emolevyssä sijaitsevien hajautettujen komentojen sijainti muistetaan lapsi.

Huomaa, että tämän asiakirjan aikaisemmat versiot ja lähdekoodi itsessään harhaanjohtavat ja satunnaisesti viittaavat kuorikirjoitukseen ilman taika-numeroa "kuoriproseduurina".

Polkuhaku

Kun komento on löydetty, kuori näyttää ensin, onko sillä kyseinen nimi kuoriominaisuus. Sitten se etsii sisäänrakennettua komentoa kyseisellä nimellä. Jos sisäänrakennettua komentoa ei löydy, toinen kahdesta asiasta tapahtuu:

  1. Komentoja, jotka sisältävät rei'ityksen, suoritetaan yksinkertaisesti suorittamatta hakuja.
  2. Kuori hakee jokaisen merkinnän PATH : ssa puolestaan ​​komennon puolesta. PATH- muuttujan arvon pitäisi olla kaksoispisteillä erotettu sarja. Jokainen merkintä koostuu hakemiston nimestä. Nykyinen hakemisto voidaan merkitä epäsuorasti tyhjällä hakemiston nimellä tai nimenomaisesti yhdellä jaksolla.

Komento Lopeta tila

Jokaisella komennolla on poistumistila, joka voi vaikuttaa muiden komentojen komentojonojen toimintaan. Paradigma on se, että komento poistuu nollalla normaalia tai menestyksellistä, ja ei-nollaa vian, virheen tai väärän osoitteen vuoksi. Jokaisen komennon man-sivun tulee näyttää eri poistumiskoodit ja mitä he tarkoittavat. Lisäksi sisäänrakennetut komennot palauttavat poistokoodit, samoin kuin suoritettu kuori.

Monimutkaiset komennot

Monimutkaiset komennot ovat yksinkertaisia ​​komentoja, joissa on ohjaustoimintoja tai varattuja sanoja, yhdessä muodostaen suuremman monimutkaisen komennon. Yleisemmin komento on jokin seuraavista:

  • yksinkertainen komento
  • putki
  • lista tai yhdistelmäluettelo
  • yhdistekomento
  • toimintojen määrittely

Ellei toisin mainita, komennon poistumistila on komennon suorittama viimeinen yksinkertainen komento.

putkistojen

Kaasuputki on yhden tai useamman komento- jen sekvenssi, jonka ohjaaja on eronnut. Kaikkien viimeisen komennon vakio-lähtö on kytketty seuraavan komennon vakiotuloon. Viimeisen komennon vakiotulos peritään kuoresta, kuten tavallista.

Putkilinjan muoto on:

[!] komento1 [| komento2 ...]

Komennon1 vakiotulo kytketään komennon vakiotuloon2. Putkilinjan oletetaan antavan vakiotulon, vakiotuloksen tai molempien komennon ennen komentojonon uudelleenohjausoperaattoreiden määrittelemää uudelleenohjausta.

Jos putki ei ole taustalla (käsitellään myöhemmin), kuori odottaa kaikkien komentoiden suorittamista.

Jos varattu sana! ei ole ennen putkijohtoa, poistumistila on viimeisen putkilinjan komennon poistumistila. Muussa tapauksessa poistumistilanne on looginen EI viimeisen komennon poistumistilasta. Eli jos viimeinen komento palauttaa nollan, poistumistila on 1; jos viimeinen komento palauttaa suuremman kuin nollan, poistumistila on nolla.

Koska standardipäätteen tai vakiotuloksen tai molempien putkijohdotus tapahtuu ennen uudelleenohjausta, sitä voidaan muuttaa uudelleenohjauksella. Esimerkiksi:

$ command1 2> & 1 | command2

lähettää sekä komennon vakiotuloksen että vakiorajin komennon vakiotuloon2.

A; tai terminaattori saa aikaan edellisen AND-OR-luettelon (kuvattu seuraavaksi) suoritetaan peräkkäin; a & aiheuttaa edellisen AND-OR-luettelon asynkronisen suorituksen.

Huomaa, että toisin kuin jotkut muut kuoret, jokainen prosessointiprosessi on kutsuttu kuori lapsi (ellei se ole sisäänrakennettu kuori, jolloin se suoritetaan nykyisessä kuoressa - mutta sen vaikutukset ympäristöön pyyhitään).

Taustakomennot -

Jos komennon lopettaa ohjaimen operaattori ampersand (&), kuori suorittaa komennon asynkronisesti - eli kuori ei odota komennon päättymistä ennen seuraavan komennon suorittamista.

Taustan muotoisen komennon muoto on:

komento1 & [komento2 & ...]

Jos kuori ei ole vuorovaikutteinen, asynkronisen komennon vakiotulo asetetaan / dev / nulliksi

Luettelot - Yleisesti ottaen

Luettelo on järjestys, jossa on nolla tai useampia komentoja, jotka on erotettu uusilla rivillä, puolipisteillä tai amperanssilla ja jotka mahdollisesti lopetetaan yhdellä kolmesta merkistä. Luettelossa olevat komennot toteutetaan siinä järjestyksessä kuin ne on kirjoitettu. Jos komennon seuraa ampersand, shell aloittaa komennon ja siirtyy välittömästi seuraavaan komentoon; muuten se odottaa komennon lopettamista, ennen kuin jatkat seuraavaan.

Lyhyen piirin luettelooperaattorit

`` && '' ja `` || 'ovat AND-OR-listaoperaattoreita. `&& '' suorittaa ensimmäisen komennon ja suorittaa toisen komennon iff ensimmäisen komennon poistumistilaan nolla. `` || '' on samanlainen, mutta suorittaa toisen komennon, koska ensimmäisen komennon poistumistilaan ei ole mitään. `` && '' ja `` || '' molemmilla on sama prioriteetti.

Flow-Control rakennukset - jos, vaikka, tapauksessa

If-komennon syntaksi on

jos luettelo
sitten luettelo
[elif-luettelo
sitten luettelo] ...
[muuten lista]
fi

Sellaisen komennon syntaksi on

kun taas luettelo
tee luettelo
tehty

Nämä kaksi luetteloa suoritetaan toistuvasti, kun ensimmäisen luettelon poistumistila on nolla. Kunnes komento on samankaltainen, mutta siinä on sana vasta sen sijaan, että se toistuu, kunnes ensimmäisen listan poistumistilaan on nolla.

For -komennon syntaksi on

muuttuja sana ...
tee luettelo
tehty

Sanat laajennetaan, ja luettelo suoritetaan toistuvasti muuttujan mukaan jokaiselle sanalle vuorotellen. do ja done voidaan korvata nimellä `` {'' ja ``} ''

Tauko- ja jatkokomennuksen syntaksi on

tauko [num]
jatka [num]

Tauko päättää numeron sisimmästä tai silmukoiden ajan. Jatka jatkaa seuraavalla iteraatiolla sisimmän silmukan. Nämä toteutetaan sisäänrakennettuina komennoina.

Käsikäskyn syntaksi on

tapaus sana
kuvio) luettelo ;;
...
ESAC

Kuvio voi itse asiassa olla yksi tai useampi kuvio (katso Shell-kuvioita myöhemmin kuvatulla tavalla) erotettuna `` `merkillä.

Ryhmittelykomennot yhdessä

Komennot voidaan ryhmitellä kirjoittamalla joko

(lista)

tai

{luettelo;

Ensimmäinen niistä suorittaa komennot alaotsakkeessa. Sisäänrakennetut komennot ryhmiteltyinä (luettelo) eivät vaikuta nykyiseen kuoriin. Toinen muoto ei haaraa toista kuorta, joten se on hieman tehokkaampi. Ryhmittelykomennot tällä tavoin voit ohjata tuotos aivan kuin yksi ohjelma:

{printf hello; printf-maailma \ n ";}> tervehdys

tehtävät

Funktion määritelmän syntaksi on

nimi () -komento

Toimintojen määritelmä on suoritettava lauseke; kun se on suoritettu, se asentaa nimetyn toiminnon ja palauttaa poistumistilan nollaksi. Komento on tavallisesti luettelo `` {'' ja ``} ''

Muuttujat voidaan ilmoittaa paikalliseksi funktioon käyttämällä paikallista komentoa. Tämä tulee näkyä toiminnon ensimmäiseksi lausunnoksi ja syntaksi on

paikallinen [muuttuja | -] ...

Paikallinen toteutetaan sisäisenä komennuksena.

Kun muuttuja tehdään paikallisiksi, se perii aloitusarvon ja viedään sekä readonly-lippuja samassa nimessä olevasta muuttujasta ympäröivässä laajuudessa, jos sellainen on. Muussa tapauksessa muuttuja on aluksi poistettu käytöstä. Kuori käyttää dynaamista päämäärää, joten jos tekit muuttujan x paikallisen funktioon f, joka sitten kutsuu funktion g, viittaukset muuttujan x sisälle sisälle g viittaavat muuttujan x ilmoitettuun f: hen, ei globaaliin muuttujaan nimeltä x .

Ainoa erityisparametri, joka voidaan tehdä paikallisesti, on `` - '' `` - '' paikallisten kuoriasetusten muuttaminen, jotka muutetaan toiminnon sisäisen komennon kautta, palautetaan alkuperäisiin arvoihin, kun funktio palaa.

Palautuskomennon syntaksi on

palaa [exitstatus

Se lopettaa suoritettavan toiminnon. Paluu toteutetaan sisäänrakennettuna komennona.

Muuttujat ja parametrit

Kuori säilyttää joukon parametreja. Nimeämää parametria kutsutaan muuttujaksi. Käynnistettäessä kuori kääntää kaikki ympäristömuuttujat kuorimuutoksiin. Uusia muuttujia voidaan asettaa lomakkeella

name = arvo

Käyttäjän asettamilla muuttujilla on oltava nimi, joka koostuu pelkästään aakkosista, numeerisista numeroista ja alaviivoista - joista ensimmäinen ei saa olla numeerinen. Parametri voidaan myös merkitä numerolla tai erikoismerkillä alla kuvatulla tavalla.

Sijoitusparametrit

Paikannusparametri on parametri, jota merkitään numerolla (n> 0). Kuori asettaa nämä aluksi sen komentorivin argumentteihin, jotka seuraavat komentosarjan nimiä. Sisäänrakennettua (1) voidaan myös asettaa tai nollata ne.

Erikoisparametrit

Erityinen parametri on parametri, jota merkitään jollakin seuraavista erikoismerkistä. Parametrin arvo on sen merkin vieressä.

*

Laajenee paikkatietoihin, alkaen yhdestä. Kun laajennus tapahtuu kaksinkertaisen lainatun jonoon, se laajenee yhteen kenttään kunkin parametrin arvolla, joka on erotettu IFS- muuttujan ensimmäisen merkin tai -välin avulla, jos IFS on irrotettu.

@

Laajenee paikkatietoihin, alkaen yhdestä. Kun laajennus tapahtuu kaksinkertaisissa lainauksissa, jokainen asemointiparametri laajenee erillisenä argumenttina. Jos paikoitusparametreja ei ole, laajentaminen @ tuottaa nolla argumenttia, vaikka @ on kaksinkertainen. Tämä tarkoittaa periaatteessa sitä, että jos $ 1 on `` abc '' ja $ 2 on `` def ghi '', niin Qq $ @ laajenee kahteen argumenttiin:

abc def ghi

#

Laajenee paikkatietoparametrien lukumäärään.

?

Laajenee viimeisimmän putkijohdon poistumistilaan.

- (Hyphen.)

Laajennetaan nykyisiin vaihtoehtoisiin lipuihin (yhden kirjaimen vaihtoehtoiset nimet yhdistyneinä merkkijonoksi), kuten on määritetty kutsumalla setin sisäänrakennetulla komennolla tai epäsuorasti kuorella.

$

Laajennetaan kutsuttuun kuoriin. Alaotsakkeessa säilyy sama arvo $ kuin sen emo.

!

Laajennetaan nykyisen kuoren viimeisimmän taustekomennon prosessin tunnukselle. Putkilinjan osalta prosessin tunnus on viimeisen putkijohdon komento.

0 (nolla.)

Laajentaa kuoren tai komentotiedoston nimen.

Word laajennukset

Tämä lauseke kuvaa erilaisia ​​laajennuksia, jotka suoritetaan sanoilla. Kaikki laajennukset eivät suoriteta jokaisella sanalla, kuten myöhemmin selitetään.

Tilde-laajennukset, parametrien laajennukset, komennon korvaamiset, aritmeettiset laajennukset ja lainausmuutokset, jotka esiintyvät yhdellä sanalla, laajentuvat yhteen kenttään. Se on vain kentän jakamista tai polunimiä, joka voi luoda useita kenttiä yhdestä sanasta. Yksittäinen poikkeus tähän sääntöön on erikoisparametrin @ laajennus kaksinkertaisissa lainauksissa, kuten yllä on kuvattu.

Sana laajennuksen järjestys on:

  1. Tilde-laajennus, parametrien laajennus, komentojen korvaaminen, aritmeettinen laajennus (nämä kaikki esiintyvät samanaikaisesti).
  2. Kentän jakaminen suoritetaan vaiheilla (1) generoiduilla kentillä, ellei IFS- muuttuja ole nolla.
  3. Polunimen laajennus (ellei asetettu - f ole voimassa).
  4. Laina Removal.

$-Merkkiä käytetään parametrien laajennuksen, komentojen korvaamisen tai aritmeettisen arvioinnin esittämiseen.

Tilde-laajennus (korvaamalla käyttäjän kotihakemisto)

Sanalla, joka alkaa epäsovennetulla tilde-merkillä (~), kohdistuu tilde-laajennus. Kaikki merkkijonoja (/) tai sanan loppua olevat merkit käsitellään käyttäjänimenä ja ne korvataan käyttäjän kotihakemistolla. Jos käyttäjänimi puuttuu (kuten ~ / foobarissa), tilde korvataan HOME- muuttujan (nykyisen käyttäjän kotihakemiston) arvolla.

Parametrien laajennus

Parametrien laajennuksen muoto on seuraava:

jossa lauseke koostuu kaikista merkkeistä, kunnes vastaava ``} '' Any ``} 'välttyvät käänteiseltä tai lainatun merkkijonon sisällä, eikä upotettuja aritmeettisia laajennuksia, komennon korvauksia ja muuttuvia laajennuksia ole merkitty määritettäessä vastaava ``} ''

Yksinkertaisin muoto parametrien laajennukselle on:

Korvataan parametrin arvo, jos sellainen on.

Parametrin nimi tai symboli voidaan sulkea rintasyötteihin, jotka ovat valinnaisia ​​lukuun ottamatta paikkatietoparametreja, joissa on enemmän kuin yksi numero tai kun parametria seuraa merkki, joka voidaan tulkita osaksi nimeä. Jos parametrin laajennus tapahtuu kaksinkertaisen lainausmerkin sisällä:

  1. Laajennuksen tuloksiin ei suoriteta polunimityyppistä laajennusta.
  2. Laajennuksen tuloksia ei suoriteta kentällä, lukuun ottamatta @.

Lisäksi parametrin laajennusta voidaan muokata käyttämällä yhtä seuraavista muodoista.

Käytä oletusarvoja. Jos parametri on poistettu tai nolla, sanan laajentaminen korvataan; muuten parametrin arvo korvataan.

Määritä oletusarvot. Jos parametri on pois käytöstä tai nolla, sana laajentuu parametrille. Kaikissa tapauksissa parametrin lopullinen arvo korvataan. Tällä tavoin voidaan määrittää vain muuttujia, ei paikkatietoja tai erityisiä parametreja.

Ilmoita virhe, jos Null tai Unset. Jos parametri on poistettu tai nolla, sanan laajentaminen (tai sanoma, joka ilmaisee sen olevan epätarkka, jos sana jätetään pois) on kirjoitettu vakioversioksi ja kuori poistuu ei-nolla-poistumistilasta. Muussa tapauksessa parametrin arvo korvataan. Interaktiivinen kuori ei tarvitse poistua.

Käytä vaihtoehtoista arvoa. Jos parametri on poistettu tai nolla, nolla on korvattu; muuten sanan laajentaminen korvataan.

Aikaisemmin esitetyissä parametriratkaisuissa kaksoispisteiden käyttäminen muodossa muodostaa testin parametrille, joka ei ole käytössä tai nolla; paksusuolen poisjättäminen johtaa testin parametriin, joka ei ole enää käytössä.

Merkkijono pituus. Parametrin arvon pituus merkissä.

Seuraavat neljä parametrien laajennuksen lajia koskevat aliverkkokäsittely. Kussakin tapauksessa mallin arvioinnissa käytetään kuvion sovitusmerkkiä (katso Shell-kuvioita), eikä säännöllistä ilmentymän merkintää. Jos parametri on * tai @, laajennuksen tulos ei täsmennetä. Täydellisen parametrin laajennusjonon sulkeminen kaksinkertaisiin lainausmerkkeihin ei aiheuta seuraavia neljää kuvionmerkin lajiketta, kun taas hattujen sisältämien merkkien merkitys vaikuttaa tähän.

Poista pienin suffiksin malli. Sanaa laajennetaan mallin tuottamiseksi. Parametrien laajentaminen johtaa sitten parametriin, jolloin pienin osa jälkipisteestä vastaa kuvion poistettu.

Poista suurin suffix-malli. Sanaa laajennetaan mallin tuottamiseksi. Parametrien laajentaminen tuottaa sitten parametrin, jonka suurimman osan jäljessä on poistettu kuvio.

Poista pienin etuliite. Sanaa laajennetaan mallin tuottamiseksi. Parametrien laajentaminen johtaa sitten parametriin, jolloin pienin osa etuliitteestä vastaa kuvion poistettu.

Poista suurin etuliite. Sanaa laajennetaan mallin tuottamiseksi. Parametrien laajentaminen johtaa sitten parametriin, jossa suurin osa etuliitteestä vastaa kuvio poistettu.

Komennon korvaaminen

Komennon korvaaminen mahdollistaa komennon tuoton korvata itse komennon nimen sijasta. Komennon korvaaminen tapahtuu, kun komento on suljettu seuraavasti:

$ (Komento)

tai Po `` backquoted '' versio Pc:

`command`

Shell laajentaa komennon korvaamista suorittamalla komennon ala-ympäristöön ja korvaamalla komennon korvauksen komennolla vakiotulosteella poistamalla yhden tai useamman : n sekvenssit korvauksen lopussa. (Sulautetut s ennen tulosteen loppua ei poisteta, mutta kenttäkorkeuden aikana ne voidaan kääntää IFS : n arvon ja voimassa olevan lainatun arvon mukaan.)

Aritmeettinen laajennus

Aritmeettinen laajennus tarjoaa mekanismin aritmeettisen ilmentymisen arvioimiseksi ja sen arvon korvaamiseksi. Aritmeettisen laajennuksen muoto on seuraava:

$ ((Ilmaus))

Ilmaisua pidetään ikään kuin kaksinkertaisena lainauksena, paitsi että lausekkeen sisällä olevaa kaksoislehteä ei käsitellä erityisesti. Kuori laajentaa kaikki rahakkeet lausekkeeseen parametrien laajennukseen, komennon korvaamiseen ja lainauksen poistoon.

Seuraavaksi kuori käsittelee tämän aritmeettisena ilmauksena ja korvaa lausekkeen arvon.

Valkoisen alueen halkaisu (kentän jakaminen)

Parametrien laajentamisen, komennon korvaamisen ja aritmeettisen laajennuksen jälkeen kuori skannaa tulokset laajennuksista ja korvauksista, joita ei esiintynyt kaksinkertaisissa lainauksissa kentän jakaumaa varten ja useita kenttiä voi johtaa.

Kuori käsittelee jokaisen IFS: n luonteen erottajana ja käyttää rajapareja jakamaan parametrien laajennuksen ja komentojen korvaamisen tulokset kenttiin.

Polunimen laajennus (Tiedoston nimen luominen)

Ellei - f- lippua ole asetettu, tiedostonimen sukupolvi suoritetaan sen jälkeen, kun sanan jakaminen on valmis. Jokainen sana katsotaan kuvioiden sarjaksi, joka erotetaan viivoilla. Laajennusprosessi korvaa sanan kaikkien olemassa olevien tiedostojen nimet, joiden nimet voidaan muodostaa korvaamalla jokainen kuvio tietyllä kuvioidulla merkkijonolla. Tässä on kaksi rajoitusta: ensinnäkin kuvio ei voi olla merkkijono, joka sisältää viisteen, ja toiseksi kuvio ei voi olla merkkijono, joka alkaa jaksosta, ellei kuvion ensimmäinen merkki ole ajanjakso. Seuraavassa osassa kuvataan sekä Patternname Expansion että tapaus (1) -komennon käyttämät mallit.

Shell kuvioita

Kuviossa on tavallisia merkkejä, jotka vastaavat itseään ja meta-merkkejä. Metakarvat ovat ``! '' `` * '' ``? '' Ja `` ['' Nämä merkit menettävät erityiset merkityksensä, jos ne on mainittu. Kun komento tai muuttuvan substituutio suoritetaan ja dollarin merkki- tai taaksehuutokauppoja ei double quoted, muuttujan tai komentotuloksen arvo skannataan näille merkille ja ne muuttuvat meta-merkiksi.

Tähti (`` * '') vastaa mitä tahansa merkkijonoa. Kysymysmerkki vastaa yhtä yksittäistä merkkiä. Vasen haarukka (`` ['') esittää merkkiluokan. Merkkiluokan loppu on osoitettu a (``] ''), jos ``] '' puuttuu, ja `` ['' vastaa `` ['' eikä merkkiluokkaa. Merkkiluokka vastaa mitä tahansa merkkiä hakasulkeiden välissä. Merkkijoukko voidaan määrittää miinusmerkillä. Hahmoluokkaa voidaan täydentää tekemällä huutomerkki merkkiluokan ensimmäisen merkin kanssa.

Jos haluat sisällyttää ``] '' merkkijonoon, kirjoita se ensimmäiseksi merkiksi (``!! 'Jälkeen, jos sellainen on). Jos haluat lisätä miinusmerkki, aseta se ensimmäiseksi tai viimeiseksi merkiksi

komennoista

Tässä osassa luetellaan sisäänrakennetut komennot, jotka on rakennettu, koska ne tarvitsevat jonkin toiminnan, jota ei voi suorittaa erillisellä prosessilla. Näiden lisäksi on useita muita komentoja, jotka voidaan rakentaa tehokkuuteen (esim. Kaiku 1).

:

Null-komento, joka palauttaa 0 (true) exit-arvon.

. tiedosto

Shell kuulee ja suorittaa määrätyn tiedoston komennot.

alias [ nimi [ = merkkijono ]]]

Jos nimi = merkkijono on määritetty, shell määrittelee alias- nimen arvon merkkijono Jos vain nimi on määritetty, aliaksen nimen arvo tulostetaan. Jos argumentteja ei ole, alias builtin tulostaa kaikkien määritettyjen aliaksien nimet ja arvot (katso unalias)

bg [ työ] ...

Jatka määritettyjä töitä (tai nykyistä työtä, jos mitään töitä ei anneta) taustalla.

komento komento arg ...

Suorita määritetty sisäänrakennettu komento. (Tämä on hyödyllinen, kun käytössä on shell-toiminto, jolla on sama nimi kuin sisäänrakennettu komento.)

cd [ hakemisto ]

Vaihda määritettyyn hakemistoon (oletusarvo $ HOME) Jos CD- komennon ympäristöön CDPATH- merkintä ilmestyy tai kuorimuutos CDPATH on asetettu ja hakemiston nimi ei aloita viisteellä , CDPATH: ssa luetellut hakemistot etsitään määritetystä hakemistosta. CDPATH: n muoto on sama kuin PATH: ssa. Interaktiivisessa kuoressa cd- komento tulostaa sen hakemiston nimen, jota se todella vaihtoi, jos se eroaa käyttäjän antamasta nimestä. Nämä voivat olla erilaisia ​​joko siksi, että CDPATH- mekanismia käytettiin tai koska symbolinen linkki ylittyi.

eval- merkkijono ...

Yhdistä kaikki argumentit välilyönnillä. Sitten tarkista ja suorita komento uudelleen.

exec [ komento arg ... ]

Ellei komentoa jätetä pois, shell-prosessi korvataan määritetyllä ohjelmalla (joka on todellinen ohjelma, ei rakennettu kuori tai toiminto). Exec- komennon mahdolliset uudelleenohjaukset merkitään pysyviksi, jotta ne eivät kumoa, kun exec- komento päättyy.

poistu [ exitstatus ]

Lopeta kuori prosessi. Jos exitstatus annetaan, sitä käytetään kuoren poistumistilana; muuten edellisen komennon poistumistilasta käytetään.

viennin nimi ...

export -p

Määritetyt nimet viedään niin, että ne tulevat näkyviin ympäristössä myöhemmissä komennoissa. Ainoa tapa vaihtaa muuttuja on poistaa se. Kuori mahdollistaa muuttujan arvon asettamisen samalla, kun sitä viedään kirjoittamalla

vienti nimi = arvo

Ilman argumentteja vienti-komennolla on kaikkien vietyjen muuttujien nimet. Kun p- vaihtoehto on määritetty, lähtö muotoillaan sopivasti ei-interaktiiviseen käyttöön.

fc [- editori ] [ ensimmäinen [ viimeinen ]]

fc -l [- nr ] [ ensimmäinen [ viimeinen ]]

fc -s [ vanha = uusi ] [ ensimmäinen ]

Fc- sisäänrakennetut luettelot, tai muokkaukset ja uudelleen suoritukset, komennot, jotka on aiemmin syötetty vuorovaikutteiseen kuoriin.

-editori

Muokkaa komentoja editorin nimeämän editorin avulla. Editorin merkkijono on komennon nimi, johon voi hakea PATH- muuttujaa. FCEDIT- muuttujan arvoa käytetään oletuksena, kun - e ei ole määritetty. Jos FCEDIT on nolla tai unset , käytetään EDITOR- muuttujan arvoa. Jos EDITOR on tyhjä tai poistettu käytöstä, editoriksi käytetään ed (1).

-l (ell)

Luettelo komennoista sen sijaan, että niitä kutsutaan editoriksi. Komennot kirjoitetaan ensimmäisen ja viimeisen operandin osoittamassa järjestyksessä, koska - r jokaisella komennolla, jota edeltää komennon numero, vaikuttaa siihen.

-n

Suppress komennonumerot listalle -l.

-r

Taaksepäin lueteltujen komentojen järjestys (ilman - tai muokattua (ei - l eikä - s)

-S

Tee komento uudestaan ​​suorittamatta käyttämättä editoriä.

ensimmäinen

kestää

Valitse luetteloitavat tai muokatut komennot. Aiempien käskyjen lukumäärä, joihin pääsee, määräytyy HISTSIZE- muuttujan arvon mukaan. Ensimmäisen tai viimeisen tai molempien arvot ovat jokin seuraavista:

[+] numero

Positiivinen luku, joka edustaa komentonumeroa; komennonumerot voidaan näyttää - l- vaihtoehdolla.

-määrä

Negatiivinen desimaaliluku, joka edustaa komentoa, joka suoritettiin aiemmin komentoja. Esimerkiksi -1 on välittömästi edellinen käsky.

jono

Merkki, joka ilmaisee viimeksi syötetyn komennon, joka alkaa kyseisellä merkkijonolla. Jos vanhaa = uutta operandia ei ole myöskään määritetty - ensimmäisen operaation merkkijonomuoto ei voi sisältää sulautettua tasa-arvoa.

Seuraavat ympäristömuuttujat vaikuttavat fc: n suorittamiseen:

FCEDIT

Käytettävän editorin nimi.

HISTSIZE

Aiempien komentojen määrä, jotka ovat käytettävissä.

fg [ työ ]

Siirrä määritettyä työtä tai nykyistä työtä etualalle.

getopts optstring var

POSIX getopts -komentoa, jota ei pidä sekoittaa Bell Labs -julkaisun getopt (1) kanssa.

Ensimmäisen argumentin pitäisi olla sarja kirjaimia, joista kukin voi mahdollisesti olla kaksoispiste, joka ilmaisee, että vaihtoehto vaatii argumentin. Määritetty muuttuja asetetaan jäsennettyyn vaihtoehtoon.

Getopts-komento epää vanhemman getopt (1) -apuohjelman johtuen siihen, että se käsittelee välilyöntejä sisältäviä argumentteja.

Valmistettavia getopteja voidaan käyttää optioiden ja niiden argumenttien saamiseen parametrien luettelosta. Kun kutsutaan, getopts asettaa seuraavan vaihtoehdon arvoksi var- merkinnän määrittelemän kuori-muuttujan luettelosta ja sen indeksi shell-muuttujasta OPTIND. Kun shell kutsutaan, OPTIND alustetaan arvoon 1. Kutakin vaihtoehtoa, joka vaatii argumentti, getopts builtin laittaa sen kuori muuttuja OPTARG Jos vaihtoehto ei ole sallittua optstring sitten OPTARG on unset .

optstring on merkkijono tunnetuista vaihtoehtoisista kirjaimista. Jos kirjainta seuraa kaksoispiste, vaihtoehdolla odotetaan olevan argumentti, joka voi olla tai ei ole erillään siitä valkoisella tilalla. Jos vaihtoehtoista merkkiä ei löydy odotetulta, getopts asettaa muuttujan var arvoksi ``? '' Getopts poistaa OPTARG: n ja kirjoittaa tuotoksen standardivirheeseen. Määrittamalla kaksoispiste optstringin ensimmäiseksi merkiksi kaikki virheet ohitetaan.

Nollaero palautetaan, kun viimeinen vaihtoehto on saavutettu. Jos ei ole jäljellä olevia argumentteja, getopts asettaa var erikoiselle vaihtoehdolle `` - '' muutoin, se asettaa varin ``? ''

Seuraava koodifragmentti osoittaa, kuinka komentoa voidaan käsitellä komennolla, joka voi ottaa vaihtoehtoja [a] ja [b] ja vaihtoehto [c], joka vaatii argumentin.

kun taas getopts abc: f
tehdä
tapaus $ f in
a | b) lippu = $ f ;;
c) carg = $ OPTARG ;;
\?) echo $ USAGE; exit 1 ;;
ESAC
tehty
siirto `expr $ OPTIND - 1`

Tämä koodi hyväksyy jokin seuraavista vastaava:

cmd -acarg -tiedosto
cmd -a -c arg -tiedosto
cmd -carg -a -tiedosto
cmd -a -carg - tiedosto

hash -rv- komento ...

Kuori ylläpitää hash-taulukkoa, joka muistaa komennot. Ilman argumentteja hash- komento tulostaa tämän taulukon sisällön. Merkinnät, joita ei ole katsottu viimeisen cd- komennon jälkeen, on merkitty tähdellä; nämä merkinnät ovat mahdollisia.

Argumenttien avulla hash- komento poistaa määritetyt komennot hash-taulukosta (elleivät ne ole funktioita) ja etsii sitten ne. V- vaihtoehdolla hash tulostaa komennot, kun se löytää ne. - r- vaihtoehto aiheuttaa hash-komennon poistaa kaikki hash-taulukon merkinnät lukuun ottamatta toimintoja.

jobid [ työ ]

Tulosta prosessien prosessin tunnukset töissä. Jos työn argumentti jätetään pois, käytetään nykyistä työtä.

työpaikkaa

Tässä komennossa luetellaan kaikki taustaprosessit, jotka ovat nykyisen Shell-prosessin lapsia.

pwd

Tulosta nykyinen hakemisto. Sisäänrakennettu komento voi poiketa saman nimen ohjelmasta, koska sisäänrakennettu komento muistaa nykyisen hakemiston sen sijaan, että se keräisi sen uudelleen joka kerta. Tämä tekee siitä nopeamman. Jos nykyinen hakemisto kuitenkin nimetään uudelleen, pwd: n sisäinen versio jatkaa vanhan nimen hakemista hakemistoon.

lue [- p kehotus ] [- r ] muuttuja ...

Kysely tulostetaan, jos - p- vaihtoehto on määritetty ja standardi tulo on päätelaite. Sitten riviltä luetaan standardi syöte. Poistettava uusi rivi poistetaan riviltä ja rivi jakautuu edellä kuvatulla tavalla sanojen jakoa koskevassa osassa kuvatulla tavalla ja kappaleet määritetään muuttujille järjestyksessä. Ainakin yksi muuttuja on määriteltävä. Jos muuttujia on enemmän kuin paloja, jäljelle jäävät kappalemat (yhdessä niiden erottamien IFS- merkkien kanssa) määritetään viimeiselle muuttujalle. Jos muuttujia on enemmän kuin kappaletta, jäljellä oleville muuttujille annetaan null merkkijono. Luettu sisäänrakennettu osoittaa menestystä, ellei EOF: ista tapahdu tulossa, jolloin vika palautetaan.

Oletusarvoisesti, ellet ole määritetty - r -vaihtoehtoa, paluumerkki `` \ '' toimii välilyönnä merkkinä, jolloin seuraavaa merkkiä voidaan käsitellä kirjaimellisesti. Jos kenoviivaa seuraa rivinvaihto, kenoviiva ja uusi rivi poistetaan.

vain nimi ...

readonly -p

Määritetyt nimet on merkitty vain lukuiksi, joten niitä ei voi myöhemmin muuttaa tai poistaa käytöstä. Kuori sallii muuttujan arvon asettamisen samanaikaisesti, kun se merkitään lukemaan vain kirjoittamalla

readonly name = arvo

Ilman argumentteja readonly-komennolla luetellaan kaikkien luku-muuttujien nimet. Kun p- vaihtoehto on määritetty, lähtö muotoillaan sopivasti ei-interaktiiviseen käyttöön.

aseta [{- vaihtoehdot | + vaihtoehdot | - arg ... ]

Asetettu komento suorittaa kolme eri toimintoa.

Ei argumentteja, siinä luetellaan kaikkien kuori muuttujien arvot.

Jos asetuksia annetaan, se asettaa määritetyt valintalistat tai tyhjentää ne kohdassa Sx-argumenttiluettelon käsittelyssä kuvatulla tavalla.

Set-komennon kolmas käyttö on asettaa shellin paikkatietoparametrien arvot määritettyihin argumentteihin. Jos haluat muuttaa paikkatietoparametrejä muuttamatta vaihtoehtoja, käytä ensimmäistä argumenttia asetukseksi `` - ''. Jos mitään argumentteja ei ole, asetettu komento tyhjentää kaikki sijaintiparametrit (vastaa suoritusta `` shift $ #. ''

muuttuva arvo

Määrittää arvon muuttujaan. (Yleensä on parempi kirjoittaa variable = arvo kuin setvar setvarin käyttäminen on tarkoitettu käytettäväksi funktioissa, jotka antavat arvoja muuttujille, joiden nimet siirretään parametreiksi.)

muutos [ n ]

Vaihda asemointiparametrit n kertaa. Vaihto asettaa arvoa $ 1 arvoon $ 2 arvo $ 2 arvoon $ 3 ja niin edelleen, vähentämällä arvo $ # yhdellä. Jos n on suurempi kuin paikkatietoparametrien määrä, siirto antaa virheilmoituksen ja poistuu palautusasemalla 2.

ajat

Tulosta kerätty käyttäjä- ja järjestelmäajankohta kuorelle ja prosessit, jotka suoritetaan shellista. Palautustila on 0.

ansaan toiminta- signaali ...

Syy kuori jäsentää ja toteuttaa toimenpidettä, kun jokin määritetyistä signaaleista vastaanotetaan. Signaalit määritellään signaalinumerolla. Jos signaali on 0 , toiminta suoritetaan, kun kuori poistuu. toimenpide voi olla tyhjä tai `` - '' ensimmäinen aiheuttaa määrätyn signaalin ohittamisen ja jälkimmäinen aiheuttaa oletustoiminnan ottamisen. Kun kuori haarautuu alasekvenssistä , se nollaa kiinni jääneet (mutta ei huomiotta) signaalit oletustoimintoon. Anso- komennolla ei ole vaikutusta signaaleihin, jotka jätettiin huomiotta kuoren sisääntuloon.

kirjoita [ nimi ... ]

Tulkitse jokainen nimi komennona ja tulosta komentohakemuksen resoluutio. Mahdolliset ratkaisut ovat: kuori-avainsana, alias, shell builtin , komento, seurattu alias ja ei löydy. Aliaksen kohdalla alias laajennus tulostetaan; komentojen ja seurattavien aliaksien kohdalla komennon täydellinen polunimi tulostetaan.

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

Kysy tai tee kova tai pehmeä raja prosessille tai aseta uudet rajat. Kovalevyn (joka ei missään prosessissa saa loukata ja jota ei saa nostaa, kun sitä on laskettu) välillä on valinnanvapaus ja pehmeä raja (joka aiheuttaa prosessien ilmoittamisen, mutta ei välttämättä tapettu ja jota voidaan nostaa) nämä liput:

H

asettaa tai tiedustella kovaa rajaa

-S

asettaa tai tiedustella pehmeitä rajoja. Jos yksikään - H nor - S ei ole määritetty, pehmeä raja näytetään tai molemmat rajat asetetaan. Jos molemmat ovat määriteltyjä, viimeinen voittaa.

Kysyttävä tai asetettu raja valitaan siten, että jokin näistä lipuista määrätään:

-a

näytä kaikki nykyiset rajat

-t

näyttää tai asettaa CPU-ajan raja (sekunteina)

-f

näyttää tai asettaa suurimman luotavan tiedoston raja (512 tavun lohkossa)

-D

näyttää tai asettaa prosessin tietosegmentin koon raja (kilotavuina)

-S

näytä tai määritä prosessin pino-kokeen raja (kilotavuina)

-C

näyttää tai asettaa suurimman suoritetun hylsyn kokoon (512 tavun lohkoihin)

-m

näyttää tai asettaa raja fyysiseen muistiin, jota voidaan käyttää prosessissa (kilotavuina)

-l

näyttää tai asettaa raja, kuinka paljon muistia prosessi voi lukita mlock (2): lla ( kilotavuina )

-p

näyttää tai asettaa rajan kyseiselle käyttäjälle kerättävien prosessien määrään

-n

näyttää tai asettaa raja numeroita tiedostoja prosessi voi olla auki kerralla

Jos mikään näistä ei ole määritetty, se on rajattu tiedostokoko, joka näkyy tai asetetaan. Jos arvo määritetään, raja asetetaan kyseiseen numeroon. muussa tapauksessa näytössä näkyy nykyinen raja.

Syyllisen prosessin rajat voidaan näyttää tai asettaa käyttämällä sysctl (8) -apuohjelmaa.

umask [ mask ]

Aseta umaskin arvo (ks. Umask (2)) määritettyyn oktaaliarvoon. Jos argumentti jätetään pois, umask-arvo tulostetaan.

unalias [- a ] [ nimi ]

Jos nimi on määritetty, kuori poistaa kyseisen aliaksen. Jos - a on määritetty, kaikki aliakset poistetaan.

poista nimi ...

Määritetyt muuttujat ja toiminnot ovat asetettuja ja niitä ei ole viety. Jos jokin nimi vastaa sekä muuttujaa että funktiota, sekä muuttuja että funktio ovat poissa käytöstä.

odota [ työ ]

Odota, että määritetty työ on valmis ja palauttaa työn viimeisen prosessin poistumistilan. Jos argumentti jätetään pois, odota, että kaikki työt loppuvat ja palaa poistumistilaan nolla.

Komentorivin muokkaus

Kun sh: tä käytetään interaktiivisesti terminaalista, nykyistä komentoa ja komentohistoriota (ks. Fc Sx Builtinsissa) voidaan muokata vi-mode-komentorivin muokkauksella. Tämä tila käyttää jäljempänä kuvattuja komentoja, jotka ovat samanlaisia ​​kuin vi man-sivulla kuvatut osajoukot. Komento `set '-o vi mahdollistaa vi-tilan muokkaamisen ja sijoittaa sh vi-insert-tilaan. Kun vi-mode on otettu käyttöön, sh voidaan vaihtaa insertti- ja komento-tilan välillä. Toimittajaa ei ole kuvattu kokonaisuudessaan täällä, mutta se on myöhemmässä asiakirjassa. Se on samanlainen kuin vi: kirjoittaminen Aq ESC heittää sinut komentoon VI komennon tilaan. Aq paluu palaessaan komentotilassa siirtää rivin kuoriin.

Tärkeää: Käytä man- komentoa ( % man ) nähdäksesi kuinka komentoa käytetään tietyssä tietokoneessa.