Bash - Linux Command - Unix հրամանատարությունը

ԱՆՈՒՆ

bash - GNU Bourne- Again Again

SYNOPSIS- ը

bash [ընտրանքներ] [ֆայլ]

DESCRIPTION

Bash- ը sh- համադրելի հրամանի լեզու թարգմանիչ է, որը ստանդարտ մուտքից կամ ֆայլից կարդում հրամանները: Bash- ը պարունակում է օգտակար հատկություններ Կորնից եւ C- ից ( ksh եւ csh ):

Bash- ը նախատեսված է IEEE POSIX Shell- ի եւ գործիքների հստակեցման (IEEE Աշխատանքային խումբ 1003.2) համապատասխանելի իրականացումը:

ԸՆՏՐՈՒԹՅՈՒՆՆԵՐԸ

Բացի դրանից, կառուցված հրամանատարության նկարագրության մեջ նկարագրված միայնակ բնավորությունը, bash- ը մեկնաբանում է հետեւյալ տարբերակները, երբ այն հրավիրվում է.

-c տող

Եթե -c տարբերակը կա, ապա հրամանները կարդացվում են տողից : Եթե ​​լարերից հետո փաստարկներ կան, ապա դրանք նշանակվում են դիրքի պարամետրերով, սկսած $ 0-ից :

-i

Եթե -i տարբերակը ներկա է, ապա շերտը ինտերակտիվ է :

Կատարեք bash- ի ակտը, կարծես այն մուտքագրվել է որպես մուտքի վահանակ (տես ստորեւ INVOCATION ):

Եթե -R տարբերակը գոյություն ունի, ապա վահանակը դառնում է սահմանափակված (տես ստորեւ նշված ՍԱՀՄԱՆԱՓԱԿ ՇԱՐՔ ):

Եթե -s տարբերակն առկա է կամ, եթե ոչ մի փաստարկ մնա ընտրանքի վերամշակման արդյունքում, ապա հրամանները կարդացվում են ստանդարտ մուտքից: Այս տարբերակը թույլ է տալիս դիրքորոշման պարամետրերը սահմանել ինտերակտիվ վահանակ հրավիրելու ժամանակ:

Ստանդարտ ouput- ում տպագրված բոլոր կրկնակի տրված տողերի ցանկը տպագրվում է $ : Սրանք այն տողերն են, որոնք ենթակա են լեզվի թարգմանության, երբ ներկայիս լեզուն չի հանդիսանում C կամ POSIX : Սա նշանակում է -n տարբերակը; ոչ մի հրաման չի կատարվի:

[- +] O [ shopt_option ]

shopt_option- ը խանութի կողմից ընդունված (տես SHELL BUILTIN COMMANDS ստորեւ) կողմից ընդունված շեղբի տարբերակներից մեկն է: Եթե shopt_option կա, - սահմանում է այդ տարբերակի արժեքը. + O unsets այն: Եթե shopt_option- ը չի մատակարարվում, shopt- ի կողմից ընդունված վահանակների անունները եւ արժեքները տպագրվում են ստանդարտ արտադրանքի վրա: Եթե ​​աղյուսակային տարբերակը + O է , ապա արդյունքը ցուցադրվում է ձեւաչափով, որը կարող է օգտագործվել որպես մուտքագրում:

- Դեպի

A- ազդանշանների վերջն ազդում է եւ անջատում է հետագա ընտրանքների մշակումը: Ցանկացած փաստարկներ, հետո `որպես ֆայլի անվանումներ եւ փաստարկներ են: Արժեքը `համարժեք է:

Բաշը նաեւ թարգմանում է մի շարք բազմաբնույթ ընտրանքներ: Այս ընտրանքները պետք է հայտնվեն հրամանի տողում, նախքան միայնակ բնավորությունը ընտրելու համար:

- dump-po-strings

Equivalent to -D , բայց արտադրանքը գտնվում է GNU gettext po (շարժական օբյեկտ) ֆայլի ֆորմատով:

- դափնիները

Դ .

--Օգնություն

Ցուցադրել օգտագործման հաղորդագրությունը ստանդարտ արտադրանքի վրա եւ հաջողությամբ դուրս գալ:

- ֆայլի ֆայլը

- ֆայլի ֆայլը

Կատարեք հրամանները ֆայլից ~ / .bashrc- ի ստանդարտ անհատական ​​նախնական ֆայլի փոխարեն, եթե վահանակը ինտերակտիվ է (տես INVOCATION ստորեւ):

- լոգին

Համարժեք ` .

- զրպարտություն

Մի օգտագործեք GNU- ի ընթերցանության գրադարանը հրամանի տողեր կարդալու համար, երբ վահանակը ինտերակտիվ է:

- ոչ պրոֆեսիոնալ

Մի ընթերցեք համակարգային լայնաշերտ ֆայլը / etc / profile կամ ~ / .bash_profile , ~ / .bash_login կամ ~ / .profile անձնական նախածանցային ֆայլերից որեւէ մեկը: Լռելյայնորեն, bash- ը կարդում է այդ ֆայլերը, երբ այն մուտքագրվում է որպես մուտքի վահանակ (տես INVOCATION ստորեւ):

- նոռց

Մի կարդացեք եւ կատարեք անձնական նախնական ֆայլ ~ / .bashrc, եթե վահանակը ինտերակտիվ է: Այս տարբերակը գործում է որպես լռելյայն, եթե շեղը կոչվում է sh :

- posix

Փոխեք bash- ի վարքագիծը, որտեղ ստանդարտ գործողությունը տարբերվում է POSIX 1003.2 ստանդարտից ստանդարտին համապատասխան ( posix ռեժիմ ):

- սահմանափակված

Պտուտակը դառնում է սահմանափակված (տես ստորեւ նշված ՍԱՀՄԱՆԱՓԱԿ ՇԱՐՔ ):

- rpm- պահանջում է

Պատրաստել այն ֆայլերի ցանկը, որոնք պահանջվում են վազքի վահանակի համար: Սա ենթադրում է «-n» եւ ենթակա է նույն սահմանափակումների, ինչպես օրինակ, ժամանակի սխալ ստուգման ստուգման կազմելը, Backticks, [] թեստերը եւ evals չեն վերլուծվում, որպեսզի որոշ կախվածություններ բաց թողնվեն: --verbose համարժեք է -v .

- տարբերություն

Ցուցադրել տարբերակի տեղեկատվությունը բեշի այս օրինակի ստանդարտ արտադրանքի վրա եւ հաջողությամբ դուրս գալ:

ԱՐԳԻՇՏՆԵՐ

Եթե ​​փաստարկները մնում են ընտրանքի վերամշակման արդյունքում, եւ ոչ -c, կամ -s տարբերակը չի մատակարարվել, ապա առաջին փաստարկը ենթադրվում է, որ shell- ի հրամանները պարունակող ֆայլի անվանումը: Եթե bash- ը կանչվի այս եղանակով, $ 0- ը սահմանվում է ֆայլի անվան տակ, եւ դիրքի պարամետրերը սահմանվում են մնացած փաստարկներին: Bash- ը կարդում եւ իրականացնում է այս ֆայլի հրամաններ, այնուհետեւ դուրս է գալիս: Բաշի ելքի կարգավիճակը սկրիպտում կատարված վերջին հրամանի ելքի կարգավիճակն է: Եթե ​​որեւէ հրաման չի կատարվում, ելքի կարգավիճակը 0 է: Փորձը նախ եւ առաջ կատարվել է ֆայլը ընթացիկ գրացուցակում, եւ, եթե որեւէ ֆայլ չի գտնվել, ապա shell- ը որոնում է PATH- ի գրացուցակները սցենարի համար:

ՀԵՏԱՔՐՔԻՐ

Մուտքային վահանակը մեկն է, որի առաջին բնույթը զրոյի զրոյական է, կամ մեկն սկսվեց « լոգին» տարբերակով:

Ինտերակտիվ ռումբը մեկն է `սկսած առանց ոչ տարբերակային փաստարկների եւ առանց -c տարբերակի, որի ստանդարտ մուտքագրումը եւ ելքը միացված են տերմինալներին (ինչպես սահմանված է isatty (3)), կամ մեկն սկսվել է -i տարբերակով: PS1- ը սահմանվում է եւ $ - ներառում է i- ը, եթե bash- ը ինտերակտիվ է, թույլ տալով շերտերի սցենար կամ սկավառակի ֆայլ `փորձելու այս վիճակը:

Հետեւյալ պարբերությունները նկարագրում են, թե ինչպես է բաշը գործարկում իր գործարկման ֆայլերը: Եթե ​​ֆայլերից որեւէ մեկը գոյություն ունի, բայց չի կարելի կարդալ, ապա bash- ը սխալ է հաղորդում: Tildes- ը ընդլայնվում է ֆայլի անուններով, ինչպես նկարագրված է TILD EXTENSION- ում, EXPANSION բաժնում:

Երբ bash- ը հանդես է գալիս որպես ինտերակտիվ մուտքի վահանակ, կամ որպես «non-interactive» shell --login տարբերակով, այն առաջին անգամ կարդում եւ իրականացնում է ֆայլ / etc / profile ֆայլերից , եթե այդ ֆայլը գոյություն ունի: Այս ֆայլը կարդալուց հետո այն փնտրում է ~ / .bash_profile , ~ / .bash_login եւ ~ / .profile , այդ կարգով, եւ կարդում եւ իրականացնում է առաջիններից մեկը, որը գոյություն ունի եւ ընթեռնելի է: The- noprofile- ի տարբերակը կարող է օգտագործվել այն դեպքում, երբ ռումբը սկսում է կանխել այս վարքը:

Երբ մուտքի վահանակը դուրս է գալիս, bash- ը կարդում եւ իրականացնում է ~ / .bash_logout ֆայլից հրամանները , եթե այն գոյություն ունի:

Երբ սկսվում է ինտերակտիվ ռումբ, որը մուտքի խցիկ չէ , bash- ը կարդում եւ իրականացնում է ~ / .bashrc- ից հրամանները, եթե այդ ֆայլը գոյություն ունի: Դա կարող է արգելափակվել `օգտագործելով --norc տարբերակը: The- rffile ֆայլի տարբերակը ստիպելու է bash- ին կարդալ եւ կատարել ~ / .bashrc- ի փոխարեն պատկերի պատվերներ :

Երբ bash- ը սկսվում է ոչ ինտերակտիվ, սկավառակային սկրիպտը գործելու համար, օրինակ, այն տեսնում է միջավայրում BASH_ENV- ի փոփոխականը, ընդլայնում է իր արժեքը, եթե այն հայտնվում է, եւ օգտագործում է ընդլայնված արժեքը, որպես ֆայլի անունը կարդալու եւ կատարելու համար . Բաշը պահպանում է հետեւյալ կերպ,

եթե [-n "$ BASH_ENV"]; ապա: "$ BASH_ENV"; fi

սակայն PATH փոփոխականի արժեքը չի օգտագործվում ֆայլի անունը որոնելու համար:

Եթե bash- ը կոչվում է sh- ի անվան տակ, այն փորձում է նման կերպ շեշտադրել sh- ի պատմական տարբերակների գործարկման վարքագիծը, ինչպես նաեւ համապատասխանում է POSIX ստանդարտին: Երբ օգտագործվում է որպես ինտերակտիվ մուտքի վահանակ, կամ « llogin» տարբերակով ոչ ինտերակտիվ կույտ , առաջին անգամ փորձում է կարդալ եւ իրականացնել հրամանները / etc / profile եւ ~ / .profile , այդ կարգով: The- noprofile- ի տարբերակը կարող է օգտագործվել կանխելու այս վարքը: Երբ անվանվում է ինտերակտիվ ռումբ, որը կոչվում է sh , bash- ը փնտրում է փոփոխական ENV , ընդլայնում է իր արժեքը, եթե այն սահմանվում է, եւ օգտագործում է ընդլայնված արժեքը որպես ֆայլի անունը կարդալու եւ կատարելու համար: Քանի որ sh- ը կոչվող շերտը չի փորձում ընթերցել եւ իրականացնել ցանկացած այլ գործարկման ֆայլերից հրամանների կատարումը, --rcfile տարբերակը չունի որեւէ ազդեցություն: Աննշան շերտով օգտագործվող ոչ ինտերակտիվ մակերեսը չի փորձում ընթերցել որեւէ այլ գործարկման ֆայլ: Երբ սկսվում են sh , bash- ը մտնում է posix ռեժիմ, սկսած ֆայլերը կարդալուց հետո:

Երբ bash- ը սկսվում է posix ռեժիմում, ինչպես - posix հրամանի տող տարբերակով, այն սկսում է POSIX ստանդարտը սկավառակային ֆայլերի համար: Այս ռեժիմում ինտերակտիվ ռումբերն ընդլայնում են ENV փոփոխականները եւ հրամաններն ընթերցվում եւ կատարվում են այն ֆայլից, որի անունը ընդլայնված արժեք է: Այլ մեկնարկային ֆայլեր չեն ընթերցվում:

Bash- ը փորձում է որոշել, թե երբ այն վարում է հեռավոր ռումբի դոմենը, սովորաբար rshd : Եթե bash- ը որոշում է, այն վարում է rshd- ով , այն կարդում եւ գործարկում է ~ / .bashrc- ից , եթե այդ ֆայլը գոյություն ունի եւ ընթեռնելի է: Դա չի անի դա, եթե ստացվի որպես sh : The- norc տարբերակը կարող է օգտագործվել արգելափակելու այս վարքը, եւ -rcfile տարբերակը կարող է օգտագործվել, որպեսզի ստիպված լինեն մեկ այլ ֆայլ կարդալ, բայց rshd- ը, ընդհանուր առմամբ, չի օգտագործում այդ տարբերակները կամ թույլ է տալիս դրանք նշել:

Եթե ​​ռումբը սկսվում է արդյունավետ օգտագործողի (խմբակային) id- ի հետ, ոչ հավասար է իրական օգտագործողի (խմբի) id- ը, եւ -p տարբերակը չի մատակարարվում, ոչ մեկնարկային ֆայլերը չեն ընթերցվում, shell ֆունկցիաները ժառանգված չեն շրջակա միջավայրից, SHELLOPTS փոփոխական, եթե այն հայտնվում է շրջակա միջավայրում, անտեսվում է, իսկ արդյունավետ օգտվողի ID- ն սահմանված է իրական օգտագործողի ID- ին: Եթե -p տարբերակը մատակարարվում է հրահանգում, ապա գործարկման նույն վարքը նույնն է, բայց արդյունավետ օգտագործողի ID- ն չի վերականգնվել:

Սահմանումներ

Այս փաստաթղթի մնացած մասերում օգտագործվում են հետեւյալ սահմանումները:

դատարկ

Տիեզերք կամ ներդիր:

բառը

Հավաքածուների հաջորդականությունը համարվում է որպես մեկ միավոր միավոր: Նաեւ հայտնի է որպես նշան :

Անուն

Մի խոսք, որը բաղկացած է միայն այբուբենիկ նիշերից եւ գծերից, սկսած այբբենական բնույթից կամ ընդգծումից: Նաեւ կոչվում է նույնացուցիչ :

metacharacter

Բնույթ, որը, երբ անջատված է, առանձնացնում է բառեր: Հետեւյալներից մեկը.

| | &; () <> տարածություն էջանիշ

վերահսկիչ օպերատոր

Մի նշան, որն իրականացնում է վերահսկողության գործառույթ: Դա հետեւյալ խորհրդանիշներից մեկն է.

|| & &&; ;; () |

Պահպանված խոսքեր

Պահպանված խոսքերն այն բառերն են, որոնք հատուկ նշանակություն ունեն: Հետեւյալ բառերը ճանաչվում են որպես վերապահված, եւ ոչ թե սովորական հրամանատարության առաջին բառերը (տես SHELL GRAMMAR ստորեւ) կամ գործի երրորդ բառը կամ հրաման:

!! գործը արվում է elif else esac fi- ի համար ֆունկցիայի համար, եթե ընտրելիս այնուհետեւ մինչեւ {} ժամանակը [[]]]

Շել ԳՐԱՄՄԱՐ

Պարզ հրամաններ

Պարզ հրաման է ընտրովի փոփոխական հանձնարարությունների հերթականությունը, որին հետեւում են դատարկ բառեր եւ վերահղումներ, եւ դադարեցվում են հսկիչ օպերատորի կողմից : Առաջին բառը հստակեցնում է կատարված հրամանը եւ անցնում է որպես զրոյական զրո: Մնացած բառերը բերվում են որպես փաստարկներ տրված հրամանին:

Պարզ հրամանի վերադարձի արժեքը նրա ելքի կարգավիճակն է, կամ 128+ ն, եթե հրամանը դադարեցվի ազդանշան n- ով :

Խողովակաշարեր

Խողովակաշարը բնույթով առանձնացված մեկ կամ ավելի հրամանների հաջորդականությունն է: | . Խողովակաշարի ձեւաչափը `

[ time [ -p ]] [! ] հրաման [ | command2 ...]

Հրամանի ստանդարտ ելքը կապվում է խողովակի միջոցով command2 ստանդարտ մուտքագրման հետ: Այս կապը կատարվում է հրամանով սահմանված վերաձեւակերպումներից առաջ (տես ստորեւ REDIRECTION ):

Եթե ​​վերապահված բառը : նախորդում է խողովակաշարի, այդ խողովակաշարի ելքի կարգավիճակը վերջին հրամանի ելքի կարգավիճակի տրամաբանական չէ: Հակառակ դեպքում, գազատարի կարգավիճակը վերջին հրամանատարության ելքի կարգավիճակն է: The shell սպասում է բոլոր հրամանները, որ խողովակաշարում դադարեցնել առաջ վերադարձնել արժեքը:

Եթե ժամանակի պահված բառը նախորդում է խողովակաշարի, ապա անցյալը, ինչպես նաեւ օգտագործողը եւ համակարգը կատարվում են դրա կատարման ժամանակ, հաղորդում է, երբ գազամուղը դադարում է: -p տարբերակը փոխում է արտադրանքի ձեւաչափը, որը նշված է POSIX- ի կողմից: TIMEFORMAT փոփոխականը կարող է սահմանվել ձեւաչափով, որը ցույց է տալիս, թե ինչպես պետք է ցուցադրվի ժամանակի տեղեկատվությունը: տեսեք TIMEFORMAT- ի նկարագրությունը Shell փոփոխականների ներքո ստորեւ:

Խողովակաշարի յուրաքանչյուր հրամանատարը կատարվում է որպես առանձին գործընթաց (այսինքն `ենթահեղձում):

Ցուցակները

Ցուցակը օպերատորներից մեկի կողմից բաժանված մեկ կամ ավելի խողովակաշարերի հաջորդականությունն է . , & , && , կամ || եւ, ըստ էության, դադարեցվել է մեկը . , & , կամ :

Այս ցուցակի օպերատորների, && եւ || հավասար են նախորդ, հետեւում ; եւ, եւ որոնք ունեն հավասար նախադեպ:

Ցանկի մեջ կարող է հայտնվել մեկ կամ մի քանի նոր գծերի հերթականությունը, հրամանները զսպելու համար փոխարենը կետային վահանակի փոխարեն:

Եթե ​​հրամանը դադարեցվում է հսկողության օպերատորի կողմից եւ , ապա shell- ը հրամանը կատարում է ենթահամակարգում: Ռումբը չի սպասում հրամանատարության ավարտին, իսկ վերադարձի կարգավիճակը `0: a . կատարվում են հերթականությամբ. shell սպասում է յուրաքանչյուր հրաման է դադարեցնել իր հերթին: Վերադարձի կարգավիճակը կատարված վերջին պատվիրանի ելքի կարգավիճակն է:

Հսկիչ օպերատորները && եւ || Նշում եւ ցուցակները եւ OR ցուցակները համապատասխանաբար: AND- ի ցանկն ունի ձեւը

command1 && command2

command2- ը կատարվում է, եթե միայն, եթե command1 վերադարձնում է զրոյի ելքային կարգավիճակը:

OR- ն ունի ձեւաթուղթ

command1 || հրամանատար 2

command2- ը կատարվում է, եւ միայն այն դեպքում, եթե command1- ը վերադարձնի ոչ-զրոյական ելքի կարգավիճակ: AND- ի եւ OR- ի ցուցակների վերադարձի կարգավիճակը ցուցակում կատարված վերջին հրամանի ելքի կարգավիճակն է:

Համատեղ հրամաններ

Համակցված հրամանը հետեւյալն է.

( ցուցակ )

ցանկը կատարվում է ենթահողի մեջ: Հրահանգի ավարտից հետո փոփոխական հանձնարարությունները եւ կառուցված հրամանները, որոնք ազդում են ռումբի միջավայրի վրա, չեն գործում: Վերադարձի կարգավիճակը ցուցակի ելքի կարգավիճակն է:

{ ցանկ ; }

ցուցակը պարզապես կատարվում է ընթացիկ shell միջավայրում: ցանկը պետք է դադարեցվի նոր գծի կամ կետանշանի հետ: Սա հայտնի է որպես խմբի հրաման : Վերադարձի կարգավիճակը ցուցակի ելքի կարգավիճակն է: Նշենք, որ ի տարբերություն մետաքսարարների ( եւ ) , եւ ( եւ ) , պահված են բառեր եւ պետք է տեղի ունենան, երբ թույլատրված է ճանաչել պահեստային բառը: Քանի որ նրանք բառի ընդմիջում չեն առաջացնում, դրանք պետք է բաժանվեն ցուցակից :

(( արտահայտություն ))

Արտահայտությունը գնահատվում է ըստ ստորեւ նկարագրված կանոնների, համաձայն ARITHMETIC DEFINITION- ի : Եթե ​​արտահայտության արժեքը զրոյական չէ, վերադարձի կարգավիճակը `0; հակառակ դեպքում վերադարձի կարգավիճակը 1 է: Սա ճիշտ է համարվում, թույլ տալով « արտահայտություն »:

[[ արտահայտություն ]]

Վերադարձեք 0 կամ 1 կարգավիճակ, պայմանական արտահայտության արտահայտության գնահատման արդյունքում: Արտահայտումները բաղկացած են ստորեւ նկարագրված սկզբունքներից `պայմանական արտահայտություններով : Բառի պառակտումը եւ pathname ընդլայնումը չեն կատարվում [[ եւ ]] բառերի միջեւ: բալանսի ընդլայնում, պարամետրեր եւ փոփոխական ընդլայնում, թվաբանական ընդլայնում, հրամանատարության փոխարինում, գործընթացների փոխարինում եւ գնանշման հեռացում:

Երբ օգտագործվում են == եւ ! = Օպերատորները, օպերատորի աջ կողմում գտնվող տողը համարվում է օրինակ եւ համապատասխանում է Ստանդարտի համապատասխանության ներքո ստորեւ նկարագրված կանոններին: Վերադարձի արժեքը 0 է, եթե սանդղակը համընկնում է կամ չի համապատասխանում օրինակին, եւ 1 այլ կերպ: Ցանկացած մասի օրինակ կարող է մեջբերվել, որպեսզի ստիպված լինեն համընկնել որպես տող:

Արտահայտությունները կարող են համակցվել օգտագործելով հետեւյալ օպերատորները, որոնք նշված են նախորդության նվազման կարգի մեջ.

( արտահայտություն )

Վերադարձնում է արտահայտության արժեքը: Սա կարող է օգտագործվել օպերատորների նորմալ նախադեպը գերազանցելու համար:

!! արտահայտությունը

Ճիշտ է, եթե արտահայտությունը սխալ է:

արտահայտություն 1 && expression2

Ճիշտ է, եթե երկու expression1 եւ expression2 ճշմարիտ են:

արտահայտություն || արտահայտություն 2 Ճիշտ է, եթե արտահայտություն 1 կամ արտահայտություն 2 ճիշտ է:

The && եւ || օպերատորները չեն գնահատում արտահայտությունը2, եթե expression1- ի արժեքը բավարար է ամբողջ պայմանական արտահայտության վերադարձի արժեքը որոշելու համար:

անունով [ բառով ]; անել ցանկ ; կատարած

Հետեւյալ բառերի ցանկը ընդլայնվում է, ստեղծելով իրերի ցանկը: Փոփոխական անունը սահմանվում է այս ցուցակի յուրաքանչյուր տարրին հերթով, եւ ցանկը կատարվում է ամեն անգամ: Եթե բառի մեջ բացակայում է, ապա հրամանատարը կատարում է հերթական անգամ յուրաքանչյուր դիրքի պարամետրի համար (տես PARAMETERS ստորեւ): Վերադարձի կարգավիճակը վերջին հրամանի ելքի կարգավիճակն է, որը կատարում է: Եթե ​​դատարկ ցուցակի արդյունքում հետեւող կետերի ընդլայնումը, ոչ մի հրահանգ չի կատարվում, իսկ վերադարձի կարգավիճակը `0:

(( expr1 ; expr2 ; expr3 )); անել ցանկ ; կատարած

Նախ, թվաբանական արտահայտության արտահայտությունը գնահատվում է ներքեւում նկարագրված կանոնների հիման վրա, ARITHMETIC գնահատման ներքո : Հաշվարկային արտահայտությունը expr2- ն այնուհետեւ բազմիցս գնահատվում է մինչեւ այն զրոյի համար: Յուրաքանչյուր անգամ expr2- ը գնահատում է ոչ զրոյական արժեք, ցանկը կատարվում է եւ գնահատվում է թվաբանական արտահայտությունը expr3 : Եթե ​​որեւէ արտահայտություն բացակայում է, ապա այն վարվում է այնպիսին, ինչպիսին այն գնահատվում է 1: Վերադարձի արժեքը վերջին պատվիրանի ելքի կարգավիճակն է, որը կատարվում է կամ կեղծ է, եթե արտահայտություններից որեւէ մեկը անվավեր է:

ընտրեք անունը [ բառով ]; անել ցանկ ; կատարած

Հետեւյալ բառերի ցանկը ընդլայնվում է, ստեղծելով իրերի ցանկը: Ընդլայնված բառերի շարքը տպագրվում է ստանդարտ սխալի վրա, որոնցից յուրաքանչյուրը նախորդում է մի շարք: Եթե բառի մեջ բացակայում է, դիրքորոշիչ պարամետրերը տպագրված են (տես PARAMETERS ստորեւ): Այնուհետեւ ցուցադրվում է PS3 հրամանը եւ ստանդարտ մուտքից կարդալ տողը: Եթե ​​գիծը բաղկացած է ցուցադրվող բառերից մեկին համապատասխանող թվից, ապա անունի արժեքը սահմանվում է այդ բառը: Եթե ​​գիծը դատարկ է, ապա բառերը եւ հուշումները կրկին ցուցադրվում են: Եթե ​​EOF- ն կարդացվի, հրամանն ավարտվում է: Ցանկացած այլ արժեքի արժեքը անվանում է անվավեր: Նամակը կարդացվում է REPLY- ի փոփոխականում: Ցանկը կատարվում է յուրաքանչյուր ընտրությունից հետո, մինչեւ ընդմիջման հրամանը կատարվի: Ընտրման ելքի կարգավիճակը ցուցակում կատարված վերջին հրահանգի ելքի կարգավիճակը կամ զրոյն է, եթե ոչ մի հրահանգ չի իրականացվել:

գործի բառը [[(] նմուշում [ նկարը ]]

Գործի հրամանատարությունը առաջին անգամ ընդլայնում է խոսքը եւ փորձում է համապատասխանել իր յուրաքանչյուր օրինակին , իր հերթին, օգտագործելով նույն համապատասխանող կանոնները, ինչպիսիք են pathname ընդլայնումը (տես Pathname Expansion ստորեւ): Երբ հանդիպում է գտնվել, համապատասխան ցուցակն իրականացվում է: Առաջին խաղից հետո ոչ մի հետագա հանդիպում չի փորձվում: Ելքի կարգավիճակը զրո է, եթե ոչ մի օրինակ համընկնում: Հակառակ դեպքում, սա ցուցակում կատարված վերջին հրամանի ելքի կարգավիճակն է:

եթե ցանկը ; ապա ցուցակ; [ elif ցուցակ ; ապա ցուցակ ; [...] ] fi

Եթե ցանկը կատարվում է: Եթե ​​նրա ելքի կարգավիճակը զրոյական է, ապա այդ ցուցակը կատարվում է: Հակառակ դեպքում, յուրաքանչյուր էլիֆի ցուցակը կատարվում է իր հերթին, եւ եթե ելքի կարգավիճակը զրո է, ապա համապատասխան ցուցակն իրականացվում է եւ հրամանն ավարտվում է: Հակառակ դեպքում, եթե այլ ցանկ է կատարվում, ապա լրացուցիչ ցուցակները կատարվում են: Ելքային կարգավիճակը `կատարված վերջին հրամանի ելքի կարգավիճակն է, կամ զրո, եթե վիճակը չի ստուգվում:

իսկ ցուցակը ; անել ցանկ ; կատարած

մինչեւ ցուցակ ; անել ցանկ ; կատարած

Մինչեւ հրամանն անընդհատ կատարում է գործողությունների ցուցակը, քանի դեռ ցանկի վերջին հրամանը վերադարձնում է զրոյի ելքային կարգավիճակը: Մինչեւ հրամանը նույն ժամանակահատվածում նույնական է, բացառությամբ, որ թեստը մերժվում է. անելիքները կատարվում են այնքան ժամանակ, քանի դեռ ցուցակում վերջին հրամանը վերադարձնում է ոչ զրոյական ելքի կարգավիճակ: Ժամանակի եւ մինչեւ հրամանների ելքային կարգավիճակը կատարված է վերջին գործողությունների ցուցակի հրամանատարության ելքային կարգավիճակը կամ զրո, եթե ոչ մեկը կատարված չէ:

[ ֆունկցիա ] անուն () { ցանկ ; }

Սա սահմանում է անուն անուն ֆունկցիա: Ֆունկցիայի մարմինը {եւ} միջեւ հրամանների ցանկն է: Այս ցանկը կատարվում է, երբ անունը նշված է որպես պարզ հրահանգի անուն: Ֆունկցիայի ելքի կարգավիճակը մարմնում կատարված վերջին հրամանի ելքի կարգավիճակն է: (Տես FUNCTIONS ստորեւ):

Մեկնաբանությունները

Ոչ ինտերակտիվ շաբլոնում կամ ինտերակտիվ ռելիեվում , որտեղ գործում է խանութի ինտերակտիվ տարբերակները (տես SHELL BUILTIN COMMANDS ստորեւ), սկսած # բառից սկսած բառը եւ այդ գծի մնացած բոլոր նիշերը անտեսվում են: Ինտերակտիվ խցիկը, առանց ինտերակտիվ_կոմիտեների ընտրանքով, թույլ չի տալիս մեկնաբանություններ: Interactive_comments տարբերակը ինտերակտիվ ռումբերում կանխադրված է:

QUOTING

Քառյակը օգտագործվում է հստակ նիշերի կամ բառերի յուրահատուկ նշանակությունը հեռացնելու համար: Քառարկումը կարող է օգտագործվել հատուկ նիշերի հատուկ վերաբերմունքը անջատելու համար, բացառությամբ պահված բառերի կանխարգելման կանխարգելման եւ պարամետրերի ընդլայնման կանխարգելման համար:

Վերեւում նշված վերոհիշյալ մեթախարկերներից յուրաքանչյուրը սահմանում է հատուկ նշանակություն եւ պետք է մեջբերվի, եթե այն իրեն ներկայացնի:

Երբ հրամանատարության պատմության ընդլայնման միջոցները օգտագործվում են, պատմության ընդլայնման բնույթը, սովորաբար : , պետք է մեջբերել, որպեսզի կանխվի պատմության ընդլայնումը:

Կան երեք վիկտորինգային մեխանիզմներ ` փախուստի բնույթ , միակ մեջբերումներ եւ երկակի մեջբերումներ:

Անցյալի մեջբերում ( \ ) է փախուստի բնույթը : Այն շարունակում է պահպանել հաջորդ բնույթի տեքստի արժեքը, որը բացառությամբ : Եթե \\ newline- ի զույգը հայտնվի, եւ վերադարձը ինքնին չի նշվում, ապա \ -ը դիտվում է որպես գծի շարունակություն (այսինքն, այն հեռացվում է մուտքի հոսքից եւ արդյունավետորեն անտեսվում է):

Միայնակ մեջբերումների մեջ ներառված նիշերը պահպանվում են յուրաքանչյուր բնույթի բառացի արժեքը մեջբերումներում: Միակ մեջբերումը չի կարող առաջանալ միակ մեջբերումների միջեւ, նույնիսկ եթե նախորդում է ճեղքվածք:

Կնքված նիշերը կրկնակի մեջբերումներում պահպանում են բոլոր նիշերի տառային արժեքը մեջբերումների մեջ, բացառությամբ $ , ` , եւ \ : Նիշերը $ եւ ` պահպանում են իրենց հատուկ նշանակությունը կրկնակի մեջբերումներով: The backslash- ը պահպանում է իր հատուկ իմաստը միայն այն ժամանակ, երբ հետեւում են հետեւյալ նիշերից մեկի ` $ , ` , \ , կամ : Կրկնակի մեջբերումը կարող է մեջբերվել մեջբերում մեջբերումներով, նախորդելով այն ետկանչի հետ:

Հատուկ պարամետրերը * եւ @ ունեն հատուկ իմաստ, երբ կրկնակի մեջբերումները (տես PARAMETERS ստորեւ):

$ ' String ' ձեւի բառերը հատուկ վերաբերվում են: Խոսքը ընդարձակվում է string- ի հետ , իսկ ետեւում տեղադրված նիշերը փոխարինվում են ANSI C ստանդարտով: Կոտրվածքների փախուստի հաջորդականությունները, եթե առկա են, հետեւյալ կերպ են decoded:

\ a

ահազանգ (զանգ)

\ b

backspace

\ e

փախուստի բնույթ

\ f

ձեւաթաղանթ

\ n

նոր գիծ

\ r

փոխադրման վերադարձը

\ t

հորիզոնական տախտակ

\ v

ուղղահայաց էջանիշ

\\

ճոճանակ

\ '

միակ մեջբերումը

\ n ն

ութ բիտ բնույթը, որի արժեքը nnn (մեկ-երեք նիշ) ութական արժեքն է,

\ x Հ.Հ.

ութբիթային բնույթը, որի արժեքը HX (մեկ կամ երկու hex թվանշան) թվով տասնվեցերորդ արժեք է,

\ c x

վերահսկիչ- x բնույթ

Ընդլայնված արդյունքը միայնակ է, քանի որ դոլարի նշանը չի եղել:

Դրոշի նշան ( $ ) առաջ անցած երկկողմանի տողը առաջացնում է տողը թարգմանված տեղադրության համաձայն: Եթե ​​ընթացիկ տեղը C կամ POSIX է , դոլարի նշանը անտեսվում է: Եթե ​​տողը թարգմանված է եւ փոխարինվում, փոխարինումը կրկնակի մեջբերված է:

Պարամետրեր

Պարամետրը այն արժեքն է պահող կազմակերպություն: Այն կարող է լինել անուն , թվ, կամ Հատուկ Պարամետրերով ներքեւում թվարկված հատուկ նիշերից մեկը: Ռելսի նպատակների համար փոփոխականը մի անունով նշվող պարամետր է: Փոփոխությունը ունի արժեք եւ զրո կամ ավելի հատկանիշներ : Հատկանիշները նշանակվում են հրամանով տեղադրված հրամանով (տես ստորեւ SHELL BUILTIN COMMANDS- ում ):

Պարամետր սահմանվում է, եթե այն նշանակվել է արժեք: Null տողը վավեր արժեք է: Մի փոփոխական սահմանելուց հետո այն կարող է կարգաբերել միայն չօգտագործված կառուցված հրամանով (տես SHELL BUILTIN COMMANDS ստորեւ):

Փոփոխությունը կարող է նշանակվել ձեւի հայտարարությամբ

name = [ արժեք ]

Եթե արժեքը չի տրվում, ապա փոփոխականին տրվում է նարնջագույն տողը: Բոլոր արժեքները ենթարկվում են տիլդերի ընդլայնում, պարամետր եւ փոփոխական ընդլայնում, հրամանատարության փոխարինում, թվաբանական ընդլայնում, եւ մեջբերման հեռացում (տես EXPANSION ստորեւ): Եթե ​​փոփոխականն ունի իր ամբողջ թվային հատկանիշը, ապա արժեքը ենթակա է թվաբանական ընդլայնման, նույնիսկ եթե $ ((...)) ընդլայնումը չի օգտագործվում (տես Arithmetic Expansion below): Բառի պառակտումը չի կատարվում, բացառությամբ «$ @» , որը բացատրվում է ստորեւ, Հատուկ Պարամետրերով : Pathname- ի ընդլայնումը չի կատարվում: Հայտարարագրերը կարող են նաեւ որպես փաստարկ ներկայացնել հայտարարագրման , տեքստերի , արտահանման , ընթերցանության եւ տեղական կառուցված հրամանների համար:

Պաշտոնական պարամետրեր

Պրոֆեսիոնալ պարամետրը պարամետր է, որը նշվում է մեկ կամ ավելի թվանշաններով, բացի մեկ թվից `0-ից: Գծային պարամետրերը նշանակված են վահանակի փաստարկներից, երբ այն կոչվում է, եւ կարող է վերանշանակվել` օգտագործելով սահմանված տեղադրված հրամանը: Պաշտոնաչափ պարամետրերը չեն կարող նշանակվել հանձնարարականի հայտարարություններով: Պաշտոնային պարամետրերը ժամանակավորապես փոխարինվում են այն ժամանակ, երբ կափարիչի գործառույթն իրականացվում է (տես FUNCTIONS ստորեւ):

Այն դեպքում, երբ ավելի քան մեկ նիշից բաղկացած դիրքի պարամետրը ընդլայնվում է, այն պետք է կցված լինի braces- ում (տես EXPANSION ստորեւ):

Հատուկ Պարամետրեր

Ռումբերն առանձնանում է մի քանի պարամետրերով: Այս պարամետրերը կարող են միայն հղում անել. նրանց թույլատրված չէ:

*

Ընդլայնում է դիրքային պարամետրերը, սկսած մեկից: Երբ ընդլայնումը տեղի է ունենում երկակի մեջբերումների մեջ, այն ընդարձակվում է մեկ բառով IFS- ի հատուկ փոփոխականի առաջին բնույթով առանձնացված յուրաքանչյուր պարամետրի արժեքով: Այսինքն, « $ * » հավասար է « $ 1 c $ 2 c ... », որտեղ c- ը IFS փոփոխականի արժեքի առաջին բնույթն է: Եթե IFS- ը չկարգավորվի, պարամետրերը բաժանվում են տարածքներով: IFS- ն անվավեր է, պարամետրերը միացվում են `առանց միջամտելու անջատողներին:

@

Ընդլայնում է դիրքային պարամետրերը, սկսած մեկից: Երբ ընդլայնումը տեղի է ունենում կրկնակի տատանումների մեջ, յուրաքանչյուր պարամետր ընդլայնվում է առանձին բառով: Այսինքն, « $ @ » հավասար է « $ 1 » « $ 2 » -ին ... Երբ դիրքային պարամետրեր չկան, « $ @ » եւ $ @ ընդհանրապես ոչինչ չի ավելացվում (այսինքն, դրանք հանվում են):

#

Ընդարձակվում է տասնորդական դիրքի դիրքի պարամետրերի թիվը:

Հաճախակի

Ընդլայնում է վերջին շրջանում իրականացվող նախագիծը:

- Դեպի

Ընդլայնում է ընթացիկ ընտրանքային դրոշները, ինչպես նշված է դավանանքի վրա, տեղադրված հրամանով կամ նրանց կողմից սահմանված ինքնաթիռի կողմից (օրինակ ` -i տարբերակ):

$

Ընդարձակվում է շաբլոնի գործընթացի ID- ն: () Ենթաբաժնում, այն ընդլայնում է ընթացիկ վահանակի ընթացիկ ID- ն, այլ ոչ թե ենթահեղինակ:

!!

Ընդլայնում է վերջին կատարված ֆոնային (ասինխրոն) հրամանի գործընթացի ID- ն:

0

Ընդարձակվում է վահանակի կամ շերտերի սցենարի անունը: Սա սահմանվում է վահանակի սկզբնավորման մեջ: Եթե bash- ը կանչվի հրամանների ֆայլով, ապա $ 0- ը սահմանվում է այդ ֆայլի անվան: Եթե bash- ը սկսվում է -c տարբերակով, ապա $ 0- ը սահմանվում է առաջին փաստարկը, որը կատարվելու է լարայինից հետո, եթե առկա է: Հակառակ դեպքում, այն սահմանվում է ֆայլի անվան վրա, որն օգտագործվում է bash- ի համար , ինչպես նաեւ տրված է զրոյական զրո:

_

Shell- ի գործարկման ժամանակ սահմանեք վահանակի ցանկի մեջ փոխանցված shell կամ shell սցենարի բացարձակ ֆայլի անունը: Հետագայում, ընդլայնումից հետո ընդլայնվում է վերջին փաստարկը նախորդ հրամանին: Նաեւ սահմանվել է յուրաքանչյուր հրամանի լրիվ ֆայլի անունը, որը կատարված է եւ տեղադրված է այդ հրամանին արտահանված միջավայրում: Երբ ստուգում է փոստը, այս պարամետրը պահպանում է ներկայումս ստուգված փոստի ֆայլի անվանումը:

Shell փոփոխականները

Հետեւյալ փոփոխականները սահմանվում են վահանակով.

ԲԱՇ

Ընդարձակվում է ամբողջական ֆայլի անունը, որն օգտագործվում է bash- ի այս օրինակն օգտագործելու համար:

BASH_VERSINFO

Պարամետրի զանգվածի փոփոխական, որի անդամները բաշի այս օրինակին համարում են տարբերակ տեղեկատվություն: Առանցքային անդամներին տրված արժեքները հետեւյալն են.

BASH_VERSINFO [ 0]

Հիմնական վարկածը ( թողարկումը ):

BASH_VERSINFO [ 1]

Փոքր վարկանիշի համարը ( տարբերակը ):

BASH_VERSINFO [ 2]

Պտղի մակարդակը:

BASH_VERSINFO [ 3]

Կառուցված տարբերակը:

BASH_VERSINFO [ 4]

Ազատման կարգավիճակը (օրինակ, beta1 ):

BASH_VERSINFO [ 5]

MACHTYPE- ի արժեքը:

BASH_VERSION

Ընդարձակվում է բաշի այս օրինակի տարբերակը նկարագրող տողը:

COMP_CWORD

COMP_LINE

Ներկայիս հրամանի տողը: Այս փոփոխականը հասանելի է միայն միջուկային ֆունկցիաների եւ ծրագրավորման ավարտական ​​օբյեկտների կողմից հրավիրված արտաքին հրամաններով (տես ստորեւ Ծրագրավորող ավարտը ):

COMP_POINT- ը

COMP_WORDS

Ներկայիս հրամանի տողում առանձին բառերից բաղկացած զանգվածի փոփոխական (տես ներքեւի տողեր ): Այս փոփոխականը հասանելի է միայն ծրագրային ապահովման ավարտական ​​միջոցների կողմից հրավիրված shell ֆունկցիաներում (տես ստորեւ Ծրագրավորող ավարտը ):

DIRSTACK- ը

Տիտղոսաթերթի պարունակության պարունակությունը պարունակող զանգվածի փոփոխական (տես ներքեւում գտնվող Սրբապատկերներ ): Դիրեկտորները հայտնվում են այն բեմում, որոնք դրսեւորվում են դարերի տեղադրմամբ : Այս զանգվածի փոփոխության անդամներին հատկացնելը կարող է օգտագործվել միայն խմբաքանակի դիրեկտորիաների փոփոխման համար, սակայն այն պետք է օգտագործվի, որպեսզի ավելացնեն եւ հեռացնեն դիրեկտորիաները: Այս փոփոխականի նշանակումը չի փոխի ընթացիկ գրացուցակը: Եթե DIRSTACK- ը չկարգավորվի, կորցնում է իր հատուկ հատկությունները, նույնիսկ եթե այն հետագայում վերակտիվանա:

ԵՄԻԴ

Ընդլայնում է ընթացիկ օգտագործողի արդյունավետ օգտագործման ID- ն, որը նախնական է shell startup- ում: Այս փոփոխականն ընթերցում է:

FUNCNAME- ը

Ցանկացած գործող սահուն ֆունկցիայի անվանումը: Այս փոփոխականն առկա է միայն այն ժամանակ, երբ կատարվում է shell ֆունկցիա: FUNCNAME- ին հանձնարարություններ չեն գործում եւ վերադարձնում են սխալի կարգավիճակը: Եթե FUNCNAME- ը չկարգավորվի, կորցնում է իր առանձնահատկությունները, նույնիսկ եթե այն հետագայում վերացվի:

GROUPS

Խմբի ցուցակ, որը պարունակում է խմբի անդամ, որը ներկայիս օգտագործողը հանդիսանում է անդամ: GROUPS- ի առաջադրանքները որեւէ ազդեցություն չունեն եւ վերադարձնում են սխալի կարգավիճակ: Եթե GROUPS- ը չկարգավորվի, կորցնում է իր առանձնահատկությունները, նույնիսկ եթե այն հետագայում վերականգնվի:

HISTCMD

Ընթացիկ հրամանագրի պատմության համարը կամ պատմությունը, պատմության ցուցակում: Եթե HISTCMD- ն չկարգավորվի, կորցնում է իր առանձնահատկությունները, նույնիսկ եթե այն հետագայում վերացվի:

HOSTNAME- ը

Ավտոմատ կերպով կարգավորեք ներկայիս հյուրընկալողի անունը:

HOSTTYPE

Ավտոմատ կերպով սահմանվում է մի տող, որը եզակի կերպով նկարագրում է մեքենայի տեսակը, որի վրա կատարվում է bash- ը: Լռելյայն համակարգը կախված է:

LINENO- ն

Յուրաքանչյուր անգամ այս պարամետրը հղում է կատարում, shell- ը փոխարինում է սեղմված գործառույթի ներսում հաջորդական գծի համարը (սկսած 1-ից) ներկայացնող տասնորդական համարը: Երբ ոչ մի սցենարի կամ գործողության մեջ, փոխարինված արժեքը երաշխավորված չէ իմաստալից լինել: Եթե LINENO- ն չկարգավորվի, կորցնում է իր հատուկ հատկությունները, նույնիսկ եթե այն հետագայում վերացվի:

MACHTYPE

Ավտոմատ կերպով սահմանվում է այն տողը, որը լիովին նկարագրում է բաշի գործած համակարգային տիպը, ստանդարտ GNU cpu-company-system ձեւաչափով: Լռելյայն համակարգը կախված է:

OLDPWD

Նախորդ աշխատանքային գրացուցակը, որը սահմանվել է cd հրամանով:

ՕՊՏԱՐԳ

Վերջին օպցիոնի փաստարկի արժեքը, որը վերամշակված տեղադրված հրամանով մշակված է (տես SHELL BUILTIN COMMANDS ստորեւ):

ՕՊՏԻՆԴ

Հաջորդ փաստարկի ինդեքսը պետք է վերամշակվի տեղական հրամանատարությամբ (տես SHELL BUILTIN COMMANDS ստորեւ):

OSTYPE

Ավտոմատ կերպով սահմանվում է այնպիսի տող, որը նկարագրում է օպերացիոն համակարգը, որի վրա bash- ը կատարվում է: Լռելյայն համակարգը կախված է:

PIPESTATUS- ը

Անցումային կարգավիճակի արժեքների ցանկը պարունակող զանգվածի փոփոխական (տես ներքեւի կաղապարներ ), վերջին շրջանում կատարված նախապատմական խողովակաշարի գործընթացներից (որը կարող է պարունակել միայն մեկ հրաման):

PPID- ը

Shell- ի ծնողի գործընթացի ID- ն: Այս փոփոխականն ընթերցում է:

PWD

Ընթացիկ աշխատանքային գրացուցակը, որը սահմանվել է cd հրամանով:

RANDOM

Ամեն անգամ, երբ այս պարամետրը հղում է կատարվում, գեներացվել է 0-ից 32767-ի միջեւ պատահական թվեր: Պատահական թվերի հերթականությունը կարող է սկզբնավորվել `RANDOM- ին արժեք տալով: Եթե RANDOM- ը չկարգավորվի, կորցնում է իր առանձնահատկությունները, նույնիսկ եթե այն հետագայում վերականգնվի:

REPLY

Սահմանեք ընթերցված հրամանով ընթերցված մուտքագրման գիծը, երբ որեւէ փաստարկներ չեն տրամադրվում:

SECONDS

Յուրաքանչյուր անգամ այդ պարամետրը հղում է կատարվում, քանի որ պահեստային հրավիրումից հետո վերադարձվում է վայրկյանների քանակը: Եթե ​​արժեքը նշանակվում է SECONDS- ին , ապա հետագա հղումներով վերադարձված արժեքը հանձնարարությունից հետո ավելացված արժեքի թիվն է: Եթե SECONDS- ը չկարգավորվի, կորցնում է իր հատուկ հատկությունները, նույնիսկ եթե այն հետագայում վերացվի:

SHELLOPTS

Բացահայտված վահանակի ընտրանքների կող միակողմանի ցանկը: Ցանկի մեջ յուրաքանչյուր խոսք վավեր փաստարկ է ` -o տարբերակին տեղադրված հրամանատարության համար (տես SHELL BUILTIN COMMANDS ստորեւ): SHELLOPTS- ում հայտնվող տարբերակները, որոնք ներկայացված են ըստ set -o- ի : Եթե ​​փոփոխությունը շրջակա միջավայրում է, երբ bash- ը սկսվում է, ցանկի յուրաքանչյուր վահանակի տարբերակը կկարողանա ընթերցել ցանկացած նախնական ֆայլ: Այս փոփոխականը միայն կարդալու է:

SHLVL

Ամեն անգամ մեկ անգամ ավելացնում է bash- ի օրինակը:

UID- ը

Ընդարձակվում է ներկա օգտվողի օգտագործողի ID- ն, որը սկսվում է shell startup- ում: Այս փոփոխականն ընթերցում է:

Հետեւյալ փոփոխականները օգտագործվում են վահանակի կողմից: Որոշ դեպքերում, bash- ը նշանակում է փոփոխական: այս դեպքերը նշված են ստորեւ:

