Izinketho Eziyisishiyagalombili Ezaziwa Kancane Ze-Bash

Ezinye izinketho ze-Bash zaziwa kakhulu futhi zivame ukusetshenziswa. Isibonelo, abantu abaningi babhala ekuqaleni kombhalo

setha -o xtrace

ukulungisa iphutha,

setha -o errexit

ukuphuma ngephutha noma

set -o erruset

ukuphuma uma okuguquguqukayo okubizwa kungasethiwe.

Kodwa kunezinye izindlela eziningi. Kwesinye isikhathi achazwa ngendlela edidayo kakhulu kumana, ngakho ngiqoqe amanye awusizo kakhulu lapha, ngencazelo.

Qaphela: Ama-Mac angase abe nenguqulo endala ye-bash (3.x kune-4.x) lapho zingatholakali zonke lezi zinketho. Kulokhu, bheka lapha noma lapha.

set noma shopt?

Kunezindlela ezimbili zokusetha izinketho ze-bash: kusuka kuskripthi noma kusuka kumugqa womyalo. Ungasebenzisa imiyalo eyakhelwe ngaphakathi set ΠΈ shopt. Zombili zishintsha indlela igobolondo eliziphatha ngayo, zenza okufanayo (ngezimpikiswano ezihlukene), kodwa ziyehluka kuzo umsuka. Izinketho set azuzwa njengefa noma abolekwa kumapharamitha amanye amagobolondo, kuyilapho amapharamitha shopt idalwe ku-bash.

Uma ufuna ukubona izinketho zamanje, sebenzisa:

$ set -o
$ shopt

Ukuze wenze kusebenze inketho ku set Kusetshenziswa i-syntax ende noma emfushane:

$ set -o errunset
$ set -e

Umphumela uyafana.

Ukuze ukhubaze inketho, udinga ukubeka ukuhlanganisa esikhundleni sokususa:

$ set +e

Isikhathi eside angikwazanga ukukhumbula le syntax ngoba ingqondo ibonakala ingalungile (uphawu lokususa luvumela inketho, futhi uphawu lokuhlanganisa luyikhubaza).

Π’ shopt (anengqondo kakhulu) amafulegi asetshenziselwa ukunika amandla nokukhubaza izinketho -s (setha) kanye -u (akusethiwe):

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

Ukushintsha izinkomba

Kunezinketho ezimbalwa ezikusiza ukuthi usebenze nezinkomba.

1.cdspell

Ngalesi silungiselelo, i-bash izoqala ukuqonda ama-typos futhi izokuyisa kufolda igama layo ongapeli kahle ngalo.

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

Sekuyiminyaka eminingi ngisebenzisa le nketho futhi kuyaqabukela (mhlawumbe kanye ngonyaka) yenza isinqumo esiyinqaba kakhulu. Kodwa ngezinye izinsuku cdspell yonga isikhathi, ngokoqobo nsuku zonke.

2. i-autocd

Uma ungazimisele ukwamukela ukungasebenzi kahle kokufakwayo okuningi cd, bese ungasetha le nketho ukuze uye kufolda X uma umyalo X ungekho.

$ shopt -s autocd
$ abcdefg
$ cd ..

Kuhlanganiswe nokuqedela ngokuzenzakalela, lokhu kukuvumela ukuthi weqe ngokushesha phakathi kwamafolda:

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

Vele ungayiqambi ifolda rm -rf * (yebo, ngendlela, lokhu kungenzeka).

3.khulisa

Lena inketho epholile enweba okuguquguqukayo kwendawo ngokucindezela u-Tab:

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

okukhiphayo okuhlanzekile

4. imisebenzi yokuhlola

Le nketho iyeka ukuphuma kuseshini uma kusenemisebenzi esebenza ngemuva.

Esikhundleni sokuphuma, uhlu lwemisebenzi engaqediwe luyavezwa. Uma usafuna ukuphuma, bese ufaka futhi 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 процСсса  измСнился

Ukushintsha amandla amakhulu

5.globstar

Le nketho ikunikeza amandla amakhulu esikhundleni! Uma ufaka:

$ shopt -s globstar
$ ls **

bese igobolondo lizobonisa zonke izinkomba kanye nemibhalo engezansi ngokuphindaphindiwe.

Ngokubambisana ne direxpand Ungakwazi ukubuka ngokushesha yonke into ephansi ohlwini lwezikhundla:

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

6.extglob

Le nketho inika amandla izici ezivame ukuhlotshaniswa nezinkulumo ezivamile. Kwesinye isikhathi lokhu kuyasiza kakhulu:

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

Lapha amaphethini abekwe kubakaki futhi ahlukaniswe ngebha eqondile. Nawa ama-opharetha atholakalayo:

? = ifanisa uziro noma isenzakalo esisodwa samaphethini anikeziwe
! = khombisa yonke into engahambisani namaphethini anikiwe
* = Izero noma izenzeko eziningi
+ = isenzakalo esisodwa noma ngaphezulu
@ = isenzakalo esisodwa ncamashi

Ukuvikelwa kwengozi

7. qinisekisa

Kungase kwethuse kancane ekuqaleni ukusebenzisa imiyalo yokuqalisa esheshayo evela kumlando wezifinyezo !! ΠΈ !$.

Inketho histverify ikuvumela ukuthi uqale ubone ukuthi u-Bash uwuhumusha kanjani umyalo ngaphambi kokuthi usebenze:

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

8. Noclobber

Futhi, ukuvikela ezingozini, okungukuthi ekubhaleni phezu kwefayela eselivele likhona ku-opharetha oqondisa kabusha (>). Lokhu kungaba inhlekelele uma ungenayo ikhophi yasenqolobaneni.

Inketho set -Π‘ kuvimbela ukubhala ngaphezulu okunjalo. Uma kunesidingo, ungadlula ukuvikela usebenzisa u-opharetha >|:

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

Source: www.habr.com

Engeza amazwana