Bash - Linux Command - Unix-komento

NIMI

bash - GNU Bourne-Again SHell

SYNOPSIS

bash [asetukset] [tiedosto]

KUVAUS

Bash on sh -yhteensopiva komentokielen tulkki, joka suorittaa komennot, jotka on luettu standardipäätteestä tai tiedostosta. Bash sisältää myös hyödyllisiä piirteitä Korn- ja C- kuoreista ( ksh ja csh ).

Bash on tarkoitettu noudattamaan IEEE POSIX Shell ja Työkalut-määritystä (IEEE Working Group 1003.2).

VAIHTOEHDOT

Yhden merkin shell-vaihtoehtojen lisäksi, jotka on dokumentoitu asetetun sisäänrakennetun komennon kuvauksessa, bash tulkitsee seuraavat vaihtoehdot, kun sitä kutsutaan:

-c- merkkijono

Jos -c- vaihtoehto on läsnä, komennot luetaan merkkijonosta . Jos merkkijonon jälkeen on argumentteja, ne määritetään paikkatietoparametreille alkaen 0 dollarista .

-i

Jos -i vaihtoehto on läsnä, kuori on vuorovaikutteinen .

-l

Tee bash toimiva ikään kuin sitä olisi kutsuttu kirjautumiskuoreksi (katso alla oleva SIJOITUS ).

-r

Jos -r- vaihtoehto on läsnä, kuori rajoituu (katso RAJOITETTU SHELL alla).

-S

Jos -s- vaihtoehto on läsnä tai jos argumentteja ei ole jäljellä option käsittelyn jälkeen, komennot luetaan vakiotulosta. Tämä valinta mahdollistaa paikkatietoparametrien asettamisen vuorovaikutteisen kuoren yhteydessä.

-D

Luettelon kaikista kaksoisviivästetyistä merkkijonoista, joita edeltää $, tulostetaan standardipoikkeamalle. Nämä ovat merkkijonoja, jotka ovat kielikäännöksen alaisia, kun nykyinen alue ei ole C tai POSIX . Tämä merkitsee -n vaihtoehtoa; komentoja ei suoriteta.

[- +] O [ shopt_option ]

shopt_option on yksi shoptin sisäänrakennetusta shell-vaihtoehdosta (katso SHELL BUILTIN COMMANDS alla). Jos shopt_option on olemassa, -O asettaa kyseisen vaihtoehdon arvon; + O sulkee sen. Jos shopt_option -ohjelmaa ei toimiteta, shoptin hyväksymät kuoriasetukset nimet ja arvot tulostetaan vakiotulosteeseen. Jos kutsumisvaihtoehto on + O , tuloste näkyy muodossa, jota voidaan käyttää tulona.

-

A - ilmoittaa vaihtoehtojen lopun ja estää lisävaihtoehtoja. Kaikki argumentit - käsitellään tiedostonimiä ja argumentteja. Argumentti - vastaa - .

Bash tulkitsee myös useita monimerkkisiä vaihtoehtoja. Näiden vaihtoehtojen täytyy näkyä komentorivillä ennen tunnistettavien yhden merkin optioita.

--dump-po-jouset

Vastaa -D: lle , mutta tuotos on GNU gettext po (kannettava objekti) -tiedostomuoto.

--dump-jouset

Vastaa -D: lle .

--auta

Näytä käyttöviesti vakiotulosteessa ja poistuminen onnistuneesti.

--init- tiedosto

--rcfile tiedosto

Suorita komentotiedostot normaalin henkilökohtaisen alustustiedoston sijaan ~ / .bashrc, jos kuori on vuorovaikutteinen (katso alla oleva SIJOITUS ).

--Kirjaudu sisään

Vastaava -l .

--noediting

Älä käytä GNU-kirjastoa lukea komentorivit kun kuori on vuorovaikutteinen.

--noprofile

Älä lue koko järjestelmän laajuista aloitustiedostoa / etc / profiilia tai mitään henkilökohtaisia ​​alustustiedostoja ~ / .bash_profile , ~ / .bash_login tai ~ / .profile . Oletusarvon mukaan bash lukee nämä tiedostot, kun niitä kutsutaan kirjautumiskuvaksi (katso alla oleva SIJOITUS ).

--norc

Älä lue ja suorita henkilökohtaista alustustiedostoa ~ / .bashrc, jos kuori on vuorovaikutteinen. Tämä vaihtoehto on oletusarvoisesti, jos shell kutsutaan sh: nä .

--posix

Vaihda bashin toiminta, jossa oletusasetus poikkeaa POSIX 1003.2 -standardista vastaamaan standardia ( posix-tila ).

--restricted

Kuori rajoittuu (katso RAJOITETTU SHELL alla).

--rpm-vaatii

Tuo luettelo tiedoista, joita shell-komentosarjat tarvitsevat. Tämä tarkoittaa "-n", ja sillä on samat rajoitukset kuin kääntämisajan virheiden tarkistus; Backticks, [] testit ja evals ei ole jäsennelty, joten jotkin riippuvuudet saattavat kadota. --verbose Vastaa -v .

--versio

Näytä tämän version bash- version versiotiedot vakiotulosteesta ja poistuminen onnistuneesti.

ARGUMENTIT

Jos argumentteja jää jäljelle prosessin käsittelyn jälkeen, eikä -c tai -s -vaihtoehtoa ole annettu, ensimmäisen argumentin oletetaan olevan komentotiedostojen sisältävän tiedoston nimi. Jos bashia kutsutaan tällä tavalla, tiedoston nimi asetetaan $ 0 , ja sijaintiparametrit asetetaan jäljellä oleviin argumentteihin. Bash lukee ja suorittaa komentotiedostot tästä tiedostosta ja poistuu sitten. Bashin poistumistila on komentosarjan viimeisen komennon poistumistila. Jos komentoja ei ole suoritettu, poistumistila on 0. Yritetään ensin avata tiedosto nykyisessä hakemistossa, ja jos tiedostoa ei löydy, kuori hakee komentosarjan PATH- hakemistot.

rukous

Sisäänkirjautumissuoja on sellainen, jonka nolla-argumentin ensimmäinen merkki on - tai joka aloitetaan --login- vaihtoehdolla.

Interaktiivinen kuori on käynnistetty ilman muita optio-argumentteja ja ilman -c- vaihtoehtoa, jonka vakiotulo ja -lähtö on kytketty molempiin liittimiin (kuten isatty (3) määritteli) tai jossa -i- vaihtoehto on alkanut. PS1 on asetettu ja $ - sisältää i, jos bash on vuorovaikutteinen, sallien shell-komentosarjan tai käynnistystiedoston testata tätä tilaa.

Seuraavissa kohdissa kuvataan miten bash suorittaa sen käynnistystiedostot. Jos jokin tiedostoista on olemassa, mutta sitä ei voida lukea, bash raportoi virheen. Tildeja laajennetaan tiedostonimiin alla kuvatulla tavalla laajennuksen Tilde-laajennuksessa EXPANSION- osassa.

Kun bash kutsutaan vuorovaikutteiseksi kirjautumiskuvaksi tai ei-interaktiiviseksi kuoreksi, joka sisältää --login- vaihtoehdon, se lukee ja suorittaa komennot tiedostosta / etc / profile , jos tiedosto on olemassa. Tämän tiedoston lukemisen jälkeen se etsii ~ / .bash_profile , ~ / .bash_login ja ~ / .profile tässä järjestyksessä ja lukee ja suorittaa komennot ensimmäisestä, joka on olemassa ja joka on luettavissa. --noprofiilivaihtoehtoa voidaan käyttää, kun kuori käynnistetään estämään tämän käyttäytymisen.

Kun sisäänkirjautumiskuori poistuu, bash lukee ja suorittaa komentoja tiedostosta ~ / .bash_logout , jos se on olemassa.

Kun vuorovaikutteinen kuori, joka ei ole sisäänkirjautumissuoja, käynnistää ja suorittaa komentoja ~ / .bashrc , jos tiedosto on olemassa. Tämä voidaan estää käyttämällä --norc- vaihtoehtoa. --rcfile file -vaihtoehto pakottaa bashin lukea ja suorittaa komentoja tiedostosta ~ / .bashrc: n sijaan.

Kun bash käynnistetään ei-interaktiivisesti, esimerkiksi shell-komentosarjan suorittaminen esimerkiksi etsii muuttujaa BASH_ENV ympäristössä, laajentaa sen arvoa, jos se näkyy siellä, ja käyttää laajennettua arvoa tiedoston nimenä lukea ja suorittaa . Bash käyttäytyy ikään kuin seuraava komento olisi suoritettu:

jos [-n "$ BASH_ENV"]; sitten. "$ BASH_ENV"; fi

mutta PATH- muuttujan arvoa ei käytetä tiedostonimen etsimiseen.

Jos bash kutsutaan nimellä sh , se yrittää jäljitellä SH: n aikaisempien versioiden käynnistyskäyttäytymistä mahdollisimman tarkasti POSIX-standardin mukaisesti. Kun sitä kutsutaan vuorovaikutteiseksi kirjautumiskuoreksi tai ei-interaktiiviseksi kuoreksi, joka sisältää --login- vaihtoehdon, se yrittää ensin lukea ja suorittaa komentoja / etc / profile ja ~ / .profile tässä järjestyksessä. --noprofiilivaihtoehtoa voidaan käyttää estämään tämä käyttäytyminen. Kun kutsutaan vuorovaikutteiseksi kuoreksi nimeltä sh , bash etsii muuttujaa ENV , laajentaa sen arvoa, jos se on määritetty, ja käyttää laajennettua arvoa tiedoston nimenä, jota se lukee ja toteuttaa. Koska shell, jota kutsutaan sh: ksi, ei yritä lukea ja suorittaa komentoja mistä tahansa muista käynnistystiedostoista, --rcfile -asetuksella ei ole vaikutusta. Ei-interaktiivinen kuori, jota kutsutaan nimellä sh, ei yritä lukea muita käynnistystiedostoja. Kun kutsutaan sh: , bash siirtyy posix- tilaan käynnistystiedostojen lukemisen jälkeen.

Kun bash käynnistetään posix- tilassa, kuten --posix- komentorivivalinnalla, se seuraa POSIX-standardia käynnistystiedostoille. Tässä tilassa interaktiiviset kuoret laajentavat ENV- muuttujaa ja komennot luetaan ja suoritetaan tiedostosta, jonka nimi on laajennettu arvo. Mitään muita käynnistystiedostoja ei lueta.

Bash yrittää määrittää, milloin sen hallinnoi kauko-kuori-daemon, yleensä rshd . Jos bash määrittää, että sitä hoitaa rshd , se lukee ja suorittaa komentoja ~ / .bashrc , jos tiedosto on olemassa ja on luettavissa. Se ei toimi, jos sitä kutsutaan sh . --norc- vaihtoehdon avulla voidaan estää tämä käyttäytyminen ja --rcfile- vaihtoehtoa voidaan käyttää pakottamaan toinen tiedosto luettavaksi, mutta rshd ei yleensä vedota kuoriin näillä vaihtoehdoilla tai sallia niiden määrittämisen.

Jos kuori käynnistetään tehokkaalla käyttäjätunnuksella (ryhmä), joka ei vastaa todellista käyttäjäryhmää (ID) ja -p- vaihtoehtoa ei toimiteta, käynnistys-tiedostoja ei lueta, kuoriominaisuuksia ei periyty ympäristöstä, SHELLOPTS muuttujan, jos se näkyy ympäristössä, jätetään huomiotta ja tehokas käyttäjätunnus on asetettu todelliseksi käyttäjätunnukseksi. Jos -p- vaihtoehto toimitetaan kutsuttuna, käynnistyskäyttäytyminen on sama, mutta tehokas käyttäjätunnusta ei palauteta.

MÄÄRITELMÄT

Seuraavia määritelmiä käytetään koko tämän asiakirjan loppuosassa.

tyhjä

Välilyönti tai välilehti.

sana

Kuoren yksi yksikkö, jota pidetään kirjaimena. Tunnetaan myös tunnuksena .

nimi

Sana, joka koostuu vain aakkosnumeerisista merkkeistä ja alaviivoista, ja joka alkaa aakkostimella tai alaviivalla. Tunnetaan myös tunnuksena .

metamerkki

Merkki, joka erottaa sanat, kun niitä ei ole lainattu. Yksi seuraavista:

| &; () <> välilyönti

valvontaoperaattori

Merkki, joka suorittaa ohjaustoiminnon. Se on yksi seuraavista symboleista:

|| & &&; ;; () |

VARAAVAT SANAT

Varatut sanat ovat sanoja, joilla on erityinen merkitys kuorelle. Seuraavat sanat tunnustetaan varattaviksi, kun niitä ei ole lainattu ja joko yksinkertaisen komennon ensimmäinen sana (ks. Alla oleva SHELL GRAMMAR ) tai tapauksen kolmas sana tai komento:

! tapaus tehdään elif else esac fi toimintoa varten, jos valitaan sitten kunnes {} aika [[]]

SHELL GRAMMAR

Yksinkertaiset komennot

Yksinkertainen komento on järjestys valinnaisista muuttujamääritteistä, joita seuraa tyhjiä erotettuja sanoja ja uudelleenohjauksia ja jotka lopettaa valvontaoperaattori . Ensimmäinen sana määrittää suoritettavan komennon ja se välitetään argumenttina nolla. Jäljellä olevat sanat viedään argumentteina kutsuttuun komentoon.

Yksinkertaisen komennon palautusarvo on sen poistumistila tai 128 + n, jos komento päätetään signaalilla n .

putkistojen

Putki on yhden tai useamman komennon sarja, jonka erottaa merkki | . Putkilinjan muoto on:

[ aika [ -p ]] [! ] komento [ | komento2 ...]

Komennon vakio-lähtö kytketään putken kautta komennon vakiotuloon2. Tämä yhteys suoritetaan ennen komennon määrittämiä uudelleenohjauksia (katso REDIRECTION alla).

Jos varattu sana ! ennen putkilinjaa, kyseisen putken ulostulon tila on looginen EI viimeisen komennon poistumistilasta. Muussa tapauksessa putkilinjan tila on viimeisen komennon poistumistila. Kuori odottaa kaikkien putkilinjan komentoja lopettamaan arvon palauttamisen.

Jos aika varattu sana edeltää putkilinjaa, sen kulun kuluttua kuluvan ajan sekä käyttäjän ja järjestelmän ajan kuluttua raportoidaan, kun putki päättyy. -p- vaihtoehto muuttaa POSIX-määrityksen mukaisen tulostusmuodon. TIMEFORMAT- muuttuja voidaan asettaa muotoilun merkkijonoon, joka määrittää ajoitusinformaation näyttämisen; katso kuvaus TIMEFORMAT alla Shell Variables alla.

Kukin putkilinjan komento suoritetaan erillisenä prosessina (ts. Alaotsakkeessa).

Listat

Luettelo on yksi tai useampi putki, jonka joku toimija erottaa ; , & , && tai || , ja mahdollisesti lopettaa joku ; , & , tai .

Näistä luettelooperaattoreista && ja || on yhtäläinen etuoikeus, jota seuraa ; ja &, joilla on yhtäläinen etusija.

Joukko yhtä tai useampaa uudelle riville voi näkyä luettelossa puolipisteen sijaan komennoista.

Jos komentotoiminto lopettaa komennon & , komentotulkki suorittaa komennon taustalla alaotsakkeessa. Kuori ei odota komennon päättymistä ja palautusstatus on 0. Komennot, jotka on erotettu a ; suoritetaan peräkkäin; kuori odottaa jokaista käskyä lopettamaan vuorostaan. Palautustila on viimeisen suoritetun komennon poistumistila.

Ohjausoperaattorit && ja || merkitsevät AND-listoja ja OR-luetteloita vastaavasti. JA-luettelossa on lomake

komento1 && komento2

komento2 suoritetaan, jos ja vain, jos komento1 palauttaa poistumistilan nolla.

OR-luettelossa on lomake

command1 || command2

komento2 suoritetaan, jos ja vain, jos komento1 palauttaa ei-nollan poistuvan tilan. AND- ja OR-listojen palautusstatus on luettelossa olevan viimeisen komennon poistumistila.

Yhdistelmäkomennot

Yhdistelmäkomento on jokin seuraavista:

( luettelo )

luettelo suoritetaan alaotsakkeessa. Muuttuvat tehtävät ja sisäänrakennetut komennot, jotka vaikuttavat kuoriympäristöön, eivät pysy voimassa komentojonon päätyttyä. Palautustila on luettelon poistumistila.

{ luettelo ; }

luettelo yksinkertaisesti suoritetaan nykyisessä kuoriympäristössä. luettelo on lopetettava uudella rivillä tai puolipisteellä. Tätä kutsutaan ryhmäkomennoksi . Palautustila on luettelon poistumistila. Huomaa, että toisin kuin metakarakterit ( ja ) , { ja } ovat varattuja sanoja, ja niiden on tapahduttava, jos varattu sanas on sallittua tunnistaa. Koska ne eivät aiheuta sanaa, ne on erotettava luettelosta välilyönniksi.

(( lauseke ))

Ilmaisu arvioidaan jäljempänä kuvattujen ARITHMETIC EVALUATION -ohjeiden mukaisesti . Jos lausekkeen arvo ei ole nolla, palautusstatus on 0; muuten paluu on 1. Tämä on täsmälleen sama kuin antaa " lauseke ".

[[ ilmaus ]]

Palauta tila 0 tai 1 riippuen ehdollisen lausekkeen ilmaisusta . Lausekkeet koostuvat alla kuvatuista esivaiheista kohdassa EHDOTUKSET . Sanahajautumista ja polunimen laajennusta ei suoriteta [[ ja ]]: n välisissä sanoissa; tilde-laajennus, parametri ja muuttuva laajennus, aritmeettinen laajennus, komentojen korvaaminen, prosessin korvaaminen ja lainauspoisto suoritetaan.

Kun käytetään == ja ! = Operaattoreita, operaattorin oikealla puolella olevaa merkkijonoa pidetään kuviona ja se on sovitettu alla kuvattujen sääntöjen mukaisesti Pattern Matching -kohdassa . Paluuarvo on 0, jos merkkijono vastaa tai ei vastaa vastaavasti ja 1 muuten. Jokainen kuvion osa voi olla lainattu pakottamaan sen vastaamaan merkkijonona.

Ilmaisuja voidaan yhdistää käyttämällä seuraavia operaattoreita, jotka luetellaan alentuneessa järjestyksessä:

( ilmaisu )

Palauttaa lausekkeen arvon. Tätä voidaan käyttää ohittamaan operaattoreiden tavanomainen etusija.

! ilmaisu

Totta, jos lauseke on väärä.

expression1 && expression2

Tosi, jos sekä lauseke 1 että lauseke2 ovat totta.

expression1 || expression2 Todellinen, jos joko lauseke1 tai lauseke2 on totta.

&& ja || operaattorit eivät arvioi lauseketta2, jos lausekkeen1 arvo riittää määrittämään koko ehdollisen lausekkeen palautusarvon.

nimi [ in word ]; tehdä luettelo ; tehty

Seuraavien sanojen luettelo laajennetaan ja luodaan luettelo kohteista. Muuttujan nimi asetetaan jokaiselle tämän luettelon osaan vuorotellen ja luettelo suoritetaan joka kerta. Jos sana on jätetty pois, komennon suorittaa luettelon kerran kullekin asettamiskohtaiselle parametrille (katso jäljempänä olevat PARAMETRIT ). Palautustila on viimeisen suoritettavan komennon poistumistila. Jos seuraavien kohteiden laajentaminen johtaa tyhjään luetteloon, komentoja ei suoriteta ja palautus on 0.

(( ekspr1 ; expr2 ; ekspr3 )); tehdä luettelo ; tehty

Ensinnäkin aritmeettinen ilmentymä expr1 arvioidaan jäljempänä kuvattujen ARITHMETIC EVALUATION -ohjeiden mukaisesti . Aritmeettinen ilmentymä expr2 arvioidaan sitten toistuvasti, kunnes se arvioi nollaksi. Joka kerta, kun expr2 arvioi nollasta poikkeavan arvon, lista suoritetaan ja aritmeettinen ilmentymä expr3 arvioidaan. Jos jokin lauseke jätetään pois, se toimii kuin se arvioi 1. Palaa-arvo on viimeisen listan komennon poistumistila, joka on suoritettu tai väärä, jos jokin lausekkeista on virheellinen.

valitse nimi [ sanalla ]; tehdä luettelo ; tehty

Seuraavien sanojen luettelo laajennetaan ja luodaan luettelo kohteista. Laajennettujen sanojen sarja tulostetaan vakiovirheeseen, joista kukin edeltää numero. Jos sana on jätetty pois, asetuspuolen parametrit tulostetaan (katso jäljempänä olevat PARAMETRIT ). Näyttöön tulee PS3- kehote ja linja luetaan vakiotulosta. Jos rivi koostuu numerosta, joka vastaa jotakin näytetyistä sanoista, nimiarvon arvo on sana. Jos rivi on tyhjä, sanat ja kehote näytetään uudelleen. Jos EOF on luettu, komento loppuu. Mikä tahansa muu arvo lukee sen, että nimi nollataan. Rivinluku tallennetaan muuttujaan REPLY . Lista suoritetaan kunkin valinnan jälkeen, kunnes tauko- komento suoritetaan. Valinnan poistutustila on viimeisen luettelossa olevan komennon poistotila tai nolla, jos komentoja ei suoritettu.

tapaus sanaa [[(] malli [ | kuvio ]

Tapauskomento laajentaa sanaa ensin ja yrittää sovittaa sen jokaiseen kuvioon vuorotellen käyttämällä samoja sovitussääntöjä kuin polkujen laajentamiseen (ks. Alla oleva polunimi-laajennus ). Kun ottelu löytyy, vastaava lista suoritetaan. Ensimmäisen ottelun jälkeen ei yritetä seuraavia otteluita. Poistumistila on nolla, jos kuvio ei vastaa. Muussa tapauksessa se on luettelossa olevan viimeisen komennon poistumistila.

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

Jos lista on toteutettu. Jos poistumistilanne on nolla, niin lista suoritetaan. Muussa tapauksessa jokainen elif- lista suoritetaan puolestaan ​​ja jos sen poistumistilanteesta on nolla, niin vastaava lista suoritetaan ja komento loppuu. Muussa tapauksessa toinen luettelo toteutetaan, jos se on läsnä. Poistumistila on viimeisen komennon poistotila, tai nolla, jos mitään ehtoa ei ole testattu oikein.

kun taas luettelo ; tehdä luettelo ; tehty

kunnes luettelo ; tehdä luettelo ; tehty

Kun komento suorittaa toistoluettelon jatkuvasti, niin kauan kuin viimeinen listan komento palauttaa poistumistilan nollaksi. Kunnes komento on samanlainen kuin komento, paitsi että testi on hylätty; tee lista suoritetaan niin kauan kuin viimeinen komento luettelossa palauttaa ei-nollan poistuvan tilan. Jaksojen poistumistila ja siihen asti, kunnes komennot ovat viimeisen listan komennon poistumistilasta, tai nolla, jos mitään ei ole suoritettu.

[ funktio ] nimi () { luettelo ; }

Tämä määrittää funktion nimetyn nimen . Toiminnon runko on komennon luettelo {ja} välillä. Tämä luettelo suoritetaan aina, kun nimi on määritetty yksinkertaisen komennon nimellä. Toiminnon poistutustila on viimeisen laitoksen komennon poistumistila. (Katso alla olevat TOIMINNOT .)

HUOMAUTUKSET

Ei-interaktiivisessa kuoressa tai vuorovaikutteisessa kuoressa, jossa vuorovaikutteiset komennot vaihtoehdossa shopt builtin on otettu käyttöön (ks. SHELL BUILTIN COMMANDS alla), sana, joka alkaa #, aiheuttaa tämän sanan ja kaikki jäljellä olevat merkit tässä rivissä ohitetaan. Interaktiivinen kuori ilman interactive_comments- vaihtoehtoa ei salli kommentteja. Interactive_comments- asetus on oletusarvoisesti vuorovaikutteisissa kuoreissa.

Lainaaminen

Lainanottoa käytetään poistamaan tiettyjen merkkien tai sanojen erityinen merkitys kuoreen. Lainauksen avulla voidaan poistaa erikoismerkkien käytöstä erityisillä merkinnöillä, estää varatut sanat tunnustetuksi sinne ja estää parametrien laajentaminen.

Jokaisella DEFINITIONS- kohdassa luetelluista metakaraktereista on erityinen merkitys kuorelle, ja se on mainittava, jos se edustaa itseään.

Kun komentojen historian laajennusmahdollisuuksia käytetään, yleensä laajennuksen historia ! , on mainittava estääkseen historian laajentamisen.

Kolme lainausmekanismia ovat: poistumerkki , yksittäiset lainausmerkit ja kaksinkertaiset lainausmerkit.

Ei-mainituista vastaväleistä ( \ ) on poistumerkki . Se säilyttää seuraavan merkin kirjaimellisen arvon, lukuun ottamatta . Jos \ -paristo ilmestyy, ja vastakohta ei ole itsessään lainattu, \ käsitellään linjan jatkona (eli se poistetaan syöttövirrasta ja jätetään tehokkaasti huomiotta).

Yksittäisten lainausmerkkien sisältämät merkit säilyttävät jokaisen merkin kirjaimellisen arvon lainausmerkinnöissä. Yksittäisiä lainauksia ei voi esiintyä yksittäisellä lainauksella, vaikka sitä edeltäisi vastakkainen kortti.

Kaksoiskutsujen sulkeminen merkitsee kaikkien hahmojen kirjaimellista arvoa, lukuun ottamatta $ , ` ja \ . Hahmot $ ja ` säilyttävät erikoismerkynsä kaksoissarjojen sisällä. Vastapainalluksella on erityinen merkitys vain silloin, kun sitä seuraa jokin seuraavista merkistä: $ , ` , " , \ tai .

Erityisparametreilla * ja @ on erityinen merkitys kaksinkertaisissa lainauksissa (ks. PARAMETRIT alla).

Sanamuotoa $ ' merkkijonoa ' käsitellään erityisesti. Sana laajenee merkkijonoon , ja kääntöpuolella poistetut merkit korvataan ANSI C -standardin mukaan. Taaksepäisillä poistumisjaksoilla, jos niitä on, dekoodataan seuraavasti:

\

hälytys (kello)

\ b

Askelpalautin

\ e

poistokohde

\ f

lomake syöte

\ n

uusi rivi

\ r

kuljettaja palaa

\ t

vaakasuora välilehti

\ v

pystysuora välilehti

\\

kenoviiva

\'

yhden tarjouksen

\ nnn

kahdeksan bittinen merkki, jonka arvo oktaalinen arvo nnn (1-3 numeroa)

\ x HH

kahdeksan bittinen merkki, jonka arvo on heksadesimaaliarvo HH (yksi tai kaksi hex-numeroa)

\ c x

ohjausmerkki

Laajennettu tulos on yksinoikeudella lainattu, ikään kuin dollarin merkki olisi ollut läsnä.

Kaksoispainotteinen merkkijono, jota edeltää dollarin merkki ( $ ), aiheuttaa sen, että merkkijono käännetään nykyisen paikallisverkon mukaan. Jos nykyinen alue on C tai POSIX , dollarimerkki jätetään huomiotta. Jos merkkijono käännetään ja korvataan, korvaaminen on kaksinkertainen.

MUUTTUJAT

Parametri on kokonaisuus, joka tallentaa arvot. Se voi olla nimi , numero tai jokin erityisparametreista alla luetelluista erikoismerkeistä . Shellin tarkoituksiin muuttuja on parametri, jonka nimi on nimetty . Muuttujalla on arvo ja nolla tai useampi ominaisuus . Attribuutit on määritetty käyttäen lausetta builtin komentoa (katso ilmoittaa alla SHELL BUILTIN COMMANDS).

Parametri asetetaan, jos sille on annettu arvo. NULL-merkkijono on kelvollinen arvo. Kun muuttuja on asetettu, se voidaan poistaa vain käyttämällä unset builtin -komentoa (katso SHELL BUILTIN COMMANDS alla).

Muuttuja voidaan antaa lomakkeen avulla

nimi = [ arvo ]

Jos arvoa ei anneta, muuttujalle annetaan null merkki. Kaikki arvot tapahtuvat tilde-laajennuksen, parametrin ja muuttuvan laajenemisen, komennon korvaamisen, aritmeettisen laajenemisen ja lainauspoiston (katso EXPANSION alla). Jos muuttujalla on sen kokonaislukuattribuutti , sitten arvoksi asetetaan aritmeettinen laajennus, vaikka $ (()) laajennusta ei käytetä (ks. Aritmeettinen laajennus alla). Sanojen jakoa ei suoriteta, lukuun ottamatta "$ @", kuten Alla erityisparametreissa selitetään. Pathname-laajennusta ei suoriteta. Toimintotulokset voivat myös näkyä argumentteina ilmoittaa , lajitella , viedä , vain luku ja paikalliset sisäänrakennetut komennot.

Sijoitusparametrit

Asemointiparametri on parametri, jota merkitään yhdellä tai useammalla numerolla, lukuun ottamatta yksittäistä numeroa 0. Sijoitusparametreja annetaan shell-argumentteilta, kun niitä kutsutaan, ja ne voidaan jakaa uudelleen käyttämällä sisäänrakennettua komentoa. Sijoitusparametreja ei voida määrittää osoitustilien avulla. Asemointiparametrit korvataan tilapäisesti kuoritoiminnon suorittamisen aikana (ks. Alla olevat TOIMINNOT ).

Kun suurempaa kuin yhden numeron sisältävää paikkatietoa sisältävää parametria laajennetaan, se on suljettava rintareunoihin (katso EXPANSION alla).

Erikoisparametrit

Kuori käsittelee useita parametreja erityisesti. Näitä parametreja voidaan viitata vain; niille annettu käyttö ei ole sallittua.

*

Laajenee paikkatietoihin, alkaen yhdestä. Kun laajennus tapahtuu kaksinkertaisen lainausmerkin sisällä, se laajenee yhteen sanaan kunkin parametrin arvolla, joka on erotettu IFS- erikoismuuttujan ensimmäisestä merkistä. Eli " $ * " vastaa " $ 1 c $ 2 c ... ", jossa c on IFS- muuttujan arvon ensimmäinen merkki. Jos IFS on irrotettu, parametrit erotetaan välilyönnillä. Jos IFS on tyhjä, parametrit liitetään ilman puuttuvia erottimia.

@

Laajenee paikkatietoihin, alkaen yhdestä. Kun laajennus tapahtuu kaksinkertaisen lainausmerkin sisällä, jokainen parametri laajenee erilliseen sanaan. Toisin sanoen " $ @ " vastaa " $ 1 " " $ 2 " ... Kun asetuspalkkeja ei ole, " $ @ " ja $ @ laajentavat mitään (eli ne poistetaan).

#

Laajentaa paikkatietoparametrien lukumäärän desimaaliin.

?

Laajenee viimeksi toteutetun etualan putkilinjan tilaan.

-

Laajennetaan nykyisiin vaihtoehtoisiin lippuihin, kuten on määritetty päällekytkennällä, setin sisäänrakennetulla komennolla tai itse shellin asetuksilla (kuten -i- vaihtoehdolla).

$

Laajenee kuoren prosessin tunnukselle. Yhtenä () alakerroksessa se laajenee nykyisen kuoren, ei alikerroksen, prosessitunnukseen.

!

Laajennetaan viimeisimmän toteutetun taustan (asynkroninen) prosessin tunnukselle.

0

Laajentaa kuoren tai komentotiedoston nimen. Tämä on asetettu shell-alustukseen. Jos bashille vedetään komennolla, $ 0 asetetaan kyseisen tiedoston nimeen. Jos bash käynnistetään -c- vaihtoehdolla, $ 0 asetetaan ensimmäiseen argumenttiin suoritettavan merkkijonon jälkeen, jos sellainen on olemassa. Muussa tapauksessa se asetetaan tiedostonimiin, jota kutsutaan bashiksi , kuten argumentti nolla.

_

Kun shell käynnistetään, määritä shell- tai shell-komentosarjan absoluuttinen tiedostonimi, joka suoritetaan argumenttiluettelossa. Tämän jälkeen laajennetaan viimeiseen argumenttiin edelliseen komentoon laajennuksen jälkeen. Aseta myös kunkin komennon täydellinen tiedostonimi, joka asetetaan kyseiseen komentoon vietyyn ympäristöön. Kun tarkistat postia, tämä parametri pitää nykyään tarkistettavan sähköpostitiedoston nimen.

Shell-muuttujia

Shell määrittää seuraavat muuttujat:

LYÖDÄ

Laajennetaan täysi tiedostonimi, jota käytetään tämän bash-istunnon kutsumiseen.

BASH_VERSINFO

Readonly array muuttuja, jonka jäsenet pitävät versiotiedot tästä bash- instanssista. Ryhmän jäsenille määritetyt arvot ovat seuraavat:

BASH_VERSINFO [ 0]

Suurin versionumero ( julkaisu ).

BASH_VERSINFO [ 1]

Pieni versio numero ( versio ).

BASH_VERSINFO [ 2]

Laastari taso.

BASH_VERSINFO [ 3]

Rakennusversio.

BASH_VERSINFO [ 4]

Vapautustila (esim. Beta1 ).

BASH_VERSINFO [ 5]

MTYTYPE: n arvo.

BASH_VERSION

Laajennetaan merkkijono, joka kuvaa tämän bash- instanssin versiota.

COMP_CWORD

COMP_LINE

Nykyinen komentorivi. Tämä muuttuja on käytettävissä vain kuoritoiminnoissa ja ulkoisissa komennoissa, joita ohjelmoitavat valmistustilat käyttävät (ks. Ohjelmoitava viimeistely alla).

COMP_POINT

COMP_WORDS

Taulukon muuttuja (ks. Taulukot alla), joka koostuu nykyisen komentorivin yksittäisistä sanoista. Tämä muuttuja on käytettävissä vain ohjelmoitavissa olevissa valmiustiloissa kutsuvissa kuoriotoiminnoissa (ks. Ohjelmoitava viimeistely alla).

DIRSTACK

Joukko-muuttuja (ks. Taulukot alla), joka sisältää hakemistopinon nykyisen sisällön. Hakemistot tulevat näkyviin pinoon siinä järjestyksessä, että ne näytetään sisäänrakennettujen ohjeiden mukaan. Tämän taulukon muuttujien jäsenten osoittamista voidaan käyttää jo pinoissa olevien hakemistojen muokkaamiseen, mutta pushd- ja popd- sisäänrakennuksia on käytettävä hakemistojen lisäämiseen ja poistamiseen. Tämän muuttujan tehtävä ei muuta nykyistä hakemistoa. Jos DIRSTACK on poistettu käytöstä , se menettää sen erityisominaisuudet, vaikka se myöhemmin palautettaisiin.

EUID

Laajenee nykyisen käyttäjän tehokas käyttäjätunnus, joka alustetaan kuoren käynnistyksessä. Tämä muuttuja on luettavissa.

FUNCNAME

Minkä tahansa tällä hetkellä suoritettavan kuori-toiminnon nimi. Tämä muuttuja on olemassa vain, kun shell-toiminto on suorittamassa. FUNCNAME-toimintoihin ei ole vaikutusta ja ne palauttavat virheen tilan. Jos FUNCNAME ei ole käytössä, se menettää sen erityisominaisuudet, vaikka se myöhemmin palautettaisiin.

RYHMÄT

Taulukon muuttuja, joka sisältää luettelon ryhmistä, joista nykyinen käyttäjä on jäsen. Ryhmille tehtävät tehtävät eivät vaikuta virheilmoitukseen. Jos RYHMÄT on poistettu käytöstä, se menettää sen erityisominaisuudet, vaikka se myöhemmin palautettaisiin.

HISTCMD

Nykyisen komennon historianumero tai historian luettelo. Jos HISTCMD on poistettu käytöstä , se menettää sen erityisominaisuudet, vaikka se myöhemmin palautettaisiin.

HOSTNAME

Aseta automaattisesti nykyisen isännän nimi.

HOSTTYPE

Aseta automaattisesti merkkijono, joka yksilöi selkeästi koneen, johon bash suorittaa. Oletusasetus riippuu järjestelmästä.

LINENO

Joka kerta, kun tämä parametri viitataan, kuori korvaa desimaalinumeron, joka edustaa nykyistä peräkkäistä rivinumeroa (alkavan 1) komentosarjan tai toiminnon sisällä. Kun ei ole skriptiä tai funktiota, korvannut arvo ei ole taattuna merkitykselliseksi. Jos LINENO ei ole käytössä, se menettää sen erityisominaisuudet, vaikka se myöhemmin palautettaisiin.

MACHTYPE

Aseta automaattisesti merkkijono, joka kuvaa täysin sellaisen järjestelmän tyypin, johon bash suorittaa, vakiomuotoisessa GNU cpu-company-system -muodossa. Oletusasetus riippuu järjestelmästä.

OLDPWD

Edellisessä työhakemistossa, kuten cd- komennolla.

OPTARG

Viimeisen option argumentin arvo, jonka getopts builtin komento käsittelee (katso SHELL BUILTIN COMMANDS alla).

OPTIND

Seuraavan argumentin indeksi, jota getopts builtin komento käsittelee (ks. SHELL BUILTIN COMMANDS alla).

OSTYPE

Aseta automaattisesti merkkijonolle, joka kuvaa käyttöjärjestelmää, johon bash suorittaa. Oletusasetus riippuu järjestelmästä.

PIPESTATUS

Taulukon muuttuja (ks. Alla olevat taulukot ), joka sisältää luettelon poistumien tilarivistä prosessista, joka on äskettäin toteutetusta etualan putkesta (joka voi sisältää vain yhden komennon).

PPID

Shellin vanhemman prosessin tunnus. Tämä muuttuja on luettavissa.

PWD

Nykyinen työhakemisto cd- komennolla.

RANDOM

Joka kerta, kun tätä parametria viitataan, syntyy satunnaisluku 0 - 32767. Satunnaislukujen järjestys voidaan alustaa antamalla arvo RANDOM . Jos RANDOM on poistettu käytöstä, se menettää sen erityisominaisuudet, vaikka se myöhemmin palautettaisiin.

VASTAA

Määritä sisääntuloviivaksi lukea sisäänrakennettu komento, kun argumentteja ei toimiteta.

SECONDS

Joka kerta, kun tätä parametria viitataan, sekunnin määrä palautetaan kuoren kutsusta. Jos arvo määritetään SECONDS: lle , myöhempien viitteiden jälkeen palautettu arvo on sekunnin määrä, kun määritys ja määritetty arvo. Jos SECONDS ei ole käytössä, se menettää sen erityisominaisuudet, vaikka se myöhemmin palautettaisiin.

SHELLOPTS

Paksusuoli erotettu luettelo sallituista kuoriasetuksista. Jokainen luettelon sana on kelvollinen argumentti asetetun integroidun komennon -o- vaihtoehdolle (katso SHELL BUILTIN COMMANDS alla). SHELLOPTS: ssä näkyvät vaihtoehdot ovat sellaiset kuin asetuksessa -o . Jos tämä muuttuja on ympäristössä, kun bash käynnistyy, kaikki listan kuoriasetukset otetaan käyttöön ennen lukemista käynnistystiedostoista. Tämä muuttuja on vain luettavissa.

SHLVL

Kasvatetaan yhdellä kerralla, kun bash-istunto käynnistetään.

UID

Laajenee nykyisen käyttäjän käyttäjätunnukselle, joka alustetaan kuoren käynnistyksessä. Tämä muuttuja on luettavissa.

Kuori käyttää seuraavia muuttujia. Joissakin tapauksissa bash antaa oletusarvon muuttujaan; nämä tapaukset on mainittu alla.

BASH_ENV

Jos tämä parametri asetetaan, kun bash suorittaa shell-komentosarjan, sen arvo tulkitaan tiedostonimenä, joka sisältää komennot alustetaan kuori, kuten ~ / .bashrc: ssä . BASH_ENV: n arvoa kohdistetaan parametrien laajentamiseen, komennon korvaamiseen ja aritmeettiseen laajentamiseen, ennen kuin sitä tulkitaan tiedostonimenä. PATHia ei käytetä etsimään tuloksena olevaa tiedostonimeä.

CDPATH

CD- komennon hakupolku. Tämä on kaksoispisteistä erotettu luettelo hakemistoista, joissa kuori etsii cd- komennon määrittämiä kohdehakemistoja. Näytteen arvo on ".: ~: / Usr".

COLUMNS

Käytetään valitsemalla sisäänrakennetulla komennolla päätelaitteen leveyden määrittämiseksi valintaluetteloiden tulostamisen yhteydessä. SIGWINCHin vastaanottaminen automaattisesti.

COMPREPLY

Sarja muuttuja, josta bash lukee mahdollisen täydennyksen, jonka muodostaa kuoritoiminto, jota ohjelmoitava viimeistelylaite kutsuu (ks. Ohjelmoitavissa oleva täydennys alla).

FCEDIT

Fc builtin -komennon oletusmuokkain.

FIGNORE

Paksusyövällä erotettu luettelo jälkipisteistä, jotka ohitetaan suoritettaessa tiedostonimi (katso READLINE alla). Tiedostonimi, jonka loppuliite vastaa yhtä FIGNORE- merkinnästä, jätetään pois sovitettujen tiedostonimien luettelosta. Näytteen arvo on ".o: ~".

GLOBIGNORE

Paksusuoli-eroteltu luettelo malleista, jotka määrittävät tiedostonimien sarjan, jota polkujen laajentaminen ohittaa. Jos tiedostonimi, joka sopii polunimikentän laajennuskuvioon, vastaa myös yhtä GLOBIGNORE- mallin kuvioista , se poistetaan otteluiden luettelosta.

HISTCONTROL

Jos asetukseksi on jätetty huomiotta tilaa , viivoja, jotka alkavat välilyönnillä, ei syötetä historialuetteloon. Jos asetuksena on ohittamattomien arvojen arvo, viimeisen rivin rivin vastaavia viivoja ei syötetä. Huomautus ignoreboth yhdistää nämä kaksi vaihtoehtoa. Jos unset, tai jos asetettu mihinkään muuhun kuin yllä olevaan arvoon, kaikki parserin lukemat rivit tallennetaan historialuetteloon HISTIGNORE arvon mukaan. HISTIGNORE korvaa tämän muuttujan toiminnan. Monilinjaisen komento-komennon toista ja seuraavia viivoja ei testata ja ne lisätään historiaan riippumatta HISTCONTROLin arvosta .

HISTFILE

Tiedoston nimi, jossa komentohistoria tallennetaan (katso HISTORIA alla). Oletusarvo on ~ / .bash_history . Jos poistat käytöstä, komentohistoriaa ei tallenneta, kun vuorovaikutteinen kuori poistuu.

HISTFILESIZE

Historia-tiedostoon sisältyvien rivien enimmäismäärä. Kun tämä muuttuja on määritetty arvoon, historiatiedosto katkaistaan ​​tarvittaessa, jotta se ei sisällä vain kyseistä riviä. Oletusarvo on 500. Myös historiatiedosto on katkaistu tähän kokoon kirjoittamisen jälkeen, kun vuorovaikutteinen kuori poistuu.

HISTIGNORE

Paksusyövällä erotettu luettelo malleista, joita käytetään päättää, mitkä komentorivit on tallennettava historialuetteloon. Jokainen kuvio on ankkuroitu rivin alussa ja sen on vastattava koko riviä (ei ole liitetty implisiittistä " * "). Jokainen kuvio testataan linjaa vasten sen jälkeen, kun HISTCONTROLin määrittämiä tarkastuksia on käytetty. Normaalien kuorihakemallien lisäksi ` & 'vastaa edellistä historiaviivaa. ` & 'voidaan välttää käyttämällä vastavalitsinta; selkäliuska poistetaan ennen ottelun aloittamista. Monilinjaisen komento-komennon toista ja seuraavia viivoja ei testata ja ne lisätään historiaan riippumatta HISTIGNORE- arvon arvosta .

HISTSIZE

Komentohistorian muistiin tulevien komentojen määrä (katso HISTORIA alla). Oletusarvo on 500.

KOTI

Nykyisen käyttäjän kotihakemisto; oletusarvoinen argumentti cd- sisäänrakennetulle komennolle. Tämän muuttujan arvoa käytetään myös tildi-laajennuksen suorituksessa.

HOSTFILE

Sisältää tiedoston nimen, joka on sama kuin / etc / hosts, joka pitäisi lukea, kun kuori on suoritettava isäntänimi. Mahdollisten isäntänimien täydennysten luetteloa voidaan muuttaa samalla, kun kuori on käynnissä; kun tietokonesovelluksen loppuunsaattamista seuraavan kerran yritetään arvon muuttamisen jälkeen, bash lisää uuden tiedoston sisällön olemassa olevaan luetteloon. Jos HOSTFILE on määritetty, mutta sillä ei ole arvoa, bash yrittää lukea / etc / hosts -koodia saadakseen luettelon mahdollisista koneenimien täydentymistä. Kun HOSTFILE on poistettu käytöstä, isännän nimen luettelo poistetaan.

IFS

Sisäinen kentän erotin , jota käytetään sanojen jakamiseen laajennuksen jälkeen ja jakamalla rivit sanoiksi luetun sisäänrakennetun komennon avulla. Oletusarvo on `` ''.

IGNOREEOF

Valvoo interaktiivisen kuoren toimintaa, kun EOF- merkin saaminen on ainoa tulo. Jos asetettu, arvo on peräkkäisten EOF- merkkien määrä, jotka on kirjoitettava syöttörivin ensimmäisinä merkkeinä ennen laulun poistumista. Jos muuttuja on olemassa, mutta sillä ei ole numeerista arvoa tai sillä ei ole arvoa, oletusarvo on 10. Jos sitä ei ole olemassa, EOF merkitsee tuloksen loppuun kuoreen.

inputrc

Lähtötiedoston tiedostonimi, joka ohittaa ~ / .inputrc- oletusarvon (katso READLINE alla).

LANG

Määrittää paikallisen luokan minkä tahansa luokan, jota ei ole erityisesti valittu muuttujalla, joka alkaa LC_: sta .

LC_ALL

Tämä muuttuja ohittaa LANG: n ja minkä tahansa muun LC_- muuttujan, joka määrittää locale-luokan.

LC_COLLATE

Tämä muuttuja määrittää lajittelutavan, jota käytetään lajitettaessa polunimen laajennuksen tuloksia ja määrittämällä etäisyysilmaisujen, vastaavuusluokkien käyttäytymistä ja lajittamalla sekvenssejä reittitietojen laajentamiseen ja kuvion sovittamiseen.

LC_CTYPE

Tämä muuttuja määrittää merkkien tulkinnan ja merkkiluokkien käyttäytymisen reitinimen laajennuksessa ja kuvion sovituksessa.

LC_MESSAGES

Tämä muuttuja määrittää rivin, jota käytetään kääntämään kaksinkertaiset lainat, joita edeltää $ .

LC_NUMERIC

Tämä muuttuja määrittää numero-muotoilun paikallisen luokan.

LINES

Käytetään valitsemalla sisäänrakennetulla komennolla sarakkeen pituuden määrittämiseksi tulostusvalintaluetteloiden tulostamiseksi. SIGWINCHin vastaanottaminen automaattisesti.

MAIL

Jos tämä parametri asetetaan tiedostonimiin ja MAILPATH- muuttujaa ei ole asetettu, bash ilmoittaa käyttäjälle sähköpostiviestien saapumisesta määritettyyn tiedostoon.

MAILCHECK

Määrittää, kuinka usein (sekunteina) bash tarkistaa sähköpostin. Oletusasetus on 60 sekuntia. Kun on aika tarkistaa postia, kuori tekee sen ennen kuin näytät ensisijaisen kehotteen. Jos tämä muuttuja ei ole käytössä tai asetettu arvoon, joka ei ole suurempi tai yhtä suuri kuin nolla, kuori estää postin tarkistuksen.

MAILPATH

Paksusuoli-eroteltu luettelo tiedostonimiä, jotka tarkistetaan posti. Tulostettava viesti, kun posti saapuu tiettyyn tiedostoon, voidaan määrittää erottamalla tiedoston nimi sanomasta `? '. Kun viestiä käytetään tekstissä, $ _ laajenee nykyisen sähköpostitiedoston nimeen. Esimerkki:

MAILPATH = '/ var / mail / bfox? "Sinulla on posti": ~ / shell-mail? "$ _ On postia!" "

Bash toimittaa tämän muuttujan oletusarvon, mutta sen käyttämien käyttäjäpostitiedostojen sijainti on järjestelmän mukaan riippuvainen (esim. / Var / mail / $ USER ).

OPTERRin

Jos asetetaan arvoon 1, bash näyttää getopts builtin -komennon tuottamat virheilmoitukset (ks. SHELL BUILTIN COMMANDS alla). OPTERR alustetaan 1: een joka kerta, kun kuori on kutsuttu tai komentosarja on suoritettu.

PATH

Komentoja hakupolku. Se on kaksoispisteistä erotettu luettelo hakemistoista, joissa kuori etsii komentoja (katso alla oleva COMMAND EXECUTION ). Oletuspolku on järjestelmän riippuvainen, ja sen määrittelee bashin asentama pääkäyttäjä. Yhteinen arvo on `` / usr / gnu / bin: / usr / local / bin: / usr / ucb: / bin: / usr / bin:. ''.

POSIXLY_CORRECT

Jos tämä muuttuja on ympäristössä, kun bash alkaa, kuori siirtyy posix-tilaan ennen kuin lukee käynnistystiedostot, ikään kuin --posix- kutsumisvaihtoehto olisi toimitettu. Jos se on asetettu, kun shell on käynnissä, bash mahdollistaa posix-tilan ikään kuin komento -o posix olisi suoritettu.

PROMPT_COMMAND

Jos asetettu, arvo suoritetaan komennona ennen kunkin ensisijaisen kehotteen antamista.

PS1

Tämän parametrin arvoa laajennetaan (katso PROMPTING alla) ja sitä käytetään ensisijaisena kehoteena. Oletusarvo on `` \ s- \ v \ $ ''.

PS2

Tämän parametrin arvoa laajennetaan kuten PS1: llä ja sitä käytetään toissijaisena kehoteena. Oletus on `` > ''.

PS3

Tämän parametrin arvoa käytetään valintakomennon kehotteena (katso SHELL GRAMMAR yllä).

PS4

Tämän parametrin arvoa laajennetaan kuten PS1: llä ja arvo tulostetaan ennen jokaisen komennon näyttämistä suorituksen jäljessä. PS4: n ensimmäinen merkki toistetaan useaan kertaan tarpeen mukaan ilmaisemaan useita suoraviivaisuustasoja. Oletusarvo on `` + ''.

AIKAMUOTO

Tämän parametrin arvoa käytetään formaalina merkkijonoina, jotka määrittävät, kuinka ajastustiedot putkille, jotka on asetettu aikaussalasanalla ennalta. % -Merkki tuo esiin paivojärjestyksen, joka on laajennettu ajan arvoon tai muuhun tietoon. Poistumissekvenssit ja niiden merkitykset ovat seuraavat; rintamerkit merkitsevät valinnaisia ​​osia.

%%

Kirjaimellinen % .

% [ p ] [l] R

Kulunut aika sekunneissa.

% [ p ] [l] U

Käyttäjätilassa käytettyjen CPU-sekuntimäärä.

% [ p ] [l] S

Järjestelmätilaan käytettyjen CPU-sekuntimäärä.

% P

CPU-prosentti, laskettuna (% U +% S) /% R.

Lisävarusteena saatava p on numero, joka määrittää tarkkuuden ja murto-osuuksien määrän desimaalipilkun jälkeen. Arvo 0 ei aiheuta desimaalipistettä tai murto-osaa. Enintään kolme paikkaa desimaalipisteen jälkeen voidaan määrittää; p: n suurempia arvoja 3 muutetaan arvoon 3. Jos p ei ole määritelty, käytetään arvoa 3.

Valinnainen l määrittää pitemmän formaatin, mukaan lukien minuutit, lomakkeesta MM m SS . FF s. P: n arvo määrittää, sisältyykö fraktio vai ei.

Jos tätä muuttujaa ei ole asetettu, bash toimii kuin se olisi arvoa $ '\ nreal \ t% 3lR \ nuser \ t% 3lU \ nsys% 3lS' . Jos arvo on tyhjä, näytössä ei näy ajoitustietoja. Loppuva uusi rivi lisätään, kun formaattijono näytetään.

TMOUT

Jos asetus on suurempi kuin nolla, TMOUT katsotaan oletusarvoiseksi aikakatkaisuksi luettavaksi luettavaksi . Valintakomento päätyy, jos tulo ei tule TMOUT- sekuntia, kun tulo tulee terminaalista. Vuorovaikutteisessa kuoressa arvoa tulkitaan sekuntien lukumääränä, joka odottaa tuloa ensisijaisen kehotteen antamisen jälkeen. Bash päättyy sen jälkeen, kun odottaa sitä sekuntia, jos syöttö ei tule.

auto_resume

Tämä muuttuja määrittää, miten kuori toimii vuorovaikutuksessa käyttäjän ja työnhallinnan kanssa. Jos tämä muuttuja on asetettu, yksittäisten sanojen yksinkertaisia ​​komentoja ilman uudelleenohjauksia käsitellään ehdokkaina olemassa olevan pysäytetyn työn uudelleen aloittamiselle. Ei ole epäselvyyttä sallittu; Jos useampi kuin yksi työ alkaa merkkijonoa kirjoittavalla, valittu viimeksi valittu työ on valittu. Pysäytetyn työn nimi tässä yhteydessä on sen komentorivin käynnistys. Jos asetettu arvoon on tarkka , syötetyn merkkijonon on vastattava pysäytetyn työn nimeä täsmälleen. jos se on asetettu aliverkoksi , syötetyn merkkijonon on vastattava pysäytetyn työn nimikenttää. Aliverkon arvo tarjoaa toimintoja, jotka ovat analogisia %? työn tunniste (katso JOB CONTROL alla). Jos asetettu mihin tahansa muuhun arvoon, toimitetun merkkijonon on oltava etumerkki pysäytetyn työn nimestä; tämä tarjoaa toimivuuden, joka on samanlainen kuin % työn tunniste.

histchars

Kaksi tai kolme merkkiä, jotka ohjaavat historian laajentamista ja tokenisaatiota (katso HISTORIA- LAAJUUS alla). Ensimmäinen merkki on historian laajennusmerkki, merkki, joka merkitsee historian laajennuksen alkua, tavallisesti " ! '. Toinen merkki on nopea korvaava merkki, jota käytetään pikakelauksena edellisen komennon uudelleenkäyttöä varten ja korvataan toinen merkkijono komennossa. Oletusarvo on ` ^ '. Valinnainen kolmas merkki on merkki, joka ilmaisee, että rivin loppuosa on kommentti, kun se on sanan sanan ensimmäinen merkki, tavallisesti ` # '. Historian kommenttimerkki aiheuttaa historian korvaamisen ohitettavaksi jäljellä olevilla sanoilla linjalla. Se ei välttämättä aiheuta kuoren jäsentimen käsitellä loppuosaa kommenttina.

taulukot

Bash tarjoaa yksidimensionaalisia taulukkomuuttujia. Jokainen muuttuja voidaan käyttää ryhmänä; julistaa sisäänrakennetun nimenomaisesti julistaa taulukon. Ryhmän kokoa ei ole rajoitettu, eikä vaatimusta, että jäsenet indeksoidaan tai osoitetaan vierekkäin. Muodot indeksoidaan kokonaislukuina ja ne ovat nollaperusteisia.

Joukko luodaan automaattisesti, jos jokin muuttuja määritetään syntaksin nimen [ subscript ] = arvon käyttämiseksi . Alaindeksiä käsitellään aritmeettisena ilmauksena, jonka on arvioitava suuremmaksi tai yhtä suureksi kuin nolla. Määritä taulukko nimenomaisesti ilmoittamalla -nimi (ks. SHELL BUILTIN COMMANDS alla). ilmoittaa - nimi [ alaindeksi ] hyväksytään myös; alaindeksiä ei oteta huomioon. Attribuutit voidaan määritellä taulukkomuuttujalle käyttäen lausettavia ja vain luettuja. Jokainen attribuutti koskee kaikkia ryhmän jäseniä.

Järjestöt on määritetty käyttämään mallin nimi = ( arvo 1 ... arvo n ) , kun jokainen arvo on muotoa [ subscript ] = merkkijono . Vain merkkijono on pakollinen. Jos valinnaiset suluet ja alaindeksit toimitetaan, indeksi on osoitettu; muuten osoitetun elementin indeksi on viimeinen indeksi, johon lauseke plus yksi on määritellyt. Indeksointi alkaa nollasta. Tämä syntaksi hyväksytään myös julistaa sisäänrakennettu. Yksittäiset taulukkoelementit voidaan määrittää käytettäväksi edellä esitetyn [ subscript ] = arvon syntaksin käyttämiseksi.

Unset- sisäänrakennettua käytetään tuhoamaan taulukoita. unset name [ alaindeksi ] tuhoaa taulukkoelementin indeksisinduktiin. unset name , jossa nimi on array tai unset name [ subscript ], jossa alaindeksi on * tai @ , poistaa koko taulukon.

Vahvistavat , paikalliset ja vain luodut kumpikin hyväksyvät -a- vaihtoehdon array määrittämiseksi. Luettu sisäänrakennettu hyväksyy -a- vaihtoehdon, joka antaa luettelon tavallisista syötteistä luetuista sanoista taulukkoon. Set ja declare builtins näyttävät taulukon arvoja tavalla, joka sallii niiden uudelleen käyttämisen tehtävissä.

EXPANSION

Laajennus suoritetaan komentorivillä sen jälkeen, kun se on jaettu sanoihin. On olemassa seitsemänlaista laajennusta: laajennuksen laajentaminen , tilde-laajennus , parametrin ja muuttuvan laajennus , komennon korvaaminen , aritmeettinen laajennus , sanan jakaminen ja polunimuutosten laajentaminen .

Laajentumisjärjestys on: laajennuksen laajentaminen, tilde-laajennus, parametri, muuttuva ja aritmeettinen laajennus ja komentojen korvaaminen (vasemmalla oikealla tavalla), sanojen jakaminen ja polun nimien laajennus.

Järjestelmissä, jotka voivat tukea sitä, on käytettävissä lisälaajennus: prosessin korvaaminen .

Brace-laajennus

Kaarteen laajennus on mekanismi, jolla voidaan luoda mielivaltaisia ​​merkkijonoja. Tämä mekanismi on samanlainen kuin polkujen laajentaminen , mutta luotujen tiedostonimien ei tarvitse olla olemassa. Muotoja, jotka on tarkoitus laajentaa, ovat valinnaisen johdannon muodossa, jota seuraa sarja pilkuilla eroteltuja merkkijonoja kaksoisosien välistä, jota seuraa valinnainen postikirja . Johdanto on etuliite jokaiseen merkkijonoon sisältyvään merkkijonoon, ja postscript lisätään sitten jokaiseen tulokseen, joka laajenee vasemmalta oikealle.

Kiinnikkeiden laajennukset voivat olla sisäkkäisiä. Kunkin laajennetun merkkijonon tulokset eivät ole lajiteltuja; vasemmalta oikealle järjestyksessä säilyy. Esimerkiksi { d, c, b } e laajenee "ade ace abe".

Kaarteen laajennus suoritetaan ennen muita laajennuksia, ja kaikki muut laajentumiseen erikoiset merkit säilytetään tuloksessa. Se on ehdottoman tekstuaalinen. Bash ei käytä mitään syntaktista tulkintaa laajennuksen yhteydessä tai tekstin välissä olevien kohokohtien välillä.

Tätä konstruktia käytetään tyypillisesti lyhennettäessä, kun generoitujen merkkijonojen yhteinen etuliite on pidempi kuin yllä olevassa esimerkissä:

mkdir / usr / local / src / bash / {vanha, uusi, dist, bugs}

tai

chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}

Kaarteen laajentaminen tuo mukanaan lievän yhteensopimattomuuden sh- historiallisten versioiden kanssa. sh ei käsittele avaamista tai sulkemista suluissa erityisesti silloin, kun ne näkyvät sanan osana ja säilyttävät ne tuotoksessa. Bash irrottaa kielekkeitä sanoista, jotka johtuvat haarojen laajentumisesta. Esimerkiksi sh: lle tiedoksi {1,2} kirjoitettu sana esiintyy identtisesti tuotoksessa. Sama sana tulostetaan tiedosto1-tiedostona2 bash- laajennuksen jälkeen. Jos halutaan tiukkaa yhteensopivuutta sh: n kanssa , aloita bash + B- vaihtoehdolla tai poista bändien laajennus + B- asetuksella asetettuun komentoon (katso SHELL BUILTIN COMMANDS alla).

Tilde-laajennus

Jos jokin sana alkaa epäsovennetulla tilde-merkillä (` ~ '), kaikki ensimmäiseen viivoittamattomaan viistohistorian edeltävät merkit (tai kaikki merkit, jos ei ole viivästettyä viivettä) pidetään tilde-etuliitteenä . Jos mikään tilde-etuliitteen hahmoista ei ole lainkaan, tilden jälkeisen tilde-etuliitteen merkit käsitellään mahdollisena kirjautumisnimeenä . Jos tämä kirjautumisnimi on nullimerkki, tilde korvataan shell-parametrin HOME arvolla. Jos HOME on poistettu käytöstä, kuoren suorittavan käyttäjän kotihakemisto korvataan sen sijaan. Muussa tapauksessa tilde-etuliite korvataan määritetyllä kirjautumistunnuksella olevan kotihakemiston kanssa.

Jos tilde-etuliite on `~ + ', kuorimuuttujan PWD arvo korvaa tilde-etuliitteen. Jos tilde-etuliite on `~ - ', korvataan Shell-muuttujan OLDPWD arvo, jos se on asetettu. Jos tilde-etuliitteen tildin jälkeiset merkit koostuvat numerosta N , valinnaisesti esipuheilla "+" tai "-", tilde-etuliite korvataan vastaavalla elementillä hakemistopinoista, koska se näytetään by built-in dirs kutsuttu kanssa tilde-etuliite kuin argumentti. Jos tilde-etuliitteen tilden jälkeiset merkit muodostuvat numerosta, jolla ei ole johtavaa "+" tai "-", oletetaan "+".

Jos kirjautumisnimi on virheellinen tai tilde-laajennus epäonnistuu, sana ei ole muuttunut.

Jokainen muuttujan osoitus tarkistetaan indeksoiduille tilde-etuliiteille välittömästi seuraavalla tavalla : tai = . Näissä tapauksissa suoritetaan myös tilde-laajennus. Tällöin voidaan käyttää tiedostonimiä tildeillä tehtävissä PATH , MAILPATH ja CDPATH ja kuori antaa laajennetun arvon.

Parametrien laajennus

` $ '-merkki tuo parametrin laajennuksen, komennon korvaamisen tai aritmeettisen laajennuksen. Laajennettava parametrin nimi tai symboli voidaan sulkea salamoihin, jotka ovat valinnaisia ​​mutta jotka suojaavat muuttujan laajentamista välittömästi seuraavista merkistä, jotka voidaan tulkita osana nimitystä.

Käytettäessä pidikkeitä, vastaava päätynauha on ensimmäinen ` }, jota ei käänny vastakkaisella kielellä tai lainatussa merkkijonossa, eikä sisällä sulautettua aritmeettista laajennusta, komennon korvaamista tai parametrien laajentamista.

Parametrin arvo korvataan. Pituusmitat vaaditaan, kun parametri on paikoitusparametri, jossa on enemmän kuin yksi numero tai kun parametria seuraa merkki, jota ei saa tulkita osaksi sen nimeä.

Kussakin alla olevissa tapauksissa sana on tilde-laajennuksen, parametrien laajennuksen, komentojen korvaamisen ja aritmeettisen laajennuksen alainen. Kun ei suorita substring-laajennusta, bash- testi parametrille, joka on poistettu tai nolla; kaksoispisteen jättäminen johtaa testiin vain parametrille, joka ei ole käytössä.

Käytä oletusarvoja . Jos parametri on pois käytöstä tai tyhjä, sana laajenee. Muussa tapauksessa parametrin arvo korvataan.

Määritä oletusarvot . Jos parametri on pois käytöstä tai nolla, sana laajentuu parametrille . Sitten korvataan parametrin arvo. Asetteluparametreja ja erityisiä parametreja ei ehkä ole määritetty tällä tavalla.

Näyttövirhe, jos Null tai Unset . Jos parametri on nolla tai poistettu käytöstä, sanan laajentaminen (tai sanoma, jolla ei ole sanaa ), kirjoitetaan vakiovirheeseen ja kuori, jos se ei ole vuorovaikutteinen, poistuu. Muussa tapauksessa parametrin arvo korvataan.

Käytä vaihtoehtoista arvoa . Jos parametri on tyhjä tai ei ole asetettu, mitään ei korvata, muuten sanan laajentaminen korvataan.

Laajennetaan niiden muuttujien nimet, joiden nimet alkavat etuliitteellä , erotettu IFS- erikoismuuttujan ensimmäisellä merkillä.

Parametrin arvon pituus merkit korvataan. Jos parametri on * tai @ , korvaava arvo on paikkatietoparametrien määrä. Jos parametri on taulukon nimi, jonka * tai @ merkitsee taulukon, korvaava arvo on taulukon elementtien määrä.

Sanaa laajennetaan mallin tuottamiseksi aivan kuten polkujen laajentamisessa. Jos kuvio vastaa parametrin arvon alkua, laajennuksen tulos on parametrin laajennettu arvo, jossa on lyhin sovituskuvio (`` # '' tapaus) tai pisin sovituskuvio (`` ## ' "tapaus") poistettiin. Jos parametri on @ tai * , kuvion poisto -toiminto kohdistuu kumpaankin asemointiparametriin vuorollaan, ja laajennus on tuloslista. Jos parametri on array-muuttuja, jonka indeksointi on @ tai * , kuvion poisto-operaatiota sovelletaan jokaiselle ryhmän jäsenelle puolestaan ​​ja laajennus on tuloksellinen luettelo.

Sanaa laajennetaan mallin tuottamiseksi aivan kuten polkujen laajentamisessa. Jos malli vastaa parametrin laajennetun arvon loppuosaa , laajennuksen tulos on parametrin laajennettu arvo, jolla on lyhin sovituskuvio (`` % '') tai pisin sovituskuvio (`` % % '' tapaus) poistettu. Jos parametri on @ tai * , kuvion poisto -toiminto kohdistuu kumpaankin asemointiparametriin vuorollaan, ja laajennus on tuloslista. Jos parametri on array-muuttuja, jonka indeksointi on @ tai * , kuvion poisto-operaatiota sovelletaan jokaiselle ryhmän jäsenelle puolestaan ​​ja laajennus on tuloksellinen luettelo.

Kuvioa laajennetaan tuottamaan kuvio samoin kuin polunimuutosten laajennuksessa. Parametria laajennetaan ja kuvion pisin vastaavuus sen arvoa vastaan ​​korvataan merkkijonolla . Ensimmäisessä lomakkeessa korvataan vain ensimmäinen ottelu. Toisessa lomakkeessa kaikki kuvion ottelut korvataan merkkijonolla . Jos kuvio alkaa # , sen täytyy vastata parametrin laajennetun arvon alkua. Jos kuvio alkaa %: lla , sen on vastattava parametrin laajennetun arvon lopussa. Jos merkkijono on tyhjä, kuvion ottelut on poistettu ja / seuraava kuvio voidaan jättää pois. Jos parametri on @ tai * , korvaava toiminto kohdistuu kumpaankin asemointiparametriin vuorollaan, ja laajennus on tuloslista. Jos parametri on taulukko-muuttuja, joka on subscriptoitu @ tai *: llä , korvausoperaatio pannaan vuorotellen jokaiselle ryhmän jäsenelle, ja laajennus on tulosluettelo.

Komennon korvaaminen

Komennon korvaaminen mahdollistaa komennon tuoton korvata komennon nimen. On olemassa kaksi muotoa:

$ ( komento )

tai

` komento`

Laite suorittaa laajennuksen suorittamalla komennon ja korvaamalla komennon korvaamisen komennon vakiotulostuksella, kun kaikki jälkimmäiset rivit poistetaan. Sulautettuja uusia viivoja ei poisteta, mutta ne voidaan poistaa sanojen jakamisen aikana. Komentokorvaus $ (cat file ) voidaan korvata vastaava mutta nopeampi $ (< tiedosto ).

Kun käytetään vanhan tyyppistä korvaketjun korvausmuotoa, kääntöviiva säilyy kirjaimellisesti, paitsi kun seuraa $ , ` tai \ . Ensimmäinen taustakierros, jota ei ole edeltänyt vastakkainen, lopettaa komentojen korvaamisen. Kun käytät $ ( command ) -muotoa, kaikki merkit suluissa muodostavat komennon; mitään ei käsitellä erityisesti.

Komennonvaihto voi olla sisäkkäinen. Pidä kiinni, kun käytät kiintopisteen muotoa, tyhjennä sisäpuoliset kiintosiivekkeet kääntöpuolella.

Jos korvaava teksti näkyy kaksinkertaisina lainausmerkkeinä, tuloksia ei voida käyttää sanojen jakamiseen ja polunimen laajentamiseen.

Aritmeettinen laajennus

Aritmeettinen laajennus mahdollistaa aritmeettisen ilmentymisen ja tuloksen korvaamisen. Aritmeettisen laajennuksen muoto on:

$ (( lauseke ))

Ilmaisua käsitellään ikään kuin se olisi kaksinkertaisen lainausmerkin sisällä, mutta suluissa olevaa kaksoislupaa ei käsitellä erityisesti. Kaikki ilmaisun rahakkeet ovat parametrien laajennuksen, merkkijonon laajennuksen, komentojen korvaamisen ja lainauksen poiston aikana. Aritmeettiset substituutiot voivat olla sisäkkäisiä.

Arviointi suoritetaan ARITHMETIC EVALUATIONin alla lueteltujen sääntöjen mukaisesti . Jos lauseke on virheellinen, bash tulostaa virheilmoituksen, eikä korvausta ole.

Prosessinsyöttö

Prosessikorvausta tuetaan järjestelmissä, jotka tukevat nimettyjä putkia ( FIFO ) tai avoimen tiedoston nimeämisen / dev / fd- menetelmää. Se on muodossa <( luettelo ) tai > ( luettelo ) . Prosessiluettelo suoritetaan panoksella tai lähdöllä, joka on liitetty FIFO: han tai johonkin tiedostoon / dev / fd . Tiedoston nimi siirretään nykyisen komennon argumentiksi laajennuksen tuloksena. Jos > ( luettelo ) -muotoa käytetään, kirjoittaminen tiedostoon antaa syötteen listalle . Jos <( luettelo ) -muotoa käytetään, argumenttina siirretty tiedosto on luettava listan tuoton saamiseksi.

Kun käytettävissä, prosessin korvaaminen suoritetaan samanaikaisesti parametrin ja muuttuvan laajennuksen kanssa, komentojen korvaaminen ja aritmeettinen laajennus.

Word Splitting

Kuori skannaa parametrien laajennuksen, komennon korvaamisen ja aritmeettisen laajennuksen tulokset, joita ei esiintynyt sanojen jakamisen kaksinkertaisissa lainauksissa.

Kuori käsittelee jokaisen IFS: n luonteen erottajana ja jakaa muiden laajentumisten tulokset näihin merkkeihin. Jos IFS ei ole määritetty tai sen arvo on tarkalleen , oletusarvo, minkä tahansa IFS- merkkisarjan avulla voidaan rajata sanoja. Jos IFS: llä on jokin muu arvo kuin oletusarvo, välilyöntien välilyöntien ja välilehden sekvenssit jätetään huomiotta sanan alussa ja lopussa, kunhan välilyönnin merkki on IFS : n arvosta ( IFS- välilyönnin merkki). Mikä tahansa IFS- merkin, joka ei ole IFS- välilyönti, sekä mahdolliset vierekkäiset IFS- välilyönnit, rajaa kentän. IFS- välilyöntien merkkiä käsitellään myös erottajana. Jos IFS: n arvo on tyhjä, sanahajautumista ei tapahdu.

Selkeä nolla argumentit ( "" tai "" ) säilytetään. Epäselvät implisiittiset nolla-argumentit, jotka johtuvat parametrien laajentamisesta, joilla ei ole arvoja, poistetaan. Jos parametrilla, jolla ei ole arvoa, laajennetaan kaksoissidottomiin, nolla-argumentti saadaan ja se säilyy.

Huomaa, että jos ei ole laajentumista, ei halkaisua.

Polunimen laajennus

Sanojen jakamisen jälkeen, ellei f- vaihtoehtoa ole asetettu, bash etsii jokaisen sanan merkkien * ,? , ja [ . Jos jokin näistä merkistä tulee näkyviin, sanaa pidetään kuviona , ja se korvataan aakkosjärjestyksessä lajiteltavilla tiedostonimikkeillä. Jos yhtään vastaavaa tiedostonimiä ei löydy ja kuoriasetus nullglob on poistettu käytöstä, sana jätetään muuttumattomana. Jos nullglob- vaihtoehto on asetettu, eikä löydy vastaavuuksia, sana poistetaan. Jos nocaseglob-kuoriasetus on käytössä, ottelu suoritetaan ilman aakkosten merkkejä. Kun polkujen laajentamiseen käytetään mallia, nimi "`. '' Nimen alussa tai viipaleen välittömästi seuraamisen jälkeen on täsmennettävä nimenomaisesti, ellei kuoriopainiketta dotglob ole asetettu. Kun määrität polunimen, rei'itysmerkki on aina sovitettava täsmällisesti. Muissa tapauksissa ``. '' -merkkiä ei käsitellä erityisesti. Katso shoptin kuvaus alla SHELL BUILTIN COMMANDS -kohdassa kuvaus nocaseglob , nullglob ja dotglob kuoriasetuksista .

GLOBIGNORE- kuori-muuttujaa voidaan käyttää rajoittamaan kuvion mukaisten tiedostojen nimet. Jos GLOBIGNORE on asetettu, jokainen vastaava tiedostonimi, joka vastaa myös yhtä GLOBIGNORE-mallista, poistetaan osumien luettelosta. Tiedostonimet ``. '' Ja `` .. '' jätetään aina huomiotta, vaikka GLOBIGNORE asetettaisiin. GLOBIGNORE: n asettaminen mahdollistaa dotglob-kuoriasetuksen , joten kaikki muut ``. '' Alkavat tiedostonimet sopivat yhteen. Jotta vanha käyttäytyminen jättää tiedostot, jotka alkavat ``. '' , Tee ``. * '' Yksi malli GLOBIGNORE'sta . Pointglob- toiminto ei ole käytössä, kun GLOBIGNORE on irrotettu .

Pattern Matching

Kaikki kuvassa näkyvät merkit, jotka eivät ole alla kuvattuja erikoismerkkejä, vastaavat itseään. NUL-merkkiä ei voi esiintyä kuvioissa. Erikoismerkit on mainittava, jos ne on sovitettava kirjaimellisesti.

Erityisen kuvion merkkillä on seuraavat merkitykset:

*

Matches kaikki merkkijono, mukaan lukien null merkkijono.

?

Sovittaa kaikki yksittäiset merkit.

[...]

Sovittaa yhteen suljetut merkit. Kaksi merkkiä, jotka on erotettu yhdysviivalla, merkitsee alueilmaisua ; kaikki merkinnät, jotka lajitellaan näiden kahden merkin välillä, mukaan lukien nykyisen paikallisen järjestelyn järjestys ja merkistö, sovitetaan yhteen. Jos ensimmäinen merkki, joka seuraa [ on a ! tai ^ sitten mikä tahansa merkki, jota ei ole suljettu, sovitetaan yhteen. Alueilmaisujen hahmojen lajittelujärjestys määräytyy nykyisen paikallisverkon ja LC_COLLATE- kuori-muuttujan arvon perusteella, jos se on asetettu. A - voidaan sovittaa sisällyttämällä se sarjan ensimmäiseksi tai viimeiseksi merkiksi. A ] voidaan sovittaa sisällyttämällä se sarjan ensimmäiseksi merkiksi.

[ Ja ] merkkilajit voidaan määrittää syntaksilla [: class :] , jossa luokka on jokin seuraavista POSIX.2-standardissa määritellyistä luokista:

alnum alfa ascii tyhjä cntrl digit kaavio alempi tulostus punct space yläosa xdigit
Hahmoluokka vastaa kaikkia luokkiin kuuluvia merkkejä. Sanahahmo luokka vastaa kirjaimia, numeroita ja merkkiä _.

Sisällä [ ja ] ekvivalenssiluokka voidaan määrittää käyttäen syntaksia [= c =] , joka vastaa kaikkia merkkejä, joilla on sama lajittelupaino (nykyisen alueen määrittämä) merkkinä c .

[ Ja ] sisällä syntaksi [. symboli .] vastaa lajittelun symbolin symbolia .

Jos extglob-kuoriasetus on otettu käyttöön käyttäen shopt- sisäänrakennettua, tunnistetaan useita laajennetun kuvion sovitusoperaattoreita. Seuraavassa kuvauksessa malli-luettelo on luettelo yhdestä tai useammasta kuvioista, jotka on erotettu |: lla . Komposiittikuvioita voidaan muodostaa käyttämällä yhtä tai useampaa seuraavista alimalleista:

? ( kuvio-luettelo )

Sovittaa nollan tai yhden esiintymän annettuihin malleihin

* ( kuvio-luettelo )

Sovittaa nollan tai useamman esiintymän annettuihin kuvioihin

+ ( kuvio-luettelo )

Sovittaa yhteen tai useampaan esiintymään tietyistä kuvioista

@ ( kuvio-luettelo )

Se vastaa täsmälleen yhtä annettuja kuvioita

! ( kuvio-luettelo )

Matches mitään, paitsi yksi annetuista kuvioista

Laina Removal

Edellisten laajennusten jälkeen kaikki merkinnöistä \ , ' ja ", jotka eivät ole peräisin yhdestä edellä mainituista laajennuksista, poistetaan.

REDIRECTION

Ennen kuin komento suoritetaan, sen tulo ja ulostulo voidaan ohjata käyttämällä erityistä merkintää, jota kuori käsittelee. Uudelleenohjausta voidaan myös käyttää avaamaan ja sulkemaan tiedostoja nykyiselle kuoritoimintaympäristölle. Seuraavat uudelleenohjausoperaattorit voivat edeltää tai näyttää missä tahansa yksinkertaisen komennon sisällä tai voivat seurata komentoa . Uudelleenohjaukset käsitellään siinä järjestyksessä, jonka ne näyttävät, vasemmalta oikealle.

Seuraavissa kuvauksissa, jos tiedostojen kuvaajan numero on jätetty pois ja uudelleenohjaustoiminnan ensimmäinen merkki on < , uudelleenohjaus viittaa tavalliseen tuloon (tiedoston kuvaus 0). Jos uudelleenohjausoperaattorin ensimmäinen merkki on > , uudelleenohjaus viittaa standardilähtöön (tiedoston kuvaaja 1).

Jollei toisin mainita, uudelleenlähetysoperaattorin seuraavaa sanaa kohdistetaan ristikasvun laajentamiseen, tilden laajentamiseen, parametrien laajentamiseen, komennon korvaamiseen, aritmeettiseen laajentamiseen, lainauksen poistamiseen, polunvaihdon laajentamiseen ja sanan jakamiseen. Jos se laajenee useampaan kuin yhteen sanaan, bash raportoi virheen.

Huomaa, että uudelleenohjausten järjestys on merkittävä. Esimerkiksi komento

ls > dirlist 2 > & 1

ohjaa sekä vakiotulosteita että vakiovirheitä tiedostoon dirlist , kun komento

ls 2 > & 1 > dirlist

ohjaa vain vakiotulostuksen tiedoston dirlistille , koska standardivirhe kaksinkertaistettiin vakiotuloksena ennen kuin vakiotuloste ohjattiin dirlistiksi .

Bash käsittelee useita tiedostonimiä erityisesti silloin, kun niitä käytetään uudelleenohjauksissa, kuten seuraavassa taulukossa on kuvattu:

/ dev / fd / fd

Jos fd on kelvollinen kokonaisluku, tiedostojen kuvaaja fd kopioidaan.

/ dev / stdin

Tiedoston kuvaus 0 on päällekkäinen.

/ dev / stdout

Tiedoston kuvaus 1 on päällekkäinen.

/ dev / stderr

Tiedoston kuvaaja 2 on päällekkäinen.

/ dev / tcp / host / portti

Jos isäntä on kelvollinen koneenimi tai Internet-osoite ja portti on kokonaislukuportin numero tai palvelun nimi, bash yrittää avata TCP-yhteyden vastaavaan pistorasiaan.

/ dev / udp / isäntä / portti

Jos isäntä on kelvollinen koneenimi tai Internet-osoite ja portti on kokonaislukuportin numero tai palvelun nimi, bash yrittää avata UDP-yhteyden vastaaviin pistorasioihin.

Jos tiedostoa ei avaudu tai luodaan, ohjattu uudelleenohjaus epäonnistuu.

Tulojen uudelleenohjaus

Tulon uudelleenohjaus aiheuttaa tiedoston, jonka nimi on avautuva sana laajentuessa tiedostojen kuvaajan n lukemiseen tai vakiotuloon (tiedoston kuvaus 0) jos n ei ole määritetty.

Yleisen muotoinen syötteen uudelleenohjaus on:

[ n ] < sana

Tuotteen uudelleenohjaus

Lähdön uudelleenohjaus aiheuttaa sen tiedoston, jonka nimi on avautuneen sanan laajentamista varten tiedostojen kuvaajalle n kirjoittamista varten tai vakiotulostus (tiedoston kuvaus 1) jos n ei ole määritetty. Jos tiedostoa ei ole olemassa, se luodaan; jos se on olemassa, se katkaistaan ​​nollakokoiseksi.

Yleisen tulostustuoton muoto on:

[ n ] > sana

Jos uudelleenohjaus-operaattori on > ja asetettu integraattori on päällä, uudelleenohjaus epäonnistuu, jos tiedosto, jonka nimi on peräisin sanan laajentamisesta, on olemassa ja se on tavallinen tiedosto. Jos uudelleenohjausoperaattori on > | , tai uudelleenohjausoperaattori on > ja asetettu sisäinen komento ei ole käytössä, uudelleenohjausta yritetään, vaikka sanomalla nimetty tiedosto olisi olemassa.

Uudelleenlähetetyn tuoton lisääminen

Tämän tuloksen uudelleenohjaus aiheuttaa sen tiedoston, jonka nimi on avautuneen sanan laajentamista varten tiedostojen kuvaajalle n tai standardi-lähdöstä (tiedoston kuvaaja 1) jos n ei ole määritetty. Jos tiedostoa ei ole olemassa, se luodaan.

Lähdön liittämisen yleinen muoto on:

[ n ] >> sana

Tavallisen lähdön ja vakiovirheen uudelleenohjaus

Bash mahdollistaa sekä tavallisen lähdön (tiedoston kuvaus 1) että vakiovirheen (tiedoston kuvaaja 2) uudelleenohjattavaksi tiedostoon, jonka nimi on sana laajentaminen tämän rakenteen kanssa.

Vakiotulosteiden ja standardivirheiden uudelleenohjausta varten on kaksi muotoa:

&> sana

ja

> & sana

Näistä kahdesta muodosta ensimmäinen on edullinen. Tämä vastaa semanttisesti

> sana 2 > & 1

Tässä asiakirjat

Tämäntyyppinen uudelleenohjaus antaa ohjeen, että kuori lukee syötteen nykyisestä lähteestä, kunnes näkyviin tulee viiva, joka sisältää vain sanaa (ilman jäljellä olevia aihioita). Tällöin luetut rivit käytetään sitten komennon vakiotulona.

Tositteiden muoto on:

<< [ - ] sana tässä-asiakirja delimiter

Sanaa ei esiinny parametrien laajentamista, komennon korvaamista, aritmeettista laajennusta tai polunimen laajennusta. Jos sanojen merkkejä on mainittu, erotin on seurausta lainauksen poistamisesta sanalla , eikä tässä asiakirjassa olevia viivoja laajenneta. Jos sana on epävirallinen, täällä olevan asiakirjan kaikki rivit joutuvat parametrien laajentamiseen, komennon korvaamiseen ja aritmeettiseen laajentamiseen. Jälkimmäisessä tapauksessa merkkisekvenssiä \ ei oteta huomioon, ja \ on käytettävä merkkejä \ , $ ja ` .

Jos uudelleenohjausoperaattori on << - , niin kaikki johtavat välilehden merkit poistetaan syöttörivistä ja riviltä, ​​joka sisältää erotin . Tämä mahdollistaa sen, että komentotiedostoissa olevat tositteet voidaan luonnollisesti upottaa.

Tässä Strings

Muunnelma täältä asiakirjoista, muoto on:

<<< sanan

Sana laajennetaan ja syötetään komennolle sen vakiotuloon.

Duplicating File Descriptors

Uudelleenohjausoperaattori

[ n ] <& sana

käytetään kopioiden syöttötiedostojen kuvaajien päällekkäisyyteen. Jos sana laajenee yhdeksi tai useammaksi numeroksi, n- merkityllä tiedostokirjaimella tehdään kopio kyseisestä tiedoston kuvaajasta. Jos sanojen numerot eivät määritä syötteenä avointa tiedostojen kuvaajaa, tapahtuu uudelleenohjausvirhe. Jos sana arvioidaan - tiedostojen kuvaaja n on suljettu. Jos n ei ole määritelty, käytetään vakiotuloa (tiedostojen kuvaaja 0).

Operaattori

[ n ] > & sana

käytetään samaan tapaan kuin kaksoiskappaleetulostustiedostojen kuvaajat. Jos n: tä ei ole määritetty, käytetään vakiotuloa (tiedostojen kuvaaja 1). Jos sanojen numerot eivät määritä tiedostojen kuvaajaa avoimeen lähdölle, tapahtuu uudelleenohjausvirhe. Erityisenä tapauksena, jos n jätetään pois ja sanaa ei laajenneta yhteen tai useampaan numeroon, vakiotuloste ja vakiovirhe ohjataan aiemmin kuvatulla tavalla.

Tiedostojen kuvaajien siirtäminen

Uudelleenohjausoperaattori

[ n ] <& numero -

siirtää tiedostojen kuvaajan numeron tiedoston kuvaajalle n tai standardi-syöte (tiedosto-kuvaaja 0), jos n ei ole määritetty. numero on suljettu, kun se on kopioitu n: ksi .

Samoin uudelleenohjausoperaattori

[ n ] > & numero -

siirtää tiedoston kuvaajan numeron tiedoston kuvaajalle n tai vakiotulostetta (tiedostojen kuvaaja 1), jos n ei ole määritetty.

Avaamalla tiedostojen kuvaajat lukemiseen ja kirjoittamiseen

Uudelleenohjausoperaattori

[ n ] <> sana

aiheuttaa tiedoston, jonka nimi on avautuva sanan laajentaminen sekä tiedostojen kuvaajalle n ja tiedostojen kuvaajalle 0, jos n ei ole määritetty. Jos tiedostoa ei ole olemassa, se luodaan.

aliakset

Aliasilla sallitaan merkkijonojen korvaaminen sanalla, kun sitä käytetään yksinkertaisen komennon ensimmäiseksi sanaksi. Kuori säilyttää luettelon aliasista, jotka voidaan asettaa ja poistaa käytöstä aliaksen ja unalias- sisäänrakennetun komennoilla (ks. SHELL BUILTIN COMMANDS alla). Kunkin komennon ensimmäinen sana, jos sitä ei ole merkitty, tarkistetaan, jos siinä on alias. Jos näin on, kyseinen sana korvataan aliaksen tekstillä. Alias-nimi ja korvaava teksti voivat sisältää minkä tahansa kelvollisen kuoriotulon, mukaan lukien edellä luetellut metakarakterit , paitsi että alias-nimi ei ehkä sisällä = . Korvaavan tekstin ensimmäinen sana testataan aliaksia varten, mutta sanasta, joka on identtinen aliaksen kanssa, ei laajenneta toisen kerran. Tämä tarkoittaa, että esimerkiksi ali on ls -f ja bash ei yritä rekursiivisesti laajentaa korvaavaa tekstiä. Jos alias-arvon viimeinen merkki on tyhjä , myös aliaksen seuraavaa komentoa tarkistetaan aliaksen laajentamiseksi.

Aliases luodaan ja luetellaan alias- komennolla ja poistetaan unalias- komennolla.

Korvaustekstissä ei ole mekanismia argumenttien käyttämiseen. Jos argumentteja tarvitaan, on käytettävä kuoriominaisuutta (katso jäljempänä olevat TOIMINNOT ).

Aliasiaa ei laajenneta, kun kuori ei ole vuorovaikutteinen, ellei expand_aliases-kuoriasetusta ole asetettu shopt-toiminnolla (katso shoptin kuvaus alla SHELL BUILTIN COMMANDS alla).

Aliaksen määrittelyyn ja käyttöön liittyvät säännöt ovat hieman hämmentäviä. Bash lukee aina vähintään yhden täydellisen syötteen rivin ennen minkä tahansa komennon suorittamista kyseisellä rivillä. Aliasioita laajennetaan, kun komentoa luetaan, ei silloin, kun se suoritetaan. Sen vuoksi aliaksen määritelmä, joka ilmestyy samalle riville kuin toinen komento, ei tule voimaan ennen kuin seuraava syöttörivikko luetaan. Uusi alias ei vaikuta komentoihin, jotka seuraavat kyseisen rivin alias-määritelmää. Tämä toiminta on myös ongelma, kun toiminnot suoritetaan. Aliasoituksia laajennetaan, kun funktion määritelmää luetaan, ei silloin, kun funktio suoritetaan, koska funktiomäärittely on itse yhdistyskomento. Tästä seuraa, että funktiossa määritetyt aliakset eivät ole käytettävissä vasta sen jälkeen, kun funktio on suoritettu. Jotta voisit olla turvallinen, aseta aina alias-määritykset erilliselle riville ja älä käytä aliaksia komennoissa.

Lähes jokaiseen tarkoitukseen aliakset korvataan kuoritoiminnoilla.

TOIMINNOT

Shell-toiminto, määritelty edellä SHELL GRAMMAR -ohjelmassa kuvatulla tavalla , tallentaa sarjan komentoja myöhempää suoritusta varten. Kun shell-toiminnon nimiä käytetään yksinkertaisena komennonä, kyseiseen toimintoihin liittyvien komentoiden luettelo suoritetaan. Toiminnot suoritetaan nykyisen kuoren yhteydessä; mitään uutta prosessia ei luota niiden tulkitsemiseen (tämä on ristiriidassa shell-komentosarjan suorittamisen kanssa). Kun funktio suoritetaan, funktion argumentit tulevat paikoitusparametreiksi sen toteutuksen aikana. Erityinen parametri # päivitetään vastaamaan muutosta. Sijoitusparametri 0 on muuttumaton. FUNCNAME- muuttuja on asetettu funktion nimeen, kun funktio on suorittamassa. Kaikki muut kuorintasuoritusympäristön osat ovat samanlaisia ​​toiminnon ja sen soittajan välillä lukuun ottamatta sitä, että DEBUG- ansa (ks. Alla olevan SHELL BUILTIN COMMANDS: n sisään rakennettu ansaan kuvaus) ei peritä, ellei toiminnolle ole annettu jäljitysominaisuutta ( ks. kuvaus ilmoitetusta sisäänrakennetusta alla).

Paikalliselle funktiolle voidaan ilmoittaa paikallisen sisäänrakennetun komennon avulla. Tavallisesti muuttujat ja niiden arvot jaetaan toiminnon ja sen soittajan välillä.

Jos sisäinen komentotulostus suoritetaan funktiossa, funktio täydentyy ja toteutus jatkuu seuraavalla komennolla toiminnon puhelun jälkeen. Kun funktio on suoritettu, paikkatietoparametrien ja erikoisparametrin # arvot palautetaan arvoihin, jotka heillä oli ennen toiminnon suorittamista.

Toimintonimet ja määritelmät voidaan luetella -f- vaihtoehtoisesti julistaa tai lajitella sisäänrakennettuja komentoja. F-lausekkeen valinta tai lajittelu tuo vain toiminnot nimet. Toiminnot voidaan viedä niin, että alitunnukset automaattisesti määrittävät ne -f- vaihtoehdon viennin sisäänrakennetulla tavalla.

Toiminnot voivat olla rekursiivisia. Rekursiivisten puheluiden määrää ei aseteta raja-arvoon.

ARITHMETIC EVALUATION

Shellin avulla aritmeettiset lausekkeet voidaan arvioida tietyissä olosuhteissa (katso sisäänrakennettu komento ja aritmeettinen laajennus ). Arviointi suoritetaan kiinteän leveyden kokonaislukuvuuksissa ilman ylivirtauksen tarkistamista, vaikkakin 0: n jakauma on merkitty ja merkitty virheeksi. Operaattorit ja niiden etuoikeus ja associativity ovat samat kuin C-kielellä. Seuraava operaattoriluettelo on ryhmitelty tasavertaisten operaattoreiden tasoiksi. Tasot on lueteltu alenevassa järjestyksessä.

id ++ id -

muuttuva lisäys ja post-decrement

++ id - id

vaihteleva ennalta lisäys ja ennalta vähennys

- +

unary miinus ja plus

! ~

looginen ja bitin negaatio

**

potenssiinkorotus

* /%

monistaminen, jako, loput

+ -

lisäksi vähennyslasku

<< >>

vasemman ja oikean bitin siirrot

<=> = <>

vertailu

==! =

tasa-arvo ja epätasa-arvo

&

bitittäin AND

^

bittinen yksinomainen OR

|

bitittäin OR

&&

looginen AND

||

looginen OR

expr ? expr : expr

ehdollinen arviointi

= * = / =% = + = - = << = >> = & = ^ = | =

toimeksianto

expr1 , expr2

pilkku

Shell-muuttujat sallitaan operandina; parametrin laajennus suoritetaan ennen lausekkeen arviointia. Ilmentymän sisällä kuori-muuttujia voidaan myös viitata nimellä ilman parametrin laajennussyntaksia. Muuttujan arvo arvioidaan aritmeettisena ilmentymänä, kun sitä viitataan. Shellin muuttujan ei tarvitse olla sen kokonaislukuominaisuus, joka on kytketty käytettäväksi lausekkeessa.

Constants with leading 0 tulkitaan oktaaliluvuiksi. Johtava 0x tai 0X merkitsee heksadesimaalista. Muussa tapauksessa numerot ovat muotoa [ base # ] n, jossa perustiheys on desimaaliluku 2 - 64, joka edustaa aritmeettista alustaa, ja n on numero tässä tukikohdassa. Jos base # jätetään pois, käytetään base 10 -ohjelmaa. Numerot, jotka ovat yli 9, ovat pienissä kirjaimissa, isoilla kirjaimilla, @ ja _ tässä järjestyksessä. Jos peruspiste on pienempi tai yhtä suuri kuin 36, pieniä ja isoja kirjaimia voidaan käyttää vaihtokelpoisesti edustamaan numeroita 10 ja 35 välillä.

Operaattoreita arvioidaan ensisijaisuuden järjestyksessä. Sulkeissa olevat aliseksit arvioidaan ensin ja voivat ohittaa yllä olevat sääntöjen mukaiset säännöt.

EHDOLLISET ILMOITUKSET

Ehtoehtoisia lausekkeita käyttävät [[ komento komento ja testi sekä [ sisäänrakennetut komennot testaamaan tiedostomääritteitä ja suorittamaan merkkijono- ja aritmeettiset vertailut. Ilmentymät muodostuvat seuraavista unary tai binäärisistä esivaaleista. Jos tiedoston argumentti jollekin esikuvista on muotoa / dev / fd / n , niin tiedoston kuvaaja n tarkistetaan. Jos tiedoston argumentti jollekin esikuvista on / dev / stdin , / dev / stdout tai / dev / stderr , tiedostekuvaaja 0, 1 tai 2 on tarkistettu.

-tiedosto

Tosi, jos tiedosto on olemassa.

-b- tiedosto

Totta, jos tiedosto on olemassa ja on lohko erikoistiedosto.

-c- tiedosto

Todellinen, jos tiedosto on olemassa ja se on erikoismerkki.

-d- tiedosto

Todellinen, jos tiedosto on olemassa ja se on hakemisto.

-e tiedosto

Tosi, jos tiedosto on olemassa.

-f- tiedosto

Tosi, jos tiedosto on olemassa ja se on tavallinen tiedosto.

-g- tiedosto

Todellinen, jos tiedosto on olemassa ja asetettu ryhmä-id.

-h tiedosto

Tosi, jos tiedosto on olemassa ja on symbolinen linkki.

-k- tiedosto

Todellinen, jos tiedosto on olemassa ja sen "tahmea" bitti on asetettu.

-p- tiedosto

Tosi, jos tiedosto on olemassa ja nimetty putki (FIFO).

-r- tiedosto

Totta, jos tiedosto on olemassa ja on luettavissa.

-s- tiedosto

Tosi, jos tiedosto on olemassa ja sen koko on suurempi kuin nolla.

-t fd

Todellinen, jos tiedoston kuvaaja fd on avoin ja viittaa terminaaliin.

-u- tiedosto

Todellinen, jos tiedosto on olemassa ja sen set-user-id bitti on asetettu.

-w- tiedosto

Tosi, jos tiedosto on olemassa ja se on kirjoitettavissa.

-x- tiedosto

Totta, jos tiedosto on olemassa ja se on suoritettavissa.

-O- tiedosto

Todellinen, jos tiedosto on olemassa ja sen omistaja on tehokas käyttäjätunnus.

-G- tiedosto

Tosi, jos tiedosto on olemassa ja sen omistaja on tehokas ryhmän tunnus.

-L- tiedosto

Tosi, jos tiedosto on olemassa ja on symbolinen linkki.

-S- tiedosto

Tosi, jos tiedosto on olemassa ja se on pistorasia.

-N- tiedosto

Tosi, jos tiedosto on olemassa ja sitä on muokattu sen viimeisen lukemisen jälkeen.

tiedosto1 - nt tiedosto2

Todellinen, jos tiedosto1 on uudempi (päivämäärän mukaan) kuin tiedosto2 tai jos tiedosto1 on olemassa ja tiedosto2 ei.

tiedosto1 - ot tiedosto2

Tosi, jos tiedosto1 on vanhempi kuin tiedosto2 tai jos tiedosto2 on olemassa ja tiedosto1 ei.

tiedosto1 -ef- tiedosto2

Tosi, jos tiedosto1 ja tiedosto2 viittaavat samaan laitteeseen ja inode-numeroihin.

-o optname

Tosi, jos shell option optname on käytössä. Katso lisävarusteiden -o -vaihtoehdon alla oleva luettelo vaihtoehdoista.

-z- merkkijono

Totta, jos merkkijonon pituus on nolla.

-n merkkijono

jono

Tosi, jos merkkijonon pituus on ei-nolla.

string1 == merkkijono2

Totta, jos merkkijono on yhtä suuri. = voidaan käyttää sijasta == tiukkaa POSIX-vaatimustenmukaisuutta varten.

string1 ! = merkkijono2

Totta, jos merkkijonot eivät ole yhtä suuret.

string1 < merkkijono2

Tosi, jos merkkijono1 lajittelee ennen merkkijonon leksikografisesti nykyisessä paikassa.

merkkijono1 > merkkijono2

Todellinen, jos merkkijono1 lajittelee string2: n jälkeen merkityn sanaston nykyisellä alueella.

arg1 OP arg2

OP on yksi -eq , -ne , -lt , -le , -gt tai -ge . Nämä aritmeettiset binäärioperaattorit palaavat totta, jos arg1 on yhtä suuri, ei yhtä, pienempi tai yhtä suuri kuin yhtä suuri tai suurempi tai yhtä suuri kuin arg2 . Arg1 ja arg2 voivat olla positiivisia tai negatiivisia kokonaislukuja.

YKSINKERTAINEN KOMMENTIN LAAJENTAMINEN

Kun yksinkertainen komento suoritetaan, kuori suorittaa seuraavat laajennukset, tehtävät ja uudelleenohjaukset vasemmalta oikealle.

1.Seuraajat ovat merkitty muuttuviin tehtäviin (komennon nimiä edeltävät sanat) ja uudelleenohjaukset tallennetaan myöhempää käsittelyä varten.

2.Seurauksia, jotka eivät ole muuttuvia tehtäviä tai uudelleenohjauksia, laajennetaan. Jos sanat jäävät laajennuksen jälkeen, ensimmäinen sana otetaan komennon nimi ja jäljellä olevat sanat ovat argumentteja.

3.Redirections suoritetaan edellä REDIRECTION kohdassa kuvatulla tavalla.

4. Tekstin jälkeen = kunkin muuttujan osoittamisessa tapahtuu tilde-laajennus, parametrin laajennus, komennon korvaaminen, aritmeettinen laajennus ja lainauspoisto ennen muuttujalle osoittamista.

Jos komennon nimi ei tule näkyviin, muuttujat määrittelevät nykyisen kuoriympäristön. Muussa tapauksessa muuttujat lisätään toteutetun komennon ympäristöön eivätkä vaikuta nykyiseen kuoriympäristöön. Jos jokin tehtävistä yrittää määrittää arvon readonly-muuttujaan, tapahtuu virhe ja komento poistuu nollasta poikkeavalla tilalla.

Jos komentojen nimeä ei ole, uudelleenohjaukset suoritetaan, mutta eivät vaikuta nykyiseen kuoriympäristöön. Uudelleenohjausvirhe antaa komennon poistua nollatulosta.

Jos komennon nimi on jäljellä laajennuksen jälkeen, suorittaminen etenee alla kuvatulla tavalla. Muussa tapauksessa komento poistuu. Jos jompikumpi laajennuksista sisälsi komennon korvaamisen, komennon poistumistila on viimeisen komennon korvaamisen lopetus. Jos komennonvaihtoa ei ollut, komento poistuu nollavedellä.

KÄSITTELYJÄRJESTELMÄ

Kun komento on jaettu sanoihin, jos se johtaa yksinkertaiseen komentoon ja valinnainen argumenttien luetteloon, seuraavat toimenpiteet toteutetaan.

Jos komennon nimi ei sisällä viiveitä, kuori yrittää löytää sen. Jos kyseisellä nimellä on kuoriotoiminto, kyseistä toimintoa kutsutaan edellä kuvatulla tavalla FUNCTIONS: ssä . Jos nimi ei vastaa toimintoa, kuori etsii sitä kuorimaisten rakenteiden luettelossa. Jos ottelu löytyy, kutsutaan sisäänrakennettu.

Jos nimi ei ole shell-toiminto eikä sisäänrakennettu, eikä se sisällä vihjeitä, bash etsii jokaisen PATH- elementin hakemistosta, joka sisältää kyseisen tiedoston sisältävän suoritustiedoston. Bash käyttää hash-taulukkoa muistaa täytettävien tiedostojen täydelliset polunimet (ks. Alla oleva SHELL BUILTIN COMMANDS ). PATH: n hakemistojen täydellinen haku suoritetaan vain, jos komentoa ei löydy hajautustaulukosta. Jos haku ei onnistu, kuori tulostaa virheilmoituksen ja palauttaa 127: n poistumistilan.

Jos haku onnistuu tai komennon nimi sisältää yhden tai useampia viivareita, kuori suorittaa nimetyn ohjelman erillisessä suoritusympäristössä. Argumentti 0 asetetaan annettuun nimeen, ja komennon jäljellä olevat argumentit asetetaan annettuihin argumentteihin, jos sellaisia ​​on.

Jos tämä toteutus epäonnistuu, koska tiedosto ei ole suoritettavassa muodossa ja tiedosto ei ole hakemisto, sen oletetaan olevan kuori komentosarja , joka sisältää komentosarjoja. Aluskanta haetaan sen toteuttamiseksi. Tämä alusta uudelleen aloittaa itsensä, niin että vaikutus on kuin jos uusi kuori oli kutsuttu käsittelemään käsikirjoitusta, paitsi että vanhemman muistamat komennot (ks. Alla oleva SHELL BUILTIN COMMANDS ) sijainnit säilytetään lapsella.

Jos ohjelma on tiedosto, joka alkaa #! , loppuosa ensimmäisestä rivistä määrittää ohjelman tulkki. Shell suorittaa määritetyn tulkin käyttöjärjestelmissä, jotka eivät käsittele tätä suoritustiedostomuotoa itse. Tulkkeja koskevat argumentit koostuvat yhdestä valinnaisesta argumentista, joka seuraa tulkkausnimeä ohjelman ensimmäisellä rivillä, jota seuraa ohjelman nimi, jota seuraa komento-argumentteja, jos sellaisia ​​on.

OHJAAMINEN YMPÄRISTÖ

Kuorella on toteutusympäristö , joka koostuu seuraavista:

* Shellin perimäsi avoimet tiedostot, jotka on muokattu exec- sisäänrakennetulla reitityksellä

* Nykyinen työhakemisto, joka on asetettu cd: n , pushdin tai popd: n mukaan , tai kuoren perinnöksi kutsumalla

* tiedoston luomistoimintamuori, joka on määritetty umaskilla tai perinnöllisellä tavalla shellin vanhemmalta

* ansaan asettamat nykyiset ansoja

* Shellparametrit, jotka asetetaan muuttuvalla tehtävällä tai sarjalla tai periytyvät kuoren vanhemmalta ympäristöön

* Shell-toiminnot, jotka on määritetty suorituksen aikana tai jotka on periytetty kuoren vanhemmista ympäristöön

* vaihtoehdot, jotka on otettu käyttöön kutsumalla (joko oletuksena tai komentorivin argumentteina) tai asetuksella

* vaihtoehdot, jotka shopt mahdollistaa

* aliaksilla määritetyt kuori aliakset

* erilaiset prosessin tunnukset, mukaan lukien tausta työpaikat, $$ arvo ja $ PPID- arvo

Kun yksinkertainen komento, joka on muu kuin sisäänrakennettu tai shell-toiminto, on suoritettava, se kutsutaan erillisellä suoritusympäristössä, joka koostuu seuraavista. Ellei toisin mainita, arvot periytyvät kuoresta.

* Shellin avoimet tiedostot sekä mahdolliset muutokset ja lisäykset, jotka määritetään komentojen uudelleenohjauksilla

* nykyinen työhakemisto

* tiedoston luomistilan naamio

* vientiin merkityt shell-muuttujat sekä komennolle viety muuttujat siirretään ympäristöön

* Shellin pyytämät pyyntivälineet nollataan arvoiksi, jotka periytyvät kuoren vanhemmalta, ja hylkeen ohittamat anot jätetään huomiotta

Tässä erillisessä ympäristössä käyttämä komento ei voi vaikuttaa kuoren suoritusympäristöön.

Komennon korvaamista ja asynkronisia komentoja kutsutaan alkeistilassa olevassa ympäristössä, joka on kopioympäristö, paitsi että kuoren pyytämät pyyntivälineet palautetaan arvoksi, jonka kuori periytyi sen emoilusta kutsumalla. Myös sisäänrakennetut komennot, joita kutsutaan putkilinjan osana, suoritetaan myös pohjaympäristössä. Alaotsakeympäristöön tehdyt muutokset eivät voi vaikuttaa kuoren suoritusympäristöön.

Jos komentoa seuraa & ja työn ohjaus ei ole aktiivinen, komennon oletustulostus on tyhjä tiedosto / dev / null . Muutoin kutsuttu komento perii kutsutun kuoren tiedostonkuvaukset sellaisina kuin ne muokkaavat uudelleenohjauksilla.