Sju ovÀntade Bash-variabler

FortsÀtta serien av anteckningar om mindre kÀnda funktioner i bash, kommer jag att visa dig sju variabler som du kanske inte kÀnner till.

1) PROMPT_COMMAND

Kanske Àr du redan medveten om hur man manipulerar prompten för att visa olika nyttig information, men inte alla vet att varje gÄng prompten visas kan man köra ett skalkommando.

Faktum Àr att mÄnga avancerade promptmanipulatorer anvÀnder denna variabel för att köra kommandon för att samla information som visas i prompten.

Försök att köra detta i en ny shell och se vad som hÀnder med sessionen:

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

2) HISTTIMEFORMAT

Om du kör history i konsolen fÄr du en lista över kommandon som tidigare körts under ditt konto.

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

NÀr denna variabel har stÀllts in, registreras nya poster med tid tillsammans med kommandot, sÄ utfallet kommer att se ut sÄ hÀr:

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 -

Formateringen överensstÀmmer med tecknen frÄn man date.

3) CDPATH

För att spara tid i kommandoraden kan du anvÀnda denna variabel för att Àndra kataloger lika enkelt som du kör kommandon.

Precis som PATH, variabeln CDPATH Àr en lista med sökvÀgar som Àr Ätskilda med kolon. NÀr du kör ett kommando cd med en relativ sökvÀg (d.v.s. utan snedstreck i början), letar skalet som standard i din aktuella mapp efter motsvarande namn. CDPATH kommer att söka i de vÀgar som du angav för katalogen du vill gÄ till.

Om du stÀller in CDPATH sÄ hÀr:

$ CDPATH=/:/lib

och sedan skriver:

$ cd /home
$ cd tmp

Äker du alltid till /tmp oavsett var du befinner dig.

Men var försiktig, för om du inte inkluderar den lokala (.) mappen i listan, kan du inte skapa nÄgon annan mapp tmp och gÄ till den som vanligt:

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

Oops!

Detta verkar vara förvirring, vilket jag kĂ€nde nĂ€r jag insĂ„g att den lokala mappen inte var inkluderad i den mer bekanta variabeln PATH
 men du mĂ„ste göra detta i PATH-variabeln, för du kan bli lurad genom att köra ett falskt kommando frĂ„n nĂ„gon nedladdad kod.

Min sÀtts som startpunkt:

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

4) SHLVL

Har du nÄgonsin undrat, skriver exit kommer att ta dig ur den aktuella bash-skalen till en annan "förÀlderskal" eller helt enkelt stÀnga konsolfönstret?

Denna variabel spÄrar hur djupt du Àr inbÀddad i bash-skalet. Om du öppnar en ny terminal sÀtts den till 1:

$ echo $SHLVL
1

Sedan, om du kör en annan skalprocess, ökar siffran:

$ bash
$ echo $SHLVL
2

Detta kan vara mycket anvÀndbart i skript dÀr du inte Àr sÀker pÄ om du ska stÀnga eller inte, eller för att spÄra var du befinner dig i inbÀddningen.

5) LINENO

Även för att analysera det aktuella tillstĂ„ndet och för felsökning Ă€r variabeln LINENO, som rapporterar antalet kommandon som körts i sessionen fram till nu:

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

Detta anvÀnds oftast vid felsökning av skript. Genom att infoga sÄdana rader som echo DEBUG:$LINENO, kan du snabbt avgöra var du befinner dig i skriptet (eller inte).

6) REPLY

Om du, precis som jag, oftast skriver sÄdan kod:

$ read input
echo gör nÄgot med $input

kan det bli en överraskning att du inte behöver oroa dig för att skapa en variabel överhuvudtaget:

$ read
echo gör nÄgot med $REPLY

Det gör samma sak.

7) TMOUT

För att inte stanna för lÀnge pÄ produktionsservrar av sÀkerhetsskÀl eller av misstag köra nÄgot farligt i fel terminal, sÄ fungerar instÀllning av denna variabel som ett skydd.

Om inget matas in under det angivna antalet sekunder, sker en utloggning frÄn skalet.

Detta Àr, alltsÄ, ett alternativ till sleep 1 && exit:

$ TMOUT=1

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster