Shtatë ndryshore të papritura Bash

Vazhdimi i serisë së shënimeve rreth më pak i njohur funksione bash, unë do t'ju tregoj shtatë variabla që mund të mos i dini.

1) PROMPT_COMMAND

Ju mund të dini tashmë se si të 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ë kompleksë të prompteve përdorin këtë variabël për të ekzekutuar komanda për të mbledhur informacionin që shfaqet në prompt.

Provoni ta ekzekutoni këtë në një guaskë të re dhe shikoni se çfarë ndodh me seancën:

$ 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 regjistrojnë kohën së bashku me komandën, kështu që dalja do të duket kështu:

1871 E kam drejtuar këtë në: 01/05/19 13:38:07 cat /etc/resolv.conf 1872 E kam drejtuar këtë në: 01/05/19 13:38:19 curl bbc.co.uk 1873 e kam drejtuar këtë në : 01/05/19 13:38:41 sudo vi /etc/resolv.conf 1874 E kam drejtuar këtë në: 01/05/19 13:39:18 curl -vvv bbc.co.uk 1876 e kam drejtuar 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ë vijën e komandës, mund ta përdorni këtë variabël për të ndryshuar drejtoritë aq lehtë sa lëshoni komanda.

si PATH, e ndryshueshme CDPATH është një listë e shtigjeve e ndarë me dy pika. Kur ekzekutoni komandën cd me një shteg relativ (d.m.th. pa vijë të pjerrët kryesore), si parazgjedhje shell duket në dosjen tuaj lokale për emrat që përputhen. CDPATH do të kërkojë në shtigjet që keni dhënë për drejtorinë në të cilën dëshironi të shkoni.

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

$ CDPATH=/:/lib

dhe pastaj fut:

$ cd /home
$ cd tmp

atëherë do të përfundoni gjithmonë brenda /tmp pa marrë parasysh se ku jeni.

Megjithatë, kini kujdes, sepse nëse nuk e specifikoni atë lokal në listë (.) dosje, atëherë nuk do të mund të krijoni asnjë 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 ju duhet ta bëni atë në variablin tuaj PATH sepse mund të mashtroheni për të ekzekutuar një komandë të rreme nga ndonjë kod i shkarkuar.

E imja është vendosur nga pika e fillimit:

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

4) SHLVL

A keni menduar ndonjëherë, duke shtypur exit do t'ju çojë nga guaska juaj aktuale e bash-it në një predhë tjetër "prind", apo thjesht do të mbyllë plotësisht dritaren e konsolës?

Kjo variabël mban gjurmët se sa thellë jeni folezuar në guaskën bash. Nëse krijoni një terminal të ri, ai vendoset 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ë skriptet ku nuk jeni të sigurt nëse duhet të dilni apo jo, ose të mbani gjurmët se ku jeni futur.

5) LINENO

Variabla është gjithashtu e dobishme për analizimin e gjendjes aktuale dhe korrigjimin e gabimeve LINENO, i cili raporton numrin e komandave të ekzekutuara në seancë deri tani:

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

Kjo përdoret më shpesh gjatë korrigjimit të skripteve. Futja e rreshtave si echo DEBUG:$LINENO, mund të përcaktoni shpejt se ku jeni në skenar (ose jo).

6) REPLY

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

$ read input
echo do something with $input

Mund të jetë befasi që nuk keni nevojë të shqetësoheni fare për krijimin e ndryshores:

$ read
echo do something with $REPLY

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

7) TMOUT

Për të shmangur qëndrimin për një kohë të gjatë në serverët e prodhimit për arsye sigurie ose për të ekzekutuar aksidentalisht diçka të rrezikshme në terminalin e gabuar, vendosja e kësaj ndryshore vepron si një mbrojtje.

Nëse asgjë nuk futet për një numër të caktuar sekondash, guaska del.

Kjo është, kjo është një alternativë sleep 1 && exit:

$ TMOUT=1

Burimi: www.habr.com

Shto një koment