Iinketho ezisibhozo eziNcinci ezaziwayo zeBash

Ezinye iinketho zeBash ziyaziwa kwaye zisetyenziswa rhoqo. Umzekelo, abantu abaninzi babhala ekuqaleni kweskripthi

setha -o xtrace

ukulungisa ingxaki,

setha -o errexit

ukuphuma ngempazamo okanye

set -o erruset

ukuphuma ukuba umahluko obizwayo awumiselwanga.

Kodwa kukho ezinye iindlela ezininzi. Ngamanye amaxesha zichazwa ngokubhidanisa kakhulu kwimana, ngoko ke ndiqokelele ezona ziluncedo kakhulu apha, ngengcaciso.

Qaphela: IiMacs zinokuba noguqulelo oludala lwe-bash (3.x kune-4.x) apho ingezizo zonke ezi khetho ezikhoyo. Kule meko, yabona apha okanye apha.

set okanye shopt?

Kukho iindlela ezimbini zokuseta iinketho ze-bash: ukusuka kwiscript okanye kumgca womyalelo. Ungasebenzisa imiyalelo eyakhelwe-ngaphakathi set ΠΈ shopt. Zombini zitshintsha isimilo seqokobhe, yenza into enye kakhulu (ngeengxabano ezahlukeneyo), kodwa zahlukile kuzo imvelaphi. Iinketho set zizuzwe njengelifa okanye zibolekwe kwiparameters zamanye amaqokobhe, ngelixa iiparameters shopt yenziwe kwi-bash.

Ukuba ufuna ukubona iinketho zangoku, sebenzisa:

$ set -o
$ shopt

Ukwenza ukhetho kwi set Kusetyenziswa i-syntax ende okanye emfutshane:

$ set -o errunset
$ set -e

Isiphumo siyafana.

Ukuyekisa ukhetho, kufuneka ubeke umdibaniselwano endaweni ka-minus:

$ set +e

Ixesha elide bendingakwazi ukukhumbula le syntax kuba ingqiqo ibibonakala ingalunganga (uphawu lothabatha lwenza ukhetho, kwaye uphawu lokudibanisa luyayivala).

Π’ shopt (esengqiqweni ngakumbi) iiflegi zisetyenziselwa ukwenza kunye nokuvala iinketho -s (seti) kunye -u (ayilungiswanga):

$ shopt -s cdspell # <= on
$ shopt -u cdspell # <= off

Ukutshintsha abalawuli

Kukho iindlela ezininzi onokukhetha kuzo ezikunceda ukuba usebenze ngabalawuli.

1.cdspell

Ngolu cwangciso, i-bash izakuqala ukuqonda ii-typos kwaye izakusa kwisiqulathi seefayili esigama lalo upelwe kakubi.

$ shopt -s cdspell
$ mkdir abcdefg
$ cd abcdeg
abcdefg
$ cd ..

Ndisebenzisa olu khetho iminyaka emininzi kwaye kunqabile kakhulu (mhlawumbi kanye ngonyaka) yenza isigqibo esingaqhelekanga kakhulu. Kodwa ngezinye iintsuku cdspell yonga ixesha, ngokoqobo yonke imihla.

2. i-autocd

Ukuba awufuni ukwamkela ukungasebenzi kakuhle kwamangeno amaninzi cd, ngoko ungacwangcisa olu khetho ukuya ku X ulawulo ukuba X umyalelo awukho.

$ shopt -s autocd
$ abcdefg
$ cd ..

Idityaniswe nokugqibezela ngokuzenzekelayo, oku kukuvumela ukuba utsibe ngokukhawuleza phakathi kweefolda:

$ ./abc[TAB][RETURN]
cd -- ./abcdefg

Musa nje ukubiza ifolda rm -rf * (ewe, ngendlela, oku kunokwenzeka).

3.direpand

Olu lukhetho olupholileyo olwandisa iimeko eziguquguqukayo ngokucinezela iTab:

$ shopt -s direxpand
$ ./[TAB]     # замСняСтся Π½Π°...
$ /full/path/to/current_working_folder
$ ~/[TAB]     # замСняСтся Π½Π°...
$ /full/path/to/home/folder
$ $HOME/[TAB] #  замСняСтся Π½Π°...
$ /full/path/to/home/folder

Imveliso ecocekileyo

4. checkjobs

Olu khetho luyayeka ukuloga ngaphandle kweseshoni ukuba kusekho imisebenzi eqhuba ngasemva.

Endaweni yokuphuma, uluhlu lwemisebenzi engekagqitywa luyaboniswa. Ukuba usafuna ukuphuma, ngena kwakhona 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 процСсса  измСнился

Amagunya amakhulu angena endaweni yawo

5.globstar

Olu khetho lukunika endaweni yamandla amakhulu! Ukuba uyangena:

$ shopt -s globstar
$ ls **

ngoko iqokobhe lizakubonisa bonke abalawuli kunye nabalawuli abasezantsi ngokuphindaphinda.

Ngokudibanisa ne direxpand Unokujonga ngokukhawuleza yonke into esezantsi kwi-hierarchy:

$ shopt -s direxpand
$ ls **[TAB][TAB]
Display all 2033 possibilities? (y or n) 

6. extglob

Olu khetho lwenza iimpawu eziqhele ukunxulunyaniswa nentetho eqhelekileyo. Ngamanye amaxesha oku kuluncedo kakhulu:

$ shopt -s extglob
$ touch afile bfile cfile
$ ls
afile bfile cfile
$ ls ?(a*|b*)
afile bfile
$ ls !(a*|b*)
cfile

Apha iipateni zifakwe kwizibiyeli kwaye zihlulwe ngebha ethe nkqo. Naba abasebenzi abakhoyo:

? = idibanisa u-zero okanye isenzeko esinye seepateni ezinikiweyo ! = bonisa yonke into engahambelani neepateni ezinikiweyo * = zero okanye ngaphezulu izehlo + = isehlo esinye okanye ezingaphezulu @ = kanye kanye

Ukhuseleko kwingozi

7. qinisekisa

Kungoyikeka kancinci ekuqaleni ukusebenzisa imiyalelo yokuqalisa ekhawulezayo evela kwimbali yezishunqulelo !! ΠΈ !$.

Ukhetho histverify ikuvumela ukuba ubone kuqala ukuba uBash uwutolika njani umyalelo ngaphambi kokuba usebenze:

$ shopt -s histverify
$ echo !$          # <= По Π½Π°ΠΆΠ°Ρ‚ΠΈΡŽ Enter ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π΅ запускаСтся
$ echo histverify  # <= Она сначала дСмонстрируСтся Π½Π° экранС,
histverify         # <= Π° ΠΏΠΎΡ‚ΠΎΠΌ запускаСтся 

8. Noclobber

Kwakhona, ukukhusela ngokuchasene neengozi, ezizezi ukusuka ekubhaleni ngaphezulu ifayile esele ikhona kunye nomsebenzisi wokuqondisa kwakhona (>). Oku kunokuba yintlekele ukuba awunayo i-backup.

Ukhetho set -Π‘ iyakwalela ukubhala ngaphezulu okunjalo. Ukuba kuyimfuneko, unokudlula ukhuseleko usebenzisa umqhubi >|:

$ touch afile
$ set -C
$ echo something > afile
-bash: afile: cannot overwrite existing file
$ echo something >| afile
$

umthombo: www.habr.com

Yongeza izimvo