Septyni netikėti Bash kintamieji

Tęsiant užrašų seriją apie mažiau žinomi funkcijos bash, parodysiu septynis kintamuosius, apie kuriuos galbūt nežinote.

1) PROMPT_COMMAND

Galbūt jau žinote, kaip manipuliuoti raginimu, kad būtų rodoma įvairi naudinga informacija, tačiau ne visi žino, kad kiekvieną kartą, kai rodoma eilutė, galite paleisti apvalkalo komandą.

Tiesą sakant, daugelis sudėtingų raginimo manipuliatorių naudoja šį kintamąjį komandoms vykdyti, kad rinktų informaciją, kuri rodoma raginime.

Pabandykite tai paleisti naujame apvalkale ir pažiūrėkite, kas atsitiks su sesija:

$ PROMPT_COMMAND='echo -n "writing the prompt at " && date'

2) HISTTIMEFORMAT

Jei bėgsi history konsolėje gausite komandų, anksčiau vykdytų jūsų paskyroje, sąrašą.

$ HISTTIMEFORMAT='I ran this at: %d/%m/%y %T '

Nustačius šį kintamąjį, nauji įrašai įrašo laiką kartu su komanda, todėl išvestis atrodys taip:

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

Formatavimas atitinka simbolius iš man date.

3) CDPATH

Norėdami sutaupyti laiko komandinėje eilutėje, galite naudoti šį kintamąjį katalogams keisti taip pat lengvai, kaip išduodate komandas.

Kaip PATH, kintamasis CDPATH yra dvitaškiais atskirtas kelių sąrašas. Kai paleisite komandą cd su santykiniu keliu (t. y. be pasvirojo brūkšnio), pagal numatytuosius nustatymus apvalkalas ieško atitinkamų pavadinimų vietiniame aplanke. CDPATH Jūsų nurodytuose keliuose ieškos katalogo, į kurį norite patekti.

Jei įdiegiate CDPATH taip:

$ CDPATH=/:/lib

ir tada įveskite:

$ cd /home
$ cd tmp

tada tu visada atsidursi /tmp nesvarbu kur tu esi.

Tačiau būkite atsargūs, nes jei sąraše nenurodysite vietinio (.) aplanką, tada negalėsite sukurti jokio kito aplanko tmp ir eikite į jį kaip įprasta:

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

Oi!

Tai panašu į sumišimą, kurį jaučiau, kai supratau, kad vietinis aplankas neįtrauktas į labiau pažįstamą kintamąjį PATH... bet jūs turite tai padaryti naudodami kintamąjį PATH, nes galite būti apgautas paleisti netikrą komandą iš atsisiųsto kodo.

Manasis nustatomas pagal pradinį tašką:

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

4) SHLVL

Ar kada nors susimąstėte, spausdindami exit ar jis nuves jus iš dabartinio bash apvalkalo į kitą „pagrindinį“ apvalkalą, ar tiesiog visiškai uždarys konsolės langą?

Šis kintamasis stebi, kaip giliai esate įdėtas į bash apvalkalą. Jei kuriate naują terminalą, jis bus nustatytas į 1:

$ echo $SHLVL
1

Tada, jei pradėsite kitą apvalkalo procesą, skaičius padidės:

$ bash
$ echo $SHLVL
2

Tai gali būti labai naudinga scenarijuose, kuriuose nesate tikri, ar išeiti, ar ne, arba sekti, kur esate įdėtas.

5) LINENO

Kintamasis taip pat naudingas analizuojant esamą būseną ir derinant LINENO, kuris praneša apie iki šiol sesijoje vykdytų komandų skaičių:

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

Tai dažniausiai naudojama derinant scenarijus. Įterpti eilutes kaip echo DEBUG:$LINENO, galite greitai nustatyti, kurioje scenarijaus vietoje esate (arba ne).

6) REPLY

Jei, kaip ir aš, dažniausiai rašote kodą taip:

$ read input
echo do something with $input

Gali būti netikėta, kad jums visai nereikia jaudintis kuriant kintamąjį:

$ read
echo do something with $REPLY

Tai daro tą patį.

7) TMOUT

Norint išvengti per ilgai likti gamybos serveriuose saugumo sumetimais arba netyčia nepaleisti ko nors pavojingo netinkamame terminale, šio kintamojo nustatymas veikia kaip apsauga.

Jei per nustatytą sekundžių skaičių nieko neįvedama, apvalkalas išeina.

Tai yra, tai yra alternatyva sleep 1 && exit:

$ TMOUT=1

Šaltinis: www.habr.com

Добавить комментарий