Seitsemän odottamatonta Bash-muuttujaa

Jatkaen muistiinpanojen sarjaa aiheesta vähemmän tunnettu toimintoja bash, näytän sinulle seitsemän muuttujaa, joista et ehkä tiedä.

1) PROMPT_COMMAND

Saatat jo tietää kuinka käsitellä kehotetta näyttääksesi useita hyödyllisiä tietoja, mutta kaikki eivät tiedä, että voit suorittaa komentotulkkikomennon joka kerta, kun kehote näytetään.

Itse asiassa monet monimutkaiset kehotteen manipulaattorit käyttävät tätä muuttujaa komentojen suorittamiseen kehotteessa näytettävien tietojen keräämiseksi.

Kokeile suorittaa tämä uudessa kuoressa ja katso mitä istunnolle tapahtuu:

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

2) HISTTIMEFORMAT

Jos juokset history konsolissa saat luettelon komennoista, jotka on aiemmin suoritettu tililläsi.

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

Kun tämä muuttuja on asetettu, uudet merkinnät tallentavat ajan komennon mukana, joten tulos näyttää tältä:

1871 Suoritin tämän osoitteessa: 01/05/19 13:38:07 cat /etc/resolv.conf 1872 Tein tämän osoitteessa: 01/05/19 13:38:19 curl bbc.co.uk 1873 Tein tämän osoitteessa: : 01/05/19 13:38:41 sudo vi /etc/resolv.conf 1874 Suoritin tämän osoitteessa: 01/05/19 13:39:18 curl -vvv bbc.co.uk 1876 Tein tämän osoitteessa: 01 /05/19 13:39:25 sudo su -

Muotoilu vastaa merkkejä kohteesta man date.

3) CDPATH

Voit säästää aikaa komentorivillä käyttämällä tätä muuttujaa hakemistojen vaihtamiseen yhtä helposti kuin annat komentoja.

kuten PATH, muuttuva CDPATH on kaksoispisteillä eroteltu luettelo polkuista. Kun suoritat komennon cd suhteellisella polulla (eli ilman kauttaviivaa), oletusarvoisesti komentotulkki etsii vastaavia nimiä paikallisesta kansiosta. CDPATH etsii antamillasi poluilla hakemistoa, johon haluat mennä.

Jos asennat CDPATH tällä tavalla:

$ CDPATH=/:/lib

ja kirjoita sitten:

$ cd /home
$ cd tmp

niin päädyt aina sisään /tmp missä ikinä oletkin.

Ole kuitenkin varovainen, koska jos et määritä luettelossa paikallista (.) -kansioon, et voi luoda muuta kansiota tmp ja mene siihen tavalliseen tapaan:

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

Oho!

Tämä on samanlaista hämmennystä, jonka tunsin, kun tajusin, että paikallinen kansio ei sisälly tutumpaan muuttujaan PATH... mutta sinun on tehtävä se PATH-muuttujassasi, koska sinut saatetaan huijata suorittamaan väärennetty komento jostain ladatusta koodista.

Omani on asetettu lähtöpisteen mukaan:

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

4) SHLVL

Oletko koskaan miettinyt kirjoittamista exit viekö se sinut pois nykyisestä bash-kuoresta toiseen "emä"-kuoreen, vai sulkeeko se vain konsoli-ikkunan kokonaan?

Tämä muuttuja seuraa kuinka syvälle olet sisäkkäin bash-kuoressa. Jos luot uuden terminaalin, sen arvoksi tulee 1:

$ echo $SHLVL
1

Sitten, jos aloitat toisen shell-prosessin, luku kasvaa:

$ bash
$ echo $SHLVL
2

Tämä voi olla erittäin hyödyllistä komentosarjoissa, joissa et ole varma, haluatko poistua vai ei, tai jos et ole varma siitä, missä olet sisäkkäin.

5) LINENO

Muuttuja on hyödyllinen myös nykyisen tilan analysoinnissa ja virheenkorjauksessa LINENO, joka raportoi istunnossa tähän mennessä suoritettujen komentojen määrän:

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

Tätä käytetään useimmiten skriptien virheenkorjauksessa. Rivien lisääminen kuten echo DEBUG:$LINENO, voit nopeasti määrittää, missä skriptin kohdassa olet (tai et).

6) REPLY

Jos, kuten minä, kirjoitat yleensä koodin näin:

$ read input
echo do something with $input

Voi tulla yllätyksenä, että sinun ei tarvitse huolehtia muuttujan luomisesta ollenkaan:

$ read
echo do something with $REPLY

Tämä tekee saman asian.

7) TMOUT

Tämän muuttujan asettaminen toimii suojana, jotta vältytään viipymästä tuotantopalvelimilla liian pitkään turvallisuussyistä tai vahingossa tapahtuvan vaarallisen virheen päätteessä.

Jos mitään ei syötetä tiettyyn sekuntimäärään, komentotulkki poistuu.

Eli tämä on vaihtoehto sleep 1 && exit:

$ TMOUT=1

Lähde: will.com

Lisää kommentti