Safidy Bash valo tsy fantatra

Ny safidy Bash sasany dia fantatra tsara ary matetika ampiasaina. Ohatra, maro ny olona manoratra eo am-piandohan'ny script

set -o xtrace

ho an'ny debugging,

hametraka -o errexit

ny fivoahana diso na

set -o errunset

hivoaka raha tsy napetraka ny fari-piainana antsoina.

Saingy misy safidy maro hafa. Indraindray izy ireo dia voafaritr'izy ireo amin'ny manas, noho izany dia nanangona ny sasany amin'ireo mahasoa indrindra aho eto, miaraka amin'ny fanazavana.

Fanamarihana: Ny Mac dia mety manana dikan-teny tranainy kokoa amin'ny bash (3.x fa tsy 4.x) izay tsy misy ireo safidy rehetra ireo. Amin'ity tranga ity, jereo eto na eto.

set na shopt?

Misy fomba roa hametrahana safidy bash: avy amin'ny script na avy amin'ny baiko baiko. Azonao atao ny mampiasa baiko naorina set и shopt. Samy manova ny fitondran-tenan'ny akorandriaka, manao zavatra mitovy (miaraka amin'ny hevitra samihafa), fa tsy mitovy amin'ny azy LASA... masontsivana set dia nolovaina na nindramina avy amin'ny mason'ny akorandriaka hafa, raha ny paramètre shopt noforonina tamin'ny bash.

Raha te-hahita ireo safidy ankehitriny ianao dia mandehana:

$ set -o
$ shopt

Mba hampavitrika ny safidy amin'ny set Ny syntax lava na fohy dia ampiasaina:

$ set -o errunset
$ set -e

Mitovy ny vokany.

Mba hanesorana ny safidy dia mila mametraka plus ianao fa tsy minus:

$ set +e

Efa hatry ny ela no tsy tadidiko io fehezanteny io satria toa diso ny lojika (famantarana minus dia mamela ny safidy, ary misy marika miampy manakana azy).

Π’ shopt Ny sainam-pirenena (lojika kokoa) dia ampiasaina mba ahafahana mamaha sy manakana ny safidy -s (set) ary -u (tsy napetraka):

$ shopt -s cdspell # <= on
$ shopt -u cdspell # <= off

Manova lahatahiry

Misy safidy maromaro manampy anao hiasa amin'ny lahatahiry.

1.cdspell

Amin'ity toe-javatra ity, ny bash dia hanomboka hahatakatra ny typos ary hitondra anao any amin'ny lahatahiry misy ny anarana diso tsipelinao.

$ shopt -s cdspell
$ mkdir abcdefg
$ cd abcdeg
abcdefg
$ cd ..

Efa an-taonany maro no nampiasa an'io safidy io aho ary tena mahalana (angamba indray mandeha isan-taona) dia mandray fanapahan-kevitra hafahafa. Fa amin'ny andro hafa cdspell mitsitsy fotoana, ara-bakiteny isan'andro.

2. autocd

Raha tsy vonona ny hanaiky ny tsy fahombiazan'ny fidirana marobe ianao cd, dia azonao atao ny mametraka ity safidy ity mba hifindra any amin'ny lahatahiry X raha tsy misy ny baiko X.

$ shopt -s autocd
$ abcdefg
$ cd ..

Miaraka amin'ny autocomplete, ahafahanao mitsambikina haingana eo anelanelan'ny lahatahiry:

$ ./abc[TAB][RETURN]
cd -- ./abcdefg

Aza omena anarana fotsiny ny lahatahiry rm -rf * (eny, raha ny marina, azo atao izany).

3.directand

Ity dia safidy mahafinaritra izay manitatra ny fari-piainan'ny tontolo iainana amin'ny fanindriana ny Tab:

$ shopt -s direxpand
$ ./[TAB]     # замСняСтся Π½Π°...
$ /full/path/to/current_working_folder
$ ~/[TAB]     # замСняСтся Π½Π°...
$ /full/path/to/home/folder
$ $HOME/[TAB] #  замСняСтся Π½Π°...
$ /full/path/to/home/folder

madio output

4. checkjobs

Ity safidy ity dia manakana ny fivoahana amin'ny session raha mbola misy asa mandeha any ambadika.

Raha tokony hivoaka, dia misy lisitry ny asa tsy vita. Raha mbola te hivoaka ianao dia midira indray 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 процСсса  измСнился

Herim-pahefan'ny fanoloana

5.globstar

Ity safidy ity dia manome hery mahery vaika ho anao! Raha miditra ianao:

$ shopt -s globstar
$ ls **

dia ny akorandriaka dia hampiseho ny lahatahiry sy ny subdirectories recursively.

Miaraka amin'ny direxpand Azonao atao ny mijery haingana ny zava-drehetra ambany kokoa amin'ny ambaratonga:

$ shopt -s direxpand
$ ls **[TAB][TAB]
Display all 2033 possibilities? (y or n) 

6.extglob

Ity safidy ity dia mamela ireo endri-javatra izay matetika mifandray amin'ny fomba fiteny mahazatra. Tena ilaina izany indraindray:

$ shopt -s extglob
$ touch afile bfile cfile
$ ls
afile bfile cfile
$ ls ?(a*|b*)
afile bfile
$ ls !(a*|b*)
cfile

Eto dia apetraka ao anaty fononteny ny lamina ary sarahin'ny bara mitsangana. Ireto ny operateurs misy:

? = mifanandrify aotra na fisehoan-javatra iray amin'ireo lamina nomena
! = asehoy izay rehetra tsy mifanaraka amin'ny lamina nomena
* = aotra na mihoatra
+ = fisehoan-javatra iray na maromaro
@ = tranga iray mihitsy

Fiarovana amin'ny loza

7. histverify

Mety hatahotra kely amin'ny voalohany ny fampiasana ny baiko fandefasana haingana avy amin'ny tantaran'ny fanafohezana !! ΠΈ !$.

Option histverify mamela anao hahita aloha ny fomba fandikana ny baiko i Bash alohan'ny handehanany:

$ shopt -s histverify
$ echo !$          # <= По Π½Π°ΠΆΠ°Ρ‚ΠΈΡŽ Enter ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π΅ запускаСтся
$ echo histverify  # <= Она сначала дСмонстрируСтся Π½Π° экранС,
histverify         # <= Π° ΠΏΠΎΡ‚ΠΎΠΌ запускаСтся 

8. Noclobber

Averina indray, mba hiarovana amin'ny lozam-pifamoivoizana, izany hoe amin'ny fanokanana rakitra efa misy miaraka amin'ny mpandraharaha redirect (>). Mety ho loza izany raha tsy manana backup ianao.

Option set -Π‘ mandrara ny overwrite toy izany. Raha ilaina, azonao atao ny mandingana ny fiarovana amin'ny fampiasana ny operator >|:

$ touch afile
$ set -C
$ echo something > afile
-bash: afile: cannot overwrite existing file
$ echo something >| afile
$

Source: www.habr.com

Add a comment