Duke vazhdoj të shkruaj për PROMPT_COMMAND
1) Mund të jeni në dijeni si të manipuloni ftesën e prompt-it për të treguar informacion të dobishëm, por jo të gjithë e dinë se çdo herë që shfaqet ftesa, mund të ekzekutohet një komandë e shell-it.
Në fakt, shumë manipulues të komplikuar të prompt-it përdorin këtë variablë për të ekzekutuar komanda për të mbledhur informacionin që shfaqet në ftesë.
Provoni ta ekzekutoni këtë në një shell të ri, dhe do të shihni se çfarë ndodh me seancën:
$ PROMPT_COMMAND='echo -n "writing the prompt at " && date'
HISTTIMEFORMAT2) në konsolë, do të merrni një listë komandash që janë ekzekutuar më parë me llogarinë tuaj.
Nëse ekzekutoni history $ HISTTIMEFORMAT='I ran this at: %d/%m/%y %T '
Sapo të vendoset ky variablë, shënimet e reja regjistrojnë kohën së bashku me komandën, kështu që dalja do të duket si: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 -
Formati përputhet me simbolet nga
man date CDPATH.
3) Për të kursyer kohë në linjën e komandës, mund të përdorni këtë variablë për të ndryshuar direktoret po aq lehtësisht sa shumëni komandat.
, variabla
Ashtu si PATHpërfaqëson një listë rrugësh të ndara me dy pikë. Kur ekzekutoni një komandë Për të kursyer kohë në linjën e komandës, mund të përdorni këtë variablë për të ndryshuar direktoret po aq lehtësisht sa shumëni komandat. me një rrugë relative (pra, pa një slash në fillim), në mënyrë të parazgjedhur shell-i kërkon emrat përkatës në dosjen tuaj lokale. cd do të kërkojë në rrugët që keni dhënë për katalogun ku dëshironi të shkoni. Për të kursyer kohë në linjën e komandës, mund të përdorni këtë variablë për të ndryshuar direktoret po aq lehtësisht sa shumëni komandat. Nëse vendosni
në këtë mënyrë: Për të kursyer kohë në linjën e komandës, mund të përdorni këtë variablë për të ndryshuar direktoret po aq lehtësisht sa shumëni komandat. $ CDPATH=/:/lib
dhe pastaj të shkruani:$ cd /home $ cd tmp
atëherë gjithmonë do të shkoni në pavarësisht nga ajo ku ndodheni. /tmp Megjithatë, kini kujdes, sepse nëse nuk e përfshini dosjen lokale në listë (
) nuk do të mund të krijoni ndonjë dosje tjetër.dhe të kaloni aty, si zakonisht: tmp Ups!
Kjo duket si një ngatërrim që ndjeva kur kuptova se dosja lokale nuk ishte e përfshirë në variablën më të njohur⊠por duhet ta bëni këtë në variablën PATH, sepse mund të mashtroheni duke ekzekutuar një komandë false nga ndonjë kod i shkarkuar.
Mua më vendoset pika fillestare: PATHCDPATH=.:/space:/etc:/var/lib:/usr/share:/opt
SHLVL
A keni menduar ndonjëherë se4) do t'ju nxjerrë nga shell-i aktual bash në një "prind" tjetër të shell-it apo thjesht do të mbyllë dritaren e konsolës?
Ky variablë ndjek sa thellë jeni të zhytur në shell-in bash. Nëse krijoni një terminal të ri, atëherë i vendoset në 1: exit $ echo $SHLVL 1
Pastaj, nëse nënshkruani një proces tjetër shell, numri rritet:
$ bash
$ echo $SHLVL
2Kjo mund të jetë shumë e dobishme në skriptet, ku nuk jeni të sigurt nëse duhet të dilni apo jo, ose të ndihmoni në ndjekjen e vendndodhjes suaj në thellësi.
LINENOGjithashtu për analizimin e gjendjes aktuale dhe për debimin, variabla
5) është e dobishme, e cila tregon numrin e komandave që janë ekzekutuar në seancë deri në tani:
$ bash $ echo $LINENO 1 $ echo $LINENO 2 është e dobishme, e cila tregon numrin e komandave që janë ekzekutuar në seancë deri në tani:Kjo përdoret kryesisht gjatë debimit të skripteve. Duke futur rreshta si
echo DEBUG:$LINENO , mund të përcaktoni shpejt se ku ndodheni në skript (apo jo). REPLYNëse, si unë, zakonisht shkruani një kod të tillë:
6) $ read input echo do something with $input
mund të jetë një befasi se nuk duhet të shqetësoheni për krijimin e një variabli fare:
$ read
echo do something with $REPLYKjo bën të njëjtën gjë.
TMOUTPër të mos qëndruar në serverët prodhues shumë gjatë për arsye sigurie ose për të mos ekzekutuar rastësisht diçka të rrezikshme në terminalin e gabuar, vendosja e këtij variabli vepron si një mbrojtje.
7) Nëse nuk hyn asgjë brenda sasisë së caktuar të sekondave, do të dilni nga shell-i.
Pra, kjo është një alternativë
sleep 1 && exit
$ TMOUT=1 Duke vazhduar serinë e shënimeve në lidhje me funksionet më pak të njohura të bash, do t'ju tregoj shtatë variabla që mund të mos i dini. 1) PROMPT_COMMAND Mund të jeni në dijeni si të manipuloni ftesën e prompt-it për të treguar informacion të dobishëm, por jo të gjithë e dinë se çdo herë që shfaqet ftesa është e mundur të ekzekutohet një komandë shell. Në fakt, shumë manipulues të komplikuar të prompt-it.:
đ„ShtatĂ« variabla tĂ« papritur Bash | ProHosterBurimi: habr.com
