Kaheksa vähe tuntud Bash'i valikut.

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 siin või siin.

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 põhjuse. 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 -e

Mõju on sama.

Valiku väljalülitamiseks tuleb pluss märk asendada miinusmärgiga:

$ set +e

Pikka 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älja

Kataloogide 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\/folder

Puhtaid 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 muutunud

Asenduse 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*)
cfile

Siin 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

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster