ʻEwalu mau koho Bash liʻiliʻi

ʻIke maikaʻi ʻia kekahi mau koho Bash a hoʻohana pinepine ʻia. Eia kekahi laʻana, nui ka poʻe e kākau i ka hoʻomaka o ka palapala

hoʻonoho -o xtrace

no ka hoʻopau ʻana,

hoʻonohonoho -o errexit

i waho me ke kuhihewa paha

hoʻonohonoho -o errunset

e haʻalele inā ʻaʻole i hoʻonohonoho ʻia ka hoʻololi i kapa ʻia.

Akā he nui nā koho ʻē aʻe. I kekahi manawa ua hoʻohālikelike ʻia lākou ma ka manas, no laila ua hōʻiliʻili wau i kekahi o nā mea pono loa ma aneʻi, me ka wehewehe ʻana.

Nānā: Loaʻa paha i nā Mac kahi mana kahiko o bash (3.x ma mua o 4.x) kahi i loaʻa ʻole ai kēia mau koho āpau. Ma keia hihia, e nana maanei ai ole ia, maanei.

set ai ole ia, shopt?

ʻElua ala e hoʻonohonoho ai i nā koho bash: mai kahi palapala a mai ka laina kauoha. Hiki iā ʻoe ke hoʻohana i nā kauoha i kūkulu ʻia set и shopt. Hoʻololi nā mea ʻelua i ke ʻano o ka pūpū, hana i ka mea like (me nā manaʻo like ʻole), akā ʻokoʻa i kā lākou kumu. Nā koho set hoʻoili ʻia a ʻaiʻē ʻia mai nā ʻāpana o nā pūpū ʻē aʻe, ʻoiai nā ʻāpana shopt hana ʻia ma ka bash.

Inā makemake ʻoe e ʻike i nā koho o kēia manawa, holo:

$ set -o
$ shopt

E ho'ā i ke koho ma set Hoʻohana ʻia ka syntax lōʻihi a pōkole paha:

$ set -o errunset
$ set -e

Ua like ka hopena.

No ka hoʻopau ʻana i ke koho, pono ʻoe e kau i kahi hoʻohui ma kahi o kahi minus:

$ set +e

No ka manawa lōʻihi ʻaʻole hiki iaʻu ke hoʻomanaʻo i kēia syntax no ka mea ua hewa ka loiloi (kahi hōʻailona hōʻemi e hiki ai ke koho, a hoʻopaʻa ʻia kahi hōʻailona hoʻohui).

В shopt (ʻoi aku ka loiloi) hoʻohana ʻia nā hae e hiki ai a hoʻopau i nā koho -s (hoʻonoho) a -u (ʻaʻole hoʻonohonoho):

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

Ke hoʻololi nei i nā papa kuhikuhi

Nui nā koho e kōkua iā ʻoe e hana me nā papa kuhikuhi.

1.cdspell

Me kēia hoʻonohonoho, hoʻomaka ka bash e hoʻomaopopo i nā typos a lawe iā ʻoe i ka waihona nona ka inoa āu i kuhi hewa ai.

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

Ua hoʻohana au i kēia koho no nā makahiki he nui a ʻaʻole loa (hiki i hoʻokahi manawa i ka makahiki) hana ia i kahi hoʻoholo ʻano ʻē. Akā i nā lā ʻē aʻe cdspell mālama i ka manawa, maoli i kēlā me kēia lā.

2. autocd

Inā ʻaʻole ʻoe makemake e ʻae i ka maikaʻi ʻole o nā helu he nui cd, a laila hiki iā ʻoe ke hoʻonohonoho i kēia koho e neʻe i ka waihona X inā ʻaʻole i loaʻa ke kauoha X.

$ shopt -s autocd
$ abcdefg
$ cd ..

Hoʻohui ʻia me ka autocomplete, hiki iā ʻoe ke lele wikiwiki ma waena o nā waihona:

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

Mai inoa wale i ka waihona rm -rf * (ʻae, ma ke ala, hiki kēia).

3.direxpand

He koho maikaʻi kēia e hoʻonui i nā ʻano hoʻololi kaiapuni ma ke kaomi ʻana i ka Tab:

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

Hoʻopuka maʻemaʻe

4. nā hana nānā

Hoʻopau kēia koho i ka haʻalele ʻana i waho o ke kau inā he mau hana e holo ana ma hope.

Ma kahi o ka puka ʻana, hōʻike ʻia kahi papa inoa o nā hana i pau ʻole. Inā makemake ʻoe e haʻalele, a laila e komo hou 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 процесса  изменился

Nā mana nui hoʻololi

5.hoku honua

Hāʻawi kēia koho iā ʻoe i nā mana supersubstitution! Inā ʻoe e komo:

$ shopt -s globstar
$ ls **

a laila e hōʻike hou ka shell i nā papa kuhikuhi a me nā subdirectories.

Ma ka hui pu me direxpand Hiki iā ʻoe ke nānā wikiwiki i nā mea āpau ma ka hierarchy:

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

6.extglob

Hāʻawi kēia koho i nā hiʻohiʻona i pili pinepine me nā ʻōlelo maʻamau. I kekahi manawa he mea pono loa kēia:

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

Ma ʻaneʻi ua hoʻokomo ʻia nā hiʻohiʻona i loko o nā pale a hoʻokaʻawale ʻia e kahi pahu kūpaʻa. Eia nā mea hoʻohana i loaʻa:

? = pili i ka zero a i ʻole hoʻokahi hanana o nā mamana i hāʻawi ʻia
! = hōʻike i nā mea āpau ʻaʻole i kūlike i nā kumu i hāʻawi ʻia
* = ʻaʻole a ʻoi aku paha nā hanana
+ = hoʻokahi a ʻoi aku paha nā hanana
@ = hoʻokahi wale nō hanana

Palekana ulia

7. hōʻoia hōʻoia

Hiki ke hoʻoweliweli iki i ka hoʻohana ʻana i nā kauoha hoʻomaka wikiwiki mai ka mōʻaukala o nā pōkole !! и !$.

Koho histverify hiki iā ʻoe ke ʻike mua i ka wehewehe ʻana o Bash i ke kauoha ma mua o ka holo maoli ʻana:

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

8. Noclobber

Eia hou, no ka pale ʻana i nā pōʻino, ʻo ia hoʻi mai ke kākau ʻana i kahi faila i loaʻa i mua me ka mea hoʻokele redirect (>). He pōʻino paha kēia inā ʻaʻohe āu waihona.

Koho set -С pāpā ʻia ke kākau hou ʻana. Inā pono, hiki iā ʻoe ke kāpae i ka pale me ka hoʻohana ʻana i ka mea hoʻohana >|:

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

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka