FortsÀtta serien av anteckningar om 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=/:/liboch 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
/tmpOops!
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:/opt4) 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
1Sedan, om du kör en annan skalprocess, ökar siffran:
$ bash
$ echo $SHLVL
2Detta 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 $inputkan 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 $REPLYDet 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=1KĂ€lla: habr.com
