Shtatë ndryshore të papritura Bash

Duke vazhduar serinë e shënimeve rreth më pak të njohur funksionet bash, do t'ju tregoj shtatë variabla që mund të mos i dini.

1) PROMPT_COMMAND

Mund ta dini tashmë se si ta manipuloni kërkesën për të shfaqur informacione të ndryshme të dobishme, por jo të gjithë e dinë se mund të ekzekutoni një komandë shell sa herë që shfaqet kërkesa.

Në fakt, shumë manipulatorë të sofistikuar të prompt-eve e përdorin këtë ndryshore për të ekzekutuar komanda për të mbledhur informacion që shfaqet në prompt.

Provo ta ekzekutosh këtë në një shell të ri dhe shiko çfarë ndodh me sesionin:

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

2) HISTTIMEFORMAT

Nëse vraponi history Në tastierë, do të merrni një listë të komandave të ekzekutuara më parë në llogarinë tuaj.

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

Pasi të vendoset kjo ndryshore, hyrjet e reja do të regjistrojnë kohën së bashku me komandën, kështu që rezultati do të duket kështu:

1871 E ekzekutova këtë në: 01/05/19 13:38:07 cat /etc/resolv.conf 1872 E ekzekutova këtë në: 01/05/19 13:38:19 curl bbc.co.uk 1873 E ekzekutova këtë në: 01/05/19 13:38:41 sudo vi /etc/resolv.conf 1874 E ekzekutova këtë në: 01/05/19 13:39:18 curl -vvv bbc.co.uk 1876 E ekzekutova këtë në: 01/05/19 13:39:25 sudo su -

Formatimi përputhet me karakteret nga man date.

3) CDPATH

Për të kursyer kohë në rreshtin e komandave, mund ta përdorni këtë variabël për të ndryshuar drejtoritë po aq lehtë sa jepni komanda.

si PATH, ndryshore CDPATH është një listë shtigjeve të ndara me dy pika. Kur ekzekutoni komandën cd me një shteg relativ (p.sh. pa një vijë të pjerrët në krye), shell-i si parazgjedhje kërkon në dosjen tuaj lokale emra që përputhen. CDPATH do të kërkojë shtigjet që keni dhënë për direktorinë në të cilën dëshironi të lundroni.

Nëse instaloni CDPATH në këtë mënyrë:

$ CDPATH=/:/lib

dhe pastaj futni:

$ cd /home
$ cd tmp

atëherë do të futesh gjithmonë brenda /tmp pavarësisht se ku ndodhesh.

Megjithatë, kini kujdes, sepse nëse nuk e specifikoni atë lokal në listë (.), atëherë nuk do të jeni në gjendje të krijoni ndonjë dosje tjetër tmp dhe shkoni tek ajo si zakonisht:

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

Oops!

Kjo është e ngjashme me konfuzionin që ndjeva kur kuptova se dosja lokale nuk ishte përfshirë në variablin më të njohur. PATH...por duhet ta bësh këtë në variablin PATH sepse mund të mashtrohesh duke ekzekutuar një komandë të rreme nga ndonjë kod i shkarkuar.

E imja përcaktohet nga pika e fillimit:

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

4) SHLVL

A keni menduar ndonjëherë, jepni kontributin tuaj? exit A do t'ju nxjerrë nga shell-i aktual bash dhe do t'ju kalojë në një shell tjetër "prind", apo thjesht do ta mbyllë plotësisht dritaren e konsolës?

Kjo variabël gjurmon se sa thellë jeni të ndërthurur në shell-in bash. Nëse krijoni një terminal të ri, ai caktohet në 1:

$ echo $SHLVL
1

Pastaj, nëse filloni një proces tjetër shell, numri rritet:

$ bash
$ echo $SHLVL
2

Kjo mund të jetë shumë e dobishme në skripte ku nuk jeni të sigurt nëse duhet të dilni apo jo, ose për të mbajtur gjurmët e vendit ku ndodheni në fole.

5) LINENO

Gjithashtu e dobishme për analizimin e gjendjes aktuale dhe debugging është variabla LINENO, i cili raporton numrin e komandave të ekzekutuara në seancë deri më tani:

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

Kjo përdoret më shpesh kur debugohen skriptet. Duke futur rreshta si echo DEBUG:$LINENO, mund të përcaktoni shpejt se ku ndodheni (ose jo) në skript.

6) REPLY

Nëse, si unë, zakonisht shkruani kod si ky:

$ read input
echo do something with $input

Mund të jetë surprizë që nuk keni nevojë të shqetësoheni fare për krijimin e një variabli:

$ read
echo do something with $REPLY

Kjo bën të njëjtën gjë.

7) TMOUT

Për të shmangur qëndrimin shumë të gjatë në serverat e prodhimit për arsye sigurie ose ekzekutimin aksidental të diçkaje të rrezikshme në terminalin e gabuar, caktimi i kësaj variabli vepron si një masë mbrojtëse.

Nëse nuk futet asgjë për numrin e caktuar të sekondave, shell-i mbyllet.

Domethënë, është një alternativë. sleep 1 && exit:

$ TMOUT=1

Burimi: www.habr.com

Bleni një host të besueshëm për faqet me mbrojtje DDoS, serverë VPS VDS 🔥 Bleni hosting të besueshëm të faqeve të internetit me mbrojtje DDoS, servera VPS VDS | ProHoster