Mõned Bashi valikud on hästi tuntud ja neid kasutatakse sageli. Näiteks kirjutavad paljud skripti alguses
set -o xtrace
debagimiseks,
set -o errexit
vea korral väljumiseks või
set -o errunset
väljumiseks, kui kutsutud muutujat ei ole seadistatud.
Kuid on palju teisi valikuid. Mõnikord on need mannikutes liiga segaselt kirja pandud, seetõttu olen siin kokku seadnud mõned kasulikumad koos seletustega.
Märkus: Macil võib olla vanem versioon bashist (3.x, mitte 4.x), kus mitte kõik need valikud ei ole saadaval. Sel juhul vaadake või .
set või shopt?
Bash-i parameetrite seadmiseks on kaks võimalust: skriptist või käsuviibilt. Saate kasutada sisseehitatud käske set ja shopt. Mõlemad muudavad kestuse käitumist, teevad suures osas ühte ja sama (erinevate argumentide korral) ning erinevad oma . Parameetrid set pärinevad või laenatakse teiste kestade parameetritest, samal ajal kui parameetrid shopt on loodud bashis.
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 väljalülitamiseks tuleb pluss märk asendada miinusmärgiga:
$ set +ePikka aega ei suutnud ma seda süntaksit meeles pidada, kuna loogika näib vale (miinus aktiveerib valiku, pluss – deaktiveerib).
Uues shopt valikute aktiveerimiseks ja deaktiveerimiseks kasutatakse (loogilisemaid) lippe -s (set) ja -u (unset):
$ shopt -s cdspell # <= sisse
$ shopt -u cdspell # <= väljaKataloogide muutmine
On mõned valikud, mis aitavad töötada kataloogidega.
1. cdspell
Sellise seadistusega hakkab bash mõistma trükivigu ja viib teid kausta, mille nimi oli vale.
$ shopt -s cdspell
$ mkdir abcdefg
$ cd abcdeg
abcdefg
$ cd .. Olen seda valikut kasutanud aastaid ning väga harva (võib-olla kord aastas) teeb see väga kummalise otsuse. Aga ülejäänud päevadel cdspell säästab aega, sõna otseses mõttes igapäevaselt.
2. autocd
Kui te ei soovi leppida ebatõhususega pideva sisestamise tõttu, cdvõite selle valiku seadistada, et liikuda kausta X, kui käsk X ei eksisteeri.
$ shopt -s autocd
$ abcdefg
$ cd ..Koos automaatse täitmisega võimaldab see kiiresti kaustade vahel navigeerida:
$ .\/abc[TAB][RETURN]
cd -- .\/abcdefg Ainult ärge nimetage kausta rm -rf * (jah, muide, see on võimalik).
3. direxpand
See on lahe valik, mis laiendab keskkonnaparameetreid Tab'i vajutamisel:
$ shopt -s direxpand
$ .\/[TAB] # asendub...
$ \/full\/path\/to\/current_working_folder
$ ~\/[TAB] # asendub...
$ \/full\/path\/to\/home\/folder
$ $HOME\/[TAB] # asendub...
$ \/full\/path\/to\/home\/folderPuhtaid väljundeid
4. checkjobs
See seade peatab väljundi sessioonist, kui taustal on veel töö käimas.
Väljundi asemel näidatakse lõpetamata tööde loendit. Kui soovite ikkagi välja minna, sisestage see veel kord exit.
$ shopt -s checkjobs
$ echo $$
68125 # <= Protsessi ID shell'ile
$ sleep 999 &
$ exit
On käivitatud tööd.
[1]+ Käimas sleep 999 &
$ echo $$
68125 # <= Protsessi ID shell'ile sama
$ exit
On käivitatud tööd.
[1]+ Käimas sleep 999 &
$ exit
$ echo $$
$ 59316 # <= sel korral on protsessi ID muutunudAsenduse supervõimalused
5. globstar
See valik annab teile asenduse supervõimalused! Kui sisestate:
$ shopt -s globstar
$ ls **siis shell kuvab rekursiivselt kõik kaustad ja alakaustad.
Koos direxpand saate kiiresti sirvida kõike, mis allpool on hierarhias:
$ shopt -s direxpand
$ ls **[TAB][TAB]
Kuvada kõik 2033 võimalust? (j või n) 6. extglob
See valik aktiveerib funktsioonid, mida sageli seostatakse regulaarsete avaldistega. 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 on mustrid pandud sulgudesse ja eraldatud vertikaalse jooniga. Siin on saadaval olevad operaatorid:
? = соответствует нулю или одному вхождению заданных шаблонов ! = показать всё, что не соответствует заданным шаблонам * = ноль или более вхождений + = одно или более вхождений @ = ровно одно вхождение
Kahjude kaitse
7. histverify
Alguses võib olla veidi hirmutav kasutada käskude kiiret käivitamist ajaloost lühendeid !! ja !$.
Valik histverify võimaldab kõigepealt vaadata, kuidas Bash tõlgendab käsku, enne kui see tegelikult käivitub:
$ shopt -s histverify
$ echo !$ # <= Enteri vajutamisel käsku ei käivitata
$ echo histverify # <= Esmane demonstreerimine ekraanil,
histverify # <= ja siis see käivitub 8. Noclobber
Taaskord, kahjude kaitseks, nimelt olemasoleva faili üle kirjutamise vältimiseks suunamisoperaatoriga (>). See võib olla katastroof, kui teil ei ole varukoopiat.
Valik set -C keelab selle üle kirjutamise. Vajadusel saab kaitse ümber minna operaatori abil >|:
$ touch afile
$ set -C
$ echo something > afile
-bash: afile: ei saa olemasolevat faili overwriteda
$ echo something >| afile
$Allikas: habr.com
