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 või .
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 . 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 -eMõju on sama.
Valiku keelamiseks peate panema plussi miinuse asemel:
$ set +ePikka 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 # <= offKatalooge 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/kodukataloogiPuhas 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 muutunudAluseladamise 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*)
cfileSiin 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
