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