Ash - Linux Command - Unix հրաման

ԱՆՈՒՆ

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- ը կատարում է հետեւյալ գործողությունները.

  1. «Անունը = արժեք» ձեւի առաջատար բառերը հանվում են եւ հանձնվում են հասարակ հրամանատարության միջավայրին: Վերաուղղորդման օպերատորները եւ դրանց փաստարկները (ինչպես նկարագրված են ստորեւ) հանվում են եւ պահվում են վերամշակման համար:
  2. Մնացած բառերը ընդլայնվում են, ինչպես նկարագրված է «Expansions» բաժնում, իսկ առաջին մնացած բառը համարվում է հրամանատարի անունը եւ հրամանն է: Մնացած բառերը համարվում են հրամանի փաստարկները: Եթե ​​ոչ հրամանատարության անունը չի առաջացել, ապա 1-ին կետում ճանաչված `` name = value '' փոփոխական հանձնարարությունները ազդում են ընթացիկ shell- ի վրա:
  3. Վերահղումները կատարվում են ինչպես հաջորդ բաժնում նկարագրված:

Վերահղումներ

Վերահղումները օգտագործվում են փոխելու համար, երբ հրամանագիրը կարդում է իր ներածումը կամ ուղարկում է իր արտադրանքը: Ընդհանուր առմամբ, վերահղումները բացվում են, փակվում կամ կրկնօրինակում առկա հղումը ֆայլին: Վերահղման համար օգտագործվող ընդհանուր ձեւաչափը հետեւյալն է.

[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»:

Ճանապարհային որոնում

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

  1. Սխալ պարունակող հրամանների անունները պարզապես կատարվում են առանց որեւէ որոնումների կատարման:
  2. The shell փնտրում է յուրաքանչյուր մուտքի PATH իր հերթին հրաման. PATH- ի փոփոխականի արժեքը պետք է լինի միանգամից երկու կետերով առանձնացված գրառումների շարքը: Յուրաքանչյուր գրառում կազմված է գրացուցակի անունից: Ներկայիս գրացուցակը կարող է անուղղակիորեն նշել հստակ դիրեկտորիայի անունով կամ ակնհայտորեն մեկ ժամանակահատվածով:

Command Exit կարգավիճակը

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

Կոմպլեկտ հրամաններ

Կոմպլեկտ հրամանները պարզ գործառույթների կոմբինացիաներ են `վերահսկիչ օպերատորների կամ պահված բառերով, միասին ստեղծելով ավելի մեծ բարդ հրաման: Ընդհանուր առմամբ, հրամանը հետեւյալն է.

Եթե ​​այլ բան նշված չէ, հրամանի ելքի կարգավիճակը հրամանով կատարված վերջին պարզ հրահանգն է:

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

Խողովակաշարը հսկողության օպերատորի կողմից առանձնացված մեկ կամ ավելի հրամանների հաջորդականությունն է: Բոլոր ստանդարտ արտադրանքի ստանդարտ ելքը կապված է հաջորդ հրամանի ստանդարտ մուտքագրման հետ: Վերջին հրամանի ստանդարտ արտադրանքը ժառանգվում է shell- ից, ինչպես սովորաբար:

Խողովակաշարի ձեւաչափը `

[!] command1 [| command2 ...]

Command1- ի ստանդարտ ելքը միացված է command2- ի ստանդարտ մուտքագրմանը: Ստանդարտ մուտքագրումը, ստանդարտ արտադրանքը կամ հրամանի երկուսն էլ համարվում են խողովակաշարի կողմից, նախքան վերահասցեագրման օպերատորները, որոնք հրամանատարության մաս են կազմում:

Եթե ​​գազամուղը ֆոնին չէ (քննարկվում է հետագայում), ապա վահանակը սպասում է բոլոր հրամանների ավարտին:

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

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

$ command1 2> & 1 | | հրամանատար 2

ուղարկում է ստանդարտ արտադրանքի եւ ստանդարտ սխալը command1 ստանդարտ մուտքագրման command2.

A; կամ terminator- ը առաջացնում է նախորդ եւ OR-list- ը (նկարագրված է հաջորդը), որը հաջորդաբար կատարվում է. ա եւ առաջացնում է asynchronous կատարման նախորդ եւ AND- OR- ցուցակում:

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

Ֆոնային հրամաններ -

Եթե ​​հրամանը դադարեցվում է հսկողության օպերատորը 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 ընդլայնում է, որը կարող է ստեղծել մի քանի բառեր մի քանի բառից: Յուրաքանչյուր բացառություն է այս կանոնը `հատուկ ցուցանիշի ընդլայնումը @ մեջբերումներում, ինչպես նկարագրված է վերեւում:

Խոսքի ընդլայնման կարգը հետեւյալն է.

  1. Tilde ընդլայնում, պարամետրերի ընդլայնում, հրամանի փոխարինում, թվաբանական ընդլայնում (այդ ամենը տեղի է ունենում միաժամանակ):
  2. Դաշտի պառակտումը կատարվում է (1) քայլով առաջացած դաշտերի վրա, եթե IFS- ի փոփոխականն անվավեր է:
  3. Pathname ընդլայնում (եթե սահմանված - f ուժի մեջ է):
  4. Մեջբերում մետատվություն.

$ Բնույթը օգտագործվում է պարամետրերի ընդլայնման, հրամանի փոխարինման կամ թվաբանական գնահատման ներդրման համար:

Tilde ընդլայնումը (փոխարինող օգտվողի տան տեղեկագիրը)

Մի խոսք, որը սկսվում է անճաշակ տիլդայի գծից (~), ենթարկվում է տիլդ ընդլայնմանը: Բոլոր նիշերը մինչեւ խեղաթյուրում (/) կամ բառի վերջը դիտվում են որպես օգտագործողի անուն եւ փոխարինվում է օգտագործողի տնային գրացուցակում: Եթե ​​օգտագործողի անունը բացակայում է (ինչպես ~ / foobar- ում), ապա տիլդը փոխարինվում է Տնային փոփոխականի (ներկայիս օգտագործողի տան տեղեկատուի) արժեքով:

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

Պարամետրերի ընդլայնման ձեւաչափը հետեւյալն է.

որտեղ արտահայտությունը բաղկացած է բոլոր նիշերից, մինչեւ «կոճակ» կամ «մեջբերվող» տողերի մեջ `« `որեւէ մեկը` `համապատասխան` `« զետեղված »` զետեղված թվաբանական ընդլայնումների, հրամանների փոխարինման եւ փոփոխական ընդլայնումների գծերով նիշերը չեն դիտարկվում համապատասխան `` `} ''

Պարամետրերի ընդլայնման պարզագույն ձեւը հետեւյալն է.

Պարամետրի արժեքը, եթե առկա է, փոխարինված է:

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

  1. Pathname- ի ընդլայնումը չի տարածվում ընդլայնման արդյունքների վրա:
  2. Դաշտային պառակտումը կատարվում է ընդլայնման արդյունքների վրա, բացառությամբ @.

Բացի այդ, պարամետրերի ընդլայնումը կարող է փոփոխվել, օգտագործելով հետեւյալ ձեւաչափերից մեկը:

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

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

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

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

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

Սանդղակի երկարությունը: Պարամետրի արժեքի նիշերի երկարությունը:

Պարամետրերի ընդլայնման հետեւյալ չորս սորտերը ապահովում են ենթատեքստի վերամշակման: Յուրաքանչյուր դեպքում նախադեպը գնահատելու համար օգտագործվում է ոչ թե կանոնավոր արտահայտության նմուշ, այլ ոչ թե կանոնավոր նշում նշում (տես Shell- ի ձեւերը): Եթե ​​պարամետրը * կամ @ է, ընդլայնման արդյունքն անհայտ է: Լրիվ պարամետր ընդլայնման պարանի ընդգրկումը կրկնակի մեջբերումներում չի առաջացնում հետեւյալ չորս սորտերի օրինակելի նիշերը, մինչդեռ բայերի մեջ հղկող նիշերը այս ազդեցությունն ունեն:

Հեռացրեք Փոքր Suffix մոդելը: Խոսքը ընդլայնվում է, օրինակ, օրինակ: Պարամետրային ընդլայնումը այնուհետեւ բերում է պարամետր, ջնջվածքի փոքրագույն մասը, որը համապատասխանում է օրինակին:

Հեռացնել Largest Suffix Pattern- ը: Խոսքը ընդլայնվում է, օրինակ, օրինակ: Պարամետրային ընդլայնումը այնուհետեւ բերում է պարամետր, ջնջվածի խոշոր մասը, որը համապատասխանում է օրինակին ջնջված:

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

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

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

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

$ (հրաման)

կամ Po `` backquoted '' տարբերակը Pc:

«հրաման»

Ռումբը ընդլայնում է հրամանատարության փոխարինումը հրամանատարության ենթաբեւեռային միջավայրում կատարելու եւ հրամանի փոխարինման փոխարինումը հրամանի ստանդարտ արդյունքի փոխարեն, փոխարինելու մեկ կամ ավելի նոր հաջորդականության հերթականությունը `փոխարինման վերջում: (Ներկառուցված <նոր տողը `մինչեւ ելքի վերջը չի հանվում, սակայն դաշտի պառակտման ժամանակ նրանք կարող են թարգմանվել s, կախված IFS- ի արժեքից եւ վկայակոչելով այն):

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

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

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

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

Հաջորդը, 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

Տպեք ընթացիկ գրացուցակը: Ներկառուցված հրամանները կարող են տարբերվել նույն անունով ծրագրից, քանի որ կառուցված հրամանը հիշում է, թե արդյոք առկա տեղեկատուը ամեն անգամ փոխհատուցում է այն: Դա ավելի արագ է դարձնում: Սակայն, եթե ընթացիկ գրացուցակը վերանվանվի, 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- ի վերադարձը տողն անցնելու է շաբլոն:

Կարեւոր է. Օգտագործեք հրամանատարությունը ( % մարդ ), որպեսզի տեսնեք, թե ինչպես է օգտագործվում հրամանը ձեր որոշակի համակարգչում: