Sewe onverwagte Bash veranderlikes

Voortsetting van die reeks notas oor minder bekend funksies bash, ek sal jou sewe veranderlikes wys waarvan jy dalk nie weet nie.

1) PROMPT_COMMAND

Jy weet dalk reeds hoe om die prompt te manipuleer om verskeie nuttige inligting te wys, maar nie almal weet dat jy 'n dop-opdrag kan uitvoer elke keer as die prompt gewys word nie.

Trouens, baie komplekse vinnige manipuleerders gebruik hierdie veranderlike om opdragte uit te voer om inligting in te samel wat in die prompt vertoon word.

Probeer dit in 'n nuwe dop laat loop en kyk wat met die sessie gebeur:

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

2) HISTTIMEFORMAT

As jy hardloop history in die konsole, sal jy 'n lys van opdragte ontvang wat voorheen onder jou rekening uitgevoer is.

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

Sodra hierdie veranderlike ingestel is, teken nuwe inskrywings die tyd saam met die opdrag aan, so die uitvoer sal soos volg lyk:

1871 Ek het dit gehardloop by: 01/05/19 13:38:07 cat /etc/resolv.conf 1872 Ek het dit gehardloop by: 01/05/19 13:38:19 curl bbc.co.uk 1873 Ek het dit gehardloop by : 01/05/19 13:38:41 sudo vi /etc/resolv.conf 1874 Ek het dit gehardloop by: 01/05/19 13:39:18 curl -vvv bbc.co.uk 1876 Ek het dit gehardloop by: 01 /05/19 13:39:25 sudo su -

Formatering pas by karakters van man date.

3) CDPATH

Om tyd op die opdragreΓ«l te bespaar, kan jy hierdie veranderlike gebruik om gidse so maklik te verander as wat jy opdragte uitreik.

As PATH, veranderlike CDPATH is 'n kolon-geskeide lys van paaie. Wanneer jy die opdrag uitvoer cd met 'n relatiewe pad (d.w.s. geen leidende skuinsstreep), by verstek kyk die dop in jou plaaslike gids vir ooreenstemmende name. CDPATH sal soek in die paaie wat jy gegee het vir die gids waarheen jy wil gaan.

As jy installeer CDPATH op hierdie manier:

$ CDPATH=/:/lib

en voer dan in:

$ cd /home
$ cd tmp

dan sal jy altyd in beland /tmp maak nie saak waar jy is nie.

Wees egter versigtig, want as jy nie die plaaslike een in die lys spesifiseer nie (.) gids, dan sal jy nie in staat wees om enige ander gids te skep nie tmp en gaan na dit soos gewoonlik:

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

Oeps!

Dit is soortgelyk aan die verwarring wat ek gevoel het toe ek besef het dat die plaaslike vouer nie by die meer bekende veranderlike ingesluit is nie PATH... maar jy moet dit in jou PATH-veranderlike doen, want jy kan mislei word om 'n vals opdrag van een of ander afgelaaide kode uit te voer.

Myne word gestel deur die beginpunt:

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

4) SHLVL

Het jy al ooit gewonder, tik exit sal dit jou uit jou huidige bash-dop na 'n ander "ouer"-dop neem, of sal dit net die konsole-venster heeltemal toemaak?

Hierdie veranderlike hou tred met hoe diep geneste jy in die bash-dop is. As jy 'n nuwe terminaal skep, is dit op 1 gestel:

$ echo $SHLVL
1

Dan, as jy 'n ander dopproses begin, neem die getal toe:

$ bash
$ echo $SHLVL
2

Dit kan baie nuttig wees in skrifte waar jy nie seker is of jy moet verlaat of nie, of tred hou met waar jy geneste is nie.

5) LINENO

Die veranderlike is ook nuttig vir die ontleding van die huidige toestand en ontfouting LINENO, wat die aantal opdragte wat tot dusver in die sessie uitgevoer is, rapporteer:

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

Dit word meestal gebruik wanneer skrifte ontfout word. Invoeging van lyne soos echo DEBUG:$LINENO, kan jy vinnig bepaal waar in die skrif jy is (of nie).

6) REPLY

As jy, soos ek, gewoonlik kode soos volg skryf:

$ read input
echo do something with $input

Dit mag dalk 'n verrassing wees dat jy glad nie hoef te bekommer oor die skep van die veranderlike nie:

$ read
echo do something with $REPLY

Dit doen dieselfde ding.

7) TMOUT

Om te verhoed dat u om sekuriteitsredes te lank op produksiebedieners bly of om per ongeluk iets gevaarliks ​​in die verkeerde terminaal te laat loop, dien die instelling van hierdie veranderlike as 'n beskerming.

As niks vir 'n vasgestelde aantal sekondes ingevoer word nie, gaan die dop uit.

Dit wil sΓͺ, dit is 'n alternatief sleep 1 && exit:

$ TMOUT=1

Bron: will.com

Voeg 'n opmerking