Vigezo saba vya Bash visivyotarajiwa

Kuendelea mfululizo wa maelezo kuhusu inayojulikana kidogo kazi bash, nitakuonyesha anuwai saba ambazo labda haujui.

1) PROMPT_COMMAND

Unaweza kuwa tayari unajua jinsi ya kuendesha onyesho ili kuonyesha habari nyingi muhimu, lakini sio kila mtu anajua kuwa unaweza kuendesha amri ya ganda kila wakati onyesho linaonyeshwa.

Kwa kweli, vidanganyifu vingi changamano hutumia kigeu hiki kutekeleza amri ili kukusanya taarifa zinazoonyeshwa kwenye dodoso.

Jaribu kuendesha hii kwenye ganda jipya na uone kinachotokea kwa kikao:

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

2) HISTTIMEFORMAT

Ikiwa kukimbia history kwenye koni, utapokea orodha ya amri zilizotekelezwa hapo awali chini ya akaunti yako.

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

Mara tu utofauti huu umewekwa, maingizo mapya yanarekodi wakati pamoja na amri, kwa hivyo matokeo yataonekana kama hii:

1871 niliendesha hii saa: 01/05/19 13:38:07 cat /etc/resolv.conf 1872 Nilikimbia hii saa: 01/05/19 13:38:19 curl bbc.co.uk 1873 Nilikimbia hii saa : 01/05/19 13:38:41 sudo vi /etc/resolv.conf 1874 Niliendesha hii saa: 01/05/19 13:39:18 curl -vvv bbc.co.uk 1876 niliendesha hii kwa: 01 /05/19 13:39:25 sudo su -

Uumbizaji unalingana na herufi kutoka man date.

3) CDPATH

Ili kuokoa muda kwenye mstari wa amri, unaweza kutumia kigezo hiki kubadilisha saraka kwa urahisi unapotoa amri.

Kama PATH, kutofautiana CDPATH ni orodha ya njia zilizotenganishwa na koloni. Unapoendesha amri cd na njia ya jamaa (yaani hakuna kufyeka inayoongoza), kwa chaguo-msingi ganda linaonekana kwenye folda yako ya karibu kwa majina yanayolingana. CDPATH itatafuta katika njia ulizotoa kwa saraka unayotaka kwenda.

Ikiwa utaweka CDPATH kwa njia hii:

$ CDPATH=/:/lib

na kisha ingiza:

$ cd /home
$ cd tmp

basi utaishia ndani kila wakati /tmp haijalishi uko wapi.

Walakini, kuwa mwangalifu, kwa sababu ikiwa hautataja ya ndani kwenye orodha (.), basi hutaweza kuunda folda nyingine yoyote tmp na uende kama kawaida:

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

Lo!

Hii ni sawa na mkanganyiko niliohisi nilipogundua kuwa folda ya ndani haikujumuishwa kwenye utofauti unaofahamika zaidi PATH... lakini lazima uifanye kwa utofauti wako wa PATH kwa sababu unaweza kudanganywa kutekeleza amri bandia kutoka kwa nambari fulani iliyopakuliwa.

Yangu imewekwa na mahali pa kuanzia:

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

4) SHLVL

Umewahi kujiuliza, kuandika exit itakuondoa kwenye ganda lako la sasa la bash hadi kwa ganda lingine la "mzazi", au itafunga tu kidirisha cha koni kabisa?

Tofauti hii inafuatilia jinsi ulivyowekwa kiota kwenye ganda la bash. Ukiunda terminal mpya, imewekwa kwa 1:

$ echo $SHLVL
1

Halafu, ukianza mchakato mwingine wa ganda, nambari huongezeka:

$ bash
$ echo $SHLVL
2

Hii inaweza kuwa muhimu sana katika hati ambapo huna uhakika kama uondoke au la, au ufuatilie mahali unapowekwa.

5) LINENO

Tofauti pia ni muhimu kwa kuchambua hali ya sasa na utatuzi LINENO, ambayo inaripoti idadi ya amri zilizotekelezwa kwenye kikao hadi sasa:

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

Hii hutumiwa mara nyingi wakati wa kurekebisha hati. Kuingiza mistari kama echo DEBUG:$LINENO, unaweza kuamua haraka mahali ulipo kwenye hati (au la).

6) REPLY

Ikiwa, kama mimi, kawaida huandika nambari kama hii:

$ read input
echo do something with $input

Inaweza kushangaza kuwa hauitaji kuwa na wasiwasi juu ya kuunda utofauti hata kidogo:

$ read
echo do something with $REPLY

Hii inafanya jambo lile lile.

7) TMOUT

Ili kuepuka kukaa kwenye seva za uzalishaji kwa muda mrefu sana kwa sababu za kiusalama au kuendesha jambo hatari kimakosa katika terminal isiyo sahihi, kuweka kigezo hiki hufanya kama ulinzi.

Ikiwa hakuna chochote kilichoingizwa kwa idadi iliyowekwa ya sekunde, shell hutoka.

Hiyo ni, hii ni mbadala sleep 1 && exit:

$ TMOUT=1

Chanzo: mapenzi.com

Kuongeza maoni