Zosankha Zisanu Zodziwika Za Bash

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 apa kapena apa.

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 chiyambi. Zosankha 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

Kuwonjezera ndemanga