Fortsetter serien med notater om
1) PROMPT_COMMAND
Du vet kanskje allerede hvordan du manipulerer ledeteksten for å vise diverse nyttig informasjon, men ikke alle vet at du kan kjøre en shell-kommando hver gang ledeteksten vises.
Faktisk bruker mange komplekse ledetekstmanipulatorer denne variabelen til å utføre kommandoer for å samle informasjon som vises i ledeteksten.
Prøv å kjøre dette i et nytt skall og se hva som skjer med økten:
$ PROMPT_COMMAND='echo -n "writing the prompt at " && date'
2) HISTTIMEFORMAT
Hvis du løper history
i konsollen vil du motta en liste over kommandoer som tidligere er utført under kontoen din.
$ HISTTIMEFORMAT='I ran this at: %d/%m/%y %T '
Når denne variabelen er satt, registrerer nye oppføringer tiden sammen med kommandoen, så utdataene vil se slik ut:
1871 Jeg kjørte dette på: 01/05/19 13:38:07 cat /etc/resolv.conf 1872 Jeg kjørte dette på: 01/05/19 13:38:19 curl bbc.co.uk 1873 Jeg kjørte dette på : 01/05/19 13:38:41 sudo vi /etc/resolv.conf 1874 Jeg kjørte dette på: 01/05/19 13:39:18 curl -vvv bbc.co.uk 1876 Jeg kjørte dette på: 01 /05/19 13:39:25 sudo su -
Formatering samsvarer med tegn fra man date
.
3) CDPATH
For å spare tid på kommandolinjen kan du bruke denne variabelen til å endre kataloger like enkelt som du utsteder kommandoer.
som PATH
, variabel CDPATH
er en kolon-separert liste over stier. Når du kjører kommandoen cd
med en relativ bane (dvs. ingen innledende skråstrek), som standard ser skallet i din lokale mappe for samsvarende navn. CDPATH
vil søke i banene du ga etter katalogen du vil gå til.
Hvis du installerer CDPATH
på denne måten:
$ CDPATH=/:/lib
og skriv deretter inn:
$ cd /home
$ cd tmp
da vil du alltid havne i /tmp
uansett hvor du er.
Vær imidlertid forsiktig, for hvis du ikke spesifiserer den lokale i listen (.
)-mappen, vil du ikke kunne opprette noen annen mappe tmp
og gå til det som vanlig:
$ cd /home
$ mkdir tmp
$ cd tmp
$ pwd
/tmp
Oops!
Dette ligner på forvirringen jeg følte da jeg innså at den lokale mappen ikke var inkludert i den mer kjente variabelen PATH
... men du må gjøre det i PATH-variabelen din fordi du kan bli lurt til å kjøre en falsk kommando fra en nedlastet kode.
Min er satt av utgangspunktet:
CDPATH=.:/space:/etc:/var/lib:/usr/share:/opt
4) SHLVL
Har du noen gang lurt på å skrive exit
vil det ta deg ut av ditt nåværende bash-skall til et annet "foreldre"-skall, eller vil det bare lukke konsollvinduet helt?
Denne variabelen holder styr på hvor dypt nestet du er i bash-skallet. Hvis du oppretter en ny terminal, er den satt til 1:
$ echo $SHLVL
1
Deretter, hvis du starter en annen shell-prosess, øker tallet:
$ bash
$ echo $SHLVL
2
Dette kan være veldig nyttig i skript der du ikke er sikker på om du skal avslutte eller ikke, eller holde styr på hvor du er nestet.
5) LINENO
Variabelen er også nyttig for å analysere gjeldende tilstand og feilsøking LINENO
, som rapporterer antall kommandoer utført i økten så langt:
$ bash
$ echo $LINENO
1
$ echo $LINENO
2
Dette brukes oftest ved feilsøking av skript. Sette inn linjer som echo DEBUG:$LINENO
, kan du raskt finne ut hvor i skriptet du er (eller ikke).
6) REPLY
Hvis du, som meg, vanligvis skriver kode slik:
$ read input
echo do something with $input
Det kan komme som en overraskelse at du ikke trenger å bekymre deg for å lage variabelen i det hele tatt:
$ read
echo do something with $REPLY
Dette gjør det samme.
7) TMOUT
For å unngå å være for lenge på produksjonsservere av sikkerhetsgrunner eller ved et uhell kjøre noe farlig i feil terminal, fungerer denne variabelen som en beskyttelse.
Hvis ingenting skrives inn i løpet av et bestemt antall sekunder, går skallet ut.
Det vil si at dette er et alternativ sleep 1 && exit
:
$ TMOUT=1
Kilde: www.habr.com