Siddeed Xulasho Bash Oo Yar Oo La Yaqaan

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 halkan ama halkan.

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 asal ahaan... Ikhtiyaarada 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

Add a comment