Sh - Linux Command - Unix Command

NIMI

bash - GNU Bourne-Again SHell

SÜNOPSIS

bash [valikud] [fail]

KIRJELDUS

Bash on sh- ühilduv käsuskeele tõlk, mis käivitab standardse sisendiga või failiga lugenud käske. Bash sisaldab ka kasulikke funktsioone Korni ja C shellidest ( ksh ja csh ).

Bash on ette nähtud IEEE POSIXi shelli ja tööriistade spetsifikatsiooni (IEEE töörühma 1003.2) nõuetele vastavaks rakendamiseks.

VÕIMALUSED

Lisaks ühe-tähemärgi koopiamasinatele, mis on dokumenteeritud komplekti sisestatud käsu kirjelduses, tõlgendab bash järgmisi võimalusi, kui seda kutsutakse:

-c string

Kui -c variant on olemas, siis käske loetakse stringist . Kui pärast stringi on argumendid, määratakse need positsiooniparameetritele, alustades $ 0-st .

-i

Kui -i variant on olemas, on kest interaktiivne .

-l

Tehke bash toimima nii, nagu oleks seda kasutanud sisselogimisekraanina (vt allpool).

-r

Kui -r variant on olemas, on kest piiratud (vt RESTRICTED SHELL allpool).

-s

Kui -s variant on olemas või kui argumentide töötlemisel pole ühtegi argumenti, jäetakse käsklused standardse sisendiga. See suvand võimaldab interaktiivse shelli kasutamisel positsiooni parameetreid määrata.

-D

Kõigi topelt-tsiteeritud stringide nimekiri, millele eelneb $, trükitakse standardsele väljale. Need on stringid, mis on keelte tõlkimisel, kui praegune lokaal ei ole C või POSIX . See tähendab -n valikut; käske ei täideta.

[- +] O [ shopt_optsioon ]

shopt_option on üks müügioperaatori poolt aktsepteeritud shelliparameetritest (vt SHELL BUILTIN COMMANDS allpool). Kui on olemas shopt_option , -O määrab selle võimaluse väärtuse; + O eemaldab selle. Kui shopt_optiti ei esitata, trükitakse standardväljundisse ostja poolt aktsepteeritud shelliparameetrite nimed ja väärtused. Kui väljakutsumise valik on + O , kuvatakse väljund vormingus, mida saab sisendina uuesti kasutada.

A - tähistab valikute lõppu ja keelab täiendava võimaluse töötlemise. Kõik argumendid pärast - käsitletakse failinimesid ja argumente. Argument - võrdub - .

Bash tõlgendab ka mitmeid märksõna valikuid. Need võimalused peavad enne käsurea tuvastamist ilmuma ühekohalise valiku korral.

- dump-po-strings

Võrreldes -D-ga , kuid väljund on GNU gettext po (teisaldatav objekt) failivormingus.

- dump-strings

Samaväärne -D-ga .

--Help

Kuvage standardväljundis kasutatav sõnum ja korralikult väljapääs.

--init-faili fail

--rcfile faili

Käskude täitmine käivitab faili standardse isikliku initsialiseerimisfaili ~ / .bashrc asemel, kui shell on interaktiivne (vt allpool).

--Logi sisse

Samaväärne -l .

- ärakuulamine

Ärge kasutage GNU lingilinki raamatukogu, et lugeda käsureale, kui shell on interaktiivne.

--profiil

Ärge loe kogu süsteemi käivitusfaili / etc / profile või mis tahes isiklikke initsialiseerimisfaile ~ / .bash_profile , ~ / .bash_login või ~ / .profile . Vaikimisi loeb bash neid faile, kui seda kasutatakse sisselogimisekraanina (vt allpool).

--norc

Ärge looge ja käivitage isikliku initsialiseerimisfaili ~ / .bashrc, kui shell on interaktiivne. See valik on vaikimisi sisse lülitatud, kui shell on kutsutud sh-ga .

--positsioon

Muutke bashi käitumist, kus vaikeoperatsioon erineb standardist POSIX 1003.2 standardi ( posix-režiim ).

- piiratud

Kest on piiratud (vt RESTRICTED SHELL allpool).

--rpm-nõuab

Koosta skripti käitamiseks vajalik failide loend. See tähendab "-n" ja nende suhtes kehtivad samad piirangud kui aegviga kontrollimise kontrollimise kompileerimisel; Mugavust, [] testid ja evalsid ei analüüsita, mistõttu võivad mõned sõltuvused olla kasutamata. --verbose Ekvivalent -v .

--versioon

Näidake standardväljale selle bashin eksemplari versiooni teavet ja edukalt väljuge.

ARGUMENTID

Kui argumendid jäävad pärast optsiooni töötlemist ja ei ole esitatud -c ega -s valikut, siis eeldatakse, et esimene argument on koopia käskude faili nimi. Kui bash on sellisel moel kutsutud, on $ 0 määratud faili nimega ja positsiooniparameetrid on määratud ülejäänud argumentidega. Bash loeb ja käivitab käske sellest failist, seejärel lahkub. Bashi väljumise olek on skriptis käivitatava viimase käsu väljumise olek. Kui käske ei käivitata, on väljumiskoht 0. Esmalt tehakse katse faili avamiseks praeguses kataloogis ja kui faili ei leita, siis käsk otsib skripti PATHi katalooge.

Süüdistuse esitamine

Sisselogimisaken on selline, mille argumendi esimene märk on null - või algab see --login- valikuga.

Interaktiivne kest on käivitunud ilma mittespetsiifiliste argumentideta ja ilma -c valikuta, mille standardne sisend ja väljund on mõlemad ühendatud terminalidega (nagu määrati isatty (3)) või alustati -i- valikuga. PS1 on seatud ja $ - sisaldab i, kui bash on interaktiivne, võimaldades shelli skripti või käivitusfaili seda seisundit testida.

Järgnevad lõiked kirjeldavad, kuidas bash käivitab oma käivitatavaid faile. Kui mõni fail on olemas, kuid seda ei saa lugeda, teatab bash viga. Tildes on failide nimedes laiendatud, nagu on kirjeldatud allpool jaotises EXPANSION Tilde laienduse all.

Kui bash on kutsutud interaktiivse sisselogimisekraanina või kui mitte-interaktiivne shell koos logimisvõimalusega , loeb see esimest korda ja käivitab failid / etc / profile , kui see on olemas. Pärast selle faili lugemist otsib ta selles järjekorras ~ / .bash_profile , ~ / .bash_login ja ~ / .profile ning loeb ja käivitab käsklusi esimesest, mis on olemas ja on loetav. --noprofiilimisvõimalust saab kasutada, kui kest on käivitunud, et takistada seda käitumist.

Kui sisselogimisrauser väljub, siis bash loeb ja käivitab failid ~ / .bash_logout , kui need on olemas.

Kui käivitatakse interaktiivne kest, mis ei ole sisselogimisringi, siis bash loeb ja käivitab käske ~ / .bashrc , kui see fail on olemas. Seda võib pärssida, kasutades --norc- valikut. Fail -rcfile- fail sundib bashit lugema ja käivitama failid ~ / .bashrc asemel failist .

Kui bash käivitatakse mitteinteraktiivselt, käivitab näiteks shell skripti keskkonnas muutuja BASH_ENV , laiendab selle väärtust, kui see seal ilmub, ja kasutab laiendatud väärtust faili nimeks lugemiseks ja täitmiseks . Bash käitub nii, nagu oleks täidetud järgmine käsk:

kui [-n "$ BASH_ENV"]; siis "$ BASH_ENV"; fi

kuid PATH-i muutuja väärtust ei kasutata faili nime otsimiseks.

Kui bash on viidatud nimega sh , püüab see varjatud ajalooliste versioonide käivituskäitumist jäljendada võimalikult täpselt, kuid vastab POSIXi standardile. Kui seda kutsutakse interaktiivse sisselogimisekraanina või mitte-interaktiivseks shelliks koos logimisvalikuga , proovib see kõigepealt neid / etc / profile ja ~ / .profile käske lugeda ja käivitada selles järjekorras. Selle käitumise pärssimiseks võib kasutada --noprofiili võimalust. Kui kutsutakse interaktiivseks shelliks koos nimega sh , otsib bassk muutuja ENV , laiendab selle väärtust, kui see on määratletud, ja kasutab laiendatud väärtust faili nimeks lugemiseks ja täitmiseks. Kuna shell, mida kutsutakse shiks, ei püüa lugeda ja käivitada käske mis tahes teistest käivitusfailidest, --rcfile- valik ei mõjuta. Nimega sh, mis ei ole interaktiivne, ei püüa lugeda ühtegi teist käivitusfaili. Kui käsk on sh , bash sisestab posix-i režiimi pärast käivitusfailide lugemist.

Kui bash käivitatakse posix- režiimis, nagu ka käsu -posix käsureal, järgib POSIX-i standard käivitusfailide jaoks. Selles režiimis laiendavad interaktiivsed kestad ENV muutuja ja käske loetakse ja täidetakse failist, mille nimeks on laiendatud väärtus. Muid käivitamisfaile ei loeta.

Bash üritab määrata, millal seda käitab kaugserveri deemon, tavaliselt rshd . Kui bash määrab, et rshd käitab seda , siis loeb ja käivitab käske ~ / .bashrc , kui see fail on olemas ja on loetav. See ei tee seda, kui seda nimetatakse sh . Seda käitumist pärssimiseks võib kasutada --norc- valikut, ja -rcfile- valikut saab kasutada teise faili lugemiseks, kuid rshd ei kasuta üldjuhul shelli nende valikutega või lubab neid täpsustada.

Kui shelli käivitatakse efektiivse kasutaja (grupi) idiga, mis ei ole võrdne reaalse kasutaja (grupi) ID-ga, ja -p valikut ei anta, käivitamisfaile ei loeta, shellifunktsioonid ei pärine keskkonnast, SHELLOPTS Muutuja, kui see ilmub keskkonnas, ignoreeritakse ja efektiivne kasutaja ID on reaalse kasutaja ID. Kui valik -p on pakutud väljakutse korral, on käivituskäitumine sama, kuid efektiivne kasutaja ID ei lähtesta.

MÄÄRATLUSED

Käesolevas dokumendis kasutatakse järgmisi mõisteid.

tühi

Tühik või sakk.

sõna

Tähemärkide jada, mida shell peetakse üheks ühikuks. Tuntud ka kui token .

nimi

Sõna, mis koosneb ainult tähtnumbrilistest tähemärkidest ja alakriipsudest ning algab tähestiku tähemärgiga või alakriipsuga. Samuti nimetatakse seda identifikaatoriks .

metasarakter

Tähemärk, mis kodeerimata, eraldab sõnu. Üks järgmistest:

| & () <> tühikuklahv

kontrolli operaator

Märgendi, mis täidab kontrollfunktsiooni. See on üks järgmistest sümbolitest:

|| && ;; () |

Reserveeritud sõnad

Reserveeritud sõnad on sõnad, millel on shellile eriline tähendus. Järgmised sõnad on tunnistatud reserveeritud, kui need ei ole noteeritud, ja kas lihtsa käsu esimene sõna (vt allpool SHELL GRAMMAR ) või juhtumi kolmandat sõna või käsku:

! juhul tehke elif veel esak fi funktsiooni, kui valida, siis kuni {} aeg [[]]

SHELL GRAMMAR

Lihtsad käsud

Lihtne käsk on valikuliste muutuja määramiste järjestus, millele järgneb tühjade eraldatud sõnade ja redirektsioonide ning mille lõpetab juhtoperaator. Esimene sõna määrab käskluse, mida käivitatakse, ja see edastatakse kui argument null. Ülejäänud sõnad edastatakse käskluse käivitamiseks argumentidega.

Lihtsa käsu tagastusväärtus on selle väljumise olek, või 128+ n, kui käsk on lõpetatud signaali n abil .

Torustikud

Torujuhe on järjestus ühe või mitme käsuga, mis on eraldatud tähisega | | . Torujuhtme formaat on:

[ aeg [ -p ]] [! ] käsk [ | command2 ...]

Käsu standardväljund on toru kaudu ühendatud käskluse standardse sisendiga2. See ühendus toimub enne mis tahes käsu määratud redireerimist (vt REDIRECTION allpool).

Kui reserveeritud sõna ! eelneb torujuhtmele, on selle torujuhtme väljumisasend loogiline EI viimase käskluse väljumisasendist. Vastasel korral on torujuhtme olek viimase käsu väljumise olek. Koor ootab kõiki torujuhtme käsud lõpetama enne väärtuse tagastamist.

Kui ajavormistus sõna eelneb torujuhtmele, teatatakse torujuhtme lõppemisest nii kasutaja kui ka süsteemi täitmise ajal kulunud süsteemi aeg. Variant -p muudab POSIX-i määratud väljundvormingu. TIMEFORMATi muutuja võib seada vormingujärjele, mis määrab, kuidas ajastusinfo tuleks kuvada; vaadake TIMEFORMATi kirjeldust allpool olevate Shelli muutujate all.

Iga torujuhtme käsk käivitatakse eraldi protsessina (st alamkataloogis).

Nimekirjad

Nimekiri on ühe või mitme torujuhtme järjestus, mille on eraldanud üks operaatoritest ; , & , && või || , ja valikuliselt lõpetatud ühega ; , & või .

Nendest loendit kasutavad operaatorid && ja || olema võrdne eelisjärjekorras ; ja &, mis on võrdselt tähtsad.

Nimede asemel võib semikoolonist käskude piiritlemiseks ilmuda ühe või mitme uue rea jada.

Kui käsku lõpetab juhtimiskäsk operaator & , käsk käivitab käsk alamjooksus taustal . Koor ei oota, kuni käsk lõpetatakse, ja tagasiside olek on 0. Käsud, mis on eraldatud ; viiakse läbi järjestikku; shell ootab iga käskluse lõpetamist omakorda. Tagasiside olek on viimase käskluse lõpetamise olek.

Juhtimisoperaatorid && ja || tähistavad AND-nimekirju ja OR-loendeid vastavalt. AND-loendil on vorm

command1 && command2

Käsk 2 käivitatakse ainult juhul, kui käsk1 tagastab nullist väljumise oleku.

VOR-loetelu on vormis

command1 || command2

käsk 2 käivitatakse siis ja ainult siis, kui käsk1 tagastab nullist väljapääsu. AND- ja VÕI-loendite tagasiside olek on nimekirja viimati kasutatud käsu väljumise olek.

Liitkäsklused

Ühendi käsk on üks järgmistest:

( nimekiri )

nimekiri täidetakse alamkataloogis. Muutuja ülesanded ja sisseehitatud käsud, mis mõjutavad shelli keskkonda, jäävad kehtima pärast seda, kui käsk on lõpule jõudnud. Tagasiside olek on loendi lõpetamise olek.

{ list ; }

nimekiri lihtsalt käivitatakse praeguses shellikeskkonnas. nimekiri tuleb lõpetada uue reaga või semikooloniga. Seda tuntakse rühma käsuga . Tagasiside olek on loendi lõpetamise olek. Pange tähele, et erinevalt metasarveist ( ja ) on { ja } reserveeritud sõnad ja see peab ilmnema siis, kui reserveeritud sõna on lubatud tunnustada. Kuna need ei põhjusta sõna katkemist, tuleb need loendist tühjaks tühistada.

(( väljend ))

Väljendit hinnatakse vastavalt ARITHMETIC HINNATSIOONIS allpool kirjeldatud eeskirjadele . Kui väljendi väärtus ei ole null, on tagasiside olek 0; vastasel juhul on tagasitäpsus olek 1. See on täpselt samaväärne väljendiga " väljund ".

[[ väljend ]]

Tagastab oleku 0 või 1 sõltuvalt tingimusliku ekspressiooni ekspressiooni hindamisest. Väljendid koosnevad alljärgnevatest tingimustest, mida kirjeldatakse allpool TINGIMUSLIKUD KIRJELDUSED . [ ] Ja [ ] vahel olevate sõnade vahel ei tehta sõna jagamist ega sõna laiendamist; tilde laiendamine, parameetri ja muutuja laiendamine, aritmeetiline laiendamine, käsu asendamine, protsessi asendamine ja tsiteerimise eemaldamine.

Kui kasutatakse == ja ! = Käitlejaid, peetakse operaatori paremal olevat stringi mustriks ja vastab mustri vastavuse allpool kirjeldatud eeskirjadele. Tagasiväärtus on 0, kui string vastab või ei vasta mustriga vastavalt ja 1 muidu. Iga mustri osa võib tsiteerida, et sundida seda stringi samastama.

Väljavõtteid võib kombineerida järgmiste operaatorite abil, loetletud järjestuses järjestuses:

( väljendus )

Tagastab väljenduse väärtuse. Seda võib kasutada ettevõtjate tavapärase prioriteedi vältimiseks.

! väljendus

Tõsi, kui väljend on vale.

expression1 && expression2

Tõsi, kui mõlemad expression1 ja expression2 on tõesed.

expression1 || expression2 Tõsi, kui kas expression1 või expression2 on tõene.

&& ja || Operaatorid ei hinda väljendeid2, kui väljendi väärtus 1 on piisav, et määrata kogu tingimusliku väljendi tagastatav väärtus.

nimi [ sõna ]; tegema nimekirja ; lõpetatud

Järgmiste sõnade loend on laiendatud, luues objektide loendi. Muutuja nimi määratakse omakorda selle loendi igale elemendile ja iga kord täidetakse nimekiri . Kui sõna on ära jäetud, käivitab käsk nimekirja üks kord iga seatud parameetri kohta (vt PARAMEETRID allpool). Tagasiside olek on viimati käivitatava käsu väljumise olek. Kui tühjade loendite tulemuste järgi järgnevate kirjete laiendamine ei toimi, ei käivitata ühtegi käsku ja tagasiside olek on 0.

jaoks (( expr1 ; expr2 ; expr3 )); tegema nimekirja ; lõpetatud

Esiteks, aritmeetilist väljendit expr1 hinnatakse vastavalt ARITHMETIC HINNATSIOONIS allpool kirjeldatud eeskirjadele . Aritmeetilisi väljendeid expr2 hinnatakse seejärel korduvalt, kuni see hinnatakse nulli. Iga kord, kui expr2 väärtus võrdub nullväärtusega, täidetakse loend ja aritmeetiline väljend expr3 hinnatakse. Kui ükskõik milline väljend jäetakse välja, käitub see nii, nagu ta hindab väärtuseks 1. Tagasiväärtus on viimase käskluse lõpetamise olek, mis on täidetud, või vale, kui mõni väljend on kehtetu.

vali nimi [ sõna ]; tegema nimekirja ; lõpetatud

Järgmiste sõnade loend on laiendatud, luues objektide loendi. Laiendatud sõnade komplekt on trükitud standardviga, millele igaühele eelneb number. Kui sõna on ära jäetud, trükitakse positsiooni parameetrid (vt PARAMEETRID allpool). Seejärel kuvatakse PS3- viip ja standardse sisendiga lugemiseks joon. Kui rida koosneb ühest kuvatavatest sõnadest, siis on selle sõna jaoks määratud nime väärtus. Kui rida on tühi, kuvatakse sõnad ja viip uuesti. Kui EOF-i loetakse, siis käsk täidab. Kõik muud väärtused loevad, et nimi on nulliks. Loetud joon salvestatakse muutuja REPLY . Nimekiri täidetakse pärast iga valikut kuni murrangute käskluse käivitamiseni. Valiku väljumise olek on nimekirja viimati käsku väljumise olek või null, kui ühtegi käsku pole täidetud.