BASH_ENV

Եթե ​​այս պարամետրը սահմանվում է, երբ bash- ը կատարում է shell- ի սցենար, դրա արժեքը մեկնաբանվում է որպես ֆայլի անուն, որը պարունակում է հրաման, նախապատրաստելու համար shell- ը, ինչպես ~ / .bashrc- ում : BASH_ENV- ի արժեքը ենթարկվում է պարամետրերի ընդլայնմանը, հրամանի փոխարինմանը եւ թվաբանական ընդլայնմանը, նախքան ֆայլի անունը մեկնաբանելը: PATH- ն չի օգտագործվում որոնման արդյունքների որոնման համար:

CDPATH- ը

Cd- ի հրամանի որոնման ուղին: Սա երկկողմանի ցուցակված դիրեկտորիաների ցանկն է, որի մեջ shell- ն փնտրում է cd- ի հրամանով սահմանված նպատակակետների դիրեկտորիաներ: Օրինակ արժեքը «.: ~: / Usr»:

COLUMNS- ը

Օգտագործվում է ընտրված ընտրված հրամանով `ընտրության ցուցակները տպագրելու համար տերմինալի լայնությունը որոշելու համար: Ավտոմատ կերպով սահմանվում է SIGWINCH- ի ստացումից հետո:

COMPREPLY

Բազային պարամետր, որը bash- ն ընթերցում է ծրագրային ապահովման ավարտի հաստատության կողմից հրավիրված shell ֆունկցիայի միջոցով հնարավոր ստեղծագործությունները (տես ներքեւում Ծրագրված ավարտը ):

FCEDIT- ը

Նախնական խմբագիր fc builtin հրամանատարության համար:

Ֆիգուր

Ֆայլի անունը ավարտելու ժամանակ արհամարհելու համար կաղապարի առանձնացված ցանկը (տես ներքեւում READLINE ): Ֆիգուրան , որի սյունիքը համապատասխանում է FIGNORE- ի գրառումներից մեկին , բացառվում է համապատասխանեցված ֆայլերի ցանկից: Ընտրանքի արժեքը «.o: ~» է:

GLOBIGNORE

Ուղղորդված ցուցակների ցանկը, որը սահմանում է ֆայլային անունների շարք, անտեսվում է pathname ընդլայնումը: Եթե GLANNICA- ի մոդելներից մեկը համապատասխանում է ուղիների ընդլայնման օրինակին համապատասխանող ֆայլի անունը, ապա այն հանվում է խաղերի ցանկից:

HISTCONTROL

Եթե ​​սահմանվել է անտեսանելիության արժեք, գծերը, որոնք սկսվում են տիեզերական բնույթի հետ, չեն մուտքագրվում պատմության ցուցակում: Եթե նախադրյալներ չկան ignoredups- ի համար , ապա վերջին մուտքագրված տողերը չեն մուտքագրվում: Անթույլատրելի արժեքը միավորում է երկու տարբերակները: Եթե ​​չկարգավորվի, կամ եթե վերը նշվածներից որեւէ մեկ այլ արժեք սահմանվի, ապա վերլուծիչի կողմից կարդացած բոլոր տողերը պահվում են պատմության ցուցակում, ենթակա արժեքի HISTIGNORE : Այս փոփոխական գործառույթը փոխարինվում է HISTIGNORE- ի կողմից : Բազմակողմանի հրամանատարության երկրորդ եւ հետագա տողերը չեն փորձարկվում եւ ավելացվում են պատմություն, անկախ HISTCONTROL- ի արժեքից :

ՀԻՍՏՖԻԼ

Ֆայլի անունը, որի հրամանատարության պատմությունը պահվում է (տես Պատմություն ստորեւ): Նախնական արժեքը ~ / .bash_history է : Եթե ​​չկարգավորվի, հրամանատարության պատմությունը չի պահպանվի, երբ ինտերակտիվ սվաղը դուրս է գալիս:

HISTFILESIZE

Պատմության ֆայլում պարունակվող գծերի առավելագույն թիվը: Երբ այս փոփոխականին նշանակվում է արժեք, պատմության ֆայլը կրճատվում է, անհրաժեշտության դեպքում, ներառում է ոչ ավելի, քան այդ տողերի քանակ: Նախնական արժեքը 500 է: Պատմության ֆայլը նաեւ վերագրվում է այս չափսին, երբ գրում է այն ժամանակ, երբ ինտերակտիվ վահանակը դուրս է գալիս:

HISTIGNORE

Որոշ հրամանատարական գծերի որոշման համար օգտագործված նախշերով կաղապարների ցանկը պետք է պահպանվի պատմության ցուցակում: Յուրաքանչյուր նմուշ խարսխված է գծի սկզբում եւ պետք է համապատասխանի ամբողջական տողին (բացակայում է ` * 'կցված է): Յուրաքանչյուր նմուշ փորձարկվում է գծի դեմ ` HISTCONTROL- ի կողմից սահմանված ստուգումներից հետո: Բացի նորմալ վահանակի նիշերի համապատասխանող նիշերից ` & 'համապատասխանում է նախորդ պատմության գծին: « & » կարող է փախչել, օգտագործելով ճոճանակ: հակառակն է փորձարկումից առաջ վերադարձը վերցված է: Երկրորդ եւ հաջորդական տողերը բազմաշերտ բաղադրիչ հրամանով չեն փորձարկվում եւ ավելացվում են պատմություն, անկախ նրանից, որ HISTIGNORE- ի արժեքը:

HISTSIZE

Հրամանատարության պատմության մեջ հիշելու հրամանների թիվը (տես Պատմություն ստորեւ): Նախնական արժեքը 500 է:

ՏՈՒՆ

Ներկայիս օգտագործողի տան տեղեկագիրը; ստանդարտ փաստարկը cd տեղադրված հրամանի համար: Այս փոփոխականի արժեքը նույնպես օգտագործվում է տիլդերի ընդլայնումը կատարելու ժամանակ:

ՀՈՍՓԻՖԻԿ

Պարունակում է ֆայլի անունը նույն ձեւաչափով / etc / hosts, որոնք պետք է կարդալ, երբ վահանակը պետք է լրացնի hostname: Հնարավոր հոստընտանի լրացումների ցանկը կարող է փոխվել, երբ վահանակն աշխատում է; հաջորդ անգամ hostname- ի ավարտը փորձարկվում է արժեքի փոփոխությունից հետո, bash- ը ավելացնում է նոր ֆայլի բովանդակությունը գոյություն ունեցող ցուցակում: Եթե HOSTFILE- ը սահմանվել է, բայց չունի արժեք, bash- ը փորձում է ընթերցել / etc / hosts `հնարավոր hostname- ի լրացումները ստանալու համար: Երբ HOSTFILE- ը չի կարգավորվում, հյուրընկալող ցուցակը մաքրվում է:

IFS- ը

The Internal Field Separator- ը , որն օգտագործվում է բառի բաշխման համար, ընդլայնումից հետո եւ կարդացվում է տողեր, կարդալով կառուցված հրամանով: Նախնական արժեքը `` ':

IGNOREEOF

Վերահսկում է ինտերակտիվ վահանակի գործողությունը EOF- ի բնույթի ստացման վրա `որպես միակ ներածում: Եթե ​​սահմանվի, արժեքը հաջորդական EOF նիշերի քանակն է, որը պետք է մուտքագրվի որպես մուտքագրման գծի առաջին նիշերը bash- ից առաջ: Եթե ​​փոփոխիչը գոյություն ունի, բայց չունի թվային արժեք կամ չունի արժեք, ապա լռելյայն արժեքը 10 է: Եթե այն գոյություն չունի, EOF- ը նշանակում է միջամտության ավարտը shell- ին:

INPUTRC- ը

Ընթերցման ընթերցման գործարկման ֆայլի ֆայլի անվանումը, գերակշռելով ~ / .inputrc- ի լռելյայն (տես ստորեւ բերված READLINE ):

LANG- ը

Օգտագործվում է LC_- ից սկսած փոփոխականով հատուկ ընտրված որեւէ կատեգորիայի տեղային կատեգորիայի որոշելու համար:

LC_ALL

Այս փոփոխականն արտացոլում է LANG- ի եւ ցանկացած այլ LC_ փոփոխականի արժեքը `նշելով տեղային կարգը:

LC_COLLATE

Այս փոփոխականը սահմանում է pathname- ի ընդլայնման արդյունքների տեսակավորման ժամանակ օգտագործվող համադրման կարգը եւ սահմանում է տիրույթների ընդլայնման եւ օրինակների համապատասխանության մեջ սահմանային ընդգրկույթների, հավասարազորման դասերի վարքագծի վարքագծի եւ սահմանման հաջորդականությունը:

LC_CTYPE

Այս փոփոխականը որոշում է կերպարների մեկնաբանումը եւ գծերի դասակարգի վարքագծի դասավորությունը եւ pathname ընդլայնումը եւ ձեւի համապատասխանությունը:

LC_MESSAGES- ը

Այս փոփոխականը սահմանում է լոկալ, որն օգտագործվում է կրկնակի քառանիշ տողեր թարգմանելու համար, նախորդում է $ :

LC_NUMERIC- ը

Այս փոփոխականը որոշում է թվային ձեւաչափի համար օգտագործվող տեղական դասակարգը:

LINES

Օգտագործվում է ընտրված ընտրված հրամանով `որոշելու ընտրության ցուցակների համար սյունակի երկարությունը որոշելու համար: Ավտոմատ կերպով սահմանվում է SIGWINCH- ի ստացումից հետո:

Փոստ

Եթե ​​այս պարամետրը սահմանվում է ֆայլի անվան եւ MAILPATH փոփոխական չի սահմանվել, bash- ը տեղեկացնում է օգտագործողին նշված ֆայլում փոստի ժամանման մասին:

MAILCHECK

Հատկորոշում է, թե որքան հաճախ (վայրկյանում) bash- ը ստուգում է փոստով: Սխալը 60 վայրկյան է: Երբ ժամանակն է ստուգել փոստը, վահանակն այդպես է անում, նախքան առաջնային արագությունը ցուցադրելը: Եթե ​​այս փոփոխականը չի կարգավորվում կամ սահմանվում է այն արժեքով, որը զրոյից ավելի մեծ կամ հավասար չէ, ապա վահանակը անջատում է փոստարկղը:

MAILPATH

Փոստով ստուգվող ֆայլի անունների կողպեքով առանձնացված ցանկը: Հաղորդագրությունը, որը տպագրվում է, երբ նամակը հայտնվում է որոշակի ֆայլի մեջ, կարող է նշվել, որ ֆայլի անունը բաժանվում է «?»: Հաղորդագրության տեքստում օգտագործվելիս $ _ ընդլայնվում է ընթացիկ փոստային ֆայլի անունը: Օրինակ:

MAILPATH = '/ var / mail / bfox' Դուք ունեք նամակ `~ / shell-mail? '$ _- ը ունի փոստ:

Bash- ը տրամադրում է այս փոփոխականի համար նախատեսված լռելյայն արժեք, սակայն այն օգտագործողի փոստի ֆայլերի գտնվելու վայրը համակարգային կախված է (օրինակ, / var / mail / $ USER ):

OPTERR

Եթե ​​սահմանվում է 1-ին արժեքը, ապա bash- ը ցուցադրում է ստեղնաշարի տեղադրման հրամանով ստացված սխալ հաղորդագրությունները (տես SHELL BUILTIN COMMANDS ստորեւ): OPTERR- ը սկզբնավորվում է 1 անգամ, երբ վահանակը հրավիրվում է կամ կատարվում է վահանակ:

PATH- ը

Հրամանների որոնման ուղին: Դա երկկողմանի ցուցակված դիրեկտորիաների ցանկն է, որտեղ վանդակը նայում է հրամանների (տես ստորեւ Կարգը կատարումը ): Լռելյայն ուղին համակարգային կախված է եւ սահմանվում է bash- ի տեղադրող ադմինիստրատորը: Ընդհանուր արժեքը `` / usr / gnu / bin: / usr / local / bin: / usr / ucb: / bin: / usr / bin: '':

POSIXLY_CORRECT

Եթե ​​այս փոփոխականը գտնվում է շրջակա միջավայրում, bash- ը սկսում է, shell enters posix ռեժիմը, նախքան կարդալու գործարկման ֆայլերը, կարծես - posix invocation տարբերակը մատակարարվել է: Եթե ​​սահմանվում է վահանակը, ապա bash- ը հնարավորություն է տալիս posix ռեժիմին , քանի որ եթե հրամանը սահմանված է -o posix- ը կատարվել է:

PROMPT_COMMAND

Եթե ​​սահմանվի, արժեքը կատարվում է որպես հրաման, նախքան ամեն մի առաջնային հրաման տալու համար:

PS1

Այս պարամետրի արժեքը ընդլայնվում է (տես ստորեւ բերված ստորեւ) եւ օգտագործվում է որպես առաջնային արագ տող: Նախնական արժեքը `` \ s- \ v \ $ ':

PS2

Այս պարամետրի արժեքը ընդլայնվում է ինչպես PS1- ով եւ օգտագործվում է որպես երկրորդային հրամանի տող: Լռելյայն `` ` > '':

PS3

Այս պարամետրի արժեքը օգտագործվում է որպես հրամանի հրամանի արագ (տես SHELL GRAMMAR վերը):

PS4

Այս պարամետրի արժեքը ընդլայնվում է, ինչպես PS1- ով եւ արժեքը տպագրվում է յուրաքանչյուր հրամանատարի bash ցուցադրման առաջ կատարման հետագծի ընթացքում: PS4- ի առաջին բնույթը բազմապատիկ անգամ կրկնօրինակվում է, անհրաժեշտության դեպքում, ցույց տալու, որ անուղղակի բազմակի մակարդակները: Սխալը `` ` + '':

TIMEFORMAT- ը

Այս պարամետրի արժեքը օգտագործվում է որպես ձեւաչափի տող, որը ցույց է տալիս, թե ինչպես պետք է ցուցադրվի խողովակաշարերի ժամանակացույցի տեղեկատվությունը, որը նախընտրելի է ժամանակին պահված բառով: % Բնույթը ներկայացնում է փախուստի հաջորդականությունը, որը ընդլայնվում է ժամանակի արժեքի կամ այլ տեղեկատվության: Փախուստի հաջորդականությունները եւ դրանց իմաստները հետեւյալն են. braces նշում են լրացուցիչ մասեր.

%%

Բառացի % :

[ p ] [l] R

Անցած ժամանակը վայրկյանների ընթացքում:

[ p ] [l] U

Օգտվողի ռեժիմում անցկացված CPU վայրկյանների քանակը:

[ p ] [l] S

Համակարգի ռեժիմում ծախսված CPU վայրկյանների քանակը:

P

CPU տոկոսը, որը համարվում է (% U +% S) /% R:

Ընտրովի p- ը նիշն է, որը ցույց է տալիս ճշգրտությունը , տասնորդական կետից հետո հատվածային թվերի քանակը: 0 արժեքը առաջացնում է տասնորդական կետ կամ հատված, որը թողարկվելու է: Առավելագույնը երեք տեղերը կարող են թվարկվել տասնորդական կետից հետո, p- ից ավելի մեծ արժեքները փոխվում են 3-ով: Եթե p- ը չի նշվում, ապա օգտագործվում է 3 արժեքը:

Ընտրովի l- ը սահմանում է ավելի երկար ձեւաչափ, ներառյալ րոպե, MM m SS ձեւը: FF s. P- ի արժեքը որոշում է, թե արդյոք խմբակցությունն ընդգրկված է:

Եթե ​​այս փոփոխականը չի սահմանվել, bash- ը հանդես է գալիս որպես $ \ nreal \ t% 3lR \ nuser \ t% 3lU \ nsys% 3lS արժեք : Եթե ​​արժեքը զրոյական է, ապա ժամկետային տեղեկատվություն չի ցուցադրվում: Հետեւյալ տողը ավելացվում է, երբ ձեւաչափը ցուցադրվում է:

TMOUT- ը

Եթե ​​սահմանվել է զրոյից ավելի մեծ արժեք, TMOUT- ը դիտարկվում է որպես ընթերցված տեղադրման համար նախատեսված ժամանակահատված: Ընտրված հրամանը դադարում է, եթե մուտքագրումը չմտնի TMOUT վայրկյանից հետո, երբ մուտքագրումը գալիս է տերմինալից: Ինտերակտիվ ժապավենի մեջ արժեքը մեկնաբանվում է որպես նախնական հուշում թողարկելու համար մուտքագրման համար անհրաժեշտ վայրկյանների թիվը: Բաշը դադարում է այն վայրկյանից սպասելուց հետո, եթե մուտքագրումը չի գա:

auto_resume

Այս փոփոխականը վերահսկում է, թե ինչպես է միջադիրը համագործակցում օգտվողին եւ աշխատանքի վերահսկողության հետ: Եթե ​​այս փոփոխականն է սահմանվում, առանց վերադասավորումների միայնակ հրամանները չեն դիտարկվում որպես գործող դադարեցված աշխատանքների վերսկսման թեկնածու: Չի թույլատրվում դիմանալ: եթե մուտքագրված տողից սկսած ավելի քան մեկ աշխատանք, ընտրված է վերջերս ընտրված աշխատանքը: Այս համատեքստում դադարեցված աշխատանքի անունը հրամանի տող է, որն օգտագործվում է այն սկսելու համար: Եթե ճշգրիտ արժեքը սահմանվի, մատակարարվող տողը պետք է համապատասխանի դադարեցված աշխատանքի անվանումներին: եթե սահմանվել է ենթատեքստի , մատակարարված տողը պետք է համապատասխանի դադարեցված աշխատանքի անունի ենթատեքստին: Substring արժեքը նման գործառույթ է տալիս, որը համապատասխանում է % -ին: աշխատանքների նույնացուցիչ (տես ստորեւ բերված գործառույթը): Եթե ​​սահմանվել է որեւէ այլ արժեք, մատակարարվող տողը պետք է լինի դադարեցված աշխատանքի անվանումի նախածանց, սա գործառույթն է, որը նույնականացնում է աշխատանքի նույնացուցիչին:

պատմվածքներ

Երկրորդ կամ երեք նիշերը, որոնք վերահսկում են պատմության ընդլայնումը եւ նշանաբանությունը (տես Պատմություն EXPANSION ստորեւ): Առաջին նիշը պատմության ընդլայնման բնույթն է, բնույթը, որը ազդարարում է պատմության ընդլայնման սկիզբը, սովորաբար ` ! '. Երկրորդ բնավորությունը արագ փոխարինման բնույթ է, որը օգտագործվում է որպես ստվերաձեւ, հրամանով նախորդ հրամանի վերագործարկելու համար, փոխարինելով մեկ տող մյուսի համար: Նախնականը `` ^ ': Ընտրովի երրորդ բնույթը բնույթն է, որը ցույց է տալիս, որ գծի մնացած մասը մեկնաբանություն է, երբ հայտնաբերվել է որպես բառի առաջին բնույթ, սովորաբար ` # ': Պատմության մեկնաբանման բնույթը առաջացնում է պատմության փոխարինում, որը պետք է անցնի գծի վրա մնացած բառերի համար: Դա պարտադիր չէ, որ շերտերի վերլուծիչը կարողանա վերլուծել գծի մնացած մասը:

Դասեր

Bash- ը տրամադրում է մեկ չափի զանգվածի փոփոխականներ: Ցանկացած փոփոխական կարող է օգտագործվել որպես զանգված; հայտարարագրված տեղադրողը հստակորեն կհայտարարի զանգված: Չի պարունակվում զանգերի չափի առավելագույն սահմանաչափը, ոչ էլ որեւէ պահանջ, որը անդամների համար ինդեքսավորվում կամ հանձնարարված չէ: Մասերները թվագրվում են ամբողջ թվերով եւ զրոյական են:

Առանձնահատկությունը ստեղծվում է ավտոմատ կերպով, եթե ցանկացած փոփոխական նշանակվում է սինթետիկ անունը [ subscript ] = արժեքը : Ներդիրը համարվում է որպես թվաբանական արտահայտություն, որը պետք է գնահատի զրոյից մեծ կամ հավասար թվին: Պարզապես զանգվածը հայտարարելու համար օգտագործեք հայտարարագիր անունը (տես SHELL BUILTIN COMMANDS ստորեւ): հայտարարում է, որ անունը [ ենթավերնագիր ] նույնպես ընդունված է. ենթատեքստը անտեսվում է: Հատկանիշները կարող են սահմանվել զանգվածի փոփոխականի համար `օգտագործելով հայտարարագրված եւ ընթերցանված տեղադրվողները: Յուրաքանչյուր հատկանիշ վերաբերում է զանգվածի բոլոր անդամներին:

Սրբերը նշանակվում են օգտագործման ձեւի անուն = ( արժեք 1 ... արժեքը n ) , որտեղ յուրաքանչյուր արժեքը կազմում է [ subscript ] = string : Միայն string է պահանջվում: Եթե ​​լրացուցիչ ընտրանքային բրենդները եւ ենթաճյուղերը տրամադրվում են, ապա այդ ցուցանիշը նշանակվում է. հակառակ դեպքում նշանակված տարրը ինդեքսն է, որը տրվում է հայտարարության գումարած մեկին: Ինդեքսավորումը սկսվում է զրոյից: Այս շարադրանքը նույնպես ընդունված է հայտարարված տեղադրման կողմից: Անհատական ​​զանգվածի տարրերը կարող են նշանակվել, օգտագործելով անունը [ ենթավերնագիր ] = արժեքի սինխոսքը վերեւում:

The unset կառուցվածը օգտագործվում է ոչնչացնել arrays. unset անունը [ subscript ] ոչնչացնում է զանգվածի տարրը ինդեքսի ենթագրերում : unset անունը , որտեղ անունը մի զանգված է կամ չկիրառել անուն [ ենթաբազմություն ], որտեղ ստորագրությունը * կամ @ է , հեռացնում է ամբողջ զանգվածը:

Հռչակագիր, տեղական եւ ընթերցանված կառուցվածք յուրաքանչյուրը ընդունում է մի տարբերակ, որը պարունակում է զանգված: Ընթերցանված տեղադրումը ընդունում է -a տարբերակը ստանդարտ մուտքից մինչեւ զանգվածի կարդացած բառերի ցանկը: Սահմանված եւ հայտարարված կառուցվածները պարունակում են զանգվածային արժեքներ այնպես, որ դրանք թույլատրվում են վերաբաշխել որպես հանձնարարություններ:

EXPLANSION- ը

Ընդլայնումը կատարվում է հրամանի տողում, այն բխում է բառերի մեջ: Կատարված են ընդարձակման յոթ տեսակներ ` բրեզենտային ընդլայնում , տիլդերի ընդլայնում , պարամետր եւ փոփոխական ընդլայնում , հրամանատարության փոխարինում , թվաբանական ընդլայնում , բառի պառակտում եւ ուղիների ընդլայնում :

Expansions- ի ձեւը հետեւյալն է. Բրազի ընդլայնում, տիլդերի ընդլայնում, պարամետր, փոփոխական եւ թվաբանական ընդլայնում եւ հրամանի փոխարինում (կատարվում է ձախից դեպի ճիշտ եղանակով), բառի պառակտումը եւ ուղիների ընդլայնումը:

Այն համակարգերում, որոնք կարող են աջակցել այն, գոյություն ունի լրացուցիչ ընդլայնում ` գործընթացի փոխարինում :

Կտրուկի ընդլայնում

Կտրուկների ընդլայնումը մեխանիզմ է, որով կարող են ստեղծվել կամայական տողեր: Այս մեխանիզմը նման է pathname ընդլայնմանը , սակայն առաջացած ֆայլի անունները չպետք է գոյություն ունենան: Ընդլայնված ձեւերի ձեւերը վերցնում են ընտրովի ներածական ձեւը, որին հաջորդում են զույգ բծերի միջեւ ստորակետավորված տողերի շարքը, որին հաջորդում է ընտրովի գրառումը : Ներածվածը նախատիպվում է braces- ում պարունակվող յուրաքանչյուր տողում, եւ postscript- ը կցվում է յուրաքանչյուր արդյունքի տողում, ընդլայնելով ձախից աջ:

Կտրուկների ընդլայնումը կարող է ներկված լինել: Յուրաքանչյուր ընդլայնված լարման արդյունք չի դասավորված; պահպանվում է դեպի աջ կարգը: Օրինակ, { d, c, b } e- ն ընդլայնվում է 'ade ace abe':

Կտրուկի ընդլայնումը կատարվում է ցանկացած այլ ընդլայնումներից առաջ, եւ արդյունքում պահպանվում են այլ ընդլայնումների հատուկ բնութագրեր: Դա խիստ տեքստային է: Բաշը չի կիրառվում սինթետիկ մեկնաբանություն ընդարձակման համատեքստին կամ բծերի միջեւ տեքստին:

Այս կառուցվածքը սովորաբար օգտագործվում է որպես ստեղնաշար, երբ առաջացած տողերի ընդհանուր նախածանցը երկար է, քան վերը նշված օրինակում.

mkdir / usr / local / src / bash / {հին, նոր, դիստ, bugs}

կամ

chown արմատ /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}

Brace- ի ընդլայնումը բերում է մի փոքր անհամատեղելիություն sh- ի պատմական տարբերակների հետ: sh- ը չի բացառում փակելու կամ փակման բծերը հատուկ, երբ դրանք հայտնվում են որպես բառի մի մաս, եւ պահպանում է դրանք արտադրության մեջ: Բաշը հեռացնում է բառերի բծերը, որպես բռունցքի ընդլայնման հետեւանք: Օրինակ, {1,2} ֆայլի մեջ մուտքագրված մի բառ նույնությամբ հայտնվում է արտադրության մեջ: Նույն բառը թողարկվում է որպես file1 file2 bash- ի ընդլայնումից հետո: Եթե ​​շի հետ խիստ համատեղելիություն է պահանջվում, սկսեք bash- ը + B տարբերակի հետ կամ անջատեք բրեզենտային ընդլայնումը + B տարբերակով սահմանված հրամանին (տես SHELL BUILTIN COMMANDS ստորեւ):

Tilde ընդլայնում

Եթե ​​բառը սկսվում է չկիրառված տիլդայի տառերով (` ~ ), ապա առաջին անճշգրված սլաքը նախորդող բոլոր կերպարները (կամ բոլոր նիշերը, եթե չկան անկյունաքանդակ սայթ) համարվում են tilde-prefix : Եթե ​​տիլդայի նախածանցում գտնվող նիշերից որեւէ մեկը մեջբերված չէ, ապա tilde-prefix- ի տառերի հերոսները դիտարկվում են որպես հնարավոր մուտքի անուն : Եթե ​​այս մուտքի անունը նարնջագույն տող է, ապա տիլդը փոխարինվում է HOME- ի shell պարամետրի արժեքով: Եթե ​​Տնային էջը չհաջողվի, փոխարենը, փոխարենը փոխարինում է օգտագործողի տունը: Հակառակ դեպքում, tilde- նախածանցը փոխարինվում է նշված մուտքի անվան հետ համակցված տնային գրացուցակում:

Եթե ​​tilde-prefix- ը `~ +, ապա PWD- ի վահանակի փոփոխական արժեքը փոխարինում է tilde-prefix- ը: Եթե ​​tilde- նախածանցը `~ - 'է, ապա OLDPWD- ի վահանակի փոփոխական արժեքը փոխարինվում է: Եթե ​​տիլդային նախածանցում գտնվող տիլդի հաջորդող նիշերը բաղկացած են թիվ N- ից , ապա ցանկալիորեն prefixed with a `+ 'կամ` `` tilde-prefix փոխարինվում է համապատասխան տարրը գրացուցակների բլոկից, քանի որ այն կցուցադրվի դիլերների կողմից կառուցված տիլդայի նախածանցով, որպես փաստարկ: Եթե ​​թիլանդից հետո տառերը հաջորդող նիշերը համարվում են «+» կամ «-» `առանց« + », ապա` «+»:

Եթե ​​մուտքի անվանումն անվավեր է կամ տիլդերի ընդլայնումը ձախողվում է, բառը անփոփոխ է:

Յուրաքանչյուր փոփոխական հանձնարարություն ստուգվում է անջատված տիլդա-նախածանցների համար `հետեւյալի համար , կամ = . Այս դեպքերում նույնպես կատարվում է թիթեղի ընդլայնումը: Հետեւաբար, կարելի է օգտագործել ֆայլի անունները tildes- ի հանձնարարականներում PATH , MAILPATH եւ CDPATH , եւ shell- ն նշանակում է ընդլայնված արժեք:

Պարամետրերի ընդլայնում

' $ ' Բնույթը ներկայացնում է պարամետրերի ընդլայնում, հրամանի փոխարինում կամ թվաբանական ընդլայնում: Ընդլայնված պարամետրի անվանումը կամ խորհրդանիշը կարող է կցված լինել braces- ում, որոնք պարտադիր են, սակայն ծառայում են փոփոխության պաշտպանել անմիջապես հաջորդող նիշերից, որոնք կարող են մեկնաբանվել որպես անունի մաս:

Երբ braces օգտագործվում, համընկնող ավարտը brace է առաջին ` } 'չի փախչել մի հետադարձի կամ մեջ մեջբերված լարային, եւ ոչ թե ներկառուցված թվաբանական ընդլայնման, հրամանատարության փոխարինման կամ paramter ընդլայնում.

Պարամետրի արժեքը փոխարինված է: The braces պահանջվում են, երբ պարամետր դիրքորոշման պարամետր է մեկից ավելի թվով, կամ երբ պարամետրին հետեւում է բնույթ, որը չի մեկնաբանվում որպես իր անունը:

Ստորեւ բերված յուրաքանչյուր դեպքում խոսքը ենթակա է տիլդայի ընդլայնման, պարամետրերի ընդլայնման, հրամանի փոխարինման եւ թվաբանական ընդլայնման: Չի կատարվում ենթատեքստի ընդլայնում, bash- ի թեստեր, որը չկարգավորված կամ ոչ պարամետր է, անտեսելով կույտը փորձարկման մեջ միայն մի պարամետրի համար, որը չի կարգավորվում:

Օգտագործեք Նախնական արժեքները : Եթե պարամետրը չկիրառվի կամ նուլ է, բառի ընդլայնումը փոխարինված է: Հակառակ դեպքում, պարամետրի արժեքը փոխարինվում է:

Վերագրանցել արժեքները : Եթե պարամետրը չկիրառվի կամ նուլ է, բառի ընդլայնումը նշանակվում է պարամետր : Պարամետրի արժեքը փոխարինվում է: Պաշտոնաչափ պարամետրերը եւ հատուկ պարամետրերը չեն կարող նշանակվել այս ձեւով:

Ցուցադրել սխալ, եթե նարնջի կամ չընկնի : Եթե պարամետրը զրո կամ անսահման է, բառի ընդլայնումը (կամ այդ բառը , եթե բառը գոյություն չունի) գրված է ստանդարտ սխալի եւ վահանակի վրա, եթե այն ինտերակտիվ չէ, ելքերը: Հակառակ դեպքում, պարամետրի արժեքը փոխարինվում է:

Օգտագործեք այլընտրանքային արժեք : Եթե պարամետրը զրո կամ անփոփոխ է, ոչինչ չի փոխարինվում, հակառակ դեպքում բառի ընդլայնումը փոխարինված է:

Ընդարձակվում է փոփոխականների անունները, որոնց անունները սկսվում են նախածանցով , առանձնացված IFS- ի հատուկ փոփոխականի առաջին բնույթով:

Պարամետրի արժեքի նիշերի երկարությունը փոխարինված է: Եթե պարամետրը * կամ @ է , փոխարինված արժեքը դիրքային պարամետրերի քանակն է: Եթե պարամետրը * կամ @ , որը պարունակում է զանգվածի անունը, փոխարինված արժեքը զանգվածի տարրերի թիվը է:

