Hét meglepő Bash változó

Folytatva a kevésbé ismert funkciókról a bash-ban, bemutatok hét változót, amelyről talán nem is tudtál. 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'

HISTTIMEFORMAT

2) 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 a

fü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:/opt

4) 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
1

Aztán, ha elindítunk egy másik shell folyamatot, a szám nő:

$ bash
$ echo $SHLVL
2

Ez 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 $input

akkor meglepetés lehet, hogy nem szükséges változót létrehozni:

$ read
echo csinálj valamit a $REPLY-vel

Ez 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=1

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster