Syv uventede Bash-variabler

Fortsætter rækken af ​​noter vedr mindre kendt funktioner bash, jeg vil vise dig syv variabler, du måske ikke kender til.

1) PROMPT_COMMAND

Du ved måske allerede, hvordan du manipulerer prompten til at vise forskellige nyttige oplysninger, men ikke alle ved, at du kan køre en shell-kommando, hver gang prompten vises.

Faktisk bruger mange komplekse promptmanipulatorer denne variabel til at udføre kommandoer for at indsamle information, der vises i prompten.

Prøv at køre dette i en ny shell og se, hvad der sker med sessionen:

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

2) HISTTIMEFORMAT

Hvis du løber history i konsollen vil du modtage en liste over kommandoer, der tidligere er udført under din konto.

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

Når denne variabel er indstillet, registrerer nye poster tiden sammen med kommandoen, så outputtet vil se sådan ud:

1871 Jeg kørte dette på: 01/05/19 13:38:07 cat /etc/resolv.conf 1872 Jeg kørte dette på: 01/05/19 13:38:19 curl bbc.co.uk 1873 Jeg kørte dette på : 01/05/19 13:38:41 sudo vi /etc/resolv.conf 1874 Jeg kørte dette på: 01/05/19 13:39:18 curl -vvv bbc.co.uk 1876 Jeg kørte dette på: 01 /05/19 13:39:25 sudo su -

Formatering matcher tegn fra man date.

3) CDPATH

For at spare tid på kommandolinjen kan du bruge denne variabel til at ændre mapper lige så nemt, som du udsteder kommandoer.

som PATH, variabel CDPATH er en kolon-separeret liste over stier. Når du kører kommandoen cd med en relativ sti (dvs. ingen indledende skråstreg), som standard søger skallen i din lokale mappe efter matchende navne. CDPATH vil søge i de stier, du angav efter den mappe, du vil gå til.

Hvis du installerer CDPATH på denne måde:

$ CDPATH=/:/lib

og indtast derefter:

$ cd /home
$ cd tmp

så ender du altid i /tmp uanset hvor du er.

Vær dog forsigtig, for hvis du ikke angiver den lokale på listen (.) mappe, så vil du ikke være i stand til at oprette nogen anden mappe tmp og gå til det som normalt:

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

Ups!

Dette svarer til den forvirring, jeg følte, da jeg indså, at den lokale mappe ikke var inkluderet i den mere velkendte variabel PATH... men du skal gøre det i din PATH-variabel, fordi du kan blive narret til at køre en falsk kommando fra en downloadet kode.

Min er sat af udgangspunktet:

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

4) SHLVL

Har du nogensinde undret dig over at skrive exit vil det tage dig ud af din nuværende bash shell til en anden "forælder" shell, eller vil det bare lukke konsolvinduet helt?

Denne variabel holder styr på, hvor dybt indlejret du er i bash-skallen. Hvis du opretter en ny terminal, er den sat til 1:

$ echo $SHLVL
1

Så, hvis du starter en anden shell-proces, stiger antallet:

$ bash
$ echo $SHLVL
2

Dette kan være meget nyttigt i scripts, hvor du ikke er sikker på, om du skal afslutte eller ej, eller holde styr på, hvor du er indlejret.

5) LINENO

Variablen er også nyttig til at analysere den aktuelle tilstand og fejlfinding LINENO, som rapporterer antallet af kommandoer udført i sessionen indtil videre:

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

Dette bruges oftest ved fejlretning af scripts. Indsættelse af linjer som echo DEBUG:$LINENO, kan du hurtigt bestemme, hvor i scriptet du er (eller ej).

6) REPLY

Hvis du som mig plejer at skrive kode sådan her:

$ read input
echo do something with $input

Det kan komme som en overraskelse, at du slet ikke behøver at bekymre dig om at oprette variablen:

$ read
echo do something with $REPLY

Dette gør det samme.

7) TMOUT

For at undgå at blive på produktionsservere for længe af sikkerhedsmæssige årsager eller ved et uheld at køre noget farligt i den forkerte terminal, fungerer indstillingen af ​​denne variabel som en beskyttelse.

Hvis der ikke indtastes noget i et bestemt antal sekunder, afsluttes skallen.

Det vil sige, at dette er et alternativ sleep 1 && exit:

$ TMOUT=1

Kilde: www.habr.com

Tilføj en kommentar