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

က NAME

ကား Bash - ကို GNU Bourne-တဖန် Shell

အနှစ်ချုပ်

ကား Bash [ရွေးချယ်စရာ] [ဖိုင်]

DESCRIPTION

Bash မှာစံ input ကိုကနေဒါမှမဟုတ်ဖိုင်တစ်ဖိုင်ကနေဖတ်ပါပညတ်တော်တို့ကို ပေး. စီရင်ထားတဲ့ sh -compatible command ကိုဘာသာစကားစကားပြန်ဖြစ်ပါတယ်။ Bash မှာကိုလည်းခေါန်နှင့် C ခွံ (ksh နှင့် csh) မှအသုံးဝင်သော features တွေထည့်သွင်း။

Bash မှာအဆိုပါကို IEEE POSIX Shell နှင့် Tools များအသေးစိတ်ဖော်ပြချက် (ကို IEEE အလုပ်အဖွဲ့ 1003.2) ၏ညီအကောင်အထည်ဖော်ရေးဖြစ်ရန်ရည်ရွယ်သည်။

ရွေးချယ်စရာများ

ကမဖြစ်၏ဖြစ်ပါတယ်အခါ set ကို builtin command ကို၏ဖော်ပြချက်ထဲတွင်မှတ်တမ်းတင် Single-ဇာတ်ကောင် shell ကိုရှေးခယျြစရာအပြင်, ကား Bash အောက်ပါ options များအနက်ဖွင့်:

-c string ကို

အဆိုပါ -c option ကိုပစ္စုပ္ပန်ဖြစ်ပါတယ်လျှင်, ပညတ်တို့ကို string ကိုမှဖတ်နေကြသည်။ အငြင်းပွားမှုများ string ကိုအပြီးရှိပါတယ်ဆိုရင်သူတို့က $ 0 င်တွေနဲ့စတင်ခြင်း, positional parameters တွေကိုမှတာဝန်ပေးအပ်ထားပါသည်။

-i

အဆိုပါ -i option ကိုပစ္စုပ္ပန်ဖြစ်ပါတယ်လျှင်, shell ကိုအပြန်အလှန်ဖြစ်ပါတယ်။

-l

က (အောက်တွင် INVOCATION ကိုကြည့်ပါ) တစ်ဦးရဲ့ login shell ကိုအဖြစ်မဖြစ်၏ခဲ့လျှင်အဖြစ်ကား Bash လုပ်ရပ်လုပ်ပါ။

-r

-r option ကိုပစ္စုပ္ပန်ဖြစ်ပါတယ်လျှင်, shell ကို (အောက်တွင်ကန့်သတ် SHELL ကိုကြည့်ပါ) ကန့်သတ်ဖြစ်လာသည်။

-s

အဆိုပါ -s option ကိုပစ္စုပ္ပန်ဖြစ်ပါသည်, သို့မဟုတ်လုံးဝမငြင်းခုံ option ကိုအပြောင်းအလဲနဲ့ပြီးနောက်ဆက်လက်တည်ရှိလျှင်, ပညတ်တို့ကိုစံ input ကိုမှဖတ်နေတယ်ဆိုရင်။ ဒီ option တစ်ခုအပြန်အလှန် shell ကိုသွန်းလောင်းပေးသည့်အခါသတ်မှတ်ထားခံရဖို့ positional parameters များကိုခွင့်ပြုပါတယ်။

-D

$ အားဖြင့်ရှေ့ပြေးအားလုံးကို double-ကိုးကားကွိုးစာရင်းတစ်ခုစံ ouput အပေါ်ပုံနှိပ်ဖြစ်ပါတယ်။ ဤရွေ့ကားလက်ရှိဒေသ C သို့မဟုတ် POSIX မပါသောအခါဘာသာစကားဘာသာပြန်ချက်မှဘာသာရပ်ဖြစ်ကြောင်းကြိုးဖြစ်ကြသည်။ ဒါက -n option ကိုဆိုလို; အဘယ်သူမျှမပညတ်တို့ကိုကွပ်မျက်လိမ့်မည်။

[- +] အို [shopt_option]

shopt_option (SHELL BUILTIN အောက်တွင်ဖော်ပြထားသောပညတ်တော်မူ၏ကြည့်ပါ) shopt builtin ကလက်ခံ shell ကိုရွေးချယ်စရာတစ်ခုဖြစ်ပါသည်။ shopt_option ပစ္စုပ္ပန်ဖြစ်တယ်ဆိုရင်, -O ထို option ၏တန်ဖိုးကိုသတ်မှတ်; + O ကြောင့် unsets ။ shopt_option ထောက်ပံ့မထားလျှင်, shopt ကလက်ခံ shell ကိုရွေးချယ်စရာများ၏အမည်များနှင့်တန်ဖိုးများကိုစံ output ကိုအပေါ်ပုံနှိပ်နေကြသည်။ အဆိုပါ invocation option ကိုအို + လျှင်, output ကို input ကိုအဖြစ်ပြန်သုံးစေခြင်းငှါ format တစ်ခုထဲမှာဖော်ပြပါတယ်။

-

တစ်ဦးက - options များ၏အဆုံးအချက်ပြလိုက်ခြင်းနှင့်နောက်ထပ် option ကိုအပြောင်းအလဲနဲ့ပိတ်။ ပြီးနောက်မဆိုဆင်ခြေ - filename နှင့်အငြင်းပွားမှုများအဖြစ်ကုသနေကြသည်။ တစ်ဦးအငြင်းအခုံ - - မှညီမျှသည်။

Bash မှာလည်း Multi-ဇာတ်ကောင်ရွေးချယ်စရာများစွာအနက်ဖွင့်။ အဆိုပါ Single-ဇာတ်ကောင်ရွေးချယ်စရာအသိအမှတ်ပြုခံရဖို့မတိုင်မီအဲဒီ options က command line ပေါ်တွင်ပေါ်လာရကြမည်။

--dump-po-ညှို့

-D ညီမျှပေမယ့် output ကိုသည် GNU gettext po (အိတ်ဆောင်အရာဝတ္ထု) ဖိုင်ပုံစံဖြစ်ပါတယ်။

--dump-ညှို့

-D ညီမျှ။

--ကူညီပါ

စံ output ကိုအပေါ်တစ်ဦးအသုံးပြုမှုမက်ဆေ့ခ်ျကိုဖော်ပြရန်နှင့်အောင်မြင်စွာ exit ။

--init-file ကိုဖိုင်

--rcfile ဖိုင်

shell ကိုအပြန်အလှန်လျှင် (အောက်တွင် INVOCATION ကိုကြည့်ပါ) အစားစံပုဂ္ဂိုလ်ရေးစတင်ခြင်းဖိုင် ~ / .bashrc ၏ဖိုင်ကနေ command များကို execute ။

--လော့ဂ်အင်

-l ညီမျှ။

--noediting

shell ကိုအပြန်အလှန်အခါ command ကိုလိုင်းများကိုဖတ်ရှုဖို့ကို GNU readline စာကြည့်တိုက်ကိုမသုံးပါနဲ့။

--noprofile

စနစ်-ကျယ်ပြန့် startup ဖိုင် / etc / ပရိုဖိုင်းဒါမှမဟုတ်ပုဂ္ဂိုလ်ရေးစတင်ခြင်းဖိုင်တွေ ~ / .bash_profile, ~ / .bash_login, ဒါမှမဟုတ် ~ / .profile မဆိုတစ်ခုခုကိုမဖတ်ပါနဲ့။ ဒါကြောင့်တစ်ဦးရဲ့ login shell ကိုအဖြစ်မဖြစ်၏အခါပုံမှန်အားဖြင့်ကား Bash (အောက်တွင် INVOCATION ကိုကြည့်ပါ) ဤဖိုင်များကိုဖတ်တယ်။

--norc

shell ကိုအပြန်အလှန်လျှင် ~ / .bashrc ပုဂ္ဂိုလ်ရေးစတင်ခြင်း file ကိုဖတ်ပါနှင့် execute မထားပါနဲ့။ shell ကို sh အဖြစ်မဖြစ်၏လျှင်ဒီ option က default အနေဖြင့်ပေါ်သည်။

--posix

ကို default စစ်ဆင်ရေးစံ (posix mode ကို) ကိုက်ညီဖို့ POSIX 1003,2 စံမတူရှိရာကား Bash ရဲ့အပြုအမူကိုပြောင်းပါ။

--restricted

အဆိုပါ shell ကို (အောက်တွင်ကန့်သတ် SHELL ကိုကြည့်ပါ) ကန့်သတ်ဖြစ်လာသည်။

--rpm-လိုအပ်ပါတယ်

ကို run ဖို့ shell ကို script ကိုလိုအပ်လျက်ရှိသောဖိုင်တွေရဲ့စာရင်းထုတ်လုပ်ရန်။ ဒီ '-n' 'အဓိပ္ပာယ်သက်ရောက်ခြင်းနှင့်စစ်ဆေးခြင်းကိုစစ်ဆေးနေ compile လုပ်ခြင်းအချိန်အမှားကဲ့သို့တူညီသောန့်အသတ်မှဘာသာရပ် ဖြစ်. , backtick, [] စမ်းသပ်မှုများနှင့် evals အချို့မှီခိုလွဲချော်စေခြင်းငှါဒါသရုပျခှဲကြသည်မဟုတ်။ -v ညီမျှ --verbose

--version

အောင်မြင်စွာစံထုတ်လုပ်မှုနှင့်ထွက်ပေါက်အပေါ်ကား Bash ၏ဤဥပမာဗားရှင်းသတင်းအချက်အလက်ပြပါ။

အငြင်းပွားမှုများ

အငြင်းပွားမှုများ option ကိုအပြောင်းအလဲနဲ့ပြီးနောက်ဆက်လက်တည်ရှိလျက်, -c-s option ကိုမထောက်ပံ့ခဲ့ပြီး, ပထမဦးဆုံးအငြင်းအခုံ shell ကိုပညတ်တော်တို့ကိုပါဝင်တဲ့ဖိုင်တစ်ဖိုင်၏အမည်ဖြစ်ယူဆနေသည်။ အကယ်. ကား Bash ဒီဖက်ရှင်အတွက်မဖြစ်၏လျှင် $ 0 ဖိုင်ကို၏အမည်ကိုသတ်မှတ်လျက်, positional parameters များကိုကျန်ရှိနေသောအငြင်းပွားမှုများဟုသတ်မှတ်နေကြသည်။ Bash မှာဖတ်နှင့်ဤဖိုင်ကနေ command များကို ပေး. စီရင်, ထို့နောက်ပိတ်သွားစေသည်။ Bash မှာ '' s ကိုထွက်ပေါက် status ကို script ထဲမှာကွပ်မျက်ခံရပြီးခဲ့သည့် command ကို၏ထွက်ပေါက် status ကိုဖြစ်ပါတယ်။ အဘယ်သူမျှမပညတ်တို့ကိုကွပ်မျက်နေတယ်ဆိုရင်, ထွက်ပေါက် status ကို 0. တစ်ကြိုးပမ်းမှုဖြစ်ပါသည်ပထမဆုံးလက်ရှိ directory ထဲတွင်ဖိုင်ကိုဖွင့်လှစ်ဖို့ကို လုပ်. , မရှိဖိုင်ကိုတွေ့လျှင်, ထို့နောက် shell ကိုဇာတ်ညွှန်းအဘို့အ PATH အတွက် directory များရှာဖွေသည်။

INVOCATION

, ဒါမှမဟုတ်တ --login option ကိုနဲ့စတင် - တစ်ဦးရဲ့ login shell ကိုအဘယ်သူ၏ပထမဦးဆုံးအငြင်းအခုံသုည၏ဇာတ်ကောင်တစ်ဦးဖြစ်ပါတယ်တစ်ခုဖြစ်ပါသည်။

တစ်ဦးအပြန်အလှန် shell ကိုတဦးတည်းမဟုတ်သော option ကိုငြင်းခုံခြင်းမရှိဘဲနှင့်သူ၏စံ input ကိုနှင့် output ကိုနှစ်ဦးစလုံး (ကဆုံးဖြတ်အဖြစ်ဆိပ်ကမ်းတစ်ခုသို့ချိတ်ဆက်နေသော -c option ကိုမပါဘဲစတင်ခဲ့တာဖြစ်ပါတယ် isatty (3)), ဒါမှမဟုတ်တ -i option နဲ့အတူစတင်ခဲ့သည်။ PS1 set နဲ့ $ ဖြစ်ပါတယ် - ကား Bash အပြန်အလှန်လျှင်တစ် shell ကိုဇာတ်ညွှန်းတစ်ခုသို့မဟုတ် startup file ကိုဒီပြည်နယ်ကိုစမ်းသပ်ဖို့ခွင့်ပြု, ကိုယ့်ပါဝင်သည်။

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

ကား Bash အဆိုပါ --login option နဲ့အတူတစ်ဦးအပြန်အလှန်အကျိုးသက်ရောက်မှုရဲ့ login shell ကိုအဖြစ်, ဒါမှမဟုတ် non-အပြန်အလှန် shell အဖြစ်မဖြစ်၏အခါဖိုင်တည်ရှိလျှင်, ပထမဦးဆုံးဖိုင် / etc / ပရိုဖိုင်းကနေ command များကိုဖတ်ခြင်းနှင့်အလုပ်လုပ်။ ဖိုင်ဖတ်ရှုပြီးနောက်, က ~ / .bash_login, ~ / .bash_profile အဘို့အကြည့်များနှင့် ~ / .profile, ထိုအမိန့်၌၎င်း, ဖတ်ခြင်းနှင့်တည်ရှိခြင်းနှင့်ဖတ်လို့ရအောင်ကြောင်းပထမဦးဆုံးတဦးတည်းအနေဖြင့် command များကို ပေး. စီရင်။ shell ကိုဒီအပြုအမူတားစီးဖို့စတင်ချိန်တွင်အဆိုပါ --noprofile option ကိုအသုံးပြုရပေမည်။

ဘယ်အချိန်မှာတစ်ဦးရဲ့ login shell ကိုထွက်ပေါက်ကြောင့်တည်ရှိနေလျှင်, ကား Bash, ဖိုင်ကို ~ / .bash_logout ထံမှ Command ကိုဖတ်ခြင်းနှင့်အလုပ်လုပ်။

တစ်ဦးရဲ့ login shell ကိုမပေးကြောင်းတစ်ခုအပြန်အလှန် shell ကိုစတင်သောအခါဖိုင်တည်ရှိနေလျှင်, ကား Bash, ~ / .bashrc ထံမှ Command ကိုဖတ်ခြင်းနှင့်အလုပ်လုပ်။ ဒါက --norc option ကိုအသုံးပြုခြင်းအားဖြင့် inhibited နိုင်ပါသည်။ အဆိုပါ --rcfile ဖိုင် option ကိုဖိုင်ကိုအစား ~ / .bashrc ထံမှ Command ကိုဖတ်ပါနှင့် execute မှကား Bash အတင်းပါလိမ့်မယ်။

ကား Bash တစ် shell ကို script ကို run ဖို့ non-interactive စတင်သောအခါဥပမာ, ကပတ်ဝန်းကျင်ကိုအတွက် variable ကို BASH_ENV များအတွက်ကြည့်သူကရှိသေးပုံပေါ်လျှင်ယင်း၏တန်ဖိုးကိုချဲ့ထွင်ခြင်း, ဖတ်ပါနှင့် execute မှဖိုင်တစ်ဖိုင်၏အမည်အဖြစ်တိုးချဲ့တန်ဖိုးကိုကိုအသုံးပြုသည် ။ အောက်ပါ command ကို execute လုပ်ခဲ့ကြသည်လျှင်အဖြစ် Bash မှာပြုမူ:

[ "$ BASH_ENV" -n] လျှင်, ထို့နောက်။ "$ BASH_ENV"; fi

ဒါပေမယ့် PATH variable ကို၏တန်ဖိုးဖိုင်ကိုနာမအဘို့ရှာဖွေရန်အသုံးပြုသည်မဟုတ်။

ကား Bash နာမတော်ကိုအမှီ ပြု. sh နှင့်အတူမဖြစ်၏လျှင်အဖြစ်ကောင်းစွာ POSIX စံဘက်ကလိုက်လျောညီထွေစဉ်ကအနီးကပ်တတ်နိုင်သမျှ sh ၏သမိုင်းဗားရှင်း၏ startup အပြုအမူတူတဲ့ဖို့ကြိုးစားပါတယ်။ ကြောင်းနိုင်ဖို့အတွက် / etc / ပရိုဖိုင်းနဲ့ ~ / .profile ထံမှ Command ကိုဖတ်ပါနှင့် execute ဖို့ --login option နဲ့အတူတစ်ဦးအပြန်အလှန်အကျိုးသက်ရောက်မှုရဲ့ login shell ကို, ဒါမှမဟုတ် non-အပြန်အလှန် shell အဖြစ်မဖြစ်၏သောအခါ, ပထမဦးဆုံးကြိုးစားမှု။ အဆိုပါ --noprofile option ကိုဒီအပြုအမူတားစီးဖို့အသုံးပြုနိုင်ပါသည်။ နာမတော်ကိုအမှီ ပြု. sh နှင့်အတူတစ်ဦးအပြန်အလှန် shell အဖြစ်မဖြစ်၏အခါ, ကား Bash ဟာ variable ကို ENV များအတွက်ကြည့်ပါကသတ်မှတ်လျှင်ယင်း၏တန်ဖိုးကိုချဲ့ထွင်ခြင်း, ဖတ်ပါနှင့် execute မှဖိုင်တစ်ဖိုင်၏အမည်အဖြစ်တိုးချဲ့တန်ဖိုးကိုအသုံးပြုသည်။ sh အဖြစ်မဖြစ်၏တစ် shell ကိုမဆိုအခြား startup ဖိုင်တွေထဲက command များကိုဖတ်ပါနှင့် execute ကြိုးစားပါဘူးကတည်းက --rcfile option ကိုအဘယ်သူမျှမသက်ရောက်ပါတယ်။ နာမတော်ကိုအမှီ ပြု. sh နှင့်အတူမဖြစ်၏တစ်ဦးက Non-အပြန်အလှန် shell ကိုမဆိုအခြား startup ဖိုင်များကိုဖတ်ရှုဖို့ကြိုးစားပါဘူး။ sh အဖြစ်မဖြစ်၏အခါ, ကား Bash နောက် startup files တွေကိုဖတ်နေကြတယ်ပြီးနောက် posix mode ကိုဝင်။

ကား Bash အဆိုပါ --posix command line ကို option နဲ့အတူအဖြစ်, posix mode မှာစတင်ခဲ့တာဖြစ်ပါတယ်သောအခါ, startup ဖိုင်တွေများအတွက် POSIX စံအောက်ပါအတိုင်း။ ဒီ mode မှာ, အပြန်အလှန်ခွံဟာ ENV variable ကိုနှင့်ပညတ်တော်တို့ကိုချဲ့ထွင်တတ်သောအမည်တိုးချဲ့တန်ဖိုးကိုဖြစ်ပါတယ်ဖိုင်ကိုမှဖတ်ခြင်းနှင့်ကွပ်မျက်ခံရနေကြသည်။ အဘယ်သူမျှမကအခြား startup files တွေကိုဖတ်နေကြသည်။

Bash မှာကဝေးလံခေါင်သီ shell ကို daemons, များသောအားဖြင့် rshd အားဖြင့် run ခံရသောအခါဆုံးဖြတ်ရန်ရန်ကြိုးစားသည်။ ကား Bash ကြောင့် rshd အားဖြင့် run နေပါသည်ဆုံးဖြတ်သည်လျှင်ဖိုင်တည်ရှိခြင်းနှင့်ဖတ်လို့ရအောင်လျှင်ကဖတ်နှင့် ~ / .bashrc ထံမှပညတ်တော်တို့ကို ပေး. စီရင်။ sh အဖြစ်မဖြစ်၏လျှင်ဤသို့ပြုလိမ့်မည်မဟုတ်ပေ။ အဆိုပါ --norc option ကိုဒီအပြုအမူတားစီးဖို့အသုံးပြုစေခြင်းငှါ, နှင့် --rcfile option ကိုဘတ်စေရန်နောက်ထပ်ဖိုင်ကိုအတင်းဖို့အသုံးပြုစေခြင်းငှါ, ဒါပေမယ့် rshd ယေဘုယျအားဖြင့်သူတို့အား options များနှင့်အတူ shell ကိုမြွက်သို့မဟုတ်သူတို့ကိုသတ်မှတ်ထားသောခံရဖို့ခွင့်ပြုမထားဘူး။

shell ကိုထိရောက်စွာအသုံးပြုသူ (အဖွဲ့) အိုင်ဒီအစစ်အမှန်အသုံးပြုသူညီမျှမဟုတ် (အဖွဲ့) အိုင်ဒီနဲ့စတင်တာဖြစ်ပါတယ်, နှင့် -p option ကိုထောက်ပံ့သည်မဟုတ်အဘယ်သူမျှမဖွင့်ချိန်မှာ files တွေကိုဖတ်နေကြတယ်, shell ကိုလုပ်ဆောင်ချက်များကိုပတ်ဝန်းကျင်ကနေအမွေဆက်ခံကြသည်မဟုတ်, အ SHELLOPTS အကယ်. ဒါကြောင့်ပတ်ဝန်းကျင်ထဲမှာပေါ်လာလိမ့်မယ်လျှင် variable ကို, လျစ်လျူရှုသည်နှင့်ထိရောက်သောအသုံးပြုသူ id သည်အစစ်အမှန်အသုံးပြုသူ id သည်ဟုသတ်မှတ်ထားသည်။ အဆိုပါ -p option ကို invocation မှာထောက်ပံ့လျှင်, startup အပြုအမူအတူတူပင်ဖြစ်ပါသည်, သို့သော်ထိရောက်သောအသုံးပြုသူအိုင်ဒီကို reset မဟုတ်ပါဘူး။

DEFINITIONS

အောက်ပါအဓိပ္ပာယ်ဤစာရွက်စာတမ်း၏ကျန်တစ်လျှောက်လုံးအသုံးပြုကြသည်။

ဗလာဖြစ်သော

တစ်ဦးကအာကာသသို့မဟုတ် tab ကို။

စကားလုံး

shell ကိုအားဖြင့်တစ်ခုတည်းယူနစ်အဖြစ်ထည့်သွင်းစဉ်းစားဇာတ်ကောင်တစ်ဦးက sequence ကို။ ဒါ့အပြင်လက္ခဏာသက်သေအဖြစ်လူသိများ။

နာမတျောကို

တစ်ဦးကစကားလုံးအက္ခရာနံပါတ်ပါတဲ့ဇာတ်ကောင်တွေနဲ့ underscores သာပါဝင်သည်ဟုနှင့်တစ်ဦးအက်ခရာစဉျအကျင့်စာရိတ္တသို့မဟုတ် underscore နှင့်အတူစတင်။ ဒါ့အပြင်တစ်ဦးအမှတ်အသားအဖြစ်ရည်ညွှန်း။

metacharacter

အကြောင်း, အခါ, unquoted တစ်ဦးကဇာတ်ကောင်, စကားလုံးများခွဲခြား။ အောက်ပါတို့မှတစ်:

| &; () <> အာကာသ tab ကို

ထိန်းချုပ်မှုအော်ပရေတာ

တစ်ထိန်းချုပ်မှု function ကိုလုပ်ဆောင်သောတိုကင်ဖြစ်သည်။ ဒါဟာအောက်ပါသင်္ကေတများထဲကတစ်ခုဖြစ်ပါသည်:

|| & &&; ;; () |

reserved စကား

reserved စကား shell ကိုမှအထူးအဓိပ္ပာယ်ကိုရှိသည်သောစကားများဖြစ်ကြသည်။ လာသောအခါ unquoted နှင့်ရိုးရှင်းသော command ကို၏ပထမဦးဆုံးစကားလုံး (အောက်တွင် SHELL grammar ကိုကြည့်ပါ) သို့မဟုတ်တစ်ကိစ္စတွင်၏တတိယစကားလုံးဖြစ်စေသို့မဟုတ် command ကိုများအတွက် reserved အဖြစ်အောက်ပါစကားလုံးများကိုအသိအမှတ်ပြုကြသည်:

! ကို select လုပ်ပါလျှင်အမှုနေချိန်မှာ {} အချိန် [[]] သည်အထိထို့နောက် function ကိုအဘို့အ elif အခြား esac fi ပြုမိကြဘူး

SHELL သဒ္ဒါ

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

တစ်ဦးကရိုးရှင်းပြီး command ကိုအလွတ် -separated စကားလုံးများကိုလမ်းကြောင်းလွှဲခြင်းဖြင့်နောက်တော်သို့လိုက် optional ကို variable ကိုတာဝန်ကျတဲ့ sequence ကိုဖြစ်တယ်, တစ်ဦးကိုထိန်းချုပ်အော်ပရေတာများကရပ်စဲ။ ပထမဦးဆုံးစကားလုံးကွပ်မျက်ခံရခံရဖို့အမိန့်သတ်မှတ်ပါတယ်နှင့်အငြင်းအခုံသုညအဖြစ်အောင်မြင်ပြီးဖြစ်ပါတယ်။ အဆိုပါကျန်ရှိနေသောစကားမဖြစ်၏ command ကိုမှအငြင်းပွားမှုများအဖြစ်လွန်နေကြသည်။

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

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

| တစ်ဦးကပိုက်လိုင်းဇာတ်ကောင်ခြားတစ်ဦးသို့မဟုတ်ထိုထက်ပိုပညတ်တော်တို့ကိုတစ် sequence ကိုဖြစ်ပါတယ် ။ ပိုက်လိုင်းများအတွက်ပုံစံဖြစ်ပါသည်:

[အချိန် [-p]] [! ] command ကို [| command2 ... ]

command ကို၏စံ output ကို command2 ၏စံ input ကိုတစ်ပိုက်ကနေတဆင့်ချိတ်ဆက်နေသည်။ ဤသည်ဆက်သွယ်မှု (အောက်တွင်ပြန်ညွှန်းကိုကြည့်ပါ) အမိန့်များကသတ်မှတ်ထားသောကိုမဆိုပြန်လည်လမ်းညွှန်မှုမတိုင်မီဖျော်ဖြေနေသည်။

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

အချိန်ကို reserved စကားလုံးတစ်ဦးပိုက်လိုင်း precedes အကယ်. ပိုက်လိုင်းအဆုံးသတ်သောအခါ, ကြာအဖြစ်အသုံးပြုသူနှင့်၎င်း၏ကွပ်မျက်ခြင်းဖြင့်စားသုံးစနစ်အချိန်အစီရင်ခံရသည်။ အဆိုပါ -p option ကို POSIX နေဖြင့်သတ်မှတ်ထားသောကြောင့်ရန်က output format ကိုပြောင်းလဲစေပါသည်။ အဆိုပါ TIMEFORMAT variable ကိုအဆိုပါပြုပြင်ဆဲဖြစ်နေသည်ဟုသတင်းအချက်အလက်ပြသရပါမည်ကိုမည်သို့သတ်မှတ်ပါတယ်တဲ့ format နဲ့ string ကိုသတ်မှတ်ထားလိမ့်မည် အောက်တွင်ဖော်ပြထားသော Shell က Variables ကိုအောက်မှာ TIMEFORMAT ၏ဖော်ပြချက်တွင်ကြည့်ပါ။

ပိုက်လိုင်းစီ command ကို (ဆိုလိုသည်မှာတစ်ဦး subshell အတွက်) သီးခြားဖြစ်စဉ်ကိုအဖြစ်ကွပ်မျက်ခံရခြင်းဖြစ်သည်။

lists

တစ်ဦးကစာရင်းအော်ပရေတာများ၏တဦးတည်းအားဖြင့်ကွဲကွာတဦးတည်းသို့မဟုတ်ထိုထက်ပိုပိုက်လိုင်းများတစ် sequence ကိုမူကား, &, &&, ဒါမှမဟုတ် || နှင့်လုပ်နိုင်သော၏တဦးတည်းအားဖြင့်ရပ်စဲ; &, ဒါမှမဟုတ်

ဤအစာရင်းကိုအော်ပရေတာများ၏, && နှင့် || တန်းတူစားပေးမှုရှိသည်, နော; နှင့် & တန်းတူစားပေးမှုရှိသည်သော။

တဦးတည်းသို့မဟုတ်ထိုထက်ပို NEWLINE ၏တစ်ဦးက sequence ကိုအစားပညတ်တော်တို့ကိုအနားသတ်မျဉ်းတစ်ခု semicolon များစာရင်းကိုထဲမှာပေါ်လာလိမ့်မည်။

command တစ်ခုထိန်းချုပ်မှုအော်ပရေတာများကရပ်စဲ &, အခွံတစ် subshell အတွက်နောက်ခံအမိန့် ပေး. စီရင်လျှင်။ အဆိုပါ shell ကို finish ကိုမှအမိန့်စောင့်ဆိုင်းမနှင့်ပြန်လာ status ကိုတစ်ခြား 0. ပညတ်ဖြစ်၏ ဆင့်ကဲကွပ်မျက်ခံရနေကြသည်; အသီးအသီးအဘို့အခွံစောင့်အလှည့်အတွက်ရပ်ဆိုင်းပေးဖို့မှာထား၏။ အဆိုပါပြန်လာ status ကိုကွပ်မျက်ပြီးခဲ့သည့် command ကို၏ထွက်ပေါက် status ကိုဖြစ်ပါတယ်။

ထိန်းချုပ်မှုအော်ပရေတာ && နှင့် || အသီးသီးဖျောညှနျးနှငျ့စာရင်းများနှင့် OR စာရင်း။ တစ်ဦးနှင့်စာရင်းပုံစံရှိပါတယ်

command1 && command2

command2 command1 သုညတစ်ခုထွက်ပေါက် status ကိုပြန်လာလျှင်, သာလျှင်ကွပ်မျက်ခံရခြင်းဖြစ်သည်။

တစ်ခု OR စာရင်းပုံစံရှိပါတယ်

command1 || command2

command2 command1 non-သုညထွက်ပေါက် status ကိုပြန်လာလျှင်သာလြှငျကွပ်မျက်ခံရခြင်းဖြစ်သည်။ AND နှင့် OR စာရင်း၏ပြန်လာ status ကိုစာရင်းထဲတွင်ကွပ်မျက်ခံရပြီးခဲ့သည့် command ကို၏ထွက်ပေါက် status ကိုဖြစ်ပါတယ်။

compound Commands

တစ်ဦးကဝင်း command ကိုအောက်ပါတို့မှတစ်ခုဖြစ်ပါသည်:

(စာရင်း)

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

{စာရင်း; }

စာရင်းရိုးရှင်းစွာလက်ရှိ shell ကိုပတ်ဝန်းကျင်တွင်ကွပ်မျက်ခံရခြင်းဖြစ်သည်။ စာရင်းတစ်ခု NEWLINE သို့မဟုတ် semicolon နှင့်အတူရပ်စဲထားရပါမည်။ ဤသည်အုပ်စုတစ်ခုက command အဖြစ်လူသိများသည်။ အဆိုပါပြန်လာ status ကိုစာရင်း၏ထွက်ပေါက် status ကိုဖြစ်ပါတယ်။ ယူထားတဲ့စကားလုံးများကိုဖြစ်ကြပြီးတစ်ယူထားတဲ့စကားလုံးအသိအမှတ်ပြုခံရဖို့ခွင့်ပြုသည်အဘယ်မှာရှိပေါ်ပေါက်ရ metacharacters (နှင့်) မတူဘဲ {နဲ့} သတိပြုပါ။ သူတို့တစ်တွေစကားလုံးချိုးဖြစ်ပေါ်စေပါဘူးကတည်းကသူတို့ကြားနေရာလွတ်ခြင်းဖြင့်စာရင်းထဲကကွဲကွာရမည်ဖြစ်သည်။

((စကားရပ်))

ဟူသောအသုံးအနှုနျးဂဏန်းသင်္ချာဆန်းစစ်သုံးသပ်ခြင်းအောက်မှာအောက်မှာဖော်ပြထားတဲ့စည်းမျဉ်းစည်းကမ်းတွေကိုအညီအကဲဖြတ်သည်။ ဟူသောအသုံးအနှုနျး၏တန်ဖိုးသည် non-သုညဖြစ်ပါတယ်လျှင်, ပြန်လာ status ကို 0 င်ဖြစ်၏ မဟုတ်ရင်ပြန်လာ status ကိုဤ "ဟူသောအသုံးအနှုနျး" စေအတိအကျညီမျှသည် 1. ဖြစ်ပါတယ်။

[[စကားရပ်]]

အဆိုပါခြွင်းချက်စကားရပ်စကားရပ်၏အကဲဖြတ်ပေါ် မူတည်. 0 င်သို့မဟုတ် 1 status ကိုပြန်သွားပါ။ အသုံးအနှုန်းတွေကနျ့စကားလုံးအောက်မှာအောက်မှာဖော်ပြထားတဲ့မူလတန်း၏ရေးစပ်နေကြသည်။ နှုတ်ကပတ်တရားတော်ကိုပိုင်းခြားနှင့်လမ်းကြောင်းအမည်ကိုတိုးချဲ့အကြားစကားများအပေါ်ဖျော်ဖြေ [[နဲ့]] ကြသည်မဟုတ်, tilde တိုးချဲ့, parameter သည်နှင့် variable ကိုချဲ့ထွင်မှု, ဂဏန်းသင်္ချာချဲ့ထွင်, command ကိုအစားထိုး, ဖြစ်စဉ်ကိုအစားထိုးခြင်း, ကိုးကားဖယ်ရှားရေးဖျော်ဖြေနေကြသည်။

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

အသုံးအနှုန်းတွေစားပေးမှု၏အမိန့်လျော့ကျလာအတွက်စာရင်းအောက်ပါအော်ပရေတာကို အသုံးပြု. ပေါင်းစပ်စေခြင်းငှါ:

(စကားရပ်)

စကားရပ်၏တန်ဖိုး Returns ။ ဤသည်အော်ပရေတာများ၏ပုံမှန်စားပေးမှု override ဖို့အသုံးပြုနိုင်ပါသည်။

! စကားရပ်

စကားရပ်မှားယွင်းသောလျှင်စစ်မှန်သော။

expression1 && expression2

စစ်မှန်သော expression1 နှင့် expression2 နှစ်ဦးစလုံးစကားမှန်လျှင်။

expression1 || တစ်ခုခုကို expression1 သို့မဟုတ် expression2 မှန်လျှင် expression2 စစ်မှန်သော။

အဆိုပါ && နှင့် || expression1 ၏တန်ဖိုးတစ်ခုလုံးကိုခြွင်းချက်စကားရပ်၏ပြန်လာတန်ဖိုးကိုဆုံးဖြတ်ရန်လုံလောက်သောလျှင်အော်ပရေတာ expression2 အကဲဖြတ်ကြပါဘူး။

နာမအဘို့ [စကားလုံးအတွက်]; စာရင်းပြုကြလော့ ပြီးပြီ

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

(; expr2; expr3) (expr1) သည် ဖြစ်. , စာရင်းပြုကြလော့ ပြီးပြီ

ပထမဦးစွာဂဏန်းသင်္ချာစကားရပ် expr1 ဂဏန်းသင်္ချာဆန်းစစ်သုံးသပ်ခြင်းအောက်မှာအောက်မှာဖော်ပြထားတဲ့စည်းမျဉ်းစည်းကမ်းတွေကိုအညီအကဲဖြတ်သည်။ ကသုညတန်ဖိုးအထိဂဏန်းသင်္ချာစကားရပ် expr2 ပြီးတော့အကြိမ်ကြိမ်အကဲဖြတ်သည်။ expr2 non-သုညတန်ဖိုးကိုတန်ဖိုးတစ်ခုချင်းစီကိုအချိန်စာရင်းကိုကွပ်မျက်ခံရခြင်းဖြစ်သည်နှင့်ဂဏန်းသင်္ချာစကားရပ် expr3 အကဲဖြတ်သည်။ မည်သည့်စကားရပ်ချန်လှပ်လျှင်ကြောင့်အဆိုပါပြန်လာတန်ဖိုးအသုံးအနှုန်းတွေမဆိုမမှန်ကန်လျှင်ကွပ်မျက်ခံရခြင်းသို့မဟုတ်မမှန်သောကြောင်းစာရင်းအတွက်နောက်ဆုံး command ကို၏ထွက်ပေါက် status ကိုတစ်ခုဖြစ်သည် 1. တန်ဖိုးလျှင်အဖြစ်ပြုလုပ်ပြုမူ။

ရွေးချယ်ထားသောအမည်ဖြင့် [စကားလုံးအတွက်]; စာရင်းပြုကြလော့ ပြီးပြီ

အတွက်အောက်ပါစကားများစာရင်းပစ္စည်းစာရင်းတစ်ခုထုတ်လုပ်, တိုးချဲ့ခြင်းဖြစ်သည်။ တိုးချဲ့စကားများ set ကိုတစ်ဦးချင်းစီဟာအရေအတွက်အားဖြင့်ရှေ့ပြေး, စံအမှားပေါ်ရိုက်နှိပ်ထားပါသည်။ ထဲမှာစကားလုံးချန်လှပ်လျှင်, positional parameters တွေကို (အောက်တွင် parameter ကိုကြည့်ပါ) ပုံနှိပ်နေကြသည်။ အဆိုပါ PS3 prompt ကိုပြီးတော့ပြသနှင့်စံ input ကိုမှဖတ်တစ်လိုင်းဖြစ်ပါတယ်။ လိုင်းအတွက်ပြသသောတရားစကားတစျခုမှသက်ဆိုင်ရာနံပါတ်ပါဝင်ပါသည်လျှင်, နာမတျော၏တန်ဖိုးကိုကြောင်းစကားလုံးဟုသတ်မှတ်ထားသည်။ မျဉ်းဗလာဖြစ်နေသည်လျှင်, စကားလုံးများနှင့် prompt ကိုနောက်တဖန်ခင်းကျင်းပြသနေကြသည်။ EOF ကိုဖတ်လျှင်, command ကိုပြီးဆုံး။ အခြားမည်သည့်တန်ဖိုးကိုအကြောင်းတရားများတရားမဝင်သောဟုသတ်မှတ်ခံရဖို့အမည်ကိုဖတ်ပါ။ အဆိုပါလိုင်းဖတ်ပြီးသားဟာ variable ကို REPLY ထဲတွင်သိမ်းဆည်းထားသည်။ တစ်ချိုး command ကိုမှီတိုငျအောငျအသီးအသီးရွေးချယ်ရေးကွပ်မျက်ခံရပြီးနောက်အဆိုပါစာရင်းကွပ်မျက်ခံရခြင်းဖြစ်သည်။ အဘယ်သူမျှမပညတ်တို့ကိုကွပ်မျက်ခံခဲ့ရလျှင်ရွေးချယ်ထားသောများ၏ထွက်ပေါက် status ကိုထွက်ပေါက်စာရင်းထဲတွင်ကွပ်မျက်ခံရပြီးခဲ့သည့် command ကို၏အခြေအနေ, သို့မဟုတ်သုညဖြစ်ပါတယ်။

ပုံစံ] | [[(] ပုံစံ [အတွက်အမှုစကားလုံး

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

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

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

စာရင်းနေစဉ်; စာရင်းပြုကြလော့ ပြီးပြီ

စာရင်းသည်အထိ; စာရင်းပြုကြလော့ ပြီးပြီ

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

[function ကို] နာမကိုအမှီ () {စာရင်း; }

ဤအမည်သည်အမည်ရှိ function ကိုသတ်မှတ်ပါတယ်။ function ကို၏ခန္ဓာကိုယ်အကြား {နဲ့} command များကိုစာရင်းဖြစ်ပါတယ်။ နာမတော်သည်ရိုးရှင်းသော command ကို၏အမည်ကိုအဖြစ်သတ်မှတ်ထားသောဖြစ်ပါတယ်အခါတိုင်းဤစာရင်းတွင်ကွပ်မျက်ခံရခြင်းဖြစ်သည်။ တစ်ဦး function ကို၏ထွက်ပေါက် status ကိုခန္ဓာကိုယ်ထဲမှာကွပ်မျက်ခံရပြီးခဲ့သည့် command ကို၏ထွက်ပေါက် status ကိုဖြစ်ပါတယ်။ (အောက်တွင် function ကိုကြည့်ပါ။ )

မှတ်ချက်များ

non-အပြန်အလှန် shell ကို, သို့မဟုတ် shopt builtin ဖို့ interactive_comments option ကို enabled ထားတဲ့အတွက်အပြန်အလှန် shell ကို (SHELL BUILTIN အောက်တွင်ဖော်ပြထားသောပညတ်တော်မူ၏ကိုကြည့်ပါ) ခုနှစ်, # နှင့်အတူစတင်စကားလုံးတစ်လုံးကြောင့်စကားလုံးဖြစ်ပေါ်စေသည်နှင့်အကြောင်းလိုင်းပေါ်မှာရှိသမျှကျန်ရှိသောဇာတ်ကောင်လျစ်လျူရှုခံရဖို့။ ဖွင့် interactive_comments option ကိုမပါဘဲတစ်ဦးအပြန်အလှန် shell ကိုမှတ်ချက်ကိုခွင့်ပြုမထားဘူး။ အဆိုပါ interactive_comments option ကိုအပြန်အလှန်ခွံအတွက် default အနေဖြင့်ပေါ်သည်။

ကိုးကား

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

DEFINITIONS အောက်မှာအထက်တွင်ဖော်ပြထားသော metacharacters တစ်ခုချင်းစီ shell ကိုအထူးအဓိပ်ပာယျရှိပြီးပါကသူ့ဟာသူကိုကိုယ်စားပြုဖို့ဖြစ်ပါတယ်လျှင်ကိုးကားရမည်ဖြစ်သည်။

အမိန့်သမိုင်းတိုးချဲ့အဆောက်အဦအများအားဖြင့်, သမိုင်းတိုးချဲ့ဇာတ်ကောင်အသုံးချခြင်းခံရသည့်အခါ! , သမိုင်းတိုးချဲ့ကာကွယ်တားဆီးဖို့ကိုးကားရမည်ဖြစ်သည်။

သုံးကိုးကားယန္တရားများရှိပါတယ်: ထွက်ပေါက်ဇာတ်ကောင်, တစ်ခုတည်းကိုးကားနှင့်နှစ်ဆကိုးကား။

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

တစ်ခုတည်းကိုးကားအတွက်ဇာတ်ကောင် Enclosing အဆိုပါကိုးကားအတွင်းတစ်ဦးချင်းစီဇာတ်ကောင်များ၏ပကတိတန်ဖိုးကိုထိန်းသိမ်း။ တစ်ဦးကတစ်ခုတည်းကိုးကားနေတဲ့ဘယ်ဘက်မျဉ်းစောင်းနေဖြင့်ရှေ့ပြေးပင်အခါ, တစ်ခုတည်းကိုးကားအကြားပေါ်ပေါက်နိုင်မည်မဟုတ်ပါ။

နှစ်ဆကိုးကားအတွက်ဇာတ်ကောင် Enclosing `, $ ၏ချွင်းချက်နှင့်တကွ, ကိုးကားအတွင်းအားလုံးဇာတ်ကောင်များ၏ပကတိတန်ဖိုးကိုထိန်းသိမ်းနှင့် \ ။ အဆိုပါဇာတ်ကောင် $ နှင့် `နှစ်ဆကိုးကားအတွင်း၎င်းတို့၏အထူးအဓိပ်ပာယျကိုဆက်လက်ထိန်းသိမ်းရန်။ အဆိုပါဘယ်ဘက်မျဉ်းစောင်းအောက်ပါဇာတ်ကောင်များ၏တဦးတည်းအားဖြင့်နောက်တော်သို့လိုက်တဲ့အခါမှသာ၎င်း၏အထူးအဓိပ္ပာယ်ကိုဆက်လက်ထိန်းသိမ်းထား: $, `," \, ဒါမှမဟုတ် တစ်ဦးကို double quote တစ်ဘယ်ဘက်မျဉ်းစောင်းအတူကရှေ့အနေဖြင့်နှစ်ဆကိုးကားအတွင်းကိုးကားနိုင်ပါသည်။

လာသောအခါနှစ်ဆကိုးကားအတွက်အထူး parameters များကို * နှင့် @ (အောက်တွင် parameter ကိုကြည့်ပါ) အထူးအဓိပ္ပာယ်ကိုရှိသည်။

ပုံစံ $ '' string ကို '' ၏စကားများအထူးကုသနေကြသည်။ ဒီစကားလုံးဟာ ANSI C ကိုစံတို့က specifed အဖြစ်အစားထိုးဘယ်ဘက်မျဉ်းစောင်း-ထွက်ပြေးလွတ်မြောက်ဇာတ်ကောင်နှင့်အတူ string ကိုမှချဲ့ထွင်။ ဘယ်ဘက်မျဉ်းစောင်းထွက်ပေါက်ပာအောက်ပါအတိုင်း, ပစ္စုပ္ပန်သည်မှန်လျှင်, ဝှက်နေကြသည်:

\ တစ်ဦး

သတိပေးချက် (ခေါင်းလောင်း)

\ ခ

နောက်ပြန်

\ အီး

တစ်ဦးထွက်ပေါက်ဇာတ်ကောင်

\ f

ပုံစံအစာကျွေးခြင်း

\ n

အသစ်ကလိုင်း

\ r

ရထားပြန်လာ

\ t ကို

အလျားလိုက် tab ကို

\ း

ဒေါင်လိုက် tab ကို

\\

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

\ '

တစ်ခုတည်းကိုးကား

\ nnn

အဘယ်သူ၏တန်ဖိုး octal တန်ဖိုးကို nnn (သုံးဂဏန်းမှတဦးတည်း) ဖြစ်ပါသည်ရှစ်-bit မှာဇာတ်ကောင်

\ x ကိုနာရီ

အဘယ်သူ၏တန်ဖိုး hexadecimal တန်ဖိုးနာရီဖြစ်ပါတယ်ရှစ်-bit မှာအက္ခရာ (တစ်ဦးသို့မဟုတ်နှစ်ဦးကို hex ဂဏန်း)

\ c ကိုက x

တစ်ဦး control- x ကိုဇာတ်ကောင်

ဒေါ်လာစျေးနိမိတ်လက္ခဏာကိုလက်ရှိမပြဘူးလျှင်အဖြစ်တိုးချဲ့ရလဒ်, Single-ကိုးကားသည်။

တစ်ဒေါ်လာစျေးနိမိတ်လက္ခဏာကို ($) ကရှေ့ပြေးတစ်ဦးကို double-ကိုးကား string ကို string ကိုလက်ရှိဒေသ၏အဆိုအရဘာသာပြန်ထားသောခံရဖို့ဖြစ်ပေါ်စေပါလိမ့်မယ်။ လက်ရှိဒေသ C သို့မဟုတ် POSIX ဖြစ်ပါတယ်လျှင်, ဒေါ်လာစျေးနိမိတ်လက္ခဏာကိုလျစ်လျူရှုနေပါတယ်။ string ကိုဘာသာပြန်အစားထိုးလျှင်, အစားထိုးကို double-ကိုးကားသည်။

parameter

တစ်ဦးက parameter သည်တန်ဖိုးများကိုသိုလှောင်ထားတဲ့ entity ဖြစ်ပါတယ်။ ဒါဟာအမည်, နံပါတ်, ဒါမှမဟုတ်အထူးန့်သတ်ချက်များအောက်တွင်အောက်တွင်ဖော်ပြထားသောအထူးဇာတ်ကောင်များ၏တဦးတည်းဖြစ်နိုင်သည်။ shell ကိုရဲ့ရည်ရွယ်ချက်တစ်ခု variable ကိုနာမည်တစ်ခုအားဖြင့်ခေါ်လိုက်ပါမယ်တဲ့ parameter သည်ဖြစ်ပါတယ်။ တစ်ဦးက variable ကိုတန်ဖိုးနှင့်သုညသို့မဟုတ်ထိုထက်ပို attribute တွေရှိပါတယ်။ attribute တွေ (SHELL BUILTIN command အတွက်အောက်တွင်ဖော်ပြထားသောကြေညာကြည့်ပါ) command ကို builtin ကြေညာစာတမ်းကို အသုံးပြု. တာဝန်ပေးအပ်ထားပါသည်။

ဒါကြောင့်တန်ဖိုးတာဝန်ပေးအပ်ထားပြီးလျှင်တစ်ဦးကထိန်းကွပ်ကိန်းသတ်မှတ်ထားတာဖြစ်ပါတယ်။ အဆိုပါတရားမဝင်သော string ကိုခိုင်လုံသောတန်ဖိုးကိုဖြစ်ပါတယ်။ တစ်ဦး variable ကိုသတ်မှတ်ပြီးတာနဲ့ကြောင့်သာအားမသတ်မှတ်ထား builtin command ကို (SHELL BUILTIN အောက်တွင်ဖော်ပြထားသောပညတ်တော်မူ၏ကိုကြည့်ပါ) ကို အသုံးပြု. အားမသတ်မှတ်ထားဖြစ်နိုင်သည်။

တစ်ဦးက variable ကိုပုံစံ၏ကြေညာချက်အားဖြင့်ရန်တာဝန်ပေးစေခြင်းငှါ

နာမကိုအမှီ = [တန်ဖိုးကို]

တနျဖိုးမပေးသောလျှင်, variable ကိုပုတရားမဝင်သော string ကိုတာဝန်ပေးသည်။ အားလုံးတန်ဖိုးများ (အောက်တွင်ချဲ့ထွင်ကြည့်ပါ) tilde တိုးချဲ့, parameter သည်နှင့် variable ကိုချဲ့ထွင်မှု, command ကိုအစားထိုး, ဂဏန်းသင်္ချာချဲ့ထွင်ခြင်း, ကိုးကားဖယ်ရှားရေးကိုခံယူ။ အဆိုပါ variable ကိုယင်း၏ကိန်း attribute ကို set ကိုရှိပါတယ်လျှင်, တန်ဖိုး (အောက်တွင်ဖော်ပြထားသောဂဏန်းသင်္ချာချဲ့ကြည့်ပါ) $ (( ... )) တိုးချဲ့အသုံးမရင်တောင်တိုးချဲ့ arithmetic မှဘာသာရပ်ဖြစ်ပါသည်။ နှုတ်ကပတ်တရားတော်ကိုအထူးန့်သတ်ချက်များအောက်တွင်အောက်တွင်ဖော်ပြထားသောကရှင်းပြသည်အဖြစ်ပိုင်းခြား "$ @" ၏ချွင်းချက်နှင့်အတူဖျော်ဖြေမပေးပါ။ လမ်းကြောင်းအမည်ကိုတိုးချဲ့ဖျော်ဖြေမပေးပါ။ တာဝန်ကျတဲ့ထုတ်ပြန်ချက်များကိုလည်းဖတ်ရန်အတွက်ကြေညာစာတမ်းမှအငြင်းပွားမှုများ, လုပ်ခြင်း, စာစီ, ပို့ကုန်, နှင့်ဒေသခံ builtin ပညတ်တော်တို့ကိုအဖြစ်ပေါ်လာလိမ့်မည်။

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

အပြုသဘော parameter သည်ကမဖြစ်၏သည်နှင့် set ကို builtin command ကို အသုံးပြု. တာဝန်ပြန်ကျတယ်စေခြင်းငှါလာသောအခါ 0. Positional parameters များကို shell ကိုရဲ့ဆင်ခြေကနေတာဝန်ပေးနေသောတစ်ခုတည်းဂဏန်းထက်အခြားတဦးတည်းသို့မဟုတ်ထိုထက်ပိုဂဏန်းအားဖြင့်ခေါ်လိုက်ပါမယ်တဲ့ parameter သည်ဖြစ်ပါသည်။ positional parameters များကိုတာဝန်ကျတဲ့ထုတ်ပြန်ချက်များနှင့်အတူဖို့တာဝန်မည်မဟုတ်ပါ။ တစ် shell ကို function ကိုကွပ်မျက်ခံရသောအခါအပြုသဘော parameters တွေကိုယာယီ (အောက်တွင် function ကိုကြည့်ပါ) ကိုအစားထိုးနေကြပါတယ်။

တစ်ခုတည်းဂဏန်းထက်ပိုပါဝင်သည်ဟုတစ် positional parameter သည်ကျယ်ပြန့်လာတဲ့အခါသူက (အောက်တွင်ချဲ့ထွင်ကြည့်ပါ) ဆီကိုဦးအတွက်ပူးတွဲရမည်ဖြစ်သည်။

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

အဆိုပါ shell ကိုအထူးအများအပြား parameters တွေကိုဆကျဆံတယျ။ ဤရွေ့ကား parameters များကိုသာရည်ညွှန်းစေခြင်းငှါ, သူတို့ကိုမှတာဝနျကိုခွင့်ပြုမထားပေ။

*

တဦးတည်းအနေဖြင့်စတင်, အ positional parameters တွေကိုမှတိုးချဲ့။ ချဲ့ထွင်နှစ်ဆကိုးကားအတွင်းဖြစ်ပေါ်သည့်အခါက IFS အထူး variable ကို၏ပထမဦးဆုံးဇာတ်ကောင်ခြားတစ်ဦးချင်းစီ parameter သည်၏တန်ဖိုးနှင့်အတူတစ်ခုတည်းစကားလုံးမှချဲ့ထွင်။ အဲဒီက c ဟာ IFS variable ကို၏တန်ဖိုးရဲ့ပထမဦးဆုံးဇာတ်ကောင်သည်အဘယ်မှာရှိ, "$ *" ညီမျှသည် "$ 1 က c $ 2 က c ... " ဖြစ်ပါသည်။ IFS အားမသတ်မှတ်ထားလျှင်, ထို parameters များကိုနေရာများအားဖြင့်ကွဲကွာနေကြသည်။ IFS တရားမဝင်သောဖြစ်ပါတယ်လျှင်, parameters တွေကိုထည့်ထားကွားခြင်းမရှိဘဲပူးပေါင်းနေကြသည်။

@

တဦးတည်းအနေဖြင့်စတင်, အ positional parameters တွေကိုမှတိုးချဲ့။ ချဲ့ထွင်နှစ်ဆကိုးကားအတွင်းဖြစ်ပေါ်သည့်အခါတစ်ဦးချင်းစီ parameter သည်သီးခြားစကားလုံးမှချဲ့ထွင်။ အကြောင်း, "$ @" "$ 1" "$ 2 မှညီမျှသည်" ... အဘယ်သူမျှမ positional parameters များကိုရှိပါတယ်သောအခါ "$ @" ဖြစ်ပြီး $ @ (ဆိုလိုသည်မှာသူတို့ဖယ်ရှားကြသည်) ဘာမျှမမှတိုးချဲ့။

#

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

?

အများဆုံးမကြာသေးမီကကွပ်မျက်ခံရ foreground ပိုက်လိုင်း၏ status မှတိုးချဲ့။

-

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

$

shell ကို၏လုပ်ငန်းစဉ် ID ကိုမှတိုးချဲ့။ တစ်ဦး () subshell အတွက်ကြောင့်လက်ရှိ shell ကိုမ subshell ၏လုပ်ငန်းစဉ် ID ကိုမှချဲ့ထွင်။

!

အများဆုံးမကြာသေးမီကကွပ်မျက်ခံရနောက်ခံ (ပြတ်တောင်းပြတ်တောင်း) command ကို၏လုပ်ငန်းစဉ် ID ကိုမှတိုးချဲ့။

0 င်

shell ကိုသို့မဟုတ် shell script ၏နာမတော်ကိုတိုးချဲ့။ ဒီအခွံစတင်ခြင်းမှာသတ်မှတ်ထားခြင်းဖြစ်သည်။ ကား Bash ပညတ်တော်ဖိုင်တစ်ဖိုင်နှင့်အတူမဖြစ်၏လျှင် $ 0 င်ကြောင်းဖိုင်၏အမည်သတ်မှတ်ထားခြင်းဖြစ်သည်။ ကား Bash အဆိုပါ -c option ကိုစတင်ပါကတဦးတည်းပစ္စုပ္ပန်လျှင်, ထို့နောက် $ 0, ကွပ်မျက်ခံရခံရဖို့ string ကိုအပြီးပထမဦးဆုံးအငြင်းအခုံဟုသတ်မှတ်ထားသည်။ အငြင်းအခုံသုညကပေးတဲ့အဖြစ်ဒီလိုမှမဟုတ်ရင်ကကား Bash မြွက်ဖို့အသုံးပြုဖိုင်အမည်ကိုဟုသတ်မှတ်ထားသည်။

_

shell ကို startup မှာအငြင်းအခုံစာရင်းထဲတွင်လွန်အဖြစ်ကွပ်မျက်ခံရ shell ကိုသို့မဟုတ် shell script ၏အကြွင်းမဲ့အာဏာဖိုင် name ကိုမှသတ်မှတ်ထားသည်။ နောက်ပိုင်းတွင်, ချဲ့ထွင်ပြီးနောက်ယခင် command ကိုမှပြီးခဲ့သည့်အငြင်းအခုံမှချဲ့ထွင်။ ဒါ့အပြင်ကွပ်မျက်ခံရတစ်ခုချင်းစီကို command ကိုအပြည့်အဝဖိုင်အမည်သတ်မှတ်ထားခြင်းနှင့်ကြောင်း command ကိုတင်ပို့ပတ်ဝန်းကျင်တွင်တင်လိုက်တယ်။ မေးလ်စစ်ဆေးနေသည့်အခါ, ဒီ parameter သည်လက်ရှိတွင် check လုပ်ထားခံရမေးလ်ဖိုင်၏အမည်ရရှိထားသူဖြစ်ပါသည်။

Shell က Variables ကို

အောက်ပါ variable တွေကို shell ကိုသတ်မှတ်ကြသည်:

ရှကျကွောကျတတျသော

ကား Bash ၏ဤဥပမာအားဖြင့်မြွက်ဖို့အသုံးပြုပြည့်အဝဖိုင် name ကိုမှတိုးချဲ့။

BASH_VERSINFO

အဘယ်သူ၏အဖွဲ့ဝင်ကား Bash ၏ဤဥပမာဗားရှင်းသတင်းအချက်အလက်ကိုင်တစ်ဦးမှာဖတ်ရန်အတွက်ခင်းကျင်း variable ကို။ အောက်မှာဖေါ်ပြတဲ့အတိုင်းခင်းကျင်းအဖွဲ့ဝင်များမှတာဝန်ပေးအပ်တန်ဖိုးများနေသောခေါင်းစဉ်:

BASH_VERSINFO [0]

အဓိကဗားရှင်းနံပါတ် (လွှတ်ပေးရန်)

BASH_VERSINFO [1]

အဆိုပါအသေးစားဗားရှင်းနံပါတ် (ဗားရှင်း)

BASH_VERSINFO [2]

အဆိုပါ patch ကိုအဆင့်။

BASH_VERSINFO [3]

အဆိုပါတည်ဆောက်ဗားရှင်း။

BASH_VERSINFO [4]

အဆိုပါဖြန့်ချိ status ကို (ဥပမာ beta1)

BASH_VERSINFO [5]

MACHTYPE ၏တန်ဖိုး။

BASH_VERSION

ကား Bash ၏ဤဥပမာအားဖြင့်ဗားရှင်းဖော်ပြတဲ့ string ကိုမှတိုးချဲ့။

COMP_CWORD

COMP_LINE

လက်ရှိ command line က။ ဤသည် variable ကို (အောက်တွင် programmer ပြီးစီးကိုကြည့်ပါ) ကိုသာသည် Programmable ပြီးစီးအဆောက်အဦများကမဖြစ်၏ shell ကိုလုပ်ဆောင်ချက်များကိုနှင့်ပြင်ပပညတ်တော်တို့ကိုများတွင်ရရှိနိုင်ပါသည်။

COMP_POINT

COMP_WORDS

တစ်ခုခင်းကျင်း variable ကိုလက်ရှိ command line ကိုအတွက်တစ်ဦးချင်းစကားများပါဝင်သည်ဟု (အောက်တွင် Array ကိုကြည့်ပါ) ။ ဤသည် variable ကို (အောက်တွင် programmer ပြီးစီးကိုကြည့်ပါ) ကိုသာသည် Programmable ပြီးစီးအဆောက်အဦများကမဖြစ်၏ shell ကိုလုပ်ဆောင်ချက်များကိုအတွက်ရရှိနိုင်ပါသည်။

DIRSTACK

တစ်ခုခင်းကျင်း variable ကို (အောက်တွင် Array ကိုကြည့်ပါ) directory ကို stack ၏လက်ရှိအကြောင်းအရာများကို်။ directories သူတို့ builtin အဆိုပါ dirs အားဖြင့်ပြသနေသောနိုင်ရန်အတွက် stack ထဲမှာပေါ်လာပါသည်။ ဒီစစ်ခင်းကျင်း variable ကိုအဖွဲ့ဝင်များမှသတ်မှတ်ခြင်းဟာ stack ထဲမှာပြီးသား directory များပြုပြင်မွမ်းမံရန်အသုံးပြုစေခြင်းငှါ, သို့သော် pushd နှင့် popd builtins directory များထည့်ခြင်းနှင့်ဖယ်ရှားရန်အသုံးပြုရမည်ဖြစ်သည်။ ဒီ variable ကိုမှတာဝန်ကျတဲ့နေရာကလက်ရှိ directory ကိုပြောင်းလဲပစ်မည်မဟုတ်။ DIRSTACK အားမသတ်မှတ်ထားလျှင်, အဲဒါကိုနောက်ပိုင်းတွင်ပြန်လည်သတ်မှတ်မှုဖြစ်ပါသည်လျှင်ပင်၎င်း၏အထူးဂုဏ်သတ္တိများရှုံးသည်။

EUID

shell ကို startup မှာနလက်ရှိအသုံးပြုသူများ၏ထိရောက်သောအသုံးပြုသူ ID ကိုမှတိုးချဲ့။ ဤသည် variable ကိုဖတ်ရန်အတွက်ဖြစ်ပါတယ်။

FUNCNAME

မည်သည့်လက်ရှိ-ကွပ်မျက် shell ကို function ကို၏အမည်ကို။ ဤသည် variable ကိုတစ် shell ကို function ကိုကွပ်မျက်ဖြစ်ပါတယ်တဲ့အခါမှသာတည်ရှိ။ FUNCNAME မှတာဝန်ကျမျှအကျိုးသက်ရောက်မှုရှိသည်နှင့်မှားယွင်းမှုတစ်ခု status ကိုပြန်သွားပါ။ FUNCNAME အားမသတ်မှတ်ထားလျှင်, အဲဒါကိုနောက်ပိုင်းတွင် reset ပင်လျှင်၎င်း၏အထူးဂုဏ်သတ္တိများရှုံးသည်။

အုပ်စုများ

လက်ရှိအသုံးပြုသူအဖွဲ့ဝင်တစ်ဦးဖြစ်သည့်အုပ်စုများ၏စာရင်းကို်တစ်ဦးခင်းကျင်း variable ကို။ အုပ်စုတာဝန်ကျမျှအကျိုးသက်ရောက်မှုရှိသည်နှင့်မှားယွင်းမှုတစ်ခု status ကိုပြန်သွားပါ။ အုပ်စုများအားမသတ်မှတ်ထားလျှင်, အဲဒါကိုနောက်ပိုင်းတွင် reset ပင်လျှင်၎င်း၏အထူးဂုဏ်သတ္တိများရှုံးသည်။

HISTCMD

လက်ရှိ command ကို၏သမိုင်းနံပါတ်, ဒါမှမဟုတ်သမိုင်းစာရင်းထဲတွင်အညွှန်းကိန်း။ HISTCMD အားမသတ်မှတ်ထားလျှင်, အဲဒါကိုနောက်ပိုင်းတွင်ပြန်လည်သတ်မှတ်မှုဖြစ်ပါသည်လျှင်ပင်၎င်း၏အထူးဂုဏ်သတ္တိများရှုံးသည်။

HOSTNAME

အလိုအလျှောက်လက်ရှိအိမ်ရှင်၏အမည်ကိုမှသတ်မှတ်ထားသည်။

HOSTTYPE

အလိုအလျှောက်သီးခြားစွာကား Bash ကွပ်မျက်သောအပေါ်စက်အမျိုးအစားကိုဖော်ပြထားတယ်တဲ့ string ကိုမှသတ်မှတ်ထားသည်။ ကို default system ကို-မှီခိုသည်။

LINENO

ဒီ parameter သည်ရည်ညွှန်းခြင်းဖြစ်သည်တစ်ခုချင်းစီကိုအချိန်, shell ကိုဇာတ်ညွှန်းသို့မဟုတ် function ကိုအတွင်း (1 နှင့်အတူစတင်) လက်ရှိ sequential လိုင်းအရေအတွက်ကိုကိုယ်စားပြုတစ်ဦးဒဿမအရေအတွက်ကို substitutes ။ မ script ကိုသို့မဟုတ် function ကိုအတွက်အခါ, အစားထိုးတန်ဖိုးအဓိပ္ပါယ်ရှိသောဖြစ်အာမခံချက်မပေးပါ။ LINENO အားမသတ်မှတ်ထားလျှင်, အဲဒါကိုနောက်ပိုင်းတွင် reset ရင်တောင်၎င်း၏အထူးဂုဏ်သတ္တိများရှုံးသည်။

MACHTYPE

အလိုအလျှောက်အပြည့်အဝကား Bash စံကို GNU CPU-ကုမ္ပဏီ-system ကို format နဲ့, ကွပ်မျက်သောရက်နေ့တွင်စနစ်အမျိုးအစားကိုဖော်ပြထားတယ်တဲ့ string ကိုမှသတ်မှတ်ထားသည်။ ကို default system ကို-မှီခိုသည်။

OLDPWD

အဖြစ် cd command ကိုသတ်မှတ်ယခင်အလုပ်လုပ်ကိုင် directory ကို။

OPTARG

command ကို builtin အဆိုပါ getopts အားဖြင့်လုပ်ငန်းများ၌ပြီးခဲ့သည့် option ကိုငြင်းခုံခြင်း၏တန်ဖိုး (SHELL BUILTIN အောက်တွင်ဖော်ပြထားသောပညတ်တော်မူ၏ကြည့်ပါ)

OPTIND

command ကို builtin အဆိုပါ getopts အားဖြင့်လုပ်ငန်းများ၌ခံရဖို့လာမယ့်အငြင်းအခုံ၏အညွှန်းကိန်း (SHELL BUILTIN အောက်တွင်ဖော်ပြထားသောပညတ်တော်မူ၏ကြည့်ပါ)

OSTYPE

အလိုအလျှောက်ကား Bash ကွပ်မျက်သောပေါ်မှ operating system ကိုဖျောပွထားသတဲ့ string ကိုမှသတ်မှတ်ထားသည်။ ကို default system ကို-မှီခိုသည်။

PIPESTATUS

တစ်ခုခင်းကျင်း variable ကို (အောက်တွင် Array ကိုကြည့်ပါ) (သာတစ်ခုတည်း command ကိုမဆံ့ရသော) ကိုအများဆုံးမကြာသေးမီက-ကွပ်မျက်ခံရ foreground ပိုက်လိုင်းအတွက်လုပ်ငန်းစဉ်များအနေဖြင့်ထွက်ပေါက် status ကိုတန်ဖိုးများများစာရင်းကို်။

PPID

shell ကိုရဲ့မိဘများ၏ဖြစ်စဉ်ကို ID ကို။ ဤသည် variable ကိုဖတ်ရန်အတွက်ဖြစ်ပါတယ်။

PWD

အဖြစ် cd command ကိုသတ်မှတ်လက်ရှိအလုပ်လုပ်နေသည် directory ။

Random

ဒီ parameter သည်ရည်ညွှန်းခြင်းဖြစ်သည်တစ်ခုချင်းစီကိုအချိန်, 0 နှင့် 32767 အကြားတစ်ဦးကိုကျပန်းကိန်းထုတ်လုပ်ပြီးဖြစ်ပါတယ်။ ကျပန်းနံပါတ်များ၏ sequence ကိုကျပန်းမှတန်ဖိုးတာဝန်ပေးဖို့အားဖြင့်စတင်ဖို့လိမ့်မည်။ Random အားမသတ်မှတ်ထားလျှင်, အဲဒါကိုနောက်ပိုင်းတွင်ပြန်လည်သတ်မှတ်မှုဖြစ်ပါသည်လျှင်ပင်၎င်း၏အထူးဂုဏ်သတ္တိများရှုံးသည်။

REPLY

အဘယ်သူမျှမငြင်းခုံထောက်ပံ့နေကြသည်အခါဖတ် builtin command ကိုဖတ် input ကို၏လိုင်းကိုရန်သတ်မှတ်မည်။

စက္ကန့်

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

SHELLOPTS

enabled shell ကိုရွေးချယ်စရာတစ်ဦးအူမကြီး-separated စာရင်းဖြစ်သည်။ အဆိုပါစာရင်းထဲတွင်တစ်ခုချင်းစီကိုစကားလုံး (SHELL BUILTIN အောက်တွင်ဖော်ပြထားသောပညတ်တော်မူ၏ကြည့်ပါ) အစုံ builtin command ကိုရန် -O option ကိုများအတွက်တရားဝင်အငြင်းအခုံဖြစ်ပါတယ်။ SHELLOPTS အတွက်ထင်ရှားကျော်ကြားသောအဆိုပါရွေးချယ်စရာ set ကို -O အားဖြင့်အပေါ်အဖြစ်ဖော်ပြခဲ့သည်ရှိသူများဖြစ်ကြသည်။ ဒီ variable ကိုပတ်ဝန်းကျင်၌တည်ရှိ၏ အကယ်. ကား Bash တက်စတင်သည်သောအခါ, စာရင်းထဲတွင်တစ်ဦးချင်းစီ shell ကို option ကိုမဆို startup ဖိုင်များကိုဖတ်ရှုခြင်းမပြုမီ enabled လိမ့်မည်။ ဤသည် variable ကိုဖတ်ပါသာဖြစ်ပါတယ်။

SHLVL

တဦးတည်းအားဖြင့်ကား Bash တစ်ခုဥပမာအားဖြင့်စတင်ခဲ့ခြင်းဖြစ်သည်တစ်ခုချင်းစီကိုအချိန်အဆတိုး။

UID

shell ကို startup မှာနလက်ရှိအသုံးပြုသူ၏အသုံးပြုသူ ID ကိုမှတိုးချဲ့။ ဤသည် variable ကိုဖတ်ရန်အတွက်ဖြစ်ပါတယ်။

အောက်ပါ variable တွေကို shell ကိုအသုံးပြုသည်။ အချို့ကိစ္စများတွင်ကား Bash တစ် variable ကိုတစ်ဦးက default value ကိုသတ်မှတ်ပေးထားတဲ့; ဤအမှုကိစ္စကိုအောက်တွင်မှတ်ချက်ပြုကြသည်။

BASH_ENV

ကား Bash တစ် shell ကို script ကိုကွပ်မျက်အခါဒီ parameter သည်သတ်မှတ်ထားပါက၎င်း၏တန်ဖိုးကို ~ / .bashrc ၌ရှိသကဲ့သို့, shell ကိုစတငျဖို့ပညတ်တို့ကိုင်တစ်ဦးဖိုင်အမည်အဖြစ်အဓိပ္ပာယ်ကောက်ယူသည်။ BASH_ENV ၏တန်ဖိုး parameter သည်တိုးချဲ့ရေး, command ကိုအစားထိုးခြင်း, ဖိုင်တစ်ဖိုင် name ကိုအဖြစ်အဓိပ္ပာယ်ကောက်ယူမခံရမီဂဏန်းသင်္ချာတိုးချဲ့ချထားနေသည်။ PATH ထွက်ပေါ်လာတဲ့ဖိုင်နာမအဘို့ရှာဖွေရန်အသုံးပြုသည်မဟုတ်။

CDPATH

အဆိုပါ cd command ကိုအဘို့အရှာဖွေရေးလမ်းကြောင်းကို။ ဤအခွံဟာ cd command ကိုအားဖြင့်သတ်မှတ်ထားသော destination သည် directory များအဘို့အကြည့်သည့် directory များတစ်ဦးအူမကြီး-separated စာရင်းဖြစ်ပါတယ်။ တစ်ဦးကနမူနာတန်ဖိုးကိုဖြစ်ပါတယ် ": ။ ~: / usr" ။

ကော်လံ

ရွေးချယ်ရေးစာရင်းပုံနှိပ်သည့်အခါ terminal ကိုအကျယ်ဆုံးဖွတျဖို့ကို select လုပ်ပါ builtin command ကိုအသုံးပြုတဲ့။ အလိုအလျောက် SIGWINCH လက်ခံရရှိအပေါ်သို့ထားကြ၏။

COMPREPLY

အရာကား Bash တစ်ဦးထံမှစစ်ခင်းကျင်း variable ကို (အောက်တွင် programmer ပြီးစီးကြည့်ပါ) သည် Programmable ပြီးစီးစက်ရုံအားဖြင့်မဖြစ်၏တစ် shell ကို function ကိုကနေထုတ်လုပ်လိုက်တဲ့ဖြစ်နိုင်သော၏ပြီးစီးမှုဖတ်တယ်။

FCEDIT

အဆိုပါ FC builtin command ကိုများအတွက် default အအယ်ဒီတာ။

FIGNORE

ဖိုင်အမည်ပြီးစီးဖျော်ဖြေတဲ့အခါမှာလျစ်လျူရှုရန်နောက်ဆက်၏တစ်ဦးအူမကြီး-separated စာရင်း (READLINE အောက်တွင်ကြည့်ပါ) ။ အဘယ်သူ၏နောက်ဆက် FIGNORE အတွက် posts များထဲကတစ်ခုကိုက်ညီတစ်ဖိုင်အမည်လိုက်ဖက် filename ၏စာရင်းထဲကဖယ်ထုတ်လိုက်သည်။ တစ်ဦးကနမူနာတန်ဖိုးကို ": ~ အို" ဖြစ်ပါတယ်။

GLOBIGNORE

လမ်းကြောင်းအမည်ကိုချဲ့ထွင်ခြင်းဖြင့်လျစ်လျူရှုခံရဖို့ filename ၏ set ကို defining ပုံစံများတစ်ဦးအူမကြီး-separated စာရင်းဖြစ်သည်။ တစ်လမ်းကြောင်းအမည်ကိုတိုးချဲ့ပုံစံအားဖြင့်လိုက်ဖက်မယ့်ဖိုင်အမည်ကိုလည်း GLOBIGNORE အတွက်ပုံစံများတဦးတည်းကိုက်ညီပါကပွဲစဉ်များ၏စာရင်းထဲကနေဖယ်ရှားသည်။

HISTCONTROL

ignorespace ၏တန်ဖိုးသတ်မှတ်လျှင်, အာကာသဇာတ်ကောင်နဲ့စတင်ထားတဲ့လိုင်းသမိုင်းစာရင်းတွင်ထဲသို့ဝင်ကြသည်မဟုတ်။ ignoredups ၏တန်ဖိုးသတ်မှတ်ထားလျှင်, နောက်ဆုံးသမိုင်းလိုင်းကိုက်ညီလိုင်းများထဲသို့ဝင်ကြသည်မဟုတ်။ ignoreboth ၏တန်ဖိုးသည် options နှစ်ခုပေါင်းစပ်။ အားမသတ်မှတ်ထားခြင်းသို့မဟုတ်လျှင်အထက်ရှိသူများထက်အခြားမည်သည့်တန်ဖိုးမသတ်မှတ်လျှင်, parser ကိုဖတ်အားလုံးလိုင်းများ HISTIGNORE ၏တန်ဖိုးမှဘာသာရပ်, သမိုင်းစာရင်းတွင်သည်ကယ်တင်ခြင်းသို့ရောက်နေကြသည်။ ဤသည် variable ကိုရဲ့ function ကို HISTIGNORE အားဖြင့်အစားထိုးသည်။ multi-line ကိုဝင်း command ကို၏ဒုတိယနှင့်နောက်ဆက်တွဲလိုင်းများကိုစမ်းသပ်ကြသည်မဟုတ်, နှင့်မသက်ဆိုင် HISTCONTROL ၏တန်ဖိုးများ၏သမိုင်းမှဆက်ပြောသည်နေကြသည်။

HISTFILE

သမိုင်းအမိန့်တော်ရှိသည့်အတွက်ဖိုင်၏အမည် (အောက်တွင်နောက်ခံကိုကြည့်ပါ) ကယ်တင်ခြင်းသို့ရောက်ကြသည်။ ပုံသေတန်ဖိုး ~ / .bash_history ဖြစ်ပါတယ်။ အားမသတ်မှတ်ထားပါလျှင်တဲ့အခါမှာတစ်ဦးအပြန်အလှန် shell ကိုထွက်ပေါက်, ထို command ကိုသမိုင်းကယ်တင်ခြင်းသို့ရောက်ကြသည်မဟုတ်။

HISTFILESIZE

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

HISTIGNORE

လိုင်းများမှာထားသောဆုံးဖြတ်ဖို့အသုံးပြုပုံစံများတစ်ဦးအူမကြီး-separated စာရင်းကိုသမိုင်းစာရင်းတွင်သည်ကယ်တင်ခြင်းသို့ရောက်ရပါမည်။ တစ်ခုချင်းစီကိုပုံစံလိုင်းရဲ့အစမှာကျောက်ချရပ်နားနေသည်နှင့်ပြည့်စုံလိုင်း (အဘယ်သူမျှမသွယ်ဝိုက် `* 'ပူးတွဲထည့်ပေးထားသည်) ကိုက်ညီရမည်ဖြစ်သည်။ HISTCONTROL နေဖြင့်သတ်မှတ်ထားသောစစ်ဆေးမှုများလျှောက်ထားကြသည်ပြီးနောက်တစ်ခုချင်းစီပုံစံမျဉ်းဆန့်ကျင်စမ်းသပ်ပြီးဖြစ်ပါတယ်။ ဇာတ်ကောင်ကိုက်ညီပုံမှန် shell ကိုပုံစံအပြင်, `& '' ယခင်သမိုင်းလိုင်းတိုက်စစ်ပါတယ်။ `& '' တစ်ဦးဘယ်ဘက်မျဉ်းစောင်းကိုသုံးပြီးထွက်ပြေးလွတ်မြောက်စေခြင်းငှါ, အဆိုပါဘယ်ဘက်မျဉ်းစောင်းနေတဲ့ပွဲစဉ်ကြိုးစားနေမတိုင်မီဖယ်ရှားသည်။ multi-line ကိုဝင်း command ကို၏ဒုတိယနှင့်နောက်ဆက်တွဲလိုင်းများကိုစမ်းသပ်ကြသည်မဟုတ်, နှင့်မသက်ဆိုင် HISTIGNORE ၏တန်ဖိုးများ၏သမိုင်းမှဆက်ပြောသည်နေကြသည်။

HISTSIZE

အမိန့်သမိုင်းထဲမှာမှတ်မိဖို့ပညတ်တို့ကိုအရေအတွက် (အောက်တွင်နောက်ခံကိုကြည့်ပါ) ။ ပုံသေတန်ဖိုး 500 ဖြစ်ပါတယ်။

မူလစာမျက်နှာ

လက်ရှိအသုံးပြုသူ၏ Home Directory ကို; အဆိုပါ cd builtin command ကိုများအတွက် default အအငြင်းအခုံ။ tilde တိုးချဲ့ဖျော်ဖြေတဲ့အခါမှာဒီ variable ကို၏တန်ဖိုးကိုလည်းအသုံးပြုပါသည်။

HOSTFILE

shell ကိုတစ်ဦး hostname ဖြည့်စွက်ရန်လိုအပ်ပါသည်တဲ့အခါမှာဘတ်စေသင့်ကြောင်း / etc / hosts ကဲ့သို့တူညီသော format နဲ့ဖိုင်တစ်ဖိုင်၏အမည်ပါရှိသည်။ shell ကိုအပြေးနေစဉ်ဖြစ်နိုင်သော hostname ၏ပြီးစီးမှုများ၏စာရင်းပြောင်းလဲသွားတယ်စေခြင်းငှါ, တန်ဖိုးပြောင်းလဲသွားပြီးနောက် hostname ပြီးစီးကြိုးစားခဲ့တာဖြစ်ပါတယ်လာမယ့်အချိန်, ကား Bash လက်ရှိစာရင်းသစ်ကိုဖိုင်ရဲ့ contents ကထပ်ပြောသည်။ HOSTFILE သတ်မှတ်ထားပေမယ့်အဘယ်သူမျှမတနျဖိုးရှိပါတယျလျှင်ကား Bash / etc ဖတ်ရှုဖို့ကြိုးစားနေ / ဖြစ်နိုင်သော hostname ၏ပြီးစီးမှုများ၏စာရင်းရရှိရန်အိမ်ရှင်အဖြစ်။ HOSTFILE မသတ်မှတ်ထားလျှင်, အိမ်ရှင်အမည်စာရင်းရှင်းလင်းနေသည်။

IFS

ချဲ့ထွင်မှုအပြီးစကားလုံးပိုင်းခြားအသုံးပြုသည်နှင့်ဖတ် builtin Command ဖြင့်စကားများသို့လိုင်းများခွဲထွက်ဖို့ပြည်တွင်းဖျော်ဖြေမှုခြား။ ပုံသေတန်ဖိုး '' `` <အာကာသ> 'ဖြစ်ပါတယ်။

IGNOREEOF

တစ်ဦးတည်းသော input ကိုအဖြစ် EOF ဇာတ်ကောင်များ၏ငွေလက်ခံဖြတ်ပိုင်းတခုတခုအပေါ်မှာအပြန်အလှန် shell ကို၏အရေးယူဆောင်ရွက်မှုထိန်းချုပ်မည်။ သတ်မှတ်လျှင်, တန်ဖိုးကိုကား Bash ထွက်ပေါက်ရှေ့မှာ input ကိုလိုင်းပေါ်ပထမဦးဆုံးဇာတ်ကောင်အဖြစ်ရိုက်နှိပ်ရမည်ဖြစ်သည့်ဆက်တိုက် EOF ဇာတ်ကောင်များ၏အရေအတွက်ဖြစ်ပါတယ်။ အဆိုပါ variable ကိုတည်ရှိပေမယ့်တစ်ဂဏန်းတန်ဖိုးမထားဘူး, ဒါမှမဟုတ်အဘယ်သူမျှမတနျဖိုးရှိပါတယျလျှင်, default value ကို 10 ဖြစ်ပါတယ်ကြောင့်မတည်ရှိပါဘူးဆိုရင်, EOF shell ကိုမှ input ကို၏အဆုံးနေတဲ့အကြောင်းအချက်ပြ။

INPUTRC

အဆိုပါ readline startup ဖိုင်အတွက်ဖိုင်အမည်, ~ / .inputrc ၏ default အ၎င်းအား (အောက်တွင် READLINE ကြည့်ပါ) ။

LANG

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

LC_ALL

ဤသည် variable ကို LANG ၏တန်ဖိုးနှင့်တစ်ဦးဒေသအမျိုးအစားသတ်မှတ်ခြင်းကိုအခြား LC_ variable ကိုပြောင်းလဲသတ်မှတ်လိုက်သည်။

LC_COLLATE

ဤသည် variable ကိုလမ်းကြောင်းအမည်ကိုတိုးချဲ့၏ရလဒ်များကို sorting တဲ့အခါမှာအသုံးပြုတဲ့စုစည်းစီစဉ်အမိန့်ဆုံးဖြတ်သည်နှင့် range အသုံးအနှုန်းတွေ, ညီမျှသောအတန်းများနှင့်လမ်းကြောင်းအမည်ကိုချဲ့ထွင်ခြင်းနှင့်ပုံစံတူညီသည့်အတွင်း collating ပာ၏အပြုအမူဆုံးဖြတ်သည်။

LC_CTYPE

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

LC_MESSAGES

ဤသည် variable ကိုတစ်ဦး $ အားဖြင့်ရှေ့ပြေးကို double-ကိုးကားညှို့ဘာသာပြန်ဆိုရန်အသုံးပြုသည့်ဒေသဆုံးဖြတ်သည်။

LC_NUMERIC

ဤသည် variable ကိုအရေအတွက်ကိုပုံစံချပေးဘို့အသုံးပြုတဲ့ဒေသအမျိုးအစားဆုံးဖြတ်သည်။

lINE

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

Mail

ဒီ parameter သည်ဖိုင်တစ်ဖိုင် name ကိုသတ်မှတ်နှင့် MAILPATH variable ကိုသတ်မှတ်မထားလျှင်, ကား Bash သတ်မှတ်ထားသောဖိုင်ထဲမှာမေးလ်များဆိုက်ရောက်၏ user ကိုအကြောင်းကြား။

MAILCHECK

မေးလ်များအတွက်စစ်ဆေးမှုများ Bash ဘယ်လောက်မကြာခဏ (စက္ကန့်) ဖေါ်ပြသည်။ ကို default 60 စက္ကန့်ဖြစ်ပါတယ်။ ကမေးလ်စစ်ဆေးသည်ဖို့အချိန်ဖြစ်တဲ့အခါ, shell ကိုမူလတန်း prompt ကိုပြသမပြုမီနိုင်အောင်ပါပဲ။ ဒီ variable ကိုအားမသတ်မှတ်ထား, ဒါမှမဟုတ်တစ်ဦးအရေအတွက်ကိုထက် သာ. ကြီးမြတ်သို့မဟုတ်သုညနဲ့ညီမျှမပေးကြောင်းတန်ဖိုးသတ်မှတ်ထားဖြစ်ပါတယ်လျှင်, shell ကိုမေးလ်စစ်ဆေးခြင်းကိုပိတ်။

MAILPATH

မေးလ်အဘို့အ check လုပ်ထားခံရဖို့ဖိုင်အမည်များတစ်ဦးအူမကြီး-separated စာရင်းဖြစ်သည်။ မေးလ်တစ်ဦးအထူးသဖြင့်ဖိုင်ထဲမှာရောက်ရှိသည့်အခါပုံနှိပ်ခံရဖို့သတင်းစကားတစ်ဦး `? 'နှင့်အတူသတင်းစကားကနေဖိုင် name ကိုခွဲထုတ်ခြင်းဖြင့်သတ်မှတ်ထားသောနိုင်ပါသည်။ မက်ဆေ့ခ်ျ၏စာသားများတွင်အသုံးပြုသည့်အခါ $ _ လက်ရှိ mailfile ၏အမည်ကိုမှချဲ့ထွင်။ ဥပမာ:

MAILPATH = '/ var / မေးလ် / bfox "သင်မေးလ်များ":? ~ / shell ကို-mail ကို "$ _ မေးလ်ရှိပါတယ်!"' '

Bash မှာဒီ variable ကိုများအတွက် default value ကိုဖြန့်ဖြူးပေမယ့်အသုံးပြုသုံးစွဲသူမေးလ်ဖိုင်တွေရဲ့တည်နေရာမှီခိုမှုစနစ် (ဥပမာ / var / မေးလ် / $ USER မှ) ဖြစ်ပါသည်။

OPTERR

တန်ဖိုး 1 သို့သတ်မှတ်ထားပါကကား Bash အဆိုပါ getopts builtin command ကိုတို့ကနေထုတ်လုပ်လိုက်တဲ့အမှားမက်ဆေ့ခ်ျ (SHELL BUILTIN အောက်တွင်ဖော်ပြထားသောပညတ်တော်မူ၏ကိုကြည့်ပါ) ဖော်ပြပေးမှာဖြစ်ပါတယ်။ OPTERR 1 shell ကိုကို invoke သို့မဟုတ်တစ် shell ကို script ကိုကွပ်မျက်ခံရခြင်းဖြစ်သည်တစ်ခုချင်းစီကိုအချိန်နဖြစ်ပါတယ်။

PATH

ပညတ်တော်တို့ကိုအဘို့အရှာဖွေရေးလမ်းကြောင်းကို။ ဒါဟာ (အောက်တွင် COMMAND executable ကိုကြည့်ပါ) shell ကိုပညတ်တော်တို့ကိုအဘို့အကြည့်သည့် directory များတစ်ဦးအူမကြီး-separated စာရင်းဖြစ်ပါတယ်။ default ဖိုင်လမ်းကြောင်းကို system ကို-မှီခိုဖြစ်ပြီး, ကား Bash တပ်ဆင်ပြီးသူစီမံအုပ်ချုပ်သူကသတ်မှတ်ထားသည်။ '' / usr / bin :. '': / usr / local / bin: / usr / ucb: / bin ကိုတစ်ဦးကဘုံတန်ဖိုးကို `` / usr / GNU / ဘင်ဖြစ်ပါတယ်။

POSIXLY_CORRECT

ဒီ variable ကိုပတ်ဝန်းကျင်၌တည်ရှိ၏ အကယ်. ကား Bash စတင်သည်အခါ --posix invocation option ကိုထောက်ပံ့ခဲ့လျှင်အတိုင်း, shell ကို, အဖွင့်ချိန်မှာဖိုင်များကိုဖတ်ရှုခြင်းမပြုမီ posix mode ကိုဝင်။ shell ကိုအလုပ်လုပ်နေစဉ်ကသတ်မှတ်ထားပါက posix -O သတ်မှတ် command ကို execute လုပ်ခဲ့လျှင်အဖြစ်, ကား Bash, posix mode ကိုနိုင်ပါတယ်။

PROMPT_COMMAND

သတ်မှတ်လျှင်, တန်ဖိုးတစ်ခုစီကိုမူလတန်း prompt ကိုထုတ်ပေးဖို့ကြိုတင် command တစ်ခုအဖြစ်ကွပ်မျက်ခံရခြင်းဖြစ်သည်။

PS1

ဒီ parameter သည်၏တန်ဖိုးတိုးချဲ့ (အောက်တွင်ချက်ချင်းကိုကြည့်ပါ) နှင့်မူလတန်း prompt ကို string ကိုအဖြစ်အသုံးပြုပါသည်။ ပုံသေတန်ဖိုး '' `` \ s- \ v \ $ '' ဖြစ်ပါတယ်။

PS2

ဒီ parameter သည်၏တန်ဖိုး PS1 နှင့်ဝသကဲ့သို့တိုးချဲ့နှင့်အလယ်တန်း prompt ကို string ကိုအဖြစ်အသုံးပြုပါသည်။ ကို default `> '' '` ဖြစ်ပါတယ်။

PS3

ဒီ parameter သည်၏တန်ဖိုး (အထက် SHELL grammar ကိုကြည့်ပါ) ကို select လုပ်ပါ command ကိုများအတွက် prompt ကိုအဖြစ်အသုံးပြုပါသည်။

PS4

ဒီ parameter သည်၏တန်ဖိုး PS1 နှင့်ဝသကဲ့သို့တိုးချဲ့နေသည်နှင့်တစ်ဦးချင်းစီ command ကိုကား Bash တစ်ဦးသေဒဏ်စီရင်သဲလွန်စကာလအတွင်းပြသရှေ့တော်၌ထိုတန်ဖိုးကိုရိုက်နှိပ်ထားပါသည်။ PS4 ၏ပထမဦးဆုံးဇာတ်ကောင်သွယ်ဝိုက်၏မျိုးစုံအဆင့်ဆင့်ညွှန်ပြရန်, လိုအပ်သောအဖြစ်အကြိမ်ပေါင်းများစွာပုံတူကူးယူထားသည်။ အဆိုပါ default အနေနဲ့ `` + '' ဖြစ်ပါတယ်။

TIMEFORMAT

ဒီ parameter သည်၏တန်ဖိုးသည်အချိန် reserved စကားလုံးနှင့်အတူ prefixed ပိုက်လိုင်းများများအတွက်အခြိနျဇယားသတင်းအချက်အလက်များဖော်ပြပေးရပါမည်ကိုမည်သို့သတ်မှတ် format တစ်ခုက string အဖြစ်အသုံးပြုပါသည်။ အဆိုပါ% ဇာတ်ကောင်တစ်ဦးအချိန်တန်ဖိုးကိုသို့မဟုတ်အခြားသတင်းအချက်အလက်မှတိုးချဲ့ကြောင်းတစ်ခုထွက်ပေါက် sequence ကိုမိတ်ဆက်။ အောက်မှာဖေါ်ပြတဲ့အတိုင်းထွက်ပေါက်ပာနှင့်၎င်းတို့၏အဓိပ္ပါယ်များပါ၏ အဆိုပါမသန်စွမ်းပဲ optional ကိုဝေမျှဖျောညှနျး။

%%

တစ်ဦးကပကတိ%

% [p] [ဌ] R ကို

စက္ကန့်ပိုင်းအတွင်းကြာအချိန်။

% [p] [ဌ] ဦး

အသုံးပြုသူ mode မှာသုံးစွဲ CPU ကိုစက္ကန့်များ၏အရေအတွက်။

% [p] [ဌ] S က

စနစ်က mode မှာသုံးစွဲ CPU ကိုစက္ကန့်များ၏အရေအတွက်။

% P ကို

(% U + သည်% S ကို) /% R ကိုအဖြစ်တွက်ချက်အဆိုပါ CPU ကိုရာခိုင်နှုန်း။

အဆိုပါ optional ကို p တစ်ဒဿမအမှတ်ပြီးနောက်တိကျစွာသတ်မှတ်ခြင်းတစ်ဂဏန်း, ဒဿမကိန်းဂဏန်းများ၏အရေအတွက်ဖြစ်ပါတယ်။ 0 င်တစ်ဦးရဲ့တန်ဖိုးကို output ကိုဖြစ်ရန်မဒဿမအမှတ်သို့မဟုတ်အစိတ်အပိုင်းကိုဖြစ်ပေါ်စေသည်။ အဆိုပါဒဿမအမှတ်ပြီးနောက်အများဆုံးသုံးသောအရပ်တို့ကိုမသတ်မှတ်စေခြင်းငှါမှာ; p တန်ဖိုး 3 ကိုအသုံးပြုသည်, မသတ်မှတ်ထားပါလျှင် 3 3. ဖို့အတွက်ပြောင်းလဲနေကြသည်ထက် သာ. ကြီးမြတ် p ၏တန်ဖိုးများ။

အဆိုပါ optional ကိုဌပုံစံဟာ MM မီတာအက်စ်အက်စ်၏, မိနစ်အပါအဝင်တစ်ဦးမဟုတ်တော့ format နဲ့, သတ်မှတ်ပါတယ်။ FF ့။ p ၏တန်ဖိုးအစိတ်အပိုင်းပါဝင်သည်ဖြစ်စေမဆုံးဖြတ်သည်။

ဒီ variable ကိုသတ်မှတ်မထားလျှင်, ကား Bash ကတန်ဖိုး $ ခဲ့လျှင်အဖြစ် '\ nreal \ t% 3lR \ nuser \ t% 3lU \ nsys% 3lS' 'ဆောင်ရွက်သည်။ တန်ဖိုးတရားမဝင်သောလျှင်, အဘယ်သူမျှမအခြိနျဇယားသတင်းအချက်အလက်ပြသနေသည်။ ပုံစံ string ကိုပြသသည့်အခါတစ်ဦးက Trail NEWLINE ဆက်ပြောသည်ဖြစ်ပါတယ်။

TMOUT

သုညထက် သာ. ကြီးမြတ်တဲ့တန်ဖိုးသတ်မှတ်လျှင်, TMOUT အဆိုပါဖတ်ပြီးသား builtin များအတွက် default အနေနဲ့အချိန်ကုန်အဖြစ်ကုသနေပါတယ်။ input ကို terminal မှလာမယ့်အခါ input ကို TMOUT စက္ကန့်အကြာတွင်ရောက်လာမပါဘူးဆိုရင်ဒီကို select လုပ်ပါ command ကိုအဆုံးသတ်။ တစ်ဦးအပြန်အလှန် shell ကိုခုနှစ်တွင်တန်ဖိုးကိုအဓိက prompt ကိုထုတ်ပေးပြီးနောက် input ကိုစောင့်ဆိုင်းဖို့စက္ကန့်တွေရဲ့အရေအတွက်အဖြစ်အဓိပ္ပာယ်ကောက်ယူသည်။ Bash မှာ input ကိုရောက်လာမပါဘူးဆိုရင်စက္ကန့်ပိုင်း၏နံပါတ်တစ်ခုကိုစောင့်ဆိုင်းပြီးနောက်အဆုံးသတ်။

auto_resume

ဤသည် variable ကို shell ကိုအသုံးပြုသူနှင့်အလုပ်အကိုင်ထိန်းချုပ်မှုတွေနဲ့အပြန်အလှန်ဆက်သွယ်ပုံကိုထိန်းချုပ်သည်။ ဒီ variable ကိုသတ်မှတ်ထားလျှင်, ပြန်လည်လမ်းညွှန်မှုမရှိပဲတစ်ခုတည်းစကားလုံးရိုးရှင်းသောပညတ်တော်တို့ကိုရှိပြီးသားရပ်တန်အလုပ်ပြန်လည်စတင်များအတွက်ကိုယ်စားလှယ်လောင်းအဖြစ်ကုသနေကြသည်။ ခွင့်ပြုခဲ့ခြင်းမရှိမရေရာဒွိဟရှိ၏ တစ်ဦးထက်ပိုအလုပ်တစ်ခုရိုက် string ကိုအတူစတင်စျရှိလြှငျအမြားဆုံးမကြာသေးမီကဝင်ရောက်အလုပ်မရွေးသည်။ တစ်ရပ်တန့်အလုပ်အကိုင်အများ၏အမည်, ဤအခြေအနေတွင်တစ်ခုကိုစတင်ရန်အသုံးပြုသောက command line သည်။ အတိအကျတန်ဖိုးသတ်မှတ်ထားပါကထောက်ပံ့ string ကိုအတိအကျတစ်ခုရပ်တန့်အလုပ်၏အမည်နှင့်ကိုက်ညီရမည်, substring ဟုသတ်မှတ်လျှင်, string ကိုတစ်ဦးရပ်တန့်အလုပ်၏အမည်တစ်ခု substring ကိုက်ညီဖို့လိုအပ်ချက်များကိုထောက်ပံ့။ အဆိုပါ substring တန်ဖိုး% အထိအလားတူလုပ်ဆောင်နိုင်စွမ်းကိုထောက်ပံ့? အလုပ်အကိုင်အအမှတ်အသား (အောက်တွင်ယောဘ CONTROL ကိုကြည့်ပါ) ။ အခြားမည်သည့်တန်ဖိုးမသတ်မှတ်လျှင်, ထောက်ပံ့ string ကိုတစ်ဦးရပ်တန့်အလုပ်ရဲ့နာမညျကိုတစ်ရှေ့ဆက်ဖြစ်ရမည်; ဒီ% အလုပ်အမှတ်အသားမှအလားတူလုပ်ဆောင်နိုင်စွမ်းကိုပေးစွမ်းသည်။

histchars

သမိုင်းချဲ့ထွင်ခြင်းနှင့် Token (အောက်တွင်နောက်ခံချဲ့ထွင်ကြည့်ပါ) ကိုထိန်းချုပ်ပေးသောနှစ်ခုသို့မဟုတ်သုံးခုအက္ခရာများ။ ပထမဦးဆုံးဇာတ်ကောင် `ပုံမှန်အားဖြင့်သမိုင်းကိုချဲ့ထွင်ဇာတ်ကောင်တစ်ဦးသမိုင်းတိုးချဲ့ရဲ့ start အချက်ပြလိုက်ခြင်းသောဇာတ်ကောင်, ပါ! '' ။ ဒုတိယဇာတ်ကောင်ယခင် command ကို Re-running များအတွက်အတိုကောက်အဖြစ်အသုံးပြုသည့်အမြန်အစားထိုးဇာတ်ကောင်, ထို command ကိုအတွက်အခြားဘို့တ string ကိုအစားဝင်ဖြစ်ပါတယ်။ ကို default ^ '' `ဖြစ်ပါတယ်။ အဆိုပါ optional ကိုတတိယဇာတ်ကောင်တစ်ဦးစကားလုံးရဲ့ပထမဦးဆုံးဇာတ်ကောင်, ပုံမှန်အားဖြင့် `# '' အဖြစ်တွေ့ရှိရသည့်အခါလိုင်း၏ကျန်ရှိသောမှတ်ချက်ကြောင်းကိုညွှန်ပြသည့်ဇာတ်ကောင်ဖြစ်ပါတယ်။ အဆိုပါသမိုင်းမှတ်ချက်ဇာတ်ကောင်သမိုင်းအစားထိုးလိုင်းပေါ်တွင်ကျန်ရှိနေသောစကားခုန်ကြ၏ခံရဖို့ကိုဖြစ်ပေါ်စေသည်။ ဒါဟာသေချာပေါက် shell ကို parser ကိုမှတ်ချက်အဖြစ်လိုင်း၏ကျန်ဆက်ဆံဖို့ဖြစ်ပေါ်စေပါဘူး။

အခင်းအကျင်း

Bash မှာတဦးတည်းရှုထောင်ခင်းကျင်း variable တွေကိုပေးပါသည်။ မဆို variable ကိုတစ်ခုခင်းကျင်းအဖြစ်အသုံးပြုစေခြင်းငှါ, ကြေညာစာတမ်း builtin အတိအလင်းတစ်ခုခင်းကျင်းကြေညာပါလိမ့်မယ်။ တစ်ခုခင်းကျင်း၏အရွယ်အစားပေါ်တွင်မျှအများဆုံးကန့်သတ်ရ, မအဖွဲ့ဝင်များကတဆက်တည်းရည်ညွှန်းသို့မဟုတ်တာဝန်ပေးအပ်ခံရသည်ဟုမဆိုလိုအပ်ချက်ရှိပါသည်။ Array ကိန်းသုံးပြီးရည်ညွှန်းကြသည်နှင့်အသုည-based နေကြသည်။

မည်သည့် variable ကိုပု syntax နာမကိုအမှီ [subscript] = value ကို အသုံးပြု. ရန်တာဝန်ပေးလျှင်တစ်ခုခင်းကျင်းကိုအလိုအလျောက်ဖန်တီးသည်။ စာရင်းသွင်းထားသောထက် သာ. ကြီးမြတ်သို့မဟုတ်သုညနဲ့ညီမျှတဲ့အရေအတွက်အကဲဖြတ်ရမည်ဟုထားတဲ့ဂဏန်းသင်္ချာစကားရပ်အဖြစ်ကုသနေပါတယ်။ အတိအလင်းတစ်ခုခင်းကျင်းကြေညာရန်, အသုံးပြုခြင်း (SHELL BUILTIN အောက်တွင်ဖော်ပြထားသောပညတ်တော်မူ၏ကိုကြည့်ပါ) -a name ကိုဘော်ပြရမည်။ -a name ကိုကြေညာ [subscript] ကိုလည်းလက်ခံခဲ့သည်လျက်ရှိ၏ စာရင်းသွင်းထားသောလျစ်လျူရှုနေပါတယ်။ attribute တွေကြေညာစာတမ်းနှင့်ဖတ်ရန်အတွက် builtins သုံးပြီးတစ်ခုခင်းကျင်း variable ကိုများအတွက်သတ်မှတ်ထားသောနိုင်ပါသည်။ တစ်ခုချင်းစီကို attribute ကိုတစ်ခုခင်းကျင်း၌ရှိသမျှသောအဖွဲ့ဝင်များသက်ဆိုင်သည်။

Array [subscript] string ကို = အသီးအသီးတန်ဖိုးပုံစံသည်အဘယ်မှာရှိပုံစံ name = (value ကို 1 ... တန်ဖိုးကိုဎ) ၏ဒြပ်ပေါင်းများတာဝန်တွေ, အသုံးပြု. ဖို့တာဝန်ရှိပါသည်။ သာ string ကိုလိုအပ်ပါသည်။ အဆိုပါ optional ကိုကွင်းခတ်နှင့်စာရင်းပေးသွင်းထောက်ပံ့နေတယ်ဆိုရင်, ထိုညွှန်းကိန်းဖို့တာဝန်ရှိ၏ မဟုတ်ရင်တာဝန်ပေးအပ်ဒြပ်စင်၏အညွှန်းကိန်းကြေညာချက်ပေါင်းတဦးတည်းကတာဝန်ပေးအပ်ပြီးခဲ့သည့်အညွှန်းကိန်းဖြစ်ပါတယ်။ indexing သုညမှာစတင်သည်။ ဤသည် syntax လည်းကြေညာစာတမ်းကို builtin ကလက်ခံသည်။ တစ်ဦးချင်းစစ်ခင်းကျင်းသောဒြပ်စင်နာမတော်ကိုအမှီ ပြု. သုံးပြီးဖို့တာဝန်စေခြင်းငှါ [subscript] = အထက်မိတ်ဆက်တန်ဖိုးကို syntax ။

အဆိုပါအားမသတ်မှတ်ထား builtin Array ကိုဖျက်ဆီးဖို့အသုံးပြုသည်။ အားမသတ်မှတ်ထားနာမကိုအမှီ [subscript] အညွှန်းကိန်း subscript မှာခင်းကျင်းဒြပ်စင်ဖျက်ဆီးပစ်လိုက်သည်။ နာမကိုအမှီတစ်ခုခင်းကျင်း, ဒါမှမဟုတ်အားမသတ်မှတ်ထားနာမတော်သည်အဘယ်မှာရှိအားမသတ်မှတ်ထားအမည်, subscript သည်အဘယ်မှာရှိ [subscript] * သို့မဟုတ် @, တစ်ခုလုံးခင်းကျင်းဖယ်ရှားပေးပါသည်။

ကြေညာစာတမ်း, ဒေသခံနှင့်ဖတ်ရန်အတွက် builtins တစ်ဦးချင်းစီအနေနဲ့ခင်းကျင်းသတ်မှတ်တစ်ခု -a option ကိုလက်ခံပါ။ အဆိုပါဖတ်ပြီးသား builtin တစ်ခုခင်းကျင်းဖို့စံ input ကိုမှဖတ်စကားလုံးများကိုများစာရင်းကို assign တစ် -a option ကိုလက်ခံခဲ့သည်။ အဆိုပါသတ်မှတ်ချက်နှင့်သူတို့တာဝန်ကျတဲ့အဖြစ်ပြန်သုံးခံရဖို့ခွင့်ပြုမယ့်လမ်းအတွက် builtins display ကိုခင်းကျင်းတန်ဖိုးများကိုဘော်ပြရမည်။

ချဲ့ထွင်မှု

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

ကြက်၏အမိန့်ဖြစ်ပါသည်: သတ္တုအထိမ်းအချုပ်တိုးချဲ့, tilde တိုးချဲ့, parameter သည်, variable ကိုနှင့် (တစ်လက်ဝဲမှလက်ယာဖက်ရှင်၌ပြစ်မှားမိ) ဂဏန်းသင်္ချာချဲ့ထွင်ခြင်းနှင့် command ကိုအစားထိုး, စကားလုံးပိုင်းခြားနှင့်လမ်းကြောင်းအမည်ကိုတိုးချဲ့။

ဖြစ်စဉ်ကိုအစားထိုး: ကထောကျပံ့ပေးနိုငျသောစနစ်များတွင်, မရရှိနိုင်တစ်ဦးအပိုဆောင်းတိုးချဲ့ရှိသေး၏။

Brace ချဲ့

Brace ချဲ့ထွင်လိုမင်းထက်ညှို့နေထုတ်လုပ်လိုက်တဲ့စေခြင်းငှါအရာအားဖြင့်တစ်ဦးယန္တရားဖြစ်ပါတယ်။ ဤသည်ယန္တရားတိုးချဲ့ pathname ဆင်တူသည်, သို့သော် filename မတည်ရှိလိုအပ်နေထုတ်လုပ်လိုက်တဲ့။ သတ္တုအထိမ်းအချုပ်ဖြစ်ပုံစံများတစ်ခု optional ကို Postscript အားဖြင့်နောက်တော်သို့လိုက်ဆီကိုဦးတရံကြားကကော်မာ-separated ညှို့၏စီးရီးလိုက်ထားတဲ့ optional ကိုနိဒါန်း၏ပုံစံကို ယူ. တိုးချဲ့ခဲ့သည်။ အဆိုပါနိဒါန်းဟာမသန်စွမ်းပဲအတွင်းပါရှိသောတစ်ခုချင်းစီကို string ကိုမှ prefixed သည်နှင့် Postscript ထို့နောက်ညာဘက်လက်ဝဲတိုးချဲ့စီရရှိလာတဲ့ string ကိုမှဖြည့်တွဲဖြစ်ပါတယ်။

Brace ချဲ့ထွင်အသိုက်နိုင်ပါသည်။ တစ်ဦးချင်းစီတိုးချဲ့ string ကို၏ရလဒ်များကိုခွဲထားခဲ့သည်မဟုတ်; ညာဘက်အမိန့်ကျန်ရစ်ထိန်းသိမ်းထားသည်။ ဥပမာ, {ဃ, က c, ခ} က e `Ade Ace Abe '' သို့ချဲ့ထွင်။

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

generated ခံရဖို့ကြိုး၏ဘုံရှေ့ဆက်ရှည်အထက်ပါဥပမာမှာထက်အခါဤဆောက်လုပ်ရေးပုံမှန်အားအတိုကောက်အဖြစ်အသုံးပြု:

mkdir / usr / local / src / ကား Bash / {အဟောင်း, အသစ် dist, bug တွေ}

သို့မဟုတ်

chown အမြစ် /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}

Brace တိုးချဲ့ sh ၏သမိုင်းဗားရှင်းနဲ့အတူအနည်းငယ်သဟဇာတမမိတ်ဆက်။ sh သူတို့တစ်တွေစကားလုံး၏တစ်စိတ်တစ်ပိုင်းအဖြစ်ပေါ်လာသည့်အခါအထူးဆီကိုဦးတည်ဖွင့်လှစ်သို့မဟုတ်ပိတ်ဆက်ဆံပါနှင့်, output ကိုမှာသူတို့ကိုထိန်းသိမ်းမထားဘူး။ Bash မှာသတ္တုအထိမ်းအချုပ်တိုးချဲ့၏အကျိုးဆက်အဖြစ်စကားကနေဆီကိုဦးတည်ဖယ်ရှားပေးပါသည်။ ဥပမာအားဖြင့်, စကားလုံးတစ်လုံးဖိုင်အဖြစ် SH မှထဲသို့ဝင် {1,2} က output အတွက်တူညီပုံပေါ်ပါတယ်။ တူညီသောစကားလုံးကား Bash ခြင်းဖြင့်တိုးချဲ့ပြီးနောက် file1 file2 အဖြစ်ထွက်ရှိဖြစ်ပါတယ်။ sh နှင့်အတူတင်းကျပ် Compatibility ကိုတပ်မက်လိုချင်သောအလျှင်, + B option ကိုပါသို့မဟုတ် set ကို command ကိုစေရန် + B ကို option ကို (SHELL BUILTIN အောက်တွင်ဖော်ပြထားသောပညတ်တော်မူ၏ကိုကြည့်ပါ) နှင့်အတူကို disable သတ္တုအထိမ်းအချုပ်တိုးချဲ့နှင့်အတူကား Bash ကိုစတင်ပါ။

tilde ချဲ့

စကားလုံးတစ်လုံးတစ်ဦး unquoted tilde အက္ခရာ ( `~ ') နှင့်အတူစတင်လျှင်, ပထမဦးဆုံး unquoted မျဉ်းစောင်းရှေ့ဇာတ်ကောင်များ၏အားလုံး (သို့မဟုတ်အားလုံးကိုဇာတ်ကောင်မရှိ unquoted မျဉ်းစောင်းရှိလျှင်) တစ်ဦး tilde-ရှေ့ဆက်စဉ်းစားနေကြသည်။ အဆိုပါ tilde-ရှေ့ဆက်အတွက်ဇာတ်ကောင်အဘယ်သူအားမျှကိုးကားနေကြလျှင်, tilde အောက်ပါ tilde-ရှေ့ဆက်အတွက်ဇာတ်ကောင်တစ်ဦးဖြစ်နိုင်သမျှရဲ့ login name ကိုအဖြစ်ကုသနေကြသည်။ ဒီရဲ့ login အမည်တရားမဝင်သော string ကိုတစ်ခုဖြစ်သည်လျှင်, tilde shell ကို parameter သည်မူလစာမျက်နှာ၏တန်ဖိုးဖြင့်အစားထိုးသည်။ မူလစာမျက်နှာအားမသတ်မှတ်ထားလျှင်, အခွံကွပ်မျက်အသုံးပြုသူရဲ့အိမ်မှာ directory ကိုအစားအစားထိုးနေသည်။ ဒီလိုမှမဟုတ်ရင်, ထို tilde-ရှေ့ဆက်သတ်မှတ်ထားသောရဲ့ login name ကိုနဲ့ဆက်စပ်အိမ် directory ကိုဖြင့်အစားထိုးသည်။

အဆိုပါ tilde-ရှေ့ဆက်မယ့် `~ + သည်ဆိုပါက, အခွံ variable ကို PWD ၏တန်ဖိုးသည် tilde-ရှေ့ဆက်အစားထိုးထားသည်။ အဆိုပါ tilde-ရှေ့ဆက်မယ့် `~ သည်ဆိုပါက - '' ကသတ်မှတ်လျှင်, shell ကို variable ကို OLDPWD ၏တန်ဖိုး, အစားထိုးနေသည်။ အဆိုပါ tilde-ရှေ့ဆက်အတွက် tilde နံပါတ် N ကိုထားရှိရေးအောက်ပါဇာတ်ကောင်, လုပ်နိုင်သောတစ်ဦး `+ 'သို့မဟုတ်တစ်ဦး` -' 'အားဖြင့် prefixed လျှင်, tilde-ရှေ့ဆက်ပြုလုပ်ပြသမည်ဖြစ်ကြောင်းသကဲ့သို့, directory ကို stack ကနေသက်ဆိုင်ရာဒြပ်စင်များနှင့်အစားထိုးနေသည် အဆိုပါ dirs အားဖြင့် builtin အငြင်းအခုံအဖြစ် tilde-ရှေ့ဆက်အတူမဖြစ်၏။ , `+ ယူဆနေသည် - ထိုဇာတ်ကောင်ဟာ tilde-ရှေ့ဆက်အတွက် tilde အောက်ပါ အကယ်. တစ်ဦးဦးဆောင်` + 'သို့မဟုတ် `' 'မရှိဘဲအရေအတွက်ထားရှိရေး။

ရဲ့ login name ကိုမမှန်ကန်, သို့မဟုတ် tilde တိုးချဲ့ပျက်ကွက်လျှင်, စကားလုံးမပြောင်းလဲဖြစ်ပါတယ်။

သို့မဟုတ် =: တစ်ခုချင်းစီကို variable ကိုတာဝနျကို unquoted tilde-ရှေ့ဆက်တစ်ဦးကိုချက်ချင်းအောက်ပါအဘို့အဓြှု။ ဤအမှုကိစ္စများတွင် tilde တိုးချဲ့လည်းဖျော်ဖြေနေသည်။ အကျိုးဆက်အားတဦးတည်း PATH, MAILPATH နှင့် CDPATH ဖို့တာဝန်တွေအတွက် tilde နှင့်အတူဖိုင်အမည်များကိုအသုံးစေခြင်းငှါ, shell ကို၎င်းတိုးချဲ့တန်ဖိုးကိုသတ်မှတ်ပေးထားတဲ့။

parameter ချဲ့

အဆိုပါ `$ '' ဇာတ်ကောင် parameter သည်တိုးချဲ့ရေး, command ကိုအစားထိုးခြင်းသို့မဟုတ်ဂဏန်းသင်္ချာတိုးချဲ့မိတ်ဆက်။ တိုးချဲ့ဖို့ parameter သည်အမည်သို့မဟုတ်သင်္ကေတ optional ကိုသောဆီကိုဦးတည်အတွက်ပူးတွဲပေမယ့်ချက်ချင်းနာမတော်ကိုအမှီ ပြု. ၏တစ်စိတ်တစ်ပိုင်းအဖြစ်အဓိပ္ပာယ်ကောက်ယူနိုင်ရာကအောက်ပါဇာတ်ကောင်ကနေချဲ့ထွင်ဖို့ variable ကိုကာကွယ်စောင့်ရှောက်ဖို့အစေခံနိုင်ပါသည်။

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

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

အောက်ကဖြစ်ပွားမှု၏တစ်ဦးချင်းစီအတွက်, စကားလုံး tilde တိုးချဲ့, parameter သည်တိုးချဲ့ရေး, command ကိုအစားထိုးခြင်း, ဂဏန်းသင်္ချာချဲ့ထွင်ဖို့ဘာသာရပ်ဖြစ်ပါသည်။ အားမသတ်မှတ်ထားသို့မဟုတ်တရားမဝင်သောသော parameter သည်များအတွက် substring တိုးချဲ့ဖျော်ဖြေမရတဲ့အခါ, ကား Bash စမ်းသပ်မှု; သာအားမသတ်မှတ်ထားသော parameter သည်များအတွက်စမ်းသပ်မှုများတွင်အူမကြီးရလဒ်များကိုချန်လှပ်။

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

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

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

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

အဆိုပါ IFS အထူး variable ကို၏ပထမဦးဆုံးဇာတ်ကောင်ခြားအဘယ်သူ၏အမည်များကိုရှေ့ဆက်နဲ့စတင် variable တွေကို၏အမည်များမှတိုးချဲ့။

parameter သည်၏တန်ဖိုး၏ဇာတ်ကောင်အတွက်အရှည်အစားထိုးနေသည်။ parameter သည် * သို့မဟုတ် @ ဖြစ်လျှင်, အစားထိုးတန်ဖိုး positional parameters တွေကိုများ၏အရေအတွက်ဖြစ်ပါတယ်။ parameter သည် * သို့မဟုတ် @ ခြင်းဖြင့် subscripted တစ်ခုခင်းကျင်းနာမတော်သည်မှန်လျှင်, အစားထိုးတန်ဖိုးဟာစစ်ခင်းကျင်းသောဒြပ်စင်များ၏အရေအတွက်ဖြစ်ပါတယ်။

အဆိုပါစကားလုံးပဲလမ်းကြောင်းအမည်ကိုတိုးချဲ့၌ရှိသကဲ့သို့တစ်ဦးပုံစံထုတ်လုပ်ရန်တိုးချဲ့ခြင်းဖြစ်သည်။ ပုံစံ parameter သည်၏တန်ဖိုး၏အစအဦးကိုက်ညီလျှင်, ထိုချဲ့ထွင်မှု၏ရလဒ်အတိုဆုံးကိုက်ညီခြင်းပုံစံ (ထို `` # '' အမှု) သို့မဟုတ်အရှည်ဆုံးတိုက်ဆိုင်သည့်ပုံစံကို ( `` ## '' နှင့်အတူ parameter သည်၏ကျယ်ပြန့်တန်ဖိုးကိုဖြစ်ပါသည် '' အမှု) ကိုဖျက်လိုက်ပါ။ parameter သည် @ သို့မဟုတ် * ဖြစ်ပါသည်လျှင်, ပုံစံဖယ်ရှားရေးစစ်ဆင်ရေးအလှည့်စီ positional parameter သည်မှလျှောက်ထားခြင်း, ချဲ့ထွင်ထွက်ပေါ်လာတဲ့စာရင်းဖြစ်ပါတယ်။ parameter သည် @ သို့မဟုတ် * နှင့်အတူ subscripted တစ်ခုခင်းကျင်း variable ကိုတစ်ခုဖြစ်သည်လျှင်, ပုံစံဖယ်ရှားရေးစစ်ဆင်ရေးအလှည့်ထဲမှာခင်းကျင်း၏တစ်ဦးချင်းစီအဖွဲ့ဝင်တစ်ဦးမှလျှောက်ထားခြင်းနှင့်တိုးချဲ့ထွက်ပေါ်လာတဲ့စာရင်းဖြစ်ပါတယ်။

အဆိုပါစကားလုံးပဲလမ်းကြောင်းအမည်ကိုတိုးချဲ့၌ရှိသကဲ့သို့တစ်ဦးပုံစံထုတ်လုပ်ရန်တိုးချဲ့ခြင်းဖြစ်သည်။ ပုံစံ parameter သည်၏ကျယ်ပြန့်တန်ဖိုးကိုတစ် Trail သောအဘို့ကိုကိုက်ညီလျှင်, ထိုချဲ့ထွင်မှု၏ရလဒ်အတိုဆုံးကိုက်ညီခြင်းပုံစံ (ထို ``% '' အမှု) သို့မဟုတ်အရှည်ဆုံးတိုက်ဆိုင်သည့်ပုံစံကို ( ``% နှင့်အတူ parameter သည်၏ကျယ်ပြန့်တန်ဖိုးကိုဖြစ်ပါသည် % '' အမှု) ကိုဖျက်လိုက်ပါ။ parameter သည် @ သို့မဟုတ် * ဖြစ်ပါသည်လျှင်, ပုံစံဖယ်ရှားရေးစစ်ဆင်ရေးအလှည့်စီ positional parameter သည်မှလျှောက်ထားခြင်း, ချဲ့ထွင်ထွက်ပေါ်လာတဲ့စာရင်းဖြစ်ပါတယ်။ parameter သည် @ သို့မဟုတ် * နှင့်အတူ subscripted တစ်ခုခင်းကျင်း variable ကိုတစ်ခုဖြစ်သည်လျှင်, ပုံစံဖယ်ရှားရေးစစ်ဆင်ရေးအလှည့်ထဲမှာခင်းကျင်း၏တစ်ဦးချင်းစီအဖွဲ့ဝင်တစ်ဦးမှလျှောက်ထားခြင်းနှင့်တိုးချဲ့ထွက်ပေါ်လာတဲ့စာရင်းဖြစ်ပါတယ်။

အဆိုပါပုံစံပဲလမ်းကြောင်းအမည်ကိုတိုးချဲ့၌ရှိသကဲ့သို့တစ်ဦးပုံစံထုတ်လုပ်ရန်တိုးချဲ့ခြင်းဖြစ်သည်။ parameter တိုးချဲ့နေသည်နှင့်၎င်း၏တန်ဖိုးကိုဆန့်ကျင်ပုံစံ၏အရှည်ဆုံးပွဲစဉ် string ကိုဖြင့်အစားထိုးသည်။ ပထမဦးဆုံးပုံစံများတွင်သာပထမဦးဆုံးပွဲစဉ်ကိုအစားထိုးနေသည်။ ဒုတိယပုံစံပုံစံအပေါငျးတို့သပွဲ string ကိုဖြင့်အစားထိုးခံရဖို့ကိုဖြစ်ပေါ်စေသည်။ ပုံစံ # နှင့်အတူစတင်ပါက parameter သည်၏ကျယ်ပြန့်တန်ဖိုးကိုရဲ့အစမှာကိုက်ညီရမည်ဖြစ်သည်။ ပုံစံ% ဖြင့်အစပြုပါက parameter သည်၏ကျယ်ပြန့်တန်ဖိုးကိုရဲ့အဆုံးမှာကိုက်ညီရမည်ဖြစ်သည်။ string ကို null ဖြစ်လျှင်, ပုံစံ၏ပွဲဖျက်ပစ်နေကြသည်နှင့် / အောက်ပါပုံစံချန်လှပ်နိုင်ပါသည်။ parameter သည် @ သို့မဟုတ် * ဖြစ်ပါသည်လျှင်, အစားထိုးခွဲစိတ်အလှည့်စီ positional parameter သည်မှလျှောက်ထားသည်, ချဲ့ထွင်ထွက်ပေါ်လာတဲ့စာရင်းဖြစ်ပါတယ်။ parameter သည် @ သို့မဟုတ် * နှင့်အတူ subscripted တစ်ခုခင်းကျင်း variable ကိုတစ်ခုဖြစ်သည်လျှင်, အစားထိုးခွဲစိတ်အလှည့်ထဲမှာခင်းကျင်း၏တစ်ဦးချင်းစီအဖွဲ့ဝင်တစ်ဦးမှလျှောက်ထားခြင်းနှင့်တိုးချဲ့ထွက်ပေါ်လာတဲ့စာရင်းဖြစ်ပါတယ်။

command လူစားထိုး

command အစားထိုး command တစ်ခု၏ output က command အမည်အားအစားထိုးခွင့်ပြုပါတယ်။ နှစ်ခုပုံစံများရှိပါတယ်:

$ (command ကို)

သို့မဟုတ်

`command ကို`

Bash မှာဖျက်ပစ်မဆိုကပ်တွယ်မှုကို NEWLINE အတူ command ကိုကွပ်မျက်ခြင်းနှင့်အမိန့်ရဲ့ standard output ကိုအတူ command ကိုအစားထိုးအစားထိုးခြင်းဖြင့်တိုးချဲ့လုပ်ဆောင်တယ်။ embed NEWLINE ဖျက်ပစ်ကြသည်မဟုတ်, ဒါပေမဲ့သူတို့စကားလုံးပိုင်းခြားအတွင်းမှာဖယ်ရှားနိုင်ပါသည်။ အဆိုပါ command ကိုအစားထိုး $ (ကြောင်ဖိုင်) ညီမျှပေမယ့်ပိုမြန် $ (<ဖိုင်) ဖြင့်အစားထိုးနိုင်ပါသည်။

အစားထိုး၏ old-style backquote ပုံစံကိုအသုံးပြုသည်အခါ, ဘယ်ဘက်မျဉ်းစောင်း $, `, ဒါမှမဟုတ် \ ခြင်းဖြင့်နောက်တော်သို့လိုက်သည့်အခါ မှလွဲ. ယင်း၏ပကတိအဓိပ္ပာယ်ကိုဆက်လက်ထိန်းသိမ်းထားသည်။ တစ်ဘယ်ဘက်မျဉ်းစောင်းနေဖြင့်ရှေ့ပြေးမဟုတ်ပထမဦးဆုံး backquote command ကိုအစားထိုးအဆုံးသတ်။ အဆိုပါ $ (command ကို) ပုံစံကို အသုံးပြု. သောအခါ, ကွင်းအကြားအားလုံးဇာတ်ကောင်က command တက်အောင်; အဘယ်သူအားမျှအထူးကုသနေကြသည်။

command အစားထိုးအသိုက်နိုင်ပါသည်။ အဆိုပါ backquoted ပုံစံတွေကိုအသုံးပြုတဲ့အခါအသိုက်စေရန်, ဘယ်ဘက်မျဉ်းစောင်းအတူအတွင်းပိုင်း backquotes လွတ်မြောက်ရန်။

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

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

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

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

အဲဒါကိုနှစ်ဆကိုးကားအတွင်းဖြစ်လျှင်အဖြစ်ဟူသောအသုံးအနှုနျးကုသပေမယ့်ကွင်းအတွင်း၌နှစ်ဆကိုးကားအထူးကုသပေးမထားပါ။ ဟူသောအသုံးအနှုနျးအားလုံးတိုကင် parameter သည်တိုးချဲ့ရေး, string ကိုချဲ့ထွင်မှု, command ကိုအစားထိုးခြင်း, ကိုးကားဖယ်ရှားရေးကိုခံယူ။ ဂဏန်းသင်္ချာအစားထိုးအသိုက်နိုင်ပါသည်။

အဆိုပါအကဲဖြတ်ဂဏန်းသင်္ချာဆန်းစစ်သုံးသပ်ခြင်းအောက်တွင်အောက်တွင်ဖော်ပြထားသောစည်းမျဉ်းစည်းကမ်းတွေကိုအညီဖျော်ဖြေနေသည်။ စကားရပ်မမှန်ကန်ပါက, ကား Bash ပျက်ကွက်ညွှန်ပြနေတဲ့သတင်းစကားကိုရိုက်ထုတ်နှင့်မျှမတို့အစားထိုးတွေ့ရှိနိုင်ပါသည်။

ဖြစ်စဉ်ကိုလူစားထိုး

ဖြစ်စဉ်ကိုအစားထိုးအမည်ရှိပိုက် (FIFOs) သို့မဟုတ်ဖွင့်ထားဖိုငျနာမည်များ / dev / fd နည်းလမ်းကိုထောက်ပံ့သောစနစ်များအပေါ်ထောက်ခံသည်။ ဒါဟာ <(စာရင်း) သို့မဟုတ်> (စာရင်း) ၏ပုံစံကိုကြာပါတယ်။ အဆိုပါဖြစ်စဉ်ကိုစာရင်းတစ်ခု FIFO သို့မဟုတ် / dev / fd အချို့ဖိုင်ချိတ်ဆက်ယင်း၏ input ကိုသို့မဟုတ် output ကိုအတူပြေးသည်။ ဤဖိုင်၏အမည်ချဲ့ထွင်၏ရလဒ်အဖြစ်လက်ရှိ command ကိုမှအငြင်းအခုံအဖြစ်အောင်မြင်ပြီးဖြစ်ပါတယ်။ အဆိုပါ> (စာရင်း) ပုံစံကိုအသုံးပြုသည်ဆိုပါက, ဖိုင်ရေးသားခြင်းစာရင်းများအတွက် input ပေးပါလိမ့်မယ်။ အဆိုပါ <(စာရင်း) ပုံစံကိုအသုံးပြုသည်ဆိုပါကတစ်ဦးအငြင်းအခုံအဖြစ်အောင်မြင်ပြီးဖိုင်ကိုစာရင်း၏ output ကိုရရှိရန်ကိုဖတ်ရှုရပါမည်။

ဘယ်အချိန်မှာမရရှိနိုင်, ဖြစ်စဉ်ကိုအစားထိုး parameter သည်နှင့် variable ကိုချဲ့ထွင်မှု, command ကိုအစားထိုးခြင်း, ဂဏန်းသင်္ချာတိုးချဲ့နဲ့အတူတစ်ပြိုင်နက်တည်းလုပ်ဆောင်သည်။

သမ်မာကမျြး Split

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

အဆိုပါ shell ကိုတစ်ဦးကိုအနားသတ်မျဉ်းအဖြစ် IFS တစ်ခုချင်းစီဇာတ်ကောင်ဆကျဆံ, ဤဇာတ်ကောင်အပေါ်စကားလုံးများကိုသို့အခြားကြက်၏ရလဒ်များကိုကိုစူး။ IFS အားမသတ်မှတ်ထားဖြစ်ပါသည်, သို့မဟုတ်၎င်း၏တန်ဖိုးကိုအတိအကျ <အာကာသ> ဖြစ်တယ်ဆိုရင်, ကို default, ထို့နောက် IFS ဇာတ်ကောင်မဆို sequence ကိုစကားလုံးများကိုအနားသတ်မျဉ်းမှဆောင်ရွက်ပါသည်။ IFS ကို default ထက်အခြားတန်ဖိုးရှိပါတယ်လျှင်, ထိုကြားနေရာလွတ်ဇာတ်ကောင် space နဲ့ tab ကို၏ပာနေသမျှကာလပတ်လုံးကြားနေရာလွတ်ဇာတ်ကောင် IFS (တစ်ဦး IFS ကြားနေရာလွတ်ဇာတ်ကောင်) ၏တန်ဖိုးသည်အတိုင်း, နှုတ်ကပတ်တော်အစအဦးများနှင့်အဆုံးမှာလျစ်လျူရှုနေကြပါတယ်။ မည်သည့်ကပ်လျက် IFS ကြားနေရာလွတ်ဇာတ်ကောင်နဲ့အတူ IFS ကြားနေရာလွတ်မပေးကြောင်း IFS အတွက်မဆိုဇာတ်ကောင်, လယ် delimits ။ IFS ကြားနေရာလွတ်ဇာတ်ကောင်တစ်ဦးက sequence ကိုလည်းအနားသတ်မျဉ်းအဖြစ်ကုသနေပါတယ်။ IFS ၏တန်ဖိုးတရားမဝင်သောလျှင်, အဘယ်သူမျှမနှုတ်ကပတ်တရားတော်ကိုပိုင်းခြားတွေ့ရှိနိုင်ပါသည်။

အကဲဆတ်သောတရားမဝင်သောအငြင်းပွားမှုများ ( "" သို့မဟုတ် '' ') ထိန်းသိမ်းထားကြသည်။ အဘယ်သူမျှမတန်ဖိုးများရှိသည် parameters များကိုချဲ့ထွင်ရာမှရရှိလာတဲ့ Unquoted သွယ်ဝိုက်တရားမဝင်သောအငြင်းပွားမှုများ, ဖယ်ရှားပစ်ပါသည်။ အဘယ်သူမျှမတနျဖိုးနဲ့ parameter သည်နှစ်ဆကိုးကား, တရားမဝင်သောအငြင်းအခုံရလဒ်များကိုအတွင်းတိုးချဲ့နေသည်နှင့်ထိန်းသိမ်းထားသည်ဆိုပါ။

အဘယ်သူမျှမတိုးချဲ့ဖြစ်ပေါ်လျှင်အဘယ်သူမျှပိုင်းခြားဖျော်ဖြေကြောင်းသတိပြုပါ။

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

အဆိုပါ -f option ကိုသတ်မှတ်ပြီးပါပြီမဟုတ်လျှင်စကားလုံးပိုင်းခြားပြီးနောက်, ကား Bash, * ဇာတ်ကောင်အဘို့အသီးအသီးစကားလုံးတို့ကိုစိစစ်? နှင့် [။ ဤအဇာတ်ကောင်များ၏တဦးတည်းပုံပေါ်လျှင်, ထိုစကားလုံးပုံစံအဖြစ်မှတ်လျက်, ပုံစံကိုက်ညီဖိုင်အမည်များတစ်ခုအက္ခရာစဉ်ခွဲထားခဲ့သည်စာရင်းဖြင့်အစားထိုးသည်။ အဘယ်သူမျှမတိုက်ဆိုင်သည့်ဖိုင်အမည်များကိုတွေ့သဖြင့်, shell ကို option ကို nullglob ကိုပိတ်ထားနေတယ်ဆိုရင်, နှုတ်ကပတ်တော်ကိုမပြောင်းလဲကျန်ရစ်ရ၏။ အဆိုပါ nullglob option ကိုသတ်မှတ်, နှင့်မျှမတို့ပွဲစဉ်ကိုတွေ့နေတယ်ဆိုရင်, နှုတ်ကပတ်တော်ကိုဖယ်ရှားသည်။ shell ကို option ကို nocaseglob enabled လျှင်, ပွဲစဉ်အက်ခရာစဉျဇာတ်ကောင်၏ဖြစ်ရပ်နှင့် ပတ်သက်. မရှိဘဲဖျော်ဖြေနေသည်။ တစ်ပုံစံလမ်းကြောင်းအမည်ကိုတိုးချဲ့, ဇာတ်ကောင် `` အသုံးပြုသည်အခါ။ '' အမည်သို့မဟုတ်ချက်ချင်းရဲ့ start မှာမျဉ်းစောင်းအောက်ပါ shell ကို option ကို dotglob သတ်မှတ်မဟုတ်လျှင်, အတိအလင်းကိုက်ညီရမည်ဖြစ်သည်။ တစ်လမ်းကြောင်းအမည်ကိုကိုက်ညီသောအခါ, မျဉ်းစောင်းဇာတ်ကောင်ကိုအမြဲအတိအလင်းကိုက်ညီရမည်ဖြစ်သည်။ အခြားဖြစ်ရပ်များမှာ `` ။ '' ဇာတ်ကောင်အထူးကုသပေးမထားပါ။ ထို nocaseglob ၏ဖော်ပြချက်အဘို့အ SHELL BUILTIN command အောက်တွင်အောက်တွင်ဖော်ပြထားသော shopt ၏ဖော်ပြချက်, nullglob နှင့် dotglob shell ကိုရှေးခယျြစရာကိုကြည့်ပါ။

အဆိုပါ GLOBIGNORE shell ကို variable ကိုတစ်ပုံစံကိုက်ညီဖိုင်အမည်များသတ်မှတ်ကန့်သတ်ဖို့အသုံးပြုနိုင်ပါသည်။ GLOBIGNORE သတ်မှတ်ထားလျှင်, ထို့အပြင် GLOBIGNORE အတွက်ပုံစံများတဦးတည်းကိုက်ညီသောအသီးအသီးကိုက်ညီဖိုင် name ကိုပွဲများ၏စာရင်းထဲကနေဖယ်ရှားသည်။ ဖိုင်နာမည်များ `` ။ '' နှင့် `` .. '' အမြဲ GLOBIGNORE သတ်မှတ်လျှင်တောင်လျစ်လျူရှုနေကြပါတယ်။ သို့သော် GLOBIGNORE တစ်ဦး `` နှင့်အတူစတင်ဒီတော့အားလုံးအခြားဖိုင်အမည် dotglob shell ကို option ကို enable လုပ်ထားခြင်း၏အကျိုးသက်ရောက်မှုရှိပါတယ် setting ။ '' ကိုက်ညီပါလိမ့်မယ်။ တစ်ဦး `` နှင့်အတူစတင်ဖိုင်အမည်များကိုလျစ်လျူရှု၏အဟောင်းအပြုအမူရရန်။ '', `` ပါစေ။ * '' 'GLOBIGNORE အတွက်ပုံစံများတဦး။ GLOBIGNORE အားမသတ်မှတ်ထားသည့်အခါ dotglob option ကိုပိတ်ထားသည်။

pattern ကိုက်ညီမှု

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

အထူးပုံစံဇာတ်ကောင်အောက်ပါအဓိပ္ပါယ်များရှိသည်:

*

အဆိုပါတရားမဝင်သော string ကိုအပါအဝင်မည်သည့် string ကို, တိုက်စစ်ပါတယ်။

?

မဆိုတစ်ခုတည်းဇာတ်ကောင်နှင့်လိုက်ဖက်။

[ ... ]

အဆိုပါပူးတွဲအက္ခရာတစုံတယောက်သောသူသည်တိုက်စစ်ပါတယ်။ တစ်တုံးတိုအားဖြင့်ကွဲကွာဇာတ်ကောင်တစ်ဦးကတစ်စုံတစ်ဦးအကွာအဝေးစကားရပ်ကိုဆိုလိုသ; သူတို့အားနှစ်ခုဇာတ်ကောင်များအကြား sorts ဆိုဇာတ်ကောင်, အားလုံးပါဝင်နိုင်လက်ရှိဒေသရဲ့ collating sequence ကိုနှင့်တဲ့ character set ကိုသုံးပြီးကိုက်ညီနေသည်။ အဆိုပါ [အောက်ပါပထမဦးဆုံးဇာတ်ကောင်တစ်ဦးဖြစ်တယ်ဆိုရင်! သို့မဟုတ်တစ် ^ ထို့နောက်မည်သည့်ဇာတ်ကောင်ပူးတွဲမဟုတ်ကိုက်ညီနေသည်။ ထားလျှင်အကွာအဝေးအသုံးအနှုန်းတွေထဲမှာဇာတ်ကောင်များ၏ sorting အလို့ငှာလက်ရှိဒေသနှင့် LC_COLLATE shell ကို variable ကို၏တန်ဖိုးအားဖြင့်ဆုံးဖြတ်သည်။ တစ်ဦးက - အဆိုပါ set ကိုအတွင်းပထမဆုံးဒါမှမဟုတ်နောက်ဆုံးဇာတ်ကောင်အဖြစ်အပါအဝင်ခြင်းဖြင့်လိုက်ဖက်နိုင်ပါသည်။ တစ်ဦးက] set အတွက်ပထမဦးဆုံးဇာတ်ကောင်အဖြစ်အပါအဝင်ခြင်းဖြင့်လိုက်ဖက်နိုင်ပါသည်။

[: အတန်းအစား:], လူတန်းစားဟာ POSIX.2 စံအတွက်သတ်မှတ်ထားသောအောက်ပါအတန်းတစ်ခုဖြစ်တယ်ဘယ်မှာအတွင်းမှာပဲ [နဲ့] ဇာတ်ကောင်အတန်းဟာ syntax ကို အသုံးပြု. သတ်မှတ်နိုင်သည်

alnum alpha ASCII ကွက်လပ် cntrl ဂဏန်းဂရပ်အောက်ပိုင်းပုံနှိပ် punct အာကာသအထက်စကားလုံး xdigit
တစ်ဦးကဇာတ်ကောင်လူတန်းစားကြောင့်လူတန်းစားပိုင်မဆိုဇာတ်ကောင်နှင့်လိုက်ဖက်။ အဆိုပါစကားလုံးဇာတ်ကောင်လူတန်းစားအက္ခရာများ, ဂဏန်း, နှင့်ဇာတ်ကောင် _ တိုက်စစ်ပါတယ်။

အတွင်း [နဲ့] အနေနဲ့ညီမျှလူတန်းစားဇာတ်ကောင်က c အဖြစ် (လက်ရှိဒေသအားဖြင့်သတ်မှတ်ပါတယ်ကဲ့သို့) တူညီတဲ့စုစည်းစီစဉ်အလေးချိန်နှင့်အတူအားလုံးဇာတ်ကောင်နှင့်လိုက်ဖက်သော [= က c =] က syntax ကို အသုံးပြု. သတ်မှတ်ထားသောနိုင်ပါသည်။

အတွင်း [နဲ့], အ syntax [။ သင်္ကေတပါ။ ] စုစည်းစီစဉ်သင်္ကေတသင်္ကေတတိုက်စစ်ပါတယ်။

အဆိုပါ extglob shell ကို option ကို shopt builtin သုံးပြီး enabled လျှင်အများအပြားတိုးချဲ့ပုံစံကိုက်ညီအော်ပရေတာအသိအမှတ်ပြုကြသည်။ | အောက်ပါဖော်ပြချက်မှာတော့တစ်ပုံစံ-စာရင်းတစ်ခုခြားပြီးတဦးတည်းသို့မဟုတ်ထိုထက်ပိုပုံစံများစာရင်းဖြစ်သည် ။ Composite ပုံစံများကိုအောက်ပါ Sub-ပုံစံများတဦးတည်းသို့မဟုတ်ထိုထက်ပိုသုံးပြီးဖွဲ့စည်းခဲ့စေခြင်းငှါ:

(ပုံစံ-စာရင်း)

မီးခြစ်သုညသို့မဟုတ်ပေးထားသောပုံစံများတဦးတည်းဖြစ်ပျက်မှု

* (ပုံစံ-စာရင်း)

ပေးထားသောပုံစံများသုညသို့မဟုတ်ထိုထက်ပိုကွိကိုက်ညီ

+ (ပုံစံ-စာရင်း)

ပေးထားသောပုံစံများတဦးတည်းသို့မဟုတ်ထိုထက်ပိုကွိကိုက်ညီ

@ (ပုံစံ-စာရင်း)

မီးခြစ်ပေးထားသောပုံစံများတစ်ခုအတိအကျ

(ပုံစံ-စာရင်း)

ပေးထားသောပုံစံများတဦး မှလွဲ. ဘာမှမကိုက်ညီမှု

quote ဖယ်ရှားရေး

ရှေ့ချဲ့ထွင်ပြီးနောက်ဇာတ်ကောင်အားလုံး unquoted ကွိအထက်ပါကြက်၏တဦးတည်းအနေဖြင့်ဖြစ်ပေါ်မ " '\ နှင့်ဖယ်ရှားပစ်ပါသည်။

redirect

command တစ်ခုကွပ်မျက်ခံရမီ၎င်း၏ input ကိုနှင့် output ကို shell ကိုအားဖြင့်အနက်တစ်ဦးကိုအထူးသင်္ကေတသုံးပြီး redirected နိုင်ပါသည်။ redirection လည်းလက်ရှိ shell ကိုကွပ်မျက်ပတ်ဝန်းကျင်များအတွက်ဖိုင်များကိုဖွင့်လှစ်ခြင်းနှင့်နီးစပ်ရန်အသုံးပြုနိုင်ပါသည်။ အောက်ပါ redirection အော်ပရေတာအရင်အဦးနေရာတစ်ခုသို့မဟုတ်ရိုးရှင်းသော command ကိုအတွင်းဘယ်နေရာမှာမဆိုပေါ်လာတစ်ခုသို့မဟုတ် command ကိုလိုကျနာပေမည်ပေမည်။ redirect လက်ဝဲမှလက်ျာဘက်, သူတို့ကပေါ်လာသည့်နိုင်ရန်အတွက်လုပ်ငန်းများ၌နေကြသည်။

ဖိုင်ကို descriptor ကိုအရေအတွက်အားချန်လှပ်လျက်, redirection အော်ပရေတာ၏ပထမဦးဆုံးဇာတ်ကောင် <ဖြစ်ပါသည်လျှင်အောက်ပါဖော်ပြချက်မှာတော့သည်, redirection စံ input ကို (ဖိုင် descriptor ကို 0) ကိုရည်ညွှန်းသည်။ အဆိုပါ redirection အော်ပရေတာ၏ပထမဦးဆုံးဇာတ်ကောင်> ဖြစ်ပါတယ်လျှင်, redirection စံ output ကို (ဖိုင် descriptor ကို 1) ကိုရည်ညွှန်းသည်။

အောက်ပါဖော်ပြချက်အတွက် redirection အော်ပရေတာကအောက်ပါစကားမဟုတ်ရင်မှတ်ချက်ချမဟုတ်လျှင်, ချဲ့ထွင်မှု, tilde တိုးချဲ့, parameter သည်တိုးချဲ့ရေး, command ကိုအစားထိုး, ဂဏန်းသင်္ချာချဲ့ထွင်, ကိုးကားဖယ်ရှားရေး, လမ်းကြောင်းအမည်ကိုချဲ့ထွင်ခြင်း, စကားလုံးပိုင်းခြား Brace အကြောင်းမဲ့ဖြစ်ပါတယ်။ ဒါကြောင့်တစ်ဦးထက်ပိုသောစကားချဲ့ထွင်လြှငျ, ကား Bash မှားယွင်းမှုတစ်ခုကတင်ပြထားပါတယ်။

ပြန်လည်လမ်းညွှန်မှု၏အမိန့်သိသာကြောင်းသတိပြုပါ။ ဥပမာ, command ကို

ls> dirlist 2> & 1

အမိန့်စဉ်ဖိုင်ကို dirlist မှစံထုတ်လုပ်မှုနှင့်စံအမှားနှစ်ခုလုံးကိုညွှန်ကြား

ls 2> & 1> dirlist

စံ output ကို dirlist မှ redirected မီစံအမှားစံ output ကိုအဖြစ်ကော်ပီပွားယူသောကြောင့်, သာစံ output ကို dirlist file ဖို့ညွှန်ကြားနေသည်။

အောက်ပါဇယားတွင်ဖော်ပြထားသကဲ့သို့သူတို့က, ပြန်လည်လမ်းညွှန်မှုများတွင်အသုံးပြုသည့်အခါ Bash မှာအထူးအများအပြား filename ကိုင်တွယ်:

/ dev / fd / fd

fd ခိုင်လုံသော integer ဖြစ်တဲ့အတွက် အကယ်. , ဖိုင် descriptor ကို fd ကော်ပီပွားယူသည်။

/ dev / stdin

file ကို descriptor ကို 0 င်ကော်ပီပွားယူသည်။

/ dev / stdout

file ကို descriptor ကို 1 ကော်ပီပွားယူသည်။

/ dev / stderr

file ကို descriptor ကို 2 ကော်ပီပွားယူသည်။

/ dev / TCP / အိမ်ရှင် / port ကို

အိမ်ရှင်ခိုင်လုံသော hostname သို့မဟုတ်အင်တာနက်လိပ်စာဖြစ်ပြီး, port ကိုတစ်ခုကိန်း port နံပါတ်သို့မဟုတ်ဝန်ဆောင်မှုအမည်ဖြင့်ရှိလျှင်, ကား Bash သက်ဆိုင်ရာ socket တစ်ဦးသည် TCP ဆက်သွယ်မှုဖွင့်ရန်ကြိုးစားသည်။

/ dev / udp / အိမ်ရှင် / port ကို

အိမ်ရှင်ခိုင်လုံသော hostname သို့မဟုတ်အင်တာနက်လိပ်စာဖြစ်ပြီး, port ကိုတစ်ခုကိန်း port နံပါတ်သို့မဟုတ်ဝန်ဆောင်မှုအမည်ဖြင့်ရှိလျှင်, ကား Bash သက်ဆိုင်ရာ socket ရန် UDP ကိုချိတ်ဆက်မှုကိုဖွင့်ရန်ကြိုးစားသည်။

ဖိုင်တစ်ဖိုင်ဖွင့်လှစ်သို့မဟုတ်ဖန်တီးဖို့တစ်ဦးကပျက်ကွက်သည့် redirection ကျရှုံးဖို့ကိုဖြစ်ပေါ်စေသည်။

Input ကိုပြန်ညွှန်းနေပါသည်

ဎမသတ်မှတ်ထားပါလျှင် input ကို၏ redirection အမညျရလဒ်များကိုစကားလုံးများ၏နယ်မြေချဲ့ထွင်ရာမှဖိုင် descriptor ကိုဎအပေါ်ဖတ်နေဘို့ဖွင့်လှစ်ခံရဖို့ဖိုင်ကိုဒါမှမဟုတ်စံ input ကို (ဖိုင် descriptor ကို 0) ကိုဖြစ်ပေါ်စေသည်။

input ကိုပြန်ညွှန်းများအတွက်ယေဘုယျပုံစံဖြစ်ပါသည်:

[n] <စကားလုံး

ပြန်ညွှန်းနေပါသည် Output

output ကို၏ redirection အမညျရလဒ်များကိုစကားလုံးများ၏နယ်မြေချဲ့ထွင်ရာမှဎမသတ်မှတ်ထားပါလျှင်ဖိုင် descriptor ကိုဎ, ဒါမှမဟုတ်စံ output ကို (ဖိုင် descriptor ကို 1) ရက်နေ့မှာရေးသားမှုအတွက်ဖွင့်လှစ်ခံရဖို့ဖိုင်ကိုဖြစ်ပေါ်စေသည်။ ဖိုင်ကိုမတည်ရှိပါဘူးဆိုရင်ဒါဟာနေသူများကဖန်တီး; ကမတည်ရှိပါဘူးဆိုရင်ဒါဟာသုညအရွယ်အစားအတိုချုံးသည်။

output ကိုပြန်ညွှန်းများအတွက်ယေဘုယျပုံစံဖြစ်ပါသည်:

[n]> စကားလုံး

အဆိုပါ redirection အော်ပရေတာ> ဖြစ်ပါတယ်, နှင့် set ကို builtin ဖို့ noclobber option ကိုဖွင့်ထားသည်ဆိုပါကစကားလုံးများ၏တိုးချဲ့မှုအနေဖြင့်အဘယ်သူ၏နာမကိုအမှီရလဒ်များဖိုင်ပုံမှန်ဖိုင်တည်ရှိခြင်းနှင့်ပါလျှင်, redirection ပျက်ကွက်ပါလိမ့်မယ်။ အဆိုပါ redirection အော်ပရေတာသည်ဆိုပါက> | ဒါမှမဟုတ် redirection အော်ပရေတာဖြစ်တယ်> နှင့် set ကို builtin command ကိုရန် noclobber option ကိုဖွင့်မသည်ထို redirection စကားလုံးအားဖြင့်အမည်ရှိဖိုင်ကိုတည်ရှိလျှင်ပင်ကြိုးစားခဲ့သည်။

redirect Output Appending

ဒီဖက်ရှင်အတွက် output ကို၏ redirection အမညျဎမသတ်မှတ်ထားပါလျှင်ဖိုင် descriptor ကိုဎ, ဒါမှမဟုတ်စံ output ကို (ဖိုင် descriptor ကို 1) ရက်နေ့တွင် appending များအတွက်ဖွင့်လှစ်ထားခံရဖို့စကားလုံးများ၏တိုးချဲ့မှုအနေဖြင့်ရလဒ်များဖိုင်ကိုဖြစ်ပေါ်စေသည်။ ဖိုင်ကိုမတည်ရှိပါဘူးဆိုရင်ဒါဟာနေသူများကဖန်တီး။

output ကို appending များအတွက်ယေဘုယျပုံစံဖြစ်ပါသည်:

[n] >> စကားလုံး

စံ Output နဲ့ Standard မှားယွင်းနေသည်ပြန်ညွှန်းနေပါသည်

Bash မှာစံ output ကို (ဖိုင် descriptor ကို 1) နှင့်စံအမှား output ကို (ဖိုင် descriptor ကို 2) နှစ်ဦးစလုံးသည်အဘယ်သူ၏နာမကိုအမှီဒီဆောက်လုပ်ရေးနှင့်အတူစကားလုံးများ၏တိုးချဲ့ဖြစ်ပါတယ်ဖိုင်ကိုမှ redirected ခံရဖို့ခွင့်ပြုပါတယ်။

စံထုတ်လုပ်မှုနှင့်စံအမှားပြန်ညွှန်းနှစ်ခုကို formats ရှိပါတယ်:

&> စကားလုံး

နှင့်

> & စကားလုံး

နှစ်ခုပုံစံများ၏, ပထမဦးဆုံးညွန်းပါသည်။ ဤဝေါဟာရအသုံးအနှုံးညီမျှသည်

> စကားလုံး 2> & 1

ဤတွင်စာရွက်စာတမ်းများ

redirection ၏ဤအမျိုးအစား (အဘယ်သူမျှမ Trail ကွက်လပ်နှင့်အတူ) သာစကားလုံးင်တစ်ဦး line ကိုတှေ့မွငျရသည်အထိလက်ရှိအရင်းအမြစ်ဆီက input ကိုဖတ်ရှုဖို့ shell ကိုညွှန်ကြားထားသည်။ အဆိုပါလိုင်းများအားလုံးပြီးတော့ command တစ်ခုများအတွက်စံ input ကိုအဖြစ်အသုံးပြုကြသည်ဟုမှတ်အထိဖတ်ပါ။

ဤနေရာတွင်-စာရွက်စာတမ်းများ၏ပုံစံသည်:

<< [-] စကားလုံးကဒီမှာ-စာရွက်စာတမ်းကိုအနားသတ်မျဉ်း

အဘယ်သူမျှမ parameter သည်တိုးချဲ့ရေး, command ကိုအစားထိုး, ဂဏန်းသင်္ချာချဲ့ထွင်ခြင်းသို့မဟုတ်လမ်းကြောင်းအမည်ကိုတိုးချဲ့စကားလုံးအပေါ်ဖျော်ဖြေနေသည်။ စကား၌မဆိုဇာတ်ကောင်ကိုးကားနေကြလျှင်, အနားသတ်မျဉ်းစကားလုံးအပေါ်ကိုးကားဖယ်ရှားရေး၏ရလဒ်ဖြစ်ပါသည်, နှင့်ဤနေရာတွင်-စာရွက်စာတမ်းအတွက်လိုင်းများတိုးချဲ့ကြသည်မဟုတ်။ စကားလုံး unquoted ဖြစ်ပါတယ်လျှင်, ဤနေရာတွင်-စာရွက်စာတမ်းအပေါငျးတို့သလိုင်းများ parameter သည်တိုးချဲ့ရေး, command ကိုအစားထိုးခြင်း, ဂဏန်းသင်္ချာတိုးချဲ့ချထားလျက်ရှိသည်။ အဆုံးစွန်သောအမှု, အကျင့်စာရိတ္တ sequence ကိုခုနှစ်တွင် \ `လျစ်လျူရှုသည်, \, \ $ ဇာတ်ကောင်ကိုးကားရန်အသုံးပြုရမည်ဖြစ်သည်နှင့်။

အဆိုပါ redirection အော်ပရေတာဖြစ်တယ်ဆိုရင် << - ထို့နောက်အားလုံးဦးဆောင် tab ကိုဇာတ်ကောင် input ကိုလိုင်းများနှင့်အနားသတ်မျဉ်း်လိုင်းကနေချွတ်နေကြသည်။ ဒီအခွံ script များအတွင်းကဒီမှာ-စာရွက်စာတမ်းများသဘာဝဖက်ရှင်အတွက်အသစ်မှာခံရဖို့ခွင့်ပြုပါတယ်။

ဤတွင် Strings

ဤနေရာတွင်စာရွက်စာတမ်းများတစ်မူကွဲ, ပုံစံဖြစ်ပါသည်:

<<< စကားလုံး

အဆိုပါစကားလုံးသည်၎င်း၏စံ input ကိုအပေါ် command ကိုတိုးချဲ့နှင့်ထောက်ပံ့နေသည်။

Duplicating ဖိုင် descriptor

အဆိုပါ redirection အော်ပရေတာ

[n] <& စကားလုံး

input ကိုဖိုင် descriptor များကိုပွားဖို့အသုံးပြုသည်။ စကားလုံးတစ်ခုသို့မဟုတ်တစ်ခုထက်ပိုသောဂဏန်းမှချဲ့ထွင်လြှငျ, ဎသဖြင့်ခေါ်လိုက်ပါမယ်ဖိုင်ကို descriptor ကိုဖိုင် descriptor ကိုတစ်ဦးမိတ္တူဖြစ်စေသည်။ စကားလုံးထဲမှာဂဏန်း input ကိုဖွင့်ဖိုင်တစ်ဖိုင် descriptor ကိုသတ်မှတ်မထားဘူးဆိုရင်, တစ်ဦး redirection အမှားတွေ့ရှိနိုင်ပါသည်။ စကားလုံးရဲ့တန်ဖိုးပါလျှင် -, ဖိုင် descriptor ကိုဎတံခါးပိတ်ဖြစ်ပါတယ်။ ဎမသတ်မှတ်ထားပါလျှင်, စံ input ကို (ဖိုင် descriptor ကို 0) ကိုအသုံးပြုသည်။

အဆိုပါအော်ပရေတာ

[n]> & စကားလုံး

output ကိုဖိုင် descriptor များကိုပွားဖို့အလားတူအသုံးပြုသည်။ ဎမသတ်မှတ်ထားပါလျှင်, စံ output ကို (ဖိုင် descriptor ကို 1) ကိုအသုံးပြုသည်။ စကားလုံးထဲမှာဂဏန်း output ကိုဖွင့်ဖိုင်တစ်ဖိုင် descriptor ကိုသတ်မှတ်မထားဘူးဆိုရင်, တစ်ဦး redirection အမှားတွေ့ရှိနိုင်ပါသည်။ ဎချန်လှပ်သည်, စကားလုံးတစ်ခုသို့မဟုတ်တစ်ခုထက်ပိုသောဂဏန်းမှချဲ့ထွင်မပါဘူးဆိုရင်ယခင်ကဖော်ပြထားသကဲ့သို့အထူးကိစ္စအဖြစ်, စံထုတ်လုပ်မှုနှင့်စံအမှား redirected နေကြသည်။

ဖိုင်မှတ်တမ်းဖော်ပြချက်စာလုံး Moving

အဆိုပါ redirection အော်ပရေတာ

[n] <& ဂဏန်း -

ဎမသတ်မှတ်ထားပါလျှင် descriptor ကိုဎ, ဒါမှမဟုတ်စံ input ကို (ဖိုင် descriptor ကို 0) file မှဖိုင်ကို descriptor ကိုဂဏန်းလှုံ့ဆော်ပေး။ ဂဏန်းဎမှကော်ပီပွားယူခံရပြီးနောက်ပိတ်လိုက်သည်။

အလားတူပဲ, redirection အော်ပရေတာ

[n]> & ဂဏန်း -

ဎမသတ်မှတ်ထားပါလျှင် descriptor ကိုဎ, ဒါမှမဟုတ်စံ output ကို (ဖိုင် descriptor ကို 1) file မှဖိုင်ကို descriptor ကိုဂဏန်းလှုံ့ဆော်ပေး။

စာဖတ်ခြင်းနှင့်ရေးသားခြင်းများအတွက်ဖိုင်မှတ်တမ်းဖော်ပြချက်စာလုံးဖွင့်လှစ်

အဆိုပါ redirection အော်ပရေတာ

[n] <> စကားလုံး

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

နာမည်တုများ

နာမည်တစ်ခု string ကိုကရိုးရှင်းပြီး command ကို၏ပထမဦးဆုံးစကားလုံးအဖြစ်အသုံးပြုသည့်အခါတစ်ဦးစကားလုံးများအတွက်အစားထိုးခံရဖို့ခွင့်ပြုပါ။ အဆိုပါ shell ကို (SHELL BUILTIN အောက်တွင်ဖော်ပြထားသောပညတ်တော်မူ၏ကိုကြည့်ပါ) ကိုသတ်မှတ်နှင့် alias ကိုနှင့် unalias builtin ပညတ်တော်တို့ကိုအတူအားမသတ်မှတ်ထားစေခြင်းငှါနာမည်များစာရင်းကိုထိန်းသိမ်းထားသည်။ တစ်ဦးချင်းစီက command ၏ပထမဦးဆုံးစကားလုံး, unquoted လျှင်, တစ်ဦး alias ကိုရှိပါတယ်လျှင်ကြည့်ဖို့ဓြှု။ ဒါကြောင့်ပါလျှင်, ထိုစကားလုံးအတွက် alias ကို၏စာသားဖြင့်အစားထိုးသည်။ အဆိုပါ alias ကိုအမည်နှင့်အစားထိုးစာသား alias ကိုနာမကိုအမှီ = မပါဝင်နိုင်သောချွင်းချက်အတူအထက်တွင်ဖော်ပြထားသော metacharacters အပါအဝင်မည်သည့်ခိုင်လုံသော shell ကို input ကို, မဆံ့နိုငျသညျ။ အစားထိုးစာသားကို၏ပထမဦးဆုံးစကားလုံးနာမည်အဘို့စမ်းသပ်စစ်ဆေးတာဖြစ်ပါတယ်, ဒါပေမယ့်တိုးချဲ့ထားကြောင်းအနေနဲ့ alias ကိုမှတူညီသောစကားလုံးသည်ဒုတိယအကြိမ်တိုးချဲ့မပေးပါ။ ဒီတစ်ခု alias ကို ls ဥပမာ, -F LS မှစေခြင်းငှါ, ကား Bash တဲ့ request ကိုအစားထိုးစာသားကိုချဲ့ထွင်ဖို့ကြိုးစားပါဘူးဆိုလိုသည်။ အဆိုပါ alias ကိုတနျဖိုး၏နောက်ဆုံးဇာတ်ကောင်တစ်ဦးအလွတ်လျှင်, ထို့နောက် alias ကိုအောက်ပါလာမည့် command ကိုစကားလုံး alias ကိုချဲ့ထွင်ဘို့လည်းဓြှု။

နာမည်တုများဖန်တီးနှင့် alias ကို Command ဖြင့်စာရင်း, နှင့် unalias Command ဖြင့်ဖယ်ရှားပစ်ပါသည်။

အစားထိုးစာသားထဲမှာအငြင်းပွားမှုများကို အသုံးပြု. အဘို့အဘယ်သူမျှမယန္တရားရှိပါသည်။ အငြင်းပွားမှုများလိုအပ်နေတယ်ဆိုရင်တစ် shell ကို function ကို (အောက်တွင် function ကိုကြည့်ပါ) ကိုအသုံးပြုရပါမည်။

shell ကိုအပြန်အလှန်မဟုတ်ပါဘူးအခါ expand_aliases option ကို (SHELL BUILTIN အောက်မှာ shopt ၏ဖော်ပြချက်အောက်တွင်ဖော်ပြထားသောပညတ်တော်မူ၏ကိုကြည့်ပါ) shopt အသုံးပြု. သတ်မှတ် Shell မဟုတ်လျှင်အိမ်နာမည်, ချဲ့ထွင်ကြသည်မဟုတ်။

နာမည်တုများ၏အဓိပ္ပါယ်နှင့်အသုံးပြုမှုကိုရည်မှတ်စည်းမျဉ်းစည်းကမ်းတွေကိုအတန်ငယ်ရှုပ်ထွေးဖြစ်ကြသည်။ Bash မှာအမြဲကြောင်းလိုင်းပေါ်ပညတ်တော်တို့ကိုမဆိုကွပ်မျက်မတိုင်မီ input ကိုအနည်းဆုံးတဦးတည်းပြည့်စုံလိုင်းဖတ်တယ်။ command တစ်ခုကိုဖတ်သောအခါနာမည်တိုးချဲ့နေကြသည်, မကြောင့်ကွပ်မျက်ခံရသောအခါ။ input ကို၏နောက်လိုင်းကိုဖတ်ရှုနေသည်သည်အထိထိုကွောငျ့, အခြား command ကိုကဲ့သို့တူညီသောလိုင်းပေါ်တွင်ပေါ်ထွန်းအနေနဲ့ alias ကိုချက်နှင့်အဓိပ္ပါယ်သက်ရောက်ယူမထားဘူး။ ကြောင်းလိုင်းပေါ် alias ကိုချက်နှင့်အဓိပ္ပါယ်အောက်ပါပညတ်တော်သစ်ကို alias ကိုကြောင့်ထိခိုက်ကြသည်မဟုတ်။ ဒီအမူအကျင့်လည်းလုပ်ဆောင်ချက်များကိုကွပ်မျက်ခံရသောအခါပြဿနာဖြစ်ပါတယ်။ တစ်ဦး function ကိုအဓိပ်ပါယျတစ်ဦးဝင်း command ကိုသူ့ဟာသူသောကွောငျ့, တစ်ဦး function ကိုအဓိပ်ပါယျကိုဖတ်ပြီးသောအခါနာမည်တိုးချဲ့နေကြသည်မဟုတ်ဘဲ function ကိုကွပ်မျက်ခံရသောအခါ။ အကျိုးဆက်အဖြစ်, တစ်ဦး function ကိုမှာသတ်မှတ်ထားတဲ့နာမည်ကြောင့် function ကိုကွပ်မျက်ခံရပြီးနောက်သည်အထိမရရှိနိုင်မရှိကြပေ။ ဘေးကင်းလုံခြုံဖြစ်စေရန်, အမြဲသီးခြားလိုင်းပေါ် alias ကိုအဓိပ္ပာယ် ထား. , ဝင်းပညတ်တော်တို့ကိုအတွက် alias ကိုမသုံးကြဘူး။

နီးပါးတိုင်းရည်ရွယ်ချက်များအတွက်နာမည်တုများ shell ကိုလုပ်ဆောင်ချက်များကိုအစားထိုးနေကြပါတယ်။

function

SHELL သဒ္ဒါအောက်မှာအထက်တွင်ဖော်ပြထားသကဲ့သို့သတ်မှတ်ထားသောတစ်ဦးက shell ကို function ကို, နောက်ပိုင်းတွင်ကွပ်မျက်ပညတ်တော်တို့ကိုတစ်စီးရီးသိုလှောင်ပါသည်။ တစ် shell ကို function ကို၏အမည်ကိုရိုးရှင်းတဲ့ command ကိုနာမကိုအမှီအဖြစ်အသုံးပြုသည့်အခါ, ထို function name နဲ့ဆက်စပ် command များကိုစာရင်းကွပ်မျက်ခံရခြင်းဖြစ်သည်။ functions လက်ရှိ shell ကို၏အခြေအနေတွင်ကွပ်မျက်ခံရနေကြသည်; အဘယ်သူမျှမမှဖြစ်စဉ်သစ် (က shell script ၏ကွပ်မျက်နှင့်အတူဤနှိုငျးယှဉျ) သူတို့အနက်ကိုဘော်ပြမှဖန်တီးသည်။ တစ်ဦး function ကိုကွပ်မျက်လျှင်, function ကိုဖို့ဆင်ခြေက၎င်း၏ကွပ်မျက်စဉ်အတွင်း positional parameters တွေကိုဖြစ်လာသည်။ အထူး parameter သည် # အပြောင်းအလဲကိုထင်ဟပ် updated ဖြစ်ပါတယ်။ positional parameter သည် 0 မပြောင်းလဲဖြစ်ပါတယ်။ function ကိုကွပ်မျက်နေစဉ်အဆိုပါ FUNCNAME variable ကို function ကို၏အမည်ကိုဟုသတ်မှတ်ထားသည်။ shell ကိုကွပ်မျက်ပတ်ဝန်းကျင်အားလုံးကအခြားရှုထောင့် function ကိုသဲလွန်စ attribute ကိုခံရပြီမဟုတ်လျှင် Debugging ထောင်ချောက် (SHELL BUILTIN အောက်ရှိထောင်ချောက် builtin ၏ဖော်ပြချက်အောက်တွင်ဖော်ပြထားသောပညတ်တော်မူ၏ကိုကြည့်ပါ) (အမွေဆက်ခံမရသောချွင်းချက်နဲ့ function ကိုနှင့်၎င်း၏ခေါ်ဆိုသူ၏အကြားတူညီကြသည် ) အောက်တွင်ဖော်ပြထားသော builtin ကြေညာစာတမ်း၏ဖော်ပြချက်တွင်ကြည့်ပါ။

function ကိုမှဒေသခံ Variables ကိုဒေသခံ builtin Command ဖြင့်ကြေငြာနိုင်ပါသည်။ သာမန်, variable တွေကိုနှင့်၎င်းတို့၏တန်ဖိုး function ကိုနှင့်၎င်း၏ခေါ်ဆိုမှုများအကြားမျှဝေနေကြသည်။

အဆိုပါ builtin command ကိုပြန်လာနေတဲ့ function ကိုကွပ်မျက်လျှင်, function ကိုပြီးဆုံးနှင့်သေဒဏ်စီရင် function ကိုဖုန်းခေါ်ဆိုမှုပြီးနောက်လာမည့် Command ဖြင့်ပြန်တယ်။ တစ်ဦး function ကိုပြီးဆုံးသောအခါ, positional parameters တွေကိုနှင့်အထူး parameter သည် # များ၏တန်ဖိုးများကိုသူတို့မတိုင်မီ function ကိုရဲ့ကွပ်မျက်ခဲ့သည့်တန်ဖိုးများကိုပြန်နေကြသည်။

function အမည်များနှင့်အဓိပ္ပာယ်ကြေညာစာတမ်းကိုဖို့ -f option နဲ့အတူစာရင်းသို့မဟုတ် builtin ပညတ်တော်တို့ကိုလုပ်ခြင်း, စာစီနိုင်ပါသည်။ ကြေညာသို့မဟုတ်လုပ်ခြင်း, စာစီဖို့ -F option ကိုသာ function ကိုအမည်များကိုစာရင်းပြုစုပါလိမ့်မယ်။ subshells အလိုအလျှောက်သူတို့ကိုပို့ကုန် builtin ဖို့ -f option ကိုနဲ့သတ်မှတ်ကြပါပြီဒါကြောင့် Functions များတင်ပို့နိုင်ပါသည်။

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

ဂဏန်းသင်္ချာဆန်းစစ်သုံးသပ်ခြင်း

အဆိုပါ shell ကိုအချို့သောအခြေအနေများ (ထိုစေ builtin command ကိုနှင့်ဂဏန်းသင်္ချာချဲ့ကြည့်ပါ) နှစ်အောက်, ဂဏန်းသင်္ချာအသုံးအနှုန်းတွေအကဲဖြတ်ခံရဖို့ခွင့်ပြုပါတယ်။ 0 င်အားဖြင့်ဌာနခွဲမှားယွင်းမှုတစ်ခုအဖြစ်ပိတ်မိနေနှင့်အလံဖြစ်ပါတယ်သော်လည်းအကဲဖြတ်, လျတ်အဘို့အဘယ်သူမျှမစစ်ဆေးမှုများနှင့်အတူ fixed-width ကိုကိန်း၌ပြစ်မှားမိသည်။ အဆိုပါအော်ပရေတာနှင့်၎င်းတို့၏စားပေးမှုနှင့်အသင်းကို C ဘာသာစကားမှာကဲ့သို့တူညီသောဖြစ်ကြသည်။ အော်ပရေတာများ၏အောက်ပါစာရင်းတန်းတူ-စားပေးမှုအော်ပရေတာများ၏အဆင့်ဆင့်သို့အုပ်စုဖွဲ့ဖြစ်ပါတယ်။ အဆိုပါအဆင့်ဆင့်စားပေးမှုလျော့ကျလာ၏နိုင်ရန်အတွက်စာရင်းသွင်းဖော်ပြထားပါသည်။

အိုင်ဒီ ++ အိုင်ဒီ -

variable ကို Post-increment နဲ့ post-လျှော့

++ အိုင်ဒီ - အိုင်ဒီ

Pre-increment နှင့် Pre-လျှော့ variable ကို

- +

unary အနုတ်နဲ့အပေါင်း

! ~

ယုတ္တိနှင့် bitwise negation

**

အဆ

* /%

မြှောက်, ဌာနခွဲ, ကျန်ရှိသော

+ -

ထို့အပြင်, အနုတ်

<< >>

ကျန်ရစ်နှင့်ညာဘက် bitwise ဆိုင်း

<=> = <>

နှိုင်းယှဉ်မှု

==! =

တန်းတူရေးနှင့်မညီမျှမှု

&

bitwise AND

^

bitwise သီးသန့် OR

|

bitwise OR

&&

ယုတ္တိနှင့်

||

ယုတ္တိ OR

expr? expr: expr

ခြွင်းချက်အကဲဖြတ်

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

တာဝန်ကျတဲ့နေရာ

expr1, expr2

ပုဒ်ကလေး

Shell က variable တွေကို operands အဖြစ်ခွင့်ပြုခဲ့ကြသည်; ဟူသောအသုံးအနှုနျးအကဲဖြတ်ခင် parameter သည်တိုးချဲ့ဖျော်ဖြေနေသည်။ တစ်ဦးစကားရပ်အတွင်းမှာပဲ shell ကို variable တွေကိုသို့သော်လည်း parameter တိုးချဲ့ syntax မသုံးဘဲနာမည်ဖြင့်လည်းရည်ညွှန်းနိုင်ပါသည်။ တစ်ဦး variable ကို၏တန်ဖိုးကကိုးကားသောအခါတစ်ဂဏန်းသင်္ချာစကားရပ်အဖြစ်အကဲဖြတ်သည်။ တစ်ဦးက shell ကို variable ကိုယင်း၏ကိန်း attribute ကိုတစ်ဦးစကားရပ်များတွင်အသုံးပြုခံရဖို့ကိုဖွင့်စရာမလိုအပ်ပါ။

တစ်ဦးဦးဆောင်ပါ 0 င်တွေနဲ့စဉ်ဆက်မပြတ် octal နံပါတ်များအဖြစ်အဓိပ္ပာယ်ကောက်ယူနေကြသည်။ တစ်ဦးကဦးဆောင် 0x သို့မဟုတ် 0X hexadecimal ဆိုလိုသညျ။ ဒီလိုမှမဟုတ်ရင်နံပါတ်များကိုအခြေခံသည့်ဂဏန်းသင်္ချာအခြေခံကိုယ်စားပြု 2 နှင့် 64 အကြားတစ်ဦးဒဿမအရေအတွက်ကဖြစ်ပြီး, ဎကြောင်းအခြေစိုက်စခန်းအတွက်အရေအတွက်ဖြစ်ပါတယ်ရှိရာပုံစံ [အခြေစိုက်စခန်း #] ဎ, ယူပါ။ အခြေစိုက်စခန်း # ချန်လှပ်လျှင်, ထို့နောက်အခြေစိုက်စခန်း 10 ခုအသုံးပြုသည်။ 9 ထက်ကြီးမြတ်အဆိုပါဂဏန်းတစ်ခုကိုနိုင်ရန်အတွက်စာလုံးအသေး, အကြီးစာလုံး, @, နှင့် _ ကကိုယ်စားပြုနေကြသည်။ အခြေစိုက်စခန်းထက်လျော့နည်းသို့မဟုတ် 36 ညီမျှသည်ဆိုပါက, စာလုံးအသေးများနှင့်အကြီးအအက္ခရာများ 10 နှင့် 35 အကြားနံပါတ်များကိုကိုယ်စားပြု Interchange ကိုအသုံးပြုနိုင်ပါသည်။

အော်ပရေတာစားပေးမှု၏နိုင်ရန်အတွက်အကဲဖြတ်နေကြသည်။ ကွင်းအတွင်း sub-အသုံးအနှုန်းတွေကိုပထမဆုံးအကဲဖြတ်နေကြသည်နှင့်အထက်စားပေးမှုစည်းမျဉ်းစည်းကမ်းတွေကို override လိမ့်မည်။

ကနျ့စကားလုံး

conditional အသုံးအနှုန်းတွေဖိုင် attribute တွေစမ်းသပ်ရန်နှင့် string ကိုနှင့်ဂဏန်းသင်္ချာနှိုင်းယှဉ်လုပ်ဆောင်ဖို့ [[ဝင်း command ကိုနှင့်စမ်းသပ်မှုများနှင့် [builtin ပညတ်တော်တို့ကိုအားဖြင့်အသုံးပြုကြသည်။ အသုံးအနှုန်းတွေကိုအောက်ပါ unary သို့မဟုတ်ဒွိမူလတန်းကနေဖွဲ့စည်းထားပါသည်။ မူလတန်းတဘယ်ဖိုင်မဆိုအငြင်းအခုံပုံစံ / dev သည် / fd / n လျှင်, descriptor ကို file ဎဓြှု။ မူလတန်းတဖိုင်ကိုအငြင်းအခုံ / dev / stdin / dev / stdout, ဒါမှမဟုတ် / dev / stderr ၏တဦးတည်း, ဖိုင် descriptor ကို 0 င်, 1, ဒါမှမဟုတ် 2 ဖြစ်လျှင်, အသီးသီးဓြှု။

-a ဖိုင်

ဖိုင်တည်ရှိပါလျှင်စစ်မှန်သော။

-b ဖိုင်

ဖိုင်တစ်ပိတ်ပင်တားဆီးမှုအထူးဖိုင်ကိုတည်ရှိခြင်းနှင့်လျှင်စစ်မှန်သော။

-c ဖိုင်

ဖိုင်တစ်ဇာတ်ကောင်အထူးဖိုင်ကိုတည်ရှိခြင်းနှင့်လျှင်စစ်မှန်သော။

-D ဖိုင်

ဖိုင်ဟာ directory တည်ရှိခြင်းနှင့်လျှင်စစ်မှန်သော။

-e ဖိုင်

ဖိုင်တည်ရှိပါလျှင်စစ်မှန်သော။

-f ဖိုင်

file ကိုပုံမှန်ဖိုင်တည်ရှိခြင်းနှင့်လျှင်စစ်မှန်သော။

-g ဖိုင်

ဖိုင် set-အုပ်စုတစ်စု-id သည်တည်ရှိခြင်းနှင့်လျှင်စစ်မှန်သော။

-h ဖိုင်

ဖိုင်တစ်ဦးသင်္ကေတ link ကိုတည်ရှိခြင်းနှင့်လျှင်စစ်မှန်သော။

-k ဖိုင်

ဖိုင်တည်ရှိခြင်းနှင့်ယင်း၏ `` စေးကပ် '' နည်းနည်းသတ်မှတ်ထားလျှင်စစ်မှန်သော။

-p ဖိုင်

ဖိုင်တစ်အမည်ရှိပိုက် (FIFO) တည်ရှိခြင်းနှင့်လျှင်စစ်မှန်သော။

-r ဖိုင်

ဖိုင်တည်ရှိခြင်းနှင့်ဖတ်လို့ရအောင်လျှင်စစ်မှန်သော။

-s ဖိုင်

file ကိုသုညထက် သာ. ကြီးမြတ်တဲ့အရွယ်အစားတည်ရှိခြင်းနှင့်ရှိပါတယျလျှင်စစ်မှန်သော။

fd -t

စစ်မှန်သောဖိုင် descriptor ကို fd ပွင့်လင်းသည်နှင့်တစ်ဦး terminal ကိုရည်ညွှန်းသည်လျှင်။

-u ဖိုင်

ဖိုင်တည်ရှိခြင်းနှင့်ယင်း၏ Set-အသုံးပြုသူ-id သည်နည်းနည်းသတ်မှတ်ထားလျှင်စစ်မှန်သော။

-w ဖိုင်

ဖိုင်တည်ရှိခြင်းနှင့် writable လျှင်စစ်မှန်သော။

-x ဖိုင်

ဖိုင်တည်ရှိခြင်းနှင့်က executable လျှင်စစ်မှန်သော။

-O ဖိုင်

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

-G ဖိုင်

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

-L ဖိုင်

ဖိုင်တစ်ဦးသင်္ကေတ link ကိုတည်ရှိခြင်းနှင့်လျှင်စစ်မှန်သော။

-s ဖိုင်

ဖိုင်တစ် socket တည်ရှိခြင်းနှင့်လျှင်စစ်မှန်သော။

-N ဖိုင်

ဖိုင်တည်ရှိခြင်းနှင့်ရှိပါတယျလျှင်နောက်ဆုံးဖတ်ခဲ့တဲ့ကတည်းကစစ်မှန်တဲ့ပြုပြင်မွမ်းမံခဲ့တာ။

file1 - NT file2

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

file1 - ot file2

စစ်မှန်သော file1 file2 ထက်အသက်ကြီးလျှင်, သို့မဟုတ် file2 တည်ရှိခြင်းနှင့် file1 မပါလျှင်။

file1 -ef file2

စစ်မှန်သော file1 နှင့် file2 တူညီသောစက်ကိရိယာနှင့် inode နံပါတ်များကိုရည်ညွှန်းပါ။

-O optname

shell ကို option ကို optname enabled လျှင်စစ်မှန်သော။ အောက်တွင်ဖော်ပြထားသော builtin သတ်မှတ်ပေးရန် -O option ကို၏ဖော်ပြချက်အောက်တွင်ရွေးချယ်မှုစာရင်းထဲကိုကြည့်ပါ။

-z string ကို

string ကိုရဲ့အရှည်သုညလျှင်စစ်မှန်သော။

-n string ကို

ကြိုး

string ကို၏အရှည်သည် non-သုညလျှင်စစ်မှန်သော။

string1 == string2

ကြိုးတန်းတူညီတူလျှင်စစ်မှန်သော။ = တင်းကျပ် POSIX လိုက်နာမှုများအတွက် == နေရာမှာများတွင်အသုံးပြုနိုင်ပါသည်။

string1! = string2

ကြိုးတန်းတူညီတူမဟုတျပါလျှင်စစ်မှန်သော။

string1

လက်ရှိဒေသအတွက် lexicographically string2 မတိုင်မီ string1 အမြိုးမြိုးလျှင်စစ်မှန်သော။

string1> string2

လက်ရှိဒေသအတွက် lexicographically string2 ပြီးနောက် string1 အမြိုးမြိုးလျှင်စစ်မှန်သော။

arg1 OP arg2

OP -eq, -ne, -lt, -le, -gt ၏တဦးတည်းဖြစ်စေ, -ge ဖြစ်ပါတယ်။ arg1, ညီမျှညီမျှမဟုတ်, ဒီထက်ထက်လျော့နည်းသို့မဟုတ်ညီမျှ, ထက်ထက် သာ. ကြီးမြတ်, ဒါမှမဟုတ်အသီးသီး arg2 ဖို့ထက် သာ. ကြီးမြတ်သို့မဟုတ်ညီမျှသည်ဆိုပါကဤရွေ့ကားဂဏန်းသင်္ချာ binary အော်ပရေတာစစ်မှန်တဲ့ပြန်သွားပါ။ Arg1 နှင့် arg2 အပြုသဘောသို့မဟုတ်အပျက်သဘောကိန်းဖြစ်နိုင်သည်။

လွယ်ကူရှင်းလင်း COMMAND expansion

ရိုးရှင်းတဲ့ command ကို execute လုပ်ဖြစ်ပါတယ်သောအခါ, shell ကိုလက်ဝဲမှလက်ျာဘက်အောက်ပါချဲ့ထွင်, တာဝန်တွေ, လမ်းကြောင်းလွှဲလုပ်ဆောင်တယ်။

အဆိုပါ parser ကို variable ကိုတာဝန်ကျ (ထို command ကိုနာမတျောကိုရှေ့သူတို့အား) အဖြစ်မှတ်သားထားပြီးပြန်လည်လမ်းညွှန်မှုအကြာတွင်အပြောင်းအလဲနဲ့အဘို့ကယ်တင်ခြင်းသို့ရောက်ကြောင်း 1.The စကားလုံးများကို။

variable ကိုတာဝန်ကျသို့မဟုတ်ပြန်လည်လမ်းညွှန်မှုမဟုတ် 2.The စကားလုံးများကိုတိုးချဲ့လျက်ရှိသည်။ မည်သည့်စကားများတိုးချဲ့ပြီးနောက်ဆက်လက်တည်ရှိနေလျှင်, ပထမဦးဆုံးစကားလုံးက command ၏နာမတော်ကိုဖြစ်ခေါ်ဆောင်သွားနှင့်ကျန်ရှိနေသောစကားငြင်းခုံနေကြသည်ဖြစ်ပါတယ်။

redirect အောက်မှာအထက်တွင်ဖော်ပြထားသကဲ့သို့ 3.Redirections ဖျော်ဖြေနေကြသည်။

တစ်ဦးချင်းစီ variable ကိုတာဝန်ကျတဲ့အတွက် = ပြီးနောက် 4.The စာသား variable ကိုမှတာဝန်ပေးအပ်ခံရမီ tilde တိုးချဲ့, parameter သည်တိုးချဲ့ရေး, command ကိုအစားထိုး, ဂဏန်းသင်္ချာချဲ့ထွင်ခြင်း, ကိုးကားဖယ်ရှားရေးခြင်းကိုသည်းခံ။

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

အဘယ်သူမျှမ command ကိုနာမကိုအမှီရလဒ်များကိုလြှငျ, ပြန်လည်လမ်းညွှန်မှုဖျော်ဖြေကြသည်, ဒါပေမယ့်လက်ရှိ shell ကိုပတ်ဝန်းကျင်မထိခိုက်ပါဘူး။ တစ်ဦးက redirection အမှားက command non-သုညအဆင့်အတန်းနှင့်အတူမှထွက်ရန်ကိုဖြစ်ပေါ်စေသည်။

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

COMMAND executable

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

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

နာမတော်ကိုအမှီ ပြု. တစ် shell ကို function ကိုမ builtin မသည်နှင့်မျှမတို့မျဉ်းစောင်းပါရှိသည်ဆိုလျှင်, ကား Bash ကြောင်းနာမတော်အားဖြင့်တစ်ဦးဟာ executable file ကိုင်တစ်ဦးက directory များအတွက် PATH တစ်ခုချင်းစီဒြပ်စင်ရှာတတ်၏။ Bash မှာ (SHELL BUILTIN အောက်တွင်ဖော်ပြထားသောပညတ်တော်မူ၏အောက်မှာ hash ကိုကြည့်ပါ) ဟာ executable files တွေကိုအပြည့်အဝလမ်းကြောင်းအမည်ကိုမှတ်မိဖို့တစ် hash စားပွဲပေါ်မှာအသုံးပြုသည်။ PATH အတွက်လမ်းညွှန်များ၏တစ်ဦးကအပြည့်အဝရှာဖွေရေးအမိန့်ဟာ hash table ထဲမှာမတွေ့ရှိမှသာလျှင်ဖျော်ဖြေနေသည်။ ရှာဖွေရေးမအောင်မြင်ဖြစ်ပါတယ်လျှင်, shell ကို error message ကိုရိုက်ထုတ်ခြင်းနှင့် 127 ၏ထွက်ပေါက် status ကိုပြန်လည်ရောက်ရှိ။

ရှာဖွေရေးအောင်မြင်သောသည်ဆိုပါက, သို့မဟုတ် command ကိုနာမတျောကိုတစျခုသို့မဟုတ်ထိုထက်ပိုမျဉ်းစောင်းပါရှိသည်လျှင်, shell ကိုသီးခြားကွပ်မျက်ပတ်ဝန်းကျင်အတွက်အမည်ရှိအစီအစဉ်ကို ပေး. စီရင်။ မဆိုမိလျှင်, အငြင်းအခုံ 0 င်ပေးထားသောနာမတော်ကိုသတ်မှတ်ပြီးလျှင်, command ကိုရန်ကျန်ရှိသောအငြင်းပွားမှုများပေးတဲ့ဆင်ခြေဟုသတ်မှတ်နေကြသည်။

ဖိုင်ကိုဟာ executable format နဲ့မဟုတျပါဘူးဘာဖြစ်လို့လဲဆိုတော့ဒီသေဒဏ်စီရင်ပျက်ကွက်, နှင့်ဖိုင်ဟာ directory မပါရှိလျှင်, တက shell ကိုဇာတ်ညွှန်း, shell ကိုပညတ်တော်တို့ကိုပါဝင်တဲ့ဖိုင်တစ်ဖိုင်ဖြစ်ဖို့ယူဆနေသည်။ တစ်ဦးက subshell က execute မှမွေးထုတ်ဖြစ်ပါတယ်။ သစ်တစ်ခု shell ကိုမိဘတို့ကကိုအောကျမေ့ပညတ်တော်တို့ကိုများ၏တည်နေရာများကို (SHELL BUILTIN command အောက်တွင်အောက်တွင်ဖော်ပြထားသော hash ကိုကြည့်ပါ) ထိုသူငယ်အားဖြင့်ထိန်းသိမ်းထားသောချွင်းချက်နှင့်တကွ, script ကိုကိုင်တွယ်ရန်မဖြစ်၏ခဲ့လျှင်အဖြစ်အကျိုးသက်ရောက်မှုကြောင်းဒါကြောင့်ဒီအ subshell, သူ့ဟာသူ reinitializes ။

program ကို # နှင့်အတူစတင်ဖိုင်တစ်ခုဖြစ်တယ်ဆိုရင်! ပထမလိုင်း၏ကျန်ရှိသောပရိုဂရမျအတှကျစကားပြန်သတ်မှတ်ပါတယ်။ အဆိုပါ shell ကိုဒီဟာ executable format နဲ့မိမိတို့ကိုယ်ကိုကိုင်တွယ်မ operating system မြားပျေါတှငျသတ်မှတ်ထားတဲ့စကားပြန် ပေး. စီရင်။ ဆိုလျှင်စကားပြန်မှအဆိုပါအငြင်းပွားမှုများ, ထို command ကိုငြင်းခုံခြင်းဖြင့်နောက်တော်သို့လိုက်သည့်အစီအစဉ်၏နာမတော်အားဖြင့်နောက်တော်သို့လိုက်သည့်အစီအစဉ်၏ပထမဦးဆုံးလိုင်းပေါ်တွင်စကားပြန်အမည်ဖြင့်အောက်ပါတစ်ခုတည်း optional ကိုအငြင်းအခုံ, ထားရှိရေး။

COMMAND executable ပတ်ဝန်းကျင်

အဆိုပါ shell ကိုအောက်ပါတို့မှပါဝင်ပါသည်သည့်ကွပ်မျက်ပတ်ဝန်းကျင်ရှိပြီး:

အဆိုပါအမှုဆောင်အရာရှိ builtin မှထောက်ပံ့ပြန်လည်လမ်းညွှန်မှုအားဖြင့်ပြုပြင်ထားသောအဖြစ် invocation မှာ shell ကိုတို့ကအမွေဆက်ခံ * ပွင့်လင်းဖိုင်များ,

* လက်ရှိအလုပ်လုပ်ကိုင် directory ကို cd, pushd, ဒါမှမဟုတ် popd အားဖြင့်သတ်မှတ်ထားခြင်းသို့မဟုတ် invocation မှာ shell ကိုတို့ကအမွေဆက်ခံအဖြစ်

* ဖိုင်ကိုဖန်တီး mode ကိုမျက်နှာဖုံး umask အားဖြင့်သတ်မှတ်ထားခြင်းသို့မဟုတ် shell ကိုရဲ့မိဘများထံမှအမွေဆက်ခံအဖြစ်

ထောင်ချောက်များကသတ်မှတ်ထား * လက်ရှိထောင်ချောက်

variable ကိုတာဝန်ကျတဲ့နေရာသို့မဟုတ်အစုံနှင့်အတူသတ်မှတ်ထားသို့မဟုတ်ပတ်ဝန်းကျင်အတွက် shell ကိုရဲ့မိဘများထံမှအမွေဆက်ခံဖြစ်ကြောင်း * shell ကို parameters တွေကို

* shell ကိုလုပ်ဆောင်ချက်များကိုကွပ်မျက်စဉ်အတွင်းသတ်မှတ်သို့မဟုတ်ပတ်ဝန်းကျင်အတွက် shell ကိုရဲ့မိဘများထံမှအမွေဆက်ခံ

invocation မှာ (ပုံမှန်အားဖြင့်သို့မဟုတ် command-line အငြင်းပွားမှုများနှင့်အတူဖြစ်စေ) သို့မဟုတ်အစုအားဖြင့် enabled * ရွေးချယ်မှုများ

shopt အားဖြင့် enabled * ရွေးချယ်မှုများ

alias ကိုနဲ့သတ်မှတ် * shell ကိုနာမည်

* အမျိုးမျိုးသောဖြစ်စဉ်ကိုနောက်ခံအလုပ်အကိုင်ရှိသူများအပါအဝင်၏ ID, $$ ၏တန်ဖိုးနှင့် $ PPID ၏တန်ဖိုး

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

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

* လက်ရှိအလုပ်လုပ်နေသည် directory

* ဖိုင်ကိုဖန်တီး mode ကိုမျက်နှာဖုံး

ပတ်ဝန်းကျင်အတွက်လွန်အမိန့်အဘို့တင်ပို့ variable တွေကိုအတူပို့ကုန်များအတွက်မှတ်သား * shell ကို variable တွေကို,

* shell ကိုဖမ်းမိထောင်ချောက်ထို shell ကိုရဲ့မိဘများထံမှအမွေဆက်ခံသည့်တန်ဖိုးများကို reset ကြသည်ကို၎င်း, shell ကိုလျစ်လျူရှုထောင်ချောက်လျစ်လျူရှုနေကြပါတယ်

ဒီသီးခြားပတ်ဝန်းကျင်တွင်မဖြစ်၏တစ်ဦးက command ကို shell ကိုရဲ့ကွပ်မျက်ပတ်ဝန်းကျင်မထိခိုက်နိုင်ပါတယ်။

command အစားထိုးခြင်းနှင့်ပြတ်တောင်းပြတ်တောင်း command များကို shell ကိုဖမ်းမိထောင်ချောက် shell ကို invocation မှာ၎င်း၏မိဘများထံမှအမွေဆက်ခံသောတန်ဖိုးများကို reset ဖြစ်ကြောင်း မှလွဲ. shell ကိုပတ်ဝန်းကျင်တစ်ခုထပ်သော subshell ပတ်ဝန်းကျင်တွင်မဖြစ်၏နေကြသည်။ ပိုက်လိုင်း၏တစ်စိတ်တစ်ပိုင်းအဖြစ်မဖြစ်၏ဖြစ်ကြောင်း Builtin ပညတ်တော်တို့ကိုလည်း subshell ပတ်ဝန်းကျင်တွင်ကွပ်မျက်ခံရနေကြသည်။ အဆိုပါ subshell ပတ်ဝန်းကျင်စေအပြောင်းအလဲများ shell ကိုရဲ့ကွပ်မျက်ပတ်ဝန်းကျင်မထိခိုက်နိုင်ပါတယ်။

command တစ်ခုတစ် & ခြင်းဖြင့်နောက်တော်သို့လိုက်လျှင်နှင့်အလုပ်အကိုင်ထိန်းချုပ်မှုတက်ကြွသည်မဟုတ်, အမိန့်များအတွက် default အစံ input ကို / null လွတ်ဖိုင် / dev ဖြစ်ပါတယ်။ ပြန်လည်လမ်းညွှန်မှုအားဖြင့်ပြုပြင်ထားသောအဖြစ်အဲလိုမှမဟုတ်ရင်မဖြစ်၏ command ကတော့ခေါ်ဆိုမှု shell ကို၏ဖိုင်ကို descriptor များကိုအမွေ။