Kaheksa vähem tuntud Bash-i valikut

Mõned Bash-i valikud on hästi tuntud ja sageli kasutatud. Näiteks kirjutavad paljud skripti alguses

set -o xtrace

silumise jaoks,

set -o errexit

vea korral väljumiseks või

set -o errunset

väljumiseks, kui kutsutud muutujat ei ole seadistatud.

Aga on palju muid valikuid. Mõnikord on need manuaalides liiga segaselt kirja pandud, seetõttu kogusin siia mõned kõige kasulikumad koos selgitustega.

Märkus: Macil võib olla vanem Bash'i versioon (3.x, mitte 4.x), kus ei ole kõik need valikud saadaval. Sel juhul vaadake siit või siit.

set või shopt?

Bash-i parameetreid saab seada kahte pidi: skriptist või käsurealt. Saab kasutada sisseehitatud käske set ja shopt. Mõlemad muudavad shelli käitumist, teevad suuresti sama asja (erinevate argumentidega) ja erinevad oma põhjuse. Parameetrid set pärinevad või laenatakse teiste shellide parameetritest, samas kui parameetrid shopt on loodud Bash-is.

Kui soovite vaadata praeguseid valikuid, käivitage:

$ set -o
$ shopt

Valiku aktiveerimiseks set kasutatakse pikka või lühikest süntaksit:

$ set -o errunset
$ set -e

Mõju on sama.

Valiku keelamiseks peate panema plussi miinuse asemel:

$ set +e

Pikka aega ei suutnud ma seda süntaksit meeles pidada, kuna loogika tundus vale (miinus sisaldab valikut, pluss aga välja lülitab).

V shopt valikute sisse- ja väljalülitamiseks kasutatakse (loogilisemaid) lippe -s (seada) ja -u (tühistada):

$ shopt -s cdspell # <= on
$ shopt -u cdspell # <= off

Katalooge muutmine

On mitmeid valikuid, mis aitavad kataloogidega töötamisel.

1. cdspell

Selle seadistusega hakkab bash mõistma trükivigu ja viib teid kausta, mille nimi on valesti kirjutatud.

$ shopt -s cdspell
$ mkdir abcdefg
$ cd abcdeg
abcdefg
$ cd ..

Olen seda valikut aastaid kasutanud ja väga harva (võib-olla kord aastas) teeb ta väga kummalise otsuse. Kuid ülejäänud päevadel cdspell säästab aega, tõeliselt iga päev.

2. autocd

Kui te ei ole valmis taluma ebaefektiivsust korduva sisestamisega cd, siis võite selle valiku seadistada, et liikuda kausta X, kui käsku X ei eksisteeri.

$ shopt -s autocd
$ abcdefg
$ cd ..

Koos automaatse täitmisega võimaldab see kiiresti muudkui kaustade vahel liikuda:

$ ./abc[TAB][RETURN]
cd -- ./abcdefg

Ainult ärge nimetage kausta rm -rf * (jah, muide, see on võimalik).

3. direxpand

See on äge valik, mis laiendab keskkonnamuutujaid Tab klahvi vajutamisel:

$ shopt -s direxpand
$ ./[TAB]     # asendub...
$ /täielik/tee/praegune_töökataloog
$ ~/[TAB]     # asendub...
$ /täielik/tee/kodukataloogi
$ $HOME/[TAB] #  asendub...
$ /täielik/tee/kodukataloogi

Puhas väljund

4. checkjobs

See parameeter peatab seansist väljumise, kui taustal veel tööülesanded käivad.

Väljundiks on lõpetamata tööde nimekiri. Kui soovite ikkagi väljuda, tippige uuesti exit.

$ shopt -s checkjobs
$ echo $$
68125             # <= Protsessi ID kestale
$ sleep 999 &
$ exit
Käimas on tööd.
[1]+  Käimas                 sleep 999 &
$ echo $$
68125             # <= Protsessi ID kestale sama
$ exit
Käimas on tööd.
[1]+  Käimas                 sleep 999 &
$ exit
$ echo $$
$ 59316           # <= sel korral on Protsessi ID muutunud

Aluseladamise supervõimed

5. globstar

See valik annab teile aluseladamise supervõimed! Kui tippida:

$ shopt -s globstar
$ ls **

siis kuvatakse kestas rekursiivselt kõik kaustad ja alamkaustad.

Koos direxpand võimaldab kiiresti sirvida kõike, mis hierarhias allpool:

$ shopt -s direxpand
$ ls **[TAB][TAB]
Kuva kõik 2033 võimalust? (y või n) 

6. extglob

See valik aktiveerib funktsioone, mida seostatakse sagedamini regulaarsete väljenditega. Mõnikord on see väga kasulik:

$ shopt -s extglob
$ touch afile bfile cfile
$ ls
afile bfile cfile
$ ls ?(a*|b*)
afile bfile
$ ls !(a*|b*)
cfile

Siin mallid on pandud nurksulgudesse ja eraldatud vertikaalse joonega. Siin on saadaval olevad operaatorid:

? = соответствует нулю или одному вхождению заданных шаблонов
! = показать всё, что не соответствует заданным шаблонам
* = ноль или более вхождений
+ = одно или более вхождений
@ = ровно одно вхождение

Õnnetusjuhtumite kaitse

7. histverify

Alguses võib olla veidi hirmutav kasutada kiiret käivitamist käskudest ajaloos lühendite abil. !! ja !$.

Valik histverify lubab kõigepealt näha, kuidas Bash tõlgendab käsku enne selle tegelikku käivitamist:

$ shopt -s histverify
$ echo !$          # <= Enter'i vajutamisel käsk ei käivitu
$ echo histverify  # <= See näidatakse esmalt ekraanil,
histverify         # <= ja siis käivitatakse. 

8. Noclobber

Jällegi, õnnetusjuhtumite kaitseks, nimelt faili, mis juba eksisteerib, üle kirjutamise kaitseks suunamisoperaatoriga (>). See võib osutuda katastroofiks, kui sul ei ole varukoopiat.

Valik set -C keelab sellise üle kirjutamise. Vajaduse korral on võimalik kaitse mööda minna operaatori >|:

$ touch afile
$ set -C
$ echo something > afile
-bash: afile: ei saa olemasolevat faili üle kirjutada
$ echo something >| afile
$

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster