اوه غیر متوقع باش متغیرونه

په اړه د یادښتونو لړۍ ته دوام ورکوي لږ پیژندل شوی دندې bash، زه به تاسو ته اوه متغیرونه وښیم چې تاسو شاید نه پوهیږئ.

1) PROMPT_COMMAND

تاسو ممکن دمخه پوه شئ چې څنګه د مختلف ګټورو معلوماتو ښودلو لپاره پرامپټ اداره کړئ ، مګر هرڅوک نه پوهیږي چې تاسو کولی شئ د شیل کمانډ چل کړئ هرکله چې پرامپټ ښودل شي.

په حقیقت کې، ډیری پیچلي پرامپټ مینیپلیټرونه دا متغیر د امرونو اجرا کولو لپاره کاروي ترڅو معلومات راټول کړي چې په پرامپټ کې ښودل شوي.

دا په نوي شیل کې چلولو هڅه وکړئ او وګورئ چې غونډې ته څه پیښیږي:

$ PROMPT_COMMAND='echo -n "writing the prompt at " && date'

2) HISTTIMEFORMAT

که تاسو منډې وهئ history په کنسول کې، تاسو به د امرونو لیست ترلاسه کړئ چې مخکې ستاسو د حساب لاندې اجرا شوي.

$ HISTTIMEFORMAT='I ran this at: %d/%m/%y %T '

یوځل چې دا متغیر تنظیم شي ، نوي ننوتل د کمانډ سره وخت ثبتوي ، نو محصول به داسې ښکاري:

1871 ما دا په 01/05/19 13:38:07 کې واخیسته cat /etc/resolv.conf 1872 ما دا په 01/05/19 13:38:19 curl bbc.co.uk 1873 کې واخیسته : 01/05/19 13:38:41 sudo vi /etc/resolv.conf 1874 زه دا په 01/05/19 13:39:18 curl -vvv bbc.co.uk 1876 کې ورغلم: 01 /05/19 13:39:25 sudo su -

بڼه له حروفونو سره سمون خوري man date.

3) CDPATH

د کمانډ لاین کې د وخت خوندي کولو لپاره ، تاسو کولی شئ دا متغیر د لارښودونو بدلولو لپاره په اسانۍ سره وکاروئ لکه څنګه چې تاسو امر صادر کوئ.

همداراز PATHمتغیر CDPATH د کولن څخه جلا شوي لارو لیست دی. کله چې تاسو کمانډ چلوئ cd د یوې اړوندې لارې سره (د بیلګې په توګه هیڅ مخکښ سلیش)، په ډیفالټ ډول شیل ستاسو په محلي فولډر کې د ورته نومونو لپاره ښکاري. CDPATH په هغه لارو کې به وپلټئ چې تاسو د هغه لارښود لپاره چې تاسو یې غواړئ لاړ شئ.

که تاسو نصب کړئ CDPATH پدې ډول:

$ CDPATH=/:/lib

او بیا داخل کړئ:

$ cd /home
$ cd tmp

بیا به تاسو تل پای ته ورسیږئ /tmp مهمه نده چې تاسو چیرته یاست.

په هرصورت، محتاط اوسئ، ځکه چې که تاسو په لیست کې ځایی مشخص نه کړئ (.) فولډر، نو تاسو به نشئ کولی کوم بل فولډر جوړ کړئ tmp او د معمول په څیر دې ته لاړشئ:

$ cd /home
$ mkdir tmp
$ cd tmp
$ pwd
/tmp

اوف!

دا د هغه ګډوډۍ سره ورته دی چې ما احساس کړ کله چې ما پوهیده چې محلي فولډر په ډیر پیژندل شوي متغیر کې شامل نه و PATH... مګر تاسو باید دا په خپل PATH متغیر کې ترسره کړئ ځکه چې تاسو ممکن د ځینې ډاونلوډ شوي کوډ څخه جعلي کمانډ چلولو کې دوکه شئ.

زما د پیل ټکي لخوا تنظیم شوی:

CDPATH=.:/space:/etc:/var/lib:/usr/share:/opt

4) SHLVL

ایا تاسو کله هم فکر کړی، ټایپ کول exit ایا دا به تاسو د خپل اوسني باش شیل څخه بل "والدین" شیل ته بوځي ، یا دا به یوازې د کنسول کړکۍ په بشپړ ډول وتړي؟

دا متغیر دا تعقیبوي چې تاسو په باش شیل کې څومره ژور ځړول شوي یاست. که تاسو نوی ټرمینل جوړ کړئ، دا 1 ته ټاکل شوی:

$ echo $SHLVL
1

بیا، که تاسو د شیل بله پروسه پیل کړئ، شمیره زیاتیږي:

$ bash
$ echo $SHLVL
2

دا په سکریپټونو کې خورا ګټور کیدی شي چیرې چې تاسو ډاډه نه یاست چې د وتلو یا نه ، یا د هغه ځای تعقیب وساتئ چیرې چې تاسو ځړول شوي یاست.

5) LINENO

متغیر د اوسني حالت تحلیل او ډیبګ کولو لپاره هم ګټور دی LINENO، کوم چې تر دې دمه په ناسته کې د اجرا شوي امرونو شمیر راپور ورکوي:

$ bash
$ echo $LINENO
1
$ echo $LINENO
2

دا ډیری وختونه کارول کیږي کله چې د سکریپټونو ډیبګ کول. لکه د کرښې داخلول echo DEBUG:$LINENO، تاسو کولی شئ په چټکۍ سره وټاکئ چې تاسو په سکریپټ کې چیرته یاست (یا نه).

6) REPLY

که زما په څیر، تاسو معمولا د دې په څیر کوډ لیکئ:

$ read input
echo do something with $input

دا ممکن د حیرانتیا په توګه راشي چې تاسو اړتیا نلرئ د متغیر رامینځته کولو په اړه اندیښنه ولرئ:

$ read
echo do something with $REPLY

دا ورته کار کوي.

7) TMOUT

د امنیتي دلایلو لپاره د تولید سرورونو کې د ډیر وخت پاتې کیدو څخه مخنیوي لپاره یا په ناڅاپي ډول په غلط ټرمینل کې یو څه خطرناک چلول ، د دې متغیر تنظیم کول د محافظت په توګه عمل کوي.

که چیرې د ټاکل شوي ثانیو لپاره هیڅ شی نه وي داخل شوی، شیل وځي.

دا دی، دا یو بدیل دی sleep 1 && exit:

$ TMOUT=1

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

Add a comment