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- ն չի հանդիպում, որի դեպքում ձախողումը վերադարձվում է:

Լռակյաց, եթե նախընտրելի է, եթե « տարբերակը չի նշվում, ապա `` `` `« փախուստի »բնույթ, ինչը նշանակում է հետեւյալ բնույթը բառացիորեն վերաբերվել: Եթե ​​ճոճանակին հաջորդում է նոր տող, ապա վերադարձի եւ նոր գծի կջնջվի:

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- ի վերադարձը տողն անցնելու է շաբլոն:

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