Seitsme ootamatu Bash muutujaga.

Jätkates märkmeid vähem tuntud funktsioonidest bashis, näitan teile seitset muutujat, millest te võisite mitte teada. PROMPT_COMMAND

1) Võib-olla olete juba teadlik, kuidas manipuleerida prompt'i, et näidata erinevat kasulikku teavet, kuid mitte kõik ei tea, et iga kord, kui prompt'i kuvatakse, saab käivitada shelli käsu.

Tõepoolest, paljud keerulised prompt'i manipulaatorid kasutavad seda muutujat, et täita käske, mis koguvad teavet, mis kuvatakse prompt'is.

Proovige käivitada see uues shellis ja näete, mis teie sessiooniga juhtub:

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

HISTTIMEFORMAT

2) Kui käivitate

history konsolis, saate nimekirja käskudest, mis on varem teie kontoga täidetud. $ HISTTIMEFORMAT='I ran this at: %d/%m/%y %T '

Kui see muutuja on seadistatud, salvestatakse uued kirjed koos ajaga koos käsuga, seega näeb väljund välja järgmiselt:

1871 I ran this at: 01/05/19 13:38:07 cat /etc/resolv.conf 1872 I ran this at: 01/05/19 13:38:19 curl bbc.co.uk 1873 I ran this at: 01/05/19 13:38:41 sudo vi /etc/resolv.conf 1874 I ran this at: 01/05/19 13:39:18 curl -vvv bbc.co.uk 1876 I ran this at: 01/05/19 13:39:25 sudo su -

Formaat vastab sümbolitele, mis on

man date CDPATH.

3) Käskude real aja hoidmiseks saate seda muutujat kasutada kataloogide muutmiseks sama lihtsalt kui käskude kutsumine.

, muutuja

Nagu ka PATHkoosneb teede loendist, mis on eraldatud kooloniga. Kui käivitate käsu Käskude real aja hoidmiseks saate seda muutujat kasutada kataloogide muutmiseks sama lihtsalt kui käskude kutsumine. suhtelise tee (st ilma kaldkriipsuta alguses), siis otsib shell vaikimisi sobivaid nimesid teie kohalikust kaustast. cd otsib teed, mida olete andnud katalooge, kuhu soovite minna. Käskude real aja hoidmiseks saate seda muutujat kasutada kataloogide muutmiseks sama lihtsalt kui käskude kutsumine. Kui seadistate

niimoodi: Käskude real aja hoidmiseks saate seda muutujat kasutada kataloogide muutmiseks sama lihtsalt kui käskude kutsumine. $ CDPATH=/:/lib

ja seejärel sisestate:

$ cd /home $ cd tmp

siis jõuate alati

olenevalt sellest, kus te olete. /tmp Aga olge ettevaatlik, sest kui te ei määra kohalikku kausta (

) loendisse, ei saa te luua ühtegi muud kausta.tmp ja minna sellele nagu tavaliselt: $ cd /home $ mkdir tmp $ cd tmp $ pwd /tmp

Oops!

See näib olevat segadus, mida tundsin, kui sain aru, et kohaliku kausta ei olnud kaasatud tuttavasse muutuja

… kuid see tuleb teha muutuja PATH-s, sest teid võib petta vale käsu käivitamine mõnest allalaaditud koodist. PATHMinu seade on alguspunkt:

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

SHLVL

4) Olete kunagi mõelnud, kui sisestate

Olete kunagi mõelnud, et sisestate exit kas teid viib praegusest bash-shellist välja teise "vanema" shelli või lihtsalt sulgeb konsooli akna täielikult?

See muutuja jälgib, kui sügavale olete bash-shellis sisse läinud. Uue terminali loomisel on see seatud 1-le:

$ echo $SHLVL
1

Seejärel, kui käivitate teise shelliprotsessi, suureneb number:

$ bash
$ echo $SHLVL
2

See võib olla väga kasulik skriptides, kus te pole kindel, kas peaksite välja minema või mitte, või jälgida, kus te asute sügavuselt.

5) LINENO

Samuti on kasulik muutuja analüüsimiseks ja silumiseks LINENO, mis näitab, kui palju käske on seansi jooksul praeguseks täidetud:

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

Seda kasutatakse kõige sagedamini skriptide silumisel. Selliste ridade lisamine nagu echo DEBUG:$LINENO, saate kiiresti tuvastada, kus te skriptis viibite (või ei viibi).

6) REPLY

Kui te, nagu mina, kirjutate tavaliselt sellist koodi:

$ read input
echo do something with $input

siis võib olla üllatav, et ei pea muutuja loomise pärast üldse muretsema:

$ read
echo do something with $REPLY

See teeb sama.

7) TMOUT

Kuna te ei viibiks tootmisserverites liiga kaua turvakaalutlustel või ei käivitaks midagi ohtlikku vale terminalis, siis selle muutuja seadmine toimib kaitsemehhanismina.

Kui mingit sisendit ei saadud kindlaksmääratud sekundite jooksul, toimub shellist lahkumine.

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

$ TMOUT=1

Allikas: habr.com

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster