Zosankha zina za Bash zimadziwika bwino ndipo zimagwiritsidwa ntchito nthawi zambiri. Mwachitsanzo, anthu ambiri amalemba kumayambiriro kwa script
set -o xtrace
za debugging,
set -o errexit
kutuluka molakwitsa kapena
set -o erruset
kutuluka ngati kusinthika kotchedwa sikunakhazikitsidwe.
Koma pali zina zambiri zimene mungachite. Nthawi zina amafotokozedwa mosokoneza kwambiri mu manas, kotero ndasonkhanitsa zina zothandiza kwambiri pano, ndikufotokozera.
Zindikirani: Macs akhoza kukhala ndi mtundu wakale wa bash (3.x osati 4.x) pomwe palibe njira zonsezi. Pankhaniyi, onani
set
kapena shopt
?
Pali njira ziwiri zokhazikitsira zosankha za bash: kuchokera pa script kapena kuchokera pamzere wolamula. Mukhoza kugwiritsa ntchito malamulo omangidwa set
ΠΈ shopt
. Onse amasintha machitidwe a chipolopolo, amachita chimodzimodzi (ndi mikangano yosiyana), koma amasiyana muzochita zawo set
amatengera kapena kubwerekedwa ku magawo a zipolopolo zina, pomwe magawo shopt
idapangidwa mu bash.
Ngati mukufuna kuwona zosankha zomwe zilipo, yesani:
$ set -o
$ shopt
Kutsegula mwayi mu set
Syntax yayitali kapena yayifupi imagwiritsidwa ntchito:
$ set -o errunset
$ set -e
Zotsatira zake ndi zofanana.
Kuti mulepheretse kusankha, muyenera kuyika chowonjezera m'malo mwa kuchotsera:
$ set +e
Kwa nthawi yayitali sindimatha kukumbukira mawuwa chifukwa malingaliro ake adawoneka ngati olakwika (chizindikiro chochotsera chimathandiza kusankha, ndipo chowonjezera chimayimitsa).
Π shopt
(zambiri zomveka) mbendera amagwiritsidwa ntchito kuyatsa ndi kuletsa zosankha -s
(set) ndi -u
(osakhazikika):
$ shopt -s cdspell # <= on
$ shopt -u cdspell # <= off
Kusintha akalozera
Pali zosankha zingapo zomwe zimakuthandizani kuti mugwire ntchito ndi akalozera.
1.cdspell
Ndi izi, bash ayamba kumvetsetsa typos ndipo adzakutengerani ku foda yomwe dzina lake mudalilemba molakwika.
$ shopt -s cdspell
$ mkdir abcdefg
$ cd abcdeg
abcdefg
$ cd ..
Ndakhala ndikugwiritsa ntchito njirayi kwa zaka zambiri ndipo kawirikawiri (mwina kamodzi pachaka) imapanga chisankho chachilendo kwambiri. Koma masiku ena cdspell
imapulumutsa nthawi, kwenikweni tsiku lililonse.
2. autocd
Ngati simukufuna kuvomereza kusachita bwino kwa zolemba zingapo cd
, ndiye mutha kukhazikitsa njira iyi kuti musunthire ku chikwatu cha X ngati X lamulo palibe.
$ shopt -s autocd
$ abcdefg
$ cd ..
Kuphatikiza ndi autocomplete, izi zimakupatsani mwayi wodumpha pakati pa zikwatu:
$ ./abc[TAB][RETURN]
cd -- ./abcdefg
Osatchula fodayo rm -rf *
(inde, mwa njira, izi ndi zotheka).
3.direpand
Iyi ndi njira yabwino yomwe imakulitsa zosinthika zachilengedwe podina Tab:
$ shopt -s direxpand
$ ./[TAB] # Π·Π°ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π°...
$ /full/path/to/current_working_folder
$ ~/[TAB] # Π·Π°ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π°...
$ /full/path/to/home/folder
$ $HOME/[TAB] # Π·Π°ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π°...
$ /full/path/to/home/folder
Kutulutsa koyera
4. cheke ntchito
Izi zimasiya kutuluka mu gawoli ngati pali ntchito zomwe zikuchitika kumbuyo.
M'malo motuluka, mndandanda wa ntchito zosamalizidwa umawonetsedwa. Ngati mukufunabe kutuluka, lowetsaninso 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 ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΡΡ
M'malo mphamvu zazikulu
5.globstar
Kusankha uku kumakupatsani mphamvu zolowa m'malo! Mukalowa:
$ shopt -s globstar
$ ls **
ndiye chipolopolocho chidzawonetsa maupangiri onse ndi ma subdirectories mobwerezabwereza.
Kuphatikiza ndi direxpand
Mutha kuwona mwachangu zonse zomwe zili pansi pazowongolera:
$ shopt -s direxpand
$ ls **[TAB][TAB]
Display all 2033 possibilities? (y or n)
6.extglob
Izi zimathandizira mawonekedwe omwe nthawi zambiri amalumikizidwa ndi mawu okhazikika. Nthawi zina izi ndizothandiza kwambiri:
$ shopt -s extglob
$ touch afile bfile cfile
$ ls
afile bfile cfile
$ ls ?(a*|b*)
afile bfile
$ ls !(a*|b*)
cfile
Apa mapangidwewo amaikidwa m'makolo ndipo amasiyanitsidwa ndi kapamwamba. Nawa othandizira omwe alipo:
? = ikufanana ndi ziro kapena kupezeka kumodzi kwamitundu yomwe yaperekedwa! = onetsani zonse zomwe sizikufanana ndi zomwe zaperekedwa * = ziro kapena zochulukirapo + = zopezeka kumodzi kapena zingapo @ = ndendende zomwe zimachitika
Chitetezo cha ngozi
7. tsimikizirani
Zingakhale zowopsya pang'ono poyamba kugwiritsa ntchito malamulo oyambitsa mwamsanga kuchokera ku mbiri yachidule !!
ΠΈ !$
.
Yankho histverify
amakulolani kuti muwone kaye momwe Bash amatanthauzira lamulolo lisanayambe:
$ shopt -s histverify
$ echo !$ # <= ΠΠΎ Π½Π°ΠΆΠ°ΡΠΈΡ Enter ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π΅ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ
$ echo histverify # <= ΠΠ½Π° ΡΠ½Π°ΡΠ°Π»Π° Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅ΡΡΡ Π½Π° ΡΠΊΡΠ°Π½Π΅,
histverify # <= Π° ΠΏΠΎΡΠΎΠΌ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ
8. Noclobber
Apanso, kuti muteteze ku ngozi, kutanthauza kuti musalembetse fayilo yomwe ilipo kale ndi wowongolera (>
). Izi zitha kukhala tsoka ngati mulibe zosunga zobwezeretsera.
Yankho set -Π‘
imaletsa kubweza motere. Ngati ndi kotheka, mutha kuzilambalala chitetezo pogwiritsa ntchito woyendetsa >|
:
$ touch afile
$ set -C
$ echo something > afile
-bash: afile: cannot overwrite existing file
$ echo something >| afile
$
Source: www.habr.com