ပြာ - Linux ကိုစစ်ဌာနချုပ် - Unix စစ်ဌာနချုပ်

က NAME

sh - command ကိုစကားပြန် ( shell ကို )

အနှစ်ချုပ်

sh [- / + aCefnuvxIimqsVEbc] [- longname] -words [ပစ်မှတ် ... ]

DESCRIPTION

sh စနစ်များအတွက်စံ command ကိုစကားပြန်ဖြစ်ပါတယ်။ လက်ရှိ version ကို sh shell ကိုများအတွက် POSIX 1003,2 နှင့် 1003.2a သတ်မှတ်ချက်များနှင့်အတူညီဖို့အတွက်ပြောင်းလဲခံရလုပ်ငန်းစဉ်၌တည်ရှိ၏။ ဒီဗားရှင်းကခေါန် shell ကိုမှတခြို့ကဏ်ဍအလားတူပေါ်လာအောင်အရာအများအပြား features တွေရှိပါတယ်, ဒါပေမယ့် (ksh (1) ကိုကြည့်ပါ) တစ်ဦးခေါန် shell ကိုကိုယ်ပွားမဟုတ်ပါဘူး။ သာ POSIX ပေါင်းအနည်းငယ်ဘာကလေအိတ်စတန်းရှင်းခြင်းဖြင့်သတ်မှတ်ထားသောအင်္ဂါ, ဒီ shell ကိုထည့်သွင်းလျက်ရှိသည်။ ကျနော်တို့ 4.4 BSD ဖြန့်ချိသည်အချိန်အားဖြင့် POSIX ထိန်းလိုက်နာအပ်သောမျှော်လင့်ထား။ ဤသူသညျစာမျက်နှာတစ်ခုကသင်ခန်းစာသို့မဟုတ် shell ကိုတစ်ဦးပြည့်စုံသတ်မှတ်ချက်ဖြစ်ရန်ရည်ရွယ်ခြင်းမရှိပါ။

ယေဘုယျအမြင်

အဆိုပါ shell ကို command တစ်ခုဖြစ်ပါသည် , ဖိုင်တစ်ဖိုင်ဒါမှမဟုတ် terminal ကိုဖြစ်စေထံမှလိုင်းများဖတ်သူတို့ကိုအနက်ဖွင့်နှင့်ယေဘုယျအားဖြင့်အခြားအပညတ်တော်တို့ကို ပေး. စီရင်သော။ (ကအသုံးပြုသူ chsh (1) Command ဖြင့်တစ်ဦးကွဲပြားခြားနား shell ကိုရွေးနိုင်သည်ပေမယ့်) ဒါဟာစနစ်သို့လာသောအခါအသုံးပြုသူတစ်ဦးသစ်လုံးပြေးသောအစီအစဉ်တစ်ခုဖြစ်သည်။ အဆိုပါ shell ကိုသမိုင်းနှင့်လိုင်းတည်းဖြတ်ရေးစွမ်းရည် built-in များနှင့်အတူစီးဆင်းမှုထိန်းချုပ်ရေး Construction ရှိပါတယ်တဲ့ဘာသာစကား, ဒေတာသိုလှောင်မှုအပြင် features တွေအမျိုးမျိုးကိုထောက်ပံ့ပေးမယ့်နိုင်တဲ့ macro စက်ရုံ, အကောင်အထည်ဖော်ဆောင်ရွက်နေသော။ ဒါဟာအပြန်အလှန်အသုံးပြုမှုကိုကူညီဖို့အများကြီး features တွေထည့်သွင်းခြင်းနှင့်စကားပြန်ဘာသာစကားနှစ်ခုလုံးကိုအပြန်အလှန်အကျိုးသက်ရောက်မှုနှင့် Non-အပြန်အလှန်အသုံးပြုမှု (shell ကို script များ) ကိုဘုံကြောင်းအားသာချက်ရှိပါတယ်။ ဆိုလိုသည်မှာပညတ်တို့ကို၎င်း running shell ကိုတိုက်ရိုက်ရိုက်နှိပ်နိုင်ပါတယ်သို့မဟုတ်ဖိုင်တစ်ဖိုင်ထဲသို့သွင်းထားနိုင်ပြီးဖိုင်ကို shell ကိုတိုက်ရိုက်ကွပ်မျက်ခံရနိုင်ပြီးဖြစ်ပါတယ်။

Invocation

အဘယ်သူမျှမ args ပစ္စုပ္ပန်ဖြစ်တယ်ဆိုရင်နှင့် shell ကို၏စံ input ကို Terminal ကို (သို့မဟုတ်လျှင် - ကိုယ့်အလံသတ်မှတ်) နဲ့ချိတ်ဆက်လျှင်, ထို - က c option ကိုပစ္စုပ္ပန်မဟုတ်ပါ, shell ကိုတစ်ဦးအပြန်အလှန်စဉ်းစားသည် shell ကို ။ တစ်ဦးအပြန်အလှန် shell ကိုယေဘုယျအားဖြင့်တစ်ဦးချင်းစီက command မတိုင်မီလှုံ့ဆော်ပေးခဲ့တယ်နှင့် programming နဲ့ကိုင်တွယ် command ကို (အောက်တွင်ဖော်ပြထားသကဲ့သို့) ကွဲပြားခြားနားအမှားအယွင်းများ။ ပထမဦးဆုံးစတင်သောအခါ, shell ကိုငြင်းခုံ 0 င်ကြည့်ရှုစစ်ဆေး, ထိုသို့တစ် dash `နဲ့အတူစတင်လျှင် - 'အခွံကိုလည်းရဲ့ login shell ကိုစဉ်းစားသည်။ ဤသည်ပုံမှန်အားဖြင့်အခါအသုံးပြုသူပထမဦးဆုံးမှတ်တမ်းများအတွင်းစနစ်ဖြင့်အလိုအလျှောက်ပြုမိသည်။ တစ်ဦးရဲ့ login shell ကိုပထမဦးဆုံးဖိုင်များ / etc / ပရိုဖိုင်းကနေ command များကိုဖတ်ခြင်းနှင့်သူတို့တည်ရှိနေပါလျှင် .profile ။ ပတ်ဝန်းကျင် variable ကို ENV တစ် shell ကိုမှ entry ပေါ်မှာသတ်မှတ်, ဒါမှမဟုတ်တစ်ဦးရဲ့ login shell ကို၏ .profile အတွက်သတ်မှတ်ထားလျှင်, shell ကိုလာမယ့်ထို့ကြောင့် ENV အတွက်အမည်ရှိဖိုင်ကိုထံမှ Command ကိုဖတ်, အသုံးပြုသူတစ်ဦးမှာသာကွပ်မျက်ခံရခံရဖို့ဖြစ်ကြောင်းပညတ်တော်တို့ကိုနေရာချသင့်တယ် အဆိုပါ ENV ဖိုင်အတွင်း၌တိုင်း shell ကိုအဘို့အကွပ်မျက်ခံရသော .profile ဖိုင်နဲ့ command များအတွက်, ဝင်ရောက်ရန်အချိန်။ အချို့ဖိုင်ဖို့ ENV variable ကိုသတ်မှတ်ထားသင့်အိမ် directory ကိုသင့်ရဲ့ .profile ထဲတွင်အောက်ပါလိုင်းနေရာ

ENV = $ HOME / .shinit; ပို့ကုန် ENV

'' `` .shinit '' အဘို့မဆိုအစား ဖိုင်အမည် သငျသညျအလိုရှိ၏။ အဆိုပါ ENV ဖိုင် shell ကို script များနှင့် Non-အပြန်အလှန်ခွံအပါအဝင် shell ကိုအမှုအမျိုးမျိုးရှိသမျှ invocation များအတွက်ကိုဖတ်ရှုနေသည်ကတည်းကအောက်ပါပါရာဒိုင်းအပြန်အလှန် invocations ဖို့ ENV ဖိုင်ထဲတွင် commands ကိုကန့်သတ်များအတွက်အသုံးဝင်သည်။ နေရာ `` ကိစ္စတွင် '' အတွင်းပညတ်တော်တို့ကို 'နှင့် `` esac အောက်တွင်ဖော်ပြထားသော' '(ဤပညတ်တို့ကိုနောက်ပိုင်းတွင်ဖော်ပြထားကြသည်):

အမှု $ - ဈ * * အတွက်)

# command များကို သာအပြန်အလှန်အသုံးပြုမှုအတွက်

...

esac

ရှေးခယျြစရာမှတပါး command line ကအငြင်းပွားမှုများသတ်မှတ်ထားသောပြီလျှင်, shell ကိုပညတ်တော်တို့ကို (က shell ကို script ကို) ဖတ်ရှုဖို့ရာကနေဖိုင်တစ်ဖိုင်၏အမည်အဖြစ်ပထမဦးဆုံးအငြင်းအခုံဆကျဆံနှင့်ကျန်ရှိနေသေးသောအငြင်းပွားမှုများ shell ကို၏ positional parameters များကိုအဖြစ်သတ်မှတ်ထားကြသည် ($ 1 , $ 2, etc) ။ ဒီလိုမှမဟုတ်ရင် shell ကို၎င်း၏စံ input ကိုကနေ command များကိုဖတ်တယ်။

အငြင်းအခုံများစာရင်းထုတ်ယူခြင်း

option ကို - ထိုတစ်ခုတည်းစာတစ်စောင်ရွေးချယ်စရာအပေါငျးတို့သမှတစ်ဦးအငြင်းအခုံအဖြစ်အသုံးပြုနိုင်မယ့်သက်ဆိုင်ရာအမည်အားရှိသည်။ အဆိုပါသတ်မှတ်ချက် - နာမကိုအမှီဏနောက်တစ်နေ့အောက်ကဖော်ပြချက်ထဲတွင်တစ်ခုတည်းစာတစ်စောင် option ကိုပေးထားပါသည်။ တစ်ဦး dash `` သတ်မှတ်ခြင်း - '' '' တစ်ဦးပေါင်းသုံးနေစဉ် `+` ပေါ်တွင်ထို option ကိုလှည့်က 'option ကိုပိတ်။ အောက်ပါ options များက command line ကနေသို့မဟုတ် (နောက်ပိုင်းတွင်ဖော်ပြထား) ကို set ကို (1) builtin နှင့်အတူသတ်မှတ်နိုင်ပါသည်။

-a allexport

ဖို့တာဝန်အားလုံး variable တွေကိုတင်ပို့လျက်ရှိပါသည်။ (4.4alpha များအတွက် UNIMPLEMENTED)

-c

က command line ကနေ command များဖတ်ပါ။ အဘယ်သူမျှမပညတ်တို့ကိုစံ input ကိုမှဖတ်ပါလိမ့်မည်။

-C noclobber

``> '' (4.4alpha များအတွက် UNIMPLEMENTED) နဲ့လက်ရှိဖိုင်တွေ overwrite မနေပါနဲ့

-e errexit

အပြန်အလှန်မပေးလိုလျှင်မည်သည့် untested command ကိုပျက်ကွက်လျှင်, ချက်ချင်း exit ။ command တစ်ခု၏ထွက်ပေါက် status ကိုအမိန့် elif လျှင် command ကိုတစ်ဦး `` && '' 'သို့မဟုတ် `` ||' 'အော်ပရေတာများ၏လက်ဝဲလက် operand နေစဉ်သို့မဟုတ်သည်အထိသို့မဟုတ်ပါလျှင်တစ်ဦးကိုထိန်းချုပ်အသုံးပြုသည်ဆိုပါကအတိအလင်းကိုစမ်းသပ်ခံရဖို့စဉ်းစားသည်။

-f noglob

Disable လမ်းကြောင်းအမည်ကို တိုးချဲ့။

-n noexec

အပြန်အလှန်မထားလျှင်, ပညတ်တို့ကိုဖတ်ပါပေမယ့်သူတို့ကိုစီရင်ကြပါဘူး။ ဒီအခွံ script များ၏ syntax စစ်ဆေးနေများအတွက်အသုံးဝင်သည်။

-u nounset

shell ကိုချက်ချင်းအပြန်အလှန်အကျိုးသက်ရောက်မှု, ထွက်ပေါက်မပါလျှင်သတ်မှတ်ထားမဟုတ်, သော variable ကိုချဲ့ထွင်ရန်ကြိုးပမ်းလာသောအခါစံအမှားတစ်ခုသတင်းစကားရေးပါ။ (4.4alpha များအတွက် UNIMPLEMENTED)

-v verbose

ဖတ်ဖြစ်ပါတယ်အဖြစ် shell ကိုစံအမှားရန်၎င်း၏ input ကိုရေးသားခဲ့သည်။ ဒီဘာဂင်များအတွက်အသုံးဝင်သော။

-x xtrace

မှတစ်ဦးချင်းစီက command ရေးပါ စံအမှား ကြောင့်ကွပ်မျက်ခံရမီ (က `+ သဖြင့်ရှေ့ပြေး။ ဒီဘာဂင်များအတွက်အသုံးဝင်သော။

-q quietprofile

v သို့မဟုတ် - - x ကိုရှေးခယျြစရာသတ်မှတ်ထားခဲ့ကြအစပိုင်းမှာဖိုင်တွေဖတ်နေသည့်အခါဤဖြစ်ခြင်း / etc / ပရိုဖိုင်းကို .profile နှင့် ENV ပတ်ဝန်းကျင် variable ကိုအားဖြင့်သတ်မှတ်ထားသောဖိုင်ကိုသူတို့ကိုလျှောက်ထားမပါ။

-i ignoreeof

သည့်အခါအပြန်အလှန် input ကိုကနေ EOF ရဲ့လျစ်လျူရှုပါ။

-i အပြန်အလှန်အကျိုးသက်ရောက်မှု

interactive ပြုမူဖို့ shell ကိုအတင်း။

-m မော်နီတာ

(အခါ, အပြန်အလှန်အလိုအလျှောက် set) အလုပ်ထိန်းချုပ်မှုကိုဖွင့်မည်။

-s stdin

ကနေ command များကို Read စံ input ကို (အဘယ်သူမျှမဖိုင်ကိုအငြင်းပွားမှုများပစ္စုပ္ပန်လျှင်အလိုအလျှောက် set) ။ ဒီ option shell ကိုပြီးသား running စတင်ခဲ့သည်ပြီးနောက် (set ကို (1) နှင့်အတူဆိုလိုသည်မှာ) ထားသောအခါအဘယ်သူမျှမသက်ရောက်ပါတယ်။

-V vi

Built-in vi (1) command line ကအယ်ဒီတာ (- E ကိုကသတ်မှတ်ပြီးပါပြီလျှင်ပိတ်) Enable လုပ်ထားပါ။

-e emacs

Built-in emacs (1) command line ကအယ်ဒီတာ (- V ကိုကသတ်မှတ်ပြီးပါပြီလျှင် Disabled) Enable လုပ်ထားပါ။

-b အကြောင်းကြား

နောက်ခံအလုပ်ပြီးစီး၏ပြတ်တောင်းပြတ်တောင်းအကြောင်းကြားစာ Enable လုပ်ထားပါ။ (4.4alpha များအတွက် UNIMPLEMENTED)

Lexical ဖွဲ့စည်းပုံ

အဆိုပါ shell ကိုအော်ပရေတာနှစ်ခုမျိုးရှိပါတယ် '' ဖိုင်တစ်ဖိုင်ကနေလိုင်း၏စည်းကမ်းချက်များ၌ input ကိုဖတ်ခြင်းနှင့်ကြားနေရာလွတ် (ကွက်လပ်များနှင့် tabs များ) မှာစကားလုံးများကိုသို့တက်ချိုးနှင့် `` အော်ပရေတာ '' ဟုခေါ်တွင် shell ကိုအထူးဖြစ်ကြောင်းဇာတ်ကောင်အချို့ပာမှာ: ထိန်းချုပ်မှုအော်ပရေတာများနှင့် redirection အော်ပရေတာ (မိမိတို့၏အဓိပ္ပာယ်ကိုနောက်ပိုင်းမှာဆွေးနွေးထားပါတယ်) ။ အော်ပရေတာများ၏စာရင်းတစ်ခုဖြစ်ပါတယ်အောက်ပါ:

"အော်ပရေတာထိန်းချုပ်:"

& && (); ;; | ||

"လိပ်စာပြန်ညွှန်းအော်ပရေတာ:"

<>> | << >> <&> & << - <>

ကိုးကား

ကိုးကားထိုကဲ့သို့သောအော်ပရေတာ, ကြားနေရာလွတ်, ဒါမှမဟုတ်သော့ချက်စာလုံးများအဖြစ် shell ကိုမှအချို့သောဇာတ်ကောင်သို့မဟုတ်စကားများအထူးအဓိပ်ပာယျ, ဖယ်ရှားပစ်ရန်အသုံးပြုသည်။ လိုက်ဖက်တစ်ခုတည်းကိုးကား, လိုက်ဖက်နှစ်ဆကိုးကားနှင့်ဘယ်ဘက်မျဉ်းစောင်း: ကိုးကားအမျိုးအစားသုံးမျိုးရှိပါသည်။

ဘယ်ဘက်မျဉ်းစောင်း

တစ်ဦးကဘယ်ဘက်မျဉ်းစောင်း aq NEWLINE ၏ချွင်းချက်နှင့်အတူအောက်ပါဇာတ်ကောင်များ၏ပကတိအဓိပ်ပာယျထိန်းသိမ်း။ တစ်ဦး aq NEWLINE ရှေ့တစ်ဦးကဘယ်ဘက်မျဉ်းစောင်းနေတဲ့မျဉ်းကိုဆက်လက်အဖြစ်ကုသနေပါတယ်။

လူပျို Quotes

တစ်ခုတည်းကိုးကားအတွက်ဇာတ်ကောင် Enclosing (ကမဖြစ်နိုင် single-ကိုးကား string ကိုအတွက် Single-ကိုးကားထားရန်အောင်တစ်ခုတည်းကိုးကား မှလွဲ. ) အားလုံးဇာတ်ကောင်များ၏ပကတိအဓိပ်ပာယျထိန်းသိမ်း။

နှစ်ချက် Quotes

နှစ်ဆကိုးကားအတွင်းဇာတ်ကောင် Enclosing ( `) dollarsign ($) backquote မှလွဲ. အားလုံးဇာတ်ကောင်များ၏ပကတိအဓိပ်ပာယျထိန်းသိမ်းနှင့်ဘယ်ဘက်မျဉ်းစောင်း (\) ကို double quote တွေအထဲမှာအဆိုပါဘယ်ဘက်မျဉ်းစောင်းသမိုင်းကြောင်းလိုက်တယ်ဖြစ်ပါတယ်, သာအောက်ပါဇာတ်ကောင်ကိုးကားဖို့တာဝန်ထမ်းဆောင်:

$ `\

ဒီလိုမှမဟုတ်ရင်ကြောင့်ပကတိကျန်ရှိနေဆဲဖြစ်သည်။

reserved စကား

reserved စကား shell ကိုအထူးအဓိပ်ပာယျရှိသည်နှင့်တစ်လိုင်းရဲ့အစမှာကာထိန်းချုပ်မှုအော်ပရေတာအပြီးတွင်အသိအမှတ်ပြုကြသည်စကားလုံးများကိုဖြစ်ကြသည်။ အောက်ပါယူထားတဲ့စကားလုံးများကိုနေသောခေါင်းစဉ်:

! ta elif ta fi ta ta ကိစ္စတွင်စဉ်

Ta များအတွက်အခြား Ta ထို့နောက် Ta {Ta}

Ta esac လျှင် Ta Ta သည်အထိ Ta ပြုမိကြဘူး

သူတို့ရဲ့အဓိပ္ပာယ်ကိုနောက်ပိုင်းမှာဆွေးနွေးထားပါတယ်။

နာမည်တုများ

တစ်ဦး alias ကိုနာမည်တစ်ခုဖြစ်ပြီးသက်ဆိုင်ရာတန်ဖိုးသုံးပြီး set alias ကို (1) builtin command ကို။ အခါတိုင်းတစ်ဦးယူထားတဲ့စကားလုံး (အထကျကိုကြည့်ပါ) ဖြစ်ပေါ်စေခြင်းငှါ, ယူထားတဲ့ဤစကားသည်စစ်ဆေးနေပြီးနောက်, shell ကိုကတစ်ဦး alias ကိုကိုက်ညီလျှင်ကြည့်ရှုရန်စကားလုံး check လုပ်ပေးပါတယ်။ ကမဆိုပါကယင်း၏တန်ဖိုးကိုအတူ input ကိုစီးထဲမှာအစားထိုးထားသည်။ ဥပမာအားဖြင့်, `` LF '' ဟုခေါ်တွင်ထားတဲ့ alias ကိုရှိလျှင် '' တန်ဖိုးကို `` ls နှင့်အတူ -F '' ထို့နောက် input ကို:

LF foobar <ပြန်လာ>

ဖြစ်လာလိမ့်မယ်

ls -F foobar <ပြန်လာ>

နာမည်နုံအသုံးပြုသူများသည်အငြင်းပွားမှုများနှင့်အတူလုပ်ငန်းဆောင်တာကိုဖန်တီးရန်မည်သို့မည်ပုံလေ့လာသင်ယူရန်မလိုဘဲပညတ်တော်တို့ကိုအဘို့အတိုကောက်ကိုဖန်တီးရန်တစ်အဆင်ပြေလမ်းကိုပေး။ သူတို့ကအစ lexically ထင်ရှားတဲ့ကုဒ်ဖန်တီးရန်အသုံးပြုနိုင်ပါသည်။ ဤသည်ကိုအသုံးပြုခြင်းစိတ်ဓာတ်ဖြစ်ပါတယ်။

commands

အဆိုပါ shell ကိုကဤသူသည်စာမကျြနှာမြား၏နယ်ပယ်အပြင်ဘက်သည်သတ်မှတ်ချက်အရာတစ်ခုဘာသာစကား, (ထို POSIX 1003,2 စာရွက်စာတမ်းအတွက် BNF ရည်ညွှန်း) အရဖတ်ပါစကားမြားအနက်ဖွင့်။ အမှန်ကတော့သော်လည်းတစ်လိုင်းထို့နောက် shell ကိုရိုးရှင်းတဲ့ command ကိုအသိအမှတ်ပြုထားပြီးဖတ်ခြင်းနှင့် (သို့မဟုတ်ထိန်းချုပ်မှုအော်ပရေတာပြီးနောက်) လိုင်း၏ပထမဦးဆုံးစကားလုံးတစ်ခုယူထားတဲ့စကားလုံးမပါလျှင်ဖြစ်ပါတယ်။ ဒီလိုမှမဟုတ်ရင်ရှုပ်ထွေးပြီး command ကိုဒါမှမဟုတ်တချို့သည်အခြားအထူးဆောက်လုပ်ရေးလုပ်ငန်းအသိအမှတ်ပြုခဲ့ကြပေမည်။

ရိုးရှင်းသော Commands

ရိုးရှင်းတဲ့ command ကိုအသိအမှတ်ပြုထားပြီးလျှင်, shell ကိုအောက်ပါလုပ်ရပ်များလုပ်ဆောင်:

  1. ပုံစံ၏ဦးဆောင်စကားလုံးများကို `` နာမကိုအမှီ = value ကို '' ချွတ်နှင့်ရိုးရှင်းသော command ကို၏ပတ်ဝန်းကျင်ဖို့တာဝန်ရှိပါသည်။ redirection အော်ပရေတာနှင့်၎င်းတို့၏ငြင်းခုံ (အောက်တွင်ဖော်ပြထားသကဲ့သို့) ချွတ်နှင့်အပြောင်းအလဲနဲ့အဘို့ကယ်တင်ခြင်းသို့ရောက်ရ၏။
  2. `` ချဲ့ထွင် '' လို့ခေါ်တဲ့အပိုင်း '၌ဖော်ပြထားနှင့်ပထမဦးဆုံးကျန်ရှိသောစကားလုံးက command အမည်အားထည့်သွင်းစဉ်းစားသည်နှင့်အမိန့်တည်ရှိသည်အဖြစ်ကျန်ရှိစကားလုံးများကိုတိုးချဲ့လျက်ရှိသည်။ အဆိုပါကျန်ရှိနေသောစကား command ကို၏အငြင်းပွားမှုများစဉ်းစားနေကြသည်။ အဘယ်သူမျှမ command ကိုနာမတျောကိုဖြစ်ပေါ်လျှင် `` နာမကိုအမှီ = value ကို '' ကို item 1 မှာအသိအမှတ်ပြု variable ကိုတာဝန်ကျလက်ရှိ shell ကိုအကျိုးသက်ရောက်စေသည်။
  3. လာမယ့်အပိုင်းထဲမှာဖော်ပြထားတဲ့အတိုင်းပြန်ညွှန်းဖျော်ဖြေနေကြသည်။

redirect

redirect command တစ်ခုက၎င်း၏ input ကိုဖတ်သို့မဟုတ်ယင်း၏ output ကိုပို့ပေးဘယ်မှာပြောင်းလဲပစ်ရန်အသုံးပြုကြသည်။ ယေဘုယျအားပြန်လည်လမ်းညွှန်မှု, ပွင့်လင်းနီးစပ်, ဒါမှမဟုတ်ဖိုင်တစ်ဖိုင်မှရှိပြီးသားကိုကိုးကားပွား။ redirection အတှကျအသုံးပွုခြုံငုံပုံစံဖြစ်ပါသည်:

[n] redir-op ဖိုင်

ဘယ်မှာ redir-op ယခင်ကဖော်ပြထားသော redirection အော်ပရေတာတစ်ခုဖြစ်ပါသည်။ အောက်ပါဖြစ်နိုင်ချေပြန်လည်လမ်းညွှန်မှုများစာရင်းကိုဖြစ်ပါတယ်။ အဆိုပါ Bq ဎဖိုင်တစ်ဖိုင် descriptor ကိုရည်ညွှန်းကြောင်း `3 '(မဟုတ်ပါဘူး` Bq 3' 'ကာလ၌ရှိသကဲ့သို့တစ်ဦး optional ကိုအရေအတွက်ဖြစ်ပါတယ်။

[n]> ဖိုင်

file မှစံ output ကို (သို့မဟုတ်ဎ) Redirect ။

[n]> | ဖိုင်

တူညီပေမယ့်ထပ်ရေး - ကို C option ကို။

[n] >> file ကို

ဖိုင်စံ output ကို (သို့မဟုတ်ဎ) ဖြည့်စွက်။

[n] <ဖိုင်

ဖိုင်ကနေစံ input ကို (သို့မဟုတ်ဎ) Redirect ။

[n1] <& n2

ဖိုင် descriptor ကို n2 ထံမှစံ input ကို (သို့မဟုတ် n1) Duplicate ။

[n] <& -

စံ input ကို (သို့မဟုတ်ဎ) ကိုပိတ်လိုက်ပါ။

[n1]> & n2

n2 ထံမှစံ output ကို (သို့မဟုတ် n1) Duplicate ။

[n]> & -

စံ output ကို (သို့မဟုတ်ဎ) ကိုပိတ်လိုက်ပါ။

[n] <> ဖိုင်

စံ input ကို (သို့မဟုတ်ဎ) ရက်နေ့တွင်စာဖတ်ခြင်းနှင့်စာရေးခြင်းအဘို့အပွင့်လင်းဖိုင်ကို။

အောက်ပါ redirection မကြာခဏ '' တစ်ဦး `` ဤနေရာတွင်-စာရွက်စာတမ်း '' ဟုချေါသညျ

[n] << အနားသတ်မျဉ်း

ဤနေရာတွင်-doc-စာသားကို ...

အနားသတ်မျဉ်း

အဆိုပါအနားသတ်မျဉ်းမှတက်အဆက်ဆက်လိုင်းများပေါ်မှာရှိသမျှစာသားကွာကယ်တင်ခြင်းသို့ ရောက်. စံ input ကို, ဒါမှမဟုတ်ဖိုင် descriptor ကိုအပေါ်ဎကသတ်မှတ်ထားသောလျှင်အမိန့်မှမရရှိနိုင်၏။ ကနဦးလိုင်းပေါ်တွင်သတ်မှတ်ထားသောအဖြစ်ကိုအနားသတ်မျဉ်းကိုးကားလျှင်, ထိုကဒီမှာ-doc-စာသားကိုစာသားကုသ, မဟုတ်ရင်စာသားကိုချဲ့ထွင်, command ကိုအစားထိုးခြင်း, ဂဏန်းသင်္ချာတိုးချဲ့ parameterized အကြောင်းမဲ့ဖြစ်ပါတယ် ( `` တိုးချဲ့ပေါ်အပိုင်းတွင်ဖော်ပြထားသကဲ့သို့) ' '' အကယ်. အော်ပရေတာ `` << ဖြစ်ပါတယ် - '' အစား `` << '' ထို့နောက်ဤနေရာတွင်-doc-စာသားထဲမှာဦးဆောင် tabs များကိုချွတ်နေကြသည်။

Search နဲ့ Execution

ပညတ်တော်တို့ကိုအမျိုးအစားသုံးမျိုးရှိပါတယ်: shell ကို functions များ, builtin ပညတ်တော်တို့ကိုနှင့်ပုံမှန်အစီအစဉ်များ - နှင့် command ကို (အမည်ဖြင့်ဖြစ်စေ) ကိုရှာဖွေခဲ့သည်ကြောင်းအလို့ငှာ။ သူတို့ကတစ်ဦးချင်းစီဟာကွဲပြားခြားနားသောလမ်းအတွက်ကွပ်မျက်ခံရနေကြသည်။

တစ် shell ကို function ကိုကွပ်မျက်ခံရသောအခါ, (မပြောင်းလဲဖြစ်နေဆဲဖြစ်သော $ 0 မှလွဲ. ) ကိုအခွံ positional parameters တွေကိုအပေါငျးတို့သ shell ကို function ကို၏အငြင်းပွားမှုများဟုသတ်မှတ်နေကြသည်။ အတိအလင်းပါ (function ကိုနာမတော်ရှေ့၌သူတို့ကိုတာဝန်တွေအားမရသဖြင့်) ကို command ကို၏ပတ်ဝန်းကျင်၌ထားရှိကြသည့်အဆိုပါ variable တွေကို function ကိုဒေသခံထားကြပါတယ်နှင့်ပေးသောတန်ဖိုးများသတ်မှတ်ထားကြသည်။ ထိုအခါ function ကိုအဓိပ်ပါယျအတွက်ပေးတဲ့ command ကို execute လုပ်ဖြစ်ပါတယ်။ အမိန့်ပြီးဆုံးသောအခါ positional parameters တွေကိုသူတို့ရဲ့မူရင်းတန်ဖိုးများကိုပြန်နေကြသည်။ ဒါကအားလုံးလက်ရှိ shell ကိုအတွင်းတွေ့ရှိနိုင်ပါသည်။

Shell က builtins မှဖြစ်စဉ်သစ်တခု spawning မရှိပဲ, shell ကိုမှပြည်တွင်းရွှေ့ပြောင်းကွပ်မျက်ခံရနေကြသည်။

အမိန့်နာမကိုအမှီ function တစ်ခုသို့မဟုတ် builtin မကိုက်ညီလျှင်ဒီလိုမှမဟုတ်ရင်, အမိန့်ဟာဖိုင်စနစ်အတွက်ပုံမှန်အစီအစဉ် (လာမယ့်အပိုင်းထဲမှာဖော်ပြထားတဲ့အတိုင်း) အဖြစ်အဘို့ကိုရှာဖွေနေပါတယ်။ ပုံမှန်အစီအစဉ်ကိုကွပ်မျက်လျှင်, shell ကို program ကိုရန်အငြင်းပွားမှုများနှင့်ပတ်ဝန်းကျင်ဖြတ်သန်း, program ကို run ပေးနိုင်ပါတယ်။ shell ကိုတစ်ဦးအတွက်အစီအစဉ်ကိုအနက်ကိုဘော်ပြပါလိမ့်မယ် (ဒါကြောင့် "! #" အဘယ်သူ၏ ASCII ကိုယ်စားပြုမှုသည် "မှော်အရေအတွက်ကို" နဲ့စတင်ဖို့, ဒါ execve (2) ထို့နောက်ဧ ENOEXEC ပြန်လာမပါဘူးဆိုရင်ဆိုလိုသည်မှာ,) program ကိုပုံမှန် executable file ကိုမပါလျှင် subshell ။ သစ်တစ်ခု shell ကိုမိဘ shell ကိုတည်ရှိသော hash ပညတ်တော်တို့ကို၏တည်နေရာကကိုအောကျမေ့ပါလိမ့်မည်ကြောင်း မှလွဲ. ကြော်ငြာ-hoc shell ကို script ကိုကိုင်တွယ်ရန်မဖြစ်၏ခဲ့လျှင်အဖြစ်အကျိုးသက်ရောက်မှုရှိလိမ့်မည်သို့မှသာအဆိုပါကလေးအခွံ, ဒီအမှု၌ကိုယ်နှိုက် reinitialize ပါလိမ့်မယ် ကလေးက။

ဤစာရွက်စာတမ်းနှင့် source code ကိုအလိုလိုယခင်ဗားရှင်း misleadingly နှင့်ရံဖန်ရံခါမှာ "shell ကိုလုပ်ထုံးလုပ်နည်း" အဖြစ်တစ်ဦးမှော်မရေတွက်ဘဲတစ် shell ကို script ကိုရည်ညွှန်းကြောင်းသတိပြုပါ။

path ကိုရှာရန်

command တစ်ခုတည်နေရာသောအခါ, shell ကိုပထမဦးဆုံးကနာမတော်အားဖြင့်တစ် shell ကို function ကိုရှိပါတယ်လျှင်ကြည့်ဖို့ကြည့်ရှုသည်။ ထိုအခါကထိုနာမတျောအားဖြင့်တစ်ဦး builtin command ကိုများအတွက်ကြည့်ရှုသည်။ တစ်ဦး builtin command ကိုမတွေ့ရှိလျှင်အရာနှစ်ခုထဲကတစ်ခုဖြစ်ပျက်:

  1. တစ်မျဉ်းစောင်း်စစ်ဌာနချုပ်အမည်များကိုရိုးရှင်းစွာဆိုရှာဖွေမှုများကိုဖျော်ဖြေခြင်းမရှိဘဲကွပ်မျက်ခံရနေကြသည်။
  2. အဆိုပါ shell ကိုအမိန့်အဘို့အလှည့်အတွက် PATH အတွက်တစ်ဦးချင်းစီ entry ကိုရှာတတ်၏။ အဆိုပါ PATH variable ကို၏တန်ဖိုးကော်လံများဖြင့်ခွဲ entries တွေကိုတစ်စီးရီးဖြစ်သင့်သည်။ တစ်ခုချင်းစီကို entry ကိုတစ်ဦး directory ကိုနာမတျော၏ပါဝင်ပါသည်။ လက်ရှိ directory ကိုတစ်ခုတည်းကာလအားဖြင့်အတိအလင်းတစ်ဦးအချည်းနှီးသော directory ကိုနာမည်ဖြင့်လုံးလုံးလြားလြားညွှန်ပြ, ဒါမှမဟုတ်နိုင်ပါသည်။

command Exit ကိုအဆင့်အတန်း

တစ်ခုချင်းစီကို command ကိုအခြားအခွံပညတ်တော်တို့ကို၏အပြုအမူကိုသြဇာလွှမ်းမိုးနိုင်မအနေနဲ့ထွက်ပေါက် status ကိုရှိပါတယ်။ အဆိုပါပါရာဒိုင်းပျက်ကွက်, အမှား, ဒါမှမဟုတ်မိစ္ဆာအရိပ်အယောင်များအတွက်ပုံမှန်သို့မဟုတ်အောင်မြင်မှုနှင့် Non-သုညအဘို့အသုညနဲ့ command ကိုထွက်ပေါက်သောကွောငျ့ဖွစျသညျ။ တစ်ခုချင်းစီကို command ကိုများအတွက်ထိုလူစာမျက်နှာအမျိုးမျိုးသောထွက်ပေါက် codes တွေကိုနှင့်အဘယ်သို့ဆိုင်သူတို့ဆိုလိုညွှန်ပြသင့်ပါတယ်။ တစ်ဦးကွပ်မျက်ခံရ shell ကို function ကိုမအဖြစ်ထို့အပြင်အဆိုပါ builtin ပညတ်တော်တို့ကို, ထွက်ပေါက် codes တွေကိုပြန်သွားပါ။

ရှုပ်ထွေးသော Commands

ရှုပ်ထွေးသောပညတ်တော်တို့ကိုအတူတကွပိုကြီးတဲ့ရှုပ်ထွေး command ကိုဖန်တီးထိန်းချုပ်မှုအော်ပရေတာသို့မဟုတ်ယူထားတဲ့စကားနှင့်ရိုးရှင်းသောပညတ်တော်ပေါင်းစပ်ဖြစ်ကြသည်။ ပိုများသောယေဘုယျအားဖြင့်တစ်ဦး command ကိုအောက်ပါတို့မှတစ်ခုဖြစ်ပါသည်:

မဟုတ်ရင်ဖော်ပြထားမဟုတ်လျှင်, command တစ်ခု၏ထွက်ပေါက် status ကိုအမိန့်အားဖြင့်ကွပ်မျက်ခံရသည်လွန်ခဲ့သောရိုးရှင်းသော command ကို၏သောကွောငျ့ဖွစျသညျ။

ပိုက်လိုင်းများ

| တစ်ဦးကပိုက်လိုင်းထိန်းချုပ်မှုအော်ပရေတာများကကွဲကွာတဦးတည်းသို့မဟုတ်ထိုထက်ပိုပညတ်တော်တို့ကိုတစ် sequence ကိုဖြစ်ပါတယ်။ အားလုံးပေမယ့်နောက်ဆုံး command ကို၏စံ output ကိုလာမယ့် command ကိုရဲ့ standard input ကိုချိတ်ဆက်ထားခြင်းဖြစ်သည်။ ပြီးခဲ့သည့် command ကို၏စံ output ကိုပုံမှန်အတိုင်းသကဲ့သို့, shell ကိုထံမှအမွေဆက်ခံသည်။

ပိုက်လိုင်းများအတွက်ပုံစံဖြစ်ပါသည်:

[!] command1 [| command2 ... ]

command1 ၏စံ output ကို command2 ၏စံ input ကိုချိတ်ဆက်ဖြစ်ပါတယ်။ အဆိုပါစံ input ကို, စံ output ကို, သို့မဟုတ် command တစ်ခုနှစ်ခုလုံးက command ၏အစိတ်အပိုင်းတစ်ခုဖြစ်ကြောင်း redirection အော်ပရေတာများကသတ်မှတ်ထားသောဆို redirection ရှေ့တော်၌ထိုပိုက်လိုင်းအားဖြင့်တာဝန်ပေးအပ်ခံရဖို့စဉ်းစားသည်။

ပိုက်လိုင်းနောက်ခံ (နောကျပိုငျးတှငျဆှေးနှေး) တွင်မပါလျှင်, ရှိသမျှအဘို့အခွံစောင့်ဖြည့်စွက်ဖို့ပညတ်တော်မူ၏။

ယူထားတဲ့စကားလုံး အကယ်. ! ပိုက်လိုင်းအရင်အဦးနေရာမထားဘူး, ထွက်ပေါက် status ကိုပိုက်လိုင်းအတွက်သတ်မှတ်ထားသောနောက်ဆုံး command ကို၏ထွက်ပေါက် status ကိုဖြစ်ပါတယ်။ ဒီလိုမှမဟုတ်ရင်ထွက်ပေါက် status ကိုနောက်ဆုံးအမိန့်ပေး၏ထွက်ပေါက် status ကို၏ယုတ္တိမဟုတ်ပါ။ ပြီးခဲ့သည့် command ကိုပြန်သုညမဟုတ်ပါကသောထွက်ပေါက် status ကို 1, ၏, ပြီးခဲ့သည့် command ကိုသုညထက်ကြီးမြတ်ပြန်လာလျှင်, ထွက်ပေါက် status ကိုသုညဖြစ်ပါတယ်။

စံ input ကိုသို့မဟုတ် Standard output ကိုသို့မဟုတ်နှစ်ဦးစလုံး၏ပိုက်လိုင်းတာဝန်ကျရာ redirection မတိုင်မီရာအရပ်ကိုကြာသောကြောင့်, က redirection ပြုပြင်နိုင်ပါသည်။ ဥပမာ:

$ command1 2> & 1 | command2

command2 ၏စံ input ကိုမှ command1 ၏စံထုတ်လုပ်မှုနှင့်စံအမှားနှစ်မျိုးလုံးပေးပို့သည်။

တစ်ဦးက; သို့မဟုတ် Terminal ရှေ့ကိုဖြစ်ပေါ်စေသည် AND-OR-စာရင်း (လာမယ့်ဖော်ပြထား) ဆင့်ကဲကွပ်မျက်ခံရခံရဖို့; တစ် & ပြတ်တောင်းပြတ်တောင်းရှေ့များ၏အုပ်ချုပ်ရေးနှင့်-OR-စာရင်းကိုဖြစ်ပေါ်စေသည်။

(- ဒါပေမယ့်ပတ်ဝန်းကျင်အပေါ်ရှိပါတယ်ကိုမဆိုသက်ရောက်သုတ်ဖြစ်ပါတယ်အဲဒါကိုလက်ရှိ shell ကိုအတွက် ပေး. စီရင်ရသောအမှုတစ် shell ကို builtin ဖြစ်ပါသည်မဟုတ်လျှင်) အချို့သောအခြားခွံမတူဘဲပိုက်လိုင်းစီလုပ်ငန်းစဉ် invoking shell ကို၏ကလေးတစ်ဦးဖြစ်ပါတယ်သတိပြုပါ။

နောက်ခံသမိုင်းပညတ်တော်မူ၏ -

command တစ်ခုထိန်းချုပ်မှုအော်ပရေတာ ampersand (&) ကရပ်စဲလျှင်, shell ကို asynchronously ဆိုတာကအမိန့် ပေး. စီရင် - သည်, အခွံကိုနောက် command ကိုကွပ်မျက်မတိုင်မီ finish ကိုမှအမိန့်စောင့်ဆိုင်းမထားဘူး။

နောက်ခံအတွက် command ကို run ဘို့ပုံစံဖြစ်ပါသည်:

command1 & [command2 & ... ]

shell ကိုအပြန်အလှန်မပါလျှင်တစ်ဦးပြတ်တောင်းပြတ်တောင်း command ကိုရဲ့ standard input ကို / dev / null သတ်မှတ်

lists - ယေဘုယျအားဖြင့် Speaking

စာရင်းတစ်ခုသုညသို့မဟုတ်ထိုထက်ပိုပညတ်တော်တို့ကို NEWLINE, semicolon, ဒါမှမဟုတ် ampersands ခြားများနှင့်လုပ်နိုင်သောဤသုံးပါးဇာတ်ကောင်များ၏တဦးတည်းအားဖြင့်ရပ်စဲတဲ့ sequence ကိုဖြစ်ပါတယ်။ စာရင်းတစ်ခုထဲတွင် commands ကိုသူတို့ရေးထားလျက်ရှိ၏အမိန့်ထဲမှာကွပ်မျက်ခံရနေကြသည်။ command ကိုတစ်ဦး ampersand အားဖြင့်နောက်တော်သို့လိုက်လျှင်, shell ကို command ကိုစတင်သည်နှင့်ချက်ချင်းလာမယ့် command ကိုပေါ်သို့ဆက်လက်ဆောင်ရွက်; မဟုတ်ရင်သူကလာမယ့်တဦးတည်းမှဆက်လက်မလုပ်ဆောင်ခင်ရပ်ဆိုင်းပေးဖို့ command ကိုစောင့်။

short-တိုက်နယ်စာရင်းလုပ်ငန်းရှင်များ

`` && '' နှင့် `` || '' ဖြစ်ကြောင်းနှင့်-OR စာရင်းအော်ပရေတာ။ `` && '' ပထမဦးဆုံး command ကို ပေး. စီရင်သဖြင့်, ပထမဦးဆုံး command ကို၏ထွက်ပေါက် status ကိုသုညဖြစ်ပါတယ် iff ထို့နောက်ဒုတိယ command ကို ပေး. စီရင်။ `` || '' ဆင်တူဖြစ်တယ်, ဒါပေမဲ့ပထမဦးဆုံး command ကို၏ထွက်ပေါက် status ကို nonzero ဖြစ်ပါတယ် iff ဒုတိယ command ကို ပေး. စီရင်။ `` && '' နှင့် `` || '' နှစ်ဦးစလုံးတူညီသော priority ရှိသည်။

flow-ထိန်းချုပ်ရေး Construction - သည်မှန်လျှင်, အဘို့, စဉ်တွင်အမှု

အဆိုပါလျှင် command ကို၏ syntax ဖြစ်ပါတယ်

စာရင်းလျှင်
ထို့နောက်စာရင်း
[elif စာရင်း
ထို့နောက်] စာရင်းပြုစု ...
[အခြားစာရင်း]
fi

ယင်းအနေဖြင့် command ကို၏ syntax ဖြစ်ပါတယ်

စာရင်းအနေဖြင့်
စာရင်းပြုပါ
ပြီးပြီ

ပထမဦးဆုံးစာရင်း၏ထွက်ပေါက် status ကိုသုညစဉ်နှစ်ခုစာရင်းကိုအကြိမ်ကြိမ်ကွပ်မျက်ခံရနေကြသည်။ command ကိုအထိဆင်တူဖြစ်တယ်, ဒါပေမဲ့ပထမဦးဆုံးစာရင်း၏ထွက်ပေါက် status ကိုသုညအထိကပြန်လုပ်မှဖြစ်ပေါ်စေသည်ဖြစ်သောစဉ်၏အရပျ၌သည်အထိစကားလုံးရှိပါတယ်။

အဆိုပါအဘို့အမိန့်ပေး၏ syntax ဖြစ်ပါတယ်

စကားလုံးအတွက် variable ကိုများအတွက် ...
စာရင်းပြုပါ
ပြီးပြီ

အဆိုပါစကားများတိုးချဲ့နေကြသည်, အဲဒီနောက်စာရင်းကိုအလှည့်စီစကားလုံးမှသတ်မှတ် variable ကိုအတူထပ်တလဲလဲကွပ်မျက်ခံရခြင်းဖြစ်သည်။ မပြုသည်ကို '' `` { '' နှင့် ``} 'ဖြင့်အစားထိုးရမည်အကြောင်း

ထိုချိုး၏ syntax နှင့် command ကိုဆက်လက်ဖြစ်ပါသည်

[NUM] ကိုချိုးဖျက်
[NUM] ကိုဆက်လက်

break ကွင်းသို့မဟုတ်နေစဉ် NUM နားမှာအဆုံးသတ်။ Continue နားမှာကွင်းဆက်၏နောက်ကြားမှာနှင့်အတူဆက်လက်။ ဤရွေ့ကား builtin ပညတ်တော်တို့ကိုအဖြစ်အကောင်အထည်ဖော်လျက်ရှိသည်။

အမှုအမိန့်ပေး၏ syntax ဖြစ်ပါတယ်

အတွက်အမှုစကားလုံး
ပုံစံ) စာရင်း ;;
...
esac

အဆိုပါပုံစံအမှန်တကယ်တဦးတည်းသို့မဟုတ်ထိုထက်ပိုပုံစံများ (ရှဲလ်ပုံစံများနောက်ပိုင်းတွင်ဖော်ပြထားကြည့်ပါ), `` '' ဇာတ်ကောင်ဖြင့်ခွဲခြားနိုင်ပါတယ်။

Commands များကိုအတူတကွအုပ်စုခွဲခြင်း

commands ဖြစ်စေရေးသားခြင်းအားဖြင့်အုပ်စုဖွဲ့စေခြင်းငှါ

(စာရင်း)

သို့မဟုတ်

{စာရင်း;

ဤအမှု၏ပထမဦးဆုံးတစ်ဦး subshell အတွက်ပညတ်တော်တို့ကို ပေး. စီရင်။ တစ်ဦး (စာရင်း) သို့အုပ်စုဖွဲ့ Builtin ပညတ်တော်တို့ကိုလက်ရှိ shell ကိုအကျိုးသက်ရောက်စေမည်မဟုတ်။ ဒုတိယပုံစံဒါကြောင့်အနည်းငယ်ပိုပြီးထိရောက်ဖြစ်ပါတယ်အခြား shell ကိုချိတ်မထားဘူး။ အာဆီယံသည်ဤလမ်းကိုသူတို့တဦးတည်း program ကိုခဲ့ကြသည်သော်လည်းအဖြစ်သင်သည်သူတို့၏ output ကို redirect ခွင့်ပြုအတူတကွပညတ်တော်မူ၏:

{ဟဲလို printf; printf ကမ္ဘာကြီး \ n ";}> နှုတ်ဆက်ခြင်း

functions များ

တစ်ဦး function ကိုချက်နှင့်အဓိပ္ပါယ်များ၏ syntax ဖြစ်ပါတယ်

အမည်အား () command ကို

တစ်ဦးက function ကိုချက်နှင့်အဓိပ္ပါယ်တစ်ခုဟာ executable ကြေညာချက်ဖြစ်၏ ကွပ်မျက်ခံရသည့်အခါက function ကိုအမည်ရှိ name ကိုတပ်ဆင်ပြီးနှင့်သုညတစ်ခုထွက်ပေါက် status ကိုပြန်လည်ရောက်ရှိ။ အဆိုပါ command ကို '' ပုံမှန်အားဖြင့် `` { '' နှင့် ``} '' အကြားပူးတွဲစာရင်းတစ်ခုဖြစ်ပါသည်

Variables ကိုဒေသခံတစ်ဦးက command ကို အသုံးပြု. တစ် function ကိုမှဒေသခံဖြစ်ကြေငြာနိုင်ပါသည်။ ဒါက function ကို၏ပထမဦးဆုံးထုတ်ပြန်ကြေညာချက်အဖြစ်ပေါ်လာသငျ့သညျ, ထို syntax ဖြစ်ပါတယ်

ဒေသခံ [variable ကို | -] ...

ဒေသခံတစ်ဦး builtin command ကိုအဖြစ်အကောင်အထည်ဖော်နေသည်။

တစ်ဦး variable ကိုဒေသခံလုပ်သောအခါတဦးတည်းရှိလျှင်ကနဦးတန်ဖိုးနှင့်ပတ်ဝန်းကျင်နယ်ပယ်များတွင်နာမည်တူနှင့်အတူ variable ကိုကနေ export နှင့်ဖတ်ရန်အတွက်အလံအမွေ။ ဒီလိုမှမဟုတ်ရင်, ထို variable ကိုစပိုင်းတွင်အားမသတ်မှတ်ထားဖြစ်ပါတယ်။ f အတွင်းမှမဟုတ်ဘဲက x အမည်ရှိကမ္ဘာလုံးဆိုင်ရာ variable ကိုမှကြေညာ x သို့ဖြစ်လျှင်သင်သည် function ကိုဆခေါ်ဆိုရာ, f, လုပ်ဆောင်နိုင်ရန်ဖို့ variable ကို x ကိုဒေသခံစေလျှင်မူကား, ဆအတွင်းပိုင်းရာ၌ variable ကို x ကိုမှကိုးကားဟာ variable ကိုရည်ညွှန်းပါလိမ့်မယ်ဒါကြောင့်အဆိုပါခရုခွံ, ပြောင်းလဲနေသော SCOPE ကိုအသုံးပြုသည် ။

ဒေသခံလုပ်နိုင်ပါသည်ထက်သာအထူး parameter သည် `` ဖြစ်ပါတယ် - အခါ function ကိုပြန် function ကိုအတွင်းရှိ set ကို command ကိုမှတဆင့်ပြောင်းလဲသွားကြသည်ဒေသခံမဆို shell ကိုရှေးခယျြစရာ၎င်းတို့၏မူလတန်ဖိုးများကိုပြန်ခံရဖို့ '-' ' `` Making' '။

ပြန်လာ command ကို၏ syntax ဖြစ်ပါတယ်

ပြန်လာ [exitstatus

ဒါဟာလက်ရှိကွပ်မျက် function ကိုအဆုံးသတ်။ ပြန်သွားတဲ့ builtin command ကိုအဖြစ်အကောင်အထည်ဖော်နေသည်။

variable တွေကိုနှင့်န့်သတ်ချက်များ

အဆိုပါ shell ကို parameters တွေကိုအစုတခုထိန်းသိမ်းထားသည်။ နာမည်တစ်ခုအားဖြင့်ခေါ်လိုက်ပါမယ်တစ်ဦးက parameter သည်တစ်ဦး variable ကိုလို့ခေါ်ပါတယ်။ တက်စတင်သောအခါ, shell ကို shell ကို variable တွေကိုသို့အပေါငျးတို့သပတ်ဝန်းကျင် variable တွေကိုပြန်သွားလေ၏။ နယူး variable တွေကိုပုံစံကို အသုံးပြု. သတ်မှတ်နိုင်ပါသည်

name = value ကို

ဂဏန်းမဖွစျရပါပထမဦးဆုံးအရာ၏ - သုံးစွဲသူများကသတ်မှတ်ထား Variables ကို alphabet, NUMERIC နှင့်အလေးပေး၏တစ်ခုတည်းကိုသာပါဝင်သည်ဟုနာမည်တစ်ခုရှိရမည်။ အောက်တွင်ဖော်ပြထားသောကရှင်းပြသည်အဖြစ်တစ်ဦးက parameter သည်ကိုလည်းနံပါတ်သို့မဟုတ်အထူးဇာတ်ကောင်များကခေါ်လိုက်ပါမယ်နိုင်ပါသည်။

positional န့်သတ်ချက်များ

အပြုသဘော parameter သည်နံပါတ် (ဎ> 0 င်) ကခေါ်လိုက်ပါမယ်တဲ့ parameter သည်ဖြစ်ပါတယ်။ အဆိုပါ shell ကို shell ကိုဇာတ်ညွှန်း၏နာမတော်ကိုလိုက်နာကြောင်းယင်း၏ command line ကိုငြင်းခုံ၏တန်ဖိုးများအစပိုင်းတွင်ဤအသတ်မှတ်။ အဆိုပါ set ကို (1) builtin လည်းသူတို့ကို set သို့မဟုတ် reset ဖို့အသုံးပြုနိုင်ပါသည်။

အထူးန့်သတ်ချက်များ

အထူး parameter သည်အောက်ပါအထူးအက္ခရာများ၏တဦးတည်းအားဖြင့်ခေါ်လိုက်ပါမယ်တဲ့ parameter သည်ဖြစ်ပါတယ်။ သို့သော်လည်း parameter ၏တန်ဖိုးကိုနောက်က၎င်း၏ဇာတ်ကောင်ဖို့စာရင်းဖြစ်ပါတယ်။

*

တဦးတည်းအနေဖြင့်စတင်, အ positional parameters တွေကိုမှတိုးချဲ့။ ချဲ့ထွင်တစ်ဦးကို double-ကိုးကားအတွင်းဖြစ်ပေါ်သည့်အခါ string ကို က IFS variable ကို၏ပထမဦးဆုံးဇာတ်ကောင်အသုံးပြုပုံတစ်ခုသို့မဟုတ် <အာကာသ> အားဖြင့်ကွဲကွာတစ်ခုချင်းစီကို parameter သည်၏တန်ဖိုးနှင့်အတူတစ်ခုတည်းလယ်ချဲ့ထွင် IFS အားမသတ်မှတ်ထားပါ။

@

တဦးတည်းအနေဖြင့်စတင်, အ positional parameters တွေကိုမှတိုးချဲ့။ ချဲ့ထွင်ကို double-ကိုးကားအတွင်းဖြစ်ပေါ်သည့်အခါတစ်ဦးချင်းစီ positional parameter သည်သီးခြားအငြင်းအခုံအဖြစ်ချဲ့ထွင်။ အဘယ်သူမျှမ positional parameters များကိုရှိပါတယ်ရှိလျှင်, @ များ၏တိုးချဲ့ @ ကို double-ကိုးကားပင်အခါ, သုညအငြင်းပွားမှုများကိုထုတ်ပေးပါတယ်။ $ 1 `` မှာ abc 'ဖြစ်ပါတယ်' နှင့် $ 2 `` def ghi ဖြစ်ပါတယ် '' ပါလျှင်ဒီအခြေခံအားဖြင့်ဘာကိုဆိုလိုသလဲဆိုတာဥပမာ, တစ်ခုဖြစ်သည် '' ထို့နောက် QQ $ @ နှစ်ခုငြင်းခုံရန်ချဲ့ထွင်:

abc def ghi

#

positional parameters တွေကိုများ၏အရေအတွက်တိုးချဲ့။

?

လတ်တလောပိုက်လိုင်းများ၏ထွက်ပေါက် status ကိုမှတိုးချဲ့။

- (Hyphen ။ )

အဆိုပါ set ကို builtin command ကိုအသုံးပြုပုံသို့မဟုတ်လုံးလုံးလြားလြား shell ကိုအသုံးပြုပုံ invocation အပေါ်သတ်မှတ်ထားသောအဖြစ်လက်ရှိ option ကိုအလံ (က string ကိုသို့ concatenated ဟာ Single-စာတစ်စောင် option ကိုအမည်များ) ကိုတိုးချဲ့။

$

အဆိုပါ invoked shell ကို၏လုပ်ငန်းစဉ် ID ကိုမှတိုးချဲ့။ တစ်ဦးက subshell င်း၏မိဘအဖြစ် $ ၏တူညီသောတန်ဖိုးကိုဆက်လက်ထိန်းသိမ်းထားသည်။

!

လက်ရှိ shell ကိုထံမှကွပ်မျက်ခံရလတ်တလောနောက်ခံ command ကို၏လုပ်ငန်းစဉ် ID ကိုမှတိုးချဲ့။ ပိုက်လိုင်းများအတွက်လုပ်ငန်းစဉ် ID ကိုပိုက်လိုင်းအတွက်နောက်ဆုံး command ကို၏သောကွောငျ့ဖွစျသညျ။

0 (သုည) ။

shell ကိုသို့မဟုတ် shell script ၏နာမတော်ကိုတိုးချဲ့။

သမ်မာကမျြး expansion

ဤအပိုဒ်ကိုထည့်စကားလုံးများကိုအပေါ်ဖျော်ဖြေသောအမျိုးမျိုးသောချဲ့ထွင်ဖော်ပြသည်။ နောက်ပိုင်းမှာကရှင်းပြသည်အဖြစ်အားလုံးချဲ့ထွင်သည်စကားလုံးအပေါ်ဖျော်ဖြေကြသည်မဟုတ်။

tilde ချဲ့ထွင်, parameter သည်ချဲ့ထွင်, command ကိုအစားထိုး, ဂဏန်းသင်္ချာချဲ့ထွင်ခြင်း, တစ်ခုတည်းစကားလုံးအတွင်းဖြစ်ပေါ်ကြောင်းကိုးကားဖယ်ရှားတစ်ခုတည်းလယ်တိုးချဲ့။ ဒါဟာတစ်ခုတည်းသောစကားလုံးမှသည်မျိုးစုံလယ်ကွင်းဖန်တီးနိုင်သာကိုလယ်ပိုင်းခြားသို့မဟုတ်လမ်းကြောင်းအမည်ကိုတိုးချဲ့ဖြစ်ပါတယ်။ ဤနည်းဥပဒေဖို့တစ်ခုတည်းခြွင်းချက်အထက်တွင်ဖော်ပြထားခဲ့ပါတယ်အဖြစ်ကို double-ကိုးကားအတွင်းအထူး parameter သည် @ များ၏တိုးချဲ့ဖြစ်ပါတယ်။

စကားလုံးချဲ့ထွင်၏အမိန့်သည်:

  1. tilde ချဲ့, Parameter ချဲ့, စစ်ဌာနချုပ်လူစားထိုး, ဂဏန်းသင်္ချာချဲ့ (ဤသူအပေါင်းတို့ကိုတစ်ချိန်တည်းမှာဖြစ်ပေါ်) ။
  2. အဆိုပါ IFS variable ကို null ဖြစ်ပါသည်မဟုတ်လျှင် field Split ခြေလှမ်း (1) ကနေထုတ်လုပ်လိုက်တဲ့လယ်ကွင်းပေါ်မှာဖျော်ဖြေနေသည်။
  3. လမ်းကြောင်းအမည်ကိုချဲ့ (set ကိုမဟုတ်လျှင် - f အကျိုးသက်ရောက်မှု၌ရှိ၏) ။
  4. ဖယ်ရှားရေး Quote ။

အဆိုပါ $ ဇာတ်ကောင် parameter သည်တိုးချဲ့ရေး, command ကိုအစားထိုးခြင်းသို့မဟုတ်ဂဏန်းသင်္ချာအကဲဖြတ်မိတ်ဆက်အသုံးပြုသည်။

tilde ချဲ့ (အသုံးပြုသူတစ်ဦး & # 39 အစား; s ကို Home Directory ကို)

တစ်ဦး unquoted tilde ဇာတ်ကောင် (~) နှင့်အတူစတင်တစ်ဦးကစကားလုံး tilde တိုးချဲ့ချထားနေသည်။ တစ်မျဉ်းစောင်း (/) သို့မဟုတ်စကားလုံးများ၏အဆုံးအထိအားလုံးဇာတ်ကောင်တစ်ဦးအသုံးပြုသူအမည်အဖြစ်ကုသနေကြသည်နှင့်အသုံးပြုသူရဲ့ Home Directory ကိုဖြင့်အစားထိုးနေကြပါတယ်။ username ကို (~ / foobar ကဲ့သို့) ပျောက်နေလျှင် tilde အဆိုပါမူလစာမျက်နှာ variable ကို (လက်ရှိအသုံးပြုသူရဲ့ Home Directory ကို) ၏တန်ဖိုးကိုဖြင့်အစားထိုးသည်။

parameter ချဲ့

အောက်မှာဖေါ်ပြတဲ့အတိုင်း parameter သည်တိုးချဲ့ဘို့ပုံစံဖြစ်ပါသည်:

စကားရပ်ကိုက်ညီခြင်းသည်အထိအားလုံးဇာတ်ကောင်ပါဝင်ပါသည် ``} '' ဆို ``} '' တစ်ဦးဘယ်ဘက်မျဉ်းစောင်းများကတစ်ခုသို့မဟုတ်ကိုးကား string ကိုအတွင်းထွက်ပြေးလွတ်မြောက်နှင့် embedded ဂဏန်းသင်္ချာချဲ့ထွင်, command ကိုအစားထိုးခြင်း, variable ကိုချဲ့ထွင်အတွက်ဇာတ်ကောင်, ထိုအဆုံးအဖြတ်အတွက်လေ့လာကြသည်မဟုတ်ဘယ်မှာ ကိုက်ညီခြင်း ``} ''

parameter သည်တိုးချဲ့ဘို့အရိုးရှင်းဆုံးပုံစံဖြစ်ပါသည်:

parameter သည်၏တန်ဖိုး, မဆိုမိလျှင်, အစားထိုးနေသည်။

အဆိုပါ parameter သည်အမည်သို့မဟုတ်သင်္ကေတတစ်ခုထက် ပို. ဂဏန်းသို့မဟုတ်တဲ့အခါမှာ parameter သည်နာမတော်ကိုအမှီ ပြု. ၏တစ်စိတ်တစ်ပိုင်းအဖြစ်အဓိပ္ပာယ်ကောက်ယူနိုင်မယ့်ဇာတ်ကောင်များကနောက်တော်သို့လိုက်သည်ကိုအတူ positional parameters တွေကို မှလွဲ. optional ကိုသောဆီကိုဦးတည်အတွက်ပူးတွဲနိုင်ပါသည်။ တစ်ဦး parameter သည်တိုးချဲ့ရေးကို double-ကိုးကားအတွင်း၌ဖြစ်ပေါ်လျှင်:

  1. လမ်းကြောင်းအမည်ကိုတိုးချဲ့ချဲ့ထွင်၏ရလဒ်များကိုအပေါ်ဖျော်ဖြေမပေးပါ။
  2. field ပိုင်းခြား @ ၏ချွင်းချက်နှင့်တကွ, ချဲ့ထွင်မှု၏ရလဒ်များအပေါ်ဖျော်ဖြေမပေးပါ။

ထို့အပြင်တစ်ဦး parameter သည်တိုးချဲ့အောက်ပါပုံစံများများထဲမှ အသုံးပြု. ပြုပြင်နိုင်ပါသည်။

ပုံမှန်တန်ဖိုးများကိုသုံးပါ။ parameter သည်အားမသတ်မှတ်ထားသို့မဟုတ်တရားမဝင်သောသည်ဆိုပါက, စကားလုံးများ၏တိုးချဲ့အစားထိုးလျက်ရှိ၏ မဟုတ်ရင်, parameter သည်၏တန်ဖိုးအစားထိုးနေသည်။

ပုံမှန်တန်ဖိုးများ assign ။ parameter သည်အားမသတ်မှတ်ထားသို့မဟုတ်တရားမဝင်သောသည်ဆိုပါက, စကားလုံးများ၏တိုးချဲ့ parameter သည်မှတာဝန်ပေးအပ်ထားပါသည်။ အားလုံးကိစ္စများတွင် parameter သည်၏နောက်ဆုံးတန်ဖိုးကိုအစားထိုးနေသည်။ သာ variable တွေကိုမဟုတျဘဲ positional parameters တွေကိုသို့မဟုတ်အထူး parameters တွေကို, ဒီလမ်းအတွက်တာဝန်ပေးနိုင်ပါတယ်။

တရားမဝင်သောသို့မဟုတ်မသတ်မှတ်ပါလျှင်မှားယွင်းနေသည်ဖော်ပြသည်။ parameter သည်အားမသတ်မှတ်ထားသို့မဟုတ်တရားမဝင်သောသည်ဆိုပါက, စကားလုံးများ၏တိုးချဲ့မှု (သို့မဟုတ်မက်ဆေ့ခ်ျကိုစကားလုံးချန်လှပ်လျှင်ကြောင့်အားမသတ်မှတ်ထားညွှန်ပြ) တစ်ဦး nonzero ထွက်ပေါက် status ကိုအတူစံအမှားနှင့် shell ကိုထွက်ပေါက်မှရေးသားခဲ့သူဖြစ်ပါတယ်။ ဒီလိုမှမဟုတ်ရင် parameter သည်၏တန်ဖိုးအစားထိုးနေသည်။ တစ်ဦးအပြန်အလှန် shell ကိုထွက်ပေါက်မလိုပေ။

အခြားရွေးချယ်စရာ Value ကိုသုံးပါ။ parameter သည်အားမသတ်မှတ်ထားသို့မဟုတ်တရားမဝင်သော, null သည်ဆိုပါကအစားထိုးလျက်ရှိ၏ မဟုတ်ရင်, စကားလုံးများ၏တိုးချဲ့အစားထိုးနေသည်။

ယခင်ကပြ parameter သည်ကြက်၌, အားမသတ်မှတ်ထားသို့မဟုတ်တရားမဝင်သောသော parameter သည်များအတွက်စမ်းသပ်မှုအတွက် format နဲ့ရလဒ်များကိုအတွက်အူမကြီး၏အသုံးပြုမှုကို; သာအားမသတ်မှတ်ထားသော parameter သည်များအတွက်စမ်းသပ်မှုများတွင်အူမကြီးရလဒ်များပျက်ကွက်။

string တာရှည်။ parameter သည်၏တန်ဖိုး၏ဇာတ်ကောင်အတွက်အရှည်။

parameter သည်တိုးချဲ့၏အောက်ပါလေးမျိုးပေါင်း substring အပြောင်းအလဲနဲ့အဘို့သည်။ တစ်ဦးချင်းစီကိစ္စတွင်ခုနှစ်, အစားကိုပုံမှန်စကားရပ်သင်္ကေတထက်သင်္ကေတကိုက်ညီပုံစံ (ရှဲလ်ပုံစံများကိုကြည့်ပါ) သည်, ပုံစံများအကဲဖြတ်ဖို့အသုံးပြုသည်။ parameter သည် * သို့မဟုတ် @ ဖြစ်ပါတယ်လျှင်, ချဲ့ထွင်မှု၏ရလဒ်မသတ်မှတ်ထားသောဖြစ်ပါတယ်။ အဆိုပါမသန်စွမ်းပဲအတွင်းဇာတ်ကောင်ကိုကိုးကားပြီးဒီအကျိုးသက်ရောက်မှုရှိပါတယ်သော်လည်းကို double-ကိုးကားအတွက်အပြည့်အဝ parameter သည်တိုးချဲ့ string ကို Enclosing, ကိုးကားခံရဖို့ပုံစံဇာတ်ကောင်များ၏အောက်ပါလေးမျိုးပေါင်းဖြစ်ပေါ်စေပါဘူး။

အသေးဆုံးနောက်ဆက်စံနမူနာဖယ်ရှားပါ။ အဆိုပါစကားလုံးပုံစံထုတ်လုပ်ရန်တိုးချဲ့ခြင်းဖြစ်သည်။ အဆိုပါ parameter သည်တိုးချဲ့ပြီးတော့ဖျက်ပစ်သည့်ပုံစံအားဖြင့်ကိုက်ညီသည့်နောက်ဆက်၏အသေးဆုံးသောအဘို့ကိုအတူ parameter သည်အတွက်ရလဒ်များ။

အကြီးဆုံးမြို့နောက်ဆက်စံနမူနာဖယ်ရှားပါ။ အဆိုပါစကားလုံးပုံစံထုတ်လုပ်ရန်တိုးချဲ့ခြင်းဖြစ်သည်။ အဆိုပါ parameter သည်တိုးချဲ့ပြီးတော့ဖျက်ပစ်သည့်ပုံစံအားဖြင့်ကိုက်ညီသည့်နောက်ဆက်၏အကြီးဆုံးသောအဘို့ကိုအတူ parameter သည်အတွက်ရလဒ်များ။

အသေးဆုံးရှေ့စာလုံးစံနမူနာဖယ်ရှားပါ။ အဆိုပါစကားလုံးပုံစံထုတ်လုပ်ရန်တိုးချဲ့ခြင်းဖြစ်သည်။ အဆိုပါ parameter သည်တိုးချဲ့ပြီးတော့ဖျက်ပစ်သည့်ပုံစံအားဖြင့်ကိုက်ညီသည့်ရှေ့ဆက်၏အသေးဆုံးသောအဘို့ကိုအတူ parameter သည်အတွက်ရလဒ်များ။

အကြီးဆုံးမြို့ရှေ့စာလုံးစံနမူနာဖယ်ရှားပါ။ အဆိုပါစကားလုံးပုံစံထုတ်လုပ်ရန်တိုးချဲ့ခြင်းဖြစ်သည်။ အဆိုပါ parameter သည်တိုးချဲ့ပြီးတော့ဖျက်ပစ်သည့်ပုံစံအားဖြင့်ကိုက်ညီသည့်ရှေ့ဆက်၏အကြီးဆုံးသောအဘို့ကိုအတူ parameter သည်အတွက်ရလဒ်များ။

command လူစားထိုး

command အစားထိုး command တစ်ခု၏ output က command name ကိုကိုယ်နှိုက်၏အရပျ၌အစားထိုးခံရဖို့ခွင့်ပြုပါတယ်။ အောက်မှာဖေါ်ပြတဲ့အတိုင်း command ကိုပူးတွဲသောအခါစစ်ဌာနချုပ်အစားထိုးဖြစ်ပေါ်:

$ (command ကို)

: သို့မဟုတ်ဖိုး `` '' version ကိုကွန်ပျူတာ '' backquoted

`command`

အဆိုပါ shell ကို၎င်းအစားထိုးရဲ့အဆုံးမှာတဦးတည်းသို့မဟုတ်ထိုထက်ပို s ကို၏ပာဖယ်ရှားခြင်း, တစ်ဦး subshell ပတ်ဝန်းကျင်တွင် command ကိုကွပ်မျက်ခြင်းနှင့်အမိန့်ရဲ့ standard output ကိုအတူ command ကိုအစားထိုးအစားထိုးခြင်းအားဖြင့် command ကိုအစားထိုးချဲ့ထွင်။ (က output ၏အဆုံးမပယ်ရှားခင် s ကိုနှစ်မြှုပ်ထားသော; သို့သော်လယ်ကိုပိုင်းခြားအတွင်းမှာသူတို့ IFS ၏တန်ဖိုးအပေါ် မူတည်. နှင့်အကျိုးသက်ရောက်မှု၌တည်ရှိ၏ကိုးကား, <အာကာသ> s ကိုဘာသာပြန်ဆိုနိုင်ပါသည်။ )

ဂဏန်းသင်္ချာချဲ့

ဂဏန်းသင်္ချာချဲ့ထွင်ထားတဲ့ဂဏန်းသင်္ချာစကားရပ်အကဲဖြတ်နှင့်၎င်း၏တန်ဖိုးကိုအစားများအတွက်ယန္တရားပေးပါသည်။ အောက်မှာဖေါ်ပြတဲ့အတိုင်းဂဏန်းသင်္ချာချဲ့ထွင်ဘို့ပုံစံဖြစ်ပါသည်:

$ ((စကားရပ်))

ဒါကြောင့်ကို double-ကိုးကားဖြစ်လျှင်အဖြစ်ဟူသောအသုံးအနှုနျးဟူသောအသုံးအနှုနျးအတှငျးရှိတစ်ဦးကို double-ကိုးကားအထူးကုသမပေးကြောင်း မှလွဲ. ကုသနေပါတယ်။ အဆိုပါ shell ကို parameter သည်တိုးချဲ့ရေး, command ကိုအစားထိုးခြင်း, ကိုးကားဖယ်ရှားရေးတို့အတွက်ဟူသောအသုံးအနှုနျးအားလုံးကိုတိုကင်ချဲ့ထွင်။

တစ်ဂဏန်းသင်္ချာစကားရပ်နှင့်စကားရပ်၏တန်ဖိုး substitutes အဖြစ်ထို့နောက် shell ကိုရယူထားသောဒီ။

White က Space ကို Split (ကွင်းဆင်း Split)

parameter သည်တိုးချဲ့ရေး, command ကိုအစားထိုးခြင်း, ဂဏန်းသင်္ချာချဲ့ထွင်ပြီးနောက် shell ကိုချဲ့ထွင်ခြင်းနှင့်အစားထိုးလယ်ကိုပိုင်းခြားဘို့ကို double-ကိုးကားအတွက်ပေါ်ပေါက်မနှင့်မျိုးစုံလယ်ကွင်း၏ရလဒ်များကိုဖြစ်ပေါ်နိုင်ပါတယ်စိစစ်သည်။

တစ်ဦးကိုအနားသတ်မျဉ်းအဖြစ် shell ကိုရယူထားသောအဆိုပါ IFS တစ်ခုချင်းစီဇာတ်ကောင်နှင့်လယ်ယာသို့ parameter သည်တိုးချဲ့ရေးနှင့် command ကိုအစားထိုး၏ရလဒ်များကိုခွဲထွက်ဖို့ကိုအနားသတ်မျဉ်းကိုအသုံးပြုပါ။

လမ်းကြောင်းအမည်ကိုချဲ့ (အမည်မျိုးဆက်ကျောင်းသားများ File)

f အလံစကားလုံးပိုင်းခြားပြီးပြည့်စုံပင်ဖြစ်သည်ပြီးနောက်ဖိုင် name ကိုမျိုးဆက်ဖျော်ဖြေသည်သတ်မှတ် - ထိုမဟုတ်လျှင်။ တစ်ခုချင်းစီကိုစကားလုံးမျဉ်းစောင်းများကကွဲကွာပုံစံများ, တစ်စီးရီးအဖြစ်ရှုမြင်သည်။ ချဲ့ထွင်မှု၏ဖြစ်စဉ်ကိုအဘယ်သူ၏အမည်များကိုသတ်မှတ်ထားသောပုံစံနှင့်လိုက်ဖက်သောအ string ကိုအတူတစ်ဦးချင်းစီပုံစံအစားထိုးကဖွဲ့စည်းနိုင်ပါတယ်အားလုံးကိုဖိုင်တွေများ၏အမည်များနှင့်အတူစကားလုံးအစားထိုးထားသည်။ ဒီအပေါ်နှစ်ခုကန့်သတ်ရှိပါတယ်: ပထမဦးဆုံးတစ်ဦးပုံစံပုံစံ၏ပထမဦးဆုံးဇာတ်ကောင်တစ်ဦးကာလဖြစ်ပါသည်မဟုတ်လျှင်တစ်ပုံစံတစ်ခုကာလနဲ့စတင်ပြီးတစ်ဦး string ကိုမကိုက်ညီနိုငျသညျ, တစ်ဦးတစ်မျဉ်းစောင်း် string ကိုနှင့်ဒုတိယမကိုက်ညီနိုင်ပါတယ်။ နောက်တစ်နေ့အပိုင်းလမ်းကြောင်းအမည်ကိုတိုးချဲ့ခြင်းနှင့်အမှု (1) command ကိုနှစ်ဦးစလုံးအတွက်အသုံးပြုသည့်ပုံစံများဖော်ပြသည်။

shell ပုံစံများ

တစ်ဦးကပုံစံသူတို့ကိုယ်သူတို့နှင့်ကိုက်ညီသည့်သာမန်ဇာတ်ကောင်, နှင့် Meta-ဇာတ်ကောင်ပါဝင်ပါသည်။ အဆိုပါ Meta-ဇာတ်ကောင်သူတို့ကိုးကားလျှင်အဲဒီဇာတ်ကောင်ဟာသူတို့ရဲ့အထူးအဓိပ္ပါယ်များကိုဆုံးရှုံး ''? ' `` *' '' `` '! `` ဖြစ်ကြောင်း' 'နှင့် `` [' ။ command ကိုသို့မဟုတ် variable ကိုအစားထိုးဖျော်ဖြေနေသည်နှင့်ဒေါ်လာစျေးနိမိတ်လက္ခဏာသို့မဟုတ်ပြန်ကိုးကားကိုးကားနှစ်ဆကြသည်မဟုတ်သောအခါ, variable ကိုပါသို့မဟုတ် command ကို၏ output ၏တန်ဖိုးသည်ဤဇာတ်ကောင်များအတွက် scan ဖတ်နေပါတယ်သူတို့ Meta-ဇာတ်ကောင်သို့လှည့်နေကြသည်။

တစ်ခုကခရေပွင့ ( `` * '') အက္ခရာမဆို string ကိုတိုက်စစ်ပါတယ်။ တစ်ဦးကမေးခွန်းတစ်ခုကိုအမှတ်အသားမဆိုတစ်ခုတည်းဇာတ်ကောင်နှင့်လိုက်ဖက်။ တစ်ဦးကလက်ဝဲ bracket က ( ' `` [') တစ်ဦးဇာတ်ကောင်လူတန်းစားမိတ်ဆက်။ ဇာတ်ကောင်လူတန်းစားတစ်ဦး ( ``] '') ကညွှန်ပြနေသည်၏အဆုံးဟာ ``] လျှင် '' ပျောက်နေထို့နောက် `` [ 'မဟုတ်ဘဲတစ်ဦးဇာတ်ကောင်လူတန်းစားမိတ်ဆက်ထက်' 'တစ်ဦး `` [ကိုက်ညီ' '။ တစ်ဦးကဇာတ်ကောင်လူတန်းစားဟာစတုရန်းကွင်းခတ်အကြားဇာတ်ကောင်မဆိုကိုက်ညီ။ ဇာတ်ကောင်များ၏အကွာအဝေးတစ်အနုတ်လက္ခဏာသက်သေကို အသုံးပြု. သတ်မှတ်ထားသောနိုင်ပါသည်။ အဆိုပါဇာတ်ကောင်လူတန်းစားတစ်ရပ်အာမေဍိတ်အမှတ်ဇာတ်ကောင်လူတန်းစား၏ပထမဦးဆုံးဇာတ်ကောင်အောင်နေဖြင့်ပြည့်စုံလိမ့်မည်။

တစ်ဦး ``] '' ထည့်သွင်းရန် '' ( 'ဆိုလျှင်တစ်ဦးဇာတ်ကောင်လူတန်းစားအတွက်က `` ပြီးနောက်!) စာရင်းဝင်ပထမဦးဆုံးဇာတ်ကောင်စေ' '။ တစ်အနုတ်လက္ခဏာသက်သေထည့်သွင်းရန်ကပထမဦးဆုံးသို့မဟုတ်နောက်ဆုံးဇာတ်ကောင်စာရင်းလုပ်

Builtins

ဤအပိုင်းကိုသူတို့သီးခြားဖြစ်စဉ်ကိုအားဖွငျ့ဖျြောရနိုင်မှာမဟုတ်ဘူးအချို့စစ်ဆင်ရေးလုပ်ဆောင်ဖို့လိုအပ်ပါတယ်ဘာဖြစ်လို့လဲဆိုတော့ builtin သော builtin command များကိုစာရင်းပြုစု။ ဤအဖို့အပြင်, ထိရောက်မှုတို့အတွက် builtin စေခြင်းငှါအခြား command တွေ (ဥပမာရှိပါတယ် ပဲ့တင်သံ 1) ။

:

တစ်ဦး 0 င် (မှန်) ထွက်ပေါက်တန်ဖိုးကို return ပွနျသောတရားမဝင်သော command ကို။

ဖိုင်

သတ်မှတ်ထားသောဖိုင်ထဲမှာပညတ်တော် shell ကိုဖတ်ခြင်းနှင့်ကွပ်မျက်ခံရနေကြသည်။

alias ကို [နာမကိုအမှီ [= string ကို ... ]]

နာမကိုအမှီ = string ကိုသတ်မှတ်ထားသောလျှင်, shell ကိုဖွင့်နာမကိုအမှီသတ်မှတ်ထားသောလျှင်, alias ကိုနာမတျော၏တနျဖိုးပုံနှိပ်ဖြစ်ပါတယ်တန်ဖိုးကို string ကိုအတူ alias ကိုနာမတျောကိုသတ်မှတ်ပါတယ်။ အဘယ်သူမျှမငြင်းခုံနှင့်တကွ, alias ကို builtin (unalias ကိုကြည့်ပါ) အားလုံးသတ်မှတ်နာမည်များ၏အမည်များနှင့်တန်ဖိုးများကိုရိုက်ထုတ်

BG [အလုပ်အကိုင်အ] ...

(အဘယ်သူမျှမအလုပ်အကိုင်များပေးထားလျှင်သို့မဟုတ်လက်ရှိအလုပ်) ကိုနောက်ခံသတ်မှတ်ထားသောအလုပ်အကိုင်များ Continue ။

command ကို command ကို arg ...

သတ်မှတ်ထားသော builtin command ကို execute ။ (သင်တစ်ဦး builtin command ကိုအဖြစ်အမည်တူနှင့်အတူတစ် shell ကို function ကိုရှိတဲ့အခါဒီအသုံးဝင်သည်။ )

cd [directory ကို]

CDPATH များအတွက် entry ကိုပု cd command ကို၏ပတ်ဝန်းကျင်ထဲမှာပေါ်လာလိမ့်မယ်ဒါမှမဟုတ် shell ကို variable ကို CDPATH သတ်မှတ်နှင့် directory ကိုနာမတော်မျဉ်းစောင်းနဲ့စတင်မထားဘူး, ထို့နောက် CDPATH အတွက်စာရင်း directory များကိုရှာဖွေပါလိမ့်မည်ဆိုပါကသတ်မှတ်ထားသော directory ကို (default အနေနဲ့ $ HOME) ကို Switch သတ်မှတ်ထားသော directory ကိုပါ။ CDPATH ၏ပုံစံသည် cd command ကိုဒီအသုံးပြုသူပေးသောနာမတော်ကိုအမှီ ပြု. အနေဖြင့်ကွဲပြားခြားနားသည်ဆိုပါကအမှန်တကယ်ပြောင်းလဲသော directory ကို၏အမည်ကိုအထဲက print ထုတ်ပါလိမ့်မယ်တစ်ဦးအပြန်အလှန် shell ကိုခုနှစ်တွင် PATH ၏အဖြစ်အတူတူပင်ဖြစ်ပါသည်။ ဤ CDPATH ယန္တရားအသုံးပြုခဲ့သည်ဘာလို့လဲဆိုတော့တစ်ခုသို့မဟုတ်သင်္ကေတ link ကိုကူးကြောင့်လည်းကောင်းကွဲပြားခြားနားနိုင်ပါသည်။

eval string ကို ...

နေရာများနှင့်အတူအပေါငျးတို့သအငြင်းပွားမှုများ Concatenate ။ ထိုအခါ command ကို re-ခွဲခြားစိတ်ဖြာမှုနှင့်စီမံထားသည်။

အမှုဆောင်အရာရှိ [command ကို arg ... ]

command ကိုချန်လှပ်ဖြစ်ပါတယ်ဘဲနေလျှင်, shell ကိုလုပ်ငန်းစဉ် (တစ်ဦးကိုမှန်ကန်အစီအစဉ်မ builtin shell ကိုသို့မဟုတ် function ကိုသူဖြစ်ရမည်အရာ) ကိုသတ်မှတ်ထားသော program နဲ့အစားထိုးဖြစ်ပါတယ်။ အခါအမှုဆောင်အရာရှိ command ကိုချောကိုသူတို့ပြု ပြင်. ကြသည်မဟုတ်နိုင်အောင်အမှုဆောင်အရာရှိ command ကိုပေါ်မဆိုပြန်လည်လမ်းညွှန်မှု, အမြဲတမ်းအဖြစ်မှတ်သားနေကြသည်။

ထွက်ပေါက် [exitstatus]

shell ကို process ကိုရပ်ဆိုင်း။ exitstatus ပေးထားလျှင်ထိုသို့ shell ကို၏ထွက်ပေါက် status ကိုအဖြစ်အသုံးပြုလျက်ရှိ၏ မဟုတ်ရင်ရှေ့ command ကို၏ထွက်ပေါက် status ကိုအသုံးပြုသည်။

ပို့ကုန်အမည် ...

ပို့ကုန် -p

သူတို့နောက်ဆက်တွဲပညတ်တော်တို့ကိုများ၏ပတ်ဝန်းကျင်တွင်ပေါ်လာပါလိမ့်မယ်ဒါကြောင့်သတ်မှတ်ထားသောအမည်များကိုတင်ပို့နေကြသည်။ ကို un-တင်ပို့နေတဲ့ variable ကိုရန်တစ်ခုတည်းသောနည်းလမ်းကမသတ်မှတ်ပါရန်ဖြစ်ပါသည်။ အဆိုပါ shell ကိုတစ်ဦး variable ကို၏တန်ဖိုးကစာအရေးအသားအားဖြင့်တင်ပို့နေသည်တစ်ချိန်တည်းမှာသတ်မှတ်ထားခံရဖို့ခွင့်ပြု

ပို့ကုန်အမည်ဖြင့် = value ကို

အဘယ်သူမျှမငြင်းခုံနှင့်အတူပို့ကုန် command ကိုအားလုံးတင်ပို့ variable တွေကိုများ၏အမည်များစာရင်းပြုလုပ်ထားသည်။ အတူ - p option ကို output ကို Non-အပြန်အလှန်အသုံးပြုမှုများအတွက်သင့်လျော်ကို format ပါလိမ့်မည်သတ်မှတ်ထားသော။

FC [- အီးအယ်ဒီတာ] [ပထမဆုံး [နောက်ဆုံး]]

FC -l [- ရော်ဘာ] [ပထမဆုံး [နောက်ဆုံး]]

FC -s [အသစ်များကို = ဟောင်း] [ပထမဦးဆုံး]

, စာရင်းများ, ဒါမှမဟုတ်တည်းဖြတ်နှင့် re-executes builtin အဆိုပါ FC ယခင်ကတစ်ဦးအပြန်အလှန် shell ကိုမှဝင်ကြ၏ပညတ်တော်မူ၏။

-e အယ်ဒီတာ

ပညတ်တော်တို့ကိုတည်းဖြတ်ရန်အယ်ဒီတာခြင်းဖြင့်အမည်ရှိအယ်ဒီတာကိုသုံးပါ။ အဆိုပါအယ်ဒီတာ string ကို, အ PATH variable ကိုမှတဆင့်ရှာဖွေဘာသာရပ် command တစ်ခုနာမည်ဖြစ်ပါတယ်။ အီးသတ်မှတ်ထားသောမဟုတ်ပါ - ထို FCEDIT variable ကိုအတွက်တန်ဖိုးတဲ့အခါက default အဖြစ်အသုံးပြုပါသည်။ FCEDIT တရားမဝင်သောသို့မဟုတ်အားမသတ်မှတ်ထားလျှင်, အယ်ဒီတာ variable ကို၏တန်ဖိုးကိုအသုံးပြုသည်။ အယ်ဒီတာတရားမဝင်သောသို့မဟုတ်အားမသတ်မှတ်ထားလျှင်, ed (1) အယ်ဒီတာအဖြစ်အသုံးပြုပါသည်။

-l (ELL)

ပညတ်တော်တို့ကိုစာရင်းထက်သူတို့ကိုတခုတခုအပေါ်မှာအယ်ဒီတာသွန်းလောင်းပေး။ အမိန့်ကိုအရေအတွက်အားဖြင့်ရှေ့ပြေးတစ်ခုချင်းစီကို Command ဖြင့် r - ကြောင့်ထိခိုက်အဖြစ်ပညတ်တော်, ပထမဦးဆုံးနှင့်နောက်ဆုံး operands အားဖြင့်ညွှန်ပြသည့် sequence ကို၌ရေးထားလျက်ရှိ၏။

-n

-l နှင့်အတူစာရင်းလာသောအခါ command ကိုနံပါတ်များကိုဖိနှိပ်။

-r

ဌသို့မဟုတ် edited (မနှင့်အတူ - - ဌမဟုတ်သလို - s) ကို (နှင့်အတူဖော်ပြထားသောပညတ်တော်ကိုအမိန့် reverse

-s

re-execute အယ်ဒီတာသွန်းလောင်းပေးခြင်းမရှိဘဲအမိန့်။

ပဌမ

နောက်ဆုံး

စာရင်းသို့မဟုတ်ပြင်ဆင်ရန်ရန်ပညတ်တော်ကိုရွေးချယ်ပါ။ ဝင်ရောက်နိုင်ယခင်ပညတ်တော်တို့ကိုအရေအတွက်၏တန်ဖိုးကိုဆုံးဖြတ်ကြသည် HISTSIZE variable ကို ။ ပထမဦးဆုံးသို့မဟုတ်နောက်ဆုံးသို့မဟုတ်နှစ်ဦးစလုံး၏တန်ဖိုးအောက်ပါတို့မှတဝတည်းဖြစ်ကြ၏:

[+] အရေအတွက်ကို

command တစ်ခုအရေအတွက်ကိုကိုယ်စားပြုတစ်ဦးကအပြုသဘောအရေအတွက်ကို; option ကို - command ကိုနံပါတ်များနှင့်အတူပြသနိုင်ပါသည်။

-number

ယခင်ကပညတ်တော်တို့ကိုအရေအတွက်ကွပ်မျက်ခံရသော command ကိုကိုယ်စားပြုတစ်ဦးကအနုတ်လက္ခဏာဒဿမအရေအတွက်ကို။ ဥပမာအားဖြင့်, -1 အဆိုပါချက်ချင်းယခင် command တစ်ခုဖြစ်သည်။

ကြိုး

ကြောင်း string ကိုအတူစတင်ကြောင်းအရှိဆုံးမကြာသေးမီကထဲသို့ဝင် command ကိုညွှန်ပြတစ်ဦးက string ကို။ အဟောင်းကို = သစ်ကို operand လည်းအတူမသတ်မှတ်ထားပါလျှင် - ပထမ operand ၏ string ကိုပုံစံတစ်ခု embedded တန်းတူနိမိတ်လက္ခဏာဆံ့မခံနိုင်သည့်။

အောက်ပါပတ်ဝန်းကျင် variable တွေကို FC ၏ကွပ်မျက်ထိခိုက်စေ:

FCEDIT

သုံးစွဲဖို့အယ်ဒီတာများ၏အမည်။

HISTSIZE

လက်လှမ်းဖြစ်ကြောင်းယခင်ပညတ်တော်အရေအတွက်။

fg [အလုပ်အကိုင်အ]

foreground ကမှသတ်မှတ်ထားသောအလုပ်သို့မဟုတ်လက်ရှိအလုပ်ရွှေ့ပါ။

var optstring getopts

အဆိုပါ Bell Labs နှင့်အတူရောထွေးခံရဖို့မ POSIX getopts command ကို, getopt (1) -derived ။

ပထမဦးဆုံးအငြင်းခုံလုပ်နိုင်သောထို option အငြင်းအခုံလိုအပ်သည်ညွှန်ပြနေတဲ့အူမကြီးတို့ကနောက်တော်သို့လိုက်စေခြင်းငှါအသီးအသီးသောအစာတစ်စီးရီး, ဖြစ်သင့်သည်။ သတ်မှတ်ထားသော variable ကိုပုသရုပျခှဲ option ကိုသတ်မှတ်ထားခြင်းဖြစ်သည်။

အဆိုပါ getopts command ကိုကြောင့်ကြားနေရာလွတ်များငြင်းခုံ၎င်း၏ကိုင်တွယ်ရန်အဟောင်းများကို getopt (1) utility ကို deprecates ။

builtin အဆိုပါ getopts options တွေနဲ့ parameters များစာရင်းကိုထံမှ၎င်းတို့၏ငြင်းခုံရယူဖို့အသုံးပြုနိုင်ပါသည်။ မဖြစ်၏အခါ, getopts var နေဖြင့်သတ်မှတ်ထားသော shell ကို variable ကိုအတွက်စာရင်းထဲက option ကို string ကိုကနေလာမယ့် option ကို၏တန်ဖိုးနေရာက shell ကိုမဖြစ်၏သောအခါ OPTIND လိုအပ်သည် option တခုစီသည် 1 မှနသော shell ကို variable ကို OPTIND အတွက်အညွှန်းကိန်းရဲ့ အဆိုပါ optstring အတွက်ထို့နောက် OPTARG အားမသတ်မှတ်ထားပါလိမ့်မည်တစ်ခု option ကိုခွင့်မပြုလျှင်အငြင်းအခုံ, builtin အဆိုပါ getopts shell ကို variable ကို OPTARG ထဲမှာနေရာချပါလိမ့်မယ်။

optstring အသိအမှတ်ပြု option ကိုအက္ခရာများတစ်ဦး string ကိုဖြစ်ပါတယ်။ စာတစ်စောင်တစ်ဦးအူမကြီးတို့ကနောက်တော်သို့လိုက်လျှင်, option ကိုသို့မဟုတ်အဖြူအာကာသကထဲကနေကွဲကွာမည်မဟုတ်ပါရသောတစ်ဦးအငြင်းအခုံရှိသည်ဖို့မျှော်လင့်ရသည်။ တစ်ခု option ကိုဇာတ်ကောင်မတွေ့ရှိလျှင်မျှော်မှန်းထားရှိရာ, getopts တစ်ဦး `` ဖို့ variable ကို var သတ်မှတ်ထားကြလိမ့်မည်နည်း '' getopts ပြီးတော့အားမသတ်မှတ်ထား OPTARG လိမ့်မည်နှင့်စံအမှားမှ output ကိုရေးပါ။ အားလုံးအမှားအယွင်းများ optstring ၏ပထမဦးဆုံးဇာတ်ကောင်အဖြစ်အူမကြီးသတ်မှတ်ခြင်းအားဖြင့်လျစ်လျူရှုခံရပါလိမ့်မယ်။

ပြီးခဲ့သည့် option ကိုရောက်ရှိသည့်အခါတစ်ဦးက nonzero တန်ဖိုးကိုပြန်ရောက်နေပါတယ်။ အဘယ်သူမျှမကျန်ရှိအငြင်းပွားမှုများရှိပါတယ်ရှိလျှင်, getopts အထူး option ကိုမှ var ထားမည်, `` - '' မဟုတ်ရင်, က `ရန်` var သတ်မှတ်ထားကြလိမ့်မည်နည်း ''

အောက်ပါ code လိုင်းတရွေးချယ်စရာယူနိုငျသော command ကိုများအတွက်အငြင်းပွားမှုများကို process စေခြင်းငှါ, ဘယ်လိုပြသထားတယ် [တစ်] နှင့် [ခ] နှင့်တစ်ဦးငြင်းခုံရန်လိုအပ်သည်သော option ကို [က c] ။

f: getopts abc စဉ်
ပြုပါ
အတွက်အမှု $, f
တစ်ဦး | ခ) အလံ = $, f ;;
ဂ) carg = $ OPTARG ;;
? \) ပဲ့တင်သံ $ USAGE; ထွက်ပေါက် 1 ;;
esac
ပြီးပြီ
`expr $ OPTIND shift - 1`

ဒီ code ညီမျှအဖြစ်အောက်ပါတို့မှဆိုကိုလက်ခံပါလိမ့်မယ်:

-acarg ဖိုင်ဖိုင် cmd
cmd -a -c arg ဖိုင်ဖိုင်
cmd -carg -a ဖိုင်ဖိုင်
cmd -a -carg - ဖိုင်ဖိုင်

-rv command ကို hash ...

အဆိုပါ shell ကိုပညတ်တော်တို့ကိုများ၏တည်နေရာများကိုအောက်မေ့သော hash စားပွဲပေါ်မှာထိန်းသိမ်းထားသည်။ သမျှအဘယ်သူမျှမငြင်းခုံနှင့်တကွ, hash command ကိုဒီစားပွဲရဲ့ contents ထွက်နေရိုက်ထုတ်။ ပြီးခဲ့သည့် cd command ကိုကတည်းကကြည့်ရှုခဲ့ကြပြီမဟုတ်သည့် entries တစ်ခုခရေပွင့နှင့်အတူမှတ်သားထားတဲ့; ဤအ entries တွေကိုမမှန်ကန်တဲ့ဖြစ်ဘို့ကဖြစ်နိုင်ပါတယ်။

အငြင်းပွားမှုများနှင့်တကွ, hash command ကို (သူတို့ function တွေဖြစ်ပါတယ်မဟုတ်လျှင်) အဟက်ရှ်စားပွဲကနေသတ်မှတ်ထားသောပညတ်တို့ကိုဖယ်ရှားပေးပြီးတော့သူတို့ကိုတည်နေရာ။ ယင်းနှင့်အတူ - ကသူတို့ကိုတွေ့အဖြစ် v option ကို, hash ပညတ်တော်များ၏တည်နေရာများကိုရိုက်ထုတ်။ အဆိုပါ - r ကို option ကိုလုပ်ဆောင်ချက်များကိုဘို့ကလွဲလို့ hash table ထဲမှာအားလုံး Entries တွေကိုဖျက်ပစ်ရန်အဟက်ရှ် command ကိုဖြစ်ပေါ်စေသည်။

jobid [အလုပ်အကိုင်အ]

အလုပ်အတွက်လုပ်ငန်းစဉ်များ၏လုပ်ငန်းစဉ်အိုင်ဒီရဲ့ Print ။ အလုပ်အငြင်းအခုံချန်လှပ်လျှင်, လက်ရှိအလုပ်အကိုင်ကိုအသုံးပြုသည်။

အလုပ်အကိုင်အခွင့်အ

ဒီ command ကလက်ရှိ shell ကိုလုပ်ငန်းစဉ်၏သားဖြစ်ကြ၏သမျှနောက်ခံဖြစ်စဉ်များထွက်စာရင်းပြုလုပ်ထားသည်။

PWD

လက်ရှိ directory ကို print ထုတ်။ အဆိုပါ builtin command ကိုလက်ရှိ directory ကိုအစားကတစ်ဦးချင်းစီအချိန် recomputing ထက်သောအရာကိုအောက်မေ့ကြောင့် builtin command ကိုအမည်တူ၏အစီအစဉ်မှကွဲပြားနိုင်သည်။ ဤသည်ကပိုမြန်စေသည်။ လက်ရှိ directory ကိုအမည်ပြောင်းလျှင်မည်သို့ပင်ဆို, PWD ၏ builtin ဗားရှင်း directory ကိုများအတွက်ဟောင်းနာမကိုအမှီ print ထုတ်မှဆက်လက်ပါလိမ့်မယ်။

ဖတ်ပါ [- p prompt ကို] [- r] variable ကို ...

p option ကိုသတ်မှတ်ထားသောနှင့်စံ input ကို Terminal ကိုဖြစ်ပါသည် - ထိုလျှင် prompt ကိုပုံနှိပ်ဖြစ်ပါတယ်။ ထိုအခါလိုင်းစံ input ကိုမှဖတ်ဖြစ်ပါတယ်။ အဆိုပါကပ်တွယ်မှုကို NEWLINE လိုင်းထဲကနေဖျက်ပစ်နေသည်နှင့်အထက်စကားလုံးပိုင်းခြားပေါ်တွင်အပိုင်းတှငျဖျောပွထားသဖြင့်, အပိုင်းပိုင်းနိုင်ရန်အတွက် variable တွေကိုပေးရန်တာဝန်ပေးအပ်ကြသည်အဖြစ်လိုင်းခွဲဖြစ်ပါတယ်။ အနည်းဆုံးတဦးတည်း variable ကိုသတ်မှတ်ထားသောရမည်ဖြစ်သည်။ variable တွေကိုထက်ပိုအပိုင်းပိုင်းရှိပါတယ်ရှိလျှင်, (ထိုသူတို့နှင့်ကွဲကွာကြောင်း IFS အတွက်ဇာတ်ကောင်နှင့်အတူ) ကကျန်ရှိသောအပိုင်းပိုင်းနောက်ဆုံးအ variable ကိုမှတာဝန်ပေးအပ်ထားပါသည်။ အပိုင်းပိုင်းထက်ပိုပြီး variable တွေကိုရှိပါတယ်လျှင်, ကျန်ရှိနေသေးသော variable တွေကိုပုတရားမဝင်သော string ကိုတာဝန်ပေးအပ်ထားပါသည်။ EOF ကိစ္စတွင်ပျက်ကွက်ပြန်ရောက်သော input ကိုအပေါ်ကြုံတွေ့လျက်ရှိသည်မဟုတ်လျှင် builtin အဆိုပါဖတ်ပြီးသားအောင်မြင်မှုညွှန်ပြပါလိမ့်မယ်။

အဆိုပါမဟုတ်လျှင် default အနေဖြင့် -, r option ကိုသတ်မှတ်ထားသောဖြစ်ပါတယ်, ထိုဘယ်ဘက်မျဉ်းစောင်း `` \ '' စာသားကုသခံရဖို့အောက်ပါဇာတ်ကောင်ဖြစ်စေတဲ့တစ်ခုထွက်ပေါက်ဇာတ်ကောင်အဖြစ်ဆောင်ရွက်သည်။ တစ်ဘယ်ဘက်မျဉ်းစောင်းတစ် NEWLINE အားဖြင့်နောက်တော်သို့လိုက်လျှင်, ဘယ်ဘက်မျဉ်းစောင်းများနှင့် NEWLINE ဖျက်ပါမည်။

ဖတ်ရန်အတွက်အမည် ...

ဖတ်ရန်အတွက် -p

သာဖတ်ပါအဖြစ်သူတို့နောက်ပိုင်းတွင်ပြုပြင်ထားသောသို့မဟုတ်အားမသတ်မှတ်ထားမရနိုင်ဒါကြောင့်သတ်မှတ်ထားသောအမည်များ, မှတ်သားနေကြသည်။ အဆိုပါ shell ကိုတစ်ဦး variable ကို၏တန်ဖိုးကမှတ်သားဖြစ်ပါတယ်တစ်ချိန်တည်းမှာသတ်မှတ်ထားခံရဖို့ခွင့်ပြု မှသာဖတ်ပါ အရေးအသားအားဖြင့်

ဖတ်ရန်အတွက် name = value ကို

အဘယ်သူမျှမငြင်းခုံနှင့်အတူဖတ်ရန်အတွက် command ကိုအားလုံးဖတ်ပါမှသာ variable တွေကိုများ၏အမည်များစာရင်းပြုလုပ်ထားသည်။ အတူ - p option ကို output ကို Non-အပြန်အလှန်အသုံးပြုမှုများအတွက်သင့်လျော်ကို format ပါလိမ့်မည်သတ်မှတ်ထားသော။

set [{- options များ | + options များ | - arg ... ]

အဆိုပါ set ကို command ကိုသုံးကွဲပြားခြားနားသောလုပ်ငန်းဆောင်တာကိုလုပ်ဆောင်တယ်။

အဘယ်သူမျှမငြင်းခုံနှင့်အတူ, ကအားလုံးကို shell ကို variable တွေကိုများ၏တန်ဖိုးများကိုစာရင်းပြုစု။

ရွေးချယ်မှုများပေးထားကြသည်ဆိုပါကသတ်မှတ်ထားသော option ကိုအလံသတ်မှတ်, ဒါမှမဟုတ် Sx အငြင်းအခုံများစာရင်းထုတ်ယူခြင်းလို့ခေါ်တဲ့အပိုင်းထဲမှာဖော်ပြထားတဲ့အတိုင်းသူတို့ကိုရှင်းလင်းရေး။

အဆိုပါ set ကို command ကို၏တတိယအသုံးပြုမှုသတ်မှတ်ထားသော args ဖို့ shell ကိုရဲ့ positional parameters တွေကိုများ၏တန်ဖိုးများသတ်မှတ်ထားရန်ဖြစ်ပါသည်။ သတ်မှတ်ထားဖို့ပထမဦးဆုံးအငြင်းအခုံအဖြစ် '' '- ဆိုရွေးချယ်စရာပြောင်းလဲနေတဲ့မရှိဘဲ positional parameters တွေကိုပြောင်းလဲပစ်ရန်, `` ကိုအသုံးပြုပါ။ အဘယ်သူမျှမ args ပစ္စုပ္ပန်ဖြစ်ကြလျှင်, set ကို command ကို `` ကွပ်မျက်ညီမျှအပေါငျးတို့သ positional parameters တွေကို (ရှင်းလင်းပါလိမ့်မယ် ပြောင်းကုန်ပြီ $ # ။ ''

variable ကိုတန်ဖိုးကို

variable ကိုတန်ဖိုးသတ်မှတ်ပေးထားတဲ့။ (ယေဘုယျကြောင့်မဟုတ်ဘဲ setvar setvar သုံးပြီးထက်တန်ဖိုးကိုအဘယ်သူ၏အမည်များကို parameters များကိုအဖြစ်လွန်နေကြသည် variable တွေကိုပေးရန်တန်ဖိုးများကို assign ကြောင့်လုပ်ငန်းဆောင်တာများတွင်အသုံးပြုခံရဖို့ရည်ရွယ်တာဖြစ်ပါတယ် = variable ကိုရေးသားဖို့ သာ. ကောင်း၏။ )

ပြောင်းကုန်ပြီ [n]

အဆိုပါ positional parameters တွေကို n ကြိမ် Shift ။ တစ်ဦးကပြောင်းကုန်ပြီတဦးတည်းအားဖြင့် $ # ၏တန်ဖိုးလျော့ကျလာ, ဒါပေါ်မှာ $ 3 ၏တန်ဖိုးမှ $ 2 $ 2 ၏တန်ဖိုး၏တန်ဖိုးမှ $ 1 ၏တန်ဖိုးကိုသတ်မှတ်ပါ။ ဎ positional parameters တွေကို၏နံပါတ်ထက် သာ. ကြီးမြတ်သည်ဆိုပါက, ပြောင်းကုန်ပြီ error message ကိုနှင့်ပြန်လာ status ကို 2 နှင့်အတူထွက်ပေါက်ထုတ်ပေးပါလိမ့်မယ်။

ကြိမ်

shell ကိုအဘို့နှင့် shell ကိုကနေ run ဖြစ်စဉ်များများအတွက်စုဆောင်းအသုံးပြုသူနှင့် system ကြိမ် Print ။ အဆိုပါပြန်လာ status ကို 0 င်ဖြစ်ပါတယ်။

ထောင်ချောက်အရေးယူမှု အချက်ပြ ...

သတ်မှတ်ထားသောအချက်ပြမဆိုလက်ခံရရှိသည့်အခါ shell ကိုအရေးယူခွဲခြားစိတ်ဖြာမှုနှင့် execute မှဖြစ်ပေါ်စေနိုင်ပါတယ်။ အဆိုပါအချက်ပြ signal ကိုအရေအတွက်အားဖြင့်သတ်မှတ်ပေးပါသည်။ signal ကို 0 င်လုပ်ဆောင်ချက်သည်ဆိုပါကအခါ shell ကိုထွက်ပေါက်ကွပ်မျက်ခံရခြင်းဖြစ်သည်။ '' ယခင်သတ်မှတ်ထားသော signal ကိုလျစ်လျူရှုခံရဖို့ကိုဖြစ်ပေါ်စေသည်နှင့်အဆုံးစွန်သောခေါ်ဆောင်သွားခံရဖို့ကို default အရေးယူမှုဖြစ်ပေါ်စေသည် '- action ကို `` တရားမဝင်သောဖြစ်သို့မဟုတ်ပေမည်။ တစ်ဦးကိုချွတ်လိုက်တဲ့အခါ shell ကိုချိတ် subshell က default အနေနဲ့အရေးယူဆောင်ရွက်မှုမှအချက်ပြမှုများ (လျစ်လျူရှုပေမယ့်မဟုတ်) ပိတ်မိ reset လုပ်တယ်။ အဆိုပါထောင်ချောက် command ကို shell ကိုမှ entry ပေါ်မှာလျစ်လျူရှုခဲ့အချက်ပြမှုများကိုမသက်ရောက်ပါတယ်။

အမျိုးအစား [အမည်အား ... ]

command တစ်ခုအဖြစ်တစ်ဦးချင်းစီနာမကိုအမှီအနက်ကိုဘော်ပြခြင်းနှင့်အမိန့်ရှာဖွေရေး၏ဆုံးဖြတ်ချက် print ထုတ်။ ဖြစ်နိုင်ပါ့မလားဆုံးဖြတ်ချက်တွေနေသောခေါင်းစဉ်: shell ကိုသော့ချက်စာလုံး, alias ကို, shell ကို builtin , command ကို, alias ကိုခြေရာခံများနှင့်မတွေ့ရှိ။ နာမည်များအတွက် alias ကိုတိုးချဲ့ပုံနှိပ်လျက်ရှိ၏ ပညတ်တော်တို့ကိုအဘို့နှင့် command ကို၏ပြီးပြည့်စုံသောလမ်းကြောင်းအမည်ကိုပုံနှိပ်ဖြစ်ပါတယ်နာမည်ခြေရာခံ။

ulimit [- H ကို -s] [- တစ် -tfdscmlpn [တန်ဖိုးကို]]

အကြောင်းကိုမေးလျှောက်သို့မဟုတ်ဖြစ်စဉ်များသို့မဟုတ် set အသစ်ကန့်သတ်ချက်အပေါ်ခက်ခဲသို့မဟုတ်နူးညံ့သောကန့်သတ်ထားကြ၏။ ခက်န့်သတ်ချက် (မျှဖြစ်စဉ်ကိုချိုးဖောက်ခွင့်ပြုခဲ့တာဖြစ်ပါတယ်, ထိုသို့လျှော့ချခဲ့ပြီးတစ်ချိန်ကကြီးပြင်းမည်မဟုတ်ပါပေးသောအရာ) နှင့်ပျော့ပျောင်းသောကန့်သတ်အကြားရွေးချယ်မှု (လုပ်ငန်းစဉ်များအချက်ပြပေမယ့်သေချာပေါက်သတ်နှင့်အရာကြီးပြင်းစေခြင်းငှါမပေးခံရဖို့ကိုဖြစ်ပေါ်စေသည်ရာ) နှင့်ဖန်ဆင်းထားသည် ဤအအလံ:

-H

ခက်ကန့်သတ်နှင့် ပတ်သက်. သတ်မှတ်ထားသို့မဟုတ်မေးလျှောက်

-s

ပျော့ပျောင်းသောကန့်သတ်နှင့် ပတ်သက်. သတ်မှတ်ထားသို့မဟုတ်မေးလျှောက်။ H ကိုမဟုတ်သလို - - မပါလျှင် S ကိုသတ်မှတ်ထားသောဖြစ်ပါတယ်, အပျော့န့်သတ်ချက်ပြသို့မဟုတ်နှစ်ဦးစလုံးကန့်သတ်သတ်မှတ်ထားကြသည်။ နှစ်ဦးစလုံးသတ်မှတ်ထားသောနေတယ်ဆိုရင်, နောက်ဆုံးသောတစ်ဦးအနိုင်ရရှိခဲ့ပါသည်။

စစ်ဆေးမေးမြန်းသို့မဟုတ်သတ်မှတ်ထားခံရဖို့အဆိုပါကန့်သတ်, ထို့နောက်ဤအလံမဆိုတဦးတည်းသတ်မှတ်ခြင်းကရွေးချယ်တာဖြစ်ပါတယ်:

-a

အားလုံးလက်ရှိကန့်သတ်ပြသ

-t

အပေါ်ကန့်သတ်ပြပွဲသို့မဟုတ် set CPU ကိုအချိန် (စက္ကန့်)

-f

(512-byte လုပ်ကွက်အတွက်) ဖန်တီးနိုင်အကြီးဆုံးဖိုင်ပေါ်တွင်ကန့်သတ်ပြပွဲသို့မဟုတ် set

-D

(ကီလိုဘိုက်အတွက်) တစ်ဦးလုပ်ငန်းစဉ်၏ဒေတာ segment ကိုအရွယ်အစားအပေါ်ကန့်သတ်ပြပွဲသို့မဟုတ် set

-s

(ကီလိုဘိုက်အတွက်) တစ်ဦးလုပ်ငန်းစဉ်၏ stack အရွယ်အစားအပေါ်ကန့်သတ်ပြပွဲသို့မဟုတ် set

-c

(512-byte လုပ်ကွက်များတွင်) ထုတ်လုပ်နိုင်အကြီးဆုံး core ကိုအမှိုက်ပုံအရွယ်အစားအပေါ်ကန့်သတ်ပြပွဲသို့မဟုတ် set

-m

(ကီလိုဘိုက်အတွက်) လုပ်ငန်းစဉ်အားဖြင့်အသုံးပြုမှုအတွက်ဖြစ်နိုင်သည်ကိုစုစုပေါင်းရုပ်ပိုင်းဆိုင်ရာမှတ်ဉာဏ်အပေါ်ကန့်သတ်ပြပွဲသို့မဟုတ် set

-l

ဖြစ်စဉ်နှင့်အတူသော့ခတ်နိုင်ပါတယ်ဘယ်လောက်မှတ်ဥာဏ်အပေါ်ကန့်သတ်ပြပွဲသို့မဟုတ် set mlock (အတွင်း (2) ကီလိုဘိုက် )

-p

ဒီအသုံးပြုသူတဦးတည်းအချိန်မရွေးရှိနိုင်ပါသည်ဖြစ်စဉ်များ၏နံပါတ်ပေါ်ကန့်သတ်ပြပွဲသို့မဟုတ် set

-n

ပြပွဲသို့မဟုတ်အရေအတွက်ကိုအပေါ်ကန့်သတ်သတ်မှတ်ထားတဲ့လုပ်ငန်းစဉ်ကိုတခါမှာပွင့်လင်းရှိနိုင်ပါသည်ဖိုင်များကို

ထိုအဘယ်သူအားမျှမသတ်မှတ်ပါကပြသသို့မဟုတ်သတ်မှတ်ထားကြောင်းဖိုင်အရွယ်အစားအပေါ်ကန့်သတ်သည်။ တန်ဖိုးအားသတ်မှတ်ထားသောလျှင်, န့်သတ်ချက်ကြောင့်အရေအတွက်သတ်မှတ်; မဟုတ်ရင်လက်ရှိကန့်သတ်ပြသနေသည်။

တစ်ဦးမတရားလုပ်ငန်းစဉ်၏ကန့်သတ် (8) utility ကိုပြသပါသို့မဟုတ် sysctl အသုံးပြု. သတ်မှတ်နိုင်ပါသည်။

umask [မျက်နှာဖုံး]

သတ်မှတ်ထားသော octal တန်ဖိုး ((2) umask ကိုကြည့်ပါ) umask ၏တန်ဖိုးသတ်မှတ်မည်။ အဆိုပါအငြင်းအခုံချန်လှပ်လျှင်, umask တန်ဖိုးကိုရိုက်နှိပ်ထားပါသည်။

unalias [- တစ်ဦး] [အမည်]

အမည်အားသတ်မှတ်ထားသောလျှင်, shell ကိုကြောင်း alias ကိုဖယ်ရှားပေးပါသည်။ အကယ်. - တစ်သတ်မှတ်ထားသောသည်အားလုံးနာမည်ဖယ်ရှားပစ်ပါသည်။

အားမသတ်မှတ်ထားအမည် ...

သတ်မှတ်ထားသော variable တွေကိုနှင့်လုပ်ငန်းဆောင်တာအားမသတ်မှတ်ထားခြင်းနှင့် unexported ဖြစ်ကြသည်။ ပေးထားသော name ကိုတစ်ဦး variable ကိုနှင့် function ကိုနှစ်ဦးစလုံးနဲ့ကိုက်ညီလျှင်, variable ကိုနှင့် function ကိုနှစ်ဦးစလုံးအားမသတ်မှတ်ထားကြသည်။

[အလုပ်အကိုင်အ] စောင့်ဆိုင်း

အလုပ်အတွက်နောက်ဆုံးလုပ်ငန်းစဉ်၏ထွက်ပေါက် status ကိုဖြည့်စွက်ခြင်းနှင့်ပြန်လာနိုင်ရန်သတ်မှတ်ထားသောအလုပ်အဘို့အစောင့်ပါ။ အဆိုပါအငြင်းအခုံချန်လှပ်လျှင်ဖြည့်စွက်ခြင်းနှင့်သုညတစ်ခုထွက်ပေါက် status ကိုပြန်သွားဖို့အတွက်အားလုံးအလုပ်အကိုင်များစောင့်ပါ။

command လိုင်းတည်းဖြတ်ခြင်း

sh terminal မှ interactive အသုံးပြုနေပါသည်သောအခါ, လက်ရှိ command ကိုနှင့် command ကိုသမိုင်း (Sx Builtins အတွက် FC ကိုကြည့်ပါ) vi-mode ကို command-line တည်းဖြတ်ရေးသုံးပြီး edited နိုင်ပါသည်။ ဒီ mode ဟာ vi လူကိုစာမျက်နှာတွင်ဖော်ပြထားသူတို့၏အမျိုးအများအနက်အချို့သာလျှင်ဆင်တူအောက်တွင်ဖော်ပြထား, ပညတ်တော်တို့ကိုအသုံးပြုသည်။ အဆိုပါ command ကို `-O vi vi ထည့်သွင်း mode သို့ vi-mode ကိုတည်းဖြတ်ရပျရပျ sh ဖွ '' ထား၏။ vi-mode ကို enabled နှင့်အတူ, sh ထည့်သွင်း mode နဲ့ command ကို mode ကိုအကြား switched နိုင်ပါသည်။ အဆိုပါအယ်ဒီတာကဒီမှာအပြည့်အဝမှာဖော်ပြထားတဲ့သည်မဟုတ်, ဒါပေမယ့်နောက်ပိုင်းစာရွက်စာတမ်းအတွက်ဖြစ်ပါလိမ့်မယ်။ ဒါဟာ vi ဆင်တူင်: aq ESC စာရိုက် command ကို VI ကို command ကို mode ကိုသို့ပစ်လိုက်လိမ့်မယ်။ command ကို mode မှာ shell ကိုမှမျဉ်းလွန်သွားပါလိမ့်မယ်နေချိန်မှာ aq ပြန်လာနှိပ်။

အရေးကြီး: လူကိုအသုံးပြုပါ က command command တစ်ခုကိုသင်၏အထူးသဖြင့်ကွန်ပျူတာပေါ်တွင်အသုံးပြုသည်ကိုမည်သို့ကြည့်ဖို့ (% လူကို)