Sedam neočekivanih Bash varijabli

Nastavljajući seriju bilješki o manje poznat funkcije bash, pokazaću vam sedam varijabli za koje možda niste znali.

1) PROMPT_COMMAND

Možda već znate kako da manipulišete promptom da biste prikazali razne korisne informacije, ali ne znaju svi da možete pokrenuti komandu ljuske svaki put kada se prompt prikaže.

U stvari, mnogi složeni manipulatori sa promptom koriste ovu varijablu za izvršavanje naredbi za prikupljanje informacija koje se prikazuju u promptu.

Pokušajte ovo pokrenuti u novoj ljusci i pogledajte šta se dešava sa sesijom:

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

2) HISTTIMEFORMAT

Ako trči history u konzoli, dobićete listu komandi koje su prethodno izvršene pod vašim nalogom.

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

Kada je ova varijabla postavljena, novi unosi bilježe vrijeme zajedno sa naredbom, tako da će izlaz izgledati ovako:

1871 Pokrenuo sam ovo na: 01/05/19 13:38:07 cat /etc/resolv.conf 1872 Pokrenuo sam ovo na: 01/05/19 13:38:19 curl bbc.co.uk 1873 Pokrenuo sam ovo na : 01/05/19 13:38:41 sudo vi /etc/resolv.conf 1874 Pokrenuo sam ovo na: 01/05/19 13:39:18 curl -vvv bbc.co.uk 1876 Pokrenuo sam ovo na: 01 /05/19 13:39:25 sudo su -

Formatiranje odgovara znakovima iz man date.

3) CDPATH

Da biste uštedjeli vrijeme na komandnoj liniji, možete koristiti ovu varijablu za promjenu direktorija jednako lako kao što izdajete naredbe.

Kao i PATH, varijabla CDPATH je lista putanja odvojena dvotočkom. Kada pokrenete naredbu cd sa relativnom putanjom (tj. bez vodeće kose crte), prema zadanim postavkama ljuska traži u vašoj lokalnoj mapi imena koja se podudaraju. CDPATH će tražiti u putanjama koje ste dali za direktorij u koji želite ići.

Ako instalirate CDPATH na ovaj način:

$ CDPATH=/:/lib

a zatim unesite:

$ cd /home
$ cd tmp

onda ćeš uvek završiti /tmp bez obzira gde se nalazite.

Međutim, budite oprezni, jer ako ne navedete lokalni na listi (.) folder, tada nećete moći da kreirate nijednu drugu fasciklu tmp i idite na to kao i obično:

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

Ups!

Ovo je slično konfuziji koju sam osjetio kada sam shvatio da lokalna mapa nije uključena u poznatiju varijablu PATH... ali to morate učiniti u svojoj PATH varijabli jer biste mogli biti prevareni da pokrenete lažnu naredbu iz nekog preuzetog koda.

Moj je postavljen prema početnoj tački:

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

4) SHLVL

Da li ste se ikada zapitali, kucanje exit hoće li vas odvesti iz vaše trenutne bash shell-a u drugu "roditeljsku" ljusku, ili će samo potpuno zatvoriti prozor konzole?

Ova varijabla prati koliko ste duboko ugniježđeni u bash shell-u. Ako kreirate novi terminal, on je postavljen na 1:

$ echo $SHLVL
1

Zatim, ako pokrenete drugi proces ljuske, broj se povećava:

$ bash
$ echo $SHLVL
2

Ovo može biti vrlo korisno u skriptama gdje niste sigurni da li da izađete ili ne, ili da pratite gdje ste ugniježđeni.

5) LINENO

Varijabla je također korisna za analizu trenutnog stanja i otklanjanje grešaka LINENO, koji prijavljuje broj naredbi izvršenih u sesiji do sada:

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

Ovo se najčešće koristi prilikom otklanjanja grešaka u skriptama. Umetanje linija poput echo DEBUG:$LINENO, možete brzo odrediti gdje se u skripti nalazite (ili ne).

6) REPLY

Ako, poput mene, obično pišete kod ovako:

$ read input
echo do something with $input

Može biti iznenađenje da uopće ne morate brinuti o kreiranju varijable:

$ read
echo do something with $REPLY

Ovo radi istu stvar.

7) TMOUT

Da biste izbjegli predugo zadržavanje na proizvodnim serverima iz sigurnosnih razloga ili slučajno pokretanje nečeg opasnog na pogrešnom terminalu, postavljanje ove varijable djeluje kao zaštita.

Ako se ništa ne unese za određeni broj sekundi, shell izlazi.

Odnosno, ovo je alternativa sleep 1 && exit:

$ TMOUT=1

izvor: www.habr.com

Dodajte komentar