Sh - Linux Command - Unix komanda

VARDAS

bash - GNU Bourne-Again SHell

SANTRAUKA

bash [parinktys] [failas]

APIBŪDINIMAS

Bash yra sh- suderinamas komandų kalbos vertėjas, kuris vykdo komandas, skaitomas iš standartinės įvesties arba iš failo. Bash taip pat turi naudingų funkcijų iš Korn ir C korpusų ( ksh ir csh ).

"Bash" yra suderinamas IEEE POSIX Korpuso ir įrankių specifikacijos (IEEE darbo grupės 1003.2) įgyvendinimas.

GALIMYBĖS

Be vieno simbolio lukšto parinkčių, aprašytų nustatytoje builtin komandoje, bash interpretuoja šias pasirinktis, kai jis yra naudojamas:

-c eilutė

Jei yra parinktis- c , tada komandos yra skaitomos iš eilutės . Jei po eilutės yra argumentų, jie priskiriami pozicijos parametrams, pradedant nuo $ 0 .

-i

Jei yra parinktis -i , apvalkalas yra interaktyvus .

-l

Padarykite " bash" veiksmą taip, tarsi jis būtų naudojamas kaip prisijungimo langelis (žr. Toliau "INVOCATION" ).

-r

Jei yra parinktis -r , apvalkalas tampa apribotas (žr. Žemiau esantį RESTRICTED SHELL ).

-s

Jei yra -s parinktis arba jei po parinkties apdorojimo nepasileidžia jokių argumentų, komandos yra skaitomos iš standartinės įvesties. Ši parinktis leidžia nustatyti pozicijos parametrus, kai naudojamas interaktyvus apvalkalas.

-D

Visų dvigubų citatų eilučių, prieš kurias yra $, sąrašas yra atspausdintas ant standartinio išvesties. Tai yra eilutės, kurioms taikomas vertimas žodžiu, kai dabartinė lokalė nėra C arba POSIX . Tai reiškia -n parinktį; jokios komandos nebus įvykdytos.

[- +] O [ shopt_option ]

Shopt_option yra viena iš apvalkalo parinkčių, kurias priėmė parduotuvės builtinas (žr. SHELL BUILTIN COMMANDS žemiau). Jei yra shopt_option , -O nustato šią parinktį; + O nesunaikina. Jei shopt_option nepateikta, pirkėjo pripažinta apvalkalo parinkčių pavadinimai ir vertės yra atspausdintos į standartinę išvestį. Jei iššaukimo parinktis yra + O , išvestis rodoma tokiu formatu, kuris gali būti pakartotinai naudojamas kaip įvestis.

A - signalizuoja parinkčių pabaigą ir išjungia tolesnį parinkčių apdorojimą. Visi argumentai po - laikomi failų pavadinimais ir argumentais. Argumentas - yra lygiavertis - .

Bash taip pat interpretuoja daugelio simbolių parinkčių skaičių. Šios parinktys turi būti rodomos komandinėje eilutėje, kol bus atpažįstami simboliai.

--Dump-po-strings

Ekvivalentas su -D , bet išvestis yra GNU gettext po (nešiojamojo objekto) failo formatas.

--Dump-strings

Lygus -D .

--Pagalba

Parodykite naudojimo žinutę standartine išvestimi ir sėkmingai išeikite.

- failo failo vardas

--rcfile failas

Vykdykite komandas iš failo, o ne į standartinę asmeninio paleidimo failą ~ / .bashrc, jei korpusas yra interaktyvus (žr. Žemiau).

--Prisijungti

Lygus -l .

- neigiamas

Nenaudokite GNU readline bibliotekos, jei norite skaityti komandines eilutes, kai lakštas yra interaktyvus.

- neprofile

Negalima perskaityti nei viso sistemos paleisties failo / etc / profile, nei bet kurio asmeninio paleidimo failų ~ / .bash_profile , ~ / .bash_login arba ~ / .profile . Pagal numatytuosius nustatymus, bash nuskaito šiuos failus, kai jis yra naudojamas kaip prisijungimo lange (žr. Toliau "INVOCATION" ).

--norc

Negalima skaityti ir vykdyti asmeninio paleidimo failo ~ / .bashrc, jei lukštas yra interaktyvus. Ši parinktis įjungta pagal numatytuosius nustatymus, jei lukštas yra vadinamas sh .

--pasirinkti

Pakeiskite bash elgesį, kur numatytoji operacija skiriasi nuo POSIX 1003.2 standarto, kad atitiktų standartinį ( posix režimą ).

- ribota

Korpusas tampa apribotas (žr. Žemiau esantį RESTRICTED SHELL ).

--RPM reikalauja

Paruoškite failų, reikalingų norint paleisti shell scenarijų, sąrašą. Tai reiškia "-n" ir jam taikomi tokie patys apribojimai kaip ir laiko klaidų tikrinimo tikrinimo sudarymas; "Backticks", [] bandymai ir evals nesuskaitomos, todėl gali būti praleistos kai kurios priklausomybės. --verbose Ekvivalentas -v .

--versija

Rodyti standartinės išvesties versijos informaciją apie šio tipo " bash" versiją ir sėkmingai išeiti.

ARGUMENTAI

Jei po parinkties apdorojimo išlieka argumentai ir nebuvo pateikta nei -c, nei -s parinktis, pirmasis argumentas laikomas failo, kuriame yra "shell" komandų, pavadinimas. Jei bash yra naudojamas tokiu būdu, $ 0 yra nustatytas į failo pavadinimą, o pozicijos parametrai yra nustatyti likusiais argumentais. Bash skaito ir vykdo komandas iš šio failo, tada išeina. "Bash " išvesties būsena yra paskutinės komandos, kuri vykdoma scenarijuje, išvesties būsena. Jei komandų nevykdoma, išvesties būsena yra 0. Pirmiausia bandoma atidaryti failą dabartiniame aplanke, o jei failo nerasta, tada lukštais ieškoma scenarijaus PATH katalogų.

INVOCACIJA

Prisijungimo lange yra tokia, kurios pirmasis argumentas yra nulis yra - arba vienas prasideda su --login parinktimi.

Interaktyvus apvalkalas yra vienas, pradėtas be jokių parinkčių argumentų ir be pasirinkimo- c, kurio standartiniai įvadai ir išvestis yra prijungti prie gnybtų (kaip nustatyta isatty (3)), arba vienas prasidėjo su -i parinktimi. PS1 yra nustatytas ir $ - apima i, jei bash yra interaktyvus, leidžianti scenarijų shellui arba paleisties failą išbandyti šią būseną.

Toliau pateiktose pastraipose aprašoma, kaip bash paleidžia paleidimo failus. Jei bet koks failas egzistuoja, bet jo negalima perskaityti, " bash" praneša apie klaidą. Tildes yra išplėstos failų pavadinimuose, kaip aprašyta toliau, skyriuje EXPANSION esančio Tilde Expansion .

Kai bash yra naudojamas kaip interaktyvus prisijungimo lange arba kaip neinteraktyvus lakštas su parinktimi --login , ji pirmiausia nuskaito ir vykdo komandas iš failo / etc / profile , jei tas failas egzistuoja. Perskaitęs tą failą, jis žiūri ~ / .bash_profile , ~ / .bash_login ir ~ / .profile tokia tvarka ir skaito ir vykdo komandas iš pirmojo, kuris egzistuoja ir yra skaitomas. " --noprofile" parinktis gali būti naudojama, kai korpusas pradedamas slopinti tokį elgesį.

Kai prisijungimo lange pasibaigia, bash skaito ir vykdo komandas iš failo ~ / .bash_logout , jei jis egzistuoja.

Kai paleidžiamas interaktyvus apvalkalas, kuris nėra prisijungimo lukštas, bash skaito ir vykdo komandas iš ~ / .bashrc , jei tas failas egzistuoja. Tai gali būti slopinama naudojant parinktį -norc . Pasirinkus failą --rcfile priversti bash skaityti ir vykdyti komandas iš failo, o ne ~ / .bashrc .

Kai " bash" yra pradėtas neinteraktyviai, pavyzdžiui, paleidžiant "shell" scenarijų, jis aplanko aplinkos kintamąjį BASH_ENV , išplečia jo vertę, jei jis ten pasirodo, ir naudoja išplėstą vertę kaip failo vardą, kurį norite skaityti ir vykdyti . Bash elgiasi taip, tarsi įvykdyta ši komanda:

jei [-n "$ BASH_ENV"]; tada "$ BASH_ENV"; fi

bet PATH kintamojo vertė nenaudojama ieškant failo vardo.

Jei bash yra pavadintas " sh" , jis bando kuo arčiau pakartoti istorinių versijų paleidimo elgseną, tuo pačiu atitikdamas POSIX standartą. Kai jis naudojamas kaip interaktyvus prisijungimo apvalkalas arba neinteraktyvus lukštas su parinktimi --login , pirmiausia bandoma perskaityti ir vykdyti komandas iš / etc / profile ir ~ / .profile , tokia tvarka. " --noprofile" parinktis gali būti naudojama tokio elgesio slopinimui. Kai raginama kaip interaktyvi apvalkalas su pavadinimu sh , bash ieško kintamojo ENV , išplečia jo vertę, jei ji yra apibrėžta, ir naudoja išplėstą vertę kaip failo pavadinimą, kurį norite skaityti ir vykdyti. Kadangi "shell", pavadintas " sh ", ne bando skaityti ir vykdyti komandas iš kitų paleisties failų, funkcija --rcfile neturi jokios įtakos. Neinteraktyvus lakštas, pavadintas sh , neleidžia perskaityti jokių kitų paleisties failų. Kai paleidžiama kaip sh , bash įveda posix režimą po paleidimo failų skaitymo.

Kai paleidimas bash prasideda posix režimu, kaip ir su komandų eilutės parinktimi, tai atitinka POSIX standartą paleisties failams. Šiame režime interaktyvūs apvalkalai išplečia ENV kintamąjį, o komandos yra skaitomos ir vykdomos iš failo, kurio pavadinimas yra išplėstinė vertė. Jokių kitų paleisties failų nėra.

Bash bando nustatyti, kada jį naudoja nuotolinio apvalkalo daemonas, paprastai rshd . Jei bash nustato, kad jis yra paleistas rshd , jis skaito ir vykdo komandas iš ~ / .bashrc , jei tas failas egzistuoja ir yra įskaitomas. Tai nebus padaryta, jei nurodoma kaip sh . Parinktis -norc gali būti naudojama tokiai veiklai sustabdyti, o parinktis -rcfile gali būti naudojama priversti kitą failą skaityti, tačiau rshd paprastai nenaudoja apvalkalo su šiomis parinktimis arba leidžia juos nurodyti.

Jei korpusas yra paleistas su faktiniu naudotojo (grupės) id, kuris nėra lygus tikram naudotojo (grupės) ID, ir -p galimybė nepateikiama, paleidimo failai nėra skaitomi, lukšto funkcijos nėra paveldimos iš aplinkos, SHELLOPTS kintamasis, jei jis pasirodo aplinkoje, yra ignoruojamas ir veiksmingas naudotojo ID yra nustatytas kaip tikrasis naudotojo ID. Jei parinktis -p pateikiamas paskambinus, paleidimo elgesys yra toks pats, tačiau veiksmingas naudotojo ID nėra iš naujo nustatytas.

APIBRĖŽIMAI

Kitame šiame dokumente vartojami šie apibrėžimai.

tuščias

Tarpas arba skirtukas.

žodis

Simbolių seka, kurią korpusas laikė vienu vienetu. Taip pat žinomas kaip žetonas .

vardas

Žodis, kurį sudaro tik raidiniai ir skaitiniai simboliai ir pabraukimai, pradedant abėcėlės simboliu arba pabraukimu. Taip pat vadinamas identifikatoriumi .

metacharacter

Simbolis, kuris, kai nekotiruojamas, atskiria žodžius. Vienas iš šių dalykų:

| & () <> tarpo tarpas

valdymo operatorius

Žetonas, kuris atlieka kontrolės funkciją. Tai yra viena iš šių simbolių:

|| & && ;;; () |

Rezervuotos kalbos

Rezervuoti žodžiai yra žodžiai, turintys ypatingą reikšmę apvalkale. Šie žodžiai pripažįstami kaip rezervuoti nekotiruojant ir arba pirmasis paprastos komandos žodis (žr. SHELL GRAMMAR žemiau) arba trečiasis bylos žodis arba komanda:

! atvejis atliktas elif kito esac fi funkcijai, jei pasirenkate tada, kol {} laikas [[]]

SHELL GRAMMAR

Paprasti komandai

Paprastoji komanda yra pasirinktinų kintamųjų priskyrimų seka, po kurios tušti atskiriami žodžiai ir peradresavimai, ir juos nutraukia valdymo operatorius . Pirmasis žodis nurodo vykdomą komandą ir perduodamas kaip nulinis argumentas. Likusieji žodžiai perduodami kaip argumentai komandai, kuriai raginama.

Paprastos komandos grąžinimo reikšmė yra jos išvesties būsena, arba 128+ n, jei komanda nutraukiama signalu n .

Vamzdynai

Vamzdynas - tai viena ar daugiau komandų, atskirtų simboliu | . Dujotiekio formatas yra:

[ laikas [ -p ]] [! ] komanda [ | command2 ...]

Standartinė komandų išvestis yra prijungta per vamzdį į standartinį komandų2 įvestį. Šis ryšys atliekamas prieš bet kokius peradresavimus, nurodytus komandoje (žr. REDIRECTION žemiau).

Jei rezervuotas žodis ! prieš vamzdyną, šio vamzdyno išvesties būsena yra logiška ne pagal paskutinės komandos išėjimo būseną. Priešingu atveju vamzdyno būklė yra paskutinės komandos išvesties būsena. Korpusas laukia visų vamzdyne esančių komandų nutraukti prieš grąžinant vertę.

Jei laiko rezervuotas žodis yra prieš vamzdyną, praėjusį laiką, taip pat naudotojo ir sistemos vykdymo metu sunaudotas laikas paskelbiamas, kai vamzdynas baigiasi. Parinktis -p pakeičia išvesties formatą, nurodytą POSIX. TIMEFORMAT kintamasis gali būti nustatytas formos eilutė, nurodanti, kaip turėtų būti rodoma laiko informacija; Žiūrėkite TIMEFORMAT aprašymą pagal Shell kintamuosius žemiau.

Kiekviena dujotiekio komanda vykdoma kaip atskiras procesas (ty, požeminėje dalyje).

Sąrašai

Sąrašas yra vieno ar kelių vamzdynų, kuriuos atskiria vienas iš operatorių, seka ; , & , && , arba || , ir pasirinktinai nutraukiamas vienu iš ; , & arba .

Iš šių sąrašo operatorių, && ir || turi lygiavertę pirmenybę, o po to - ; ir " , kurie turi vienodą pirmenybę.

Sąraše gali būti rodomos vienos ar kelių naujų eilučių seka, o ne kabliataškis, norint atskirti komandas.

Jei komandą nutraukia kontrolės operatorius & , apvalkalas paleidžia komandą fone į subshell. Korpusas nepalaiko komandų užbaigimo, o grąžinimo būsena yra 0. Komandos, atskirtos ; yra vykdomi nuosekliai; lukštas laukia, kol kiekviena komanda pasibaigs. Grąžinimo būsena yra paskutinės atliktos komandos išvesties būsena.

Valdymo operatoriai && ir || atitinkamai žymi IĮ sąrašus ir AI sąrašus. IR sąrašo forma

command1 && command2

Command2 vykdomas jei ir tik tada, kai command1 grąžina išėjimo statusą nuliui.

OR sąrašas turi formą

Command1 || command2

Command2 vykdomas, jei ir tik tada, kai command1 grąžina ne nulinę išėjimo būseną. "AND" ir "OR" sąrašų grąžinimo būsena yra paskutinės sąraše atliktos komandos išvesties būsena.

Sudėtinės komandos

Sudėtinė komanda yra viena iš šių:

( sąrašas )

sąrašas vykdomas subhelyje. Keičiamos užduoties ir integruotos komandos, turinčios įtakos aplinkai aplinkoje, nebegalioja po to, kai komanda baigia darbą. Grąžinimo būsena yra sąrašo išvesties būsena.

{ list ; }

sąrašas yra tiesiog vykdomas dabartinėje apvalkalo aplinkoje. sąrašas turi būti nutrauktas naudojant naują eilutę arba kabliataškį. Tai vadinama komandos komanda . Grąžinimo būsena yra sąrašo išvesties būsena. Atkreipkite dėmesį, kad skirtingai nuo metafores ( ir ) , { ir } yra rezervuoti žodžiai ir turi būti tokie, kai gali būti pripažintas rezervuotas žodis. Kadangi jie nesukelia žodžio pertraukos, jie turi būti atskirti nuo sąrašo pagal tarpą.

(( išraiška ))

Sąvoka yra vertinama pagal ARITMETINIO ĮVERTINIMO žemiau aprašytas taisykles . Jei išraiškos reikšmė nėra nulinė, grąžinimo būsena yra 0; kitaip grįžtamasis statusas yra 1. Tai yra lygiavertis leidimui " išraiška ".

[[ išraiška ]]

Grąžina 0 arba 1 statusą, priklausomai nuo sąlyginės išraiškos išraiškos įvertinimo . Išraiškos susideda iš pirmiau minėtų priminimų, pateiktų žemiau esančiose sąlygose . Žodžių suskaidymas ir pietų krypties plėtra nėra atliekami tarp žodžių tarp [[ ir ]] ; tildės išplėtimas, parametrų ir kintamasis išplėtimas, aritmetinis išplėtimas, komandų pakeitimas, proceso pakeitimas ir citatos pašalinimas.

Kai naudojami operatoriai == ir ! =, Operatoriaus dešinėje esanti eilutė laikoma modeliu ir suderinta pagal taisykles, aprašytas toliau, esant " Pattern Matching" . Grąžinamoji vertė yra 0, jei eilutė atitinka arba neatitinka modelio, atitinkamai, ir 1 kitaip. Bet kuri modelio dalis gali būti koreguojama, kad būtų suderinta kaip eilutė.

Išraiškos gali būti derinamos naudojant šiuos operatorius, išvardytus mažėjančia tvarka:

( išraiška )

Grąžina išraiškos vertę. Tai gali būti naudojama norint viršyti įprastą operatorių pirmenybę.

! išraiška

Tiesa, jei išraiška yra klaidinga.

expression1 && expression2

Tiesa, jei ir expression1, ir expression2 yra teisingi.

expression1 || expression2 Tiesa, jei išraiška expression1 arba expression2 yra tiesa.

&& ir || operatoriai neįvertina išraiškos2, jei išraiškos reikšmės 1 pakanka nustatyti visos sąlyginės išraiškos grąžintiną vertę.

vardą [ žodyje ]; daryti sąrašą ; padaryta

Išplečiamas išvardytų žodžių sąrašas, sudarant elementų sąrašą. Keičiamo vardo eilutėje nustatomas kiekvienas šio sąrašo elementas, o sąrašas vykdomas kiekvieną kartą. Jei žodis praleistas, komanda užpildo sąrašą vieną kartą kiekvienam nustatytam pozicijos parametrui (žr. PARAMETRUS žemiau). Grąžinimo būsena yra paskutinės atliktos komandos išvesties būsena. Jei elementų, išvardytų toliau tame sąraše, išplėtimas tuščiame sąraše, komandų nėra vykdoma, o grąžinimo būsena yra 0.

(( expr1 ; expr2 ; expr3 )); daryti sąrašą ; padaryta

Pirma, aritmetinė išraiška expr1 vertinama pagal toliau aprašytas taisykles ARITMETINIO ĮVERTINIMO . Aritmetinė išraiška expr2 tada pakartotinai įvertinama, kol ji vertinama nuliui. Kiekvieną kartą, kai expr2 įvertina ne nulinę vertę, vykdomas sąrašas ir įvertinama aritmetinė išraiška expr3 . Jei bet kuri išraiškos reikšmė yra praleista, ji elgiasi taip, lyg ji būtų įvertinta kaip 1. Grąžinimo reikšmė yra paskutinės komandos vykdymo pabaigos būsena arba klaidinga, jei bet kuri iš išraiškų yra neteisinga.

pasirinkite vardą [ žodyje ]; daryti sąrašą ; padaryta

Išplečiamas išvardytų žodžių sąrašas, sudarant elementų sąrašą. Išplėstinių žodžių rinkinys išspausdinamas standartine klaida, prieš kurį kiekvienas nurodo skaičių. Jei žodis praleistas, spausdinami pozicijos parametrai (žr. Toliau PARAMETRAI ). Tada rodomas " PS3" greitis ir eilutė skaitoma iš standartinio įvesties. Jei eilutę sudaro skaičius, atitinkantis vieną iš rodomų žodžių, tada vardo reikšmė nustatoma pagal tą žodį. Jei eilutė yra tuščia, žodžiai ir greitis vėl rodomas. Jei EOF yra skaitomas, komanda baigia. Bet kuri kita reikšmė skaityti sukelia pavadinimą nuliui. Perskaityta eilutė išsaugoma kintamajame REPLY . Sąrašas atliekamas po kiekvieno pasirinkimo, kol bus vykdoma pertraukos komanda. Pasirinkimo išvesties būsena yra paskutinės sąraše atliktos komandos išvesties būsena arba nulis, jei nebuvo vykdoma jokių komandų.

bylos žodis [[(( pattern) [ | pattern ]

Pirmosios bylos komanda pirmiausia išplečia žodį ir stengiasi jį suderinti su kiekvienu rašmeniu , naudodama tas pačias atitikimo taisykles, kaip ir plėtinio pavašiatui (žr. " Pathname Expansion" toliau). Kai rastas atitikmuo, vykdomas atitinkamas sąrašas . Po pirmosios rungtynės jokios vėlesnės rungtynės nebus bandomos. Išvykimo būsena yra lygi nuliui, jei nėra modelio. Priešingu atveju tai yra paskutinės komandos vykdymo sąrašo išvesties būsena.

jei sąrašas ; tada sąrašas; [ elif sąrašas ; tada sąrašas ; ] ... [ kitas sąrašas ; ] fi

Jei sąrašas vykdomas. Jei jo išėjimo statusas yra lygus nuliui, tuomet sąrašas vykdomas. Priešingu atveju, kiekvienas elifas sąrašas vykdomas eilės tvarka, o jo išeities statusas yra nulis, tada atitinkamas tada sąrašas vykdomas ir komanda baigia. Priešingu atveju kitas sąrašas vykdomas, jei jis yra. Išėjimo būsena yra paskutinės atliktos komandos išvesties būsena arba nulis, jei nė viena sąlyga nėra išbandyta.

sąraše ; daryti sąrašą ; padaryta

iki sąrašo ; daryti sąrašą ; padaryta

Kada komanda komandą nuolat vykdo, jei paskutinė komanda sąraše grąžina išėjimo statusą nuliui. Kol komanda yra identiška komandai while , išskyrus tai, kad bandymas yra atmestas; do sąrašas yra vykdomas tol, kol paskutinė komanda sąraše grąžina ne nulinę išėjimo statusą. Laiko išėjimo būsena ir kol komandos yra baigtos paskutinės komandų sąrašo komandos išvykimo būsena arba nulis, jei nė vienas nebuvo įvykdytas.

[ funkcija ] pavadinimas () { list ; }

Tai apibrėžia funkciją pavadinimu pavadinimu . Funkcijos kūnas yra komandų sąrašas tarp {ir}. Šis sąrašas yra vykdomas, kai vardas nurodomas kaip paprastos komandos pavadinimas. Funkcijos išėjimo būsena yra paskutinės komandos, kuri vykdoma kūne, išvesties būsena. (Žiūrėkite FUNKCIJOS žemiau.)

PASTABOS

Neinteraktyvioje apvalkale arba interaktyvioje apvalkale, kurioje yra įjungta interaktyviąja informacija apie pirkimo įtaisą (žr. SHELL BUILTIN COMMANDS žemiau), žodis, prasidedantis raide # , ignoruoja šį žodį ir visus likusius tos eilutės simbolius. Interaktyvus lukštas be įgalintos interactive_comments galimybės neleidžia komentuoti. Interaktyvias komentarų parinktis pagal numatytuosius nustatymus yra interaktyviuose lakštuose.

KVIETIMAS

Citata naudojama norint pašalinti tam tikrų simbolių ar žodžių specialią reikšmę į apvalkalą. Citata gali būti naudojama norint išjungti specialųjį gydymą specialiaisiais simboliais, užkirsti kelią tam, kad neapibrėžti žodžiai būtų pripažinti, ir užkirsti kelią parametrų plėtrai.

Kiekvienas iš metaforų, išvardytų aukščiau DEFINITIONS, turi ypatingą reikšmę shellui ir turi būti cituojamas, jei jis turi atstovauti save.

Kai naudojamos komandų istorijos plėtra, istorija išplečiama , dažniausiai ! , turi būti nurodyta, kad būtų išvengta istorijos išplėtimo.

Yra trys citavimo mechanizmai: pabėgimo simbolis , vienkartinės kabutės ir dvigubos kabutės.

Nekotiruojamas backslash ( \ ) yra pabraukimo simbolis . Tai išsaugo kito po to sekančio simbolio tiesioginę reikšmę, išskyrus išimtį. Jei pasirodo pora \ ir užpakalinis brūkšnys nėra pats cituojamas, \ laikomas eilutės tęsiniu (ty jis pašalinamas iš įvesties srauto ir faktiškai ignoruojamas).

Pridėjus simbolius vienkartiniuose kabučiuose išsaugoma kiekvieno simbolio tiesioginė reikšmė kabutėse. Vienkartinė citata gali nebūti tarp atskirų kabučių, net jei prieš tai backslash.

Dvipučiuose kabutėse esantys simboliai išsaugo visų kabučių simbolių tiesioginę reikšmę, išskyrus $ , ` , ir \ . Simboliai $ ir ` išsaugo savo ypatingą reikšmę per dvigubas kabutes. "Backslash" išlaiko savo ypatingą reikšmę tik tuomet, kai seka vienas iš šių simbolių: $ , ` , ' , \ arba . Dvigubas citatas gali būti cituojamas dvigubomis kabutėmis prieš tai prieš tai backslash.

Ypatingi parametrai * ir @ turi ypatingą reikšmę dvigubomis kabutėmis (žr. Toliau PARAMETRAI ).

Žodžiai formos $ string yra specialiai apdorojami. Žodis išplečiamas į eilutę , pakeičiant backslash-escaped simboliais, kaip nurodyta ANSI C standarte. Backslash escape sekos, jei jos yra, yra dekoduojamos taip:

\ a

perspėjimas (varpas)

\ b

backspace

\ e

pabėgimo charakteris

\ f

forma pašarų

\ n

nauja linija

\ r

vežimėlio grąža

\ t

horizontalus skirtukas

\ v

vertikalus skirtukas

\\

backslash

\ '

viena citata

\ nnn

aštuonių bitų simbolis, kurio vertė yra aštuoninė vertė nnn (nuo vieno iki trijų skaitmenų)

\ x HH

aštuonių bitų simbolis, kurio vertė yra šešioliktainė reikšmė HH (vienas ar du šešioliktainiai skaitmenys)

\ c x

kontrolinis x simbolis

Išplėstas rezultatas yra vienkartinis, lyg dolerio ženklas nebūtų pateiktas.

Dvigubai cituota eilutė prieš dolerio ženklą ( $ ) sukelia eilutės vertimą pagal dabartinę kalbą. Jei dabartinė lokalė yra C arba POSIX , dolerio ženklas yra ignoruojamas. Jei eilutė yra verčiama ir pakeista, pakaitalas yra dvigubai cituojamas.

PARAMETRAI

Parametras yra subjektas, kuris saugo vertes. Tai gali būti vardas , numeris ar vienas iš specialių simbolių, išvardytų žemiau esant specialiesiems parametrams . Dėl kortos tikslų kintamasis yra parametras, žymimas pavadinimu . Kintamasis turi vertę ir nulis ar daugiau atributų . Atributai priskiriami naudojant deklaruojamos builtin komandą (žr. Deklaraciją žemiau SHELL BUILTIN COMMANDS ).

Parametras nustatomas, jei jai priskirta vertė. Nulinė eilutė yra tinkama vertė. Kai yra nustatytas kintamasis, jis gali būti nenustatytas tik naudojant nenaudotą builtin komandą (žr. SHELL BUILTIN COMMANDS žemiau).

Kintamasis gali būti priskirtas formos pareiškimui

pavadinimas = [ vertė ]

Jei vertė nenurodyta, kintamasis priskiriamas nuliui. Visose reikšmėse yra tildės išplėtimas, parametrų ir kintamųjų plėtra, komandų pakaitalas, aritmetinis išplėtimas ir citatų pašalinimas (žr. Toliau pateiktą EXPANSION ). Jei kintamasis turi savo integruotą atributų reikšmę , tada reikšmė priklauso nuo aritmetinio išplėtimo net ir tuo atveju, jei nėra naudojamas $ ((...)) plėtinys (žr. Arithmetic Expansion toliau). Žodžių skaidymas nėra vykdomas, išskyrus "$ @", kaip paaiškinta toliau, esant specialiesiems parametrams . Pathname plėtra nėra vykdoma. Asignavimo teiginiai taip pat gali būti pateikiami kaip argumentai deklaruoti , rinkti , eksportuoti , skaityti ir vietines įvesties komandas.

Padėties parametrai

Pozicijos parametras yra parametras, pažymėtas vienu ar keliais skaitmenimis, išskyrus vienintelį skaitmenį 0. Pozicijos parametrai priskiriami iš apvalkalo argumentų, kai jis yra paskambintas, ir gali būti perskirstytas naudojant nustatytą " builtin" komandą. Pozicijos parametrai gali būti nepriskirti priskyrimo ataskaitoms. Pozicijos parametrai laikinai pakeičiami, kai vykdoma apvalkalo funkcija (žr. FUNKCIJOS žemiau).

Kai išplečiamas padėties parametras, susidedantis iš daugiau nei vieno skaitmens, jis turi būti pritvirtintas prie petnešos (žr. Toliau pateiktą " EXPANSION" ).

Specialūs parametrai

Korpusas specialiai tinka keliems parametrams. Šie parametrai gali būti nurodomi tiktai; jiems neleidžiama.

*

Išplečiama pozicijos parametrai, pradedant nuo vieno. Kai plėtra įvyksta per dvigubas kabutes, ji išplečiama į vieną žodį su kiekvieno parametro reikšme, atskirtu nuo pirmojo specialiojo kintamojo IFS simbolio. Tai reiškia, kad " $ * " yra lygus " $ 1 c $ 2 c ... ", kur c yra pirmasis kintamojo IFS vertės simbolis. Jei IFS nenustatytas, parametrai yra atskirti tarpai. Jei IFS yra lygus nuliui, parametrai jungiami be tarpinių separatorių.

@

Išplečiama pozicijos parametrai, pradedant nuo vieno. Kai plėtra įvyksta per dvigubas kabutes, kiekvienas parametras išplečia į atskirą žodį. Tai reiškia, kad " $ @ " yra lygus " $ 1 " " $ 2 " ... Kai nėra pozicijos parametrų, " $ @ " ir $ @ plėsti į nieką (ty jie yra pašalinti).

#

Išplečiama padėties parametrų skaičius dešimtainėse.

?

Išplečiama naujausių pradinių žinių apie vamzdyną būsenos būklė.

-

Išplečiama iki dabartinių parinkčių vėliavų, kaip nurodyta paskyroje, nustatytoje builtin komandoje arba tos pačios apvalkalo nustatytose (pvz., -i parinktys).

$

Išplečia apvalkalo proceso ID. Į "subshell" () jis išplečia dabartinio apvalkalo proceso ID, o ne "subshell".

!

Išplečiama naujausių paleidžiamų fono (asinchroninių) komandų proceso ID.

0

Išplečia apvalkalo arba apvalkalo scenarijaus pavadinimą. Tai nustatoma kaip "shell" inicializacija. Jei bash yra persiunčiamas su komandų failais, $ 0 yra nustatytas į šio failo pavadinimą. Jei bash prasideda su- c parinktimi, tada $ 0 yra nustatytas ant pirmo argumento po to, kai vykdoma eilutė, jei ji yra. Priešingu atveju yra nustatytas failo vardas, naudojamas norint paleisti bash , kaip nurodė argumentas nulis.

_

Įkeldami "shell", nustatykite absoliučią failo pavadinimą, apvalkalo arba apvalkalo scenarijų, kuris vykdomas kaip perduotas argumentų sąraše. Vėliau išplečiama į paskutinę ankstesnės komandos argumentą. Taip pat nustatykite kiekvieno komandos, kuri vykdoma ir dedama į aplinką, eksportuojamą į šią komandą, visą failo pavadinimą. Patikrinus laišką šis parametras saugo šiuo metu patikrintą pašto failo pavadinimą.

"Shell" kintamieji

Šie kintamieji nustatomi apvalkalu:

BASH

Išplečia visą failo pavadinimą, naudojamą šiam " bash" egzemplioriui taikyti.

BASH_VERSINFO

Tik skaitymo masyvo kintamasis, kurio nariai palaiko versijos informaciją apie šį bash egzempliorių. Masyvo nariams priskiriamos reikšmės yra tokios:

BASH_VERSINFO [ 0]

Pagrindinis versijos numeris ( išleidimas ).

BASH_VERSINFO [ 1]

Neteisingos versijos numeris ( versija ).

BASH_VERSINFO [ 2]

Lako lygis.

BASH_VERSINFO [ 3]

Statybos versija.

BASH_VERSINFO [ 4]

Leidimo būsena (pvz., Beta1 ).

BASH_VERSINFO [ 5]

MACHTYPE vertė.

BASH_VERSION

Išplečiama eilutė, apibūdinanti šio basho egzemplioriaus versiją.

COMP_CWORD

COMP_LINE

Dabartinė komandų eilutė. Šis kintamasis yra prieinamas tik su apvalkalo funkcijomis ir išorinėmis komandomis, kurias sukelia programuojami užbaigimo įrenginiai (žr. Žemiau " Programuojamas užbaigimas" ).

COMP_POINT

COMP_WORDS

Masyvo kintamasis (žr. Mazgus žemiau), kurį sudaro atskirų žodžių dabartinė komandų eilutė. Šis kintamasis yra prieinamas tik apvalkalo funkcijoms, kurias sukelia programuojami užbaigimo įrenginiai (žr. Žemiau " Programuojamas užbaigimas" ).

DIRSTACK

Masyvo kintamasis (žr. Toliau pateiktus masyvus ), kuriame yra dabartinis katalogo kupė turinys. Katalogai rodomi pakuotėje, kad jie būtų rodomi dirigai. Priskirti narius iš šio masyvo kintamojo gali būti naudojamas modeliuoti jau esančius katalogus, tačiau pushd ir popd builtins turi būti naudojami katalogams pridėti ir pašalinti. Priskyrimas prie šio kintamojo nepakeis dabartinio katalogo. Jei " DIRSTACK " nenustatytas, jis praranda specialias savybes, netgi jei jis vėl nustatomas.

EUID

Išplečiamas dabartinio vartotojo veiksmingas vartotojo ID, kuris yra įjungtas paleidžiant "shell". Šis kintamasis yra tik skaitomas.

FUNCNAME

Bet kokios šiuo metu vykdančios apvalkalo funkcijos pavadinimas. Šis kintamasis egzistuoja tik tada, kai vykdoma apvalkalo funkcija. Funkcijos FUNCNAME priskyrimas neturi jokios įtakos ir grąžina klaidos būseną. Jei funkcija " FUNCNAME " nenustatyta, ji praranda specialias savybes, netgi jei ji iš naujo nustatoma.

GRUPĖS

Masyvo kintamasis, kuriame yra grupių, kurių narys yra dabartinis vartotojas, sąrašas. GRUPIŲ priskyrimas neturi jokios įtakos ir grąžina klaidos būseną. Jei GRUPĖS neveikia, jis praranda savo ypatingas savybes, net jei jis vėliau yra iš naujo nustatytas.

HISTCMD

Dabartinės komandos istorijos numeris arba rodyklės istorijos sąraše. Jei HISTCMD yra nenustatytas, jis praranda savo specialias savybes, net jei jis vėliau bus iš naujo nustatytas.

HOSTNAME

Automatiškai nustatykite dabartinio kompiuterio pavadinimą.

HOSTTYPE

Automatiškai nustatoma į eilutę, kuri vienareikšmiškai apibūdina įrenginio tipą, kuriame veikia bash . Numatytasis priklauso nuo sistemos.

LINENO

Kiekvieną kartą, kai šis parametras yra nurodytas, apvalkalas pakeičia dešimtainį skaičių, kuris rodo esamą eilės eilės numerį (pradedant nuo 1) scenarijuje ar funkcijoje. Kai nėra scenarijaus ar funkcijos, pakeista vertė nėra garantuojama, kad ji reikšminga. Jei " LINENO " nenustatytas, jis praranda specialias savybes, net jei jis vėl nustatomas.

MACHTYPE

Automatiškai nustatyti eilutę, kuri visiškai aprašo sistemos tipą, kurį vykdo bash , standartiniame GNU procesoriaus-įmonės sistemos formate. Numatytasis priklauso nuo sistemos.

OLDPWD

Ankstesnė darbo aplinka, nustatyta cd komandoje.

OPTARG

Paskutinio pasirinkimo argumento vertė, apdorota getopts builtin komandos (žr. SHELL BUILTIN COMMANDS žemiau).

OPTIND

Kito argumento, kurį turi apdoroti getopts builtin komanda, indeksas (žr. SHELL BUILTIN COMMANDS žemiau).

OSTYPE

Automatiškai nustatoma į eilutę, kurioje aprašoma operacinė sistema, kurioje veikia " bash" . Numatytasis priklauso nuo sistemos.

TIPAS

Masyvo kintamasis (žr. Toliau pateiktus masyvus ), kuriame pateikiamas išvykimo būklės verčių sąrašas iš pačių neseniai įvykdytų naujo plano vamzdyno procesų (kuriame gali būti tik viena komanda) procesai.

PPID

Tuščiojo apvalkalo proceso ID. Šis kintamasis yra tik skaitomas.

PWD

Dabartinis darbo katalogas, kurį nustato cd komanda.

RANDOM

Kiekvieną kartą, kai yra nurodytas šis parametras, generuojamas atsitiktinis sveikasis skaičius nuo 0 iki 32767. Atsitiktinių skaičių seka gali būti inicijuota, priskirdama reikšmę RANDOM . Jei RANDOM neveikia, jis praranda savo ypatingas savybes, net jei jis vėliau yra atstatytas.

ATSAKYMAS

Nustatykite į įvesties eilutę, perskaitytą komandą skaityti builtin, kai jokių argumentų nepateikiama.

SECONDS

Kiekvieną kartą, kai yra nurodytas šis parametras, sugrąžinamas sekundžių skaičius nuo aptikimo apvalkalo. Jei vertė priskiriama SECONDS , vertė, gauta vėlesnėse nuorodose, yra sekundžių skaičius nuo priskyrimo pridėjus priskirtą vertę. Jei SECONDS nėra nustatytas, jis praranda savo specialias savybes, net jei jis vėliau bus iš naujo nustatytas.

SHELLOPTS

Atidaromas apvalkalo parinkčių sąrašas, išsiskirstytas dvitaškis. Kiekvienas sąraše esantis žodis yra galiojantis argumentas -o parinkčiai nustatyti builtin komandai (žr. Toliau SHELL BUILTIN COMMANDS ). " SHELLOPTS" parinktys yra tos, kurias praneša kaip nustatytą -o . Jei šis kintamasis yra aplinkoje, kai prasideda " bash" , prieš pradėdami skaityti bet kokius paleisties failus, bus įjungta kiekviena sąrašo parinktis. Šis kintamasis yra tik skaitomas.

SHLVL

Kiekvieną kartą, kai paleidžiamas bashas egzempliorius, padidėja po vieną.

UID

Išplečiama dabartinio vartotojo ID, inicijuota paleisti "shell". Šis kintamasis yra tik skaitomas.

Korpusas naudoja šiuos kintamuosius. Kai kuriais atvejais, bash priskiria numatytąją kintamojo reikšmę; šie atvejai yra nurodyti žemiau.

BASH_ENV

Jei šis parametras yra nustatytas, kai bash vykdo shell scenarijų, jo vertė interpretuojama kaip failo pavadinimas, kuriame yra komandos, skirtos inicijuoti shell'ą, kaip ir ~ / .bashrc . BASH_ENV reikšmei yra taikomas parametrų išplėtimas, komandų pakaitalas ir aritmetinis išplėtimas, kad būtų aiškinama kaip failo vardas. PATH nenaudojamas ieškomo failo vardo paieškai.

CDPATH

Cd komandos paieškos kelias. Tai kataloguose išskirtas dvitaškis atskirtas sąrašas, kuriame lukštais ieškoma paskirties katalogų, nurodytų cd komandoje. Pavyzdinė vertė yra ".: ~: / Usr".

SKAIČIAI

Naudojamas pasirinkta builtin komanda, norint nustatyti terminalo plotį spausdinant pasirinkimų sąrašus. Automatiškai nustatomas gavus "SIGWINCH".

SUSIJĘS

Masyvo kintamasis, iš kurio bash skaito galimus papildymus, sukurtus lukšto funkcija, kurią sukelia programuojamas užbaigimo įrenginys (žr. Toliau Programuojamas užbaigimas ).

FCEDIT

Numatytasis fc builtin komandos komandinis redaktorius.

FIGNORE

Daiktų sąrašas, kurį galima atskirti, kai vykdomas failo vardo užbaigimas (žr. Toliau pateiktą READLINE ). Failo pavadinimas, kurio priesaga atitinka vieną iš FIGNORE įrašų, yra pašalintas iš suderintų failų pavadinimų sąrašo. Pavyzdinė vertė yra ".o: ~".

GLOBIGNORE

Stulpelių sąrašas atskirtų šablonų, apibrėžiančių failų rinkinį, kuris turi būti ignoruojamas išplėtimo pseudonimai. Jei filename, atitinkančiu pathname išplėtimo modelį, taip pat sutampa vienas iš GLOBIGNORE modelių , jis pašalinamas iš atitikmenų sąrašo.

HISTCONTROL

Jei pasirenkate " ignorespace" reikšmę , eilutės, prasidedančios simboliu, nėra įrašomos į istorijos sąrašą. Jei nustatytas ignoringup vertės, eilutės, atitinkančios paskutinę istorijos eilutę, neįvedamos. Nepaisant to, vertę sudaro dvi galimybės. Jei nenustatyta arba jei nustatyta bet kokia kita verte nei nurodyta aukščiau, visos parserio skaitytos eilutės išsaugomos istorijos sąraše, atsižvelgiant į HISTIGNORE vertę. Šią kintamojo funkciją pakeičia HISTIGNORE . Antroji ir tolesnė daugiafunkcinės sudėtinės komandos komandų eilutė nėra išbandyta ir įtraukiama į istoriją nepriklausomai nuo HISTCONTROL vertės.

HISTFILE

Failo, kuriame saugoma komandų istorija, pavadinimas (žr. ISTORIJA žemiau). Numatytoji reikšmė yra ~ / .bash_history . Jei nenustatyta, komandų istorija neišsaugoma, kai išjungiamas interaktyvus lagaminas.

HISTFILESIZE

Maksimalus eilučių skaičius, esantis istorijos byloje. Kai šiam kintamam priskiriama vertė, istorijos failas yra sutrumpintas, jei reikia, kad jis sudarytų ne daugiau nei eilučių skaičius. Numatytoji reikšmė yra 500. Istorijos failas taip pat sutrumpinamas iki tokio dydžio po jo įrašymo, kai išjungiamas interaktyvus lagaminas.

HISTIGNORĖ

Stuburo atskirtas modelių sąrašas, naudojamas norint nuspręsti, kurias komandų eilutes reikia išsaugoti istorijos sąraše. Kiekvienas modelis yra pritvirtintas linijos pradžioje ir turi atitikti visą eilutę (nėra pridedamas " * "). Kiekvienas modelis yra išbandytas prieš liniją po to, kai taikomi HISTCONTROL nurodyti patikrinimai. Be įprastų apvalkalo modelio atitikimo ženklų, " & " atitinka ankstesnę istorijos eilutę. " & " gali būti ištrunamas naudojant grįžtamąjį rėmelį; prieš bandant rungtynes ​​pašalinamas priešingasis brūkšnys. Antroji ir tolesnė multi-line compound command komandų eilutė nėra išbandyta ir pridedama prie istorijos nepriklausomai nuo HISTIGNORE vertės.

HISTSIZE

Komandų istorija (žr. ISTORIJA žemiau). Numatytoji reikšmė yra 500.

NAMAI

Dabartinio vartotojo namų katalogą; numatytasis argumentas cd builtin komandai. Šio kintamojo vertė taip pat naudojama atliekant tildės išsiplėtimą.

HOSTFILE

Yra failo pavadinimas tokiu pačiu formatu kaip / etc / hosts, kuris turėtų būti perskaitomas, kai lange reikia užpildyti kompiuterio pavadinimą. Galimas pavadinimų baigčių sąrašas gali būti keičiamas, kol veikia aplinka; kitą kartą, kai pakeičiama reikšmė bus bandoma atlikti kompiuterio vardą, bash įtraukia naujo failo turinį į esamą sąrašą. Jei nustatytas HOSTFILE , bet jis nėra vertės, bash bando skaityti / etc / hosts, kad gautų galimų vardų baigimo sąrašą. Kai " HOSTFILE" nustatymas išjungtas, prieglobos pavadinimo sąrašas išvalomas.

IFS

Vidinio lauko atskyriklis , kuris naudojamas žodžių suskaidymui po išplėtimo ir padalijimo eilučių į žodžius su skaityti builtin komandą. Numatytoji reikšmė yra `` ''.

IGNOREEOF

Kontroliuoja interaktyvaus apvalkalo veiksmus, kai EOF simbolis gaunamas kaip vienintelis įvestis. Jei nustatyta, vertė yra iš eilės EOF simbolių skaičius, kuris turi būti įvestas kaip pirmasis įvesties eilutės simbolis prieš išeinant iš bash . Jei kintamasis egzistuoja, bet neturi skaitinės reikšmės arba neturi reikšmės, numatytoji reikšmė yra 10. Jei ji neegzistuoja, EOF reiškia įėjimo į apvalkalą pabaigą.

INPUTRC

Failo vardas paleidžiamojo paleidimo failui, ignoruojantis pagal nutylėjimą ~ / .inputrc (žr. READLINE žemiau).

LANG

Naudojama nustatyti vietovės kategoriją bet kuriai kategorijai, kuri nėra specialiai pasirinkta su kintamuoju, prasidedančiu LC_ .

LC_ALL

Šis kintamasis pakeičia reikšmę LANG ir bet kurį kitą LC_ kintamąjį, nurodantį lokalės kategoriją.

LC_COLLATE

Šis kintamasis nustato tvarką palyginimui, naudojamą rūšiuojant patynų išplėtimo rezultatus, ir nustato diapazono išraiškų, lygiavertiškumo klasių elgesį ir sekų suskirstymą per pathname išplėtimą ir modelio atitikimą.

LC_CTYPE

Šis kintamasis lemia simbolių klasių simbolių ir elgesio interpretavimą patyname išplėtimu ir modelio atitikimu.

LC_MESSAGES

Šis kintamasis nustato lokalę, naudojamą verčiant dvigubo citavimo eilutes prieš $ a.

LC_NUMERIC

Šis kintamasis nustato lokalės kategoriją, naudojamą skaičių formavimui.

LINIJOS

Naudojama pasirinkta builtin komanda, norint nustatyti stulpelių ilgį pasirinkimo sąrašų spausdinimui. Automatiškai nustatomas gavus "SIGWINCH".

PAŠTAS

Jei šis parametras yra nustatytas į failo pavadinimą, o MAILPATH kintamasis nenustatytas, bash informuoja vartotoją apie tai, kad jis yra atvykęs į nurodytą failą.

MAILCHECK

Nurodo, kaip dažnai (per kelias sekundes) skaityti pašto čekius. Pagal nutylėjimą yra 60 sekundžių. Kai atėjo laikas patikrinti paštą, apvalkalas tai daro prieš parodydamas pagrindinį raginimą. Jei šis kintamasis nenustatytas arba nustatoma vertė, kuri yra ne didesnis arba lygus nuliui, lukštas neleidžia tikrinti pašto.

MAILPATH

Failų pavadinimų, kuriuos reikia patikrinti paštu, sąrašas. Pranešimą, kuris turi būti išspausdintas, kai paštas atvyksta į tam tikrą failą, gali būti nurodomas atskiriant failo vardą nuo pranešimo su "?". Kai naudojamas pranešimo tekste, $ _ plečiasi į dabartinės pašto bylos pavadinimą. Pavyzdys:

MAILPATH = '/ var / mail / bfox'? Jūs turite el. Laišką ": ~ / shell-mail?" "$ _ Turi paštą!" "

Bash pateikia numatytąją šio kintamojo vertę, tačiau naudotojo pašto failų, kuriuos jis naudoja, vieta priklauso nuo sistemos (pvz., / Var / mail / $ USER ).

OPTERR

Jei nustatoma vertė 1, bash parodo klaidos pranešimus, sukurtus getopts builtin komandos (žr. SHELL BUILTIN COMMANDS žemiau). OPTERR yra inicijuota iki 1 kiekvieną kartą, kai yra naudojamas lukštas arba vykdomas apvalkalo scenarijus.

PATH

Komandų paieškos kelias. Tai kataloguose išskirtas kumelių sąrašas, kuriame lukštai ieškojo komandų (žr. KOMANDA VYKDYMAS žemiau). Numatytasis kelias priklauso nuo sistemos, jį nustato administratorius, kuris įdiegia bash . Bendra reikšmė yra `` / usr / gnu / bin: / usr / local / bin: / usr / ucb: / bin: / usr / bin :. ''.

POSIXLY_CORRECT

Jei šis kintamasis yra aplinkoje, kai prasideda " bash" , prieš paleidžiamųjų failų skaitymą lukštas įveda posix režimą , tarsi būtų pateiktas parinktis " -posix" . Jei jis yra nustatytas, kol veikia lukštas, bash leidžia posix režimą , tarsi buvo paleistas komandų rinkinys -o posix .

PROMPT_COMMAND

Jei nustatyta, vertė atliekama kaip komanda prieš išleidžiant kiekvieną pirminį eilutę.

PS1

Šio parametro vertė yra išplėsta (žr. PRANEŠIMAS žemiau) ir naudojama kaip pagrindinė eilutės eilutė. Numatytoji reikšmė yra `` \ s- \ v \ $ ''.

PS2

Šio parametro vertė išplečiama kaip ir PS1 ir naudojama kaip antrinė eilutė. Numatytoji reikšmė yra `` > ''.

PS3

Šio parametro vertė naudojama kaip parinkties komandą eilutė (žr. SHELL GRAMMAR aukščiau).

PS4

Šio parametro vertė išplečiama taip, kaip ir PS1, o vertė spausdinama prieš kiekvieną komandą bash, rodoma vykdymo seka. Pirmasis PS4 pobūdis yra pakartotas kelis kartus, jei reikia, norint parodyti keletą nejudrumo lygių. Numatytasis yra `` + ''.

LAIKO FORMATAS

Šio parametro vertė naudojama kaip formos eilutė, nurodanti, kaip turėtų būti rodomos vamzdynų su tašku rezervuotu žodžiu prefiksuotos informacijos laiko duomenys. Simbolis % įveda paleidimo seką, išplėstą iki laiko vertės ar kitos informacijos. Išpuolių sekos ir jų reikšmės yra tokios: petnešos žymi pasirinktines dalis.

%%

Tiesioginis % .

% [ p ] [l] R

Praėjusį laiką sekundėmis.

% [ p ] [l] U

CPU sekundžių, praleistų naudotojo režime, skaičius.

% [ p ] [l] S

Sistemos režime praleistas CPU sekundžių skaičius.

% P

CPU procentas, apskaičiuotas kaip (% U +% S) /% R.

Neprivalomas p yra skaitmuo, nurodantis tikslumą , trupmeninių skaičių po dešimtainio trupmenos skaičiaus. 0 reikšmė nereikalauja išreikšti kablelio ar trupmenos. Galima nurodyti ne daugiau kaip tris vietas po kablelio; vertės p didesnės nei 3 pakeičiamos į 3. Jei p nenurodyta, naudojama 3 vertė.

Neprivaloma l nurodo formą MM m SS ilgesnį formatą, įskaitant minusus . FF s. P vertė nustato, ar frakcija yra įtraukta.

Jei šis kintamasis nenustatytas, bash veikia taip, tarsi jis būtų vertė $ '\ nreal \ t% 3lR \ nuser \ t% 3lU \ nsys% 3lS' . Jei vertė yra nulinė, nėra laiko informacijos. Kai rodoma formatų eilutė, pridedama nauja eilutė.

TMOUT

Jei nustatoma vertė didesnė už nulį, TMOUT laikoma numatytojo laiko tarpsnio skaitymui . Pasirinkta komanda baigiasi, jei įvestis nesiunčiama po TMOUT sekundžių, kai įvestis ateina iš terminalo. Interaktyvioje apvalkale vertę interpretuojama kaip sekundžių skaičių, kad lauktų įvedimo po pirminio užklausimo. Bash baigia laukti, kol pasirodys šis skaičius sekundžių.

auto_resume

Šis kintamasis kontroliuoja, kaip lakštas sąveikauja su vartotojo ir darbo valdymu. Jei šis kintamasis yra nustatytas, vienos žodžio paprastos komandos be peradresavimo laikomos kandidatėmis atnaujinti esamą sustabdytą darbą. Neleidžiama dviprasmybes; jei yra daugiau nei vienas darbas, pradedamas nuo įvestos eilutės, pasirinktas paskutinį kartą pasiektas darbas. Sustabdyto darbo pavadinimas šiame kontekste yra komandų eilutė, naudojama ją paleisti. Jei nustatytas tikslumas , pateikiama eilutė tiksliai turi atitikti sustojančio darbo pavadinimą; jei pasirenkama substrike , tiekiama eilutė turi atitikti sustojo darbo pavadinimą. Pavadinimų reikšmė teikia funkcines galimybes, panašias į %? darbo identifikatorius (žr. JOB CONTROL žemiau). Jei nustatoma kokia nors kita vertė, tiekiama eilutė turi būti sustabdyto darbo vardo prefiksas; tai suteikia funkcijas, panašias į % darbo identifikatorių.

histarchai

Du ar trys simboliai, kurie kontroliuoja istorijos išplėtimą ir tokenizavimą (žr. ISTORIJOS EKSPANSAVIMAS žemiau). Pirmasis simbolis yra istorijos išplėtimo simbolis, simbolis, kuris signalizuoja istorijos išplėtimo pradžią, paprastai ` ! " Antrasis simbolis yra greitas pakeitimo simbolis, kuris naudojamas kaip stenografas, norint pakartotinai paleisti ankstesnę komandą, pakeičiant komandą į vieną eilutę kitam. Numatytoji reikšmė yra ` ^ '. Neprivalomas trečiasis simbolis yra simbolis, kuris nurodo, kad likusioji eilutė yra komentaras, kai jis randamas kaip pirmasis žodžio simbolis, paprastai " # ". Istorijos komentarų simbolis sukelia istorijos pakeitimo praleidimą likusiems žodžiais eilutėje. Tai nebūtinai sukelia apvalkalo parserį, kad komentuoti atliktų likusią eilutės dalį.

Masyvai

Bash suteikia vienarūšius masyvo kintamuosius. Bet kuris kintamasis gali būti naudojamas kaip masyvas; declare builtin bus aiškiai paskelbti masyvą. Masyvo dydžio maksimali riba nėra, nei reikalavimas, kad nariai būtų indeksuojami ar priskiriami greta. Masyvai indeksuojami naudojant tikslius skaičius ir yra nulinės.

Masyvas sukuriamas automatiškai, jei kintamasis yra priskirtas sintaksės pavadinimui [ index ] = value . Indeksas laikomas aritmetine išraiškos verte, kurios vertė turi būti didesnė arba lygi nuliui. Norėdami aiškiai deklaruoti masyvą, naudokite deklaruoti -a vardą (žr. SHELL BUILTIN COMMANDS žemiau). deklaruoti - taip pat priimamas vardas [ indikatorius ]; indeksas ignoruojamas. Atributai gali būti nurodyti masyvo kintamajam, naudojant deklaruojamą ir įskaitomą įmonę. Kiekvienas atributas taikomas visiems masyvo nariams.

Masyvai yra priskirti naudoti junginių priskyrimus formos pavadinimas = ( vertė 1 ... vertė n ) , kur kiekviena vertė yra forma [ indeksas ] = eilutė . Reikalinga tik eilutė . Jei pateikiami neprivalomi skliausteliuose ir indikatoriuje, šis indeksas priskiriamas; kitaip priskirto elemento indeksas yra paskutinis indeksas, priskirtas teiginiui plius vienas. Indeksavimas prasideda nuo nulio. Ši sintaksė taip pat priimama deklaruojant buitinį. Individualūs masyvo elementai gali būti priskirti naudoti aukščiau pateiktą pavadinimą [ indikatorius ] = vertės sintaksė.

Nenustatytas įren ginys naudojamas masyvų naikinimui. nenustatytas pavadinimas [ indeksas ] naikina masyvo elementą indekso indeksu. nenustatytas pavadinimas , kur vardas yra masyvas, arba nenustatytas pavadinimas [ indeksas ], kur indeksas yra * arba @ , pašalina visą masyvą.

Paskelbti , vietiniai ir readonly builtins kiekvienas priima -a parinktį nurodyti masyvą. Perskaityta aplinka priima -a parinktį priskirti sąrašą žodžių, skaitomų iš standartinės įvesties į masyvą. Nustatyti ir deklaruoti builtins rodymo masyvo reikšmes taip, kad jas būtų galima pakartotinai naudoti kaip priskyrimus.

EXPANSION

Išplėtimas atliekamas komandinėje eilutėje po to, kai ji yra padalinta į žodžius. Egzistuoja septynios išplėstos rūšys: lanko plėtra , tildės išplėtimas , parametrų ir kintamųjų plėtra , komandų pakaitalas , aritmetinis išplėtimas , žodžių padalijimas ir išplėtimas .

Išsiplėtimo tvarka: pratęsimo lankelis, tildės išplėtimas, parametras, kintamasis ir aritmetinis išplėtimas ir komandų pakaitalas (padaryta iš kairės į dešinę), žodžių skilimas ir plėtinio pataisos.

Sistemose, kurios gali ją palaikyti, yra papildomas išplėtimas: proceso pakeitimas .

Brace Expansion

Bracės išplėtimas yra mechanizmas, kuriuo gali būti sukurtos savavališkos stygos. Šis mechanizmas yra panašus į " pathname" plėtimą , tačiau sukurtų failų pavadinimų nereikia. Išplėstiniai modeliai priskiriami papildomai preambulei , po kurios seka kableliais atskirtos eilutės tarp poros sujungimų, po to - neprivalomas pastabos tekstas . Preambulė yra priskirta kiekvienai eilutei, esančiai lankstinukuose, ir priskirtas įrašas pridedamas prie kiekvienos gautos eilutės, išplečiant iš kairės į dešinę.

Brace pailginimas gali būti įdėtas. Kiekvienos išplėstos eilutės rezultatai nėra rūšiuojami; kairėn į dešinę išsaugoma. Pavyzdžiui, { d, c, b } e išplečia į "ade ace abe".

Bracės išplėtimas atliekamas prieš bet kokį kitą išplėtimą, o rezultatas išsaugomas bet kokiems kitiems išplėtimams būdingiems simboliams. Tai yra griežtai tekstinė. Bash netaiko jokio sintaksinio aiškinimo kontekste išplėtimas arba tekstas tarp petnešos.

Šis konstruktas paprastai naudojamas kaip santrumpas, kai bendras generuojamų eilučių prefiksas yra ilgesnis nei anksčiau pateiktame pavyzdyje:

mkdir / usr / local / src / bash / (senas, naujas, dist, klaidas)

arba

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

Bracės išplėtimas sukelia nežymią nesuderinamumą su sh . Istorinėmis versijomis. sh neaptarnauja atidarymo ar uždarymo petnešos specialiai, kai jie rodomi kaip žodžio dalis, ir išsaugo juos išvedimo metu. Bashas pašalina braceses iš žodžių kaip braceso išplėtimo pasekmė. Pavyzdžiui, žodis, įrašytas į sh kaip failą {1,2}, pasirodys vienodai. Tas pats žodis išvedamas kaip file1 file2 po išplėtimo pagal bash . Jei norima griežto suderinamumo su sh , paleiskite bash su parinktimi + B arba išjunkite raktų plėtimą naudodami + B parinktį nustatytam komandai (žr. SHELL BUILTIN COMMANDS žemiau).

Tildės plėtra

Jei žodis prasideda nuo nekotiruojamos tildės simbolio ( ~ ~ ), visi simboliai prieš pirmąjį nekotiruojamą brūkšnį (arba visus simbolius, jei nėra nekotiruojamo brūkšnelio) laikomi tildės prefiksu . Jei nenurodyta nė vienas iš tildės prefikso simbolių, tildės prefikso po tildės simboliai traktuojami kaip galimas prisijungimo vardas . Jei šis prisijungimo vardas yra nulinė eilutė, tildė pakeičiama lukšto parametro HOME reikšme. Jei HOME nenustatytas, vietoj to pakeičia pagrindinio vartotojo katalogą, kuriame vykdomas lukštas. Priešingu atveju tildės prefiksas pakeičiamas namų katalogu, susietu su nurodytu prisijungimo vardu.

Jei tildės prefiksas yra ~ ~ +, talpyklos kintamojo PWD vertė pakeičia tildės prefiksą. Jei tildės prefiksas yra ~ ~ -, pakeičiamas lukšto kintamojo OLDPWD vertė , jei jis yra nustatytas. Jei tildės prefiksą užpildę simboliai susideda iš skaičiaus N , pasirinktinai prieš tai priskiriant "+" arba "-", tildės prefiksas yra pakeičiamas atitinkamu elementu iš katalogo krosnies, nes jis būtų rodomas pagal diržas, įterptų kaip tariamas argumentas su tildės prefiksu. Jei tildės prefiksui tildės požymiai susideda iš skaičiaus be pagrindinio "+" arba "-", "+" yra prielaida.

Jei prisijungimo vardas yra netinkamas arba tildės plėtra nepavyksta, žodis nepakeistas.

Kiekviena kintamojo priskyrimo vertė yra tikrinama už nekotiruojamų tildės prefiksų iš karto po : arba = . Tokiais atvejais tildės išsiplėtimas taip pat atliekamas. Taigi, galima naudoti failų pavadinimus su tildes PATH , MAILPATH ir CDPATH priskyrimuose , o apvalkalas priskiria išplėstą vertę.

Parametro išplėtimas

" $ " Simbolis pristato parametrų išplėtimą, komandų pakeitimą ar aritmetinį išplėtimą. Parametro pavadinimas arba simbolis, kuris turi būti išplėstas, gali būti pridedamas prie pritraukimų, kurie yra neprivalomi, bet padeda apsaugoti kintamąjį, kuris turi būti išplėstas iš simbolių iš karto po to, kuris gali būti aiškinamas kaip vardo dalis.

Kai naudojamos petnešos, atitinkama baigiamoji petneša yra pirmasis ` } ", kurio neįmanoma užblokuoti grįžtamojo brūkšniu ar cituota eilute, o ne įterptųjų aritmetinių išplėtimu, komandų pakeitimu ar paramterio išplėtimu.

Parametro vertė pakeičiama. Liemenėlės reikalingos, kai parametras yra pozicijos parametras su daugiau nei vienu skaitmeniu arba po jo po simboliu, kuris negali būti aiškinamas kaip jo pavadinimo dalis.

Kiekviename iš toliau nurodytų atvejų žodis priklauso nuo tildės išplėtimo, parametrų išplėtimo, komandų pakeitimo ir aritmetinio išplėtimo. Nevykdydama substring'o išplėtimo, neveikiančio ar nulinio parametro " bash" bandymai; praleidžiant dvitaškį, tikrinamas tik parametras, kuris nėra nustatytas.

Naudokite numatytasis vertes . Jei parametras yra nenustatytas arba nulis, žodžio išplėtimas pakeičiamas. Priešingu atveju parametro vertė pakeičiama.

Priskirti numatytasis vertes . Jei parametras yra nenustatytas arba nulis, žodžio išplėtimas priskiriamas parametrui . Po to parametro vertė pakeičiama. Tokiu būdu negalima priskirti pozicijos parametrų ir specialių parametrų.

Ekrano klaida, kai nulinė arba išjungta . Jei parametras yra nulis arba nenustatytas, žodžio išplėtimas (arba tokio pranešimo, jei nėra žodžio ) yra įrašomas į standartinę klaidą ir lakštas, jei jis nėra interaktyvus, išeina. Priešingu atveju parametro vertė pakeičiama.

Naudokite alternatyvią vertę . Jei parametras yra nulis arba nenustatytas, nieko nepakeičiama, kitaip žodžio išplėtimas pakeičiamas.

Išplečiama kintamųjų, kurių pavadinimai prasideda nuo prefikso , pavadinimai, atskirti nuo pirmojo specialiojo kintamojo IFS simbolio.

Pakeistas parametro vertės simbolių ilgis. Jei parametras yra * arba @ , pakeista vertė yra pozicijos parametrų skaičius. Jei parametras yra masyvo vardas, pažymėtas subrankiu * arba @ , pakeista reikšmė yra masyvo elementų skaičius.

Žodis yra išplečiamas, kad būtų sukurtas modelis taip pat, kaip ir plėtinio pavadinime. Jei modelis atitinka parametro vertės pradžią, tada išplėtimo rezultatas yra išplėstinė parametro reikšmė su trumpiausiu atitikimo pavyzdžiu (" # " atvejis) arba ilgiausiu atitinkančiu modeliu (" ## " "byla" išbraukta. Jei parametras yra @ arba * , modelio šalinimo operacija įjungiama į kiekvieną pozicijos parametrą, o išplėtimas yra gautas sąrašas. Jei parametras yra masyvo kintamasis, pažymėtas " @" ar * , modelio pašalinimo operacija taikoma kiekvienam masyvo turiniui, o išplėtimas yra gautas sąrašas.

Žodis yra išplečiamas, kad būtų sukurtas modelis taip pat, kaip ir plėtinio pavadinime. Jei modelis sutampa su išplėstos parametro vertės pabaigos dalimi, tada išplėtimo rezultatas yra išplėstinė parametro reikšmė su trumpiausio atitikimo modeliu ("` % '' atveju) arba ilgiausiu atitikimo modeliu (" % % '' atvejis) ištrintas. Jei parametras yra @ arba * , modelio šalinimo operacija įjungiama į kiekvieną pozicijos parametrą, o išplėtimas yra gautas sąrašas. Jei parametras yra masyvo kintamasis, pažymėtas " @" ar * , modelio pašalinimo operacija taikoma kiekvienam masyvo turiniui, o išplėtimas yra gautas sąrašas.

Modelis yra išplečiamas, kad būtų sukurtas modelis, lygiai taip pat kaip ir plėtinys. Parametras išplečiamas, o ilgiausia modelio atitiktis jo vertei pakeičiama eilute . Pirmoje formoje pakeičiama tik pirmoji rungtynių data. Antroji forma pakeičia visas eilučių rungtynes. Jei modelis prasideda # , jis turi atitikti išplėstos parametro reikšmės pradžioje. Jei modelis prasideda % , jis turi atitikti išplėstos parametro vertę. Jei eilutė yra nulinė, modelio atitikmenys yra ištrinami ir gali būti praleistas / sekantis modelis . Jei parametras yra @ arba * , pakeičiamoji operacija yra taikoma kiekvienam pozicijos parametrams, o išplėtimas yra gautas sąrašas. Jei parametras yra masyvo kintamasis, nurodytas su @ ar * , pakeičiamoji operacija yra taikoma kiekvienam masyvo turiniui, o išplėtimas yra gautas sąrašas.

Command Substitution

Komandos pakaitalas leidžia komandos komandai pakeisti komandos pavadinimą. Yra dvi formos:

$ ( komanda )

arba

" komanda "

Bash atlieka išplėtimą vykdydamas komandą ir pakeičia komandų pakeitimą standartine komandų išeiga, išbraukiant bet kokius užbaigus naujus eilučius. Įterptosios naujosios eilutės neištrinamos, tačiau žodžių skilimo metu jos gali būti pašalintos. Komandos pakeitimas $ (katės failas ) gali būti pakeistas lygiaverčiu, bet greitesniu $ (< file ).

Kai naudojama senojo stiliaus pakaitos formos paklaida, užpakalinės brūkšnys išlaiko savo pažodinį reikšmę, išskyrus tuos atvejus, kai seka $ , ` arba \ . Pirmasis backquote, prieš kurį negrįžta backslash, užbaigia komandų pakeitimą. Naudojant $ ( komandų ) formą, visi simboliai tarp skliaustų sudaro komandą; nė vienas nėra traktuojamas specialiai.

Komandos pakaitalai gali būti prisegami. Jei norite prikabinti, kai naudojate pakartotinę formą, pabraukite vidines kuponus su grįžtamaisiais brūkšneliais.

Jei pakeitimas pasirodo per dvigubas kabutes, rezultatuose neatsižvelgiama į žodžių padalijimą ir plėtinį.

Aritmetinis išplėtimas

Aritmetinė plėtra leidžia įvertinti aritmetinę išraišką ir rezultato pakeitimą. Aritmetinio išplitimo formatas yra:

$ (( išraiška ))

Sąvoka traktuojama taip, lyg ji būtų per dvigubas kabutes, tačiau dviguba citata viduje skliaustuose nėra specialiai apdorota. Visi tokioje išraiškoje esantys žetonai yra parametrų išplėtimas, eilutės išplėtimas, komandų pakeitimas ir citatų pašalinimas. Aritmetines pakaitalas gali būti įdėtos.

Vertinimas atliekamas pagal ARITHMETIC EVALUATION pateiktas taisykles . Jei raiška neteisinga, bash atspausdina pranešimą, rodantį nesėkmę, ir jo nepakeičia.

Proceso pakeitimas

Proceso pakeitimas palaikomas sistemose, kurios palaiko pavadintus vamzdžius ( FIFO ) arba / dev / fd pavadinimų atvirų failų metodą. Tai užima <( list ) arba > ( list ) formą. Procesų sąrašas paleidžiamas naudojant jo įvestį arba išvestį, prijungtą prie FIFO arba tam tikros bylos / dev / fd . Šio failo pavadinimas perduodamas kaip dabartinės komandos argumentas, kuris yra išplėtimo rezultatas. Jei naudojama > ( sąrašo ) forma, rašant į failą bus pateikiama sąskaita. Jei naudojama <( list ) formos, persiunčiamas failas kaip argumentas turėtų būti skaitomas, norint gauti sąrašo išvestį.

Kai yra galimybė, proceso pakeitimas atliekamas kartu su parametrų ir kintamųjų plėtimosi, komandų pakeitimo ir aritmetinio išplėtimo.

Žodžio suskaidymas

Korpusas nuskaito parametrų išplėtimo, komandų pakaitalų ir aritmetinio išplėtimo rezultatus, kurie nebuvo atlikti per dvigubas kabučių žodžių padalijimas .

Korpusas traktuoja kiekvieną IFS požymį kaip skirtininką ir suskaido kitų išsiuntimo rezultatų į šiuos simbolius žodžius. Jei IFS yra nenustatytas arba jo reikšmė yra lygiai , pagal numatytuosius nustatymus, bet kokia IFS simbolių seka naudojama norint atskirti žodžius. Jei IFS turi kitą nei numatytoji vertę, žodžio pradžioje ir pabaigoje žodžio pradžioje ir pabaigoje ignoruojami tarpinių simbolių tarpo ir skirtukų sekos, kol tarpo simbolis yra IFS reikšme ( IFS tarpo simbolis). Kiekvienas IFS ženklas , kuris nėra IFS tarpas, kartu su bet kokiais gretimais IFS tarpo simboliais apriboja lauką. IFS tarpo simbolių seka taip pat laikoma atskirtimi. Jei IFS vertė yra lygi nuliui, žodžių skilimas nesudaro.

Aiškūs null argumentai ( "" arba "' ) yra išsaugomi. Išskaičiuojami netiesioginiai numanomi nuliniai argumentai, gaunami iš parametrų, neturinčių reikšmių, išplėtimo. Jei parametras be reikšmės yra išplečiamas per dvigubas kabutes, rezultatas nulinis ir jis išlieka.

Atkreipkite dėmesį, kad jei plėtra nepasikartos, nesudaromas joks suskaidymas.

Pathname plėtra

Kai žodis suskaidomas, nebent pasirinkta -f parinktis, bash nuskaito kiekvieną simbolių žodį * ,? , ir [ . Jei pasirodo vienas iš šių simbolių, tada žodis laikomas pavyzdžiu ir pakeičiamas abėcėlės tvarka sugrupuotu failų pavadinimų sąrašu, atitinkančiu modelį. Jei nėra rasta tinkamų failų pavadinimų ir apvalkalo parinktis nullglob yra išjungta, žodis lieka nepakeistas. Jei nustatytas nullglob parinktis ir joks atitikmuo nerastas, žodis pašalinamas. Jei įjungta apvalkalo parinktis nocaseglob , atitiktis atliekama neatsižvelgiant į abėcėlių simbolių atvejį. Kai modelis naudojamas pietvakarių plėtimui, simbolis `.. '' Vardo pradžioje arba iškart po velniop turi būti aiškiai suderintas, nebent būtų nustatyta lakšto parinktis dotglob . Kai sutinkate su pavadinimu, šliuzo simbolis visada turi būti aiškiai suderintas. Kitais atvejais "`. '' Simbolis nėra specialiai nagrinėjamas. Žiūrėkite " SHELL BUILTIN COMMANDS" aprašymą, esantį žemiau esančioje parduotuvės aprašyme, aprašant " nocaseglob" , " nullglob" ir " dotglob shell" parinktis.

GLOBIGNORE lakšto kintamasis gali būti naudojamas norint apriboti rinkmenų pavadinimus, atitinkančius modelį . Jei nustatytas GLOBIGNORE , kiekvieno atitikimo failo vardas, kuris taip pat atitinka vieną iš GLOBIGNORE modelių, pašalinamas iš atitikmenų sąrašo. Failų pavadinimai ``. '' Ir `` .. '' visada ignoruojami, net jei yra nustatytas GLOBIGNORE . Tačiau " GLOBIGNORE " nustatymas įgalina " dotglob" apvalkalo parinktį, todėl visi kiti failų pavadinimai, prasidedantys "`. '', Atitiks . Norėdami gauti seną elgesį ignoruojant failų vardus, prasidedančius simboliu ``. '' , Sukurkite ``. * '' Vieną iš GLOBIGNORE modelių . Parinktis dotglob išjungta, kai GLOBIGNORE yra nenustatytas.

Modelio atitikimas

Visi simboliai, kurie rodomi šablone, išskyrus toliau aprašytus specialius rašmenų simbolius, atitinka save. NUL simbolis gali neatsirasti modelio. Specialūs simboliai turi būti cituojami, jei jie turi būti prilyginti pažodžiui.

Specialūs simboliai turi šias reikšmes:

*

Pateikia bet kokią eilutę, įskaitant nulinę eilutę.

?

Atitinka bet kurį vieną simbolį.

[...]

Atitinka bet kurį iš pridedamų simbolių. Ženklų pora, atskirta brūkšneliu, reiškia diapazono išraišką ; bet koks simbolis, kuris rūšiuoja tarp šių dviejų simbolių, imtinai, naudojant dabartinę lokalės lyginamąją seką ir simbolių rinkinį, yra suderinta. Jei pirmasis po [ is ! arba ^, tada visi simboliai, kurie nėra uždari, yra suderinti. Rūšiavimo tvarką ženklų diapazono išraiškos lemia dabartinė lokalė ir LC_COLLATE lukšto kintamojo vertė, jei nustatyta. A - gali būti suderintas, įtraukiant jį kaip pirmą ar paskutinę rinkinio simbolį. A ] gali būti suderintas, įtraukiant jį kaip pirmą rinkinio simbolį.

Per [ ir ] simbolių klases galima nurodyti naudojant sintazę [: class :] , kur klasė yra viena iš šių klasių, apibrėžta POSIX.2 standarte:

alnum alpha ascii tuščia cntrl skaitmenų diagrama žemesnio spausdinimo punct vietos viršutinis žodis xdigit
Charakterio klasė atitinka bet kurį tos klasės klavišą. Žodžių ženklų klasė atitinka raides, skaitmenis ir simbolį _.

Pagal [ ir ] lygiavertiškumo klasę galima nurodyti naudojant sintaksę [= c =] , kuri atitinka visus simbolius su tuo pačiu suskaidymo svoriu (kaip apibrėžta dabartinėje lokale) kaip simbolį c .

Per [ ir ] sintaksę [. simbolis .] atitinka simbolį lyginant simbolį .

Jei " extglob shell" parinktis įjungta, naudojant " shopt" įrenginį , pripažįstami keli išplėstiniai modelio atitikimo operatoriai. Toliau pateiktame aprašyme modelių sąrašas yra vieno ar daugiau modelių, atskirtų | . Kompozitiniai raštai gali būti formuojami naudojant vieną ar kelis iš šių požymių:

? ( modelio sąrašas )

Atitinka nulinį ar vieną išvardytų modelių atsiradimą

* ( modelio sąrašas )

Atitinka nulinius arba daugiau nurodytų modelių įvykių

+ ( modelio sąrašas )

Pateikia vieną ar kelis nurodytų pavyzdžių įvykius

@ ( modelio sąrašas )

Atitinka tiksliai vieną iš nurodytų modelių

! ( modelio sąrašas )

Atitinka viską, išskyrus vieną iš nurodytų modelių

Citata pašalinimas

Po ankstesnių išplėtimų pašalinami visi neaktualūs simbolių \ , ' ir ' įvykiai, kurie nebuvo atlikti iš vieno iš anksčiau pateiktų išplėtimų.

Nukreipimas

Prieš paleidžiant komandą, jo įvestis ir išvestis gali būti nukreipiami naudojant specialų apibūdinimą, kurį aiškina apvalkalas. Peradresavimas taip pat gali būti naudojamas atidaryti ir uždaryti bylas esamai apvalkalo vykdymo aplinkai. Šie peradresavimo operatoriai gali būti prieš arba atsiras bet kur per paprastą komandą arba gali sekti komandą . Persiuntimai apdorojami taip, kaip jie rodomi, iš kairės į dešinę.

Toliau pateiktuose aprašymuose, jei failo deskriptoriaus numeris yra praleistas, o pirmasis peradresavimo operatoriaus simbolis yra < , peradresavimas reiškia standartinę įvestį (failo aprašas 0). Jei pirmasis peradresavimo operatoriaus simbolis yra > , peradresavimas reiškia standartinę išvestį (failo deskriptorius 1).

Žodis po peradresavimo operatoriaus kitais aprašymais, jei nenurodyta kitaip, yra pratęstas, tildės išplėtimas, parametrų išplėtimas, komandų pakaitalas, aritmetinis išplėtimas, citatų ištrynimas, išplėtimas keliuose ir žodžių padalijimas. Jei jis išplečia daugiau nei vieną žodį, " bash" praneša apie klaidą.

Atkreipkite dėmesį, kad peradresavimo tvarka yra didelė. Pavyzdžiui, komanda

ls > dirlist 2 > & 1

nukreipia tiek standartinę išėjimo, tiek standartinę klaidą į failą dirlist , o komandą

ls 2 > & 1 > dirlist

nukreipia tik standartinę išvestį į failą dirlist , nes standartinė klaida buvo nukopijuojama kaip standartinė išvestis, kol standartinė išvestis buvo nukreipta į dirlist .

Bash tvarko keletą failų pavadinimų specialiai, kai jie naudojami peradresavimui, kaip aprašyta šioje lentelėje:

/ dev / fd / fd

Jei fd yra galiojantis sveikasis skaičius, failo deskriptorius fd dubliuojamas.

/ dev / stdin

Failo aprašas 0 yra pasikartojantis.

/ dev / stdout

Failo aprašas 1 yra pasikartojantis.

/ dev / stderr

Failo aprašas 2 yra pasikartojantis.

/ dev / tcp / host / port

Jei priegloba yra galiojantis prieglobos vardas arba interneto adresas, o portas yra sveikasis uosto numeris arba paslaugos pavadinimas, bash bando atidaryti TCP ryšį su atitinkamu lizdu.

/ dev / udp / host / port

Jei priegloba yra galiojantis prieglobos vardas arba interneto adresas, o uostas yra sveikasis uosto numeris arba paslaugos pavadinimas, bash bando atidaryti UDP ryšį su atitinkamu lizdu.

Nepavykus atidaryti ar sukurti failo, peradresavimas nepavyksta.

Nukreipti įvestį

Įvedimo peradresavimas sukelia failą, kurio vardas yra žodžio išplėtimas, kuris turi būti atidarytas skaitymui failo deskriptoriuje n , arba standartinis įvestis (failo deskriptorius 0), jei n nenurodytas.

Bendras įvedimo peradresavimo formatas:

[ n ] < žodis

Peradresavimo išvestis

Išorinio išėjimo priežastis sukelia failą, kurio vardas yra žodžio išplėtimas, kuris bus atidarytas rašyti į failo deskriptorių n arba standartinę išvestį (failo deskriptorius 1), jei n nenurodytas. Jei failas neegzistuoja, jis sukurtas; jei jis egzistuoja, jis yra sutrumpintas iki nulio dydžio.

Bendras produkcijos nukreipimo formatas yra:

[ n ] > žodis

Jei peradresavimo operatorius yra > , ir įjungta Noclobber parinktis nustatytam builtinui , peradresavimas nepavyks, jei failas, kurio vardas išplaukia iš žodžio išplėtimo, yra įprastas failas. Jei peradresavimo operatorius yra > | , arba peradresavimo operatorius yra > ir Noclobber parinktis nustatytam įvesties komandai neįjungta, bandymas nukreipti net jei yra failo, pavadinto žodžiu .

Pridedama peradresuota išvestis

Tokiu būdu peradresuojant produkciją, failas, kurio vardas yra žodžio išplėtimas, turi būti atidarytas pridedant prie failo deskriptoriaus n arba standartinės išvesties (failo deskriptorius 1), jei n nenurodytas. Jei failas neegzistuoja, jis yra sukurtas.

Bendras produkcijos pridėjimo formatas yra:

[ n ] >> žodis

Peradresuoti standartinę išvestį ir standartinę klaidą

Bash leidžia tiek standartinę išvestį (failo deskriptorius 1), tiek standartinę klaidų išvestį (failo aprašą 2), kad būtų peradresuojama į failą, kurio vardas yra žodžio išplėtimas su šiuo konstruktu.

Yra du formatai, skirti nukreipti standartinę išeitį ir standartinę klaidą:

&> žodis

ir

> ir žodis

Iš dviejų formų pirmiausia pageidaujama. Tai semantiniu požiūriu yra lygiavertis

> žodis 2 > & 1

Čia yra dokumentai

Šio tipo nukreipimas įpareigoja korpusą skaityti dabartinio šaltinio įvestį, kol bus matoma eilutė, kurioje yra tik žodis (be užpakalinių užrašų). Tada visos eilutės, skaitomos iki šio taško, naudojamos kaip standartinė komanda.

Šių dokumentų formatas yra:

<< [ - ] žodis čia - dokumento delimiteris

Nėra žodžio " parametrų išplėtimas", "komandų pakaitalas", "aritmetinis išplėtimas" ar "plėtinys". Jei yra cituojami bet kokie simboliai žodyje , skirtukas yra kodavimo pašalinimo rezultatas žodžiu , o šiame dokumente esančios eilutės nėra išplėstos. Jei žodis nekotiruojamas, visos šio dokumento eilutės yra taikomos parametrų išplėtimas, komandų pakaitalas ir aritmetinis išplėtimas. Pastaruoju atveju simbolių seka \ ignoruojama ir \ turi būti naudojamas simbolių \ , $ ir ` .

Jei nukreipimo operatorius yra << - , visi pagrindiniai skirtukų simboliai yra atskirti nuo įvesties eilučių ir linijos su skirtuku . Tai leidžia šiuose dokumentuose apvalkalo scenarijus natūraliai ištraukti.

Čia stygos

Šių dokumentų variantas yra toks:

<<< žodis

Žodis yra išplėstas ir pateikiamas į standartinę įvesties komandą.

Failų aprašų kopijavimas

Peradresavimo operatorius

[ n ] <& žodis

yra naudojamas dvigubai įvesti failų aprašus. Jei žodis išplečiamas vienam ar daugiau skaitmenų, failo deskriptorius, pažymėtas n, yra tos failų deskriptoriaus kopija. Jei skaitmenys žodyje nenurodo failo deskriptoriaus, kuris yra atviras įvesčiai, įvyksta peradresavimo klaida. Jei žodis vertinamas iki - failo deskriptorius n uždarytas. Jei n nenurodytas, naudojama standartinė įvestis (failo deskriptorius 0).

Operatorius

[ n ] > ir žodis

yra naudojamas panašiai kaip išvesties failo deskriptorių dublikatas. Jei n nenurodytas, naudojama standartinė išvestis (failo deskriptorius 1). Jei skaitmenys žodyje nenurodo failo deskriptoriaus, kuris yra atviras produkcijai, įvyksta nukreipimo klaida. Kaip ypatingas atvejis, jei n praleidžiamas ir žodis nesiskirsto viename ar daugiau skaitmenų, standartinė išvestis ir standartinė klaida peradresuojami, kaip aprašyta anksčiau.

Perkelti failų aprašus

Peradresavimo operatorius

[ n ] <& skaitmuo -

perkelia failo deskriptoriaus skaitmenį į failo deskriptorių n arba standartinę įvestį (failo deskriptorius 0), jei n nenurodytas. skaitmuo yra uždarytas po to, kai jis yra nukopijuotas į n .

Panašiai ir peradresavimo operatorius

[ n ] > ir skaitmuo -

perkelia failo deskriptoriaus skaitmenį į failo deskriptorių n arba standartinę išvestį (failo deskriptorius 1), jei n nenurodytas.

Atidaryti failų aprašymus skaitymui ir rašymui

Peradresavimo operatorius

[ n ] <> žodis

sukelia failą, kurio vardas yra žodžio išplėtimas, kuris turi būti atidarytas skaityti ir rašyti į failo deskriptorių n , arba failo deskriptoriuje 0, jei n nenurodytas. Jei failas neegzistuoja, jis yra sukurtas.

ALIASAI

Slapyvardžiai leidžia pakeisti eilutę žodžiu, kai jis naudojamas kaip pirmasis paprastos komandos žodis. Korpusas palaiko sąrašą slapyvardžių, kurie gali būti nustatyti ir panaikinti su slapyvardžiu ir unalias įvestomis komandomis (žr. SHELL BUILTIN COMMANDS žemiau). Pirmasis kiekvienos komandos žodis, jei nekotiruojamas, yra pažymėtas, norint įsitikinti, ar jis turi slapyvardį. Jei taip, tas žodis pakeičiamas pseudonimų tekstu. Pseudonimo pavadinime ir pakeistame tekste gali būti bet kokio galiojančio įvesties apvalkalo, įskaitant pirmiau išvardytus metaforus , su išimtimi, kad pseudonimų pavadinime negali būti = . Pirmasis pakeistojo teksto žodis išbandomas aliasų, bet žodis, kuris yra identiškas išplėstam slapyvardžiui, antrą kartą neišplečiamas. Tai reiškia, kad, pvz., Gali būti pavadinta ls prie ls-F , o bash nemėgina rekursyviai išplėsti pakeisto teksto. Jei paskutinė slapyvardžio reikšmė yra tuščia , tada kitas slapyvardį vedęs komandinis žodis taip pat yra pažymėtas alias plėtra.

Slapyvardžiai yra sukurti ir išvardyti kartu su pseudonimų komanda ir pašalinami su komanda unalias .

Pakeitimo tekste nėra argumentų naudojimo mechanizmo. Jei reikia argumentų, reikia naudoti apvalkalo funkciją (žr. FUNKCIJOS žemiau).

Slapyvardžiai nėra išplečiami, kai apvalkalas nėra interaktyvus, išskyrus atvejus, kai explaliases apvalkalo parinktis nustatoma naudojant shopt (žr. Aprašymą shopt pagal SHELL BUILTIN COMMANDS žemiau).

Panašių terminų apibrėžimas ir naudojimas yra šiek tiek paini. Bash visada skaito bent vieną išsamią įvesties eilutę prieš vykdydamas bet kurią šios eilutės komandą. Slapyvardžiai yra išplečiami, kai komanda yra skaitoma, o ne tada, kai ji yra įvykdyta. Todėl aliaso apibrėžtis, pateikiama toje pačioje eilutėje kaip ir kita komanda, neįsigalioja tol, kol nebus perskaitoma kita įvesties eilutė. Naujos pseudonimą neveikia komandos, kurios seka toje eilutėje esančiu slapyvardžiu. Toks elgesys taip pat yra problema, kai vykdomos funkcijos. Panašios vardai yra išplečiami, kai skaitomas funkcijos apibrėžimas, o ne tada, kai vykdoma funkcija, nes funkcijos apibrėžimas yra sudėtinė komanda. Todėl funkcijose apibrėžti slapyvardžiai negalimi, kol bus įvykdyta ši funkcija. Kad būtų saugu, visada įterpkite pseudonimų apibrėžimus atskiroje eilutėje ir nenaudokite pseudonimų sudėtinėse komandose.

Beveik visais tikslais aliasas pakeičiamas apvalkalo funkcijomis.

FUNKCIJOS

Apvalkalo funkcija, apibrėžta kaip apibūdinta aukščiau SHELL GRAMMAR , saugo komandų seriją, skirtą vėlesniam vykdymui. Kai apvalkalo funkcijos pavadinimas naudojamas kaip paprastas komandos pavadinimas, vykdomas komandų sąrašas, susijęs su tos funkcijos pavadinimu. Funkcijos vykdomos esamo apvalkalo kontekste; jų interpretacijai nėra sukurtas naujas procesas (kontrastas tai su "shell" scenarijaus vykdymu). Kai vykdoma funkcija, funkcijos argumentai tampa padėties parametrais vykdymo metu. Specialus parametras # yra atnaujintas, kad atspindėtų pakeitimą. Pozicijos parametras 0 nesikeičia. Funkcijos FUNCNAME kintamasis yra nustatomas kaip funkcijos pavadinimas, kai vykdoma funkcija. Visi kiti apvalkalo vykdymo aplinkos aspektai yra identiški tarp funkcijos ir jo skambinančiojo, išskyrus tai, kad DEBUG gaudyklė (žr. Gaudyklės apibūdinimą, esantį po SHELL BUILTIN COMMANDS žemiau) nėra paveldima, nebent funkcijai būtų suteiktas trajektorijos atributas ( žr. deklaracijos apibūdinimą, pateiktą toliau).

Kintamieji vietiniai funkcijai gali būti deklaruojami su vietine builtin komanda. Paprastai kintamieji ir jų reikšmės dalijamos tarp funkcijos ir jo skambinančiojo.

Jei funkcija "builtin" komandų grąžinimas vykdomas, funkcija baigia, o vykdymas vėl pradedamas paleisti kitą komandą po funkcijos skambučio. Kai funkcija pasibaigia, pozicijos parametrų ir specialiojo parametro # reikšmės atkuriamos vertėms, kurias jie turėjo iki funkcijos vykdymo.

Funkcijų pavadinimai ir apibrėžimai gali būti nurodomi su -f parinktimi deklaruojant arba įvedant įvestus komandas. Parinktis -F deklaruoti ar įklijuoti nurodo tik funkcijų pavadinimus. Funkcijos gali būti eksportuojamos taip, kad "subshells" juos automatiškai nustatytų su -f parinktimi eksporto įmonei.

Funkcijos gali būti rekursyvios. Rekordinių skambučių skaičius neribojamas.

ARITMETINIS ĮVERTINIMAS

Korpusas leidžia tam tikromis aplinkybėmis įvertinti aritmetines išraiškas (žr. Leidimo buitinę komandą ir aritmetinį išplėtimą ). Vertinimas atliekamas sveikiis skaičiais fiksuoto pločio be patikrinimo, ar nėra perpildymo, nors suskirstymas į 0 yra įstrigęs ir pažymėtas kaip klaida. Operatoriai ir jų pirmumas ir asociacija yra tokie patys kaip ir C kalba. Toliau pateikiamas operatorių sąrašas suskirstytas į lygiaverčių operatorių lygmenis. Lygiai yra išvardyti pagal mažėjančią pirmenybę.

id ++ id -

kintamas po padidinimo ir post-decrement

++ id - id

kintamas išankstinis padidinimas ir išankstinis sumažinimas

- +

unary minus ir plus

! ~

logiškas ir dviprasmiškas užginčijimas

**

eksponencija

* /%

daugyba, padalijimas, likusioji dalis

+ -

papildymas, atimtis

<< >>

kairysis ir dešinysis bituminiai poslinkiai

<=> = <>

palyginimas

==! =

lygybė ir nelygybė

&

bitwise AND

^

bituminis išskirtinis ARBA

|

bitwise OR

&&

logiška ir

||

logiška OR

expr ? expr : expr

sąlyginis įvertinimas

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

paskyrimas

expr1 , expr2

kablelis

"Shell" kintamieji yra leidžiami kaip operandai; parametrų išplėtimas atliekamas prieš vertinant frazę. Išraiška, apvalkalo kintamieji taip pat gali būti nurodyti pagal pavadinimą, nenaudojant parametrų išplėtimo sintaksės. Kintamojo vertė vertinama kaip aritmetinė išraiška, kai ji yra nuoroda. Keičiamojo kablelio kintamojo nereikia turėti integruoto atributo, kuris būtų naudojamas išraiška.

Konstantos su pirmaujančia 0 interpretuojamos kaip aštuonkiečiai skaičiai. Pagrindinis 0x arba 0X žymi šešioliktainį. Priešingu atveju skaičiai ima formą [ base # ] n, kur bazė yra dešimtainis skaičius tarp 2 ir 64, kurie reiškia aritmetinę bazę, o n yra skaičių toje bazėje. Jei bazė # yra praleista, tada bazė 10 naudojama. Skaičiai didesni nei 9 yra tokia tvarka mažosiomis raidėmis, didžiosiomis raidėmis, @ ir _. Jei bazė yra mažesnė arba lygi 36, mažosios ir didžiosios raidės gali būti naudojamos tarpusavyje, kad būtų nurodyti skaičiai tarp 10 ir 35.

Operatoriai vertinami pagal eiliškumą. Pirmosios dalies apatinės išraiškos skliausteliuose yra vertinamos ir gali viršyti aukščiau esančias pirmumo taisykles.

SĄLYGINIAI IŠRAIŠIAI

Sąlygines išraiškas naudoja [[ sudėtinė komanda ir bandymas bei [ builtin komandos], kad išbandytų failų atributus ir atliktų eilučių ir aritmetinius palyginimus. Išraiškos formuojamos iš šių vienarūšių ar dvejetainių pradinių žinių. Jei bet kurio failo argumentas vienam iš pagrindinių duomenų yra formos / dev / fd / n , tada failo deskriptorius n yra pažymėtas. Jei failo argumentas vienam iš pirminių duomenų yra vienas iš / dev / stdin , / dev / stdout arba / dev / stderr , atitinkamai pažymimas failų aprašas 0, 1 arba 2.

-failą

Tiesa, jei failas egzistuoja.

-b failas

Tiesa, jei failas egzistuoja ir yra blokinis specialus failas.

-c failas

Tiesa, jei failas egzistuoja ir yra simbolio specialus failas.

-d failas

Tiesa, jei failas egzistuoja ir yra aplankas.

-f failas

Tiesa, jei failas egzistuoja.

-f failas

Tiesa, jei failas egzistuoja ir yra įprastas failas.

-g failas

Tiesa, jei failas egzistuoja ir yra set-group-id.

-f failas

Tiesa, jei failas egzistuoja ir yra simbolinė nuoroda.

-k failas

Tiesa, jei failas egzistuoja ir nustatytas jo "lipnus" bitas.

-p failas

Tiesa, jei failas egzistuoja ir yra pavadintas vamzdis (FIFO).

-r failas

Tiesa, jei failas egzistuoja ir yra skaitomas.

-s failas

Tiesa, jei failas egzistuoja ir jo dydis didesnis nei nulis.

-t fd

Tiesa, jei failų deskriptorius fd yra atidarytas ir nurodo terminalą.

-u failas

Tiesa, jei failas egzistuoja ir jo nustatytasis naudotojo ID bitas yra nustatytas.

-w failas

Tiesa, jei failas egzistuoja ir yra įrašomas.

-x failas

Tiesa, jei failas egzistuoja ir yra vykdomąjį.

-O failas

Tiesa, jei failas egzistuoja ir priklauso veiksmingam naudotojo ID.

-G failas

Tiesa, jei failas egzistuoja ir priklauso faktinės grupės ID.

-L failas

Tiesa, jei failas egzistuoja ir yra simbolinė nuoroda.

-S failas

Tiesa, jei failas egzistuoja ir yra lizdas.

-N failas

Tiesa, jei failas egzistuoja ir buvo pakeistas nuo paskutinio skaitymo.

file1 - nt file2

Tiesa, jei file1 yra naujesnis (pagal pakeitimo datą) nei file2 , arba jei fail1 egzistuoja ir fail2 nėra.

file1 - ot file2

Tiesa, jei failas1 yra senesnis nei failas2 , arba jei failas2 egzistuoja ir failas1 neegzistuoja.

file1 -ef file2

Tiesa, jei file1 ir file2 nurodo tą patį įrenginį ir inode numerius.

-optname

Tiesa, jei įjungta apvalkalo parinkties optname . Žr. Parinkčių sąrašą, apibūdintą parinkties " -o" parinktį, esančią žemiau.

-z eilutė

Tiesa, jei eilutės ilgis yra nulis.

-n eilutė

eilutė

Tiesa, jei eilutės ilgis yra nulis.

string1 == string2

Tiesa, jei stygos yra lygios. = gali būti naudojamas vietoj == griežtai POSIX atitikčiai.

string1 ! = string2

Tiesa, jei stygos nėra lygios.

string1 < string2

Tiesa, jei string1 rūšiuoja prieš string2 leksikografiškai dabartinėje locale.

string1 > string2

Tiesa, jei eilutė1 rūšiuojama po string2 leksikografiškai dabartinėje locale.

arg1 OP arg2

OP yra viena iš -eq , -ne , -lt , -le , -gt , arba -ge . Šie aritmetiniai dvejetainiai operatoriai grįžta teisingai, jei arg1 yra lygus, ne mažesnis kaip, mažesnis arba lygus didesnis arba didesnis arba lygus arg2 atitinkamai. Arg1 ir arg2 gali būti teigiami arba neigiami sveikieji skaičiai.

SIMPLE COMMAND EXPANSION

Kai vykdoma paprasta komanda, apvalkalas atlieka šiuos išplėtimus, priskyrimus ir peradresavimus iš kairės į dešinę.

1.

Žodžiai, kuriuos parsētājs pažymėjo kaip kintamųjų priskyrimus (prieš pradedant komandų pavadinimą) ir peradresavimai išsaugomi vėlesniam apdorojimui.

2.

Išskleisti žodžiai, kurie nėra kintamųjų priskyrimai arba peradresavimai. Jei po išsiplėtimo lieka žodžių, pirmasis žodis laikomas komandos pavadinimu, o likusieji žodžiai yra argumentai.

3.

Persiuntimai atliekami, kaip aprašyta anksčiau REDIRECTION .

4.

Tekstas po kiekvieno kintamojo priskyrimo = perima tildės išplėtimą, parametrų išplėtimą, komandų pakeitimą, aritmetinį išplėtimą ir citatų ištrynimą prieš priskiriant kintamąjį.

Jei komandų vardų nėra, kintamųjų priskyrimas turi įtakos dabartinei apvalkalo aplinkai. Priešingu atveju kintamieji bus įtraukti į įvykdytos komandos aplinką ir neturi įtakos dabartinei apvalkalo aplinkai. Jei kuri nors iš užduočių bando priskirti reikšmę tik skaitomam skaičiui, atsiranda klaida, o komanda baigiasi statusu be nulio.

Jei komandų vardų nėra, peradresavimai atliekami, tačiau neturi įtakos dabartinei apvalkalo aplinkai. Peradresavimo klaida nustato komandą, kad ji išeitų be nulio.

Jei po plėtros išsiunčiamas komandos vardas, vykdymas vykdomas, kaip aprašyta toliau. Priešingu atveju komanda baigsis. Jei vienoje iš išplėstų buvo komandų pakaitalas, komandos išėjimo statusas yra paskutinio atlikto komandų pakeitimo išvesties būsena. Jei komandų pakeitimų nebuvo, komanda išeina su nulio statusu.

BENDROJI VYKDYMAS

Po to, kai komanda buvo padalinta į žodžius, jei tai lemia paprastą komandą ir neprivalomą argumentų sąrašą, imamasi šių veiksmų.

Jei komandų pavadinime nėra brūkšnių, apvalkalas bando jį rasti. Jei tokiu pavadinimu egzistuoja apvalkalo funkcija, tai funkcija yra vadinama, kaip aprašyta anksčiau FUNKCIJOMS . Jei pavadinimas neatitinka funkcijos, apvalkalas ją ieško į apvalkalo buveinių sąrašą. Jei rastas atitikmuo, jis pradeda veikti.

Jei pavadinimas nėra nei apvalkalo funkcija, nei įvestis ir nėra jokių suspaudimų, bash ieško kiekvieno PATH elemento kataloge, kuriame yra vykdomoji failo vardas. Bash naudoja maišos lentelę, kad galėtumėte prisiminti visus vykdomųjų failų pavadinimus (žr. Mazgą SHELL BUILTIN COMMANDS žemiau). PATH katalogų paieška vykdoma tik tada, jei komanda nerasta maišos lentelėje. Jei paieška nesėkminga, korpusas spausdina klaidos pranešimą ir grąžina 127 išėjimo statusą.

Jei paieška yra sėkminga arba jei komandų pavadinime yra vienas ar daugiau brūkšnių, apvalkalas vykdo pavadintą programą atskiroje vykdymo aplinkoje. Argumentas 0 yra nustatytas į pateiktą vardą, o likusieji argumentai komandai yra nustatomi pagal pateiktus argumentus, jei jie yra.

Jei šis vykdymas nepavyksta, nes failas nėra vykdomajame formate ir failas nėra aplankas, jis laikomas apvalkalo scenarijais - failas su apvalkalo komandomis. Sukurtas subhellas, kad įvykdytų. Ši prenumerata paleidžiama iš naujo, kad poveikis būtų toks, tarsi būtų sukurtas naujas apvalkalas, skirtas tvarkyti scenarijų, išskyrus tai, kad vaikai išsaugo tėvų atmintyje esančias komandų vietas (žr. Žemiau esančio SHELL BUILTIN COMMANDS ).

Jei programa yra failas, prasidedantis #! , likusioji pirmoji eilutė nurodo programos vertėją. Korpusas vykdo nurodytą vertintoją operacinėse sistemose, kurios patys nejaučia šio vykdomojo formato. Vertintojo argumentai susideda iš vieno neprivalomo argumento, prasidedančio pirmosios programos eilutėje esančiu vertėjo pavadinimu, po kurio nurodomas programos pavadinimas, po kurio eina komandų argumentai, jei tokie yra.

BENDROJI VYKDYMO APLINKA

Korpusas turi vykdymo aplinką , kurią sudaro:

*

atidaryti failus, paveldėtus apvalkalo po paskambinimo, pakeistos perėjimais, pateiktais exec builtin

*

dabartinį darbo katalogą, kurį nustato cd , pushd arba popd , arba paveldėtą apvalkalo paskyra

*

failų kūrimo režimas kaukuoja, kaip nustatė umask arba paveldėjo iš tėvų apvalkalo

*

dabartinės spąstai, kuriuos nustato spąstai

*

apvalkalo parametrai, kuriuos nustato kintamasis priskyrimas arba nustatytas arba paveldėtas iš tuščiojo aplanko aplinkoje

*

apvalkalo funkcijos, apibrėžtos vykdymo metu arba paveldėtos iš tuščiojo aplanko aplinkoje

*

parinktys, įjungtos paskambinus (pagal numatytuosius nustatymus arba naudojant komandinės eilutės argumentus) arba nustatytos

*

parinktys, kurias įgalino parduotuvė

*

lukšto slapyvardžiai, apibrėžti slapyvardžiu

*

įvairius proceso ID, įskaitant fono darbus, $ $ vertę ir $ PPID vertę

Kai vykdoma paprastoji komanda, išskyrus integruotą arba apvalkalo funkciją, ji naudojama atskiroje vykdymo aplinkoje, kurią sudaro toliau išvardytos. Jei nenurodyta kitaip, vertės yra paveldimos iš apvalkalo.

*

atvirosios bylos apvalkalo, taip pat bet kokie pakeitimai ir papildymai, nurodyti peradresavimais į komandą

*

dabartinis darbo katalogas

*

failo kūrimo režimas maskuoja

*

apvalkalo kintamieji, pažymėti eksportui, kartu su kintamaisiais, kurie eksportuojami komandai, perduodami aplinkai

*

gaudyklės sugautos lukštais yra atstatomos į vertybes, paveldėtas iš tuščiojo tuščiojo lėktuvo, ir lukštai, kurie ignoruojami lukštais, yra ignoruojami

Komanda, kuria naudojama ši atskira aplinka, negali paveikti apvalkalo vykdymo aplinkos.

Komandų pakeitimo ir asinchroninės komandos yra naudojamos subhell aplinkoje, kuri yra aplanko aplanko dublikatas, išskyrus tai, kad spąstai, sugaunami lukštais, yra iš naujo nustatyti į vertybes, kurias lakštai paveldėjo iš jo tėvų esant iškvietimui. Integruotos komandos, kurios yra naudojamos kaip dujotiekio dalis, taip pat vykdomos į subhell aplinkoje. Pakeitimai, atlikti į subhell aplinkos, negali paveikti apvalkalo vykdymo aplinkos.

Jei po komandos yra " &" ir užduoties kontrolė nėra aktyvi, numatytasis standartinis komandos įvadas yra tuščias failas / dev / null . Priešingu atveju, komanda invokuojama paverčia skambinančiojo lango rinkmenų deskriptorius, pakeistus peradresavimais.

TAIP PAT ŽR

Basho vadovas , Brianas Foksas ir Chetas Ramey

Gnu Readline biblioteka , Brian Fox ir Chet Ramey

Gnu istorijos biblioteka , Brianas Foksas ir Chetas Ramey

Nešiojama operacinės sistemos sąsaja (POSIX). 2 dalis. "Shell" ir komunalinės paslaugos , IEEE

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

emacs (1), vi (1)

readline (3)