Tmien Għażliet Bash Ftit Magħrufa

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 hawn jew hawn.

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 oriġini... Għażliet 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

Żid kumment