Șapte variabile Bash neașteptate

Continuând seria de însemnări despre mai putin cunoscut funcții bash, îți voi arăta șapte variabile despre care s-ar putea să nu știi.

1) PROMPT_COMMAND

Este posibil să știți deja cum să manipulați promptul pentru a afișa diverse informații utile, dar nu toată lumea știe că puteți rula o comandă shell de fiecare dată când este afișat promptul.

De fapt, mulți manipulatori complexi de prompt folosesc această variabilă pentru a executa comenzi pentru a colecta informații care sunt afișate în prompt.

Încercați să rulați acest lucru într-un nou shell și vedeți ce se întâmplă cu sesiunea:

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

2) HISTTIMEFORMAT

Dacă fugi history în consolă, vei primi o listă de comenzi executate anterior în contul tău.

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

Odată ce această variabilă este setată, noile intrări înregistrează ora împreună cu comanda, astfel încât rezultatul va arăta astfel:

1871 Am rulat asta la: 01/05/19 13:38:07 cat /etc/resolv.conf 1872 Am rulat asta la: 01/05/19 13:38:19 curl bbc.co.uk 1873 Am rulat asta la : 01/05/19 13:38:41 sudo vi /etc/resolv.conf 1874 Am rulat asta la: 01/05/19 13:39:18 curl -vvv bbc.co.uk 1876 Am rulat asta la: 01 /05/19 13:39:25 sudo su -

Formatarea corespunde caracterelor din man date.

3) CDPATH

Pentru a economisi timp pe linia de comandă, puteți folosi această variabilă pentru a schimba directoare la fel de ușor pe cât emiteți comenzi.

ca PATH, variabil CDPATH este o listă de căi separate prin două puncte. Când executați comanda cd cu o cale relativă (adică fără bară oblică), în mod implicit, shell-ul caută în folderul local nume care se potrivesc. CDPATH va căuta în căile pe care le-ați dat pentru directorul în care doriți să mergeți.

Daca instalezi CDPATH în acest fel:

$ CDPATH=/:/lib

si apoi introduceti:

$ cd /home
$ cd tmp

atunci vei ajunge mereu în /tmp nu contează unde ești.

Totuși, atenție, pentru că dacă nu îl specificați pe cel local în listă (.), atunci nu veți putea crea niciun alt folder tmp și mergi la el ca de obicei:

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

Hopa!

Acest lucru este similar cu confuzia pe care am simțit-o când mi-am dat seama că folderul local nu era inclus în variabila mai familiară PATH... dar trebuie să o faceți în variabila PATH pentru că ați putea fi păcălit să rulați o comandă falsă dintr-un cod descărcat.

Al meu este stabilit de punctul de plecare:

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

4) SHLVL

Te-ai întrebat vreodată, tastând exit te va scoate din shell-ul tău bash actual la un alt shell „părinte” sau va închide complet fereastra consolei?

Această variabilă ține evidența cât de adânc vă aflați în shell-ul bash. Dacă creați un terminal nou, acesta este setat la 1:

$ echo $SHLVL
1

Apoi, dacă începeți un alt proces shell, numărul crește:

$ bash
$ echo $SHLVL
2

Acest lucru poate fi foarte util în scripturile în care nu ești sigur dacă să ieși sau nu, sau să ții evidența unde ești imbricat.

5) LINENO

Variabila este, de asemenea, utilă pentru analiza stării curente și depanare LINENO, care raportează numărul de comenzi executate în sesiune până acum:

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

Acesta este cel mai des folosit la depanarea scripturilor. Inserarea liniilor ca echo DEBUG:$LINENO, puteți determina rapid unde vă aflați (sau nu) în script.

6) REPLY

Dacă, ca mine, de obicei scrieți cod astfel:

$ read input
echo do something with $input

Poate fi o surpriză că nu trebuie să vă faceți griji cu privire la crearea variabilei:

$ read
echo do something with $REPLY

Aceasta face același lucru.

7) TMOUT

Pentru a evita rămânerea prea mult timp pe serverele de producție din motive de securitate sau rularea accidentală a ceva periculos în terminalul greșit, setarea acestei variabile acționează ca o protecție.

Dacă nu este introdus nimic pentru un număr stabilit de secunde, shell-ul iese.

Adică, aceasta este o alternativă sleep 1 && exit:

$ TMOUT=1

Sursa: www.habr.com

Adauga un comentariu