ست غير متوقع بش متغير

جي باري ۾ نوٽس جو سلسلو جاري گهٽ ڄاڻايل افعال 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 ڇا اھو توھان کي توھان جي موجوده بش شيل مان ڪڍي ٻئي ”والدين“ شيل ڏانھن وٺي ويندو، يا اھو صرف ڪنسول ونڊو کي مڪمل طور تي بند ڪندو؟

هي متغير ٽريڪ رکي ٿو ته توهان بيش شيل ۾ ڪيتري حد تائين nested آهيو. جيڪڏھن توھان ھڪڙو نئون ٽرمينل ٺاھيو، اھو مقرر ڪيو ويو آھي 1:

$ echo $SHLVL
1

پوء، جيڪڏهن توهان هڪ ٻيو شيل عمل شروع ڪيو، تعداد وڌائي ٿو:

$ bash
$ echo $SHLVL
2

اهو لکت ۾ تمام ڪارائتو ٿي سگهي ٿو جتي توهان کي پڪ ناهي ته ٻاهر نڪرڻ يا نه، يا ٽريڪ رکو جتي توهان nested آهيو.

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

تبصرو شامل ڪريو