Xi għażliet Bash huma magħrufa sew u spiss użati. Pereżempju, ħafna nies jiktbu fil-bidu tal-iskrittura
sett -o xtrace
għad-debugging,
sett -o errexit
li toħroġ bi żball jew
sett -o errunset
biex toħroġ jekk il-varjabbli msejjaħ ma jkunx issettjat.
Iżda hemm ħafna għażliet oħra. Xi drabi huma deskritti b'mod wisq konfuż fil-manas, għalhekk ġabar xi wħud mill-aktar utli hawn, bi spjegazzjoni.
Nota: Macs jista 'jkollhom verżjoni eqdem ta' bash (3.x aktar milli 4.x) fejn mhux dawn l-għażliet kollha huma disponibbli. F'dan il-każ, ara
set
jew shopt
?
Hemm żewġ modi kif tissettja l-għażliet tal-bash: minn skript jew mil-linja tal-kmand. Tista 'tuża kmandi integrati set
и shopt
. It-tnejn ibiddlu l-imġieba tal-qoxra, jagħmlu ħafna l-istess ħaġa (b'argumenti differenti), iżda huma differenti tagħhom set
huma ntirtu jew mislufa minn parametri ta qxur oħra, filwaqt li parametri shopt
maħluqa f'bash.
Jekk trid tara l-għażliet attwali, mexxi:
$ set -o
$ shopt
Biex tattiva l-għażla fi set
Tintuża sintassi twila jew qasira:
$ set -o errunset
$ set -e
L-effett huwa l-istess.
Biex tiddiżattiva l-għażla, trid tpoġġi plus minflok minus:
$ set +e
Għal żmien twil ma stajtx niftakar din is-sintassi għax il-loġika dehret ħażina (sinjal minus jippermetti l-għażla, u sinjal plus jiddiżattivaha).
В shopt
bnadar (aktar loġiċi) jintużaw biex jippermettu u jiddiżattivaw l-għażliet -s
(sett) u -u
(mitfi):
$ shopt -s cdspell # <= on
$ shopt -u cdspell # <= off
Direttorji li jinbidlu
Hemm diversi għażliet li jgħinuk taħdem mad-direttorji.
1.cdspell
B'dan l-issettjar, bash jibda jifhem it-tajpijiet u se tieħdok fil-folder li ismu spettejt ħażin.
$ shopt -s cdspell
$ mkdir abcdefg
$ cd abcdeg
abcdefg
$ cd ..
Ilni nuża din l-għażla għal ħafna snin u rari ħafna (forsi darba fis-sena) tieħu deċiżjoni stramba ħafna. Imma fi ġranet oħra cdspell
jiffranka l-ħin, litteralment kuljum.
2. autocd
Jekk m'intix lest li taċċetta l-ineffiċjenza ta' daħliet multipli cd
, allura tista 'tissettja din l-għażla biex timxi għall-fowlder X jekk il-kmand X ma jeżistix.
$ shopt -s autocd
$ abcdefg
$ cd ..
Flimkien ma 'awtocomplete, dan jippermettilek taqbeż malajr bejn il-folders:
$ ./abc[TAB][RETURN]
cd -- ./abcdefg
Biss ma isem il-folder rm -rf *
(iva, mill-mod, dan huwa possibbli).
3.direxand
Din hija għażla friska li tespandi l-varjabbli ambjentali billi tagħfas Tab:
$ shopt -s direxpand
$ ./[TAB] # заменяется на...
$ /full/path/to/current_working_folder
$ ~/[TAB] # заменяется на...
$ /full/path/to/home/folder
$ $HOME/[TAB] # заменяется на...
$ /full/path/to/home/folder
output nadif
4. checkjobs
Din l-għażla tieqaf milli tilloggja mis-sessjoni jekk għad hemm impjiegi għaddejjin fl-isfond.
Minflok toħroġ, tintwera lista ta 'kompiti mhux mitmuma. Jekk xorta trid toħroġ, imbagħad erġa' daħħal 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 процесса изменился
Superpotenzi ta' sostituzzjoni
5.globstar
Din l-għażla tagħtik superpoteri ta' sostituzzjoni! Jekk tidħol:
$ shopt -s globstar
$ ls **
allura l-qoxra turi d-direttorji u s-subdirettorji kollha b'mod rikorsiv.
Flimkien ma' direxpand
Tista' malajr tara kollox aktar baxx fil-ġerarkija:
$ shopt -s direxpand
$ ls **[TAB][TAB]
Display all 2033 possibilities? (y or n)
6. extglob
Din l-għażla tippermetti karatteristiċi li huma assoċjati b'mod aktar komuni ma' espressjonijiet regolari. Xi drabi dan huwa utli ħafna:
$ shopt -s extglob
$ touch afile bfile cfile
$ ls
afile bfile cfile
$ ls ?(a*|b*)
afile bfile
$ ls !(a*|b*)
cfile
Hawnhekk il-mudelli huma mqiegħda fil-parentesi u separati minn bar vertikali. Hawn huma l-operaturi disponibbli:
? = taqbel ma' żero jew okkorrenza waħda tal-mudelli mogħtija ! = uri dak kollu li ma jaqbilx mal-mudelli mogħtija * = żero jew aktar okkorrenzi + = okkorrenza waħda jew aktar @ = eżattament okkorrenza waħda
Protezzjoni ta 'inċidenti
7. histverify
Jista 'jkun ftit tal-biża' għall-ewwel li tuża l-kmandi ta' tnedija ta' malajr mill-istorja tal-abbrevjazzjonijiet !!
и !$
.
Għażla histverify
ihallik l-ewwel tara kif Bash jinterpreta l-kmand qabel ma jibda fil-fatt:
$ shopt -s histverify
$ echo !$ # <= По нажатию Enter команда не запускается
$ echo histverify # <= Она сначала демонстрируется на экране,
histverify # <= а потом запускается
8. Noclobber
Għal darb'oħra, biex tipproteġi kontra l-inċidenti, jiġifieri milli tikteb fuqu fajl li diġà jeżisti mal-operatur ta' direzzjoni mill-ġdid (>
). Dan jista 'jkun diżastru jekk ma jkollokx backup.
Għażla set -С
tipprojbixxi kitba oħra bħal din. Jekk meħtieġ, tista' tevita l-protezzjoni billi tuża l-operatur >|
:
$ touch afile
$ set -C
$ echo something > afile
-bash: afile: cannot overwrite existing file
$ echo something >| afile
$
Sors: www.habr.com