Qaar ka mid ah doorashooyinka Bash ayaa si fiican loo yaqaan oo inta badan la isticmaalo. Tusaale ahaan, dad badan ayaa wax ku qora bilowga qoraalka
dhigay -o xtrace
sixitaanka
dejiso -o errexit
si khalad ah looga baxo ama
set -o errunset
si aad uga baxdo haddii doorsoomaha loo yaqaan aan la dejin.
Laakiin waxaa jira doorashooyin kale oo badan. Mararka qaarkood si wareer ah ayaa loogu sifeeyaa manaas, markaa waxaan halkan ku soo ururiyay qaar ka mid ah kuwa ugu faa'iidada badan, iyada oo sharraxaysa.
Fiiro gaar ah: Macs waxaa laga yaabaa inay lahaadaan nooc duug ah oo bash ah (3.x halkii ay ka ahaan lahaayeen 4.x) halkaasoo aan dhammaan xulashooyinkan la heli karin. Xaaladdan, eeg
set
ama shopt
?
Waxaa jira laba siyaabood oo loo dejiyo ikhtiyaarka bash: laga bilaabo qoraalka ama khadka taliska. Waxaad isticmaali kartaa amarrada ku dhex jira set
ΠΈ shopt
. Labaduba waxay beddelaan hab-dhaqanka qolofka, waxay sameeyaan wax badan oo isku mid ah (oo leh doodo kala duwan), laakiin way ku kala duwan yihiin set
laga dhaxlo ama laga soo amaahdo halbeegyada qolofka kale, halka cabbirada shopt
ku abuuray bash.
Haddii aad rabto inaad aragto doorashooyinka hadda, orod:
$ set -o
$ shopt
Si aad u dhaqaajiso doorashada gudaha set
Dherer ama gaaban ayaa la adeegsadaa:
$ set -o errunset
$ set -e
Saameyntu waa isku mid.
Si aad u joojiso doorashada, waxaad u baahan tahay inaad dhigto plus halkii aad ka jari lahayd:
$ set +e
Muddo dheer maan xasuusan karin ereygan sababtoo ah caqligu wuxuu u muuqday mid khaldan (calaamad laga jaray ayaa awood u siinaysa ikhtiyaarka, iyo calaamadda dheeriga ah waxay joojinaysaa).
Π shopt
calamada (macquul badan) ayaa loo adeegsadaa si loo suurtogeliyo loona joojiyo ikhtiyaarada -s
(set) iyo -u
(aan dejin):
$ shopt -s cdspell # <= on
$ shopt -u cdspell # <= off
Beddelka hagaha
Waxaa jira dhowr ikhtiyaar oo kaa caawinaya inaad la shaqeyso hagaha.
1.cdspell
Dejintan, bash wuxuu bilaabi doonaa inuu fahmo qoraalada oo wuxuu ku geyn doonaa galka aad magaciisa khaldantay.
$ shopt -s cdspell
$ mkdir abcdefg
$ cd abcdeg
abcdefg
$ cd ..
Waxa aan isticmaalayay doorashadan sanado badan oo aad dhif u ah (laga yaabee hal mar sanadkii) waxa ay samayso go'aan aad u yaab badan. Laakiin maalmo kale cdspell
waqti badbaadiya, macno ahaan maalin kasta.
2. autocd
Haddii aadan rabin inaad aqbasho waxtar la'aanta wax-soo-saarka badan cd
, markaa waxaad dejin kartaa ikhtiyaarkan si aad ugu guurto gal X haddii amarka X uusan jirin.
$ shopt -s autocd
$ abcdefg
$ cd ..
Marka lagu daro autocomplete, tani waxay kuu ogolaaneysaa inaad si dhakhso leh uga dhex boodo faylalka:
$ ./abc[TAB][RETURN]
cd -- ./abcdefg
Kaliya ha magacaabin galka rm -rf *
(haa, jid ahaan, tani waa suurtagal).
3.Diirar baladhan
Tani waa ikhtiyaar fiican oo ballaarisa doorsoomayaasha deegaanka adigoo riixaya Tab:
$ shopt -s direxpand
$ ./[TAB] # Π·Π°ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π°...
$ /full/path/to/current_working_folder
$ ~/[TAB] # Π·Π°ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π°...
$ /full/path/to/home/folder
$ $HOME/[TAB] # Π·Π°ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π°...
$ /full/path/to/home/folder
wax soo saar nadiif ah
4. hubinta shaqada
Doorashadani waxay joojinaysaa ka bixida fadhiga haddii ay jiraan shaqooyin xagga dambe ka socda.
Halkii laga bixi lahaa, liis hawlo aan dhammayn ayaa la soo bandhigayaa. Haddii aad weli rabto inaad baxdo, ka dibna geli mar kale 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 ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΡΡ
Bedelida awoodaha waaweyn
5.globstar
Doorashadani waxay ku siinaysaa beddelka awoodaha waaweyn! Haddii aad gasho:
$ shopt -s globstar
$ ls **
markaas qolofku wuxuu tusi doonaa dhammaan hagayaasha iyo haga-hoosaadyada si isdaba joog ah.
In lagu daro direxpand
Waxaad si dhakhso ah u arki kartaa wax kasta oo ka hooseeya kala sareynta:
$ shopt -s direxpand
$ ls **[TAB][TAB]
Display all 2033 possibilities? (y or n)
6.extglob
Doorashadani waxay awood siinaysaa sifooyin inta badan la xidhiidha tibaaxaha caadiga ah. Mararka qaarkood tani aad bay faa'iido u leedahay:
$ shopt -s extglob
$ touch afile bfile cfile
$ ls
afile bfile cfile
$ ls ?(a*|b*)
afile bfile
$ ls !(a*|b*)
cfile
Halkan qaababka waxaa lagu dhejiyaa jaantusyo waxaana lagu kala saaraa baal toosan. Waa kuwan hawlwadeenada la heli karo:
? = waa eber ama hal dhacdo oo ka mid ah qaababka la bixiyay! = tus wax kasta oo aan ku habboonayn qaababka la bixiyay * = eber ama dhacdooyin badan + = hal ama dhowr dhacdo @ = hal dhacdo oo sax ah
Ilaalinta shilalka
7. hubso
Waxay noqon kartaa wax yar oo cabsi ah marka hore in la isticmaalo amarrada bilaabista degdega ah ee taariikhda soo gaabinta !!
ΠΈ !$
.
Ikhtiyaar histverify
wuxuu kuu ogolaanayaa inaad marka hore aragto sida Bash u fasiro amarka ka hor inta uusan dhab ahaantii socon:
$ shopt -s histverify
$ echo !$ # <= ΠΠΎ Π½Π°ΠΆΠ°ΡΠΈΡ Enter ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π΅ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ
$ echo histverify # <= ΠΠ½Π° ΡΠ½Π°ΡΠ°Π»Π° Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅ΡΡΡ Π½Π° ΡΠΊΡΠ°Π½Π΅,
histverify # <= Π° ΠΏΠΎΡΠΎΠΌ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ
8. Noclobber
Mar labaad, si aad isaga ilaaliso shilalka, taas oo ah in laga beddelo fayl horay u jiray hawlwadeenka wareejinta>
). Tani waxay noqon kartaa masiibo haddii aadan haysan kayd.
Ikhtiyaar set -Π‘
waxay mamnuucaysaa qoraalkan oo kale. Haddii loo baahdo, waxaad ka gudbi kartaa ilaalinta adoo isticmaalaya hawlwadeenka >|
:
$ touch afile
$ set -C
$ echo something > afile
-bash: afile: cannot overwrite existing file
$ echo something >| afile
$
Source: www.habr.com