Խոսքը ընդլայնվում է այնպես, ինչպես օրինակ, ընդլայնումը: Եթե ​​նախագիծը համապատասխանում է պարամետրի արժեքի սկզբի հետ, ապա ընդլայնման արդյունքը պարամետրերի ընդլայնված արժեքն է ամենաարագ համապատասխանող օրինակով (`` # 'գործի) կամ ամենաերկար համապատասխանող օրինակին (`` ## ' 'գործը): Եթե պարամետրը @ կամ * է , ապա յուրաքանչյուր դիրքորոշման պարամետրին կիրառվում է օրինաչափության հեռացման գործողությունը, եւ ընդլայնումը արդյունքների ցանկն է: Եթե պարամետրը , որը պարունակում է @ կամ * սուբյեկտիվ պարունակությամբ պարունակող պարբերական փոփոխություն, արտանետման հեռացման գործողությունը կիրառվում է պարբերության յուրաքանչյուր անդամի համար, եւ ընդլայնումը արդյունքների ցանկն է:

Խոսքը ընդլայնվում է այնպես, ինչպես օրինակ, ընդլայնումը: Եթե ​​նմուշը համապատասխանում է պարամետրի ընդլայնված արժեքի հետեւելի մասին , ապա ընդլայնման արդյունքը պարամետրերի ընդլայնված արժեքն է ամենաարագ համապատասխանող օրինակով (`` `` `` `` `` `` `` `` `` `` `` `` `` % 'գործը) ջնջված է: Եթե պարամետրը @ կամ * է , ապա յուրաքանչյուր դիրքորոշման պարամետրին կիրառվում է օրինաչափության հեռացման գործողությունը, եւ ընդլայնումը արդյունքների ցանկն է: Եթե պարամետրը , որը պարունակում է @ կամ * սուբյեկտիվ պարունակությամբ պարունակող պարբերական փոփոխություն, արտանետման հեռացման գործողությունը կիրառվում է պարբերության յուրաքանչյուր անդամի համար, եւ ընդլայնումը արդյունքների ցանկն է:

Դիզայնը ընդլայնվում է այնպես, ինչպես ուղիղ ընդլայնումը: Պարամետրը ընդլայնվում է եւ դրա արժեքի նկատմամբ երկարատեւ հանդիպումը փոխարինվում է տողով : Առաջին ձեւով միայն առաջին խաղը փոխարինվում է: Երկրորդ ձեւը պատճառում է բոլոր օրինակները փոխարինել տողով : Եթե #- ն սկսվում է օրինակից , ապա այն պետք է համապատասխանի պարամետրի ընդլայնված արժեքի սկզբին: Եթե նիշը սկսվում է % -ից , ապա այն պետք է համապատասխանի պարամետրի ընդլայնված արժեքի ավարտին: Եթե լարերը նարնջագույն են, ապա նախշերի համընկնումները ջնջվում են, եւ / հաջորդ օրինակը կարող է բաց թողնել: Եթե պարամետրը @ կամ * է , փոխարինման գործողությունը կիրառվում է յուրաքանչյուր դիրքորոշման պարամետրին իր հերթին, եւ ընդլայնումը արդյունքների ցանկն է: Եթե պարամետրը պարունակում է @ կամ * սուբյեկտիվ պարունակող զանգվածի փոփոխական, փոխարինման գործառույթն իր հերթին կիրառվում է զանգվածի յուրաքանչյուր անդամի նկատմամբ, եւ ընդլայնումը արդյունքների ցանկն է:

Հրամանատարության փոխարինում

Հրահանգի փոխարինումը հնարավորություն է տալիս հրամանագրի փոխարինման հրամանի թողարկումը: Կան երկու ձեւեր.

$ ( հրաման )

կամ

« հրաման »

Բաշը կատարում է ընդարձակումը հրամանի կատարման եւ հրամանի փոխարինման փոխարինումը հրամանի ստանդարտ արդյունքի հետ, ցանկացած հետագծի նոր գծի ջնջված է: Ներկառված նոր գծերը չեն ջնջվում, բայց դրանք կարող են հեռացվել բառի պառակտման ժամանակ: Հրամանի փոխարինումը $ (cat ֆայլ ) կարող է փոխարինվել համարժեք, բայց ավելի արագ $ (< file ):

Երբ օգտագործվում է փոխարինման հին ոճի ձգանման ձեւը, ճոճանակը պահպանում է իր բառացի իմաստը, բացի այն դեպքերից, երբ հետեւում են $ , ` կամ \ : Առաջին հենակետը, որը նախորդում է ետկանչման հետ, դադարեցնում է հրամանի փոխարինումը: $ ( Հրաման ) ձեւը օգտագործելով, պարամետրերի բոլոր նիշերը կազմում են հրամանը. ոչ մեկը հատուկ չի վերաբերվում:

Հրամանատարության փոփոխությունները կարող են տեղավորվել: Կախովի ձեւը օգտագործելով, բախվելով ներքեւում գտնվող ներքին թեքումով:

Եթե ​​փոխարինումը հայտնվում է կրկնակի մեջբերումների մեջ, արդյունքների վրա չի կատարվում բառի պառակտման եւ pathname ընդլայնումը:

Հավասարաչափ ընդլայնում

Հավասարաչափ ընդլայնումը հնարավորություն է տալիս գնահատել թվաբանական արտահայտությունը եւ արդյունքի փոխարինումը: Արիաչափական ընդլայնման ձեւաչափը հետեւյալն է.

$ (( արտահայտություն ))

Արտահայտությունը դիտվում է որպես այն կրկնակի մեջբերումների մեջ, բայց պարբերականներում մեջտեղի մեջբերումը հատուկ չի վերաբերվում: Արտահայտման բոլոր նշանները ենթարկվում են պարամետրային ընդլայնում, լարային ընդլայնում, հրամանի փոխարինում եւ մեջբերման հեռացում: Հավասարաչափ փոխարինումները կարող են տեղավորված լինել:

Գնահատումը կատարվում է համաձայն ARITHMETIC DEFINITION- ի ներքո ստորեւ նշված կանոնների համաձայն : Եթե արտահայտությունը անվավեր է, bash- ը տպում է ձախողման նշան, եւ փոխարինումը տեղի չի ունենում:

Գործընթացի փոխարինում

Գործընթացի փոխարինումը աջակցվում է այն համակարգերում, որոնք աջակցում են անվանափոխված խողովակները ( FIFOs ) կամ բաց ֆայլերը անվանափոխության / dev / fd մեթոդը: Այն տեւում է <( ցանկ ) կամ > ( ցանկ ) ձեւ: Գործընթացների ցանկը գործարկվում է FIFO- ի կամ մի / dev / fd- ի մեջ գտնվող ֆայլի հետ կապված իր մուտքային կամ արտադրանքի հետ: Այս ֆայլի անունը փոխանցվում է ներկայիս հրամանին որպես փաստարկ, որպես ընդլայնման արդյունքը: Եթե > ( ցանկ ) ձեւն օգտագործվում է, ֆայլին գրելը կտրամադրի ցուցակի մուտքագրումը: Եթե <( ցանկ ) ձեւը օգտագործվում է, ապա որպես փաստարկ ներկայացված ֆայլը պետք է կարդալ, որպեսզի ստանալու ցուցակը :

Առկայության դեպքում պրոցեսի փոխարինումը կատարվում է միաժամանակ պարամետրային եւ փոփոխական ընդլայնման, հրամանատարության փոխարինման եւ թվաբանական ընդլայնման հետ:

Բառի պառակտումը

Ռեֆլեքսը սանրում է պարամետրերի ընդլայնման, հրամանատարության փոխարինման եւ թվաբանական ընդլայնման արդյունքների մասին, որոնք բառի պառակտման համար կրկնակի մեջբերումներ չեն առաջացել:

The shell վերաբերվում է IFS- ի յուրաքանչյուր բնույթին որպես սահմանազատիչ, եւ մյուս առանձնահատկությունների արդյունքները բաժանարար է այս նիշերի վրա: Եթե IFS- ը չկարգավորվի, կամ դրա արժեքը հենց , կանխադրված է, ապա IFS- ի նիշերի հաջորդականությունը ծառայում է բառերի սահմանափակում: Եթե IFS- ն ունի արժեքից բացի այլ արժեք, ապա սպիտակ տառերի տարածության եւ էջանիշի հաջորդականությունը անտեսվում է բառի սկզբում եւ վերջում, քանի դեռ սպիտակ տառատեսակն է IFS- ի ( IFS- ի սպիտակ տառատեսակը) արժեքով: IFS- ի ցանկացած բնույթ, որը IFS- ի սպիտակ գոտին չէ, ցանկացած առանձին IFS սպիտակ տառատեսակների հետ մեկտեղ սահմանում է դաշտ: IFS- ի ժանրային տառերի հերթականությունը դիտվում է որպես սահմանազատիչ: Եթե IFS- ի արժեքը զրոյական է, ոչ մի բառ պառակտում չի առաջանում:

Բացահայտված բաց անվանումները ( "" կամ " ) պահպանվում են: Չկան անկանխատեսելի անվավեր անվավեր փաստեր, որոնք առաջացնում են արժեքներ չունեցող պարամետրերի ընդլայնում, հանվում են: Եթե ​​երկակի մեջբերումների մեջ ոչ մի արժեք չունեցող պարամետր ընդլայնվում է, ապա նավեր փաստարկի արդյունքները եւ պահպանվում են:

Նշենք, որ եթե ընդլայնումը տեղի չի ունենում, ոչ մի պառակտում չի կատարվում:

Pathname ընդլայնում

Խոսքի պառակտումից հետո, եթե -f տարբերակը չի սահմանվել, bash- ը յուրաքանչյուր բառը նիշերի համար քչացնում է : եւ [ . Եթե ​​այս նիշերից մեկը հայտնվի, ապա բառը բառը համարվում է որպես օրինակ եւ փոխարինվում է նիշին համապատասխանող ֆայլի անունների այբբենական կարգով կազմված ցանկից: Եթե ​​համապատասխանող ֆայլի անվանումներ չեն հայտնաբերվել, եւ nullglob- ի վահանակն անջատված է, ապա բառը մնացել է անփոփոխ: Եթե nullglob տարբերակը սահմանվել է, եւ ոչ մի հանդիպում չի հայտնաբերվել, բառը հանվում է: Եթե ​​շապիկի տարբերակը nocaseglob- ը միացված է, ապա խաղը կատարվում է առանց հաշվի առնելու այբբենական նշանների: Երբ ճանապարհը օգտագործվում է pathname ընդլայնման համար, անունը սկզբում կամ անմիջապես հաջորդող կտավից պետք է համընկնել, եթե ոչ ռումբի տարբերակը dotglob- ը սահմանվի: Ուղղության հետ համընկնումիս կոճակները պետք է միշտ լինեն պարզորոշ: Այլ դեպքերում, ` ` `'' բնույթը հատուկ չի վերաբերվում: Ստորեւ բերված SHELL BUILTIN COMMANDS- ի ներքո գտնվող խանութի նկարագրությունը, nocaseglob , nullglob եւ dotglob shell տարբերակների նկարագրության համար:

GLOBIGNORE shell- ի փոփոխականը կարող է օգտագործվել սահմանափակելու մի օրինակին համապատասխանող ֆայլի անունների շարք: Եթե GLOBIGNORE- ն ստեղծվի, GLOBIGNORE- ի օրինակներից մեկին համապատասխանող յուրաքանչյուր համապատասխան ֆայլի անունը հանվում է խաղերի ցանկից: Ֆայլի անվանումները `` ` .` եւ ` `` `` միշտ անտեսվել են, նույնիսկ այն ժամանակ, երբ GLOBIGNORE- ը սահմանվել է: Այնուամենայնիվ, GLOBIGNORE- ի տեղադրումը ունի dotglob shell տարբերակը թույլատրելու ազդեցությունը, այնպես որ բոլոր մյուս ֆայլի անունները `սկսած` `` : Ստացեք `` `` սկսած ֆայլի անունները անտեսելու հին վարքագիծը `` ``. * '' GLOBIGNORE- ի օրինաչափություններից մեկը: Dotglob- ի տարբերակը անջատված է, երբ GLOBIGNORE- ը չի կարգավորվում:

Պատկերային համընկնում

Ցանկացած բնավորություն, որը հայտնվում է օրինակով, բացի ստորեւ նկարագրված հատուկ նիշային նիշերից, համապատասխանում է իրեն: NUL- ի գրանշանը չի կարող առաջանալ օրինակով: Հատուկ նիշերը պետք է նշվեն, եթե դրանք պետք է համապատասխանեն բառացիորեն:

Հատուկ նիշերը ունեն հետեւյալ իմաստները.

*

Համապատասխանում է ցանկացած տող, ներառյալ նարնջագույն տողը:

Հաճախակի

Համապատասխանում է ցանկացած բնույթ:

[...]

Համապատասխանում է փակված նիշերից որեւէ մեկին: Մի խառնուրդով զույգ զույգեր նշանակում են մի շարք արտահայտություն , ցանկացած բնավորություն, որը տեսնում է այդ երկու նիշերի միջեւ, ներառյալ, օգտագործելով ներկա տեղորոշման կարգավորումը եւ գծապատկերը, համապատասխանում է: Եթե ​​առաջին նիշը հետեւյալն է [ a ! կամ ա, այնուհետեւ չի ներառում որեւէ բնույթ: Տիեզերքի արտահայտություններում նիշերի տեսակավորման կարգը որոշվում է ընթացիկ տեղորոշման եւ LC_COLLATE shell փոփոխության արժեքի կողմից, եթե սահմանված է: A- ը կարող է համընկնել, ընդգրկելով այն որպես նախորդ կամ վերջին բնույթ: A ] -ը կարող է համընկնել, ընդգրկելով այն որպես առաջին գծի հավաքածուում:

[ Եւ ] , բնույթի դասերը կարող են սահմանվել `օգտագործելով syntax [: class :] , որտեղ դասը հանդիսանում է POSIX.2 ստանդարտում սահմանված հետեւյալ դասերից մեկը:

alnum alpha ascii դատարկ cntrl թվանշան գրաֆիկի ստորին տպման կետի տիեզերք վերին բառ xdigit
Նիշերի դասակարգը համապատասխանում է այդ դասի պատկանող ցանկացած բնույթի: Բառի տառը դասավորվում է տառերով, թվերով եւ բնույթով:

[ Եւ ] մեջ հավասարազորության դասը կարող է սահմանվել, օգտագործելով սինտացիան, [= c =] , որը համապատասխանում է նույնատիպ համադրման բոլոր նիշերի հետ (ինչպես սահմանված է ներկա տեղաբաշխման) որպես բնույթ c :

Ներսում [ եւ ] , շարահյուսություն [. խորհրդանիշը ] համապատասխանում է խորհրդանշանի խորհրդանիշի խորհրդանիշին :

Եթե extglob shell տարբերակը հնարավորություն է ընձեռվում օգտագործելով shopt տեղադրված, մի քանի ընդլայնված ձեւի համապատասխանող օպերատորները ճանաչվում են: Հետեւյալ նկարագրության մեջ, օրինակների ցուցակը , ցուցադրվում է մեկ կամ մի քանի օրինակների, որոնք առանձնացված են | | . Կոմպոզիտային նմուշները կարող են ձեւավորվել `օգտագործելով հետեւյալ ենթահամակարգերից մեկի կամ մի քանիսը.

( օրինակելի ցանկ )

Նվիրվածներ կամ տվյալ ձեւերի մեկ դեպք

* ( օրինակելի ցանկ )

Հատկանշվում են տվյալ ձեւերի զրո կամ ավելի հաճախակի դեպքեր

+ ( օրինակելի ցանկ )

Համապատասխանում է տվյալ օրինակների մեկ կամ մի քանի դեպքեր

@ ( օրինակի ցանկ )

Համապատասխանում է տվյալ օրինաչափություններից մեկը

! ( օրինակելի ցանկ )

Նկատի առկայություն, բացառությամբ տվյալ օրինաչափությունների

Մեջբերում մետատվություն

Նախորդ ընդլայնումներից հետո, վերոհիշյալ ընդլայնումներից մեկի արդյունքում չհրապարակված նշանների, \ ' , \ " եւ \ " նիշերի \

Վերակառուցում

Նախքան հրամանը կատարվում է, դրա մուտքագրումը եւ ելքը կարող է վերահղվել օգտագործելով հատուկ նշում, որը մեկնաբանվում է վահանակով: Վերաուղղորդումը կարող է օգտագործվել նաեւ ֆայլերի բացման եւ փակման համար `ներկայիս վահանակի կատարման միջավայրի համար: Հետեւյալ վերահղման օպերատորները կարող են առաջանալ կամ հայտնվել որեւէ պարզ հրամանի շրջանակներում կամ կարող են հետեւել հրամանին : Վերահղումները վերամշակվում են, երբ դրանք հայտնվում են, ձախից աջ:

Հետեւյալ նկարագրություններում, եթե ֆայլի նկարագրիչի համարը բացակայում է, եւ վերահղման օպերատորի առաջին բնույթը < , ապա վերահասցեավորումն վերաբերում է ստանդարտ մուտքագրմանը (ֆայլի նկարագրիչ 0): Եթե ​​վերահասցեագրման օպերատորի առաջին բնույթը > , ապա վերահասցեավորումն վերաբերում է ստանդարտ արտադրությանը (ֆայլի նկարագրիչ 1):

Հետեւյալ նկարագրություններում վերահղման օպերատորին հաջորդող բառը, եթե այլ բան չի նշվում, ենթարկվում է բռունցքի ընդլայնմանը, տիլդերի ընդլայնմանը, պարամետրերի ընդլայնմանը, հրամանի փոխարինմանը, թվաբանական ընդլայնմանը, մեջբերման հեռացմանը, ուղիների ընդլայնմանը եւ բառի պառակտմանը: Եթե ​​այն ընդարձակվում է մեկից ավելի բառերով, ապա bash- ը սխալ է հաղորդում:

Նշենք, որ վերահղման կարգը նշանակալի է: Օրինակ, հրամանը

ls > dirlist 2 > & 1

ուղղորդում է ստանդարտ արտադրանքի եւ ստանդարտ սխալը ֆայլի աղբարկղին , իսկ հրամանը

ls 2 > 1 & dirlist

ուղղորդում է միայն ստանդարտ արտադրանքը, որը կստեղծի աղբատարի համար , քանի որ ստանդարտ սխալը կրկնօրինակվել է որպես ստանդարտ արտադրանք, նախքան ստանդարտ արտադրանքը վերափոխվել է փոշեկորդ :

Բաշը մի քանի ֆայլի անվանումներ է հատկացնում, երբ դրանք օգտագործվում են վերահղման ուղղությամբ, ինչպես նկարագրված է հետեւյալ աղյուսակում.

/ dev / fd / fd

Եթե fd- ը վավեր թվ է, ֆայլի նկարագրիչը fd- ն կրկնօրինակում է:

/ dev / stdin

Ֆայլի նկարագրությունը 0 է կրկնօրինակում:

/ dev / stdout

Ֆայլի նկարագրիչ 1-ը կրկնօրինակում է:

/ dev / stderr

Ֆայլի նկարագրիչ 2-ը կրկնօրինակում է:

/ dev / tcp / host / port

Եթե հյուրընկալողը վավեր hostname կամ ինտերնետային հասցե է, եւ նավահանգիստը հանդիսանում է ամբողջական բջջային համար կամ ծառայություն անուն, bash- ը փորձարկում է TCP կապը համապատասխան սալիկի վրա:

/ dev / udp / host / port

Եթե հյուրընկալողը վավեր hostname կամ ինտերնետային հասցե է, եւ նավահանգիստը հանդիսանում է ամբողջական բջջային համար կամ ծառայություն անվանում, bash- ը փորձարկում է UDP միացմանը համապատասխան սալիկի վրա:

Ֆայլը բացելու կամ ստեղծելու ձախողումը առաջացնում է վերահասցեավորում ձախողում:

Վերահղման մուտքագրում

Ներածման վերադասավորումը առաջացնում է այն ֆայլը, որի անունը կախված է ֆայլի բնութագրիչով n ընթերցման համար բացված բառի ընդլայնման կամ ստանդարտ մուտքագրումից (ֆայլի նկարագրիչ 0), եթե n չի նշվում:

Ներածման վերափոխման ընդհանուր ձեւաչափը հետեւյալն է.

[ n ] < բառ

Վերահղման ելք

Արդյունքների վերափոխումը հանգեցնում է այն ֆայլի անունը, որը կբացվի բառի ընդլայնման համար, որը կբացվի ֆայլի բնութագրիչով n գրելու համար կամ ստանդարտ թողարկում (ֆայլի նկարագրիչ 1), եթե n չի նշվում: Եթե ​​ֆայլը գոյություն չունի, այն ստեղծվում է. եթե այն գոյություն ունի, այն վերածվում է զրոյական չափի:

Արդյունքների վերափոխման ընդհանուր ձեւաչափը հետեւյալն է.

[ n ] > բառ

Եթե ​​վերահասցեագրման օպերատորը >> , եւ noclobber տարբերակը տեղադրված է, տեղադրված է, որ վերահասցեավորումն անջատված է, եթե ֆայլը, որի անունն առաջանում է բառի ընդլայնման արդյունքում, եւ պարբերական ֆայլ է: Եթե ​​վերահղման օպերատորը > | , կամ վերահղման օպերատորը > եւ noclobber տարբերակը տեղադրված հրամանատարին միացված չէ, վերահղման փորձ է կատարվում նույնիսկ այն դեպքում, եթե բառի տակ նշված ֆայլը գոյություն ունի:

Հավելելով Վերահղված Արդյունք

Այս եղանակով արտադրանքի վերահաշվարկը առաջացնում է այն ֆայլը, որի անունը կհրապարակվի բառի ընդլայնման արդյունքում, որը կբացվի ֆայլի բնութագրիչի n հավելվածին կամ ստանդարտ թողարկման մեջ (ֆայլի նկարագրիչ 1), եթե n չի նշվում: Եթե ​​ֆայլը գոյություն չունի, այն ստեղծվում է:

Արդյունքների ավելացման ընդհանուր ձեւաչափը հետեւյալն է.

[ n ] >> բառը

Վերահղման ստանդարտ ելք եւ ստանդարտ սխալ

Bash- ը թույլ է տալիս ստանդարտ թողարկումը (ֆայլի նկարագրիչ 1) եւ ստանդարտ սխալի արդյունքը (ֆայլի նկարագրիչ 2) վերահղված ֆայլին, որի անունը այս կառուցվածքի հետ խոսքի ընդլայնումն է:

Ստանդարտ արտադրանքի եւ ստանդարտ սխալի վերահղման համար կան երկու ձեւաչափ:

&> բառ

եւ

> & բառը

Երկու ձեւերից առաջինը նախընտրելի է: Սա սիմվոլիկ համարժեք է

> բառ 2 > եւ 1

Այստեղ փաստաթղթեր

Վերալիցիոնի այս տեսակը հրահանգում է վահանակին կարդալ ներածական աղբյուրի ներածումը, մինչեւ տեսնեք միայն բառի (առանց հետեւի պատասխանի) մի գիծ: Այնուհետեւ այդ կետին կարդացած բոլոր տողերը օգտագործվում են որպես հրամանի ստանդարտ ներածություն:

Այստեղ ներկայացված փաստաթղթերի ձեւաչափը հետեւյալն է.

<< [ - ] բառը այստեղ-փաստաթուղթը բաժանարար

Ոչ մի պարամետրային ընդլայնում, հրամանի փոխարինում, թվաբանական ընդլայնում կամ ուղիների ընդլայնում կատարվում է բառի վրա : Եթե բառերից որեւէ բառեր են մեջբերվում, ապա սահմանազատիչը բառի մեջբերումից հանելու արդյունքն է, եւ այս փաստաթղթի տողերը չեն ընդլայնվում: Եթե բառը չկատարված է, այստեղ բերված փաստաթղթի բոլոր տողերը ենթարկվում են պարամետրերի ընդլայնմանը, հրամանի փոխարինմանը եւ թվաբանական ընդլայնմանը: Վերջին դեպքում, \ - ի գծապատկերը հաջորդականությամբ անտեսվում է եւ պետք է օգտագործվի նիշերի \ , $ , եւ `` մեջբերման համար:

Եթե ​​վերահասցեագրման օպերատորը << - է , ապա բոլոր առաջատար նիշ տառերը տեղադրվում են մուտքագրման գծերից եւ գծապատկեր պարունակող գծի մեջ: Սա թույլ է տալիս այստեղ փաստաթղթերի ներդաշնակ սցենարներում ներդնել բնական ձեւով:

Այստեղ շարքեր

Այստեղ ներկայացված փաստաթղթերի տարբերակն է `ձեւաչափը`

<<< բառը

Խոսքը ընդլայնվում է եւ տրամադրվում է հրամանին `ստանդարտ մուտքագրում:

Կրկնօրինակման ֆայլի նկարագրիչներ

Վերահղման օպերատորը

[ n ] <& բառը

օգտագործվում է ներմուծման ֆայլի նկարագրիչների կրկնօրինակ: Եթե խոսքը ընդարձակվում է մեկ կամ մի քանի նիշով, n- ով նշված ֆայլի նկարագրությունը կատարվում է այդ ֆայլի նկարագրության պատճեն: Եթե բառի թվանշանները չեն նշում մուտքագրման համար բացված ֆայլի նկարագրությունը, ապա վերահուղարկման սխալ է տեղի ունենում: Եթե բառը գնահատվում է, - ֆայլի նկարագրությունը փակ է: Եթե n չի նշվում, ստանդարտ մուտքագրումը (file descriptor 0) օգտագործվում է:

Օպերատորը

[ n ] > & բառը

օգտագործվում է նույն կերպ կրկնօրինակման արտադրանքի ֆայլի նկարագրիչները: Եթե n չի նշվում, ապա ստանդարտ արտադրանքը (ֆայլի նկարագրությունը 1) օգտագործվում է: Եթե բառի թվանշանները չեն նշում արտադրանքի համար բացված ֆայլի նկարագրությունը, ապա վերահասցեավորման սխալ է տեղի ունենում: Որպես հատուկ դեպք, եթե n- ը բացակայում է, եւ բառը չի տարածվում մեկ կամ ավելի թվանշանների վրա, ստանդարտ արտադրանքը եւ ստանդարտ սխալը վերադասավորում են նախկինում նկարագրված:

Շարժվող Ֆայլի նկարագրություններ

Վերահղման օպերատորը

[ ն ] <& թվանիշ -

տեղափոխում է ֆայլի նկարագրության նիշը նիշային նիշը կամ ստանդարտ մուտքագրումը (ֆայլի նկարագրությունը 0), եթե n չի նշվում: նիշը կրկնօրինակումից հետո փակ է:

Նմանապես, վերահղման օպերատորը

[ n ] > եւ թվանշան -

տեղափոխում է ֆայլի նկարագրության նիշը նկարագրող նիշը կամ ստանդարտ թողարկումը (ֆայլի նկարագրիչ 1), եթե n չի նշվում:

Բացելով Ֆայլի նկարագրիչները ընթերցման եւ գրելու համար

Վերահղման օպերատորը

[ n ] <> բառ

առաջացնում է այն ֆայլը, որի անունը բացվում է բառի ընդլայնում, որը կբացահայտվի եւ կարդալու եւ գրելու համար ֆայլի բնութագրիչով n , կամ ֆայլի բնութագրիչ 0-ում, եթե n չի նշվում: Եթե ​​ֆայլը գոյություն չունի, այն ստեղծվում է:

ԱԼԻԱՍԵՍ

Ալիաներ թույլ են տալիս, որ տողը փոխարինվի բառի համար, երբ այն օգտագործվում է որպես պարզ հրահանգի առաջին բառը: Shell- ն պահպանում է alias- ի եւ unalias- ի կառուցված հրամանների հետ միասին սահմանելու եւ չկիրառելու այլընտրանքային ցուցակ (տես SHELL BUILTIN COMMANDS ստորեւ): Յուրաքանչյուր հրամանի առաջին բառը, եթե չգրանցված է, ստուգվում է, թե արդյոք այն ունի այլ անուն: Եթե ​​այո, ապա այդ բառը փոխարինվում է alias- ի տեքստով: Ալյումինե անունը եւ փոխարինման տեքստը կարող են պարունակել ցանկացած վավեր կտավ ներդիր , ներառյալ վերը թվարկված metacharacters , բացառությամբ, որ alias անունը չի կարող պարունակել = . Փոխարինման տեքստի առաջին բառը փորձարկվում է կեղծանունների համար, սակայն ընդլայնված անունը նույնական է, երկրորդ անգամ ընդլայնված չէ: Սա նշանակում է, որ կարելի է, օրինակ, ls -F- ի համար, եւ bash- ը չի փորձում կրկնօրինակել փոխարինման տեքստը: Եթե ​​alias- ի արժեքի վերջին բնավորությունը դատարկ է , ապա հաջորդ պատուհանը, որը հաջորդում է alias- ը, նույնպես ստուգվում է alias- ի ընդլայնման համար:

Այլ անուններ ստեղծվում եւ ցուցակվում են alias հրամանով եւ հեռացվում unalias հրամանով:

Փոխարինման տեքստում փաստարկներ օգտագործելու մեխանիզմ չկա: Եթե ​​անհրաժեշտ է փաստարկներ, ապա պետք է օգտագործվի վահանակի գործառույթը (տես FUNCTIONS ստորեւ):

Ալիանսները չեն ընդլայնվում, երբ վահանակն ինտերակտիվ չէ, եթե ընդարձակ_ալիազեսների վահանակի ընտրանքը սահմանված է խանութից (տես ստորեւ SHELL BUILTIN COMMANDS- ի ներքո խանութի նկարագրությունը):

Ալազերի անվանումների եւ օգտագործման կանոնները մի փոքր շփոթեցնող են: Բաշը միշտ կարդում է առնվազն մեկ ամբողջական գիծ, ​​նախքան այդ գծի հրամաններից որեւէ մեկի կատարումը: Ալիանսները ընդլայնվում են, երբ հրամանն ընթերցվում է, ոչ թե այն կատարվում է: Հետեւաբար, մեկ այլ հրամանով նույն գծում հայտնվող ալտերնատիվ սահմանումը չի գործում, մինչեւ մուտքագրման հաջորդ գիծը կարդացվի: Այս տողում կեղծանունների սահմանման հաջորդող հրամանները չեն ազդում նոր կաղապարների վրա: Այս վարքագիծը նաեւ խնդիր է, երբ գործառույթները կատարվում են: Ալիանսները ընդլայնվում են, երբ գործառույթի սահմանումը կարդացվի, ոչ թե գործառույթը կատարվի, քանի որ ֆունկցիայի սահմանումը ինքնին բաղադրյալ հրաման է: Արդյունքում, ֆունկցիայում սահմանված այլընտրանքները հասանելի չեն, մինչեւ այդ գործառույթը կատարվի: Որպեսզի ապահով լինեն, առանձին տողի վրա միշտ դնում եք կեղծանունների սահմանումները եւ չեն օգտագործում կաղապարային հրամաններ:

Գրեթե բոլոր նպատակների համար, կեղծանունները փոխարինվում են shell- ի գործառույթներով:

Ֆունկցիաները

Shell GRAMMAR- ի ներքո նկարագրված վերը նկարագրված վանդակավոր ֆունկցիան պահեստավորում է մի շարք հրամանների հետագա կատարման համար: Երբ վահանակի ֆունկցիայի անունը օգտագործվում է որպես պարզ հրամանի անվանում, այդ գործառույթի անվան հետ կապված հրամանների ցանկը կատարվում է: Գործառույթները կատարվում են ներկա վահանակի համատեքստում. ոչ մի նոր պրոցես չի ստեղծվում, դրանք մեկնաբանելու համար (հակառակը `սա ռումբի սցենարի կատարմամբ): Երբ ֆունկցիան կատարվում է, ֆունկցիայի փաստարկները դառնում են դիրքի պարամետրերը կատարման ընթացքում: Փոփոխությունը արտացոլելու համար հատուկ պարամետր # թարմացվում է: Դիրքային պարամետր 0-ը չի փոխվել: FUNCNAME փոփոխականին գործառույթն իրականացնում է ֆունկցիայի անունը: Shell- ի կատարման միջավայրի բոլոր այլ ասպեկտները նույնական են ֆունկցիայի եւ զանգահարողի միջեւ, բացառությամբ, որ DEBUG- ի ծուղակը (տես ներքեւի շերտային BUILTIN- ի հրամանների ներքո կառուցված թակարդի նկարագրությունը) ժառանգված չէ, եթե գործառույթը չի տրվել հետքային հատկանիշի ( տես ստորեւ տեղադրված հռչակագրի նկարագրությունը):

Գործառույթին տեղակայված փոփոխականները կարող են հայտարարվել տեղական կառուցված հրամանով: Սովորաբար, փոփոխականներն ու դրանց արժեքները կիսվում են ֆունկցիայի եւ նրա կանչի միջեւ:

Եթե ​​կառուցված հրամանատարության վերադարձը կատարվում է գործառույթում, գործառույթն ավարտվում է եւ կատարվում է գործառութային զանգից հետո հաջորդ հրամանով: Երբ գործառույթն ավարտվում է, դիրքորոշման պարամետրերի եւ հատուկ պարամետրի արժեքները վերականգնվում են այն գործառույթներից առաջացած արժեքների նկատմամբ:

Ֆունկցիայի անվանումները եւ սահմանումները կարող են թվարկվել -f տարբերակի հետ ` հայտարարագրված կամ տիպային կառուցված հրամաններին: The -F տարբերակը հայտարարելու կամ ձեւաչափով կգործի միայն գործառույթների անունները: Գործառույթները կարող են արտահանվել, որպեսզի subshells ավտոմատ կերպով ունենան դրանք -f տարբերակի հետ ` արտահանման կառուցվածքին:

Գործառույթները կարող են հանգիստ լինել: Յուրահատուկ զանգերի քանակի սահմանափակում չի սահմանվում:

ԱՐԻՄՄԵԹԵՔԱՅԻՆ ԱՐԺԵՔ

Ռումբերն թույլ է տալիս գնահատել թվաբանական թվեր, որոշակի հանգամանքներում (տես `կառուցված հրամանատարությունը եւ թվաբանական ընդլայնումը ): Գնահատումը կատարվում է ֆիքսված լայնության ամբողջ թվերին, չհաշված արտահոսքի համար, չնայած 0-ի բաժանումը թակարդված է եւ սխալվում է որպես սխալ: Օպերատորները եւ նրանց գերակայությունը եւ միավորումը նույնն են, ինչ C լեզվով: Օպերատորների հետեւյալ ցանկը խմբավորված է հավասար նախորդության օպերատորների մակարդակներում: Աղյուսակները թվարկված են գերազանցելու համար:

id + + id -

փոփոխական հետվճարման եւ հետադարձի նվազեցում

+ + id - id

փոփոխական նախընտրական աճ եւ կանխավճար

- +

unary մինուս եւ գումարած

!! ~

տրամաբանական եւ բիթային ժխտումը

**

հերոսություն

* /%

բազմապատկում, բաժանում, մնացորդ

+ -

լրացուցիչ, հանման

<< >>

ձախ եւ աջ բիթային տեղաշարժեր

<=> = <>

համեմատություն

==! =

հավասարություն եւ անհավասարություն

Եւ

bitwise AND

^

bitwise բացառիկ OR- ը

| |

bitwise OR- ը

&&

տրամաբանական AND

||

տրամաբանական OR

հայտնաբերվել : expr : expr

պայմանական գնահատական

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

հանձնարարություն

expr1 , expr2

ստորակետով

Shell- ի փոփոխականները թույլատրվում են որպես operands; պարամետրային ընդլայնումը կատարվում է նախքան արտահայտությունը գնահատվում է: Արտահայտման շրջանակներում, shell փոփոխականները կարող են նաեւ անվանել անուն, առանց օգտագործման պարամետրերի ընդլայնման սինթետիկ: Փոփոխական արժեքը գնահատվում է որպես թվաբանական արտահայտություն, երբ այն վերաբերում է: Պտուտակային փոփոխականի կարիքը չունենալը պետք է ունենա արտահայտության մեջ օգտագործվող իր ամբողջական հատկանիշը:

Առաջատար 0-ի հետ կայունները մեկնաբանվում են որպես ութերորդ թվեր: Առաջատար 0x կամ 0X նշանակում է տասնվեցերորդ: Հակառակ դեպքում, համարները վերցնում են [ base # ] n ձեւը, որտեղ բազան համարակալվում է 2-ից 64-ի համարակալված թվաբանական բազա, իսկ n- ը տվյալ բազայում է: Եթե բազան # բացակայում է, ապա օգտագործվում է բազային 10-ը: 9-ից ավելի թվանշանները ներկայացված են ստորին տառերով, մեծատառերով, @, եւ _, այդ կարգով: Եթե բազան պակաս կամ հավասար է 36-ի, փոքր եւ փոքրատառ տառերը կարող են օգտագործվել փոխարինելի կերպով, 10-ից 35-ի համարները ներկայացնելու համար:

Օպերատորները գնահատվում են առաջնային կարգով: Նախակրանդակները, որոնք պարունակում են փակագծերում, նախ եւ առաջ կարող են գերազանցել նախորդ դրույթները:

ԿԱՐԳԱՎՈՐՄԱՆ ԱՌԱՋԱՐԿՈՒԹՅՈՒՆՆԵՐ

Պայմանական արտահայտությունները օգտագործվում են [[ բարդ հրամանատարության եւ թեստի եւ [ կառուցված հրամաններով, ֆայլի հատկանիշների ստուգման եւ սցենարի եւ թվաբանական համեմատությունների միջոցով: Բառերը ձեւավորվում են հետեւյալ անկուսակցական կամ երկաստիճան նախալեռներից: Եթե ​​որեւէ ֆայլի փաստարկ նախնականներից մեկի համար է / dev / fd / n ձեւը, ապա ֆայլի նիշը ստուգվում է: Եթե ֆայլի փաստարկը առաջնայիններից մեկն է, ապա / dev / stdin , / dev / stdout կամ / dev / stderr , համապատասխանաբար, 0, 1 կամ 2 ֆայլի նկարագրությունը ստուգվում է:

- ֆայլը

Ճիշտ է, եթե ֆայլ կա:

ֆայլը

Ճիշտ է, եթե ֆայլ գոյություն ունի եւ բլոկ հատուկ ֆայլ է:

-c ֆայլը

Ճիշտ է, եթե ֆայլ կա եւ բնույթ հատուկ ֆայլ է:

-d ֆայլը

Ճիշտ է, եթե ֆայլ կա եւ գրացուցակ է:

- ֆայլը

Ճիշտ է, եթե ֆայլ կա:

ֆայլ

Ճիշտ է, եթե ֆայլ գոյություն ունի եւ հերթական ֆայլ է:

ֆայլը

Ճիշտ է, եթե ֆայլ գոյություն ունի եւ սահմանվում է խմբային-id:

ֆայլը

Ճիշտ է, եթե ֆայլ կա եւ խորհրդանշական հղում է:

-k ֆայլը

Ճիշտ է, եթե ֆայլը գոյություն ունի, եւ դրա `« կպչուն »բիտ է:

-p ֆայլը

Ճիշտ է, եթե ֆայլ գոյություն ունի եւ անվանված խողովակ (FIFO):

-r ֆայլը

Ճիշտ է, եթե ֆայլը գոյություն ունի եւ ընթեռնելի է:

ֆայլը

Ճիշտ է, եթե ֆայլը գոյություն ունի եւ զրոյից մեծ է:

Ճիշտ է, եթե ֆայլի նկարագրիչը fd բաց է եւ վերաբերում է տերմինալին:

-u ֆայլը

Ճիշտ է, եթե ֆայլը գոյություն ունի եւ դրա սահմանված օգտվողի-id բիտը սահմանվում է:

-w ֆայլ

Ճիշտ է, եթե ֆայլ կա եւ կարող է գրել:

-x ֆայլը

Ճիշտ է, եթե ֆայլ կա եւ կատարելի է:

-O ֆայլը

Ճիշտ է, եթե ֆայլ գոյություն ունի եւ պատկանում է արդյունավետ օգտվողի ID- ն:

-G ֆայլը

Ճիշտ է, եթե ֆայլը գոյություն ունի եւ պատկանում է արդյունավետ խմբի ID- ին:

-L ֆայլը

Ճիշտ է, եթե ֆայլ կա եւ խորհրդանշական հղում է:

-S ֆայլը

Ճիշտ է, եթե ֆայլ կա եւ մի վարդակ:

ֆայլը

Ճիշտ է, եթե ֆայլ գոյություն ունի եւ փոփոխվել է վերջին ընթերցման պահից:

file1 - nt file2

Ճիշտ է, եթե file1- ը նոր է (փոփոխության ամսաթվի դրությամբ), քան file2 , կամ եթե ֆայլը գոյություն ունի եւ file2- ը չի:

file1 - ot file2

Ճիշտ է, եթե file1 ֆայլը 2 -ից ավելի է, կամ file2 գոյություն ունի, եւ file1- ը չի:

file1 -ef file2

Ճիշտ է, եթե file1 եւ file2 վերաբերում են նույն սարքի եւ inode համարներին:

-o optname

Ճիշտ է, եթե վահանակի տարբերակն ընտրում է միացված: Տեսեք ստորեւ տեղադրված ստորաբաժանման -o տարբերակի նկարագրության ներքո գտնվող ընտրանքների ցանկը:

տող

Ճիշտ է, եթե լարային երկարությունը զրո է:

-n տող

string

Ճիշտ է, եթե լարերի երկարությունը ոչ զրոյական է:

string1 == string2

Ճիշտ է, եթե տողերը հավասար են: = կարող են օգտագործվել տեղում == խիստ POSIX- ի համապատասխանության համար:

string1 ! = string2

Ճիշտ է, եթե տողերը հավասար չեն:

string1 < string2

Ճիշտ է, եթե string1 նախընտրում է string2 բառի լիքը , ներկայիս լեզվով:

string1 > string2

Ճիշտ է, եթե string1 կարգը string2- ից հետո lexicographically ընթացիկ locale- ում:

arg1 OP arg2

OP- ը -eq , -ne , -lt , -le , -gt կամ -ge- ը : Այս թվաբանական երկուական օպերատորները վերադառնում են ճիշտ, եթե arg1 հավասար է, ոչ հավասար, պակաս, քան պակաս կամ հավասար, ավելի մեծ կամ ավելի մեծ կամ հավասար է arg2 : Arg1- ը եւ arg2- ը կարող են լինել դրական կամ բացասական թվեր:

Պարզ հրամանատարության ընդլայնում

Երբ պարզ հրաման է կատարվում, shell- ը կատարում է հետեւյալ բացթողումները, հանձնարարությունները եւ վերահղումները, ձախից աջ:

1. Այն բառերը, որոնք parser- ը նշել է որպես փոփոխական հանձնարարություններ (հրամանատարի անունը նախորդողները) եւ վերահղումները պահվում են հետագա մշակման համար:

2. Այն բառերը, որոնք փոփոխական հանձնարարություններ չեն կամ վերահղումներ են, ընդլայնվում են: Եթե ​​խոսքը շարունակում է ընդլայնվելուց հետո, առաջին բառը վերցված է հրամանի անվան, իսկ մնացած բառերը, փաստարկներն են:

3. Վերահաշվարկները կատարվում են վերոհիշյալ վերոնշյալի ներքո:

4. Յուրաքանչյուր փոփոխական նշանակումից հետո տեքստը տատանումների ընդլայնում, պարամետրային ընդլայնում, հրամանատարության փոխարինում, թվաբանական ընդլայնում, եւ գնանշման հեռացում առաջ անցնում է փոփոխականին:

Եթե ​​հրամանատարի անունը չի ստացվում, փոփոխական հանձնարարությունները ազդում են ընթացիկ շեղումների միջավայրում: Հակառակ դեպքում, փոփոխականները ավելացվում են կատարված հրամանի շրջակա միջավայրին եւ չեն ազդում ընթացիկ shell միջավայրի վրա: Եթե ​​հանձնարարություններից որեւէ մեկը փորձում է արժեքը տալ readonly փոփոխականին, սխալ է տեղի ունենում, եւ հրամանը դուրս է գալիս ոչ զրոյական կարգավիճակով:

Եթե ​​հրամանատարի անունը չի ստացվում, վերահղումները կատարվում են, սակայն չեն ազդում ընթացիկ shell միջավայրի վրա: Վերահղման սխալը հրամանին առաջացնում է ոչ-զրոյական կարգավիճակով:

Եթե ​​ընդլայնումից հետո մնացել է հրամանատարի անուն, կատարումը կշարունակվի, ինչպես նկարագրված է ստորեւ: Հակառակ դեպքում հրամանն ավարտվում է: Եթե ​​ընդլայնումներից մեկը պարունակում է հրամանի փոխարինում, հրամանի ելքի կարգավիճակը կատարված է վերջին հրամանատարության փոխարինման ելքի կարգավիճակը: Եթե ​​հրամանատարության փոխարինում չլինի, հրամանը դուրս է գալիս զրոյի կարգավիճակով:

Հրամանների կատարում

Հրամանատարությունը բաժանվելուց հետո, եթե դա բերում է հասարակ հրամանատարության եւ փաստարկների լրացուցիչ ցանկի, ապա կատարվում են հետեւյալ գործողությունները:

Եթե ​​հրամանատարի անունը պարունակում է սահուն, ապա shell- ը փորձում է տեղադրել այն: Եթե ​​այդ անունով կա վահանակ ֆունկցիա, ապա այդ գործառույթը կոչվում է վերը նշված FUNCTIONS- ում : Եթե ​​անունը չի համապատասխանում գործառույթին, ապա shell- ն այն որոնում է shell builtins- ի ցանկում: Եթե ​​հանդիպում է գտնվել, ապա այն տեղադրվում է:

Եթե ​​անունը ոչ վանդակային ֆունկցիա է, ոչ կառուցված, եւ պարունակում է սահուն, bash- ը որոնում է PATH- ի յուրաքանչյուր տարրը այդ անունով գործարկվող ֆայլ պարունակող տեղեկատուի համար: Bash- ը օգտագործում է խառնուրդ սեղան `հիշելու գործադրելի ֆայլերի ամբողջական ուղիները (տես ներքեւում, շերտավոր շինության ստորին հրամանների ներքո): PATH- ի դիրեկտորիաների ամբողջական որոնումը կատարվում է միայն այն դեպքում, եթե հրամանը չի հայտնաբերվել hash աղյուսակում: Եթե ​​որոնումը չհաջողվի, ապա վահանակը սխալ տպում է կատարում եւ վերադարձնում է 127 ելքի կարգավիճակ:

Եթե ​​որոնումը հաջող է, կամ եթե հրամանատարի անունը պարունակում է մեկ կամ մի քանի սլաք, ապա այդ ծրագիրն իրականացվում է առանձին կատարման միջավայրում: 0-ին տրված փաստարկը տրված է անունը, իսկ մնացած փաստարկները հրամանին տրվում են տրված փաստարկներին, եթե առկա են:

Եթե ​​այս կատարումը ձախողվի, քանի որ ֆայլը չի ​​կատարվում ֆորմատով, եւ ֆայլը գրացուցակ չէ, ենթադրվում է, որ shell script- ը պարունակում է shell- ի հրամաններ պարունակող ֆայլ: A subhell է spawned է կատարել այն. Այս ենթախումբը վերամիավորում է ինքն իրեն, այնպես, որ ազդեցությունն այնպիսին է, կարծես սցենարի համար նոր շերտ է առաջադրվել, բացառությամբ, որ ծնողի կողմից հիշատակված հրամանների վայրերը (տես ներքեւում, SHELL BUILTIN COMMANDS- ի ներքեւում խառնուրդը ) պահպանվում են երեխայի կողմից:

Եթե ​​ծրագիրը ֆայլ է, սկսած #! , առաջին գծի մնացորդը սահմանում է թարգմանչի թարգմանիչ: Ռումբերն իրականացնում է նշված թարգմանչի օպերացիոն համակարգերի վրա, որոնք չեն կատարում այս գործարկվող ձեւաչափը: Թարգմանչի համար բերված փաստարկները բաղկացած են մեկ լրացուցիչ փաստարկից `ծրագրի առաջին գծում թարգմանչի անունից հետո, այնուհետեւ ծրագրի անվանումը, այնուհետեւ` հրամանատարական փաստարկները, եթե առկա են:

Հրամանների կատարման շրջակա միջավայր

Ռումինն ունի կատարման միջավայր , որը բաղկացած է հետեւյալից.

* բացված ֆայլերը, ժառանգված ժապավենով, հրավիրման ժամանակ, ինչպես ձեւափոխված է վերափոխման միջոցով, որը տեղադրված է exec- ի կողմից

* ներկայիս աշխատանքային գրացուցակը, որը սահմանվել է cd , pushd կամ popd- ով կամ ժառանգվել է միջամտության ժամանակ

* ֆայլի ստեղծման ռեժիմի դիմակ, որը սահմանվել է umask- ով կամ ժառանգված shell- ի ծնողից

* ներկայիս թակարդները թակարդի կողմից

* shell պարամետրերը, որոնք սահմանվում են փոփոխական հանձնարարությամբ կամ շրջակա միջավայրի մեջ գտնվող շերտից ծնողի կողմից ժառանգված կամ ժառանգված

* shell ֆունկցիաները, որոնք սահմանված են կատարման ընթացքում կամ ժապավենով, միջնորմում

* Ընտրանքները հնարավորություն են ընձեռում հրավիրում (կամ լռակյաց կամ հրամանատարական փաստարկներով) կամ սահմանել

* Ընտրանքներ ընտրած խանութներում

* shell aliases սահմանվում է alias

* տարբեր գործընթացների ID- ները, այդ թվում `ֆոնային աշխատատեղերի քանակը, $$ արժեքը եւ $ PPID- ի արժեքը

Երբ պարզ պատվերը, որը բացի կառուցվածից կամ վանդակավոր ֆունկցիանից, պետք է կատարվի, այն կոչվում է առանձին կատարման միջավայր, որը բաղկացած է հետեւյալից. Եթե ​​այլ բան նշված չէ, արժեքները ժառանգվում են վահանակից:

* shell- ի բաց ֆայլերը, գումարած ցանկացած փոփոխություններ եւ լրացումներ, որոնք նշված են հրամանի վերահղումներով

* ներկայիս աշխատանքային գրացուցակը

* ֆայլի ստեղծման ռեժիմի դիմակ

* Արտահանման համար նշվող shell փոփոխականները, ինչպես նաեւ շրջակա միջավայրում փոխանցված հրամանին արտահանվող փոփոխականները

* Թաղանթները, որոնք ընկած են շերտով, վերակառուցվում են շեղակի ծնողներից ժառանգված արժեքների վրա, եւ անտեսանելի թակարդները անտեսվում են

Այս առանձին միջավայրում հրավիրված հրամանատարությունը չի կարող ազդել վահանակի կատարման միջավայրի վրա:

Command substitution եւ asynchronous հրամաններ են ենթարկվում մի ենթավերնագիր միջավայրում, որը կրկնօրինակը է shell միջավայրում, բացի այն թակարդները, որոնք բռնել են shell է վերակառուցվում այն ​​արժեքները, որ shell ժառանգել է ծնողի կողմից հրավիրում. Ներդրված հրամանները, որոնք կոչվում են խողովակաշարերի մաս, նույնպես իրականացվում են ենթահեռնի միջավայրում: Ենթածրագրային միջավայրում կատարված փոփոխությունները չեն կարող ազդել վահանակի կատարման միջավայրի վրա:

Եթե ​​հրամանը հետեւում է եւ աշխատանքի վերահսկումը ակտիվ չէ, հրամանի համար ստանդարտ ստանդարտ մուտքագրումը դատարկ ֆայլ է / dev / null : Հակառակ դեպքում, հրավիրված հրամանն ժառանգում է կոչման վահանակի ֆայլի նկարագրիչները `վերաձեւակերպումների միջոցով փոփոխված: