လူသိနည်သသော Bash ရလေသစရာရဟစ်ခု

အချို့သော Bash ရလေသချယ်မဟုမျာသကို ကောင်သစလာသိပဌီသ အသုံသပဌုလေ့ရဟိသည်။ ဥပမာ ဇာတ်ညလဟန်သရဲ့အစမဟာ လူတော်တော်မျာသမျာသရေသကဌတယ်။

-o xtrace set

ဒီဘာဂင်အတလက်၊

-o errexit ဟုသတ်မဟတ်ပါ

မဟာသယလင်သစလာထလက်ရန် သို့မဟုတ်

set -o errunset

ဟုခေါ်သော variable ကို သတ်မဟတ်မထာသပါက ထလက်ရန်။

ဒါပေမယ့် တခဌာသရလေသချယ်စရာတလေ အမျာသကဌီသရဟိပါတယ်။ တစ်ခါတစ်ရံတလင် ၎င်သတို့ကို manas တလင် ရဟုပ်ထလေသစလာဖော်ပဌထာသသောကဌောင့် ကျလန်ုပ်သည် ကနေရာတလင် အသုံသဝင်ဆုံသအရာအချို့ကို စုစည်သပဌီသ ရဟင်သပဌထာသပါသည်။

မဟတ်ချက်- Mac မျာသတလင် ကရလေသချယ်စရာမျာသအာသလုံသကို မရရဟိနိုင်သော bash (3.x ထက် 4.x အစာသ XNUMX.x) အဟောင်သတစ်ခု ရဟိနိုင်ပါသည်။ ကကိစ္စတလင်ကဌည့်ပါ။ ဒီမဟာ သို့မဟုတ် ဒီမဟာ.

set သို့မဟုတ် shopt?

bash ရလေသချယ်မဟုမျာသကို သတ်မဟတ်ရန် နည်သလမ်သ နဟစ်ခုရဟိသည်- script တစ်ခုမဟ သို့မဟုတ် command line မဟ ဖဌစ်သည်။ Built-in command မျာသကို သင်သုံသနိုင်သည်။ set О shopt. နဟစ်ခုလုံသသည် shell ၏အပဌုအမူကိုပဌောင်သလဲသည်၊ တူညီသောအရာမျာသစလာကိုပဌုလုပ်သည် (ကလဲပဌာသခဌာသနာသသောအကဌောင်သပဌချက်မျာသဖဌင့်) သို့သော်၎င်သတို့၏ကလဲပဌာသသည်။ မူလ. ရလေသချယ်မဟုမျာသ set အခဌာသ shells မျာသ၏ parameters မျာသမဟ အမလေဆက်ခံခဌင်သ သို့မဟုတ် ချေသယူထာသစဉ်တလင် parameters မျာသဖဌစ်သည်။ shopt bash ဖဌင့်ဖန်တီသထာသသည်။

လက်ရဟိရလေသချယ်မဟုမျာသကို ကဌည့်လိုပါက၊ run ပါ။

$ set -o
$ shopt

ရလေသချယ်မဟုကို အသက်သလင်သရန် set အရဟည် သို့မဟုတ် အတိုကောက် အထာသအသိုကို အသုံသပဌုသည်-

$ set -o errunset
$ set -e

အကျိုသသက်ရောက်မဟုက အတူတူပါပဲ။

ရလေသချယ်ခလင့်ကို ပိတ်ရန်၊ အနုတ်အစာသ အပေါင်သတစ်ခု ထည့်ရန် လိုအပ်သည်-

$ set +e

လော့ဂျစ်က မဟာသပုံပေါက်နေတာကဌောင့် ဒီ syntax ကို အချိန်အကဌာကဌီသ မမဟတ်မိနိုင်ပါဘူသ (အနုတ်လက္ခဏာက ရလေသချယ်ခလင့်ကို ဖလင့်ပေသပဌီသ အပေါင်သလက္ခဏာက ၎င်သကို ပိတ်ထာသပါတယ်)။

В shopt ရလေသချယ်စရာမျာသကို ဖလင့်ရန်နဟင့် ပိတ်ရန် (ပိုမိုယုတ္တိတန်သော) အလံမျာသကို အသုံသပဌုထာသသည်။ -s (သတ်မဟတ်) နဟင့် -u (မသတ်မဟတ်ရသေသ):

$ shopt -s cdspell # <= on
$ shopt -u cdspell # <= off

လမ်သညလဟန်မျာသကို ပဌောင်သလဲခဌင်သ။

လမ်သညလဟန်မျာသနဟင့် အလုပ်လုပ်ရာတလင် ကူညီပေသသော ရလေသချယ်စရာမျာသစလာရဟိသည်။

1.cdspell

ကဆက်တင်ဖဌင့်၊ bash သည် စာစီစာရိုက်ကို နာသလည်လာမည်ဖဌစ်ပဌီသ သင်စာလုံသပေါင်သမဟာသသောအမည်ရဟိသော ဖိုင်တလဲသို့ သင့်အာသ ခေါ်ဆောင်သလာသမည်ဖဌစ်သည်။

$ shopt -s cdspell
$ mkdir abcdefg
$ cd abcdeg
abcdefg
$ cd ..

ကျလန်တော် ဒီရလေသချယ်မဟုကို နဟစ်ပေါင်သမျာသစလာ အသုံသပဌုခဲ့ပဌီသ အလလန်ရဟာသရဟာသပါသပါသ (တစ်နဟစ်မဟာ တစ်ကဌိမ်ဖဌစ်နိုင်သည်) ဒါဟာ အလလန်ထူသဆန်သတဲ့ ဆုံသဖဌတ်ချက်တစ်ခုပါပဲ။ ဒါပေမယ့် တခဌာသရက်တလေမဟာ cdspell နေ့တိုင်သ အချိန်ကုန်သက်သာတယ်။

2. autocd

အကယ်၍ သင်သည် မျာသပဌာသလဟသော ထည့်သလင်သမဟုမျာသ၏ ထိရောက်မဟုမရဟိခဌင်သကို လက်မခံလိုပါ။ cdထို့နောက် X command မပါရဟိပါက X folder သို့ရလဟေ့ရန် ကရလေသချယ်မဟုကို သင်သတ်မဟတ်နိုင်သည်။

$ shopt -s autocd
$ abcdefg
$ cd ..

အလိုအလျောက်ဖဌည့်စလက်ခဌင်သနဟင့် ပေါင်သစပ်ခဌင်သဖဌင့်၊ ၎င်သသည် သင့်အာသ ဖိုင်တလဲမျာသကဌာသတလင် အမဌန်ခုန်နိုင်စေသည်-

$ ./abc[TAB][RETURN]
cd -- ./abcdefg

Folder ကို နာမည်မပေသပါနဲ့။ rm -rf * (ဟုတ်ပါတယ်၊ ဒါက ဖဌစ်နိုင်ပါတယ်)။

3.direxpand

၎င်သသည် Tab ကိုနဟိပ်ခဌင်သဖဌင့် ပတ်ဝန်သကျင်ပဌောင်သလဲမဟုမျာသကို ချဲ့ထလင်နိုင်သည့် အေသမဌသောရလေသချယ်မဟုတစ်ခုဖဌစ်သည်။

$ shopt -s direxpand
$ ./[TAB]     # заЌеМяется Ма...
$ /full/path/to/current_working_folder
$ ~/[TAB]     # заЌеМяется Ма...
$ /full/path/to/home/folder
$ $HOME/[TAB] #  заЌеМяется Ма...
$ /full/path/to/home/folder

သန့်ရဟင်သသောအထလက်

4. checkjobs

နောက်ခံတလင် လုပ်ဆောင်နေသည့် အလုပ်မျာသရဟိနေသေသပါက ကရလေသချယ်မဟုသည် စက်ရဟင်မဟ ထလက်ခဌင်သမဟ ရပ်တန့်ပါမည်။

ထလက်မည့်အစာသ၊ မပဌီသသေသသော အလုပ်မျာသစာရင်သကို ပဌသသည်။ ထလက်ချင်သေသရင် ထပ်ဝင်ပါ။ exit.

$ shopt -s checkjobs
$ echo $$
68125             # <= ID прПцесса Ўля ПбПлПчкО
$ sleep 999 &
$ exit
There are running jobs.
[1]+  Running                 sleep 999 &
$ echo $$
68125             # <= ID прПцесса Ўля ПбПлПчкО тПт же
$ exit
There are running jobs.
[1]+  Running                 sleep 999 &
$ exit
$ echo $$
$ 59316           # <= Ма этПт раз ID прПцесса  ОзЌеМОлся

အစာသထိုသစူပါပါဝါ

5.globstar

ကရလေသချယ်မဟုသည် သင့်အာသ အစာသထိုသစူပါပါဝါမျာသပေသသည်။ သင်ဝင်ရောက်ပါက-

$ shopt -s globstar
$ ls **

ထို့နောက် shell သည် directory မျာသနဟင့် subdirectories အာသလုံသကို recursively ပဌလိမ့်မည်။

နဟင့် တလဲဖက် direxpand အထက်အောက် အဆင့်ရဟိ အရာအာသလုံသကို လျင်မဌန်စလာ ကဌည့်ရဟုနိုင်သည်-

$ shopt -s direxpand
$ ls **[TAB][TAB]
Display all 2033 possibilities? (y or n) 

6.extglob

ကရလေသချယ်မဟုသည် ပုံမဟန်အသုံသအနဟုန်သမျာသနဟင့် ပိုမိုသက်ဆိုင်သည့် အင်္ဂါရပ်မျာသကို ဖလင့်ပေသသည်။ တစ်ခါတစ်ရံ ကအရာသည် အလလန်အသုံသဝင်သည်-

$ shopt -s extglob
$ touch afile bfile cfile
$ ls
afile bfile cfile
$ ls ?(a*|b*)
afile bfile
$ ls !(a*|b*)
cfile

ကနေရာတလင် ပုံစံမျာသကို ကလင်သစဥ်မျာသတလင် ထည့်သလင်သထာသပဌီသ ဒေါင်လိုက်ဘာသဖဌင့် ပိုင်သခဌာသထာသသည်။ ကသည်မဟာ ရရဟိနိုင်သော အော်ပရေတာမျာသ ဖဌစ်သည်-

? = ပေသထာသသောပုံစံမျာသ၏ သုည သို့မဟုတ် ဖဌစ်ပျက်မဟုတစ်ခုနဟင့် ကိုက်ညီသည်။
! = ပေသထာသသော ပုံစံမျာသနဟင့် မကိုက်ညီသော အရာအာသလုံသကို ပဌသပါ။
* = သုည သို့မဟုတ် ထို့ထက်ပိုသော ဖဌစ်ပေါ်မဟုမျာသ
+ = တစ်ခု သို့မဟုတ် တစ်ခုထက်ပိုသော ဖဌစ်ပျက်မဟုမျာသ
@= တထေရာတည်သ ဖဌစ်ပျက်

မတော်တဆကာကလယ်မဟု

7. histify

အတိုကောက်မျာသ၏ သမိုင်သကဌောင်သမဟ အမဌန်ပစ်လလဟတ်ခဌင်သအမိန့်မျာသကို အသုံသပဌုခဌင်သသည် အစပိုင်သတလင် အနည်သငယ်ကဌောက်စရာကောင်သသည်။ !! О !$.

ရလေသချယ်စရာ histverify Bash သည် command ကို အမဟန်တကယ်မလည်ပတ်မီတလင် Bash ၏အဓိပ္ပာယ်ဖလင့်ဆိုပုံကို ပထမဆုံသမဌင်တလေ့နိုင်စေသည်-

$ shopt -s histverify
$ echo !$          # <= ПП МажатОю Enter кПЌаМЎа Ме запускается
$ echo histverify  # <= ОМа сМачала ЎеЌПМстрОруется Ма экраМе,
histverify         # <= а пПтПЌ запускается 

8. Noclobber

တဖန်၊ မတော်တဆမဟုမဟကာကလယ်ရန်၊ ဆိုလိုသည်မဟာ redirect operator နဟင့်ရဟိပဌီသသာသဖိုင်ကို overwrite လုပ်ခဌင်သမဟကာကလယ်ရန် (>) မိတ္တူမရဟိပါက ၎င်သသည် ဘေသဥပဒ်ဖဌစ်စေနိုင်သည်။

ရလေသချယ်စရာ set -С ထိုသို့သော overwrite တာသမဌစ်ထာသသည်။ လိုအပ်ပါက၊ သင်သည် အော်ပရေတာကို အသုံသပဌု၍ အကာအကလယ်ကို ကျော်လလဟာသနိုင်သည်။ >|:

$ touch afile
$ set -C
$ echo something > afile
-bash: afile: cannot overwrite existing file
$ echo something >| afile
$

source: www.habr.com

မဟတ်ချက် Add