Walo ka Gamay nga Nailhan nga Bash Options

Ang pipila ka mga kapilian sa Bash nahibal-an ug kanunay nga gigamit. Pananglitan, daghang mga tawo ang nagsulat sa sinugdanan sa script

set -o xtrace

alang sa pag-debug,

set -o errexit

sa paggawas sa sayop o

set -o errunset

sa paggawas kung ang gitawag nga variable wala gitakda.

Apan adunay daghan pang mga kapilian. Usahay sila gihulagway nga makalibog kaayo sa manas, mao nga nakolekta ko ang pipila sa labing mapuslanon dinhi, nga adunay katin-awan.

Mubo nga sulat: Ang mga Mac mahimong adunay mas daan nga bersyon sa bash (3.x kay sa 4.x) diin dili tanan niini nga mga opsyon anaa. Niini nga kaso, tan-awa dinhi o dinhi.

set o shopt?

Adunay duha ka paagi sa pagtakda sa mga kapilian sa bash: gikan sa usa ka script o gikan sa command line. Mahimo nimong gamiton ang mga built-in nga mga sugo set ΠΈ shopt. Ang duha nagbag-o sa pamatasan sa kabhang, nagbuhat sa parehas nga butang (uban ang lainlaing mga argumento), apan lahi sa ilang gigikanan... Mga kapilian set napanunod o gihulam gikan sa mga parameter sa ubang mga kabhang, samtang ang mga parameter shopt gibuhat sa bash.

Kung gusto nimo makita ang karon nga mga kapilian, pagdagan:

$ set -o
$ shopt

Aron ma-activate ang opsyon sa set Ang taas o mubo nga syntax gigamit:

$ set -o errunset
$ set -e

Ang epekto parehas.

Aron ma-disable ang kapilian, kinahanglan nimo nga magbutang usa ka plus imbes nga usa ka minus:

$ set +e

Sulod sa dugay nga panahon dili nako mahinumduman kini nga syntax tungod kay ang lohika ingon og sayup (usa ka minus nga timaan makahimo sa kapilian, ug ang usa ka plus nga timaan nagpugong niini).

Π’ shopt (mas lohikal) nga mga bandera gigamit aron mahimo ug ma-disable ang mga kapilian -s (set) ug -u (wala mabutang):

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

Pag-ilis sa mga direktoryo

Adunay daghang mga kapilian nga makatabang kanimo sa pagtrabaho sa mga direktoryo.

1.cdspell

Uban niini nga setting, ang bash magsugod sa pagsabut sa mga typo ug dad-on ka sa folder kansang ngalan imong nasayop sa spelling.

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

Gigamit nako kini nga kapilian sa daghang mga tuig ug panagsa ra (tingali kausa sa usa ka tuig) naghimo kini usa ka katingad-an nga desisyon. Apan sa ubang mga adlaw cdspell makadaginot ug panahon, sa literal kada adlaw.

2. autocd

Kung dili ka andam nga modawat sa pagkadili epektibo sa daghang mga entri cd, unya mahimo nimong itakda kini nga opsyon aron mobalhin sa X folder kung wala ang X command.

$ shopt -s autocd
$ abcdefg
$ cd ..

Inubanan sa autocomplete, kini nagtugot kanimo nga dali nga molukso taliwala sa mga folder:

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

Ayaw lang hinganli ang folder rm -rf * (oo, sa paagi, posible kini).

3.direxpand

Kini usa ka cool nga kapilian nga nagpalapad sa mga variable sa palibot pinaagi sa pagpindot sa Tab:

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

limpyo nga output

4. checkjobs

Kini nga kapilian mohunong sa pag-log out sa sesyon kung adunay mga trabaho nga nagdagan sa background.

Imbis nga mogawas, usa ka lista sa wala pa nahuman nga mga buluhaton ang gipakita. Kung gusto ka pa nga mugawas, dayon pagsulod pag-usab 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 процСсса  измСнился

Pagpuli superpower

5.globstar

Kini nga opsyon naghatag kanimo ug substitution superpowers! Kung mosulod ka:

$ shopt -s globstar
$ ls **

unya ang kabhang magpakita sa tanan nga mga direktoryo ug mga subdirektoryo nga recursively.

Sa kombinasyon sa direxpand Mahimo nimong makita dayon ang tanan nga mas ubos sa hierarchy:

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

6.extglob

Kini nga opsyon makapahimo sa mga feature nga mas kasagarang nalangkit sa regular nga mga ekspresyon. Usahay kini mapuslanon kaayo:

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

Dinhi ang mga sumbanan gibutang sa parentesis ug gibulag sa usa ka bertikal nga bar. Ania ang mga magamit nga operator:

? = katumbas sa zero o usa ka panghitabo sa gihatag nga mga sumbanan! = ipakita ang tanan nga dili motakdo sa gihatag nga mga sumbanan * = sero o daghan pa nga mga panghitabo + = usa o daghang mga panghitabo @ = eksakto nga usa ka panghitabo

Proteksyon sa aksidente

7. histverify

Mahimong medyo makahadlok sa sinugdanan ang paggamit sa dali nga paglansad nga mga mando gikan sa kasaysayan sa mga minubo !! ΠΈ !$.

Kapilian histverify makita nimo una kung giunsa paghubad ni Bash ang mando sa wala pa kini modagan:

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

8. Noclobber

Pag-usab, aron mapanalipdan batok sa mga aksidente, nga mao ang pag-overwrite sa usa ka file nga anaa na sa redirect operator (>). Mahimong usa kini ka katalagman kung wala ka'y ​​backup.

Kapilian set -Π‘ nagdili sa maong overwriting. Kung gikinahanglan, mahimo nimong laktawan ang proteksyon gamit ang operator >|:

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

Source: www.habr.com

Idugang sa usa ka comment