اته لږ پیژندل شوي باش اختیارونه

د بش ځینې اختیارونه ښه پیژندل شوي او ډیری وختونه کارول کیږي. د مثال په توګه، ډیری خلک د سکریپټ په پیل کې لیکي

سایټ - اوکسټرس

د پاکولو لپاره،

ټاکنه

په غلطۍ سره وتل یا

set -o errunset

د وتلو لپاره که چیرې ویل شوی متغیر ټاکل شوی نه وي.

مګر ډیری نور اختیارونه شتون لري. ځینې ​​​​وختونه دوی په ماناس کې خورا مغشوش شوي بیان شوي ، نو ما دلته د توضیحاتو سره ځینې خورا ګټور راټول کړي دي.

یادونه: ماک ممکن د باش زوړ نسخه ولري (د 3.x پرځای 4.x) چیرې چې دا ټول اختیارونه شتون نلري. په دې حالت کې، وګورئ دلته او یا دلته.

set او یا shopt?

د بش انتخابونو تنظیم کولو لپاره دوه لارې شتون لري: د سکریپټ یا د کمانډ لاین څخه. تاسو کولی شئ جوړ شوي کمانډونه وکاروئ set и shopt. دواړه د شیل چلند بدلوي ، ډیر ورته کار کوي (د مختلف دلیلونو سره) ، مګر په دوی کې توپیر لري اصل. اختیارونه set د نورو شیلونو پیرامیټونو څخه په میراث یا پور اخیستل شوي، پداسې حال کې چې پیرامیټونه shopt په باش کې جوړ شوی.

که تاسو غواړئ اوسني اختیارونه وګورئ، چل کړئ:

$ set -o
$ shopt

د اختیار د فعالولو لپاره set اوږد یا لنډ ترکیب کارول کیږي:

$ set -o errunset
$ set -e

اغیزه ورته ده.

د اختیار غیر فعالولو لپاره ، تاسو اړتیا لرئ د منفي پرځای پلس واچوئ:

$ set +e

د اوږدې مودې لپاره زه نشم کولی دا ترکیب په یاد ولرم ځکه چې منطق غلط ښکاري (د منفي نښه اختیار فعالوي، او جمع نښه یې غیر فعالوي).

В 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 فولډر ته لاړ شئ که چیرې د X کمانډ شتون ونلري.

$ shopt -s autocd
$ abcdefg
$ cd ..

د اوتوماتیک سره یوځای، دا تاسو ته اجازه درکوي په چټکۍ سره د فولډرو ترمنځ ټوپ کړئ:

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

یوازې د فولډر نوم مه اخلئ 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. د دندو چک کول

دا اختیار د ناستې څخه د ننوتلو مخه نیسي که چیرې لاهم دندې په شالید کې روانې وي.

د وتلو پرځای، د نیمګړو کارونو لیست ښودل کیږي. که تاسو اوس هم غواړئ بهر ته لاړ شئ، نو بیا داخل کړئ 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 **

بیا به شیل ټول لارښودونه او فرعي لارښودونه په تکراري ډول وښیې.

په ګډه سره 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. هسته تایید کړئ

دا په لومړي سر کې یو څه ویره کیدی شي د لنډیزونو تاریخ څخه د ګړندي لانچ کمانډونو کارولو لپاره !! и !$.

غوراوي histverify تاسو ته اجازه درکوي لومړی وګورو چې څنګه باش کمانډ تشریح کوي مخکې لدې چې واقعیا چلیږي:

$ shopt -s histverify
$ echo !$          # <= По нажатию Enter команда не запускается
$ echo histverify  # <= Она сначала демонстрируется на экране,
histverify         # <= а потом запускается 

8. نوکلوبر

یوځل بیا ، د حادثو پروړاندې د ساتنې لپاره ، د بیلګې په توګه د یوې فایل له لیکلو څخه چې دمخه د ریډیریک آپریټر سره شتون لري (>). دا یو ناورین کیدی شي که تاسو بیک اپ نلرئ.

غوراوي set -С دا ډول لیکل منع کوي. که اړتیا وي، تاسو کولی شئ د آپریټر په کارولو سره محافظت پریږدئ >|:

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

سرچینه: www.habr.com

Add a comment