E puer Bash Optiounen si bekannt an dacks benotzt. Zum Beispill schreiwen vill Leit am Ufank vum Skript
astellen -o xtrace
fir Debugging,
set -o errexit
per Feeler eraus ze goen oder
set -o errunset
fir erauszekommen wann déi genannte Variabel net agestallt ass.
Mä et gi vill aner Optiounen. Heiansdo gi se ze verwirrend a Manas beschriwwen, also hunn ech e puer vun den nëtzlechsten hei gesammelt, mat Erklärung.
Notiz: Macs kënnen eng méi al Versioun vu Bash hunn (3.x anstatt 4.x) wou net all dës Optiounen verfügbar sinn. An dësem Fall, kuckt
set
oder shopt
?
Et ginn zwou Méiglechkeeten fir Bash Optiounen ze setzen: vun engem Skript oder vun der Kommandozeil. Dir kënnt agebaute Kommandoen benotzen set
и shopt
. Béid änneren d'Behuele vun der Schuel, maachen vill déiselwecht Saach (mat verschiddenen Argumenter), awer ënnerscheede sech an hirer set
sinn ierflecher oder aus Parameteren vun anere Muschelen geléint, iwwerdeems Parameteren shopt
am Bash erstallt.
Wann Dir déi aktuell Optiounen wëllt gesinn, lafen:
$ set -o
$ shopt
Fir d'Optioun aktivéieren an set
Laang oder kuerz Syntax gëtt benotzt:
$ set -o errunset
$ set -e
Den Effekt ass d'selwecht.
Fir d'Optioun auszeschalten, musst Dir e Plus anstatt e Minus setzen:
$ set +e
Fir eng laang Zäit konnt ech dës Syntax net erënneren, well d'Logik falsch ausgesäit (e Minuszeechen erlaabt d'Optioun, an e Plus Zeechen deaktivéiert se).
В shopt
(méi logesch) Fändelen gi benotzt fir Optiounen z'aktivéieren an auszeschalten -s
(set) an -u
(unset):
$ shopt -s cdspell # <= on
$ shopt -u cdspell # <= off
Verzeechnes änneren
Et gi verschidde Méiglechkeeten, déi Iech hëllefen mat Verzeechnes ze schaffen.
1.cdspell
Mat dëser Astellung fänkt de Bash un Tippfehler ze verstoen a bréngt Iech an den Dossier deem säin Numm Dir falsch geschriwwe hutt.
$ shopt -s cdspell
$ mkdir abcdefg
$ cd abcdeg
abcdefg
$ cd ..
Ech hunn dës Optioun fir vill Joer benotzt a ganz selten (vläicht eemol am Joer) mécht et eng ganz komesch Entscheedung. Awer op aneren Deeg cdspell
spuert Zäit, wuertwiertlech all Dag.
2. autocd
Wann Dir net gewëllt sidd d'Ineffizienz vu multiple Entréen ze akzeptéieren cd
, da kënnt Dir dës Optioun setzen fir an den X Dossier ze plënneren wann de X Kommando net existéiert.
$ shopt -s autocd
$ abcdefg
$ cd ..
Kombinéiert mat Autocomplete, erlaabt dëst Iech séier tëscht Ordner ze sprangen:
$ ./abc[TAB][RETURN]
cd -- ./abcdefg
Nennt just den Dossier net rm -rf *
(jo, iwwregens, dat ass méiglech).
3.direxpand
Dëst ass eng cool Optioun déi Ëmfeldvariablen erweidert andeems Dir Tab dréckt:
$ shopt -s direxpand
$ ./[TAB] # заменяется на...
$ /full/path/to/current_working_folder
$ ~/[TAB] # заменяется на...
$ /full/path/to/home/folder
$ $HOME/[TAB] # заменяется на...
$ /full/path/to/home/folder
propper Ausgang
4. checkjobs
Dës Optioun stoppt aus der Sessioun ausloggen wann et nach Aarbechtsplazen am Hannergrond lafen.
Amplaz auszegoen, gëtt eng Lëscht vun ongeschlossen Aufgaben ugewisen. Wann Dir nach ëmmer wëllt erausgoen, gitt nach eng Kéier an 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 процесса изменился
Substitutioun Supermuecht
5.globstar
Dës Optioun gëtt Iech Substitutioun Supermuecht! Wann Dir gitt:
$ shopt -s globstar
$ ls **
da wäert d'Shell all Verzeichnungen an Ënnerverzeechnungen rekursiv weisen.
A Verbindung mat direxpand
Dir kënnt séier alles méi niddereg an der Hierarchie gesinn:
$ shopt -s direxpand
$ ls **[TAB][TAB]
Display all 2033 possibilities? (y or n)
6.extglob
Dës Optioun erlaabt Features déi méi allgemeng mat reguläre Ausdréck verbonne sinn. Heiansdo ass dëst ganz nëtzlech:
$ shopt -s extglob
$ touch afile bfile cfile
$ ls
afile bfile cfile
$ ls ?(a*|b*)
afile bfile
$ ls !(a*|b*)
cfile
Hei sinn d'Muster an Klammeren plazéiert an duerch eng vertikal Bar getrennt. Hei sinn déi verfügbar Betreiber:
? = entsprécht Null oder engem Optriede vun de gegebene Mustere ! = weisen alles wat net mat de gegebene Mustere passt * = Null oder méi Optriede + = een oder méi Optriede @ = genee een Optriede
Accident Schutz
7. histverify
Et kann am Ufank e bëssen grujeleg sinn fir d'Schnellstartbefehl aus der Geschicht vun Ofkierzungen ze benotzen !!
и !$
.
Optioun histverify
léisst Iech als éischt gesinn wéi Bash de Kommando interpretéiert ier et tatsächlech leeft:
$ shopt -s histverify
$ echo !$ # <= По нажатию Enter команда не запускается
$ echo histverify # <= Она сначала демонстрируется на экране,
histverify # <= а потом запускается
8. Noklobber
Nach eng Kéier, fir géint Accidenter ze schützen, nämlech fir eng Datei ze iwwerschreiwe déi scho mam Viruleedungsoperateur existéiert (>
). Dëst kann eng Katastroph sinn wann Dir kee Backup hutt.
Optioun set -С
verbitt esou Iwwerschreiwe. Wann néideg, kënnt Dir de Schutz mam Bedreiwer ëmgoen >|
:
$ touch afile
$ set -C
$ echo something > afile
-bash: afile: cannot overwrite existing file
$ echo something >| afile
$
Source: will.com