Uit Opsyon Bash ki pa konnen

Gen kèk opsyon Bash yo byen li te ye epi yo souvan itilize. Pou egzanp, anpil moun ekri nan kòmansman an nan script la

mete -o xtrace

pou debogaj,

mete -o errexit

pou sòti pa erè oswa

mete -o errunset

pou sòti si varyab rele a pa mete.

Men, gen anpil lòt opsyon. Pafwa yo dekri yo twò konfizyon nan manas, kidonk mwen te kolekte kèk nan sa yo ki pi itil isit la, ak eksplikasyon.

Remak: Mac yo ka gen yon vèsyon ki pi gran nan bash (3.x olye ke 4.x) kote se pa tout opsyon sa yo ki disponib. Nan ka sa a, gade isit la oswa isit la.

set oswa shopt?

Gen de fason yo mete opsyon bash: soti nan yon script oswa nan liy lòd la. Ou ka itilize kòmandman entegre yo set и shopt. Tou de chanje konpòtman an nan koki a, fè anpil menm bagay la (ak agiman diferan), men diferan nan yo orijin... Opsyon set yo eritye oswa prete nan paramèt nan lòt kokiy, pandan y ap paramèt shopt kreye nan bash.

Si ou vle wè opsyon aktyèl yo, kouri:

$ set -o
$ shopt

Pou aktive opsyon an nan set Sentaks long oswa kout yo itilize:

$ set -o errunset
$ set -e

Efè a se menm bagay la.

Pou enfim opsyon a, ou bezwen mete yon plis olye de yon mwens:

$ set +e

Pou yon tan long mwen pa t 'kapab sonje sentaks sa a paske lojik la te sanble mal (yon siy mwens pèmèt opsyon a, ak yon siy plis enfim li).

В shopt (plis lojik) yo itilize drapo pou pèmèt ak enfim opsyon -s (mete) ak -u (detache):

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

Chanje répertoires

Genyen plizyè opsyon ki ede w travay ak répertoires.

1.cdspell

Avèk anviwònman sa a, bash pral kòmanse konprann erè tipografi epi li pral mennen ou nan katab ki gen non ou mal òtograf la.

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

Mwen te itilize opsyon sa a pou plizyè ane ak trè raman (petèt yon fwa pa ane) li pran yon desizyon trè etranj. Men nan lòt jou cdspell ekonomize tan, literalman chak jou.

2. otocd

Si ou pa vle aksepte inefikasite nan antre miltip cd, Lè sa a, ou ka mete opsyon sa a pou avanse pou pi nan katab la X si lòd la X pa egziste.

$ shopt -s autocd
$ abcdefg
$ cd ..

Konbine avèk autocomplete, sa pèmèt ou byen vit sote ant dosye:

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

Jis pa bay non katab la rm -rf * (wi, nan chemen an, sa a se posib).

3.direxand

Sa a se yon opsyon fre ki elaji varyab anviwònman yo lè w peze Tab:

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

pwodiksyon pwòp

4. chèk travay

Opsyon sa a sispann dekonekte sesyon an si gen toujou travay k ap kouri nan background nan.

Olye pou yo sòti, yo parèt yon lis travay ki poko fini. Si ou toujou vle sòti, antre ankò 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 процесса  изменился

Gwo pwisans sibstitisyon

5.globstar

Opsyon sa a ba ou gwo pouvwa sibstitisyon! Si w antre:

$ shopt -s globstar
$ ls **

Lè sa a, koki a pral montre tout repèrtwar ak sous-répertoires recursively.

An konjonksyon avèk direxpand Ou ka byen vit wè tout bagay ki pi ba nan yerachi a:

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

6.extglob

Opsyon sa a pèmèt karakteristik ki pi souvan asosye ak ekspresyon regilye. Pafwa sa a trè itil:

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

Isit la yo mete modèl yo nan parantèz epi yo separe pa yon ba vètikal. Men operatè ki disponib yo:

? = matche zewo oswa yon sèl ensidans nan modèl yo bay yo! = montre tout bagay ki pa koresponn ak modèl yo bay yo * = zewo oswa plis ensidan + = youn oswa plis ensidan @ = egzakteman yon ensidan

Pwoteksyon aksidan

7. histverify

Li ka yon ti kras pè nan premye yo sèvi ak kòmandman yo lansman rapid nan istwa a nan abrevyasyon !! и !$.

Opsyon histverify pèmèt ou premye wè ki jan Bash entèprete kòmandman an anvan li aktyèlman kouri:

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

8. Noclobber

Yon fwa ankò, pwoteje kont aksidan, sètadi soti nan ranplase yon dosye ki deja egziste ak operatè a redireksyon (>). Sa a ka yon dezas si ou pa gen yon backup.

Opsyon set -С entèdi sou ekriti sa yo. Si sa nesesè, ou ka kontoune pwoteksyon an lè l sèvi avèk operatè a >|:

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

Sous: www.habr.com

Add nouvo kòmantè