Folytatva a kevésbé ismert PROMPT_COMMAND
1) Lehet, hogy már tisztában vagy azzal, hogyan manipulálhatod a prompt üzenetet, hogy különböző hasznos információkat mutasson, de nem mindenki tudja, hogy a prompt minden megjelenítésekor shell parancs futtatható.
Valójában sok bonyolult prompt manipulátor használja ezt a változót információk gyűjtésére, amely megjelenik a promptban.
Próbáld ki ezt egy új shellben, és nézd meg, mi történik a munkamenettel:
$ PROMPT_COMMAND='echo -n "writing the prompt at " && date'
HISTTIMEFORMAT2) A konzolban megkapod a korábban a fiókoddal végrehajtott parancsok listáját.
Ha futtatjuk a history $ HISTTIMEFORMAT='I ran this at: %d/%m/%y %T '
Miután beállítottad ezt a változót, az új bejegyzések időt is rögzítenek a parancs mellett, így a kimenet így fog kinézni: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 -
A formátum megfelel a
man date CDPATH.
3) Az idő megtakarításához a parancssorban ezt a változót használhatod a könyvtárak olyan könnyű megváltoztatására, mint ahogyan a parancsokat hívod.
Mint a
, a változó PATHegy kettősponttal elválasztott útvonalak listáját tartalmazza. Amikor a parancsot relatív úton indítod el (azaz perjel nélkül az elején), a shell alapértelmezés szerint a helyi mappádban keres megfelelő neveket. Az idő megtakarításához a parancssorban ezt a változót használhatod a könyvtárak olyan könnyű megváltoztatására, mint ahogyan a parancsokat hívod. keresni fog az üres könyvtárakban, ahová át szeretnél lépni. cd Ha úgy állítod be: Az idő megtakarításához a parancssorban ezt a változót használhatod a könyvtárak olyan könnyű megváltoztatására, mint ahogyan a parancsokat hívod. $ CDPATH=/:/lib
majd beírod: Az idő megtakarításához a parancssorban ezt a változót használhatod a könyvtárak olyan könnyű megváltoztatására, mint ahogyan a parancsokat hívod. $ cd /home $ cd tmp
akkor mindig el fogsz jutni afüggetlenül attól, hol vagy.
De óvatosan, mert ha a listában nem szerepel a helyi ( ) mappa, nem tudsz létrehozni más mappát /tmp tmp
és nem tudsz átmenni hozzá, ahogy általában szoktál:.$ cd /home $ mkdir tmp $ cd tmp $ pwd /tmp Ups! Ez olyan zűrzavarnak tűnik, amit éreztem, amikor rájöttem, hogy a helyi mappa nem volt benne a ismertebb változóban
… de ezt a PATH változóban kell elkészítenem, mert megtéveszthetnek, ha futtatnak egy hamis parancsot egy letöltött kódból.Az én beállításom kezdőpont:
CDPATH=.:/space:/etc:/var/lib:/usr/share:/opt PATHSHLVL
Valaha is gondoltál arra, hogy beírsz
CDPATH=.:/space:/etc:/var/lib:/usr/share:/opt4) SHLVL
Valaha gondoltál arra, hogy beírsz exit kibújik a jelenlegi bash shellből egy másik "szülő" shellbe, vagy egyszerűen csak teljesen bezárja a konzolablakot?
Ez a változó követi, hogy milyen mélyen vagyunk a bash shellben. Ha új terminált nyitunk, akkor 1-re van állítva:
$ echo $SHLVL
1Aztán, ha elindítunk egy másik shell folyamatot, a szám nő:
$ bash
$ echo $SHLVL
2Ez nagyon hasznos lehet szkriptekben, ahol nem biztos, hogy ki kell-e lépni, vagy nyomon kell követni, hogy hol tartunk a beágyazásban.
5) LINENO
A pillanatnyi állapot elemzéséhez és hibakereséshez a változó is hasznos LINENO, amely megadja a jelenlegi munkamenetben végrehajtott parancsok számát:
$ bash
$ echo $LINENO
1
$ echo $LINENO
2 Ez leggyakrabban szkriptek hibakeresésénél használatos. Olyan sorokat beszúrva, mint echo DEBUG:$LINENO, gyorsan meghatározhatja, hogy hol tart a szkripten belül (vagy sem).
6) REPLY
Ha, mint én, általában ilyen kódot írsz:
$ read input
echo csinálj valamit $inputakkor meglepetés lehet, hogy nem szükséges változót létrehozni:
$ read
echo csinálj valamit a $REPLY-velEz ugyanazt csinálja.
7) TMOUT
Annak érdekében, hogy ne maradjunk túl sokáig a termelési szervereken biztonsági okokból, vagy véletlenül ne indítsunk el valami veszélyeset a helytelen terminálban, e változó beállítása védelmi funkciót lát el.
Ha semmit nem írunk be a beállított másodpercek alatt, a shellből való kilépés történik.
Tehát ez alternatívája sleep 1 && exit:
$ TMOUT=1Forrás: habr.com
