Continuând seria de note despre 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'
HISTTIMEFORMAT2) î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
SHLVL4) 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
1Apoi, dacă lansați un alt proces al shell-ului, numărul crește:
$ bash
$ echo $SHLVL
2Acest 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 $inputatunci 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 $REPLYAcest 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=1Sursa: habr.com
