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

Thenga ukusingathwa okuthembekile kwamasayithi anokuvikelwa kwe-DDoS, amaseva e-VPS VDS 🔥 Thenga ukusingathwa kwewebhusayithi okuthembekile ngokuvikelwa kwe-DDoS, amaseva e-VPS VDS | ProHoster