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
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 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 -e
Umphumela uyafana.
Ukuze ukhubaze inketho, udinga ukubeka ukuhlanganisa esikhundleni sokususa:
$ set +e
Isikhathi 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 # <= off
Ukushintsha 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/folder
okukhiphayo 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*)
cfile
Lapha 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