Duke duke në serinë e shënimeve për bash, do t'ju tregoj mbi shtatë variabla që ndoshta nuk i dini.
1) PROMPT_COMMAND
Ndoshta tashmë jeni në dijeni se si mund të manipuloni mesazhin e prompt-it për të shfaqur informacione të ndryshme të dobishme, por jo të gjithë dinë se çdo herë kur shfaqet prompt-i mund të ekzekutohet një komandë shell.
Në të vërtetë, shumë manipulues të komplikuar të prompt-it përdorin këtë variabël për të ekzekutuar komanda për të mbledhur informacionin që shfaqet në prompt.
Provo ta ekzekutosh këtë në një shell të ri dhe do të shohësh se çfarë ndodh me seancën:
$ PROMPT_COMMAND='echo -n "shkruaj prompt-in në " && date'2) HISTTIMEFORMAT
Nëse ekzekutohet history kur ti do të marrësh një listë komandash që janë ekzekutuar më parë nën llogarinë tuaj.
$ HISTTIMEFORMAT='E ekzekutova këtë në: %d/%m/%y %T 'Pasi të jetë vendosur ky variabël, regjistrimet e reja shënojnë kohën së bashku me komandën, prandaj 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 simbolet nga man date.
3) CDPATH
Për të kursyer kohë në linjën e komandës, mund të përdorni këtë variabël për të ndryshuar direktorinë ashtu siç thirrni komandat.
Si dhe për, variabla CDPATH përfaqëson një listë rrugësh të ndara me dy pika. Kur ekzekutoni një komandë cd me një rrugë relative (dmth, pa shenjën / në fillim), për default shell kërkon në dosjen tuaj lokale për emrat përkatës. CDPATH do të kërkojë në rrugët që keni dhënë për direktoriumin që dëshironi të shkoni.
Nëse e vendosni CDPATH ashtu si:
$ CDPATH=/:/libdhe pastaj jepni:
$ cd /home
$ cd tmp në këtë mënyrë gjithmonë do të shkoni në /tmp pavarësisht se ku ndodheni.
Megjithatë, kini kujdes, sepse nëse nuk e përfshini dosjen lokale (.) në listë, nuk do të mund të krijoni një dosje tjetër tmp dhe të shkoni te ajo, si zakonisht:
$ cd /home
$ mkdir tmp
$ cd tmp
$ pwd
/tmpUps!
Kjo duket si një konfuzion që unë ndjeva kur kuptova që dosja lokale nuk ishte përfshirë në variablën më të njohur për⊠por duhet ta bëni këtë në variablën PATH, sepse mund të mashtroheni duke ekzekutuar një komandë të rreme nga ndonjë kod i shkarkuar.
E mia vendoset si pikë fillese:
CDPATH=.:/space:/etc:/var/lib:/usr/share:/opt4) SHLVL
A keni menduar ndonjëherë, duke shkruar exit do t'shfaq nga shell-i aktual bash në një shell tjetër "prind" ose thjesht do ta mbyllë plotësisht dritaren e konsolës?
Kjo variablë ndjek sa thellë jeni të futur në shell-in bash. Nëse krijoni një terminal të ri, ajo vendoset në 1:
$ echo $SHLVL
1Pastaj, nëse nisni një proces tjetër shell, numri rritet:
$ bash
$ echo $SHLVL
2Kjo mund të jetë shumë e dobishme në skenaret ku nuk jeni të sigurt nëse duhet të dilni ose jo, ose për të ndjekur se ku ndodheni në thellësi.
5) LINENO
Gjithashtu, për analizimin e gjendjes aktuale dhe përdebugimin, e dobishme është variabla LINENO, e cila tregon numrin e komandave të ekzekutuara deri në këtë moment në sesion:
$ bash
$ echo $LINENO
1
$ echo $LINENO
2 Kjo përdoret më së shpeshti gjatë përdebugimit të skenareve. Duke vendosur rreshta të tillë si echo DEBUG:$LINENO, ju mund të përcaktoni shpejt se ku jeni në skenar (apo jo).
6) REPLY
Nëse, si unë, zakonisht shkruani një kod të tillë:
$ read input
echo bëni diçka me $inputatëherë mund të jetë një surprizë se nuk keni nevojë të shqetësoheni fare për të krijuar një variabël:
$ read
echo bëni diçka me $REPLYKjo bën të njëjtën gjë.
7) TMOUT
Për të mos qendruar shumë gjatë në serverët prodhues për arsye sigurie ose për të mos nisur ndonjë gjë të rrezikshme në terminalin e gabuar, vendosja e kësaj variabli vepron si një mbrojtje.
Nëse nuk bëhet asnjë hyrje brenda numrit të caktuar të sekondave, ndodh dalja nga shell-i.
Pra, kjo është një alternativë sleep 1 && exit:
$ TMOUT=1Burimi: habr.com
