Mõned Bashi valikud on hästi tuntud ja sageli kasutatavad. Näiteks kirjutavad paljud inimesed stsenaariumi algusesse
sea -o xtrace
silumiseks,
sead -o errexit
kogemata väljuda või
set -o errunset
väljumiseks, kui kutsutav muutuja pole määratud.
Kuid on palju muid võimalusi. Mõnikord kirjeldatakse neid manas liiga segaselt, nii et kogusin siia mõned kasulikumad koos selgitustega.
Märkus. Macidel võib olla vanem bashi versioon (3.x, mitte 4.x), kus kõik need valikud pole saadaval. Sel juhul vt
set
või shopt
?
Bashi suvandite määramiseks on kaks võimalust: skriptist või käsurealt. Saate kasutada sisseehitatud käske set
и shopt
. Mõlemad muudavad kesta käitumist, teevad palju sama asja (erinevate argumentidega), kuid erinevad nende poolest set
on päritud või laenatud teiste kestade parameetritelt, samas kui parameetrid shopt
loodud bashis.
Kui soovite näha praeguseid valikuid, käivitage:
$ set -o
$ shopt
Valiku aktiveerimiseks sisse set
Kasutatakse pikka või lühikest süntaksit:
$ set -o errunset
$ set -e
Mõju on sama.
Selle valiku keelamiseks peate miinuse asemel lisama plussi:
$ set +e
Pikka aega ei suutnud ma seda süntaksit meeles pidada, sest loogika tundus vale (miinusmärk lubab selle valiku ja plussmärk keelab selle).
В shopt
(loogilisemaid) lippe kasutatakse valikute lubamiseks ja keelamiseks -s
(komplekt) ja -u
(määramata):
$ shopt -s cdspell # <= on
$ shopt -u cdspell # <= off
Kataloogide muutmine
Kataloogidega töötamisel on mitu võimalust.
1.cdspell
Selle sätte korral hakkab bash mõistma kirjavigu ja suunab teid kausta, mille nime kirjutasite valesti.
$ shopt -s cdspell
$ mkdir abcdefg
$ cd abcdeg
abcdefg
$ cd ..
Olen seda võimalust kasutanud juba aastaid ja väga harva (võib-olla kord aastas) teeb see väga kummalise otsuse. Aga teistel päevadel cdspell
säästab aega, sõna otseses mõttes iga päev.
2. autocd
Kui te ei soovi leppida mitme kirje ebaefektiivsusega cd
, siis saate määrata selle suvandi nii, et see liiguks X-kausta, kui X-käsku pole olemas.
$ shopt -s autocd
$ abcdefg
$ cd ..
Koos automaatse täitmisega võimaldab see kiiresti kaustade vahel liikuda.
$ ./abc[TAB][RETURN]
cd -- ./abcdefg
Lihtsalt ärge pange kaustale nime rm -rf *
(jah, muide, see on võimalik).
3.direxpand
See on lahe valik, mis laiendab keskkonnamuutujaid, vajutades tabeldusklahvi:
$ shopt -s direxpand
$ ./[TAB] # заменяется на...
$ /full/path/to/current_working_folder
$ ~/[TAB] # заменяется на...
$ /full/path/to/home/folder
$ $HOME/[TAB] # заменяется на...
$ /full/path/to/home/folder
puhas väljund
4. kontrolltööd
See suvand peatab seansist väljalogimise, kui taustal töötab endiselt töid.
Väljumise asemel kuvatakse lõpetamata ülesannete loend. Kui soovite siiski väljuda, sisestage uuesti exit
.
$ shopt -s checkjobs
$ echo $$
68125 # <= ID процесса для оболочки
$ sleep 999 &
$ exit
There are running jobs.
[1]+ Running sleep 999 &
$ echo $$
68125 # <= ID процесса для оболочки тот же
$ exit
There are running jobs.
[1]+ Running sleep 999 &
$ exit
$ echo $$
$ 59316 # <= на этот раз ID процесса изменился
Asenduse supervõimed
5.globstar
See valik annab teile asendamise supervõimed! Kui sisestate:
$ shopt -s globstar
$ ls **
siis näitab kest kõiki katalooge ja alamkatalooge rekursiivselt.
Kombineeritult koos direxpand
Saate kiiresti vaadata kõike hierarhias madalamat.
$ shopt -s direxpand
$ ls **[TAB][TAB]
Display all 2033 possibilities? (y or n)
6.extglob
See suvand lubab funktsioone, mida sagedamini seostatakse regulaaravaldistega. 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 asetatakse mustrid sulgudesse ja eraldatakse vertikaalse ribaga. Siin on saadaolevad operaatorid:
? = vastab antud mustrite nullile või ühele esinemisele! = näita kõike, mis ei vasta antud mustritele * = null või enam esinemist + = üks või mitu esinemist @ = täpselt üks esinemine
Õnnetuskaitse
7. histverify
Lühendite ajaloost pärit kiirkäivituskäskude kasutamine võib alguses pisut hirmutav olla !!
и !$
.
Variant histverify
võimaldab teil kõigepealt näha, kuidas Bash käsku tõlgendab, enne kui see tegelikult töötab:
$ shopt -s histverify
$ echo !$ # <= По нажатию Enter команда не запускается
$ echo histverify # <= Она сначала демонстрируется на экране,
histverify # <= а потом запускается
8. Noklobber
Jällegi kaitseks õnnetuste eest, nimelt ümbersuunamisoperaatoriga juba olemasoleva faili ülekirjutamise eest (>
). Kui teil pole varukoopiat, võib see olla katastroof.
Variant set -С
keelab sellise ülekirjutamise. Vajadusel saate operaatori abil kaitsest mööda minna >|
:
$ touch afile
$ set -C
$ echo something > afile
-bash: afile: cannot overwrite existing file
$ echo something >| afile
$
Allikas: www.habr.com