sõna [[(() mustriga [ | pattern ]

Juhtkäskluse esimene laiendab sõna ja püüab seda omavahel sobitada iga mustriga , kasutades samu vastavusreegleid nagu parameetri laiendamiseks (vt allpool Pathname Expansion ). Kui mängu leitakse, täidetakse vastav loend . Pärast esimest mängu ei üritata ühtegi järgnevat mängu. Väljapääsu olek on null, kui ühtegi mustrit ei sobi. Vastasel juhul on viimane käsklus lõpetatud olek.

kui nimekirjas ; siis loend; [ elif nimekiri ; siis loend ; ] ... [ muu nimekiri ; ] fi

Kui nimekiri on täidetud. Kui selle väljumise olek on null, siis loend täidetakse. Vastasel juhul käivitatakse iga elifi nimekiri omavahel ja kui selle väljumiskoht on null, siis täidetakse vastav loend ja käsk lõpetatakse. Vastasel korral täidetakse muu nimekiri , kui see on olemas. Väljapääsu olek on viimase käskluse lõpetamise olek või null, kui ükski tingimus pole tõestatud.

nimekirjas ; tegema nimekirja ; lõpetatud

kuni nimekirja ; tegema nimekirja ; lõpetatud

Käsk ajastab käsku pidevalt, kui viimane nimekirja käsk tagastab nullist väljumisoleku. Kuni käsk on identne käsku ajast, välja arvatud see, et test on tühistatud; toimingute nimekiri käivitatakse nii kaua, kui viimane nimekirja käsk tagastab nullist väljas oleva väljumisoleku. Ajutine väljumisstaatus ja seni, kuni käsklused on viimase käsklusega käskude käskluse lõpetamise olek, või null, kui ükski ei ole täidetud.

[ funktsioon ] nimi () { list ; }

See määrab funktsiooninime nime. Funktsiooni keha on käskude loend {ja} vahel. See nimekiri käivitatakse alati, kui nimi on lihtne käsu nimi. Funktsiooni väljumise olek on kehas käivitatava viimase käsu väljumise olek. (Vt FUNKTSIOONID allpool.)

MÄRKUSED

Mitteinteraktiivsel shellil või interaktiivsel shellil, milles on sisse lülitatud sisseostja interaktiivsete kommentaaride valik (vt SHELL BUILTIN COMMANDS allpool), algab sõna, mis algab #ga, ignoreerib seda sõna ja kõiki selle rea ülejäänud märke. Interaktiivne shell, millel ei ole lubatud interaktiivsete komponentide valikut, ei luba kommenteerida. Interaktiivsete kommentaaride valik on interaktiivsetel shellidel vaikimisi sisse lülitatud.

Tsitaat

Quotes kasutatakse konkreetsete tähemärkide või sõnade spetsiifilist tähendust ümbrisele. Tsiteerimist võib kasutada spetsiaalsete erimärkide eritöötluse keelamiseks, et vältida reserveeritud sõnade tunnustamist sellisena ja parameetrite laiendamise vältimist.

Mõlemad DEFINITSIOONID loetletud metasüümid on shellile eriline tähendus ja need tuleb märkida, kui need esindavad ennast.

Kui käskude ajaloolise laiendamise võimalusi kasutatakse, on ajaloo laiendamise tegur, tavaliselt ! , tuleb ajaloo laiendamise vältimiseks tsiteerida.

Seal on kolm tsiteerimismehhanismi: põgenemishäire , ühe hinnapakkumisi ja topeltjutumärke.

Mitte tsiteeritud tagasikäik ( \ ) on põgenemärk . See hoiab alljärgneva tähemärgi grammatilist väärtust, välja arvatud . Kui ilmub \ paar ja tagurpidi kriipsjoonlaud ei ole ise tsiteeritud, käsitletakse seda \ kui joone jätkumist (st see eemaldatakse sisendvoogast ja ignoreeritakse).

Ühekordsete hinnapakkumistega tähtede lisamine säilitab jutumärkides oleva iga tähemärgi reaalset väärtust. Üksainus hinnapakkumine ei pruugi üksikute hinnapakkumiste vahel tekkida, isegi kui sellele eelneb tagasilöök.

Tähemärkide lisamine kahekordse hinnapakkumiste korral säilitab kõik hinnapakkumiste tähemärkide grammatilised väärtused, välja arvatud $ , ` ja \ . Tähemärgid $ ja ` säilitavad oma erilise tähenduse kahekordse hinnapakkumisi. Backslashil on oma eriline tähendus ainult siis, kui sellele järgneb üks järgmistest tähtedest: $ , ` , ' , \ , või . Kahekordse hinnapakkumise võib tsiteerida kahekordsete jutumärkide järgi, eelneb sellele tagasi kallutatud kriipsuga.

Erilised parameetrid * ja @ omavad erilist tähendust, kui tegemist on topeltjutumusega (vt PARAMEETRID allpool).

Vormi $ stringid sõnu käsitletakse spetsiaalselt. Sõna laieneb stringile , kusjuures tagasilöögilangus olevad tähemärgid asendatakse vastavalt ANSI C-standardile. Tagasilöögiläbipääsu järjestused, kui need on olemas, dekodeeritakse järgmiselt:

\ a

hoiatus (kell)

\ b

backspace

\ e

põgenemismärk

\ f

vormi sööt

\ n

uus rida

\ r

käru tagasitulek

\ t

horisontaalne sakk

\ v

vertikaalne vahekaart

\\

tagasilöögilangus

\ '

üks tsitaat

\ nnn

kaheksa-bitine tähemärk, mille väärtus on kaheksandne väärtus nnn (üks kuni kolm numbrit)

\ x HH

kaheksa-bitine tähemärk, mille väärtus on kuueteistkümnendväärtus HH (üks või kaks kuueteistkümnendat numbrit)

\ c x

kontroll- x tähemärk

Laiendatud tulemus on ühe tsiteeritud, nagu oleks dollar märk ei olnud kohal.

Deklaratsiooniga ( $ ) eelnev topelt tsiteeritud string viib stringi tõlkimiseni vastavalt praegusele lingile. Kui praegune lokaal on C või POSIX , ignoreeritakse dollari märk. Kui string on tõlgitud ja asendatud, on asendus kahekordne tsiteeritud.

PARAMEETRID

Parameeter on üksus, mis salvestab väärtused. Eri parameetrite all võib olla nimi , number või üks erimärkidest, mis on loetletud allpool. Koori eesmärkidel on muutuja nimega tähistatud parameeter. Muutuja väärtus ja null või rohkem atribuute . Atribuudid määratakse kasutades declare builtin käsku (vaata allpool SHELL BUILTIN COMMANDS deklaratsiooni ).

Parameeter on seatud, kui sellele on määratud väärtus. Null string on kehtiv väärtus. Kui muutuja on määratud, võib selle tühistada ainult käsu unset builtin käsuga (vt allpool SHELL BUILTIN COMMANDS ).

Muutuja võib määrata vormi avaldusega

nimi = [ väärtus ]

Kui väärtust ei anta, määratakse muutuja null stringile. Kõik väärtused läbivad tilde laiendamise, parameetri ja muutuja laiendamise, käsu asendamise, aritmeetilise laienemise ja tsiteerimise eemaldamise (vt lõiku EXPANSION ). Kui muutuja täisarv on atribuut määratud, siis kehtib aritmeetilise laienduse väärtus, isegi kui $ ((...)) laiendust ei kasutata (vt aritmeetilist laiendit allpool). Sõna jagamist ei tehta, välja arvatud "$ @", nagu on allpool eriparameetrite all . Pathname laiendust ei tehta. Ülekande avaldused võivad samuti ilmneda argumentidena deklareerimiseks , trükkimiseks , eksportimiseks , lugemiseks ja kohalikeks sisemisteks käskudeks.

Positsiooni parameetrid

Positsioneerimisparameeter on parameeter, mida tähistab üks või mitu numbrit, välja arvatud ühekohaline number 0. Positsiooniparameetrid määratakse koondarendist, kui see on välja kutsutud, ja seda võib kasutada määratud setup käskluse abil. Positsiooniparameetrid ei pruugi olla määratud omistamise avaldustega. Asendi parameetrid asetatakse ajutiselt, kui käivitatakse shellifunktsioon (vt FUNKTSIOONID allpool).

Kui positsiooni parameeter, mis koosneb enam kui ühekohalisest numbrist, on laiendatud, peab see olema kinnitatud traksidega (vt lõiku PAIGALDUS ).

Erilised parameetrid

Korpus käsitleb ennekõike mitmeid parameetreid. Neid parameetreid võib viidata ainult; neile ei anta luba.

*

Laiendab asukohaparameetreid, alustades ühest. Kui paisumine toimub topeltjutumuste käigus, laieneb see ühe sõna iga parameetri väärtusega, mis eraldatakse IFSi erimuutuja esimese tähemärgiga. See tähendab, et " $ * " võrdub väärtusega " $ 1 c $ 2 c ... ", kus c on IFS muutuja väärtuse esimene märk. IFS-i tühistamisel eraldatakse parameetrid tühikutega. Kui IFS on null, siis parameetrid ühendatakse sektsioonide eraldajatena.

@

Laiendab asukohaparameetreid, alustades ühest. Kui paisumine toimub topeltjutumuste vahel, laiendab iga parameeter eraldi sõna. See tähendab, et " $ @ " on võrdne väärtusega " $ 1 " " $ 2 " ... Kui positsiooniparameetrite puudumisel pole " $ @ " ja $ @ laiendatult midagi (st need on eemaldatud).

#

Laiendab positsiooni parameetrite arvu kümnendkohal.

?

Laiendab viimati läbitud teadmiste torujuhtme olekut.

-

Laiendab praeguste valikuvõimaluste lippe, nagu on määratud väljakutsumiseks määratud builtini käsklusega või koopia enda poolt määratud väärtustega (näiteks -i- valik).

$

Avaneb shelli protsessi ID. A () alamkataloogis laieneb see praeguse shelli protsessi ID-le, mitte alamkanalile.

!

Uuendab viimati käitatava tausta (asünkroonse) käskluse protsessi ID-d.

0

Avaneb shelli või shelli skripti nimi. See on määratud koopia initsialiseerimiseks. Kui bash on käskude failiga käivitatav, on $ 0 määratud selle faili nimega. Kui baski käivitamisel on -c variant, siis on $ 0 määratud esimese argumendina pärast stringi täitmist, kui see on olemas. Vastasel juhul on see seatud faili nimega, mida kasutatakse bash-i käivitamiseks, nagu on antud argumendiga null.

_

Kui shell käivitatakse, määratakse shelli või shelli skripti absoluutne failinimi, mis käivitatakse argumentide nimekirjas. Seejärel laiendatakse eelmise käsu viimasele argumendile pärast laienemist. Samuti määrake iga käsu täisnimi, mis käivitatakse ja paigutatakse sellele käsule eksporditud keskkonda. E-kirja kontrollimisel hoiab see parameeter praegu kontrollitava postifaili nime.

Shelli muutujad

Kaust määrab järgmised muutujad:

BASH

Laiendab täielikku failinime, mida kasutatakse selle bashi eksemplari käivitamiseks.

BASH_VERSINFO

Näidismassiivi muutuja, mille liikmed hoiavad versiooni infot selle bashi eksemplari kohta. Massiivi liikmete jaoks määratud väärtused on järgmised:

BASH_VERSINFO [ 0]

Peamine versiooni number ( pressiteade ).

BASH_VERSINFO [ 1]

Minimaalne versiooni number ( versioon ).

BASH_VERSINFO [ 2]

Plaastri tase.

BASH_VERSINFO [ 3]

Ehituse versioon.

BASH_VERSINFO [ 4]

Väljalaskeolek (nt beeta1 ).

BASH_VERSINFO [ 5]

MACHTYPE väärtus.

BASH_VERSION

Avab stringi, mis kirjeldab selle bashi eksemplari versiooni.

COMP_CWORD

COMP_LINE

Praegune käsureal. See muutuja on saadaval ainult shellifunktsioonides ja välistes käskudes, mida käivitavad programmeeritavad valmidusfunktsioonid (vt Programmitav täitmine allpool).

COMP_POINT

COMP_WORDS

Massiivi muutuja (vt allpool olevad massiivid ), mis koosnevad praeguse käsurea üksikute sõnade hulgast. See muutuja on saadaval ainult shellifunktsioonides, mida kutsutakse programmeeritavate lõpetamisobjektide jaoks (vt Programmable Completion ( allpool)).

DIRSTACK

Massiivi muutuja (vt allpool olevad massiivid ), mis sisaldab kataloogikogu praegust sisu. Kataloogid ilmuvad virnasse sellises järjekorras, nagu neid kuvatakse tööriistaribade abil. Selle massiivi muutuja liikmete määramiseks võib kasutada juba kataloogis olevaid katalooge, kuid katalooge lisamiseks ja eemaldamiseks tuleb kasutada pushd ja popd builtinsid. Selle muutuja määramine ei muuda praegust kataloogi. Kui DIRSTACK on tühi , kaotab see erilised omadused, isegi kui see hiljem lähtestatakse.

EUID

Laieneb praeguse kasutaja efektiivsele kasutajatunnusele, mis käivitatakse kohe käivitamisel. See muutuja on kirjutuskaitstud.

FUNCNAME

Praegu käivitatava shellifunktsiooni nimi. See muutuja kehtib ainult siis, kui shellifunktsioon käivitub. FUNCNAME-i määramised ei mõjuta ja tagastavad vea oleku. Kui FUNCNAME on tühistatud , kaotab see erilised omadused, isegi kui see hiljem lähtestatakse.

GRUPID

Massiivi muutuja, mis sisaldab nende rühmade loendit, mille liige on praegune kasutaja. GRUPS- ile antavad ülesanded ei mõjuta ja tagastavad vea oleku. Kui GRUPID on tühistatud, kaotab see erilised omadused, isegi kui see hiljem lähtestatakse.

HISTCMD

Praegune käsu ajaloo number või ajaloo loendis olev indeks. Kui HISTCMD on tühi , kaotab see erilised omadused, isegi kui see hiljem lähtestatakse.

HOSTNAME

Automaatselt seatud praeguse hosti nimega.

HOSTTYPE

Seadistatakse automaatselt stringile, mis üheselt kirjeldab masina tüüpi, millele bash on käivitanud. Vaikimisi on süsteemist sõltuv.

LINENO

Iga kord, kui see parameeter on viidatud, asendab kest kümnendnumbrit, mis tähistab skripti või funktsiooni praeguse järjestikuse rea numbri (algusega 1). Kui ei ole skripti ega funktsiooni, ei ole asendatav väärtus garanteeritud, et see oleks mõttekas. Kui LINENO on tühi, kaotab see erilised omadused, isegi kui see hiljem lähtestatakse.

MACHTYPE

Seadistage automaatselt stringile, mis kirjeldab täielikult süsteemi tüüpi, mille bash on käivitanud, standardse GNU protsessor-ettevõtte süsteemi vormingus. Vaikimisi on süsteemist sõltuv.

OLDPWD

Eelmine töökataloog, mille määrab cd käsk.

OPTARG

Viimase variandi argumendi väärtus, mille töötleb getopts builtin käsk (vt SHELL BUILTIN COMMANDS allpool).

OPTIND

Käsu getopts builtin käsuga töödeldava järgmise argumendi indeks (vt SHELL BUILTIN COMMANDS allpool).

OSTYPE

Seadistatakse automaatselt stringile, mis kirjeldab operatsioonisüsteemi, milles bash on käivitanud. Vaikimisi on süsteemist sõltuv.

PIPESTATUS

Massiivi muutuja (vt allpool olevad massiivid ), mis sisaldab kõige uuemas esialgse torujuhtme (mis võib sisaldada ainult ühte käsku) protsesside väljumisoleku oleku väärtusi.

PPID

Kogu vanema protsessi ID. See muutuja on kirjutuskaitstud.

PWD

Praegune töökataloog, nagu määratud cd käsuga.

RANDOM

Iga kord, kui see parameeter on viidatud, genereeritakse juhuslik täisarv vahemikus 0 ja 32767. Juhuslike numbrite jada võib initsialiseerida väärtuse RANDOM määramisega. Kui RANDOM on tühi, kaotab see erilised omadused, isegi kui see hiljem lähtestatakse.

VASTUS

Määrake sisendjoon, mida lugeda lugemise käskluse loomisel, kui argumente ei esitata.

Sekundid

Iga kord, kui sellele parameetrile viidatakse, tagastatakse shellide väljaarvamise sekundite arv. Kui väärtus on määratud SECONDS-idele , siis järgnevatel viidetel tagastatud väärtus on sekundite arv, alates loomisest ja määratud väärtusest. Kui SECONDS on tühistatud, kaotab see erilised omadused, isegi kui see hiljem lähtestatakse.

SHELLOPTS

Kursori eraldatud nimekiri lubatud shellipõhistest valikutest. Iga loendis olev sõna on kehtivaks argumendiks -o valikuks määratud builtin käsule (vt SHELL BUILTIN COMMANDS allpool). SHELLOPTSis kuvatavad valikud on need, mille kohta on teatatud seadistatud -o . Kui see muutuja on bashil käivitamisel keskkonnas, siis lubatakse enne iga käivitamisfaili lugemist iga loendi võimalused. See muutuja on kirjutuskaitstud.

SHLVL

Iga kord, kui algab bashin eksemplar, lisandub üks.

UID

Laiendab praeguse kasutaja ID-d, mis on käivitamisel kohe käivitunud. See muutuja on kirjutuskaitstud.

Koor on kasutusel järgmisi muutujaid. Mõnel juhul määrab bash muutuja jaoks vaikimisi väärtuse; need juhtumid on märgitud allpool.

BASH_ENV

Kui see parameeter on seatud, kui bash käivitab shelliskripti, tõlgendatakse selle väärtust failinimega, mis sisaldab käsku initsialiseerimiseks käsusid, näiteks ~ / .bashrc . BASH_ENV väärtus allub parameetri laiendamisele, käsu asendamisele ja aritmeetilisele laiendusele enne, kui seda tõlgitakse failinimeks. PATH ei kasutata tulematava faili nime otsimiseks.

CDPATH

Cd käsu otsingutee. See on kärbse eraldatud kataloogide loend, milles koor otsib tsv käsuga määratud sihtkoha katalooge. Valimi väärtus on ".: ~: / Usr".

COLUMNS

Valitud loendite printimiseks kasutatakse terminali laiuse määramiseks käsku select builtin. Automaatselt määratud SIGWINCH-i saamisel.

COMPREPY

Massiivi muutuja, millest bash loeb võimalikke täiustusi, mis on genereeritud käivitusfunktsiooniga, mida käivitatakse programmeeritavate lõpetamisobjektide abil (vt Programmitav täitmine allpool).

FCEDIT

Fc builtini käskluse vaikerekond.

FIGNORE

Failinimekirja täitmise käigus ignoreeritav sufikside käärsoole eraldatud nimekiri (vt allpool READLINE ). Failinimi, mille sufiks vastab ühele FIGNORE sisestatud kirjetest, on välja jäetud sobivate failinimede loendist. Valimi väärtus on ".o: ~".

GLOBIGNORE

Kursori eraldatud mallide loend, mis määrab failinimede komplekti, mida asukohateade laiendamisel eiratakse. Kui failinimi, mis vastab sõna nime laiendamismustrile, vastab ka ühele GLOBIGNORE mudelitest, eemaldatakse see vastete loendist.

HISTCONTROL

Kui seadeks on ignoreerivus , ei lisata ajaloendite loendisse kirjeid , mis algavad tühikukirjadega . Kui seatud ignoreerimisväärtusele , ei sisestata viimast ajaloo reale vastavaid ridu. Sõltumatu väärtus ühendab kaks võimalust. Kui see on tühi või kui see on seatud mõnele muule väärtusele kui ülaltoodud, siis kogu parseri poolt loetud ridad salvestatakse ajaloo loendisse, sõltuvalt HISTIGNORE väärtusest. Selle muutuja funktsiooni asendab HISTIGNORE . Mitme rida liitmiku käsu teist ja järgnevaid ridu ei testita ning need lisatakse ajalukku sõltumata HISTCONTROLi väärtusest.

HISTFILE

Faili nimi, kus käskude ajalugu on salvestatud (vt Ajalugu allpool). Vaikeväärtus on ~ / .bash_history . Kui tühi, käsku ajalugu ei salvestata, kui interaktiivne kiri lahkub.

HISTFILESIZE

Ajaloo failis sisalduvate ridade maksimaalne arv. Kui sellele muutujale on antud väärtus, lühendatakse ajaloo faili, kui see on vajalik, et see ei sisalda rohkem kui see ridade arv. Vaikeväärtus on 500. Ajaloo fail lüheneb selle suurusega ka pärast selle kirjutamist, kui interaktiivne kiri lahkub.

HISTIGNORE

Koolidevaheline nimekiri mustritest, mida kasutatakse, et otsustada, milliseid käsureale ajaloendite loendis salvestada. Iga mustriga on ankurdatud joone alguses ja see peab vastama kogu reale (ei lisata kaudset sõna " * "). Pärast seda, kui HISTCONTROLi poolt määratud kontrollid on rakendatud, testitakse iga mustrit rida. Lisaks tavapärasele shellimustrile vastavatele tähemärkidele vastab ` & 'eelmise ajaloo reale. ` & 'võib pääseda tagasi tagasilõikesse; enne vastuse üritamist eemaldatakse tagasilöök. Mitme rida liitmiku käsu teist ja järgnevaid ridu ei testida ja lisatakse ajaloole sõltumata HISTIGNORE väärtusest.

HINNAD

Käsuajaloos mäletavate käskude arv (vt Ajalugu allpool). Vaikeväärtus on 500.

KODU

Praeguse kasutaja kodukataloog; cd builtini käsu vaikeväärtus. Selle muutuja väärtust kasutatakse ka tilde laiendamise teostamisel.

HOSTFILE

Sisaldab faili nime samas vormingus nagu / etc / hosts, mida tuleks lugeda, kui shell vajab hostinime. Võimaliku masinanime lisamise loendit võidakse käivitada kohe; järgmisel korral proovitakse pärast masina väärtuse muutmist masinanime valmimist, bash lisab uue faili sisu olemasolevasse loendisse. Kui HOSTFILE on seadistatud, kuid sellel pole väärtust, siis bash üritab lugeda / etc / hosts, et saada võimalike masinanimede täiustuste loendit. Kui HOSTFILE on tühistatud, tühjendatakse masinanimede loend.

IFS

Internal Field Separator, mida kasutatakse pärast laiendamist sõna jagamiseks ja loendisse read integreeritud käskluse abil ridade jagamiseks sõnaks. Vaikeväärtus on `` ''.

IGNOREEOF

Interaktiivse ümbrise toimingut kontrollib EOF-i tunnuse saamine ainsa sisendina. Kui see on seatud, on väärtus järjestikuste EOF- tähemärkide arv, mis sisestatakse enne sisestamist bashist välja . Kui muutuja on olemas, kuid sellel ei ole numbrilist väärtust või ei ole väärtust, on vaikimisi väärtus 10. Kui seda ei ole, tähendab EOF shelli sisendi lõppu.

INPUTRC

Readline käivitusfaili failinimi, ignoreerides vaikimisi ~ / .inputrc (vt allpool READLINE ).

LANG

Kasutatakse, et määrata kategooria kategooria mis tahes kategooriale, mis pole spetsiaalselt valitud muutujaga, mis algab LC_ -ga .

LC_ALL

See muutuja ignoreerib LANG väärtust ja muud LC_- väärtust, mis määrab lokaal-kategooria.

LC_COLLATE

See muutuja määrab võrdluse järjekorra, mida kasutatakse aadressi laiendamise tulemuste sorteerimisel, ning määrab kindlaks ulatuse väljendid, samaväärsusklassid ja järjestuste võrdlemise pathname laiendamise ja mustri sobitamise vahel.

LC_CTYPE

See muutuja määrab märgiklasside tähemärkide ja käitumise tõlgenduse pathname laiendamisel ja mustrite sobitamisel.

LC_MESSAGES

See muutuja määrab lokaali, mida kasutatakse topeltotsitud stringide tõlkimiseks, millele eelneb $ .

LC_NUMERIC

See muutuja määrab numbrivorminguks kasutatava lokaalse kategooria.

LINID

Valitud loendite printimiseks kasutatakse veeru pikkuse määramiseks käsuga select builtin. Automaatselt määratud SIGWINCH-i saamisel.

MAIL

Kui see parameeter on määratud faili nimega ja MAILPATHi muutuja pole määratud, teavitab bash kasutaja kirja saabumist määratud faili.

MAILCHECK

Määrab, kui sageli (sekundites) läheb kirja bash- kontroll. Vaikimisi on 60 sekundit. Kui on aeg postitada kontrollida, teeb koore seda enne esmase kiire kuvamist. Kui see muutuja on tühistatud või seatud väärtuseni, mis ei ole nulliga võrdne või sellega võrdne, keelab kestus kirja kontrollimise.

MAILPATH

Koolidevaheline nimekiri failinimedest, mida saab meil kontrollida. Sõnumit, mida trükitakse, kui post saabub kindlale failile, võib määrata, eraldades faili nime sõnumist, millel on `? '. Kui seda kasutatakse sõnumi tekstis, $ _ laieneb praeguse postifaili nimele. Näide:

MAILPATH = '/ var / mail / bfox?' 'Teil on post ": ~ / shell-mail?" "$ _ On meil!"

Bash varustab selle muutuja vaikeväärtust, kuid tema kasutatavate postifailide asukoht on süsteemist sõltuv (nt / var / mail / $ USER ).

OPTERR

Kui väärtus on seatud väärtusele 1, näeb bash käsku getopts builtin genereeritud veateateid (vt SHELL BUILTIN COMMANDS allpool). OPTERR on initsialiseeritud 1-le iga kord, kui shell käivitatakse või shelliskript täidetakse.

PATH

Käskude otsingutee. See on kärjesulgud kataloogide loend, milles shell otsib käske (vt COMMAND EXECUTION allpool). Vaikimisi tee sõltub süsteemist ja määrab administraator, kes installib bash . Ühine väärtus on `` / usr / gnu / bin: / usr / local / bin: / usr / ucb: / bin: / usr / bin :. ''.

POSIXLY_CORRECT

Kui see muutuja on bashil käivitamisel keskkonnas, siseneb koletis posix-režiim enne käivitamisfailide lugemist, justkui oleks pakutud -positsioonide väljavõtmise võimalus. Kui see on kohe käivitamise ajal seadistatud, siis bash võimaldab POSIX-i režiimi , justkui oleks käskude seade -o posix täide viidud.

PROMPT_COMMAND

Kui see on seatud, käivitatakse väärtus enne iga esmase viipa väljaandmist käsku.

PS1

Selle parameetri väärtust laiendatakse (vt allpool PROMPTING ) ja seda kasutatakse esmase kiire stringina. Vaikeväärtus on `` \ s- \ v \ $ ''.

PS2

Selle parameetri väärtust laiendatakse nagu PS1-ga ja kasutatakse teisese kiire stringina. Vaikimisi on `` > ''.

PS3

Selle parameetri väärtust kasutatakse käskluse valimiseks (vt SHELL GRAMMAR ülal).

PS4

Selle parameetri väärtust laiendatakse nagu PS1-ga ja väärtus trükitakse enne iga käskluse bash kuvamist täitmisjälgimise ajal. PS4 esimene märk kordub korduvalt, kui vajalik, et näidata erinevaid suunatustasemeid. Vaikimisi on `` + ''.

TIMEFORMAT

Selle parameetri väärtust kasutatakse vormingujärjestina, mis täpsustab, kuidas tuleks kuvada ajastatud teavet torujuhtmete kohta, mis on eelregistreeritud ajaliselt reserveeritud sõnaga. Tähemärk % lisab evakuatsioonijada, mis on laiendatud ajaväärtusele või muule teabele. Escapejärjestused ja nende tähendused on järgmised: traksid tähistavad valikulisi osi.

%%

Grammatiline % .

% [ p ] [l] R

Möödunud aeg sekundites.

% [ p ] [l] U

Kasutajarežiimis kulutatud CPU sekundite arv.

% [ p ] [l] S

Süsteemirešiimis kulutatud CPU sekundite arv.

% P

Protsessi protsent, arvutatud (% U +% S) /% R.

Vabatahtlik p on täpsus , kus on täpsus , murdarvute arv pärast koma. Väärtus 0 ei too kaasa komakohta ega murdarvutamist. Enam kui kolm kohta pärast koma võib olla täpsustatud; väärtused p on suuremad kui 3, muudetakse väärtuseks 3. Kui p ei ole määratud, kasutatakse väärtust 3.

Valikuline l määrab vormi MM m SS pikema vormingu, sealhulgas minutid. FF s. P väärtus määrab, kas see osa kuulub või mitte.

Kui seda muutujat ei ole määratud, käivitab bash nagu väärtuseks $ '\ nreal \ t% 3lR \ nuser \ t% 3lU \ nsys% 3lS' . Kui väärtus on null, ei kuvata ajastusinformatsiooni. Kui vormindri string kuvatakse, lisatakse uut rida.

TMOUT

Kui seadeks on väärtus, mis on suurem kui null, käsitletakse TMOUTi lugemisseadme vaiketähtaega . Valitud käsk lõpeb, kui sisend ei jõua pärast TMOUT sekundit, kui sisend tulevad terminalist. Interaktiivses shellis tõlgendatakse väärtust kui sekundite arvu, mis ootavad sisendit pärast esmase viipa väljaandmist. Bash lõpetab pärast seda sekundit, kui sisend ei jõua, ooteaega.

auto_resume

See muutuja kontrollib, kuidas shell suhtleb kasutaja ja töö juhtimisega. Kui see muutuja on määratud, käsitletakse ühe sõna lihtsaid käske ilma ümbersuunamiseta olemasoleva lõpetatud töö jätkamiseks kandideerijatena. Ei ole mingit mitmetimõistetavust lubatud; kui sisestatud stringist on rohkem kui üks töökoht, valitakse viimati avatud töö. Selles kontekstis on peatatud töö nimi käsureal, mida kasutatakse selle käivitamiseks. Kui seatud täpsele väärtusele, peab esitatud string vastama täpselt peatatud töö nimele; kui see on alamstringile määratud, peab antud string sisaldama lõpetatud töö nime alamstringi. Alamstringi väärtus pakub funktsioone, mis on analoogsed % -ga? töö identifikaator (vt JOB CONTROL all). Kui seadeks on mõni muu väärtus, peab tarnitud string olema peatatud töö nime eesliide; see annab funktsionaalsuse, mis on analoogne % töö identifikaatoriga.

ajaloolised baarid

Kaks või kolm tähemärki, mis kontrollivad ajaloo laiendamist ja tokeniseerimist (vt AJALOOLI LÄBIVAATAMINE allpool). Esimene täht on ajaloo laiendamise tegur, tähemärki, mis annab märku ajaloo laiendamise algusest, tavaliselt ` ! " Teine tähemärk on kiire asendusmärk , mida kasutatakse stenogrammina sisestatud eelmise käskluse taaskäivitamiseks, asendades käsku üks string teisele. Vaikimisi on ` ^ '. Valikuline kolmas tähemärk on märk, mis näitab, et ülejäänud rida on kommentaar, kui seda leitakse sõna esimese tähemärgina, tavaliselt ' # '. Ajaloo kommentaarimärk põhjustab joone ülejäänud sõna jaoks ajaloolise asendamise tühistamise. See ei pruugi tingimata põhjustada koondparseeril kommenteerimiseks ülejäänud joont.

Massiraadid

Bash pakub ühemõõtmelisi massiivi muutujaid. Iga muutujat võib kasutada massiivina; declare builtin kuulutab selgesõnaliselt massiivi. Massiivi suurusele ei ole kehtestatud maksimaalset piirmäära ega ka nõuet, et liikmeid indekseeritakse või määratakse üksteisele järgnevalt. Massiivid indekseeritakse, kasutades täisarvu ja on null-põhine.

Massiiv luuakse automaatselt, kui mõni muutuja on määratud süntaksinime [ alamkaadri ] = väärtuse kasutamiseks . Indeksi käsitatakse aritmeetilise väljendina, mis peab hindama nulli võrra suuremaks või võrdseks. Massiivi selgeks tunnistamiseks kasutage declare -a nime (vt SHELL BUILTIN COMMANDS allpool). deklareerima, et ka nimi on [ alapealkiri ]; indeks ignoreeritakse. Atribuutide saab määrata massiivi muutujaga, kasutades deklareeritavaid ja lugemissertifikaate. Iga atribuut kehtib kõigi massiivi liikmete kohta.

Massiivid on määratud kasutama vormi nime = ( väärtus 1 ... väärtus n ) ühendi määramist, kus iga väärtus on vormi [ alaindeks ] = string . Vaja on ainult stringi . Kui esitatakse kohustuslikud sulgud ja alaindeksid, määratakse see indeks; vastasel juhul on määratud elemendi indeks viimane indeks, mis on määratud avaldusega pluss üks. Indekseerimine algab nulliga. Seda süntaksi aktsepteerib ka deklareerima . Üksikuid massiivi elemente võib määrata ülaltoodud nime [ alamkanal ] = väärtuse süntaksi kasutamiseks.

Kasutamata komplekti kasutatakse massiivide hävitamiseks. unset name [indikaator] hävitab massiivi elemendi indeksi alamkraanil . nullitud nimi , kus nimi on massiiv või tühistatud nimi [ alamkanal ], kus alapealkiri on * või @ , eemaldab kogu massiivi.

Kinnita, kohalikud ja ainult lugemissertifikaadid võtavad vastu -a võimaluse massiivi määramiseks. Loetelugemine aktsepteerib -a võimalust määrata massiivile standardsete sisendite abil loetud sõnad. Seadistage ja deklareerige builtins kuvari massiiväärtused viisil, mis võimaldab neid korduvkasutuseks kasutada.

Laiendamine

Laiendamine toimub käsureal pärast seda, kui see on jagatud sõnadeks. Seal on seitset tüüpi laiendamine: trakside laiendamine , tilde laiendamine , parameetri ja muutuja laiendamine , käsu asendamine , aritmeetiline laienemine , sõna lõhkumine ja sõna laiendamine .

Laienduste järjekord on: traatvõrk laiendamine, tilde laiendamine, parameeter, muutuja ja aritmeetiline laiendamine ja käsu asendamine (tehakse vasakult paremale), sõna jagamine ja sõna laiendamine.

Süsteemidel, mis seda toetavad, on olemas täiendav laiendus: protsessi asendamine .

Brace laiendamine

Paaride laiendus on mehhanism, mille abil saab genereerida suvalisi stringe. See mehhanism on sarnane pathname laiendusega , kuid loodud failinimed ei pea olema olemas. Laiendatud mustrite kujul on vabatahtlik preambula , millele järgneb komadega eraldatud stringide seos paaribade vahel, millele järgneb vabatahtlik postkiri . Preambul on eesliide igas trajektoore sisaldavas stringis ja postscript lisatakse seejärel igale tuletatud stringile, laiendades seda vasakult paremale.

Paaride laiendused võivad olla pandud. Iga laiendatud stringi tulemusi ei sorteerita; vasakult paremale, on säilinud. Näiteks { d, c, b } e laieneb "ade ace abe".

Paaride laiendamine toimub enne mis tahes teisi laiendeid ja tulemuste puhul säilitatakse kõik muud laiendusi iseloomustavad märgid. See on rangelt tekstuaalne. Bash ei kohalda süntaktilisi tõlgendusi laienduse konteksti ega brauside teksti vahel.

Seda konstrukti kasutatakse tavaliselt stenografina, kui genereeritavate stringide tavaline eesliide on pikem kui ülaltoodud näites:

mkdir / usr / local / src / bash / (vana, uus, dist, vead)

või

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

Paaride laiendamine toob kaasa väikese vastuolu sh-i ajalooliste versioonidega. sh ei käsitle avamis- või sulgemisribasid spetsiaalselt siis, kui need ilmuvad sõna osana, ja säilitavad need väljundis. Bash eemaldab trakside laiendamise tagajärjel sõnu. Näiteks väljundis kuvatakse sisestatud failina {1,2} sisestatud sõna. Sama sõna väljub fail1 failina2 pärast laiendamist bash . Kui soovitakse ranget ühilduvust sh-ga , alustage bassi võtmist + B- suvandiga või lülitage brauseri laiendamine käsule + B valikule (vt SHELL BUILTIN COMMANDS allpool).

Tilde laiendamine

Kui sõna algab kodeerimata tilde tähemärgiga ( ~~ ), loetakse tilde-prefiksiks kõik enne esimese kärbitud kaldkriipsu (või kõik tähemärke, kui puudub kollisiooniline kaldkriips) varasemaid tähemärke. Kui tsiteeritud ei ole ühtegi tilde-prefiksi tähemärki, käsitletakse tildes järgnenud tilde-prefiksi tähemärke kui võimalikku sisselogimisnime . Kui see sisselogimisnimi on null string, asendatakse tilde shelliparameetri HOME väärtusega . Kui HOME on tühi, asetatakse selle asemel käivitatava kasutaja kodukataloog. Vastasel juhul asendatakse tilde-prefiks kodukataloogiga, mis on seotud määratud sisselogimisnimega.

Kui tilde-prefiks on ~ ~ +, asendatakse shelli muutuja PWD väärtus tilde-prefiksiga. Kui tilde-prefiks on `~ - ', siis on asendatava shelli muutuja OLDPWD väärtus, kui see on määratud. Kui tilde-prefiksil tilde järgivad tähemärgid koosnevad arvast N , mis on valikuliselt eelistatud koos tähega "+" või "-", asetatakse tilde-prefiks kataloogis oleva vastava elemendiga, nagu see kuvatakse poolt dirs builtin kutsutud tilde-prefiks argumendina. Kui tilde-prefiksi tilde järgivad tähemärgid koosnevad numbrist ilma juhtivate "+" või "-", "+" eeldatakse.

Kui sisselogimisnimi on vale või tilde laiendamine ebaõnnestub, ei muutu sõna.

Igat muutuja määramist kontrollitakse kodeerimata tilde-prefiksid kohe pärast : või = . Neil juhtudel tehakse ka tilde paisumist. Sellest tulenevalt võib PATHi , MAILPATHi ja CDPATH-i loomistel kasutada tildeid sisaldavaid failinimesid ja shell määrab laiendatud väärtuse.

Parameetri laiendamine

` $ '-märk tutvustab parameetrite laiendamist, käsu asendamist või aritmeetilist laiendamist. Laiendatav parameetri nimi või sümbol võib olla piiratud, kuid see on vabatahtlik, kuid see aitab kaitsta muutujat, mida saab vahetult pärast seda täiendada, mida võib tõlgendada nime osana.

Kui kasutatakse traksisid, on vastav lõpus olev traks on esimene ` } ', mida ei lukusta tagaklaasi või tsiteeritud stringi abil, mitte sisseehitatud aritmeetilise laienemise, käsu asendamise või parameetri laiendamise kaudu.

Parameetri väärtus on asendatud. Traksid on vajalikud, kui parameeter on rohkem kui ühe numbriga positsiooni parameeter või kui parameetrile järgneb tähis, mida ei tohi tõlgendada selle nime osana.

Allpool toodud juhtudel on sõna allutatud tilde laiendamisele, parameetrite laiendamisele, käsu asendamisele ja aritmeetilisele laienemisele. Kui substringi laiendamine ei toimi, siis alustatakse või tühistatakse parameetri bash- testid; käärsoole väljalülitamine tulemuseks on test ainult parameetri jaoks, mis on tühistatud.

Kasutage vaikeväärtusi . Kui parameeter on tühi või null, asendatakse sõna laienemine. Vastasel juhul asendatakse parameetri väärtus.

Vaikeväärtuste määramine . Kui parameeter on tühi või null, siis laiendatakse sõna parameetrile . Seejärel asendatakse parameetri väärtus. Asukoha parameetreid ja eriparameetreid ei saa sellisel viisil määrata.

Display Error, kui Null või Määramata . Kui parameeter on null või on tühi, siis kirjutatakse standardviga ka sõna laiendamine (või sellekohase sõnumi olemasolu, kui sõna puudub) ja väljakutsu, kui see pole interaktiivne, välja. Vastasel juhul asendatakse parameetri väärtus.

Kasuta alternatiivset väärtust . Kui parameeter on null või tühi, ei asendata midagi, vastasel juhul on sõna laiendamine asendatud.

Muutujate nimesid, mille nimed algavad eesliitega , eraldatakse IFS-i erimuutuja esimese tähemärgiga.

Parameetri väärtuse tähtede pikkus on asendatud. Kui parameeter on * või @ , on asendatav väärtus positsiooniparameetrite arv. Kui parameeter on massiivi nimi, millele on määratud märke * või @ , asendatakse asendatud väärtus massiivi elementide arvuga.

Seda sõna laiendatakse, et luua muster nagu sõna laiendamisel. Kui muster vastab parameetri väärtuse algusele, siis laiendamise tulemus on parameetri laiendatud väärtus, mis vastab kõige lühema vastavusmustrile (`` # '') või pikimale vastavusele (` ## ' "juhtum" kustutatud. Kui parameeter on @ või * , rakendatakse mustri eemaldamise toimingut igal positsiooniparameetril ja laiendus on tulemuste loend. Kui parameeter on massiivi muutuja, millele on märgitud @ või * , siis kasutatakse mustri eemaldamise toimingut iga massiivi liigale omakorda ja laiendus on tulemuseks loend.

Seda sõna laiendatakse, et luua muster nagu sõna laiendamisel. Kui mustriga vastab parameetri laiendatud väärtuse tagaosa, siis laiendamise tulemus on parameetri laiendatud väärtus, mis vastab kõige lühema vastavusmustrile (`` % '') või pikimale vastavusele (`` % % '' juhtum) kustutatud. Kui parameeter on @ või * , rakendatakse mustri eemaldamise toimingut igal positsiooniparameetril ja laiendus on tulemuste loend. Kui parameeter on massiivi muutuja, millele on märgitud @ või * , siis kasutatakse mustri eemaldamise toimingut iga massiivi liigale omakorda ja laiendus on tulemuseks loend.

Muster laieneb, et luua muster sarnaselt sõna laiendusega. Parameeter laieneb ja mustri pikim vaste selle väärtusest asendatakse stringiga . Esimeses vormis asendatakse ainult esimene vaste. Teine vorm põhjustab kõik mustrid , mille stringid on asendatud stringiga . Kui mustriga algab # , peab see olema parameetri laiendatud väärtuse alguses. Kui mustriga algab % , peab see olema parameetri laiendatud väärtuse lõpus. Kui string on null, eemaldatakse muster vasted ja / järgmine muster võib ära jätta. Kui parameeter on @ või * , rakendatakse asendustegevust järjest iga positsiooni parameetri jaoks ja laiendus on tulemuste loend. Kui parameeter on massiivi muutuja, millele on lisatud märge @ või * , siis asendatakse asendustegevust omavahel massiivi iga liigiga ja laiendamine on tulemuste loend.

Käsk asendamine

Käsu asendamine võimaldab käsku väljastada, et asendada käsu nimi. On kaks vormi:

$ ( käsk )

või

` käsk '

Bash täidab käsu laiendamist käsuga ja asendab käsu asendamise käsu standardväljundiga, kustutades kõik uued veerised. Sisseehitatud uued read ei kustutata, kuid neid võib sõrmejaotamise ajal eemaldada. Käsu asendamine $ (kassifail ) saab asendada samaväärse, kuid kiirema $ (< file ).

Kui kasutatakse vanasti tagasiulatuvat asendusvormi, tagastab tagasilõikeliba selle grammatiline tähendus, välja arvatud juhul, kui järgneb $ , ` või \ . Esimene backquote, millele pole eelnev tagasilöök, lõpetab käsu asendamise. $ ( Käsu ) vormi kasutamisel moodustavad kõik sulgudes olevad sümbolid käsuga; ükski ei käsitleta spetsiaalselt.

Käsku asendused võivad olla pandud. Tagasivõttud vormi kasutamisel pesitsevad sisemised tagasikvoodid tagasiulatuva ristlõikega.

Kui asendamine kuvatakse kahekordse hinnapakkumisega, ei tehta tulemuste kohta sõna jagamist ja parameetri laiendamist.

Aritmeetiline laiendamine

Aritmeetiline laiendamine võimaldab aritmeetika väljenduse hindamist ja tulemuse asendamist. Aritmeetiliste laienduste formaat on:

$ (( väljend ))

Väljendit töödeldakse nii, nagu oleks see kahekordsete jutumärkide hulgas, kuid sulgudes olevat topeltotsingut ei käsitleta spetsiaalselt. Kõik väljendeid sisaldavad märgid läbivad parameetrite laiendamise, stringide laiendamise, käsu asendamise ja tsiteerimise eemaldamise. Aritmeetilised asendused võivad olla pandud.

Hindamine viiakse läbi vastavalt ARITHMETIC HINNATOOLi allpool loetletud eeskirjadele . Kui väljend on kehtetu, trükib bash sõnumit, mis näitab rike ja asendust ei toimu.

Protsessi asendamine

Protsessi asendamist toetavad niinimetatud torude ( FIFO ) toetavad süsteemid või avatud failide nimetamise / dev / fd meetod. See võtab vormis <( list ) või > ( list ) . Protsesside loendit käitatakse selle sisendiga või väljundiga, mis on ühendatud FIFO-ga või mõne failiga / dev / fd . Selle faili nimi edastatakse praeguse käsu argumendina laienemise tulemusena. Kui kasutatakse > ( loendi ) vormi, esitatakse failile kirjalikult sisend. Kui kasutatakse <( loendi ) vormi, tuleb lugemiseks esitatud fail lugeda loendi väljundiks.

Kui see on olemas, toimub protsessi asendamine samaaegselt parameetri ja muutuja laiendusega, käsu asendamise ja aritmeetilise laiendusega.

Sõna lahutamine

Koor skannib parameetrite laiendamise, käsu asendamise ja aritmeetilise laiendamise tulemusi, mis ei leitud sõna jagamise topeltjutumuste korral.

Kest koheldab IFS-i iga tähemärki kui eraldajat ja jagab teiste laiendite tulemusi nende tähemärkide sõnadega. Kui IFS on tühi või selle väärtus on täpselt , siis vaikimisi, siis kõik IFS- tähemärkide järjestused tähendavad sõnade piiritlemist. Kui IFS- il on muu väärtus kui vaikimisi, siis ignoreeritakse tühikutähtede tühikute ja vahekaartide järjestused sõna alguses ja lõpus, kui tühimärk on IFS väärtuses ( IFS tühimärk). Iga IFS-i täht, mis ei ole IFS tühimärk, koos kõigi kõrval olevate IFS tühikutega tähistab piiri. IFS-i tühikute tühimärkide järjestust käsitletakse ka eraldajatena. Kui IFSi väärtus on null, ei toimu sõna jagamist.

Selgeid null argumente ( "" või "" ) säilitatakse. Kustutatavad kaudsed null-argumendid, mis tulenevad väärtustest puuduvate parameetrite laiendamisest, eemaldatakse. Kui parameeter, mille väärtust pole, laiendatakse topeltjutumuste hulgas, tühistatakse tulemus null-argumendina ja see jääb alles.

Pange tähele, et kui paisumist ei toimu, ei tehta lahutamist.

Pathname'i laiendamine

Pärast sõna jagamist, välja arvatud juhul, kui -f valik on määratud, bash skannib iga sõna märki * ,? , ja [ . Kui üks nendest tähemärkidest ilmub, siis loetakse sõna musteriks ja asendatakse tähestikuliselt sorteeritud musteriga sobivate failinimede loendiga. Kui ühtegi sobivat failinime ei leita ja shelli valik nullglob on keelatud, jääb sõna muutmata. Kui on määratud nullglob- valik ja ühtegi vastet ei leita, eemaldatakse sõna. Kui shellipõhine nocaseglob on lubatud, sobitatakse see, arvestamata tähestikulisi tähemärke. Kui viisi laiendamiseks kasutatakse mustrit, tuleb nime alguses või kohe pärast kaldkriipsu järgida silma peal ``. '' Selgesõnaliselt, välja arvatud juhul, kui on määratud koopiamasin dotglob . Sõidusuuna sobitamisel peab kaldkriipsu märk alati olema selgesõnaline. Muudel juhtudel ei käsitleta sümbolit ``. '' Spetsiaalselt. SHELL BUILTIN COMMANDS-i all oleva poestiku kirjelduse leiate Nocaseglob , Nullglob ja dotglob shelli kirjelduste kirjeldustest.

GLOBIGNORE-i shelli muutujat saab kasutada, et piirata mustritele vastavate failinimede kogumit. Kui seade GLOBIGNORE on seatud, eemaldatakse kõik sobivate failinimed, mis vastavad ka ühele GLOBIGNORE mudelitest, sobivate loendist. Failinimed ``. '' Ja `` .. '' alati ignoreeritakse, isegi kui on määratud GLOBIGNORE . Kuid GLOBIGNORE seadistamine võimaldab anda dotglob- shelli võimaluse, nii et kõik muud failinimed, mis algavad tähega ``. '', Sobivad . Et saada varasem käitumine ignoreerides failinimesid, mis algavad tähega ``. '' , Tee ``. * '' Üks GLOBIGNORE mudelitest. Kui GLOBIGNORE on tühistatud, on dotglob- valik keelatud.

Mustri sobivus

Kõik mustrid, mis on kujutatud allpool, välja arvatud allpool kirjeldatud spetsiaalsed mustrid, sobivad ise. NUL-tähemärk ei pruugi olla muster. Konkreetsed mustrid tuleb märkida, kui need sobivad sõna otseses mõttes.

Erisümbolil on järgmised tähendused:

*

Sobib mis tahes stringi, kaasa arvatud null string.

?

Sobib ühe tähemärgi.

[...]

Sobib mis tahes lisatud tähtedega. Mõistepikk, mis on eraldatud sidekriipsuga, tähistab vahemiku väljendit ; mis tahes tähemärki, mis sorteerib nende kahe tähemärgi, kaasa arvatud praeguse lokaadi järjestuse ja märkide komplekti kasutades, sobitatakse. Kui esimene märk järgneb [ on a ! või ^ siis sobib ükskõik milline mitte kinnine tähemärk. Tähemärkide sorteerimisjärjestus vahemikku väljendudes määratakse kindlaks praeguse lokaali ja shelli muutuja LC_COLLATE väärtuse, kui see on määratud. A - võib olla sobitatud, lisades selle komplekti esimesele või viimasele tähemärgile. A ] võib olla sobitatud, lisades selle komplekti esimese märgina.

[ Ja ] tähtede klassides saab määrata süntaksiga [: class :] , kus klass on üks järgmistest klassidest, mis on määratletud POSIX.2 standardis:

alnum alpha ascii tühi cntrl digitaalgraafik madalam trükkimine punct space ülemine sõna xdigit
Tähemärkide klass sobib igale sellele klassile kuuluvale märgile. Sõna märk klass vastab tähed, numbrid ja tähemärk _.

[ Ja ] sees võib samaväärsusklassi määrata süntaksiga [= c =] , mis vastab tähemärgile c kõigi samade koondamiskaaluga märksõnadele (vastavalt praeguse lokaliseerimise määratlusele).

[ Ja ] süntaksis [. sümbol .] vastab võrdleva sümboli sümbolile .

Kui extglob- shelli võimalus on sisse lülitatud, siis tuvastatakse mitu laiendatud mustritega seotud operaatorit. Alljärgnevas kirjelduses on muster-nimekiri ühe või mitme mustriga eraldatud loendiga . Komposiitmustrendid võib moodustada ühe või mitme järgneva alam-mustri abil:

? ( muster-nimekiri )

Sobib antud mustrite null või üks esinemine

* ( muster nimekiri )

Sobib antud mustrite null või rohkem

+ ( muster-nimekiri )

Sobib antud näidetest ühe või mitu sündmust

@ ( muster-nimekiri )

Sobib täpselt ühe antud mustri järgi

! ( muster-nimekiri )

Sobib midagi peale ühe antud mustri

Tsiteerimine eemaldamine

Pärast eelmist laiendamist eemaldatakse kõik tähemärgid \ , ' ja ' loetletud järjestused, mis ei tulnud ühest ülaltoodud laiendustest.

SIRIRECTION

Enne käsku käivitamist saab selle sisendit ja väljundit ümber suunata, kasutades spetsiaalset märkust, mida tõlgib shell. Redirection'i võib kasutada ka praeguse shellide täitmise keskkonna failide avamiseks ja sulgemiseks. Järgmised redirection operaatorid võivad eelneda või ilmuda kuskil lihtsa käsu kaudu või võivad järgida käsku . Redirections töödeldakse nii, nagu need kuvatakse, vasakult paremale.

Alljärgnevatel kirjeldustel, kui failide deskriptori number on ära jäetud ja redirection operaatori esimene täht , viitab redirection standard input (failide kirjeldaja 0). Kui suunamisoperatsiooni esimene märk on > , viitab redirection standardväljundile (failide kirjeldaja 1).

Alljärgnevates kirjeldustes toodud redirection operator järgib sõna, kui pole märgitud teisiti, allutatakse sirge laiendamine, tilde laiendamine, parameetri laiendamine, käsu asendamine, aritmeetiline laiendamine, tsiteerimise eemaldamine, sõna laiendamine ja sõna jagamine. Kui see laieneb rohkem kui ühele sõna juurde, teavitab bash viga.

Pange tähele, et ümbersuunamine on märkimisväärne. Näiteks käsk

ls > dirlist 2 > & 1

suunab nii standardväljundi kui standardviga faili dirlist , samas kui käsu

ls 2 > & 1 > dirlist

suunab ainult standardväljundi faili dirlist , sest standardviga dubleeriti standardväljundina enne standardväljundi redigeerimist dirlistile .

Bash käitab mitu failinime, kui neid redireerimisel kasutatakse, nagu on kirjeldatud järgmises tabelis:

/ dev / fd / fd

Kui fd on kehtiv täisarv, dubleeritakse failide deskriptor fd .

/ dev / stdin

Failinäidik 0 dubleeritakse.

/ dev / stdout

Faili deskriptor 1 dubleeritakse.

/ dev / stderr

Failinäidik 2 dubleeritakse.

/ dev / tcp / host / port

Kui host on kehtiv hostinimi või Interneti-aadress ja port on täisarvupostinumber või teenuse nimi, bash üritab avada TCP-ühendust vastava pistikupessa.

/ dev / udp / host / port

Kui host on kehtiv hostinimi või Interneti-aadress ja port on täisarvupostinumber või teenuse nimi, bash üritab avada UDP-ühenduse vastava pistikupessa.

Faili avamise või loomise suutmatus põhjustab ümbersuunamise ebaõnnestumise.

Sisendi suunamine

Sisendi ümbersuunamine põhjustab faili, mille nime tulemuseks on sõna laiendamine, mida saab avada lugemiseks faili deskriptoris n või standardse sisendiga (failide kirjeldaja 0), kui n pole määratud.

Sisendi suunamise üldine vorm on:

[ n ] < sõna

Väljundi ümbersuunamine

Väljundi ümbersuunamine põhjustab faili, mille nimi tuleneb sõna laiendamisest, kirjutamiseks faili deskriptorile n või standardväljundile (failidekirjeldaja 1), kui n pole määratud. Kui faili pole olemas, luuakse see; kui see eksisteerib, on see nurksustatud nulli.

Väljundi ümbersuunamise üldvorm on:

[ n ] > sõna

Kui suunamisoperatsioon on > ja seatud rakenduse noclobber- valik on sisse lülitatud, ei suuna ümbersuunamine, kui fail, mille nimi tuleneb sõna eksistentsist, eksisteerib ja on tavaline fail. Kui redirection operator on > | , või redirection operator on > ja noclobber- valik seatud builtin- käsule ei ole lubatud, üritatakse ümbersuunamist isegi siis, kui sõna nimega fail on olemas.

Redirected Outputi lisamine

Sellisel viisil väljundi ümbersuunamine põhjustab faili, mille nime tulemuseks on sõna laiendus, avamiseks faili deskriptorile n või standardväljundiks (faili deskriptor 1), kui n pole määratud. Kui faili pole, luuakse see.

Väljundi lisamise üldine vorm on:

[ n ] >> sõna

Standardväljundi ja standardviga ümbersuunamine

Bash võimaldab nii standardväljundit (failide kirjeldust 1) kui ka standardset viga väljundit (failide kirjeldust 2) suunata faili, mille nimi on selle konstruktsiooniga sõna laiendamine.

Standardväljundi ja standardvea ümbersuunamiseks on kaks vormingut:

&> sõna

ja

> & sõna

Kahest vormist esimene on eelistatud. See on semantiliselt samaväärne

> sõna 2 > & 1

Siin on dokumendid

Selline redirection annab shellile käsku lugeda aktiivse allika sisendit, kuni on näha ainult ühte sõna sisaldav rida (ilma jäljenevate tühikuteta). Seejärel kasutatakse kõiki antud punkti lugemiseks käsu standardseid sisendeid.

Siin dokumendivorming on:

<< [ - ] sõna siin-dokumendi eraldaja

Sõna ei tehta parameetrite laiendamist, käsu asendamist, aritmeetilist laiendamist või pathnüüme laiendamist. Kui tsiteeritud tähemärki on tsiteeritud, on eraldaja tänu koodi eemaldamisele sõnas ning siin dokumendis olevaid ridasid ei laiendata. Kui sõna on kodeerimata, alljärgneva dokumendi ridade suhtes kohaldatakse parameetrite laiendamist, käsu asendamist ja aritmeetilist laiendamist. Viimasel juhul ignoreeritakse tähemärgi järjekorda \ ja \, \ , $ ja ` , tuleb tsiteerida.

Kui suunamisoperatsioon on << - , siis kõik juhtivad tabeldusmärgid eemaldatakse sisendjoontest ja eraldajat sisaldavast reast. See võimaldab koopia skriptidel siin dokumente loomulikul viisil taandada.

Siin keeled

Selle dokumendi variant on vorming:

<<< sõna

Sõna laiendatakse ja edastatakse standardse sisendi käsule.

Failide kirjelduste kopeerimine

Ümbersuunamise operaator

[ n ] <& sõna

kasutatakse sisendfailide kirjelduste dubleerimiseks. Kui sõna laieneb ühele või mitmele numbrile, on faili deskriptor, mida n tähistab, selle faili deskriptori koopia. Kui sõnajärjekorrad ei määra sisendiks avatud faili deskriptorit, tekib ümbersuunamise viga. Kui sõna hindab väärtuseks - , faili deskriptor n suletakse. Kui n pole määratud, kasutatakse standardset sisendit (failide kirjeldust 0).

Käitaja

[ n ] > ja sõna

kasutatakse sarnaselt väljundfailide kirjelduste duplikaadiga. Kui n pole määratud, kasutatakse standardväljundit (failide kirjeldust 1). Kui numbrilised sõnad ei määra väljundile avatud failidekirjutussüsteemi, tekib ümbersuunamise viga. Erijuhtumina, kui n on välja jäetud ja sõna ei laiene ühele või mitmele numbrile, suunatakse standardväljund ja standardviga vastavalt varem kirjeldatule.

Failidekirjelduste liigutamine

Ümbersuunamise operaator

[ n ] <& numbrit -

liigub faili deskriptori numbri faili kirjelduseks n või standardse sisendiga (failide kirjeldaja 0), kui n pole määratud. number on pärast dubleerimist n juurde suletud.

Samamoodi suunamisoperatsioon

[ n ] > ja number -

liigub faili deskriptori numbri faili kirjelduseks n või standardväljundiks (faili deskriptor 1), kui n pole määratud.

Failide kirjelduste avamine lugemiseks ja kirjutamiseks

Ümbersuunamise operaator

[ n ] <> sõna

põhjustab faili, mille nimeks on sõna laiendus nii lugemiseks kui ka kirjutamiseks failidekirjeldajale n või failide kirjeldajale 0, kui n pole määratud. Kui faili pole olemas, luuakse see.

ALIASID

Alternatiivsed nimed võimaldavad sõna asendada sõna kui seda kasutatakse lihtsa käsu esimese sõna järgi. Kest säilitab nimega aliasaite, mida võib määrata ja kustutada aliasaga ja unaliastab sisseehitatud käske (vt SHELL BUILTIN COMMANDS allpool). Iga käskluse esimest sõna, kui noteerimata, kontrollitakse, kas sellel on alias. Kui nii, siis see sõna asendatakse pealkirja tekstiga. Pseudonüümi nimi ja asendustekst võivad sisaldada mis tahes kehtivat koopia sisendit, kaasa arvatud ülaltoodud metasüümid , välja arvatud juhul, kui varjunime nimi ei pruugi sisaldada = . Varasema teksti esimene sõna on testitud varjunime jaoks, kuid sõna, mis on identne laiendatud aliasiga, ei laiendata teist korda. See tähendab, et näiteks võib ls olla näiteks ls -F , ja bash ei püüa asendus teksti rekursiivselt laiendada. Kui pseudonüümi väärtuse viimane täht on tühi , siis kontrollitakse aliasenda laiendamisel ka järgmist pseudonüümi järel käskirti.

Pseudonüümid luuakse ja loetletakse alias käsuga ja eemaldatakse käsuga unalias .

Vahetustekstis pole argumentide kasutamise mehhanismi. Kui argumendid on vajalikud, tuleb kasutada shellifunktsiooni (vt FUNKTSIOONID allpool).

Aliaseid ei laiendata, kui shell ei ole interaktiivne, välja arvatud juhul, kui shell_optimissuse laiendamine_liidesed on seatud kasutades poesõidukit (vt SHELL BUILTIN COMMANDS allpool olevat poe kirjeldust).

Pseudonüüside määratlemise ja kasutamise eeskirjad on mõnevõrra segaduses. Enne selle rea käskude täitmist loeb Bash alati enne sisestamist vähemalt ühe täieliku sisendi. Kui käsku loetakse, laiendatakse neid varjunimesid, mitte seda, kui see käivitatakse. Seetõttu ei jõustu teise käsuga samas reas olev varjunimede määratlus enne, kui järgmine sisend on sisestatud. Uue pseudonüümi ei mõjuta sellel liinil olevate pseudonüümide määratlemise käske. See käitumine on ka probleemide täitmisel. Funktsioonide määratluse loeteluna laiendatakse varjunimed, mitte funktsiooni täitmisel, sest funktsiooni määratlus on iseenesest liitkäsk. Selle tagajärjel ei ole funktsioonis määratletud varjunimed saadaval alles pärast selle funktsiooni täitmist. Selleks, et olla ohutud, lisage alajaotuse määratlused alati eraldi reale ja ärge kasutage aliasid liitkäsklustel.

Peaaegu iga eesmärgi puhul asendavad aliased koopfunktsioonidega.

FUNKTSIOONID

SHELL GRAMMAR-i all kirjeldatud ülalkirjeldatud shellfunktsioon salvestab hilisema täitmise jaoks käskude seeria. Kui shellifunktsiooni nimi on lihtne käsu nimi, täidetakse selle funktsiooni nimega seotud käskude loend. Funktsioonid täidetakse praeguse shelli kontekstis; Neid tõlgendama ei toimu uut protsessi (kontrast seda shelliskripti täitmisega). Funktsiooni täitmisel muutuvad funktsiooni argumendid selle täitmise ajal positsiooni parameetriteks. Spetsiifilist parameetrit # värskendatakse muudatuse kajastamiseks. Asendiparameeter 0 ei muutu. Funktsioon FUNCNAME on määratud funktsiooni nimeks, kui funktsioon käivitatakse. Kõik muud shelli täitmise keskkonna aspektid on funktsiooni ja selle helistaja vahel ühesugused, välja arvatud see, et DEBUG-i lõksu (vt allpool SHELL BUILTIN COMMAND- ide all olevat lõksu kirjeldust) ei pärda, välja arvatud juhul, kui funktsioonile on antud jälgede atribuut ( vaata deklaratsiooni kirjeldust allpool).

Funktsioonile kohalikke muutujaid võib kohaliku builtini käsuga deklareerida. Tavaliselt on muutujad ja nende väärtused jagatud funktsiooni ja helistaja vahel.

Kui funktsioon builtin käsku tagastab , funktsioon täidab ja käivitamine jätkub järgmise funktsiooni kõne järel käsku. Kui funktsioon on lõpule viidud, taastatakse positsiooni parameetrite ja eriparameetri # väärtused väärtustele, mis neil oli enne funktsiooni täitmist.

Funktsioonide nimed ja määratlused võivad olla loetletud -f-ga deklaratsiooni või trükikirjelduse käskude jaoks. F- variant deklaratsiooniks või trükkimiseks loetleb ainult funktsioonide nimed. Funktsioone saab eksportida nii, et allüksused automaatselt defineeritakse nende abil -f valikuga ekspordiüksusele .

Funktsioonid võivad olla rekursiivsed. Rekursiivsete kõnede arvu ei piirata.

ARIITMEETILINE HINDAMINE

Korpus võimaldab teatud tingimustel aritmeetilisi väljendeid hinnata (vt luba builtin käsku ja aritmeetilist laiendamist ). Hindamine toimub fikseeritud laiusega täisarves, ilma et üleküllust kontrollitaks, kuigi jagamine 0-ga on püütud ja märgistatud vea tõttu. Operaatorid ja nende prioriteetsus ja assotsieeruvus on samad kui C-keeles. Järgmine operaatorite loend on rühmitatud võrdse tähtsusega operaatorite tasemele. Tase on loetletud järjekorras väheneb eelis.

id ++ id -

muutuv järk-järgnev ja post-dekrement

++ id - id

varieeruv eelintutus ja eelnev vähendamine

- +

unaarne miinus ja pluss

! ~

loogiline ja bitwise eitamine

**

taandumine

* /%

korrutamine, jagunemine, ülejäänud

+ -

lisamine, lahutamine

<< >>

vasak ja parem bitijälg muutus

<=> = <>

võrdlus

==! =

võrdsus ja ebavõrdsus

&

bitwise JA

^

bituumiliselt eksklusiivne VÕI

|

bitwise OR

&&

loogiline JA

||

loogiline VÕI

expr ? expr : expr

tingimuslik hindamine

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

ülesanne

expr1 , expr2

koma

Ooperidena on lubatud shelli muutujad; parameetri laiendamine toimub enne ekspressiooni hindamist. Väljendi sees võib shelli muutujaid nimetada ka parameetriga laiendamise süntaksi kasutamisel. Muutuja väärtust hinnatakse aritmeetilise väljendina, kui see on viidatud. Korpuse muutujale ei pea sisse lülitama täisarvu atribuuti, mida kasutatakse väljendis.

Konstandid, millel on juhtiv 0, tõlgendatakse kaheksandate numbritega. Juhtiv 0x või 0X tähistab heksadetsimaalset väärtust. Vastasel juhul võetakse numbrid kujul [ base # ] n, kus baas on kümnendnumber 2 kuni 64, mis kujutab aritmeetilist baasi, ning n on selle baasi number. Kui põhi number on ära jäetud, kasutatakse baasi 10. Arvud, mis on suuremad kui 9, on esitatud selles järjekorras väiketähtedega, suurtähtedega, @ ja _. Kui alus on väiksem kui 36 või sellega võrdne, võib väiketähti ja suurtähti kasutada vaheldumisi numbrite kuvamiseks vahemikus 10 ja 35.

Operaatorid hinnatakse järjestuses järjestuses. Esimeses osas hinnatakse alamvälju sulgudes ja need võivad ülimuslikud ülaltoodud ülimuslikkuse reegleid.

TINGIMUSLIKUD MÄÄRUSED

Tingimuslikke väljendeid kasutab [[ liitkäsk ja test ning [ builtin käsud], et testida faili atribuute ja täita stringi ja aritmeetilisi võrdlusi. Väljendid on moodustatud järgmistest tavalistest või binaarsetest primaaridest. Kui mõne algversiooni faili argument on vormis / dev / fd / n , siis märgitakse failide deskriptor n . Kui faili argument ühele esmaspärimisele on üks / dev / stdin , / dev / stdout või / dev / stderr , on märgitud failide kirjeldaja 0, 1 või 2.

-fail

Tõsi, kui fail on olemas.

-b fail

Tõsi, kui fail on olemas ja see on blokeeritud erifail.

-c fail

Tõsi, kui fail on olemas ja on tähemärgi erifail.

-d fail

Tõsi, kui fail on olemas ja see on kataloog.

-e fail

Tõsi, kui fail on olemas.

-f fail

Tõsi, kui fail on olemas ja on tavaline fail.

-g fail

Tõsi, kui fail on olemas ja see on set-group-id.

-f fail

Tõsi, kui fail on olemas ja on sümboolne link.

-k fail

Tõsi, kui fail on olemas ja selle on määratud `` kleepuv '' bit.

-p fail

Tõsi, kui fail on olemas ja see on nimega toru (FIFO).

-r fail

Tõsi, kui fail on olemas ja see on loetav.

-s fail

Tõsi, kui fail on olemas ja selle suurus on suurem kui null.

-t fd

Tõsi, kui failide deskriptor fd on avatud ja viitab terminalile.

-u fail

Tõsi, kui fail on olemas ja selle seadistatud kasutaja ID-bit on seatud.

-w fail

Tõsi, kui fail on olemas ja see on kirjutatav.

-x- fail

Tõsi, kui fail on olemas ja on käivitatav.

-O- fail

Tõsi, kui fail on olemas ja see kuulub kasutajanime tõhususse.

-G fail

Tõsi, kui fail on olemas ja kuulub efektiivse grupi ID-sse.

-L fail

Tõsi, kui fail on olemas ja on sümboolne link.

-S fail

Tõsi, kui fail on olemas ja on pistikupesa.

-N fail

Tõsi, kui fail on olemas ja seda on viimati lugenud muudetud.

file1 - nt fail2

Tõsi, kui fail1 on uuem (vastavalt muudatuse kuupäevale) kui file2 või kui file1 on olemas ja file2 ei ole.

file1 - ot file2

Tõsi, kui fail1 on vanem kui file2 või kui fail2 on olemas ja fail1 ei ole.

file1 -ef fail2

Tõsi, kui fail1 ja file2 viitavad samale seadmele ja inode numbritele.

-o optname

Tõsi, kui shell option optname on lubatud. Allpool toodud komplektile vastava valiku -o kirjeldus leiate optsioonide loendist.

-z string

Tõsi, kui stringi pikkus on null.

-n string

string

Tõsi, kui stringi pikkus ei ole null.

string1 == string2

Tõsi, kui stringid on võrdsed. = võib asendada == rangelt POSIX-i vastavuse tagamiseks.

string1 ! = string2

Tõsi, kui stringid ei ole võrdsed.

string1 < string2

Tõsi, kui string1 sorteerib enne string2 leksikograafiliselt praeguses asukohas.

string1 > string2

Tõsi, kui string1 sorteerib pärast string2 leksikograafiliselt praeguses asukohas.

arg1 OP arg2

OP on üks -eq , -ne , -lt , -le , -gt või -ge . Need aritmeetilised binaarsed operaatorid tagavad tõese, kui arg1 on võrdne, mitte võrdne, väiksem või võrdne, võrdub või on suurem kui arg2 või suurem või võrdne. Arg1 ja arg2 võivad olla positiivsed või negatiivsed täisarvud.

Lihtsa kommenteerimise laiendamine

Kui käivitatakse lihtne käsu, täidab shell nii, et see toimub järgmiselt: laiendused, ülesanded ja ümbersuunad vasakult paremale.

1

Sõna, mille parser on märgitud muutuja määramiseks (need, mis eelistavad käsu nime) ja redirections, salvestatakse hilisemaks töötlemiseks.

2

Sõnad, mis ei ole muutuja ülesanded või ümbersuunamised, on laiendatud. Kui mõni sõna jääb pärast laienemist, on esimene sõna käsu nimi ja ülejäänud sõnad on argumendid.

3

Redirections toimub nagu REDIRECTION allpool kirjeldatud.

4

Teksti pärast = iga muutuja määramisel läbib tilde laiendamine, parameetri laiendamine, käsu asendamine, aritmeetiline laiendamine ja tsiteerimine eemaldamine enne muutuja määramist.

Kui käskluse nime ei leidu, mõjutab muutuja ülesanded praegust shellikeskkonda. Vastasel korral lisatakse muutujad käivitatava käskluse keskkonda ega mõjuta praegust shellikeskkonda. Kui mõni ülesanne üritab readonly muutuja väärtust määrata, tekib viga ja käsk lahkub olemusest, mis ei ole null.

Kui käskluse nime ei saada, viiakse ümberjuhtimine läbi, kuid see ei mõjuta praegust shellikeskkonda. Ümbersuunamise viga põhjustab käsu väljumiseks mitte-nullseadisega.

Kui pärast laiendamist on käskluse nimi jäetud, jätkub toiming nagu allpool kirjeldatud. Vastasel korral käsk väljub. Kui üks laiendustest sisaldas käsu asendamist, on käsu väljumise olek viimase käskluse asendamise lõpetamise olek. Kui käsku ei asendata, käib käsk nulliga.

KÄSITSI TÄITMINE

Pärast seda, kui käsklus on jagatud sõnaks, kui see toob kaasa lihtsa käsu ja valikulise argumentide loendi, võetakse järgmised toimingud.

Kui käsu nimi ei sisalda kaldkriipsu, püüab karp selle leida. Kui nimega on olemas kooperatsioonifunktsioon, siis käivitatakse see funktsioon funktsioonis FUNKTSIOONID . Kui nimi ei ühti funktsiooniga, otsib koor seda koopia sisemiste loendist. Kui leitakse sobivus, käivitatakse see sisseehitatud element.

Kui nimi ei ole nii shellfunktsioon kui ka sisseehitatud element ega sisalda kaldkriipsu, siis bash otsib seda tüüpi nimega käivitatava faili sisaldava kataloogi PATH iga elemendi. Bash kasutab käsureal olevat tabelit, et mäleta täidetavate failide täielikke viiteid (vt allpool SHELL BUILTIN COMMANDS all olevat räsi ). PATH-i kataloogide täielik otsing tehakse ainult siis, kui käsu ei leitud räsi tabelis. Kui otsing ei õnnestu, prindib karp veateate ja tagastab 127-st väljumisoleku.

Kui otsing on edukas või kui käsu nimi sisaldab ühte või mitut kaldkriipsu, kasutab rakendus nimetatud programmi eraldi väljatöötamise keskkonnas. Argument 0 on seatud antud nimele ja ülejäänud argumendid käsule seatakse antud argumentidele, kui need on olemas.

Kui see täitmine ebaõnnestub, kuna fail ei ole käivitatava vormingus ja fail ei ole kataloog, eeldatakse, et see on shelli skript , mis sisaldab shellikäske. Selle käivitamiseks tekib alamhulk. See allkäik taaskäivitab end ise, nii et efekt on nagu skripti käsitsemisel käskinud uus shell, välja arvatud see, et lapsed säilitavad vanemate poolt mällu salvestatud käskude asukohad (vt allpool SHELL BUILTIN COMMANDS all olevat räsi ).

Kui programm on fail, mis algab #! , ülejäänud esimene rida määrab programmi jaoks tõlgi. Koor täidab määratud tõlgi operatsioonisüsteemides, mis ise seda käivitatava vorminguga ei tegele. Tõlkija argumendid koosnevad ühest vabatahtlikust argumendist, mis järgneb programmi esimesele reale vastava tõlgi nimele, millele järgneb programmi nimi, millele järgneb käsuartiklid, kui need on olemas.

JUHTIMISSÜSTEEM KESKKOND

Kest on rakenduskeskkond , mis koosneb järgmistest:

*

avatud faile, mille päring on koondatud käsku, mida muutis redigeerimine, mis edastati exec builtinile

*

käimasolev töökataloog, nagu on määranud cd , pushd või popd , või shelli poolt pärandiks kutsutud

*

faili loomise režiim mask, mille määrab umask või pärineb koopia vanemast

*

praegused püünised, mille lõks on määratud

*

shelli parameetrid, mis on määratud muutuja määramisega või komplektiga või pärinevad kesktaseme vanemast keskkonnas

*

shelli funktsioonid, mis on määratletud täitmise ajal või pärinevad keskse vanemate keskkonda

*

väljavalimisel lubatud (kas vaikimisi või käsurea argumentidega) või määratud

*

ostja poolt sisse lülitatud valikud

*

alamrubriikidega määratud alamkataloogid

*

mitmesugused protsessi ID-d, sealhulgas taustteosed , $ $ väärtus ja $ PPID väärtus

Kui tuleb käivitada lihtne käsk, välja arvatud sisseehitatud või shellfunktsioon, tuleb see käivitada eraldi täitmiskeskkonnas, mis koosneb järgmistest. Kui pole teisiti märgitud, pärinevad need väärtused shellist.

*

shelli avatud failid ning kõik muudatused ja täiendused, mis on määratud käsuga redireerimisel

*

praegune töökataloog

*

failide loomise režiimi mask

*

ekspordiks märgitud koondmuutujad koos käsule eksporditud muutujatega, mis edastatakse keskkonda

*

shelli poolt püütud püünised lähtestatakse väärtustele, mis pärinevad keskse vanemast, ja kesta ignoreeritud püünised ignoreeritakse

Selles eraldi keskkonnas käivitatud käsk ei saa mõjutada shelli täitmise keskkonda.

Käsu asendamine ja asünkroonsed käsklused käivitatakse alamkeskkonda, mis on shellikeskkonna duplikaat, välja arvatud see, et shelli poolt püütud püünised lähtestatakse väärtustele, mis on päringule tema vanemast päringu tulemusel. Käsud Builtin, mis käivitatakse torujuhtme osana, viiakse läbi ka allkeskkonda. Alamkeskkonda tehtud muudatused ei saa mõjutada shelli täitmise keskkonda.

Kui käsu järgneb & ja töökoha kontroll ei ole aktiivne, on vaikimisi standardne sisestus käsk tühi fail / dev / null . Vastasel juhul päritakse käsu käsk päringukellide failikäskirju, mida on muudetud rediretsioonidega.

VAATA KA

Bashi käsiraamat , Brian Fox ja Chet Ramey

Gnu Readline'i raamatukogu , Brian Fox ja Chet Ramey

Gnu Ajaloo Raamatukogu , Brian Fox ja Chet Ramey

Kaasaskantav operatsioonisüsteemi liides (POSIX) 2. osa: Rakendused ja rakendused , IEEE

sh (1), ksh (1), csh (1)

emacs (1), vi (1)

readline (3)