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
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 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