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
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 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