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
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 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