E waru nga whiringa Bash iti-mohiotia

Ko etahi o nga whiringa Bash e tino mohiotia ana, e whakamahia ana. Hei tauira, he maha nga tangata e tuhi ana i te timatanga o te tuhinga

tautuhi -o xtrace

mo te patuiro,

whakaturia -o errexit

ki te puta pohehe ranei

huinga -o errunset

ki te puta ki te kore te taurangi ka karangahia i te tautuhi.

Engari he maha atu nga whiringa. I etahi wa ka tino poauau te korero i roto i nga mana, no reira kua kohia e au etahi o nga mea tino whaihua ki konei, me te whakamarama.

Tuhipoka: He putanga tawhito o te bash a Macs (3.x kaua ki te 4.x) kaore i te waatea enei whiringa katoa. I tenei take, tirohia konei ranei konei.

set ranei shopt?

E rua nga huarahi hei whakarite i nga whiringa bash: mai i te tuhinga, mai i te raina whakahau ranei. Ka taea e koe te whakamahi i nga whakahau whakauru set и shopt. Ka huri nga mea e rua i te whanonga o te anga, he rite tonu te mahi (he rereke nga tautohetohe), engari he rereke i o raatau takenga... Kōwhiringa set he mea tuku iho, he nama ranei mai i nga tawhā o etahi atu anga, ko nga tawhā shopt hanga i roto i te bash.

Ki te hiahia koe ki te kite i nga whiringa o naianei, whakahaere:

$ set -o
$ shopt

Hei whakahohe i te kōwhiringa i roto i set Ka whakamahia te wetereo roa, poto ranei:

$ set -o errunset
$ set -e

He rite tonu te paanga.

Hei whakakore i te whiringa, me whakauru he taapiri hei utu mo te tango:

$ set +e

Mo te wa roa kare au e mahara ki tenei wetereo na te mea he he te arorau (ma te tohu iti ka taea te kowhiringa, ka whakakorehia e te tohu taapiri).

В shopt (he arorau ake) ka whakamahia nga haki hei whakahohe me te whakakore i nga whiringa -s (whakatakotoria) me -u (kaore i tautuhia):

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

Te huri i nga whaiaronga

He maha nga whiringa hei awhina i a koe ki te mahi me nga whaiaronga.

1.cdspell

Ma tenei tautuhinga, ka timata te bash ki te mohio ki nga hapa, ka kawea koe ki te kōpaki i pohehe koe i te ingoa.

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

He maha nga tau e whakamahi ana ahau i tenei whiringa me te onge (he kotahi pea i te tau) he tino rerekee te whakatau. Engari i etahi atu ra cdspell whakaora wa, mooni ia ra.

2. autocd

Mena kaore koe e pai ki te whakaae ki te koretake o nga whakaurunga maha cd, ka taea e koe te whakarite i tenei whiringa ki te neke ki te kōpaki X mena karekau te whakahau X.

$ shopt -s autocd
$ abcdefg
$ cd ..

Ka honoa me te whakaoti aunoa, ka taea e koe te peke tere i waenga i nga kōpaki:

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

Kaua e whakaingoatia te kōpaki rm -rf * (ae, ma te ara, ka taea tenei).

3.whakawhanui

He kōwhiringa hauhautanga tēnei e whakawhānui ana i ngā taurangi taiao mā te pēhi i te Ripa:

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

putanga ma

4. mahi taki

Ka mutu tenei kowhiringa ki te takiuru ki waho o te wahanga mena kei te haere tonu nga mahi kei muri.

Engari kaua e puta, ka whakaatuhia he rarangi o nga mahi kaore ano kia oti. Mena kei te pirangi tonu koe ki te puta, tomo ano 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 процесса  изменился

Nga mana kaha whakakapi

5.wheturangi

Ma tenei whiringa ka whakawhiwhia koe ki nga mana kaha whakakapi! Mena ka uru koe:

$ shopt -s globstar
$ ls **

katahi ka whakaatu te anga i nga whaiaronga me nga raarangiroto katoa.

I roto i te huinga direxpand Ka taea e koe te tiro tere i nga mea katoa i raro iho i te hierarchy:

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

6.extglob

Ma tenei kowhiringa ka taea nga ahuatanga e hono ana ki nga kii auau. I etahi wa ka tino whai hua tenei:

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

I konei ka tuuhia nga tauira ki roto i te reu ka wehea e te pae poutū. Anei nga kaiwhakahaere e waatea ana:

? = ka rite ki te kore, kotahi te putanga o nga tauira kua homai! = whakaatu i nga mea katoa karekau e taurite ki nga tauira kua homai * = kore, nui ake ranei nga takanga + = kotahi, neke atu ranei nga takanga @ = kotahi tonu te takanga

Te parenga aituā

7. manatoko

He iti te wehi i te tuatahi ki te whakamahi i nga whakahau whakarewa tere mai i te hitori o nga whakapoto !! и !$.

Kōwhiringa histverify kia kite tuatahi koe me pehea te whakamaoritanga a Bash i te whakahau i mua i te mahi:

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

8. Noclobber

Ano, hei whakamarumaru i nga aitua, ara mai i te tuhirua i tetahi konae kei te noho tonu me te kaiwhakahaere anga (>). Ka raru pea tenei mena karekau he taapiri.

Kōwhiringa set -С ka aukati i taua tuhirua. Mena e tika ana, ka taea e koe te karo i te whakamarumaru ma te whakamahi i te kaiwhakahaere >|:

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

Source: will.com

Tāpiri i te kōrero