ԱՆՈՒՆ
sh - հրամանի թարգմանիչ ( shell )
SYNOPSIS- ը
sh [- / + aCefnuvxIimqsVEbc ] [- o longname ] -words [ նպատակ ... ]
DESCRIPTION
Sh- ն ստանդարտ հրամանի թարգմանիչ է համակարգում: Sh- ի ընթացիկ տարբերակը գտնվում է փոփոխման գործընթացում, որը համապատասխանում է POSIX 1003.2 եւ 1003.2a առանձնահատկություններին shell- ի համար: Այս տարբերակն ունի բազմաթիվ առանձնահատկություններ, որոնք որոշ առումներով նման են Կոռնի շերտին, բայց դա Korn shell clone չէ (տես ksh (1)): Միայն POSIX- ի եւ մի քանի Berkeley extension- ի կողմից հատկորոշված առանձնահատկությունները ներառում են այս գլուխը: Մենք ակնկալում ենք POSIX- ի համապատասխանությունը 4.4 BSD- ի թողարկմանը: Այս մարդը էջը նախատեսված չէ որպես բաղադրատոմս կամ ամբողջական ձեւակերպում:
Overview
Ռումբերն այն հրամանն է, որը կարդում է ֆայլերի կամ տերմինալների տողերը, դրանք մեկնաբանում եւ սովորաբար իրականացնում է այլ հրամաններ: Այն ծրագիրն է, որը վարում է այն ժամանակ, երբ օգտվողը մուտք է գործում համակարգում (չնայած օգտվողը կարող է ընտրել մեկ այլ շերտ chsh (1) հրամանով): Ռեֆլեքսը իրականացնում է հոսքային հսկողության կառուցվածք ունեցող մի լեզու, որը մակրոտնտեսական կայան է, որը ապահովում է տվյալների հուսալիության մի շարք առանձնահատկություններ, ինչպես նաեւ կառուցված պատմության եւ գծերի խմբագրման հնարավորություններով: Այն ներառում է բազմաթիվ առանձնահատկություններ, որոնք կօգնեն ինտերակտիվ օգտագործման համար եւ առավելություն ունեն, որ մեկնաբանական լեզուն տարածված է ինչպես ինտերակտիվ, այնպես էլ ոչ ինտերակտիվ օգտագործման համար (վանդակային սցենարներ): Այսինքն, հրամանները կարող են ուղղակիորեն մուտքագրվել վազքի վահանակին կամ կարող է տեղադրվել ֆայլի մեջ, եւ ֆայլը կարող է կատարվել ուղղակիորեն:
Ներողություն
Եթե ոչ args, եւ եթե ստանդարտ մուտքագրումը shell միացված է տերմինալի (կամ եթե - ի դրոշը սահմանվել), եւ - c տարբերակը չէ, ապա shell համարվում է ինտերակտիվ shell . Ինտերակտիվ ռումբը սովորաբար հուշում է յուրաքանչյուր հրամանատարի առաջ եւ ծրագրավորման եւ հրամանատարական սխալները տարբեր կերպով (ինչպես նկարագրված է ստորեւ): Երբ առաջին անգամ սկսում է, shell ստուգում է փաստարկը 0, եւ եթե այն սկսվում է dash `- 'shell համարվում է նաեւ մուտքի shell մասին: Սովորաբար դա ավտոմատ կերպով կատարվում է համակարգով, երբ օգտագործողը մուտք է գործում առաջինը: Մուտքային վահանակը առաջինը կարդում է ֆայլերը / etc / profile եւ պրոֆիլ, եթե դրանք գոյություն ունեն: Եթե շրջակա միջավայրի փոփոխական ENV- ն սահմանվում է shell- ի մուտքի վրա, կամ տեղադրված է մուտքի վահանակի պրոֆիլում, ապա վահանակը կարդում է ENV- ում նշված ֆայլից հրամանները: Հետեւաբար, օգտագործողը պետք է տեղադրի հրամաններ, որոնք պետք է կատարվեն միայն մուտքի ժամանակը .profile ֆայլում եւ հրամաններ, որոնք կատարվում են ENV ֆայլի ներսում յուրաքանչյուր պատուհանի համար : Որոշ ֆայլում ENV փոփոխականի տեղադրելու համար տեղադրեք հետեւյալ տող ձեր տնային գրացուցակի ձեր պրոֆիլում
ENV = $ HOME / .shinit; արտահանման ENV
փոխարինող «.shinit» `ցանկացած ֆայլի անունը : Քանի որ ENV ֆայլը կարդում է shell- ի յուրաքանչյուր աղյուսակի համար, ներառյալ shell- ի սցենարները եւ ոչ ինտերակտիվ ռումբեր, հետեւյալ պարադիգմը օգտակար է ENV ֆայլում հրամանների ինտերակտիվ հրավիրումներին սահմանափակելու համար: Տեղադրեք հրամանները ստորեւ `« գործի »եւ ստորեւ` « esac » (այս հրամանները նկարագրվում են ավելի ուշ).
դեպքում $ - ի մեջ * i *)
# հրամաններ միայն ինտերակտիվ օգտագործման համար
...
esac
Եթե հրամանատարական գծի փաստարկներն ընտրվելուց բացի ընտրված են, ապա shell վերաբերվում է առաջին փաստարկին, որպես ֆայլի անվանումը, որը կարդալու հրամանները (shell script), իսկ մնացած փաստարկները սահմանվում են որպես վահանակի դիրքի պարամետրերը ($ 1 , $ 2, եւ այլն): Հակառակ դեպքում, shell- ը կարդում է հրամանները ստանդարտ մուտքից:
Պատահական ցուցակների մշակումը
Բոլոր միասնական նամակների տարբերակները ունեն համապատասխան անուն, որը կարող է օգտագործվել որպես o-o տարբերակի փաստարկ: Սահմանված ` o անունը տրամադրվում է ստորեւ ներկայացված տարբերակով, ստորեւ բերված նկարագրում: Պարամետրը `` `` `սեղմում է տարբերակը` գումարած `« + »- ի օգտագործման դեպքում անջատում է տարբերակը: Հետեւյալ ընտրանքները կարող են սահմանվել հրամանի տողից կամ սահմանված (1) տեղադրված (նկարագրված հետագայում):
- ա. allexport
Արտահանեք բոլոր փոփոխականները, որոնք տրված են: (UNIMPLEMENTED համար 4.4 ալֆա)
-կ
Հրամանատարի հրամանները կարդացեք: Ստանդարտ մուտքից հրամանները չեն կարդացվի:
-C noclobber
Մի գրեք գոյություն ունեցող ֆայլերը `` `> (UNIMPLEMENTED for 4.4alpha)
-Երրիքիտ
Եթե ինտերակտիվ չէ, ապա անմիջապես ելքը, երբ որեւէ ստուգված հրաման չի հաջողվում: Հրամանատարության ելքի կարգավիճակը համարվում է հստակ փորձարկված, եթե հրամանն օգտագործվում է այն ժամանակ, երբ կամ երբ հրամանը վերահսկվում է, եթե, կամ եթե հրամանը `` `եւ & '' կամ` `|| օպերատորի ձախ ձեռքի գործն է:
-f noglob
Անջատել pathname ընդլայնումը:
-n noexec
Եթե ինտերակտիվ չէ, կարդացեք հրամանները, բայց դրանք չկատարեք: Սա օգտակար է shell- ի սցենարների շարահյուսությունը ստուգելու համար:
-u ցեղատեսակ
Ուղղակի հաղորդագրություն գրեք ստանդարտ սխալի մեջ, երբ ընդլայնեք այն փոփոխողը, որը չի սահմանվում, եւ եթե վահանակը ինտերակտիվ չէ, անմիջապես ելքը: (UNIMPLEMENTED համար 4.4 ալֆա)
-վ բանավոր
The shell գրում է իր ներդրումը ստանդարտ սխալ, քանի որ այն կարդալ. Հատկորոշման օգտակար է:
-x xtrace
Գրեք յուրաքանչյուր հրամանը ստանդարտ սխալին (նախորդում է «+» մինչեւ այն կատարվելը:
-q հանգիստ պրոֆիլը
Եթե v - - կամ - x - ի ընտրանքները սահմանված են, ապա դրանք չեն կիրառվում սկզբնավորման ֆայլերը կարդալիս, դրանք լինում են / etc / profile: պրոֆիլը եւ ENV միջավայրի փոփոխականով սահմանված ֆայլը:
- Ես անտեսում եմ
Միջամտելիս անտեսեք EOF- ի մուտքը:
- ինտերակտիվ
Պաշտպանեք միջուկը վարելու համար:
մոնիտոր
Միացնել աշխատանքի վերահսկողությունը (ինքնաբերաբար սահմանելիս ինտերակտիվ է):
-Ս
Կարդացեք ստանդարտ մուտքագրման հրամաններ (ավտոմատ կերպով սահմանեք, եթե ֆայլի փաստարկներ չկան): Այս տարբերակը որեւէ ազդեցություն չի ունենա այն ժամանակ, երբ վահանակը արդեն սկսեց վազելուց հետո (այսինքն սահմանված (1)):
-V vi
Միացնել ներկառուցված vi (1) հրամանի տող խմբագրիչը (անջատված է, եթե այն սահմանված է):
- Էմաչս
Միացնել ներկառուցված emacs (1) հրամանի տող խմբագիր (անջատված - V, եթե այն սահմանվել է):
-բ տեղեկացնել
Միացնել ֆոնային աշխատանքների ավարտման մասին ասինքրիկ ծանուցում: (UNIMPLEMENTED համար 4.4 ալֆա)
Լեզվի կառուցվածքը
The shell- ն ընթերցում է ֆայլի գծերի տողում մուտքագրումը եւ այն տարածում է սպիտակ տողերի մեջ բառերի (բացվածքներ եւ ներդիրներ) եւ որոշակի հաջորդականությամբ հերոսների համար, որոնք կոչվում են «օպերատորներ», որոնք կոչվում են օպերատորներ: Կան երկու օպերատորներ ` վերահսկման օպերատորները եւ վերահասցեագրման օպերատորները (դրանց իմաստը հետագայում քննարկվում է): Հետեւյալ օպերատորների ցանկն է.
"Վերահսկիչ օպերատորներ."
& && (); ;; | | ||
"Վերահղման օպերատոր:"
<>> | << >> <&> & << - <>
Քվոտում
Քառյակում օգտագործվում է հստակ նիշերի կամ բառերի յուրահատուկ նշանակությունը հեռացնելու համար, ինչպիսիք են օպերատորները, սպիտակ տողերը կամ հիմնաբառերը: Կա երեք տիպի մեջբերում `համապատասխանեցված միակ մեջբերում, համընկնում կրկնվող մեջբերումներ եւ կոճակ:
Կտրում
A backslash- ը պահպանում է հետեւյալ բնույթի բառացի իմաստը, բացառությամբ Aq newline- ի: Aq newline- ն նախորդող ճեղքվածքը դիտարկվում է որպես գծի շարունակություն:
Միակ մեջբերումները
Միայնակ մեջբերումների մեջ ընդգրկող նիշերը պահպանում են բոլոր նիշերի բառացի իմաստը (բացառությամբ միայնակ մեջբերում, ինչը անհնար է դարձնում միակ մեջբերումները մեկ-մեջբերված տողում):
Կրկնակի գնանշումներ
Կրկնակի մեջբերումների մեջ ներդնող նիշերը պահպանում են բոլոր նիշերի բառացի իմաստը, բացառությամբ dollarign ($) backquote (`) եւ backslash (\): Կրկնակի տառատեսակների մեջ ճեղքվածքները պատմականորեն տարօրինակ են եւ ծառայում են միայն հետեւյալ նիշերը.
$ `\
Հակառակ դեպքում դա մնում է բառացի:
Պահպանված բառերը
Պահպանված խոսքերն այն բառերն են, որոնք հատուկ նշանակություն ունեն շերտին եւ ճանաչվում են գծի սկզբում եւ վերահսկիչ օպերատորից հետո: Հետեւյալները վերապահված են բառեր.
!! Ta elif Ta Ta Ta Ta Ta- ի դեպքում
Ta Ta Ta Ta Ta Ta Ta Ta Ta Ta
Թա տանեց Տա մինչեւ Տա տա տասը
Նրանց իմաստը հետագայում քննարկվում է:
Ալիաներ
Ալյումինե անունը եւ համապատասխան արժեքը սահմանում է, օգտագործելով alias (1) կառուցված հրամանը: Երբ վերապահված բառը կարող է առաջանալ (վերը տես վերը) եւ վերապահված բառերի ստուգումից հետո վահանակը ստուգում է բառը, տեսնելու, թե արդյոք դա համապատասխանում է այլ անունների: Եթե դա արվում է, այն փոխարինում է ներմուծման հոսքի մեջ իր արժեքով: Օրինակ, եթե գոյություն ունի «lf -F» արժեքով `« lf »,
lf foobar
կդառնար
ls -F foobar
Ալիազատները միամիտ օգտագործողներին հնարավորություն են տալիս հրամանների համար ստանդարտներ ստեղծել, առանց սովորելու, թե ինչպես ստեղծել գործառույթներ փաստարկներով: Նրանք կարող են օգտագործվել նաեւ բառապաշարի բացասական կոդը ստեղծելու համար: Այս օգտագործումը հուսահատված է:
Հրամաններ
Ռումբերն մեկնաբանում է այն բառերը, որոնք կարդում են մեկ լեզվով, որի առանձնահատկությունը դուրս է այս մարդու էջի շրջանակից (վերաբերում է POSIX 1003.2 փաստաթղթում BNF- ին): Հատկանշական է, թեեւ գիծը կարդացվում է, եւ եթե գծի առաջին բառը (կամ վերահսկիչ օպերատորից հետո) վերապահված չէ, ապա shell- ը ճանաչել է մի պարզ հրաման: Հակառակ դեպքում, կարող էին ճանաչվել համալիր հրաման կամ որեւէ այլ հատուկ կառույց:
Պարզ հրամաններ
Եթե պարզ հրաման է ճանաչվել, ապա shell- ը կատարում է հետեւյալ գործողությունները.
- «Անունը = արժեք» ձեւի առաջատար բառերը հանվում են եւ հանձնվում են հասարակ հրամանատարության միջավայրին: Վերաուղղորդման օպերատորները եւ դրանց փաստարկները (ինչպես նկարագրված են ստորեւ) հանվում են եւ պահվում են վերամշակման համար:
- Մնացած բառերը ընդլայնվում են, ինչպես նկարագրված է «Expansions» բաժնում, իսկ առաջին մնացած բառը համարվում է հրամանատարի անունը եւ հրամանն է: Մնացած բառերը համարվում են հրամանի փաստարկները: Եթե ոչ հրամանատարության անունը չի առաջացել, ապա 1-ին կետում ճանաչված `` name = value '' փոփոխական հանձնարարությունները ազդում են ընթացիկ shell- ի վրա:
- Վերահղումները կատարվում են ինչպես հաջորդ բաժնում նկարագրված:
Վերահղումներ
Վերահղումները օգտագործվում են փոխելու համար, երբ հրամանագիրը կարդում է իր ներածումը կամ ուղարկում է իր արտադրանքը: Ընդհանուր առմամբ, վերահղումները բացվում են, փակվում կամ կրկնօրինակում առկա հղումը ֆայլին: Վերահղման համար օգտագործվող ընդհանուր ձեւաչափը հետեւյալն է.
[n] redir-op ֆայլը
որտեղ redir-op- ը նախկինում հիշատակված վերահղման օպերատորներից մեկն է: Հետեւյալ հնարավոր վերահղումները ցուցակը: Bq n- ն ընտրովի թիվ է, ինչպես 3-ում (ոչ `Bq 3, որը վերաբերում է ֆայլի նկարագրությանը):
[n]> ֆայլ
Վերահղման ստանդարտ թողարկումը (կամ n) ֆայլը:
[n]> | | ֆայլը
Նույնն է, բայց կեղծում է C տարբերակը:
[n] >> ֆայլ
Կցեք ստանդարտ արտադրանքի (կամ n) ֆայլեր:
[n] <ֆայլ
Վերահղման ստանդարտ մուտքագրում (կամ n) ֆայլից:
[n1] <& n2
Կրկնօրինակ ստանդարտ մուտքագրում (կամ n1) ֆայլի նկարագրիչի n2- ից:
[n] <& -
Փակել ստանդարտ մուտք (կամ ն):
[n1]> & n2
Ն 2-ից կրկնօրինակ ստանդարտ արտադրանք (կամ n1):
[n]> եւ -
Փակել ստանդարտ արտադրանքը (կամ n):
[n] <> ֆայլ
Ստանդարտ մուտքագրում (կամ ն) ընթերցման եւ գրելու համար բաց ֆայլ:
Հետեւյալ վերահասցեագրումը հաճախ կոչվում է «այստեղ-փաստաթուղթ»
[n] << սահմանազատիչ
այստեղ-doc-text ...
բաժանում
Բոլոր տեքստը, որը բաժանարարին հաջորդող գծերի վրա պահվում է, փրկվում է եւ հասանելի է ստանդարտ մուտքագրման հրամանին, կամ եթե նշվում է ֆայլի նկարագրությունը: Եթե նախնական գիծում նշված սահմանաչափը մեջբերված է, ապա այստեղ-doc- տեքստը բառացիորեն վերաբերվում է, հակառակ դեպքում տեքստը ենթարկվում է պարամետրերի ընդլայնմանը, հրամանի փոխարինմանը եւ թվաբանական ընդլայնմանը (ինչպես նկարագրված է «Expansions» բաժնում) 'Եթե օպերատորը << << << >> է փոխարեն, ապա այստեղ `doc-text- ում առաջատար էջանիշերը փակում են:
Որոնել եւ իրականացնել
Կա հրամանների երեք տիպեր. Shell ֆունկցիաները, կառուցված հրամանները եւ նորմալ ծրագրերը, եւ հրամանը փնտրվում է (անունով) այդ կարգով: Նրանցից յուրաքանչյուրը կատարվում է այլ կերպ:
Երբ կափարիչի գործառույթն իրականացվում է, բոլոր shell դիրքի պարամետրերը (բացառությամբ $ 0, որը մնում է անփոփոխ) սահմանվում է shell ֆունկցիայի փաստարկները: Հրահանգի միջավայրում հստակորեն տեղադրված փոփոխականները (ֆունկցիայի անունից առաջ հանձնարարություններ դնելով) տեղադրվում են գործառույթը եւ սահմանվում են տրված արժեքները: Այնուհետեւ գործառույթում տրված հրամանը կատարվում է: Պաշտոնային պարամետրերը վերականգնվում են իրենց սկզբնական արժեքների համար, երբ հրամանը ավարտվում է: Այս ամենը տեղի է ունենում ներկա վահանակի մեջ:
Շենքի կառուցապատումները կատարվում են ներքինի մեջ, առանց նոր գործընթացի հալածելու:
Հակառակ դեպքում, եթե հրամանատարի անունը չի համապատասխանում գործառույթին կամ կառուցվածքին, ապա հրամանը դիտարկվում է որպես ֆայլերի համակարգի նորմալ ծրագիր (ինչպես նկարագրված է հաջորդ բաժնում): Երբ նորմալ ծրագիր է իրականացվում, սխեմն անցնում է ծրագիրը, անցնելով փաստարկները եւ շրջակա միջավայրը ծրագրին: Եթե ծրագիրը նորմալ գործարկվող ֆայլ չէ (այսինքն, եթե այն սկսվում է «կախարդական համարից», որի ASCII ներկայացումը «#!» Է, ապա կատարում է Er ENOEXEC- ը, ապա) ենթաբաժին: Երեխաների շերտը կվերաբացվի այս դեպքում, որպեսզի ազդեցությունը լինի այնպիսին, ինչպիսին է նոր շերտը, որը կատարվել է ժամանակավոր վահանակի կարգավորելու համար, բացառությամբ, որ ծնողական շերտում տեղադրված խառնված հրամանների գտնվելու վայրը կհիշվի երեխա:
Նշենք, որ այս փաստաթղթի եւ կոդերի նախորդ տարբերակները ինքնին մոլորության մեջ են եւ պարբերաբար վերաբերում են shell- ի սցենարին, առանց կախարդական թվերի, որպես «shell procedure»:
Ճանապարհային որոնում
Երբ հրաման տեղադրեք, առաջինը նայում է, տեսնելով, թե արդյոք այն ունի այդ անունով կաբելը: Այնուհետեւ փնտրում է այդ անունով կառուցված հրաման: Եթե կառուցված հրաման չի հայտնաբերվել, երկու բաներից մեկը տեղի է ունենում.
- Սխալ պարունակող հրամանների անունները պարզապես կատարվում են առանց որեւէ որոնումների կատարման:
- The shell փնտրում է յուրաքանչյուր մուտքի PATH իր հերթին հրաման. PATH- ի փոփոխականի արժեքը պետք է լինի միանգամից երկու կետերով առանձնացված գրառումների շարքը: Յուրաքանչյուր գրառում կազմված է գրացուցակի անունից: Ներկայիս գրացուցակը կարող է անուղղակիորեն նշել հստակ դիրեկտորիայի անունով կամ ակնհայտորեն մեկ ժամանակահատվածով:
Command Exit կարգավիճակը
Յուրաքանչյուր հրաման ունի ելքի կարգավիճակ, որը կարող է ազդել այլ shell հրամանների վարքագծի վրա: Պարադիգմն այն է, որ հրամանը նորմալ կամ հաջողության համար զրոյից դուրս է գալիս, իսկ ձախողման, սխալի կամ կեղծ ցուցումների համար ոչ զրո: Յուրաքանչյուր հրամանատարության տղամարդկանց էջը պետք է նշի տարբեր ելքի կոդերը եւ ինչ նկատի ունենա: Բացի այդ, կառուցված հրամանները վերադարձնում են ելքային կոդերը, ինչպես որ կատարվում է վահանակի գործառույթը:
Կոմպլեկտ հրամաններ
Կոմպլեկտ հրամանները պարզ գործառույթների կոմբինացիաներ են `վերահսկիչ օպերատորների կամ պահված բառերով, միասին ստեղծելով ավելի մեծ բարդ հրաման: Ընդհանուր առմամբ, հրամանը հետեւյալն է.
- պարզ հրաման
- խողովակաշարով
- ցանկ կամ բարդ ցուցակ
- բարդ հրաման
- գործառույթի սահմանումը
Եթե այլ բան նշված չէ, հրամանի ելքի կարգավիճակը հրամանով կատարված վերջին պարզ հրահանգն է:
Խողովակաշարեր
Խողովակաշարը հսկողության օպերատորի կողմից առանձնացված մեկ կամ ավելի հրամանների հաջորդականությունն է: Բոլոր ստանդարտ արտադրանքի ստանդարտ ելքը կապված է հաջորդ հրամանի ստանդարտ մուտքագրման հետ: Վերջին հրամանի ստանդարտ արտադրանքը ժառանգվում է shell- ից, ինչպես սովորաբար:
Խողովակաշարի ձեւաչափը `
[!] command1 [| command2 ...]
Command1- ի ստանդարտ ելքը միացված է command2- ի ստանդարտ մուտքագրմանը: Ստանդարտ մուտքագրումը, ստանդարտ արտադրանքը կամ հրամանի երկուսն էլ համարվում են խողովակաշարի կողմից, նախքան վերահասցեագրման օպերատորները, որոնք հրամանատարության մաս են կազմում:
Եթե գազամուղը ֆոնին չէ (քննարկվում է հետագայում), ապա վահանակը սպասում է բոլոր հրամանների ավարտին:
Եթե վերապահված բառը: չի նախընտրում խողովակաշարը, ելքի կարգավիճակը ծովում նշված վերջին հրամանատարության ելքի կարգավիճակն է: Հակառակ դեպքում, ելքի կարգավիճակը վերջին հրամանի ելքի կարգավիճակի տրամաբանական չէ: Այսինքն, եթե վերջին հրամանը վերադարձվի զրո, ապա ելքի կարգավիճակը 1 է, եթե վերջին հրամանն ավելի մեծ է զրոյից, ապա ելքի կարգավիճակը զրո է:
Քանի որ ստանդարտ մուտքագրման կամ ստանդարտ թողարկման խողովակաշար նշանակելը կամ երկուսն էլ առաջ են անցնում վերահասցեագրումը, այն կարող է փոփոխվել `վերալիցքավորմամբ: Օրինակ:
$ command1 2> & 1 | | հրամանատար 2
ուղարկում է ստանդարտ արտադրանքի եւ ստանդարտ սխալը command1 ստանդարտ մուտքագրման command2.
A; կամ
Նշենք, որ, ի տարբերություն որոշ այլ ռումբերների, խողովակաշարում յուրաքանչյուր գործընթացը զավթող շերտի երեխա է (եթե դա ոչ մի շերտ է կառուցված, որի դեպքում այն իրականացվում է ներկա վահանակում, սակայն այն ազդեցություն է ունենում շրջակա միջավայրի վրա):
Ֆոնային հրամաններ -
Եթե հրամանը դադարեցվում է հսկողության օպերատորը ampersand (&) կողմից, ապա shell- ը իրականացնում է հրամանը ոչ միաժամանակյա կերպով, այսինքն, shell- ը չի սպասում հրամանի ավարտին մինչեւ հաջորդ հրամանը կատարելու ավարտը:
Հրամանը ֆոնին գործելու ձեւաչափը հետեւյալն է.
command1 & [command2 & ...]
Եթե վահանակը ինտերակտիվ չէ, ապա որպես asynchronous հրամանի ստանդարտ ներդիրը սահմանվում է / dev / null
Ցանկը, ընդհանուր առմամբ, խոսում է
Ցանկը զրո կամ ավելի հրամանների հերթականություն է, որը բաժանվում է նոր տողերի, հատվածների կամ ամպերսանդների կողմից եւ հնարավոր է դադարում այս երեք նիշերից մեկով: Ցանկում հրամանները կատարվում են գրված կարգում: Եթե հրամանին հետեւում է ampersand, ապա shell սկսում է հրամանը եւ անմիջապես անցնում է հաջորդ հրաման. հակառակ դեպքում ակնկալում է հրամանն ավարտելուց առաջ առաջ անցնել հաջորդին:
Կարճուղիների ցուցակի օպերատորներ
`` && '' եւ `` || `AND-OR ցուցակի օպերատորները: `&& '' կատարում է առաջին հրամանը, ապա կատարում է երկրորդ հրամանը, եթե առաջին հրամանի ելքի կարգավիճակը զրո է: `` || -ը նման է, բայց իրականացնում է երկրորդ հրամանը, եթե առաջին հրամանի ելքի կարգավիճակը սահուն չէ: `` && '' եւ `` || 'երկուսն էլ ունեն նույն առաջնահերթությունը:
Flow-Control Constructs- ի դեպքում `գործի համար
Եթե հրամանատարության սինթետիկան է
եթե ցանկը
ապա ցուցակ
[Էլիֆ ցուցակ
ապա ցուցակ] ...
[այլ ցանկ]
fi
Ժամանակի հրամանների շարադրանքն է
իսկ ցուցակը
անել ցանկը
կատարած
Երկու ցուցակները մի քանի անգամ կատարվում են, իսկ առաջին ցուցակի ելքի կարգավիճակը զրո է: Մինչեւ հրամանատարը նման է, բայց ունի բառ, մինչեւ այն ժամանակ, ինչը հանգեցնում է այն կրկնելու, մինչեւ առաջին ցուցակի ելքի կարգավիճակը զրո է:
Հրամանատարության սինթետիկան է
բառի փոփոխության համար ...
անել ցանկը
կատարած
Խոսքերը ընդլայնվում են, եւ այդ ցանկը կրկնվում է հերթականությամբ, յուրաքանչյուր բառի հերթականությամբ փոխակերպված: անել եւ արել կարելի է փոխարինել `` {`'եւ` `}' '
Ընդմիջման եւ շարունակման հրամանների շարադրանքն է
ընդմիջում [num]
շարունակել [num]
Break ընդհատում է inn innermost համար կամ loops. Շարունակությունը շարունակում է ամենաթանկ հանգույցի հաջորդ կրկնօրինակը: Դրանք իրականացվում են որպես կառուցված հրամաններ:
Գործի հրամանների շարադրանքն է
գործի բառը
օրինակ) ցուցակ ;;
...
esac
Դիզայնը կարող է իրականում լինել մեկ կամ ավելի օրինակներ (տես `ավելի ուշ նկարագրված Shell Patterns- ը)` առանձնացված `` `նիշերով:
Միասին խմբագրելով հրամանները
Հրամանները կարող են խմբավորվել `գրելով
(ցուցակ)
կամ
{ցանկ;
Առաջիններից մեկը ենթահոլովակում կատարում է հրամանները: Ներկառուցված հրամաններ (ցուցակ) խմբագրելը չի ազդի ընթացիկ shell- ի վրա: Երկրորդ ձեւը չի փոխում մեկ այլ շերտ, որը մի փոքր ավելի արդյունավետ է: Այսպիսով, խմբերի հրամանները միասին թույլ են տալիս վերարտադրել իրենց արտադրանքը, կարծես թե դրանք մեկ ծրագիր էին.
{printf hello; printf աշխարհը \ n ";}> ողջույն
Գործառույթներ
Ֆունկցիայի սահմանման շարադրանքն է
անուն () հրամանը
Ֆունկցիայի սահմանումը կատարողական հայտարարություն է. երբ կատարվում է, այն տեղադրում է անուն անուն ֆունկցիան եւ վերադարձնում է զրոյի կարգավիճակը: Հրամանն, որպես կանոն, ընդգրկված է `` `{} եւ` `}
Փոփոխականները կարող են հայտարարվել տեղական գործառույթի տեղական հրամանատարության միջոցով: Սա պետք է հայտնվի որպես գործառույթի առաջին հայտարարություն, եւ սինթետիկ է
տեղական [փոփոխական | -] ...
Տեղական ծրագիրը իրականացվում է որպես կառուցված հրաման:
Երբ փոփոխությունը տեղադրվում է տեղական մակարդակում, այն ժառանգում է նախնական արժեքը եւ արտահանվող եւ ընթերցանորեն դրոշակակիրները փոփոխականից նույն անվամբ `շրջակա միջավայրում, եթե կա մեկը: Հակառակ դեպքում փոփոխականն ի սկզբանե չի կարգավորվում: Շեղը օգտագործում է դինամիկ գոտի, այնպես, որ եթե դուք փոփոխություն կատարեք x- ի տեղական ֆունկցիայի համար, ապա այն կոչվում է գործառույթ g, հղումները դեպի փոփոխական x, որը պարունակում է ներսում g- ը կանդրադառնա f- ում հայտարարված փոփոխականին, .
Միակ յուրահատուկ պարամետրը, որը կարելի է տեղական լինել, տեղադրվում է `` `` `` տեղադրելու ցանկացած տեղանք, որոնք փոխվում են գործառույթի ներսում սահմանված հրամանով `ֆունկցիան վերադարձնելու դեպքում վերականգնել իրենց սկզբնական արժեքները:
Վերադարձի հրամանի տեքստը
վերադարձ [exitstatus
Այն դադարեցնում է ընթացիկ գործառույթը: Վերադարձը կատարվում է որպես կառուցված հրաման:
Փոփոխականներ եւ պարամետրեր
Շենքը պահպանում է մի շարք պարամետրեր: Անվանով նշվող պարամետրը կոչվում է փոփոխական: Երբ սկսում են, shell դառնում բոլոր միջավայրի փոփոխականները մեջ shell փոփոխականների. Նոր փոփոխականները կարող են սահմանվել ձեւով
անուն = արժեք
Օգտագործողի կողմից սահմանած փոփոխականները պետք է ունենան միայն այբբենական, թվերի եւ ընդգծված կազմի անուն, որոնցից առաջինը չպետք է թվային: Պարամետրը կարող է նաեւ նշվել ստորեւ նկարագրված մի շարք կամ հատուկ բնույթով:
Պաշտոնական պարամետրեր
Պաշտոնային պարամետրը պարամետր է, որը նշվում է թվով (n> 0): Շենքը նախապես սահմանում է իր հրամանի տողային փաստարկների արժեքները, որոնք հետեւում են վահանակի անվանմանը: Սահմանված (1) տեղադրվածը կարող է օգտագործվել նաեւ դրանք տեղադրելու կամ վերականգնելու համար:
Հատուկ Պարամետրեր
Հատուկ պարամետր է պարամետր, որը նշված է հետեւյալ հատուկ նիշերից մեկի կողմից: Պարամետրի արժեքը նշված է իր բնույթի կողքին:
*
Ընդլայնում է դիրքային պարամետրերը, սկսած մեկից: Երբ ընդլայնումը տեղի է ունենում երկկողմանի տողում, այն տարածվում է մեկ դաշտով, յուրաքանչյուր պարամետրի արժեքով, որը առանձնացված է IFS փոփոխականի առաջին բնույթով կամ եթե < IFS- ը չի կարգավորվում:
@
Ընդլայնում է դիրքային պարամետրերը, սկսած մեկից: Երբ ընդլայնումը տեղի է ունենում կրկնակի մեջբերումներում, յուրաքանչյուր դիրքի պարամետր ընդլայնվում է որպես առանձին փաստարկ: Եթե դիրքորոշիչ պարամետրեր չկան, ապա @ ընդլայնումը զրոյական փաստարկներ է առաջացնում, նույնիսկ եթե @ է կրկնակի մեջբերված: Դա, ըստ էության, նշանակում է, օրինակ, եթե $ 1- ը `« abc »եւ $ 2` `« դե ջին », ապա Qq $ @ ընդլայնվում է երկու փաստարկներին.
abc դել գի
#
Ընդլայնում է դիրքային պարամետրերի քանակը:
Հաճախակի
Ընդլայնում է վերջին խողովակաշարի ելքի կարգավիճակը:
- (գիծ):
Ընդլայնում է ընթացիկ ընտրանքային դրոշները (մեկ տառով ընտրովի տարբերակները, որոնք կապակցված են լարային), ինչպես նշված է դավանանքի վրա, տեղադրված հրամանով կամ անուղղակիորեն:
$
Ընդլայնում է առաջադրվող շաբլոնի գործընթացի ID- ն: A subshell պահպանում է նույն արժեքը, քան $ ծնողը:
!!
Ընդարձակվում է ընթացիկ ռումբից կատարված վերջին ֆոնի հրամանի գործընթացի ID- ն: Խողովակաշարի համար ընթացիկ ID- ն այն է, որ վերջին հրամանատարը խողովակաշարի մեջ է:
0 (զրոյի)
Ընդարձակվում է վահանակի կամ շերտերի սցենարի անունը:
Բառի ընդարձակումներ
Այս կետում նկարագրվում են բառերի վրա կատարված տարբեր շեղումներ: Ոչ բոլոր ընդլայնումները կատարվում են յուրաքանչյուր բառի վրա, ինչպես բացատրվում է ավելի ուշ:
Tilde- ի ընդլայնումները, պարամետրերի ընդլայնումները, հրամանների փոխարինումը, թվաբանական ընդլայնումները եւ մեջբերումները, որոնք առաջանում են մեկ բառի մեջ, ընդլայնվում են մեկ դաշտում: Դա միայն դաշտային պառակտման կամ pathname ընդլայնում է, որը կարող է ստեղծել մի քանի բառեր մի քանի բառից: Յուրաքանչյուր բացառություն է այս կանոնը `հատուկ ցուցանիշի ընդլայնումը @ մեջբերումներում, ինչպես նկարագրված է վերեւում:
Խոսքի ընդլայնման կարգը հետեւյալն է.
- Tilde ընդլայնում, պարամետրերի ընդլայնում, հրամանի փոխարինում, թվաբանական ընդլայնում (այդ ամենը տեղի է ունենում միաժամանակ):
- Դաշտի պառակտումը կատարվում է (1) քայլով առաջացած դաշտերի վրա, եթե IFS- ի փոփոխականն անվավեր է:
- Pathname ընդլայնում (եթե սահմանված - f ուժի մեջ է):
- Մեջբերում մետատվություն.
$ Բնույթը օգտագործվում է պարամետրերի ընդլայնման, հրամանի փոխարինման կամ թվաբանական գնահատման ներդրման համար:
Tilde ընդլայնումը (փոխարինող օգտվողի տան տեղեկագիրը)
Մի խոսք, որը սկսվում է անճաշակ տիլդայի գծից (~), ենթարկվում է տիլդ ընդլայնմանը: Բոլոր նիշերը մինչեւ խեղաթյուրում (/) կամ բառի վերջը դիտվում են որպես օգտագործողի անուն եւ փոխարինվում է օգտագործողի տնային գրացուցակում: Եթե օգտագործողի անունը բացակայում է (ինչպես ~ / foobar- ում), ապա տիլդը փոխարինվում է Տնային փոփոխականի (ներկայիս օգտագործողի տան տեղեկատուի) արժեքով:
Պարամետրերի ընդլայնում
Պարամետրերի ընդլայնման ձեւաչափը հետեւյալն է.
որտեղ արտահայտությունը բաղկացած է բոլոր նիշերից, մինչեւ «կոճակ» կամ «մեջբերվող» տողերի մեջ `« `որեւէ մեկը` `համապատասխան` `« զետեղված »` զետեղված թվաբանական ընդլայնումների, հրամանների փոխարինման եւ փոփոխական ընդլայնումների գծերով նիշերը չեն դիտարկվում համապատասխան `` `} ''
Պարամետրերի ընդլայնման պարզագույն ձեւը հետեւյալն է.
Պարամետրի արժեքը, եթե առկա է, փոխարինված է:
Պարամետրի անունը կամ խորհրդանիշը կարող են ներառված լինել braces- ում, որոնք ընտրովի են, բացառությամբ մեկից ավելի թվով դիրքորոշման պարամետրերի կամ երբ պարամետրին հաջորդում է այնպիսի բնույթ, որը կարող է մեկնաբանվել որպես անունի մաս: Եթե պարամետրերի ընդլայնումը տեղի է ունենում կրկնակի մեջբերումներում,
- Pathname- ի ընդլայնումը չի տարածվում ընդլայնման արդյունքների վրա:
- Դաշտային պառակտումը կատարվում է ընդլայնման արդյունքների վրա, բացառությամբ @.
Բացի այդ, պարամետրերի ընդլայնումը կարող է փոփոխվել, օգտագործելով հետեւյալ ձեւաչափերից մեկը:
Օգտագործեք Նախնական արժեքները: Եթե պարամետրը չկիրառվի կամ նուլ է, բառի ընդլայնումը փոխարինվում է. հակառակ դեպքում, պարամետրի արժեքը փոխարինված է:
Վերագրանցել արժեքները: Եթե պարամետրը չկիրառվի կամ նուլ է, բառի ընդլայնումը նշանակվում է պարամետր: Բոլոր դեպքերում, պարամետրի վերջնական արժեքը փոխարինվում է: Այս ձեւով կարող են նշանակվել միայն փոփոխականներ, ոչ դիրքային պարամետրեր կամ հատուկ պարամետրեր:
Նշեք սխալը, եթե Անկյուն կամ Անսահմանափակ: Եթե պարամետրը չկիրառվի կամ նուլ է, բառի ընդլայնումը (կամ այն նշողը, որը նշում է այն բացված է, եթե բառը բացակայում է) գրված է ստանդարտ սխալին, եւ shell- ը դուրս է գալիս սահուն ելքի կարգավիճակով: Հակառակ դեպքում, պարամետրի արժեքը փոխարինվում է: Ինտերակտիվ ռելիեֆը չպետք է դուրս գա:
Օգտագործեք այլընտրանքային արժեք: Եթե պարամետրը չկիրառվի կամ null, null փոխարինված է; հակառակ դեպքում բառի ընդլայնումը փոխարինված է:
Նախկինում ցուցադրված պարամետրերի ընդլայնման մեջ ֆորմատի մեջ երկօքսիդի օգտագործումը հանգեցնում է այնպիսի պարամետրերի փորձարկմանը, որը կարգավորված չէ կամ ոչ: գլխուղեղի բացթողումը հանգեցնում է այն բանին, որը պարունակում է միայն պարամետր:
Սանդղակի երկարությունը: Պարամետրի արժեքի նիշերի երկարությունը:
Պարամետրերի ընդլայնման հետեւյալ չորս սորտերը ապահովում են ենթատեքստի վերամշակման: Յուրաքանչյուր դեպքում նախադեպը գնահատելու համար օգտագործվում է ոչ թե կանոնավոր արտահայտության նմուշ, այլ ոչ թե կանոնավոր նշում նշում (տես Shell- ի ձեւերը): Եթե պարամետրը * կամ @ է, ընդլայնման արդյունքն անհայտ է: Լրիվ պարամետր ընդլայնման պարանի ընդգրկումը կրկնակի մեջբերումներում չի առաջացնում հետեւյալ չորս սորտերի օրինակելի նիշերը, մինչդեռ բայերի մեջ հղկող նիշերը այս ազդեցությունն ունեն:
Հեռացրեք Փոքր Suffix մոդելը: Խոսքը ընդլայնվում է, օրինակ, օրինակ: Պարամետրային ընդլայնումը այնուհետեւ բերում է պարամետր, ջնջվածքի փոքրագույն մասը, որը համապատասխանում է օրինակին:
Հեռացնել Largest Suffix Pattern- ը: Խոսքը ընդլայնվում է, օրինակ, օրինակ: Պարամետրային ընդլայնումը այնուհետեւ բերում է պարամետր, ջնջվածի խոշոր մասը, որը համապատասխանում է օրինակին ջնջված:
Հեռացնել ամենափոքր նախածանցային նմուշը: Խոսքը ընդլայնվում է, օրինակ, օրինակ: Պարամետրային ընդլայնումը, այնուհետեւ, բերում է պարամետրին, նախշեքի ամենափոքր մասը, որը համապատասխանում է օրինակին:
Հեռացնել մեծագույն նախածանցի նմուշը: Խոսքը ընդլայնվում է, օրինակ, օրինակ: Պարամետրային ընդլայնումը այնուհետեւ բերում է պարամետրին, նախածանցի մեծ մասը, որը համապատասխանում է օրինակին:
Հրամանատարության փոխարինում
Հրամանատարության փոխարինումը թույլ է տալիս հրամանատարության անունը փոխարինել հրամանատարության արդյունքը: Հրամանատարության փոխարինումը տեղի է ունենում, երբ հրամանը կցվում է հետեւյալ կերպ.
$ (հրաման)
կամ Po `` backquoted '' տարբերակը Pc:
«հրաման»
Ռումբը ընդլայնում է հրամանատարության փոխարինումը հրամանատարության ենթաբեւեռային միջավայրում կատարելու եւ հրամանի փոխարինման փոխարինումը հրամանի ստանդարտ արդյունքի փոխարեն, փոխարինելու մեկ կամ ավելի նոր հաջորդականության հերթականությունը `փոխարինման վերջում: (Ներկառուցված <նոր տողը `մինչեւ ելքի վերջը չի հանվում, սակայն դաշտի պառակտման ժամանակ նրանք կարող են թարգմանվել
Հավասարաչափ ընդլայնում
Հավասարության ընդլայնումը ապահովում է թվաբանական արտահայտության գնահատման մեխանիզմ եւ փոխարինելով դրա արժեքը: Հատուկ ընդգրկման ձեւաչափը հետեւյալն է.
$ ((արտահայտություն))
Արտահայտությունը դիտվում է որպես կրկնակի մեջբերում, բացառությամբ, որ արտահայտության մեջ կրկնակի հատվածը հատուկ չի վերաբերվում: Ռումբերն ընդլայնում է բոլոր տողերը արտահայտության պարամետրերի ընդլայնման, հրամանի փոխարինման եւ մեջբերման հեռացման համար:
Հաջորդը, shell վերաբերվում է սա որպես թվաբանական արտահայտություն եւ փոխարինում է արտահայտության արժեքը:
Սպիտակ տիեզերքի պառակտում (դաշտային պառակտում)
Պարամետրերի ընդլայնման, հրամանատարության փոխարինման եւ թվաբանական ընդլայնման արդյունքում խցիկը սկանավորում է ընդարձակման եւ փոխարինման արդյունքների մասին, որոնք չեն առաջացել կրկնակի մեջբերումներ դաշտի պառակտման եւ բազմաթիվ դաշտերի համար:
The shell վերաբերվում է IFS- ի յուրաքանչյուր բնույթին որպես սահմանազատիչ եւ օգտագործում է սահմանազատիչներին `պարամետրերի ընդլայնման եւ հրամանատարության փոխարինման արդյունքների բաժանման համար:
Pathname ընդլայնում (Ֆայլի անունը սերունդ)
Եթե f - դրոշը սահմանվի, ֆայլի անունը սերունդը կատարվում է բառի պառակտման ավարտից հետո: Յուրաքանչյուր բառը դիտվում է որպես սլաքների առանձնացված մի շարք օրինակներ: Ընդարձակման գործընթացը փոխարինում է բառի բոլոր գոյություն ունեցող ֆայլերի անուններով, որոնց անունները կարող են ձեւավորվել `յուրաքանչյուր նմուշի փոխարինելով նշված նմուշին համապատասխանող տողով: Դրա վրա երկու սահմանափակում կա, նախ, օրինակ, չի կարող համընկնել սահող պարունակող տողը, իսկ երկրորդը, օրինակ, չի կարող համընկնել մի պարանի հետ, սկսած ժամանակահատվածից, եթե մոդելի առաջին բնավորությունը ժամանակաշրջան չէ: Հաջորդ բաժինը նկարագրում է Pathname Expansion- ի եւ գործի (1) հրամանի համար օգտագործվող օրինակները:
Shell նմուշներ
Դիզայնը բաղկացած է նորմալ նիշերից, որոնք համապատասխանում են իրենց եւ meta-characters- ին: Մեթա-նիշերը `«! »,` `` `` `` '' Եւ '`[' 'Այս նիշերը կորցնում են իրենց հատուկ իմաստները, եթե դրանք մեջբերվեն: Երբ հրամանը կամ փոփոխական փոխարինումը կատարվում է, եւ դոլարի նշանը կամ ետ գնանշումները երկակի մեջբերված չեն, հրամանատարի արժեքի կամ արտադրանքի արժեքը սկանավորվում է այս նիշերի համար եւ դրանք վերածվում են մետա-նիշերի:
Աստղանիշ (`` * ') համընկնում է ցանկացած նիշի տողում: Հարցման նշանը համապատասխանում է ցանկացած բնույթի: Ձախ կողմում (`` ['') ներկայացնում է բնույթ դաս: Բնույթների դասի ավարտը նշվում է (`` '') կողմից, եթե `` `'' այն բացակայում է, ապա` `['' համապատասխանում է` `[] '', այլ ոչ թե բնութագրող դասի ներդրում: Բառի դասը համապատասխանում է քառակուսի փակագծերի միջեւ գտնվող ցանկացած նիշ: Մի շարք նիշ կարող է սահմանվել, օգտագործելով մինուս նշան: Բնույթների դասը կարող է համալրվել `բացականչելով կետի բնույթի առաջին բնույթը:
Նիշերի դասում ընդգրկելու համար `այն նշեք առաջին գծերը (հետո` `` '' '): Բացասական նշան ընդգրկելու համար նշեք այն առաջին կամ վերջին տառերը
Բուլիններ
Այս բաժինը թվարկում է կառուցված հրամանները, որոնք կառուցված են, քանի որ դրանք պետք է կատարեն որոշակի գործողություն, որը չի կարող իրականացվել առանձին գործընթացով: Բացի այդ, կան մի քանի այլ հրամաններ, որոնք կարող են տեղադրվել արդյունավետության համար (օրինակ ` echo 1):
:
Null հրաման, որը վերադարձնում է 0 (ճշմարիտ) ելքի արժեք:
. ֆայլը
Նշված ֆայլի հրամաններն ընթերցվում եւ կատարվում են վահանակով:
alias [ name [ = string ... ]]
Եթե name = string նշվի, ապա shell- ը սահմանում է alias անունը արժեքի լծակով: Եթե պարզապես անունը նշված է, ապա պատկերի անունը տպվում է: Առանց փաստարկների, կեղծված անունները տպում են բոլոր անվանումները (տես ` unalias)
bg [ աշխատանք] ...
Շարունակեք նշված աշխատանքները (կամ ընթացիկ աշխատանքը, եթե աշխատանք չի տրվում) ֆոնին:
հրամանատարը arg ...
Կատարել նշված կառուցված հրամանը: (Սա օգտակար է այն դեպքում, երբ դուք ունեք shell ֆունկցիա նույն անունով, որը կառուցված հրաման է:)
cd [ գրացուցակ ]
Անջատեք նշված դիրեկտորիան (default $ HOME) Եթե CDPATH- ի մուտքն հայտնվում է CD- ի հրամանի կամ միջուկի վահանակի CDPATH միջավայրում հայտնվում է, եւ գրացուցակը չի սկսվում սեղմումով , ապա CDPATH- ում նշված դիրեկտորիաները կգրեւվեն նշված դիրեկտորիայի համար: CDPATH- ի ձեւաչափը նույնն է, ինչ PATH- ի ինտերակտիվ ժապավենում , cd հրամանը տպագրելու է այն գրացուցակի անունը, որն իրականում անցնում է, եթե դա տարբերվում է օգտագործողի անունից: Սրանք կարող են տարբեր լինել, քանի որ CDPATH մեխանիզմն օգտագործվել է կամ խորհրդանշական հղում է անցել:
eval string ...
Համադրեք բոլոր փաստարկները բացատներով: Հետո վերանայեք եւ կատարեք հրամանը:
exec [ հրամանատար arg ... ]
Եթե հրամանը չկատարվի, ապա ռեֆլեքս գործընթացը փոխարինվում է նշված ծրագրով (որը պետք է լինի իրական ծրագիր, այլ ոչ թե շելլերի կառուցված կամ գործառույթ): Exec- ի հրամանատարի վրա ցանկացած վերահղման նշվում է որպես մշտական, այնպես, որ դրանք չկատարվեն, երբ exec հրամանը ավարտվում է:
ելք [ exitstatus ]
Դադարեցնել շերտը: Եթե exitstatus տրվում է, այն օգտագործվում է որպես վահանի ելքի կարգավիճակ, հակառակ դեպքում օգտագործվում է նախորդ հրամանների ելքի կարգավիճակը:
արտահանման անունը ...
արտահանման-պ
Նշված անունները արտահանվում են այնպես, որ դրանք կհայտնվեն հետագա հրամանների միջավայրում: Տարբերակն արտահանման միակ ձեւը այն է, որ այն չկիրառի: Ռումբը թույլ է տալիս միաժամանակ սահմանել փոփոխական արժեքը, այն արտահանվում է գրելու միջոցով
արտահանման անուն = արժեք
Առանց փաստարկներ չկան, արտահանման հրամանը նշում է բոլոր արտահանվող փոփոխականների անունները: - p - ի տարբերակով, արտադրանքը պետք է ձեւափոխվի համապատասխանաբար ոչ ինտերակտիվ օգտագործման համար:
fc [- e խմբագիր ] [ առաջին [ վերջին ]]
fc -l [ -nr ] [ առաջին [ վերջին ]]
fc -s [ old = new ] [ առաջին ]
Fc- ի կառուցված ցուցակները կամ խմբագրումները եւ վերագործարկումը, նախկինում մուտքագրված ինտերակտիվ ռումբի հրամանները:
- խմբագիր
Հրամանները խմբագրելու համար օգտագործեք խմբագրիչի խմբագիր: Խմբի տողը հրամանների անունն է, որը ենթակա է որոնման միջոցով PATH փոփոխական: FCEDIT փոփոխականի արժեքը օգտագործվում է որպես կանխադրված, երբ e- ը չի նշվում: Եթե FCEDIT- ն անվավեր է կամ կարգաբերված չէ, EDITOR փոփոխականի արժեքն օգտագործվում է: Եթե EDITOR- ն անվավեր է կամ unset, ed (1) -ը օգտագործվում է որպես խմբագիր:
-լ (ell)
Ցանկացեք հրամանները, այլ ոչ թե դրանց վրա խմբագիր հրավիրեք: Հրամանները գրված են առաջին եւ վերջին գործոնների մեջ նշված հաջորդականությամբ, ինչպես տիպի հրամանով առաջադրված յուրաքանչյուր հրամանով:
-Ն
Սեղմել հրամանների համարները, երբ նշեք -l- ով:
-ռ
Վերադարձեք կարգաբերված հրամանների կարգը ( l - l կամ խմբագրված (ոչ - ի կամ ոչ )):
-ս
Վերագործարկեք հրամանին, առանց խմբագիր հրավիրեք:
առաջին
վերջինը
Ընտրեք ցանկը կամ խմբագրելու հրամանները: Նախորդ հրամանների թիվը, որոնք կարող են հասանելի լինել, որոշվում են HISTSIZE փոփոխականի արժեքով: Առաջին կամ վերջին կամ երկուսի արժեքը հետեւյալն է.
[+] համարը
Հրամանատարածություն ներկայացնող դրական համար; հրամանների համարները կարող են ցուցադրվել - l տարբերակով:
-թիվ
Բացասական տասնորդական համարը, որը ներկայացնում է հրամանը, որը նախկինում կատարվել է հրամանների քանակ: Օրինակ, -1-ը անմիջապես նախորդ հրամանն է:
string
Ստեղծվել է ամենավերջին մուտքագրված հրամանը, որը սկսվում է այդ տողից: Եթե հին = new operand- ը չի նշվում նաեւ `առաջին օպերանդի տողային ձեւը չի կարող պարունակել տեղադրված հավասար նշան:
Հետեւյալ միջավայրի փոփոխականները ազդում են fc- ի կատարման վրա.
FCEDIT- ը
Օգտագործելու համար խմբագրի անվանումը:
HISTSIZE
Նախորդ հրամանների քանակը, որոնք մատչելի են:
fg [ աշխատանք ]
Տեղափոխեք նշված աշխատանքը կամ ընթացիկ աշխատանքը նախեւառաջ:
getopts optstring var
POSIX- ի ստացած հրամանները, չպետք է շփոթել Bell Labs- ի հետ, ստացան getopt (1):
Առաջին փաստարկը պետք է լինի մի շարք տառեր, որոնցից յուրաքանչյուրը կարող է ընտրովիորեն հետեւել մի կետ, նշելու համար, որ տարբերակը պահանջում է փաստարկ: Նշված փոփոխությունը սահմանվում է վերլուծված տարբերակին:
Getopts- ի հրամանը հափշտակում է հին getopt (1) կոմունալը, որով սպիտակ պարունակող փաստարկների մշակումը:
Ներքին տեղադրման տեղամասերը կարող են օգտագործվել տարբերակներ եւ դրանց փաստարկները պարամետրերի ցանկից ստանալու համար: Անհրաժեշտության դեպքում, getopts- ը տեղադրում է հաջորդ տարբերակի արժեքը ցուցակի ցանկի տողում ` var- ի կողմից սահմանված վահանակի փոփոխականում եւ դրա ինդեքսը OPTIND- ի վահանակի փոփոխականում: Այն դեպքում, երբ շեղը կոչվում է, OPTIND- ը մեկնարկվում է 1-ին: մի փաստարկ, որ տեղադրված տեղադրված տեղադրեք այն օպտիկամանրաթելային օպտիկամանրաթելում: Եթե OPTARG- ի օժտված տարբերակը թույլ չի տալիս, ապա OPTARG- ը չի կարգավորվի:
optstring- ը ճանաչված տարբերակի տառերի տող է: Եթե նամակին հաջորդում է մի կետ, ապա տարբերակը ակնկալվում է ունենալ փաստարկ, որը կարող է կամ չի կարող առանձնացվել սպիտակ տարածությունից: Եթե տարբերակն առկա չէ, որտեղ ակնկալվում է, ապա « getopts » - ը կկազմի փոփոխական var- ը `« `», ապա « getopts » - ը կստեղծի OPTARG- ը եւ գրեք ստանդարտ սխալին: Նշելով կույտը, քանի որ բոլոր սխալները դիտելու առաջին բնույթը չի անտեսվի:
Ոչ սահուն արժեքը վերադարձվում է, երբ վերջին տարբերակը հասնում է: Եթե մնացյալ փաստարկներ չկան, ապա ստացականները կստանան հատուկ տարբերակ `« - », այլապես այն կկազմի« `»:
Հետեւյալ կոդը պարունակում է, թե ինչպես կարելի է մշակել հրամանների փաստարկները, որոնք կարող են վերցնել [ա] եւ [բ] տարբերակները եւ [c] տարբերակը, որը պահանջում է փաստարկ:
իսկ ստացականները abc: f
անել
գործը $ f է
ա | բ) դրոշ = $ f ;;
գ) carg = $ OPTARG ;;
\?) echo $ USAGE; ելք 1;
esac
կատարած
անցում `` $ OPTIND - 1 `
Այս կոդն ընդունում է հետեւյալը, որպես համարժեք:
cmd -acarg ֆայլի ֆայլը
cmd -a -c arg ֆայլի ֆայլը
cmd -carg- ֆայլի ֆայլը
cmd -a -carg- ֆայլի ֆայլը
hash -rv հրաման ...
Shell- ը պահպանում է հեշ սեղան, որը հիշում է հրամանների տեղերը: Ոչ մի փաստարկ չունենալով, hash հրամանը տպագրում է այս սեղանի բովանդակությունը: Գրառումներ, որոնք չեն դիտվել, քանի որ վերջին cd հրամանը նշվում է աստղանիշով; հնարավոր է այդ գրառումները անվավեր են:
Արգումենտներով, հեշի հրամանը հստակ հրամանները հեռացնում է hash սեղանից (եթե դրանք գործառույթ չեն), ապա դրանք տեղադրում են: With - v տարբերակը, hash- ը տպում է հրամանների տեղերը, քանի որ գտնում է դրանք: The - r տարբերակը hash հրամանին առաջացնում է հեշ սեղանի բոլոր գրառումները, բացառությամբ գործառույթների:
jobid [ աշխատանք ]
Տպել պրոցեսին ID- ն գործընթացների գործընթացում: Եթե գործի փաստարկը բացակայում է, ապա ընթացիկ աշխատանքն օգտագործվում է:
աշխատատեղեր
Այս հրամանը նշում է բոլոր ֆոնային գործընթացները, որոնք հանդիսանում են ներկա վահանակի երեխաների երեխաները:
Տպեք ընթացիկ գրացուցակը: Ներկառուցված հրամանները կարող են տարբերվել նույն անունով ծրագրից, քանի որ կառուցված հրամանը հիշում է, թե արդյոք առկա տեղեկատուը ամեն անգամ փոխհատուցում է այն: Դա ավելի արագ է դարձնում: Սակայն, եթե ընթացիկ գրացուցակը վերանվանվի, pwd- ի կառուցված տարբերակը կշարունակի գրացուցակի հին անունը տպել:
կարդացեք [- p ակնարկ ] [- r ] փոփոխական ...
Հուշը տպագրվում է, եթե - p տարբերակը նշված է եւ ստանդարտ մուտքագրումը տերմինալ է: Այնուհետեւ ստանդարտ մուտքից կարդացվում է մի գիծ: The trailing newline- ը ջնջվում է գծից եւ գիծը բաժանվում է, ինչպես նկարագրված է վերեւում բառի պառակտման բաժնում եւ կտորները հանձնվում են փոփոխականներին: Առնվազն մեկ փոփոխական պետք է նշվի: Եթե առկա են փոփոխականներ ավելի շատ կտորներ, մնացած կտորները ( IFS- ի նիշերը, որոնք բաժանված են դրանք) վերագրվում են վերջին փոփոխականին: Եթե կան ավելի շատ փոփոխականներ, քան կտորները, ապա մնացած փոփոխականները նշանակվում են նարնջագույն տող: Ընթերցված տեղադրվածը ցույց կտա հաջողությունը, եթե մուտքագրման ընթացքում EOF- ն չի հանդիպում, որի դեպքում ձախողումը վերադարձվում է:
Լռակյաց, եթե նախընտրելի է, եթե « r» տարբերակը չի նշվում, ապա `` `` `« փախուստի »բնույթ, ինչը նշանակում է հետեւյալ բնույթը բառացիորեն վերաբերվել: Եթե ճոճանակին հաջորդում է նոր տող, ապա վերադարձի եւ նոր գծի կջնջվի:
readonly անունը ...
readonly -p
Նշված անունները նշվում են որպես միայն կարդացած, որպեսզի դրանք չեն կարող փոփոխվել կամ չստանալ: Պտուտակը հնարավորություն է տալիս միաժամանակ սահմանել փոփոխական արժեքը, որը նշվում է միայն կարդալով
readonly name = արժեքը
Առանց փաստարկների, ընթերցող հրամանագիրը թվարկում է միայն կարդալու միայն փոփոխականների անունները: - p - ի տարբերակով, արտադրանքը պետք է ձեւափոխվի համապատասխանաբար ոչ ինտերակտիվ օգտագործման համար:
սահմանել [{- options | + ընտրանքներ | - arg ... ]
Սահմանված հրամանը կատարում է երեք տարբեր գործառույթ:
Առանց փաստարկների, այն նշում է բոլոր shell փոփոխականների արժեքները:
Եթե ընտրանքները տրվում են, այն սահմանում է նշված տարբերակի դրոշները, կամ դրանք մաքրում է դրանք, ինչպես նկարագրված է Sx փաստարկների ցուցակի մշակման բաժնում:
Սահմանված հրամանի երրորդ օգտագործումը սահմանում է shell- ի դիրքի պարամետրերի արժեքները նշված args- ին: Փոխել դիրքի պարամետրերը `առանց որեւէ ընտրության փոխելու, օգտագործել` `` `` որպես առաջին փաստարկը սահմանելու համար: Եթե args չեն, սահմանված հրամանը կջնջի բոլոր դիրքի պարամետրերը (համարժեք կատարել `` shift $ #.
փոփոխական արժեք
Արժեք է նշանակում փոփոխական: (Ընդհանրապես ավելի լավ է գրել փոփոխական = արժեք, քան օգտագործելով setvar- setvar- ը նախատեսված է գործառույթներում, որոնք արժեքներ են տալիս փոփոխականներին, որոնց անունները փոխանցվում են որպես պարամետրեր):
shift [ n ]
Տեղափոխման դիրքերը տեղափոխել n անգամ: Տեղափոխումը սահմանում է $ 1 արժեքը $ 2 արժեքը, $ 2 արժեքը, $ 3 արժեքը եւ այլն, նվազեցնելով $ # արժեքը: Եթե n- ն ավելի մեծ թվով դիրքային պարամետրերի քանակից է, ապա հերթափոխը կստեղծի սխալ հաղորդագրություն եւ ելքի ստատուսի կարգավիճակ 2:
անգամ
Տպեք կուտակված օգտագործողի եւ համակարգի ժամանակների համար shell- ի եւ գործընթացների վազում է shell. Վերադարձի կարգավիճակը 0 է:
թակարդի գործողությունների ազդանշանը ...
Պատճառն այն է, որ վահանակը վերլուծել եւ իրականացնել գործողություն, երբ նշված ազդանշաններից որեւէ մեկը ստացվում է: Ազդանշանները նշվում են ազդանշանի համարով: Եթե ազդանշանն է, ապա գործողությունը կատարվում է այն ժամանակ, երբ վահանակը դուրս է գալիս: գործողությունը կարող է լինել null կամ `` `նախկինում նշված ազդանշանն անտեսվում է, եւ վերջինս առաջացնում է կանխադրված գործողություն: Երբ վահանակն անջատում է ենթաբաժինը , այն վերականգնում է թակարդված (բայց անտեսված) ազդանշանները կանխադրված գործողությանը: Թակարդի հրամանը ոչ մի ազդեցություն չի թողնում ազդանշանների վրա, որոնք անտեսվել են շաբլոնի մուտքի վրա:
տեսակը [ անուն ... ]
Գրեք յուրաքանչյուր անուն որպես հրաման եւ տպեք հրամանատարության որոնման բանաձեւը: Հնարավոր լուծումները հետեւյալն են `shell բանալի բառ, alias, shell builtin , հրամանատարական, tracked alias եւ չի գտնվել: Այլ անուններով կեղծանունների ընդլայնումը տպագրվում է. հրամանների եւ ոլորված այլ անունների համար հրամանի ամբողջական ուղին տպագրվում է:
ulimit [ -H- S ] [ -a-tfdscmlpn [ արժեք ]]
Ձեռք բերեք կամ կարգավորեք ծանր կամ փափուկ սահմանաչափերը գործընթացների վրա կամ սահմանեք նոր սահմաններ: Հստակ սահմանաչափի միջեւ ընտրություն (որը թույլ չի տալիս խախտել, եւ որը չի կարող բարձրացվել այն բանից հետո, երբ այն իջեցվել է) եւ փափուկ սահմանը (ինչը հանգեցնում է ազդանշանների, բայց ոչ պարտադիր սպանությունների, որոնք կարող են բարձրացվել) այդ դրոշները.
-Հ
սահմանել կամ հարցնել ծանր սահմանների մասին
-Ս
սահմանել կամ ուսումնասիրել փափուկ սահմանները: Եթե ոչ H - S- ը նշված չէ, ապա փափուկ սահմանը ցուցադրվում է կամ սահմանվում են երկու սահմանները: Եթե երկուսն էլ նշվեն, վերջինը հաղթում է:
Դրանից հետո հարցաքննելու կամ սահմանելու սահմանը ընտրվում է `դրոշներից որեւէ մեկը նշելով`
-ա
ցույց տալ բոլոր առկա սահմանները
-թ
ցույց տալ կամ սահմանել սահմանաչափը CPU- ի ժամանակին (վայրկյանում)
-ֆ
ցուցադրել կամ սահմանել ամենամեծ ֆայլի սահմանը, որը կարող է ստեղծվել (512 բայ բլոկների մեջ)
-դ
ցույց տալ կամ սահմանել գործընթացի տվյալների հատվածի չափի սահմանը (կիլոբայթերում)
-ս
ցույց տալ կամ սահմանել գործընթացի բեմական չափի սահմանը (կիլոբայթերում)
-կ
ցուցադրել կամ սահմանել խոշոր հիմնական պոչամբարի չափի սահմանը, որը կարող է արտադրվել (512 բայ բլոկներով)
-մ
ցուցադրել կամ սահմանել ընդհանուր ֆիզիկական հիշողության սահմանը, որը կարող է օգտագործվել մի գործընթացով (կիլոբայթերում)
-լ
ցույց տալ կամ սահմանել այն սահմանը, թե որքան հիշողություն կարող է փակել գործընթացը, որը կարող է փակված լինել (2) ( կիլոբայթով )
-պ
ցույց տալ կամ սահմանել սահմանափակում այն օգտվողների միաժամանակյա գործընթացների քանակի վրա
-Ն
ցույց տալ կամ սահմանել թվային ֆայլերի սահմանը, գործընթացը կարող է միանգամից բացվել
Եթե դրանցից ոչ մեկը նշված չէ, ապա այն սահմանվում է կամ սահմանվում է ֆայլի չափի սահմանը: Եթե արժեքը նշված է, սահմանը սահմանվում է այդ թիվը: հակառակ դեպքում ներկայիս սահմանը ցուցադրվում է:
Կամայական գործընթացի սահմանները կարող են ցուցադրվել կամ սահմանվել sysctl (8) օգտակար եղանակով:
umask [ mask ]
Սահմանեք umask- ի արժեքը (տես `umask (2)) նշված octal արժեքին: Եթե փաստարկը բացակայում է, ապա umask արժեքը տպագրվում է:
unalias [- a ] [ name ]
Եթե անունը նշված է, ապա shell- ն հեռացնում է այդ կեղծանունները: Եթե նշվում է, ապա բոլոր aliases- ն հանվում է:
կարգավորել անունը ...
Նշված փոփոխականներն ու գործառույթները չեն կարգավորվում եւ արտահանված չեն: Եթե տվյալ անունը համապատասխանում է ինչպես փոփոխական, այնպես էլ գործառույթին, ապա փոփոխությունը եւ գործառույթը չեն կարգավորվում:
սպասել [ աշխատանք ]
Սպասեք նշված աշխատանքին ավարտելուց եւ վերադարձնել աշխատանքի վերջին գործընթացը: Եթե փաստարկը բացակայում է, սպասեք բոլոր աշխատանքների ավարտին եւ վերադարձեք զրոյի ելքի կարգավիճակ:
Command Line Editing- ը
Երբ sh- ը օգտագործվում է տերմինալից ինտերակտիվ կերպով, ընթացիկ հրամանը եւ հրամանատարության պատմությունը (տես Fc- ը Sx Builtins- ում) կարող է խմբագրվել, օգտագործելով vi ռեժիմում հրամանի տողերի խմբագրումը: Այս ռեժիմում օգտագործվում է ստորեւ նկարագրված հրահանգները, որոնք նման են VI man էջում նկարագրվածների ենթաբազմությանը: «Set» -o vi հրամանը թույլ է տալիս vi-mode- ի խմբագրումը եւ տեղադրել sh- ի ներդրման ռեժիմը: Vi- ռեժիմը թույլատրվում է, sh կարող է փոխարկվել ներդիրի ռեժիմի եւ հրամանի ռեժիմի միջեւ: Խմբագիրը ամբողջությամբ չի նկարագրված, բայց կլինի ավելի ուշ: Դա նման է VI- ին: Aq ESC- ի մուտքագրումը ձեզ հրամայեց հրամանի VI հրամանատարության ռեժիմում: Հիտլերյան ռեժիմում հակադարձելով Aq- ի վերադարձը տողն անցնելու է շաբլոն:
Կարեւոր է. Օգտագործեք հրամանատարությունը ( % մարդ ), որպեսզի տեսնեք, թե ինչպես է օգտագործվում հրամանը ձեր որոշակի համակարգչում: