Tęsiant užrašų seriją apie
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