Seitse ootamatut Bashi muutujat

Märkmete seeria jätkamine selle kohta vähem tuntud funktsioone bash, ma näitan teile seitset muutujat, millest te ei pruugi teada.

1) PROMPT_COMMAND

Võib-olla teate juba, kuidas viipaga manipuleerida, et näidata mitmesugust kasulikku teavet, kuid mitte kõik ei tea, et saate käivitada shell-käsu iga kord, kui viipa kuvatakse.

Tegelikult kasutavad paljud keerukad viipade manipulaatorid seda muutujat käskude täitmiseks, et koguda viibal kuvatavat teavet.

Proovige seda uues kestas käivitada ja vaadake, mis seansiga juhtub:

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

2) HISTTIMEFORMAT

Kui jooksed history konsoolis saate loendi käskudest, mida teie kontol varem käivitati.

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

Kui see muutuja on määratud, salvestavad uued kirjed aja koos käsuga, nii et väljund näeb välja järgmine:

1871 Käitsin seda aadressil: 01/05/19 13:38:07 cat /etc/resolv.conf 1872 Käitsin seda aadressil: 01/05/19 13:38:19 curl bbc.co.uk 1873 : 01/05/19 13:38:41 sudo vi /etc/resolv.conf 1874 Käivitasin seda: 01/05/19 13:39:18 curl -vvv bbc.co.uk 1876 Käivitasin seda: 01 /05/19 13:39:25 sudo su -

Vormindamine vastab tähemärkidele alates man date.

3) CDPATH

Käsurea aja säästmiseks saate seda muutujat kasutada kataloogide muutmiseks sama lihtsalt kui käskude väljastamisega.

Kui PATH, muutuv CDPATH on kooloniga eraldatud teede loend. Kui käivitate käsu cd suhtelise teega (st ilma kaldkriipsuta), otsib kest vaikimisi teie kohalikust kaustast sobivaid nimesid. CDPATH otsib teie antud radadel kataloogi, kuhu soovite minna.

Kui installite CDPATH sel viisil:

$ CDPATH=/:/lib

ja seejärel sisestage:

$ cd /home
$ cd tmp

siis jõuad alati sinna /tmp olenemata sellest, kus sa oled.

Kuid olge ettevaatlik, sest kui te ei määra loendis kohalikku (.) kausta, siis ei saa te ühtegi teist kausta luua tmp ja minge selle juurde nagu tavaliselt:

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

Oih!

See sarnaneb segadusega, mida tundsin, kui mõistsin, et kohalik kaust ei kuulu tuttavama muutuja hulka PATH... aga sa pead seda tegema PATH muutujas, sest sind võidakse meelitada mõnest allalaaditud koodist võltskäsku käivitama.

Minu oma määrab lähtepunkt:

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

4) SHLVL

Kas olete kunagi mõelnud, kirjutades exit kas see viib teid praegusest bash-shellist välja teise "vanema" kesta juurde või sulgeb see konsooli akna täielikult?

See muutuja jälgib, kui sügaval bash-shellis olete. Kui loote uue terminali, määratakse selle väärtuseks 1:

$ echo $SHLVL
1

Seejärel, kui käivitate teise shell-protsessi, suureneb arv:

$ bash
$ echo $SHLVL
2

See võib olla väga kasulik skriptides, kus te pole kindel, kas väljuda või mitte, või jälgida, kus olete pesastatud.

5) LINENO

Muutuja on kasulik ka hetkeoleku analüüsimiseks ja silumiseks LINENO, mis teatab seansi jooksul seni täidetud käskude arvu:

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

Seda kasutatakse kõige sagedamini skriptide silumisel. Liinide lisamine nagu echo DEBUG:$LINENO, saate kiiresti kindlaks teha, kus skriptis olete (või mitte).

6) REPLY

Kui, nagu mina, kirjutate tavaliselt koodi järgmiselt:

$ read input
echo do something with $input

Võib tulla üllatusena, et te ei pea muutuja loomise pärast üldse muretsema:

$ read
echo do something with $REPLY

See teeb sama asja.

7) TMOUT

Et vältida turvakaalutlustel liiga kaua tootmisserverites viibimist või millegi kogemata vales terminalis ohtlikku käivitamist, toimib selle muutuja seadmine kaitsena.

Kui määratud arvu sekundite jooksul midagi ei sisestata, siis kest väljub.

See tähendab, et see on alternatiiv sleep 1 && exit:

$ TMOUT=1

Allikas: www.habr.com

Lisa kommentaar