Nhọrọ bash asatọ amachaghị

Ụfọdụ nhọrọ Bash mara nke ọma ma na-ejikarị ya eme ihe. Dịka ọmụmaatụ, ọtụtụ ndị na-ede na mmalite nke edemede

set-o xtrace

maka debugging,

set-o errexit

ịpụ n'amaghị ama ma ọ bụ

set-o errunset

ịpụ apụ ma ọ bụrụ na edobeghi mgbanwe a na-akpọ.

Ma enwere ọtụtụ nhọrọ ndị ọzọ. Mgbe ụfọdụ, a na-akọwa ha nke ukwuu na manas, yabụ anakọtara m ụfọdụ ndị bara uru ebe a, yana nkọwa.

Mara: Macs nwere ike ịnwe ụdị bash ochie (3.x karịa 4.x) ebe ọ bụghị nhọrọ ndị a niile dị. N'okwu a, hụ ebe a ma ọ bụ ebe a.

set ma ọ bụ shopt?

Enwere ụzọ abụọ iji tọọ nhọrọ bash: site na edemede ma ọ bụ site na ahịrị iwu. Ị nwere ike iji iwu arụnyere set и shopt. Ha abụọ na-agbanwe omume nke shei ahụ, na-eme otu ihe ahụ (na arụmụka dị iche iche), ma dị iche na ha mmalite. Nhọrọ set a na-eketa ma ọ bụ gbaziri site na paramita nke shells ndị ọzọ, mgbe paramita shopt kere na bash.

Ọ bụrụ na ịchọrọ ịhụ nhọrọ dị ugbu a, gbaa ọsọ:

$ set -o
$ shopt

Ka ịgbalite nhọrọ n'ime set A na-eji syntax ogologo ma ọ bụ mkpụmkpụ:

$ set -o errunset
$ set -e

Mmetụta bụ otu ihe ahụ.

Iji gbanyụọ nhọrọ ahụ, ịkwesịrị itinye mgbakwunye kama mwepu:

$ set +e

Ruo ogologo oge enweghị m ike icheta syntax a n'ihi na mgbagha ahụ yiri ihe na-ezighi ezi (akara mwepu na-enyere nhọrọ ahụ aka, akara mgbakwunye na-ewepụ ya).

В shopt A na-eji ọkọlọtọ (nke ezi uche dị na ya) iji mee ma gbanyụọ nhọrọ -s (set) na -u (Edabere):

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

Na-agbanwe akwụkwọ ndekọ aha

Enwere ọtụtụ nhọrọ na-enyere gị aka ịrụ ọrụ na akwụkwọ ndekọ aha.

1.cdspell

Site na ntọala a, bash ga-amalite ịghọta typos ma kpọga gị na folda nke ị defuru aha ya.

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

M na-eji nke a nhọrọ ruo ọtụtụ afọ na nnọọ adịkarịghị (ikekwe otu ugboro n'afọ) ọ na-eme a nnọọ iju mkpebi. Ma n'ụbọchị ndị ọzọ cdspell na-azọpụta oge, n'ezie kwa ụbọchị.

2. autocd

Ọ bụrụ na ị chọghị ịnakwere adịghị arụ ọrụ nke ọtụtụ ndenye cd, mgbe ahụ ị nwere ike ịtọ nhọrọ a ịkwaga na nchekwa X ma ọ bụrụ na iwu X adịghị.

$ shopt -s autocd
$ abcdefg
$ cd ..

Ejikọtara ya na autocomplete, nke a na-enye gị ohere ima elu ngwa ngwa n'etiti folda:

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

Naanị ahaghị folda ahụ rm -rf * (ee, n'ụzọ, nke a ga-ekwe omume).

3.diri gbasaa

Nke a bụ nhọrọ dị mma nke na-agbasa mgbanwe gburugburu ebe obibi site na ịpị Tab:

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

Mwepụta dị ọcha

4. nlele ọrụ

Nhọrọ a na-akwụsị ịpụ na nnọkọ ma ọ bụrụ na a ka nwere ọrụ na-agba ọsọ na ndabere.

Kama ịpụ, a na-egosipụta ndepụta nke ọrụ emechabeghị. Ọ bụrụ na ị ka chọrọ ịpụ, wee banye ọzọ 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 процесса  изменился

Dochie ndị dike

5.globstar

Nhọrọ a na-enye gị ike nnọchi anya! Ọ bụrụ na ị banye:

$ shopt -s globstar
$ ls **

mgbe ahụ shei ga-egosi akwụkwọ ndekọ aha na subdirectories niile recursively.

Na njikọ na direxpand Ị nwere ike ilele ihe niile dị ala na ndị isi ngwa ngwa:

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

6.extglob

Nhọrọ a na-enyere aka njirimara ndị na-ejikọta ya na okwu oge niile. Mgbe ụfọdụ, nke a bara ezigbo uru:

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

N'ebe a, a na-edobe ụkpụrụ ndị ahụ na mbike ma kewapụ ya site na ogwe kwụ ọtọ. Nke a bụ ndị ọrụ dịnụ:

? = dakọtara efu ma ọ bụ otu ihe omume nke ụkpụrụ enyere! = gosi ihe ọ bụla na-adakọghị ụkpụrụ enyere * = efu ma ọ bụ karịa ihe omume + = otu ma ọ bụ karịa ihe mere @ = kpọmkwem otu ihe mere.

Nchedo ihe mberede

7. histverify

Ọ nwere ike ịbụ ntakịrị egwu na mbụ iji iwu mmalite ngwa ngwa sitere na akụkọ nke mbiri !! и !$.

Nhọrọ histverify na-ahapụ gị ka ị buru ụzọ hụ ka Bash si akọwa iwu ahụ tupu ọ na-agba ọsọ:

$ shopt -s histverify
$ echo !$          # <= По нажатию Enter команда не запускается
$ echo histverify  # <= Она сначала демонстрируется на экране,
histverify         # <= а потом запускается 

8. Noclobber

Ọzọ, iji chebe megide ihe mberede, ya bụ site na idegharị faịlụ nke dịbu na onye ọrụ redirect (>). Nke a nwere ike ịbụ ọdachi ma ọ bụrụ na ịnweghị nkwado ndabere.

Nhọrọ set -С machibido idegharị ihe dị otú ahụ. Ọ bụrụ na ọ dị mkpa, ịnwere ike ịgafe nchebe site na iji onye ọrụ >|:

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

isi: www.habr.com

Tinye a comment