Șapte variabile neașteptate Bash

Continuând seria de note despre funcții mai puțin cunoscute bash, vă voi arăta șapte variabile despre care s-ar putea să nu știți. PROMPT_COMMAND

1) Probabil că deja știți cum să manipulați promptul pentru a arăta diferite informații utile, dar nu toată lumea știe că de fiecare dată când se afișează promptul, poate fi rulată o comandă de shell.

De fapt, mulți manipulatori complecși ai promptului folosesc această variabilă pentru a executa comenzi care colectează informații ce vor fi afișate în prompt.

Încercați să rulați asta într-un shell nou și veți vedea ce se întâmplă cu sesiunea:

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

HISTTIMEFORMAT

2) în consolă, veți obține o listă cu comenzile efectuate anterior sub contul dvs.

Dacă se rulează history $ HISTTIMEFORMAT='I ran this at: %d/%m/%y %T '

Odată ce această variabilă a fost setată, noile înregistrări vor salva timpul împreună cu comanda, deci ieșirea va arăta astfel:

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 -

Formatoarea corespunde caracterelor din

man date CDPATH.

3) Pentru a economisi timp în linia de comandă, puteți folosi această variabilă pentru a schimba folderele la fel de ușor cum apelați comenzile.

, variabila

Cum și PATHreprezintă o listă de căi separate prin două puncte. Când rulați o comandă Pentru a economisi timp în linia de comandă, puteți folosi această variabilă pentru a schimba folderele la fel de ușor cum apelați comenzile. cu o cale relativă (adică fără slash la început), implicit shell-ul caută în folderul local pentru numele corespunzătoare. cd va căuta în căile pe care le-ați dat pentru directorul în care doriți să mergeți. Pentru a economisi timp în linia de comandă, puteți folosi această variabilă pentru a schimba folderele la fel de ușor cum apelați comenzile. Dacă setați

în acest mod: Pentru a economisi timp în linia de comandă, puteți folosi această variabilă pentru a schimba folderele la fel de ușor cum apelați comenzile. $ CDPATH=/:/lib

și apoi introduceți:

$ cd /home $ cd tmp

atunci veți ajunge întotdeauna în

indiferent de locul în care vă aflați. /tmp Totuși, aveți grijă, căci dacă nu includeți folderul local (

) în listă, nu veți putea crea niciun alt folder.tmp și să mergeți la el, ca de obicei: $ cd /home $ mkdir tmp $ cd tmp $ pwd /tmp

Ups!

Aceasta pare a fi o confuzie pe care am simțit-o când am realizat că folderul local nu a fost inclus în variabila mai familiară

… dar trebuie să faceți asta în variabila PATH, pentru că ați putea fi păcălit, rulând o comandă falsă dintr-un cod descărcat. PATHPunctul meu de plecare este:

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

SHLVL

4) V-ați întrebat vreodată, introducând

Вы когда-нибудь задумывались, ввод exit vă va scoate din shell-ul bash curent într-un alt shell „părinte” sau pur și simplu va închide complet fereastra consolei?

Această variabilă urmărește cât de adânc ați fost în shell-ul bash. Dacă creați un nou terminal, aceasta este setată pe 1:

$ echo $SHLVL
1

Apoi, dacă lansați un alt proces al shell-ului, numărul crește:

$ bash
$ echo $SHLVL
2

Acest lucru poate fi foarte util în scripturi, unde nu sunteți sigur dacă trebuie să ieșiți sau nu, sau pentru a urmări unde vă aflați în ierarhie.

5) LINENO

De asemenea, pentru analiza stării curente și depanare, variabila LINENO, care raportează numărul de comenzi executate în sesiune până în prezent:

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

Acest lucru este folosit cel mai frecvent la depanarea scripturilor. Inserând astfel de linii precum echo DEBUG:$LINENO, puteți determina rapid unde vă aflați în script (sau nu).

6) REPLY

Dacă, ca mine, tindeți să scrieți un astfel de cod:

$ read input
echo faceți ceva cu $input

atunci poate fi surprinzător că nu trebuie să vă faceți griji deloc în legătură cu crearea unei variabile:

$ read
echo faceți ceva cu $REPLY

Acest lucru face același lucru.

7) TMOUT

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

Dacă nu se introduce nimic timp de un anumit număr de secunde, se va ieși din shell.

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

$ TMOUT=1

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster