Ezinye izinketho ze-Bash zaziwa kakhulu futhi zivame ukusetshenziswa. Isibonelo, abantu abaningi babhala ekuqaleni kombhalo
setha -o xtrace
ukulungisa iphutha,
setha -o errexit
ukuphuma ngephutha noma
set -o erruset
ukuphuma uma okuguquguqukayo okubizwa kungasethiwe.
Kodwa kunezinye izindlela eziningi. Kwesinye isikhathi achazwa ngendlela edidayo kakhulu kumana, ngakho ngiqoqe amanye awusizo kakhulu lapha, ngencazelo.
Qaphela: Ama-Mac angase abe nenguqulo endala ye-bash (3.x kune-4.x) lapho zingatholakali zonke lezi zinketho. Kulokhu, bheka noma .
set noma shopt?
Kunezindlela ezimbili zokusetha izinketho ze-bash: kusuka kuskripthi noma kusuka kumugqa womyalo. Ungasebenzisa imiyalo eyakhelwe ngaphakathi set и shopt. Zombili zishintsha indlela igobolondo eliziphatha ngayo, zenza okufanayo (ngezimpikiswano ezihlukene), kodwa ziyehluka kuzo . Izinketho set azuzwa njengefa noma abolekwa kumapharamitha amanye amagobolondo, kuyilapho amapharamitha shopt idalwe ku-bash.
Uma ufuna ukubona izinketho zamanje, sebenzisa:
$ set -o
$ shopt Ukuze wenze kusebenze inketho ku set Kusetshenziswa i-syntax ende noma emfushane:
$ set -o errunset
$ set -eUmphumela uyafana.
Ukuze ukhubaze inketho, udinga ukubeka ukuhlanganisa esikhundleni sokususa:
$ set +eIsikhathi eside angikwazanga ukukhumbula le syntax ngoba ingqondo ibonakala ingalungile (uphawu lokususa luvumela inketho, futhi uphawu lokuhlanganisa luyikhubaza).
В shopt (anengqondo kakhulu) amafulegi asetshenziselwa ukunika amandla nokukhubaza izinketho -s (setha) kanye -u (akusethiwe):
$ shopt -s cdspell # <= on
$ shopt -u cdspell # <= offUkushintsha izinkomba
Kunezinketho ezimbalwa ezikusiza ukuthi usebenze nezinkomba.
1.cdspell
Ngalesi silungiselelo, i-bash izoqala ukuqonda ama-typos futhi izokuyisa kufolda igama layo ongapeli kahle ngalo.
$ shopt -s cdspell
$ mkdir abcdefg
$ cd abcdeg
abcdefg
$ cd .. Sekuyiminyaka eminingi ngisebenzisa le nketho futhi kuyaqabukela (mhlawumbe kanye ngonyaka) yenza isinqumo esiyinqaba kakhulu. Kodwa ngezinye izinsuku cdspell yonga isikhathi, ngokoqobo nsuku zonke.
2. i-autocd
Uma ungazimisele ukwamukela ukungasebenzi kahle kokufakwayo okuningi cd, bese ungasetha le nketho ukuze uye kufolda X uma umyalo X ungekho.
$ shopt -s autocd
$ abcdefg
$ cd ..Kuhlanganiswe nokuqedela ngokuzenzakalela, lokhu kukuvumela ukuthi weqe ngokushesha phakathi kwamafolda:
$ ./abc[TAB][RETURN]
cd -- ./abcdefg Vele ungayiqambi ifolda rm -rf * (yebo, ngendlela, lokhu kungenzeka).
3.khulisa
Lena inketho epholile enweba okuguquguqukayo kwendawo ngokucindezela u-Tab:
$ shopt -s direxpand
$ ./[TAB] # заменяется на...
$ /full/path/to/current_working_folder
$ ~/[TAB] # заменяется на...
$ /full/path/to/home/folder
$ $HOME/[TAB] # заменяется на...
$ /full/path/to/home/folderokukhiphayo okuhlanzekile
4. imisebenzi yokuhlola
Le nketho iyeka ukuphuma kuseshini uma kusenemisebenzi esebenza ngemuva.
Esikhundleni sokuphuma, uhlu lwemisebenzi engaqediwe luyavezwa. Uma usafuna ukuphuma, bese ufaka futhi 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 процесса изменилсяUkushintsha amandla amakhulu
5.globstar
Le nketho ikunikeza amandla amakhulu esikhundleni! Uma ufaka:
$ shopt -s globstar
$ ls **bese igobolondo lizobonisa zonke izinkomba kanye nemibhalo engezansi ngokuphindaphindiwe.
Ngokubambisana ne direxpand Ungakwazi ukubuka ngokushesha yonke into ephansi ohlwini lwezikhundla:
$ shopt -s direxpand
$ ls **[TAB][TAB]
Display all 2033 possibilities? (y or n) 6.extglob
Le nketho inika amandla izici ezivame ukuhlotshaniswa nezinkulumo ezivamile. Kwesinye isikhathi lokhu kuyasiza kakhulu:
$ shopt -s extglob
$ touch afile bfile cfile
$ ls
afile bfile cfile
$ ls ?(a*|b*)
afile bfile
$ ls !(a*|b*)
cfileLapha amaphethini abekwe kubakaki futhi ahlukaniswe ngebha eqondile. Nawa ama-opharetha atholakalayo:
? = ifanisa uziro noma isenzakalo esisodwa samaphethini anikeziwe ! = khombisa yonke into engahambisani namaphethini anikiwe * = Izero noma izenzeko eziningi + = isenzakalo esisodwa noma ngaphezulu @ = isenzakalo esisodwa ncamashi
Ukuvikelwa kwengozi
7. qinisekisa
Kungase kwethuse kancane ekuqaleni ukusebenzisa imiyalo yokuqalisa esheshayo evela kumlando wezifinyezo !! и !$.
Inketho histverify ikuvumela ukuthi uqale ubone ukuthi u-Bash uwuhumusha kanjani umyalo ngaphambi kokuthi usebenze:
$ shopt -s histverify
$ echo !$ # <= По нажатию Enter команда не запускается
$ echo histverify # <= Она сначала демонстрируется на экране,
histverify # <= а потом запускается 8. Noclobber
Futhi, ukuvikela ezingozini, okungukuthi ekubhaleni phezu kwefayela eselivele likhona ku-opharetha oqondisa kabusha (>). Lokhu kungaba inhlekelele uma ungenayo ikhophi yasenqolobaneni.
Inketho set -С kuvimbela ukubhala ngaphezulu okunjalo. Uma kunesidingo, ungadlula ukuvikela usebenzisa u-opharetha >|:
$ touch afile
$ set -C
$ echo something > afile
-bash: afile: cannot overwrite existing file
$ echo something >| afile
$Source: www.habr.com
