Sedem nepričakovanih Bash spremenljivk.

Nadaljujem serijo zapiskov o manj znanih funkcijah bash, predstavil vam bom sedem spremenljivk, o katerih morda niste vedeli.

1) PROMPT_COMMAND

Morda že veste, kako upravljati s povabilom prompt in prikazati različne koristne informacije, vendar ne vedo vsi, da lahko ob vsakem prikazovanju povabila zaženete ukaz lupine.

Dejansko mnogi zahtevni upravljalci povabila uporabljajo to spremenljivko za izvajanje ukazov za zbiranje informacij, prikazanih v povabilu.

Poskusite to zagnati v novi lupini in poglejte, kaj se zgodi s sejo:

$ PROMPT_COMMAND='echo -n "pisanje povabila ob " && date'

2) HISTTIMEFORMAT

Ako pokrenete zgodovino v konzoli, dobili boste seznam ukazov, ki so bili prej izvedeni pod vašim uporabniškim računom.

$ HISTTIMEFORMAT='To sem naredil ob: %d/%m/%y %T '

Ko je ta spremenljivka nastavljena, nova beleženja zapisujejo čas skupaj z ukazom, zato bo izhod videti takole:

1871  To sem naredil ob: 01/05/19 13:38:07 cat /etc/resolv.conf
1872  To sem naredil ob: 01/05/19 13:38:19 curl bbc.co.uk
1873  To sem naredil ob: 01/05/19 13:38:41 sudo vi /etc/resolv.conf
1874  To sem naredil ob: 01/05/19 13:39:18 curl -vvv bbc.co.uk
1876  To sem naredil ob: 01/05/19 13:39:25 sudo su -

Formatiranje ustreza znakom iz man date.

3) CDPATH

Da prihranite čas v ukazni vrstici, lahko uporabite to spremenljivko za spremembo imenikov tako enostavno, kot kličete ukaze.

Kot PATH, spremenljivka CDPATH predstavlja seznam poti, ločenih s dvojno piko. Ko zaženete ukaz cd s relativno potjo (tj. brez poševnice na začetku), lupina privzeto išče v vašem lokalnem imeniku ustrezna imena. CDPATH bodo iskali v poteh, ki ste jih dali za imenik, kamor želite iti.

Če nastavite CDPATH na ta način:

$ CDPATH=/:/lib

in nato vnesete:

$ cd /home
$ cd tmp

torej boste vedno prišli do /tmp ne glede na to, kje ste.

Vendar bodite previdni, ker če v seznamu ne navedete lokalnega (.) imenika, ne boste mogli ustvariti drugega imenika tmp in se nanj preprosto preseliti:

$ cd /home
$ mkdir tmp
$ cd tmp
$ pwd
/tmp

Ups!

To se zdi zmedeno, ko sem ugotovil, da lokalni imenik ni bil vključen v bolj znano spremenljivko PATH… toda to morate narediti v spremenljivki PATH, ker vas lahko prevarajo, če zaženete lažni ukaz iz katerega koli prenesenega kode.

Moja je nastavljena v začetni točki:

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

4) SHLVL

Ste se kdaj spraševali, ko vnesete exit bo vas bo vyneslo iz tekushchey obolochki bash v druguyu "roditeley" obolochku ili prosto polnost'yu zakроet okno kontsa?

Eta peremnaya otslezhivayet, naskol'ko gluboko vy vlozhены v obolochku bash. Esli sozdat' novyy terminal, to on ustanovlen na 1:

$ echo $SHLVL
1

Zatem, esli zapustit' drugoy protsess obolochki, chislo uvelichivayetsya:

$ bash
$ echo $SHLVL
2

Eto mozhet byt' ochen' polezno v skriptakh, gde vy ne uveren, sleduet vykhodit' ili net, ili otslezhivat', gde vy nakhodytes' po vlozhennosti.

5) LINENO

Takzhe dlya analiza tekushchego sostoyaniya i otladki polezna peremnaya LINENO, kotoraya soobshchayet kolichestvo komand, vypolnennykh v seanse k nastoyashchemu momentu:

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

Eto chashche vsego ispol'zuetsya pri otladke skriptov. Vstavlyaya takie stroki, kak echo DEBUG:$LINENO, vy mozhete bystro opredelit', gde v skripte vy nakhodytes' (ili net).

6) REPLY

Esli, kak i ya, vy obychno pishite takoy kod:

$ read input
echo delat' chto-to s $input

to mozhet stat' syurprizom, chto ne nuzhno voobsche bespokoitsya o sozdanii peremennoi:

$ read
echo delat' chto-to s $REPLY

Eto delayet to zhe samoye.

7) TMOUT

Chtoby ne ostavatsya na proizvodstvennykh serverakh slishkom dolgo v tselyakh bezopasnosti ili sluchayno ne zapustit' chto-nibud' opasnoe v nepravil'nom terminale, to ustanovka etoy peremnoy deystvuet kak zashchita.

Esli nichego ne vvoditsya v t течение ustanovlennogo kolichestva sekund, proiskhodit vykhod iz obolochki.

To yest' eto alternativa sleep 1 && exit:

$ TMOUT=1

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster