Sh - Linux amri - Unix Amri

NAME

bash - GNU Bourne-Tangaza tena

SYNOPSIS

bash [chaguzi] [faili]

DESCRIPTION

Bash ni mkalimani wa lugha ya amri sh- sambamba inayotumia amri zilizosomwa kutoka kwa pembejeo ya kawaida au kutoka kwa faili. Bash pia inajumuisha vipengele muhimu kutoka kwa makombora ya Korn na C ( ksh na csh ).

Bash inalenga kuwa utekelezaji wa kufuatilia kwa IEEE Shell na Shell Tools (IEEE Working Group 1003.2).

OPTIONS

Mbali na chaguo moja za makundi ya tabia ambazo zimeandikwa katika maelezo ya amri iliyowekwa kujengwa, bash inatafanua chaguzi zifuatazo wakati inapotakiwa:

-c kamba

Ikiwa -a chaguo iko, basi amri zinasomwa kwenye kamba . Ikiwa kuna hoja baada ya kamba , zinawekwa kwa vigezo vya mpito, kuanzia na $ 0 .

-i

Ikiwa -a chaguo iko, shell inaingiliana .

-l

Fanya bash kufanya kama ilichukuliwa kama shell ya kuingia (angalia INVOCATION hapa chini).

-r

Ikiwa -r chaguo lipo, shell inakuwa vikwazo (angalia SHELL iliyohifadhiwa chini).

-s

Ikiwa chaguo-- sipo , au ikiwa hakuna hoja zinazobakia baada ya usindikaji wa chaguo, basi amri zinasomewa kutoka kwa pembejeo ya kawaida. Chaguo hili inaruhusu vigezo vya mpangilio kuweka wakati wa kushawishi shell shell.

-D

Orodha ya masharti yote yaliyotajwa mara mbili yaliyotanguliwa na $ imechapishwa kwenye ouput ya kawaida. Hizi ni masharti ambayo yana chini ya tafsiri ya lugha wakati eneo la sasa haliko C au POSIX . Hii ina maana ya -n chaguo; hakuna amri itafanywa.

[- +] O [ shopt_option ]

chaguo-chaguo ni mojawapo ya chaguo la shell ambazo zinakubalika na kujengwa kwa haraka (angalia SHELL BUILTIN COMMANDS hapa chini). Ikiwa ufupi_upo ulipo, -O huweka thamani ya chaguo hilo; + O unsets yake. Ikiwa ufupisho mkali haujafanywa , majina na maadili ya chaguo la shell ambavyo hukubalika kwa kuchapishwa huchapishwa kwenye pato la kawaida. Ikiwa chaguo la kuomba ni O , pato huonyeshwa katika muundo ambao unaweza kutumika tena kama pembejeo.

A - ishara mwisho wa chaguzi na inaleta usindikaji zaidi chaguo. Majadiliano yoyote baada ya - yanatendewa kama majina na majina. Hoja ya - ni sawa na - .

Bash pia inatafsiri chaguo nyingi za tabia. Chaguzi hizi zinapaswa kuonekana kwenye mstari wa amri kabla ya chaguo moja ya tabia ya kutambuliwa.

- dumb-po-strings

Inalingana na -D , lakini pato iko kwenye fomu ya faili ya GNU gettext po (portable object).

- masharti

Inalingana na -D .

--help

Onyesha ujumbe wa matumizi kwenye pato la kawaida na uondoke kwa ufanisi.

faili ya faili

faili ya --rcfile

Fanya amri kutoka kwa faili badala ya faili ya kawaida ya awali ya kuanzisha ~ / .bashrc ikiwa shell inaingiliana (angalia INVOCATION hapa chini).

--Ingia

Inalingana na -l .

- kutangaza

Usitumie maktaba ya usomaji wa GNU kusoma mistari ya amri wakati shell inaingiliana.

- noprofile

Usisome ama faili ya kuanzisha mfumo / nk / wasifu au faili yoyote ya uanzishaji ~ / .bash_profile , ~ / .bash_login , au ~ / .profile . Kwa default, bash inasomea faili hizi wakati inapotakiwa kama shell ya kuingia (angalia INVOCATION hapa chini).

- si

Usisome na kutekeleza faili ya awali ya uanzishaji ~ / .bashrc ikiwa shell inaingiliana. Chaguo hili linapatikana kwa default ikiwa shell inatakiwa kama sh .

- posta

Badilisha tabia ya bash ambapo operesheni ya kutofautiana inatofautiana na kiwango cha POSIX 1003.2 ili kufanana na hali ya kawaida ( mode ya posix ).

- imezuiliwa

Kichwa kinakuwa kizuizi (angalia SHELL iliyohifadhiwa chini).

-rpm-inahitaji

Kuzalisha orodha ya faili zinazohitajika kwa script ya kukimbia. Hii inamaanisha '-n' na inakabiliwa na mapungufu sawa na kukusanya kosa la wakati kuangalia ukaguzi; Backticks, [] vipimo, na evals hazizingatiwe hivyo baadhi ya tegemezi zinaweza kukosa. - tobose sawa na -v .

upungufu

Onyesha maelezo ya toleo kwa mfano huu wa bash kwenye pato la kawaida na uondoke kwa ufanisi.

MASHARIKI

Ikiwa hoja zinabakia baada ya usindikaji wa chaguo, na wala -c wala chaguo--nipatikana, hoja ya kwanza inadhaniwa kuwa jina la faili iliyo na amri za shell. Ikiwa bash inatakiwa kwa namna hii, $ 0 imewekwa kwa jina la faili, na vigezo vya mpangilio vimewekwa kwenye hoja zilizobaki. Bash inasoma na kutekeleza amri kutoka faili hii, kisha huondoka. Hali ya kushoto ya Bash ni hali ya kutoka kwa amri ya mwisho iliyotumika kwenye script. Ikiwa hakuna amri zinazotekelezwa, hali ya kuondoka ni 0. Jaribio la kwanza limefanywa ili kufungua faili katika saraka ya sasa, na, ikiwa hakuna faili inapatikana, basi shell hutafuta kumbukumbu katika PATH kwa script.

INVOCATION

Hifadhi ya kuingia ni moja ambaye tabia yake ya kwanza ya sifuri ni - au moja ilianza na chaguo -login .

Hifadhi ya maingiliano ni moja ilianza bila hoja zisizo chaguo na bila ya -a chaguo ambao pembejeo na pato zake zote zimeunganishwa na vituo (kama ilivyoainishwa na isatty (3)), au moja ilianza na -i chaguo. PS1 imewekwa na $ - inajumuisha i kama bash inachukua maingiliano, kuruhusu script shell au file startup kupima hali hii.

Aya zifuatazo zinaelezea jinsi bash inafanya mafaili yake ya kuanza. Ikiwa faili yoyote ipo lakini haiwezi kusoma, bash hunaripoti kosa. Tildes hupanuliwa katika majina ya faili kama ilivyoelezwa chini chini ya Upanuzi wa Tilde katika sehemu ya EXPANSION .

Wakati bash inatakiwa kama shell iliyoingiliana ya kuingia, au kama shell isiyoingiliana na chaguo -login , inasomea kwanza na kutekeleza amri kutoka kwa faili / nk / profile , ikiwa faili hiyo ipo. Baada ya kusoma faili hiyo, inatafuta ~ / .bash_profile , ~ / .bash_login , na ~ / .profile , kwa utaratibu huo, na inasoma na kutekeleza amri kutoka kwa kwanza iliyopo na inavyoonekana. Chaguo -noprofile inaweza kutumika wakati shell imeanza kuzuia tabia hii.

Wakati shell ingia kutoka, bash isoma na kutekeleza amri kutoka faili ~ / .bash_logout , ikiwa iko.

Wakati shell inayoingiliana ambayo si shell ya kuingilia imeanzishwa, bash isoma na kutekeleza amri kutoka ~ / .bashrc , ikiwa faili hiyo ipo. Hii inaweza kuzuiwa kwa kutumia chaguo -norc . Chaguo la faili --rcfile itasaidia bash kutafakari na kutekeleza amri kutoka faili badala ya ~ / .bashrc .

Wakati bash inavyoanza bila ya kuingiliana, kuendesha script ya shell, kwa mfano, inatafuta variable BASH_ENV katika mazingira, huongeza thamani yake ikiwa inaonekana hapo, na inatumia thamani iliyopanuliwa kama jina la faili ili kusoma na kutekeleza . Bash hufanya kama amri ifuatayo ilifanyika:

ikiwa [-n "$ BASH_ENV"]; basi. "$ BASH_ENV"; fi

lakini thamani ya tofauti ya PATH haitumiwi kutafuta jina la faili.

Ikiwa bash inatakiwa kwa jina sh , inajaribu kutekeleza tabia ya mwanzo wa matoleo ya kihistoria ya sh kwa karibu iwezekanavyo, huku inafanana na kiwango cha POSIX pia. Inapotakiwa kama shell ya kuingiliana katikati , au shell isiyoingiliana na chaguo -login , ni jaribio la kwanza kusoma na kutekeleza amri kutoka kwa / nk / profile na ~ / .profile , kwa utaratibu huo. Chaguo -noprofile inaweza kutumika kuzuia tabia hii. Inapotafsiriwa kama shell inayoingiliana na jina sh , bash inaonekana kwa ENV ya kutofautiana, huongeza thamani yake kama inavyoelezwa, na hutumia thamani iliyopanuliwa kama jina la faili ya kusoma na kutekeleza. Tangu shell inayotakiwa kama sh haijaribu kusoma na kutekeleza amri kutoka kwenye faili nyingine za kuanza, chaguo -rcfile haina athari. Kanda isiyoingiliana inayotakiwa kwa jina sh haijaribu kusoma faili nyingine za kuanza. Ilipotakiwa kama sh , bash inakuingia mode ya ufuatiliaji baada ya faili za kuanzisha zinasoma .

Wakati bash inapoanza katika hali ya posix , kama na chaguo- chagio cha amri ya posto , inakufuata kiwango cha POSIX cha faili za kuanza. Katika hali hii, shells za maingiliano hupanua variable ya ENV na amri zinasoma na kutekelezwa kutoka faili ambayo jina lake ni thamani iliyopanuliwa. Hakuna faili nyingine za kuanzisha zinasoma.

Bash anajaribu kuamua linapotumika na daemon ya kijijini, mara kwa mara . Ikiwa bash inaamua kuwa inaendeshwa na rshd , inasoma na kutekeleza amri kutoka ~ / .bashrc , ikiwa faili hiyo ipo na inaonekana. Haiwezi kufanya hivyo ikiwa inatakiwa kama sh . Chaguo -norc inaweza kutumika kuzuia tabia hii, na chaguo -rcfile inaweza kutumika kwa nguvu faili nyingine ili isome, lakini rshd haina ujumla kuomba shell na chaguzi hizo au kuruhusu yao maalum.

Ikiwa shell imeanzishwa na id idhini ya mtumiaji (kikundi) si sawa na id halisi ya kikundi (kikundi), na chaguo-- p haipatikani, hakuna faili za kuanzisha zinasomwa, kazi za shell hazirithi kutoka kwa mazingira, SHELLOPTS kutofautiana, ikiwa inaonekana katika mazingira, ni kupuuzwa, na id idhini ya mtumiaji imewekwa kwa id halisi ya mtumiaji. Ikiwa chaguo -p hutolewa wakati wa kuomba, tabia ya mwanzo ni sawa, lakini id idhini ya mtumiaji haipatilishwa.

MAFUNZO

Ufafanuzi zifuatazo hutumiwa katika hati hii yote.

tupu

Nafasi au tab.

neno

Mlolongo wa wahusika kuchukuliwa kama kitengo moja na shell. Pia inajulikana kama ishara .

jina

Neno linalojumuisha tu wahusika wa alphanumeric na linasisitiza, na kuanzia na tabia ya alfabeti au kusisitiza. Pia inajulikana kama kitambulisho .

metacharacter

Tabia ambayo, wakati haijatibiwa, hutenganisha maneno. Moja ya yafuatayo:

|. | &; () <> nafasi ya nafasi

kudhibiti operator

Ishara inayofanya kazi ya udhibiti. Ni moja ya alama zifuatazo:

|| & &&; ;; () |

NENO ZENYEWA

Maneno yaliyohifadhiwa ni maneno ambayo yana maana maalum kwa shell. Maneno yafuatayo yanatambuliwa kama yaliyohifadhiwa wakati haujatambuliwa na ama neno la kwanza la amri rahisi (angalia SHELL GRAMMAR hapa chini) au neno la tatu la kesi au kwa amri:

! kesi imefanya elif nyingine ya kazi kama katika kuchagua kisha wakati {} wakati [[]]

SHELL GRAMMAR

Maagizo rahisi

Amri rahisi ni mlolongo wa majukumu ya kutofautiana ya hiari ikifuatiwa na maneno tupu na yaliyotengwa, na kumalizika na operator wa kudhibiti . Neno la kwanza linafafanua amri ya kutekelezwa, na hupitishwa kama hoja zero. Maneno iliyobaki yamepitishwa kama hoja kwa amri inayotakiwa.

Thamani ya kurudi ya amri rahisi ni hali yake ya kuondoka, au 128 + n ikiwa amri imekamilika na signal n .

Mabomba

Bomba ni mlolongo wa amri moja au zaidi iliyotengwa na tabia | . Fomu ya bomba ni:

[ wakati [ -p ]] [! ] amri [ | amri2 ...]

Pato la kawaida la amri limeunganishwa kupitia bomba kwa pembejeo ya kawaida ya amri2 . Uunganisho huu unafanywa kabla ya marekebisho yoyote yaliyoelezwa na amri (angalia REDIRECTION hapa chini).

Ikiwa neno limehifadhiwa ! inatangulia bomba, hali ya kutoka kwa bomba hiyo ni mantiki sio ya hali ya kutoka kwa amri ya mwisho. Vinginevyo, hali ya bomba ni hali ya kutoka kwa amri ya mwisho. Hifadhi inasubiri kwa amri zote katika bomba ili kukomesha kabla ya kurudi thamani.

Ikiwa neno lililohifadhiwa linatangulia bomba, wakati uliopita na mtumiaji na mfumo unaotumiwa na utekelezaji wake unabiriwa wakati bomba litakapoisha. Chaguo-- p hubadilisha muundo wa pato kwa yale yaliyotajwa na POSIX. Tofauti ya TIMEFORMAT inaweza kuweka kwenye kamba ya muundo ambayo inabainisha jinsi maelezo ya wakati yanapaswa kuonyeshwa; tazama maelezo ya TIMEFORMAT chini ya Vigezo vya Shell hapa chini.

Kila amri katika bomba inatekelezwa kama mchakato tofauti (yaani, katika kifungu kidogo).

Orodha

Orodha ni mlolongo wa mabomba moja au zaidi kutengwa na mmoja wa waendeshaji ; , & , && , au || , na kwa hiari imekamilika na moja ya ; , & , au .

Kati ya waendeshaji wa orodha hizi, && na || kuwa na utaratibu sawa, ikifuatiwa na ; na &, ambazo zina ufanisi sawa.

Mlolongo wa machapisho moja au zaidi yanaweza kuonekana kwenye orodha badala ya semicolon ili kutoa amri.

Ikiwa amri imekamilika na operator wa kudhibiti & , shell inafanya amri nyuma kwa somo. Halafu haisubiri amri ya kumaliza, na hali ya kurudi ni 0. Maagizo yaliyotengwa na ; wanatekelezwa kwa usawa; shell inasubiri kila amri ya kusitisha kwa upande wake. Hali ya kurudi ni hali ya kutoka kwa amri ya mwisho iliyotumiwa.

Waendeshaji wa kudhibiti && na || onyesha NA orodha na orodha OR, kwa mtiririko huo. Orodha na orodha ina fomu

amri1 && amri2

amri2 inatekelezwa kama, na tu ikiwa, amri1 inarudi hali ya kutoka kwa sifuri.

Orodha OR ina fomu

amri1 || amri2

amri2 inatekelezwa kama na tu ikiwa amri1 inarudi hali ya kutosha ya sifuri. Hali ya kurudi ya AND na orodha ya OR ni hali ya kutoka kwa amri ya mwisho iliyotumiwa kwenye orodha.

Maagizo ya Makundi

Amri ya kiwanja ni moja ya yafuatayo:

( orodha )

orodha inatekelezwa kwenye kifungu kidogo. Kazi zinazoweza kutofautiana na amri zilizojengwa ambazo zinaathiri mazingira ya shell haziwezi kubaki baada ya amri kukamilika. Hali ya kurudi ni hali ya kutoka kwa orodha .

{ orodha ; }

orodha ni tu kutekelezwa katika mazingira ya sasa shell. orodha lazima iondolewe kwa newline au semicolon. Hii inajulikana kama amri ya kundi . Hali ya kurudi ni hali ya kutoka kwa orodha . Kumbuka kuwa tofauti na metacracters ( na ) , { na } ni maneno yaliyohifadhiwa na yanapaswa kutokea ambapo neno lililohifadhiwa linaruhusiwa kutambuliwa. Kwa kuwa hawana sababu ya kuvunja neno, lazima waweze kutenganishwa kutoka kwenye orodha kwa faragha.

(( kujieleza )

Maneno haya yanatathmini kulingana na sheria zilizoelezwa hapo chini chini ya UCHIMU WA ARITHMETIC . Ikiwa thamani ya kujieleza sio sifuri, hali ya kurudi ni 0; vinginevyo hali ya kurudi ni 1. Hii ni sawa na basi " kujieleza ".

[ kujieleza ]

Rudisha hali ya 0 au 1 kulingana na tathmini ya kujieleza masharti ya kujieleza . Maneno haya yanajumuisha masomo yaliyotajwa hapo chini chini ya MAFUNZO YA MAJIBU . Ugawanishaji wa neno na upanuzi wa jina haukufanyika kwa maneno kati ya [[ na ]] ; ukubwa wa upanuzi, parameter na upanuzi wa kutofautiana, upanuzi wa hesabu, badala ya amri, uingizaji wa mchakato, na uondoaji wa quote hufanyika.

Wakati == na ! = Operators zinatumiwa, kamba ya haki ya operator ni kuchukuliwa mfano na kuendana kulingana na sheria zilizoelezwa hapa chini chini ya Mfano . Thamani ya kurudi ni 0 ikiwa kamba inafanana au haifani na muundo, kwa mtiririko huo, na 1 vinginevyo. Sehemu yoyote ya muundo inaweza kuchukuliwa ili kuifanya ifanane na kamba.

Maneno yanaweza kuunganishwa kwa kutumia waendeshaji zifuatazo, zilizoorodheshwa katika utaratibu wa kupunguzwa:

( kujieleza )

Inarudi thamani ya kujieleza . Hii inaweza kutumika kutenganisha utaratibu wa kawaida wa waendeshaji.

! kujieleza

Kweli ikiwa maelezo ni ya uwongo.

expression1 && expression2

Kweli ikiwa wote maneno1 na expression2 ni kweli.

kujieleza1 || kujieleza2 Kweli ikiwa ama expression1 au expression2 ni kweli.

Ya && na || waendeshaji hawana tathmini ya kujieleza2 ikiwa thamani ya kujieleza1 inatosha kuamua thamani ya kurudi ya kujieleza mzima wa masharti.

kwa jina [ kwa neno ]; fanya orodha ; kufanyika

Orodha ya maneno ifuatayo yanapanuliwa, kuzalisha orodha ya vitu. Jina la kutofautiana linawekwa kwa kila kipengele cha orodha hii kwa upande mwingine, na orodha inatibiwa kila wakati. Ikiwa neno limeondolewa, kwa amri hufanya orodha mara moja kwa kila parameter ya mpangilio iliyowekwa (angalia PARAMETERS hapa chini). Hali ya kurudi ni hali ya kuondoka ya amri ya mwisho ambayo hufanya. Ikiwa upanuzi wa vitu zifuatazo katika matokeo katika orodha isiyo na kitu, hakuna amri zinazotumiwa, na hali ya kurudi ni 0.

kwa (( expr1 ; expr2 ; expr3 )); fanya orodha ; kufanyika

Kwanza, kujieleza ya hesabu expr1 ni tathmini kulingana na sheria ilivyoelezwa hapo chini chini ya ARITMETIC EVALUATION . Expr2 ya kujieleza ya hesabu ni kisha kuchunguziwa mara kwa mara hadi itathmini kwa sifuri. Kila wakati expr2 inapima thamani isiyo ya zero, orodha inafanywa na maelezo ya hesabu expr3 yanatathminiwa. Ikiwa neno lolote limeachwa, linajitokeza kama linavyojaribu kwa 1. Thamani ya kurudi ni hali ya kuondoka ya amri ya mwisho katika orodha ambayo inatimizwa, au uongo ikiwa yoyote ya maneno ni batili.

chagua jina [ kwa neno ]; fanya orodha ; kufanyika

Orodha ya maneno ifuatayo yanapanuliwa, kuzalisha orodha ya vitu. Seti ya maneno yaliyopanuliwa imechapishwa kwenye kosa la kawaida, kila moja imetanguliwa na namba. Ikiwa neno limeondolewa, vigezo vya mpangilio vimechapishwa (angalia PARAMETERS hapa chini). Hatua ya PS3 ni kisha kuonyeshwa na mstari kusoma kutoka kwa pembejeo kawaida. Ikiwa mstari una idadi inayoendana na moja ya maneno yaliyoonyeshwa, basi thamani ya jina imewekwa kwa neno hilo. Ikiwa mstari ni tupu, maneno na haraka huonyeshwa tena. Ikiwa EOF inasomewa, amri hukamilisha. Thamani nyingine yoyote husababisha jina limewekwa kwenye null. Kusoma mstari kunahifadhiwa katika REPLY ya kutofautiana. Orodha inatekelezwa baada ya uteuzi kila mpaka amri ya kuvunja inatekelezwa. Hali ya kuondoka ya kuchagua ni hali ya kuondoka ya amri ya mwisho iliyotumiwa kwenye orodha , au sifuri ikiwa hakuna amri zilizofanyika.

neno la kesi katika [[(] muundo [ | mfano ]

Amri ya kesi kwanza huongeza neno , na hujaribu kuifanana dhidi ya kila muundo kwa upande wake, kwa kutumia sheria zinazofanana sawa na upanuzi wa jina la jina (angalia Upanuzi wa jina la chini). Wakati mechi inapatikana, orodha inayoambatana inafanywa. Baada ya mechi ya kwanza, hakuna mechi inayofuata iliyojaribiwa. Hali ya kuondoka ni sifuri ikiwa hakuna muundo unaofanana. Vinginevyo, ni hali ya kutoka kwa amri ya mwisho iliyotumiwa kwenye orodha .

kama orodha ; kisha orodha; Orodha ya Elif ; kisha orodha ; ] ... [ labda orodha ; ] fi

Kama orodha inafanywa. Ikiwa hali yake ya kuondoka ni sifuri, orodha hiyo inatekelezwa. Vinginevyo, kila orodha ya elif inafanywa kwa upande wake, na ikiwa hali yake ya kuondoka ni sifuri, orodha inayoambatana na hiyo inafanywa na amri hukamilisha. Vinginevyo, orodha nyingine inatekelezwa, ikiwa iko. Hali ya kuondoka ni hali ya kutoka kwa amri ya mwisho iliyotumiwa, au sifuri ikiwa hakuna hali iliyojaribiwa kweli.

wakati orodha ; fanya orodha ; kufanyika

hadi orodha ; fanya orodha ; kufanyika

Amri wakati huo huendelea kutekeleza orodha wakati wa amri ya mwisho katika orodha inarudi hali ya kutoka kwa sifuri. Mpaka amri inafanana na amri ya wakati , isipokuwa kwamba mtihani umeachwa; orodha ya kufanya inafanywa kwa muda mrefu kama amri ya mwisho katika orodha inarudi hali isiyo ya zero ya kuondoka. Hali ya kuondoka kwa muda na mpaka amri ni hali ya kuondoka ya amri ya mwisho ya orodha iliyofanywa, au sifuri ikiwa hakuna yeyote aliyepigwa.

Jina la kazi () { orodha ; }

Hii inafafanua kazi inayoitwa jina . Mwili wa kazi ni orodha ya amri kati ya {na}. Orodha hii inatekelezwa kila jina limewekwa kama jina la amri rahisi. Hali ya kuondoka ya kazi ni hali ya kutoka kwa amri ya mwisho iliyotumiwa kwenye mwili. (Tazama FUNZO hapa chini.)

MAONI

Katika shell isiyo ya maingiliano, au shell iliyoingiliana ambayo chaguo- maingiliano- chaguo kwa kujengwa kwa haraka huwezeshwa (angalia SHELL BUILTIN COMMANDS hapa chini), neno linalotokana na # husababisha neno hilo na wahusika wote waliosalia kwenye mstari huo kuzingatiwa. Hifadhi ya mwingiliano bila chaguo la maingiliano_lizowezeshwa hairuhusu maoni. Chaguo- maingiliano_chaguo linapatikana kwa kushindwa kwenye shells za maingiliano.

QUOTING

Kuchanganisha hutumiwa kuondoa maana maalum ya wahusika fulani au maneno kwenye shell. Kuchanganisha inaweza kutumika kuzuia matibabu maalum kwa wahusika maalum, kuzuia maneno yaliyohifadhiwa kutoka kutambuliwa kama hayo, na kuzuia upanuzi wa parameter.

Kila moja ya machapisho yaliyoorodheshwa hapo juu chini ya DEFINITIONS ina maana maalum kwa shell na inabidi iukuzwe ikiwa inajiwakilisha yenyewe.

Wakati vituo vya kupanua historia ya amri vinatumiwa, tabia ya kupanua historia , kwa kawaida ! , lazima inukuliwa ili kuzuia upanuzi wa historia.

Kuna njia tatu za kupiga kura: tabia ya kutoroka , quotes moja, na quotes mbili.

Backslash isiyoelezewa ( \ ) ni tabia ya kutoroka . Inalenga thamani halisi ya tabia inayofuata ifuatavyo, isipokuwa . Ikiwa jozi mpya inaonekana, na kurudi nyuma sio yenyewe kunukuliwa, \ inachukuliwa kama mwendelezo wa mstari (yaani, imeondolewa kutoka mkondo wa pembejeo na kuachwa kwa ufanisi).

Wahusika wa kuingiza katika quotes moja huhifadhi thamani halisi ya kila tabia ndani ya quotes. Nukuu moja haiwezi kutokea kati ya quotes moja, hata ikiwa imetanguliwa na kurudi nyuma.

Majina ya kuingiza katika quotes mbili huhifadhi thamani halisi ya wahusika wote ndani ya quotes, isipokuwa $ , ` , na \ . Wahusika $ na ` huhifadhi maana yao maalum ndani ya quotes mbili. Kurudi nyuma kunaendelea na maana yake maalum tu wakati ikifuatiwa na moja ya wahusika zifuatazo: $ , ` , " , \ , au . Nukuu ya mara mbili inaweza kuchukuliwa ndani ya quotes mara mbili na kuitangulia kwa kurudi nyuma.

Vigezo maalum * na @ vina maana maalum wakati wa quotes mbili (angalia PARAMETERS hapa chini).

Maneno ya fomu ya $ ' string ' yanatibiwa maalum. Neno linasambaza kwa kamba , na wahusika waliookoka nyuma husafirishwa kama ilivyoelezwa na kiwango cha ANSI C. Mifumo ya kutoroka ya kurudi, ikiwa iko sasa, imeelezwa kama ifuatavyo:

\ a

tahadhari (kengele)

\ b

backspace

\ e

tabia ya kutoroka

\ f

fanya chakula

\ n

mstari mpya

\ r

kurudi kwa gari

\ t

tab usawa

\ v

tab ya wima

\\

kurudi nyuma

\ '

quote moja

\ nnn

tabia ya nane-bit ambayo thamani ni octal thamani nnn (tarakimu moja hadi tatu)

\ x HH

tabia ya nane-bit ambayo thamani yake ni hexadecimal HH (moja au mbili hex tarakimu)

\ c x

tabia ya kudhibiti- x

Matokeo yaliyopanuliwa yanasukuliwa moja, kama ishara ya dola haikuwepo.

Kamba iliyokatwa mara mbili iliyotangulia na ishara ya dola ( $ ) itasababisha kamba kutafsiriwa kulingana na eneo la sasa. Ikiwa eneo la sasa ni C au POSIX , ishara ya dola imepuuzwa. Ikiwa kamba imetafsiriwa na kubadilishwa, nafasi hiyo inachukuliwa mara mbili.

PARAMETERS

Kipengele ni chombo ambacho huhifadhi maadili. Inaweza kuwa jina , namba, au moja ya wahusika maalum waliotajwa hapa chini chini ya Parameters maalum . Kwa madhumuni ya shell, variable ni parameter iliyoashiria jina . Tofauti ina thamani na zero au sifa zaidi. Tabia zinatumiwa kutumia amri iliyotengenezwa (angalia hapa chini katika SHELL BUILTIN COMMANDS ).

Kipengele kinachowekwa ikiwa imetolewa thamani. Kamba ya null ni thamani halali. Mara baada ya kutofautiana ni kuweka, inaweza kupunguzwa tu kwa kutumia amri isiyojengwa ya amri (tazama SHELL BUILTIN COMMANDS chini).

A variable inaweza kupewa kwa taarifa ya fomu

jina = [ thamani ]

Ikiwa thamani haitolewa, variable hupewa kamba ya null. Maadili yote yanaendelea kupanua tilde, parameter na upanuzi wa kutofautiana, badala ya amri, upanuzi wa hesabu, na uondoaji wa quote (angalia EXPANSION hapa chini). Ikiwa variable ina jumla ya sifa ya kuweka, basi thamani inakabiliwa na upanuzi wa hesabu hata kama upanuzi wa $ ((...)) hautumiwi (tazama Upanuzi wa Arithmeti hapa chini). Ugawanyiko wa neno haufanyiki, isipokuwa "$ @" kama ilivyoelezwa hapo chini chini ya Parameters maalum . Upanuzi wa jina haukufanyika. Taarifa za kazi zinaweza pia kuonekana kama hoja za kutangaza , aina , mauzo ya nje , readonly , na amri za ndani za kujengwa.

Vipengele vya Msimamo

Mpangilio wa mpangilio ni parameter iliyoashiria tarakimu moja au zaidi, isipokuwa tarakimu moja 0. Vigezo vya mpito hutolewa kutokana na hoja za shell wakati inavyoombwa, na inaweza kutumiwa tena kwa kutumia amri iliyowekwa iliyowekwa . Vigezo vya msimamo vinaweza kutolewa kwa maelezo ya kazi. Vigezo vya mpangilio vimebadilika wakati kazi ya shell inafanywa (angalia FUNCTIONS chini).

Wakati mpangilio wa mpangilio unao na zaidi ya tarakimu moja unenea, inapaswa kuingizwa kwenye bunduki (angalia EXPANSION hapa chini).

Parameters maalum

The shell hufanya vigezo kadhaa hasa. Vigezo hivi vinaweza kutajwa tu; Wajibu wao hauruhusiwi.

*

Nenda kwa vigezo vya mpito, kuanzia moja. Wakati upanuzi unatokea ndani ya quotes mbili, huongeza kwa neno moja na thamani ya kila parameter iliyotengwa na tabia ya kwanza ya variable ya IFS . Hiyo ni, " $ * " ni sawa na " $ 1 c $ 2 c ... ", ambapo c ni tabia ya kwanza ya thamani ya variable ya IFS . Ikiwa IFS imefungua, vigezo vinajitenga na nafasi. Ikiwa IFS haifai , vigezo vinajiunga bila watenganishaji walioingilia kati.

@

Nenda kwa vigezo vya mpito, kuanzia moja. Wakati upanuzi unatokea ndani ya quotes mbili, kila parameter huongeza kwa neno tofauti. Hiyo ni, " $ @ " ni sawa na " $ 1 " " $ 2 " ... Iwapo hakuna mipangilio ya mpangilio, " $ @ " na $ @ kupanua bila kitu (yaani, wao huondolewa).

#

Panua kwa idadi ya vigezo vya mpito katika decimal.

?

Tumia kwa hali ya bomba la mbele la hivi karibuni lililofanyika.

-

Panua kwa bendera ya chaguo la sasa kama ilivyoelezwa juu ya kuomba, kwa amri iliyowekwa kujengwa, au yale yaliyowekwa na shell yenyewe (kama vile -i chaguo).

$

Nenda kwa kitambulisho cha mchakato wa shell. Katika () subshell, inazidi kwenye kitambulisho cha mchakato wa shell ya sasa, sio chini.

!

Panua kwenye kitambulisho cha mchakato wa amri ya hivi karibuni iliyopigwa (asynchronous).

0

Tangaza kwa jina la script shell au shell. Hii imewekwa katika uanzishaji wa shell. Ikiwa bash inatakiwa na faili ya amri, $ 0 imewekwa kwa jina la faili hiyo. Ikiwa bash imeanzishwa na -a chaguo, basi $ 0 imewekwa kwenye hoja ya kwanza baada ya kamba inayotakiwa kutekelezwa, ikiwa moja iko. Vinginevyo, imewekwa kwa jina la faili kutumika kwa kuomba bash , kama ilivyopewa hoja ya sifuri.

_

Wakati wa kuanza kwa shell, weka jina la faili kamili ya script ya shell au shell inayofanywa kama inavyopatikana katika orodha ya hoja. Baadaye, huongeza kwa hoja ya mwisho kwa amri ya awali, baada ya kupanua. Pia kuweka jina kamili la faili la amri ya kila kutekelezwa na kuwekwa kwenye mazingira iliyotumiwa kwa amri hiyo. Wakati wa kuangalia barua, parameter hii inashikilia jina la faili ya barua sasa inakaguliwa.

Vigezo vya Shell

Vigezo vifuatavyo vinawekwa na shell:

BASH

Panua kwa jina kamili la faili la kutumiwa kuomba mfano huu wa bash .

BASH_VERSINFO

Toleo la safu ya wasomaji ambalo wanachama wamiliki maelezo ya toleo kwa ajili ya tukio hili la bash . Maadili yaliyotolewa kwa wanachama safu ni kama ifuatavyo:

BASH_VERSINFO [ 0]

Nambari ya toleo kubwa ( kutolewa ).

BASH_VERSINFO [ 1]

Nambari ndogo ya toleo ( toleo ).

BASH_VERSINFO [ 2]

Kiwango cha kiraka.

BASH_VERSINFO [ 3]

Toleo la kujenga.

BASH_VERSINFO [ 4]

Hali ya kutolewa (kwa mfano, beta1 ).

BASH_VERSINFO [ 5]

Thamani ya MACHTYPE .

BASH_VERSION

Panua kwenye kamba inayoelezea toleo la mfano huu wa bash .

COMP_CWORD

COMP_LINE

Mstari wa amri ya sasa. Tofauti hii inapatikana tu katika kazi za shell na amri za nje zinazotumiwa na vituo vya kukamilika vinavyoweza kupangwa (angalia Ukamilifu wa Mpangilio chini).

COMP_POINT

COMP_WORDS

Tofauti ya safu (angalia Arrays hapa chini) yenye maneno ya kibinafsi katika mstari wa amri ya sasa. Tofauti hii inapatikana tu katika kazi za shell ambazo zinatakiwa na vifaa vya kukamilika vinavyoweza kupangwa (angalia Ukamilifu wa Mpangilio chini).

DIRSTACK

Aina ya safu (angalia Arrays hapa chini) iliyo na maudhui ya sasa ya stack ya saraka. Majina yanaonekana kwenye stack kwa mpangilio ambao huonyeshwa na dirs kujengwa. Kuagiza kwa wanachama wa kutofautiana kwa safu hii inaweza kutumika kurekebisha faili tayari katika stack, lakini kujengwa kwa pushd na popd lazima kutumika kuongeza na kuondoa directories. Kazi kwa variable hii haitabadilisha saraka ya sasa. Ikiwa DIRSTACK imefungua , inapoteza mali zake maalum, hata ikiwa itafanywa tena.

EUID

Panua kwa Kitambulisho cha mtumiaji cha ufanisi wa mtumiaji wa sasa, ulioanzishwa kwenye kuanza kwa shell. Tofauti hii ni readonly.

FUNCNAME

Jina la kazi yoyote ya sasa inayofanya kazi. Tofauti hii ipo tu wakati kazi ya shell inafanya. Kazi kwa FUNCNAME hazina athari na kurudi hali ya kosa. Ikiwa FUNCNAME imefungua , inapoteza mali zake maalum, hata ikiwa itafanywa tena.

GROUPS

Tofauti ya safu iliyo na orodha ya vikundi ambavyo mtumiaji wa sasa ni mwanachama. Kazi kwa GROUP hazina athari na kurejesha hali ya kosa. Ikiwa GROUPS haifunguliwa, inapoteza mali zake maalum, hata ikiwa itafanywa tena.

HISTCMD

Nambari ya historia, au orodha katika orodha ya historia, ya amri ya sasa. Ikiwa HISTCMD imefungua , inapoteza mali yake maalum, hata ikiwa itafanywa tena.

HOSTNAME

Weka moja kwa moja jina la jeshi la sasa.

HOSTTYPE

Weka moja kwa moja kwenye kamba ambayo inaelezea aina ya mashine ambayo bash inafanya. Kichapishaji ni tegemezi-mfumo.

LINENO

Kila wakati parameter hii inatafanuliwa, shell hubadilisha nambari ya decimal inayowakilisha namba ya mstari wa sasa (kuanzia na 1) ndani ya script au kazi. Wakati si katika script au kazi, thamani ya kubadilishwa haihakikishi kuwa yenye maana. Ikiwa LINENO imefungua , inapoteza mali zake maalum, hata ikiwa itafanywa tena.

MACHTYPE

Weka moja kwa moja kwenye kamba ambayo inafafanua kikamilifu aina ya mfumo ambayo bash inafanya, katika mfumo wa kawaida wa GNU cpu-kampuni . Kichapishaji ni tegemezi-mfumo.

OLDPWD

Siri ya awali ya kazi kama iliyowekwa na amri ya cd .

OPTARG

Thamani ya hoja ya mwisho ya chaguo iliyotumiwa na amri ya kujengwa ya kupata (tazama SHELL BUILTIN COMMANDS hapa chini).

OPTIND

Ripoti ya hoja inayofuata ambayo itatumiwa na amri ya kujengwa ya kupatikana (angalia SHELL BUILTIN COMMANDS hapa chini).

OSTYPE

Weka moja kwa moja kwenye kamba inayoelezea mfumo wa uendeshaji ambao bash hufanya. Kichapishaji ni tegemezi-mfumo.

PIPESTATUS

Tofauti ya safu (angalia Arrays hapa chini) yenye orodha ya maadili ya hali ya kutoka kwa taratibu za bomba la mbele la hivi karibuni lililofanyika (ambalo linaweza kuwa na amri moja tu).

PPID

Kitambulisho cha mchakato wa mzazi wa shell. Tofauti hii ni readonly.

PWD

Rejea ya sasa ya kazi kama ilivyowekwa na amri ya cd .

RANDOM

Kila wakati parameter hii imetajwa, integer ya nusu kati ya 0 na 32767 imezalishwa. Mlolongo wa idadi ya random inaweza kuanzishwa kwa kugawa thamani kwa RANDOM . Ikiwa RANDOM haifunguliwa, inapoteza mali zake maalum, hata ikiwa itafanywa tena.

REPLY

Weka kwenye mstari wa pembejeo iliyosomwa na amri iliyojengwa ikiwa hakuna hoja zinazotolewa.

SECONDS

Kila wakati parameter hii inatafanuliwa, idadi ya sekunde tangu kuomba kwa shell kunarudi. Ikiwa thamani imetolewa kwa SECONDS , thamani inarudi kwenye marejeo yafuatayo ni nambari ya sekunde tangu kazi pamoja na thamani iliyotolewa. Ikiwa SECONDS imefungua, inapoteza mali zake maalum, hata ikiwa itafanywa tena.

SHELLOPTS

Orodha iliyojitenga ya koloni ya chaguo za shell zilizowezeshwa. Kila neno katika orodha ni hoja halali ya -o chaguo kwenye amri iliyowekwa kujengwa (angalia SHELL BUILTIN COMMANDS hapa chini). Chaguo zinazoonekana katika SHELLOPTS ni zile zilivyoripotiwa kama zilizowekwa kwa kuweka -o . Ikiwa variable hii iko katika mazingira wakati bash inapoanza, chaguo kila shell katika orodha litawezeshwa kabla ya kusoma faili yoyote za mwanzo. Tofauti hii ni kusoma tu.

SHLVL

Imeongezwa na kila mara mfano wa bash umeanza.

UID

Panua kwa Kitambulisho cha mtumiaji wa mtumiaji wa sasa, ulioanzishwa wakati wa kuanza kwa shell. Tofauti hii ni readonly.

Vigezo vifuatavyo vinatumiwa na shell. Katika baadhi ya matukio, bash hutoa thamani ya default kwa variable; kesi hizi zimeelezwa hapo chini.

BASH_ENV

Ikiwa parameter hii imewekwa wakati bash inafanya script ya shell, thamani yake inatafanuliwa kama jina la faili lililo na amri ili kuanzisha shell, kama katika ~ / .bashrc . Thamani ya BASH_ENV inakabiliwa na upanuzi wa parameter, badala ya amri, na upanuzi wa hesabu kabla ya kutafsiriwa kama jina la faili. PATH haitumiwi kutafuta jina la faili la matokeo.

CDPATH

Njia ya kutafuta kwa amri ya cd . Hii ni orodha iliyojitenga ya makondora ambayo shell inaangalia kumbukumbu za marudio zilizotajwa na amri ya cd . Thamani ya sampuli ni ".: ~: / Usr".

COLUMNS

Inatumiwa na amri ya kujengwa iliyochaguliwa ili kuamua upana wa mwisho wakati wa orodha ya uchapishaji. Weka moja kwa moja juu ya kupokea SIGWINCH.

MAFUNZO

Tofauti ya safu ambayo bash hufafanua kukamilika iwezekanavyo inayotokana na kazi ya shell inayotakiwa na kituo cha kukamilisha kilichopangwa (angalia Ukamilifu wa Mpangilio chini).

FCEDIT

Mhariri wa default kwa amri ya fc iliyojengwa.

FIGNORE

Orodha iliyojitenga ya vifuniko kupuuza wakati wa kufanya jina la faili kukamilika (angalia READLINE hapa chini). Jina la faili ambalo suffix inafanana moja ya entries katika FIGNORE imechukuliwa kutoka orodha ya filenames kufanana. Thamani ya sampuli ni ".o: ~".

GLOBIGNORE

Orodha ya kutenganishwa ya colon ya chati inayofafanua seti ya majina ya kupuuzwa na upanuzi wa jina. Ikiwa jina la faili linalolingana na muundo wa kupanua jina la njia pia linalingana na moja ya ruwaza katika GLOBIGNORE , huondolewa kwenye orodha ya mechi.

HISTCONTROL

Ikiwa imewekwa kwa thamani ya kupuuza nafasi , mistari ambayo huanza na tabia ya nafasi haijaingizwa katika orodha ya historia. Ikiwa imewekwa kwa thamani ya kupuuziwa , mistari inayofanana na mstari wa historia ya mwisho haijaingizwa. Thamani ya ignoreboth inachanganya chaguo mbili. Ikiwa unset, au ikiwa imewekwa kwa thamani nyingine yoyote kuliko yale yaliyotajwa hapo juu, mistari yote iliyosomewa na msimamizi huhifadhiwa katika orodha ya historia, chini ya thamani ya HISTIGNORE . Kazi hii ya kutofautiana inasimamiwa na HISTIGNORE . Mstari wa pili na wafuatayo wa amri ya kiwanja cha mstari mbalimbali haujaribiwa , na huongezwa kwenye historia bila kujali thamani ya HISTCONTROL .

HISTFILE

Jina la faili ambayo historia ya amri imehifadhiwa (angalia HISTORY hapa chini). Thamani ya default ni ~ / .bash_history . Ikiwa imefungua, historia ya amri haihifadhiwa wakati shell inayounganishwa inatoka.

HISTFILESIZE

Idadi ya kiwango cha juu cha mistari zilizomo kwenye faili la historia. Wakati kutofautiana huku kuna thamani, faili ya historia inatumiwa, ikiwa ni lazima, haifai zaidi ya idadi hiyo ya mistari. Thamani ya default ni 500. Faili ya historia pia imewekwa kwa ukubwa huu baada ya kuandika wakati shell inakabiliwa inatoka.

HISTIGNORE

Orodha ya kutenganishwa ya rangi ya mwelekeo inayotumiwa kuamua mstari wa amri inapaswa kuokolewa kwenye orodha ya historia. Kila muundo umesimama mwanzoni mwa mstari na lazima ufanane na mstari kamili (hakuna ' * ' isiyojulikana inaongezwa). Kila muundo hupimwa dhidi ya mstari baada ya hundi zilizowekwa na HISTCONTROL zinatumika. Mbali na wahusika wa kawaida wa muundo wa shell, ` & 'inafanana na mstari wa historia uliopita. ' & ' inaweza kukimbia kwa kutumia upungufu; kurudi nyuma kunaondolewa kabla ya kujaribu mechi. Mstari wa pili na wafuatayo wa amri ya kiwanja cha mstari mbalimbali haujaribiwa , na huongezwa kwenye historia bila kujali thamani ya HISTIGNORE .

HISTSIZE

Idadi ya amri kukumbuka katika historia ya amri (tazama HISTORY hapa chini). Thamani ya default ni 500.

HOME

Nyaraka ya nyumbani ya mtumiaji wa sasa; hoja ya default kwa amri ya cd builtin. Thamani ya kutofautiana hii pia hutumika wakati wa kupanua tilde.

HOSTFILE

Ina jina la faili katika muundo sawa na / nk / majeshi ambayo inapaswa kusomwa wakati shell inahitaji kukamilisha jina la jeshi. Orodha ya kukamilika kwa jina la mwenyeji inaweza kubadilishwa wakati shell inapoendesha; wakati ujao wa kukamilisha jina la majaribio hujaribu baada ya thamani kubadilishwa, bash anaongezea yaliyomo ya faili mpya kwenye orodha iliyopo. Ikiwa HOSTFILE imewekwa, lakini haina thamani, bash hujaribu kusoma / nk / majeshi ili kupata orodha ya kukamilika kwa jina la mwenyeji. Wakati HOSTFILE imefungua , orodha ya jina la mwenyeji huondolewa .

IFS

Separator ya Ndani ya Shamba ambayo hutumiwa kwa kugawanya neno baada ya kupanua na kupasuliwa mistari kwa maneno na amri iliyojengwa. Thamani ya default ni `` ''.

IGNOREEOF

Inasimamia hatua ya shell iliyoingiliana kupokea tabia ya EOF kama pembejeo pekee. Ikiwa imewekwa, thamani ni namba ya herufi za EOF zinazofuata ambazo zinapaswa kuingizwa kama wahusika wa kwanza kwenye mstari wa uingizaji kabla ya kuondoka kwa bash . Ikiwa variable inawepo lakini haina thamani ya nambari, au haina thamani, thamani ya default ni 10. Ikiwa haipo, EOF inaashiria mwisho wa pembejeo kwa shell.

INPUTRC

Jina la faili la faili ya mwanzo wa usomaji , unaozidi default ya ~ / .inputrc (angalia READLINE hapa chini).

LANG

Ilitambua kiwanja cha eneo kwa kiwanja chochote ambacho si chaguo maalum kilichochaguliwa na variable kutoka kwa LC_ .

LC_ALL

Tofauti hii inapanua thamani ya LANG na variable yoyote ya LC_ inayoelezea kipengele cha eneo.

LC_COLLATE

Utaratibu huu unaamua utaratibu wa kupangilia unaotumiwa wakati wa kuchagua matokeo ya upanuzi wa jina, na huamua tabia ya maneno mbalimbali, madarasa ya sawa, na utaratibu wa kuunganisha ndani ya kupanua jina la njia na vinavyolingana na muundo.

LC_CTYPE

Tofauti hii huamua tafsiri ya wahusika na tabia ya madarasa ya tabia ndani ya upanuzi wa jina na muundo unaofanana.

LC_MESSAGES

Tofauti hii huamua eneo ambalo linatumika kutafsiri masharti yaliyotajwa mara mbili yaliyotangulia na $ .

LC_NUMERIC

Tofauti hii huamua kitengo cha eneo kilichotumiwa kutengeneza namba.

LINES

Inatumiwa na amri ya kujengwa iliyochaguliwa ili kuamua urefu wa safu ya kuchapisha orodha za uteuzi. Weka moja kwa moja juu ya kupokea SIGWINCH.

MAIL

Ikiwa parameter hii imewekwa kwa jina la faili na variable ya MAILPATH haijawekwa, bash hufahamisha mtumiaji wa kuwasili kwa barua pepe katika faili maalum.

MAILCHECK

Inataja mara ngapi (kwa sekunde) bash hundi kwa barua. Kichapishaji ni sekunde 60. Ikiwa ni wakati wa kuangalia barua, shell hufanya hivyo kabla ya kuonyesha haraka ya haraka. Ikiwa kutofautiana huku kutenganishwa, au kuweka thamani ambayo si idadi kubwa kuliko au sawa na sifuri, shell inazima kupima mail.

MAILPATH

Orodha iliyojitenga ya safu ya majina ya faili ya kuchunguzwa kwa barua. Ujumbe unapaswa kuchapishwa wakati barua itakapokuja kwenye faili fulani inaweza kuelezwa kwa kutenganisha jina la faili kutoka kwa ujumbe na `? '. Wakati unatumiwa katika maandiko ya ujumbe, $ _ huongeza kwa jina la mailfile ya sasa. Mfano:

MAILPATH = '/ var / mail / bfox? "Una barua": ~ ~ / shell-mail? "$ _ Ina barua!"'

Bash hutoa thamani ya default kwa variable hii, lakini eneo la mafaili ya barua pepe ambayo hutumia ni tegemezi ya mfumo (kwa mfano, / var / mail / $ USER ).

OPTERR

Ikiwa imewekwa kwenye thamani ya 1, bash huonyesha ujumbe wa kosa uliozalishwa na amri ya kupatikana iliyoingia (angalia SHELL BUILTIN COMMANDS hapa chini). OPTERR imeanzishwa kwa 1 kila wakati shell inakiliwa au script shell inafanywa.

PATH

Njia ya utafutaji ya amri. Ni orodha iliyojitenga kwa makoloni ya kumbukumbu ambazo shell hutafuta amri (tazama UFUNZO WA MAENDA hapa chini). Njia ya default ni tegemezi-msingi, na imewekwa na msimamizi ambaye anaweka bash . Thamani ya kawaida ni `` / usr / gnu / bin: / usr / local / bin: / usr / ucb: / bin: / usr / bin :. ''.

POSIXLY_CORRECT

Ikiwa variable hii iko katika mazingira wakati bash inapoanza, shell inaingia mode ya msimamo kabla ya kusoma faili za mwanzo, kama vile chaguo - la posta la kuomba limetolewa. Ikiwa imewekwa wakati shell inaendesha, bash inawezesha hali ya posix , kama amri ya kuweka -o posix imekwisha kutekelezwa.

PROMPT_COMMAND

Ikiwa imewekwa, thamani inatekelezwa kama amri kabla ya kutoa kila haraka ya msingi.

PS1

Thamani ya parameter hii imepanuliwa (angalia KUSIMA chini) na kutumika kama kamba ya haraka ya haraka. Thamani ya default ni `` \ s- \ v \ $ ''.

PS2

Thamani ya parameter hii inapanuliwa kama PS1 na kutumika kama kamba ya pili ya haraka. Kichapishaji ni `` > ''.

PS3

Thamani ya parameter hii hutumiwa kama haraka kwa amri ya kuchagua (angalia SHELL GRAMMAR hapo juu).

PS4

Thamani ya parameter hii inapanuliwa kama ilivyo na PS1 na thamani imechapishwa kabla ya maonyesho ya bash ya amri wakati wa kufuatilia utekelezaji. Tabia ya kwanza ya PS4 imeelezwa mara nyingi, kama inavyohitajika, kuonyesha viwango vingi vya kuacha. Kichapishaji ni `` + ''.

TIMEFORMAT

Thamani ya parameter hii hutumiwa kama kamba ya muundo inayoelezea jinsi maelezo ya wakati wa mabomba ya prefixed na neno lililohifadhiwa inapaswa kuonyeshwa. Tabia ya utangulizi hutoa mlolongo wa kutoroka ambao unenezwa kwa thamani ya wakati au taarifa nyingine. Utaratibu wa kuepuka na maana yake ni kama ifuatavyo; braces huashiria sehemu za hiari.

%%

Halisi % .

[ p ] [l] R

Wakati uliopita katika sekunde.

[ p ] [l] U

Nambari ya sekunde za CPU zilizotumiwa katika hali ya mtumiaji.

[ p ] [l] S

Idadi ya sekunde za CPU zilizotumiwa kwa mfumo wa mfumo.

P

Asilimia ya CPU, imehesabiwa kama (% U +% S) /% R.

P ya hiari ni tarakimu inayoelezea usahihi , idadi ya tarakimu ya sehemu baada ya hatua ya decimal. Thamani ya 0 husababisha hatua ya decimal au sehemu ya kutolewa. Katika sehemu tatu zaidi baada ya uhakika wa decimal inaweza kuwa maalum; maadili ya p zaidi ya 3 yamebadilishwa kuwa 3. Ikiwa p si maalum, thamani 3 hutumiwa.

Chaguo chaguo l kinaonyesha muundo mrefu, ikiwa ni pamoja na dakika, ya fomu MM m SS . FF s. Thamani ya p huamua kama sehemu hiyo haijumuishi.

Ikiwa tofauti hii haijawekwa, bash hufanya kama ina thamani ya $ '\ nreal \ t% 3lR \ nuser \ t% 3lU \ nsys% 3lS' . Ikiwa thamani haifai, hakuna maelezo ya wakati unaonyeshwa. Nambari mpya ya trailing imeongezwa wakati kamba ya muundo inavyoonyeshwa.

TMOUT

Ikiwa imewekwa kwa thamani kubwa zaidi kuliko sifuri, TMOUT inachukuliwa kama muda wa mwisho wa kusoma iliyojengwa. Amri ya kuchagua imekoma ikiwa pembejeo haipati baada ya sekunde TMOUT wakati pembejeo inatoka kwenye terminal. Katika shell ya maingiliano, thamani inafasiriwa kama idadi ya sekunde kusubiri pembejeo baada ya kutoa haraka ya msingi. Bash inachia baada ya kusubiri idadi hiyo ya sekunde ikiwa pembejeo haipati.

auto_resume

Tofauti hii inadhibiti jinsi shell inavyohusika na udhibiti wa kazi na mtumiaji. Ikiwa variable hii imewekwa, amri moja rahisi ya amri bila marekebisho hutambuliwa kama wagombea wa kuanza tena kazi iliyosimamishwa. Hakuna kuruhusiwa kuruhusiwa; ikiwa kuna kazi zaidi ya moja kuanzia kamba iliyowekwa, kazi iliyopatikana hivi karibuni imechaguliwa. Jina la kazi iliyoacha, katika muktadha huu, ni mstari wa amri uliotumiwa kuanza. Ikiwa imewekwa kwa thamani halisi , kamba iliyotolewa inapaswa kufanana na jina la kazi iliyoacha kabisa; ikiwa imewekwa kwa njia ya kuingilia , kamba iliyotolewa inahitaji kufanana na jina la kazi iliyoacha. Thamani ya kuingilia hutoa utendaji unaofanana na %? kitambulisho cha kazi (angalia udhibiti wa JOB hapa chini). Ikiwa imewekwa kwa thamani nyingine yoyote, kamba iliyotolewa hupaswa kuwa kiambishi cha jina la kazi iliyoacha; hii hutoa utendaji unaofanana na kitambulisho cha kazi.

histchars

Wahusika wawili au watatu ambao hudhibiti upanuzi wa historia na ukuta (tazama HISTORY EXPANSION hapa chini). Tabia ya kwanza ni tabia ya kupanua historia , tabia inayoashiria mwanzo wa upanuzi wa historia, kwa kawaida ` ! '. Tabia ya pili ni tabia ya uingizaji wa haraka , ambayo hutumiwa kama shorthand ya kurudia tena amri ya awali iliyoingia, kugeuka kamba moja kwa mwingine kwa amri. Kichapishaji ni ` ^ '. Tabia ya tatu ya hiari ni tabia ambayo inaonyesha kwamba salio ya mstari ni maoni wakati inapatikana kama tabia ya kwanza ya neno, kwa kawaida ` # '. Tabia ya maoni ya historia husababisha mbadala ya historia ilisitishwe kwa maneno yaliyobaki kwenye mstari. Sio lazima kusababisha mshambuliaji wa shell ili kutibu mstari wa pili kama maoni.

Mipango

Bash hutoa vigezo vya safu moja. Tofauti yoyote inaweza kutumika kama safu; kutangaza kujengwa kutafafanua wazi safu. Hakuna kikomo cha juu juu ya ukubwa wa safu, wala sharti lolote ambalo wanachama wanaweza kuwa indexed au kupewa kwa hiari. Mipangilio ni indexed kwa kutumia integers na ni msingi sifuri.

Safu huundwa kwa moja kwa moja ikiwa variable yoyote hutolewa kutumia jina la syntax [ subscript ] = thamani . Msaada huo unatambuliwa kama kujieleza kwa hesabu ambayo inapaswa kutathmini kwa idadi kubwa kuliko au sawa na sifuri. Ili kufafanua wazi safu, tumia kutangaza - jina (angalia SHELL BUILTIN COMMANDS chini). kutangaza - jina [ hifadhi ] pia linakubaliwa; hifadhi hiyo inafutwa. Sifa inaweza kuelezwa kwa variable safu kwa kutumia kutangaza na kutafsiriwa. Kila sifa inatumika kwa wanachama wote wa safu.

Mipangilio inatumiwa kutumia kazi za kiwanja ya jina la fomu = ( thamani ya 1 ... thamani n ) , ambapo kila thamani ni ya fomu [ subscript ] = kamba . Kamba tu inahitajika. Ikiwa mabanki ya hiari na usajili hutolewa, ripoti hiyo imepewa; vinginevyo index ya kipengele kilichopewa ni orodha ya mwisho iliyotolewa kwa kauli pamoja na moja. Ufafanuzi huanza saa sifuri. Syntax hii pia inakubaliwa na kutangaza kujengwa. Vipengele vya safu ya kibinafsi vinaweza kupewa jina la [ kujiandikisha ] = thamani ya syntax iliyotolewa hapo juu.

Kujengwa isiyojengwa hutumiwa kuharibu vitu. kufuta jina [ usajili ] huharibu kipengele cha safu katika orodha ya orodha. tengeneza jina , ambako jina ni safu, au kutenganisha jina [ usajili ], ambapo nakala ya usajili ni * au @ , huondoa safu nzima.

Wajumbe wa kutangaza , wenyeji , na wasomaji kila mmoja wanakubali -a chaguo kutaja safu. Msomaji wa kujifunza unakubali -a chaguo la kugawa orodha ya maneno iliyosomwa kutoka kwa pembejeo ya kawaida kwenye safu. Kuweka na kutangaza kujengwa huonyesha maadili ya safu kwa njia ambayo inaruhusu kuwa tena kutumika kama majukumu.

UPANUZI

Upanuzi unafanywa kwenye mstari wa amri baada ya kupasuliwa kuwa maneno. Kuna aina saba za upanuzi uliofanywa: usindikaji wa ujasiri , upanuzi wa urefu , parameter na upanuzi wa kutofautiana , badala ya amri , upanuzi wa hesabu , ugawaji wa neno , na upanuzi wa jina .

Utaratibu wa kupanua ni: ujenga upanuzi, upanuzi wa urefu, parameter, upanuzi wa kutofautiana na hesabu na uagizaji wa amri (uliofanywa kwa njia ya kushoto-kulia), kugawanya neno, na kupanua jina la njia.

Kwenye mifumo ambayo inaweza kuunga mkono, kuna upanuzi wa ziada unaopatikana: mchakato badala .

Upanuzi wa Brace

Upanuzi wa ujasiri ni utaratibu ambao masharti ya kiholela yanaweza kuzalishwa. Utaratibu huu ni sawa na upanuzi wa jina , lakini faili zinazozalishwa hazihitaji kuwepo. Sifa ambazo zinafaa kupanuliwa huchukua fomu ya utangulizi wa hiari, ikifuatiwa na mfululizo wa masharti yaliyotenganishwa na comma kati ya jozi za braces, ikifuatiwa na machapisho ya hiari. Kiambatanisho kinatangulizwa kwenye kamba kila kitu kilicho ndani ya braces, na kichwa cha barua pepe kinachukuliwa kwa kila kamba inayosababisha, kupanua kushoto kwenda kulia.

Uzinduzi wa ujasiri huenda ukawa. Matokeo ya kamba kila kupanuliwa hayatolewa; kushoto kwa haki ya kuhifadhiwa. Kwa mfano, { d, c, b } e huongeza katika `ade ace abe '.

Upanuzi wa ujasiri hufanyika kabla ya kupanua nyingine yoyote, na wahusika wowote maalum kwa upanuzi mwingine huhifadhiwa katika matokeo. Ni madhubuti ya maandishi. Bash haitumii tafsiri yoyote ya kimapenzi kwa muktadha wa upanuzi au maandishi kati ya vijiti.

Hii hutengenezwa ni kawaida kutumika kama shorthand wakati kiambishi awali ya masharti ya kuzalishwa ni mrefu kuliko katika mfano hapo juu:

mkdir / usr / mitaa / src / bash / {zamani, mpya, dist, mende)

au

mzizi wa mchanga /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}

Upanuzi wa ujasiri huanzisha kutofautiana kidogo na matoleo ya kihistoria ya sh . Sh haina kutibu ufunguzi wa kufunguliwa au kufunga wakati wa kuonekana kama sehemu ya neno, na kuwalinda katika pato. Bash huondoa braces kutoka kwa maneno kama matokeo ya upanuzi wa ujasiri. Kwa mfano, neno lililoingia kwa sh kama file {1,2} linaonekana kwa usawa katika pato. Neno lile linatolewa kama file1 file2 baada ya kupanua kwa bash . Ikiwa utangamano mkali na sh unataka, tumia bash na chaguo la B + au uzima upanuzi wa brace na chaguo + B kwenye amri iliyowekwa (angalia SHELL BUILTIN COMMANDS hapa chini).

Upanuzi wa Tilde

Ikiwa neno linatokana na tabia isiyojumuishwa ya kichwa (` ~ '), wahusika wote wanaotangulia kufuta bila kufuta (au wahusika wote, ikiwa hakuna kufungwa bila kujulikana) huchukuliwa kuwa kiambatisho cha mwisho . Ikiwa hakuna wahusika katika kiambatisho cha mwisho-chini kinachotajwa, wahusika katika kiambishi cha pili baada ya tilde hutambuliwa kama jina linalowezekana login . Ikiwa jina hili la kuingia ni namba isiyokuwa ya nambari, kimoja kinachukuliwa na thamani ya kipangilio cha kipengee cha HOME . Ikiwa HOME haipatikani, saraka ya nyumbani ya mtumiaji anayefanya shell hubadilishwa badala yake. Vinginevyo, kiambishi-kiambishi kikubwa kinachukuliwa na saraka ya nyumbani inayohusishwa na jina la login maalum.

Ikiwa kiambishi-kiambishi ni `~ + ', thamani ya PWD inayobadilisha shell inachukua nafasi ya kiambishi awali. Ikiwa kiambishi-kiambishi ni `~ - ', thamani ya variable OLDPWD ya shell, ikiwa imewekwa, inabadilishwa. Ikiwa herufi zifuatazo tilde katika kiambishi cha pili cha chini kilicho na namba N , chaguo prefixed kwa '+' au `- ', kiambishi-kiambishi kinachukuliwa na kipengele kinachotambulisha kutoka kwenye kumbukumbu ya saraka, kama itaonyeshwa na waheshimiwa kujengwa waliotumiwa na kiambishi-kiambishi kama hoja. Ikiwa wahusika wanafuatilia kijiko katika kiambishi cha pili cha chini kina idadi isiyo na '+' au '-', '+' inachukuliwa.

Ikiwa jina la kuingia ni batili, au upanuzi wa tilde haufanikiwa, neno halibadilika.

Kazi ya kutofautiana kila hutajwa kwa prefixes zisizofuata zifuatazo zifuatazo : au = . Katika matukio haya, upanuzi wa urefu unafanywa pia. Kwa hiyo, mtu anaweza kutumia majina ya faili kwa kutumia kazi kwa PATH , MAILPATH , na CDPATH , na shell hutoa thamani iliyopanuliwa.

Upanuzi wa Kipimo

Tabia ` $ 'inapanua upanuzi wa parameter, badala ya amri, au upanuzi wa hesabu. Jina la parameter au ishara kupanuliwa inaweza kuingizwa katika braces, ambayo ni hiari lakini hutumika kulinda variable kutolewa kutoka kwa wahusika mara moja kufuatia ambayo inaweza kutafsiriwa kama sehemu ya jina.

Wakati bongo zinatumiwa, brace ya mwisho ya kumaliza ni ya `` 'haijaepuka na kurudi nyuma au katika kamba iliyotajwa, na si ndani ya upanuzi wa hesabu iliyoingia, badala ya amri, au upanuzi wa paramter.

Thamani ya parameter inabadilishwa. Braces inahitajika wakati parameter ni mpangilio wa mpangilio na tarakimu zaidi ya moja, au wakati parameter inatimiwa na tabia ambayo haifai kutafsiriwa kama sehemu ya jina lake.

Katika kila kesi chini, neno linatakiwa kuenea kwa upanuzi, upanuzi wa parameter, badala ya amri, na upanuzi wa hesabu. Wakati usipokuwa ukiongeza upanuzi wa kipande, ubadilishaji wa bash kwa parameter ambayo haijatengenezwa au isiyo ya kawaida; kusitisha matokeo ya koloni katika mtihani tu kwa parameter ambayo haifai.

Tumia Maadili ya Maadili . Ikiwa parameter haijafunguliwa au isiyo na null, upanuzi wa neno hubadilishwa. Vinginevyo, thamani ya parameter inabadilishwa.

Weka Maadili ya Default . Ikiwa parameter haijafunguliwa au isiyojificha, upanuzi wa neno hutolewa kwa parameter . Thamani ya parameter ni kisha kubadilishwa. Vigezo vya mpangilio na vigezo maalum haziwezi kupewa kwa njia hii.

Hitilafu ya Kuonyesha ikiwa Null au Unset . Ikiwa parameter haifai au haifai, upanuzi wa neno (au ujumbe kwa athari hiyo ikiwa neno haipo) imeandikwa kwa kosa la kawaida na shell, ikiwa haiingiliani, inatoka. Vinginevyo, thamani ya parameter inabadilishwa.

Tumia Thamani Mbadala . Ikiwa parameter haifai au haifanyiki, hakuna kitu kinachobadilishwa, vinginevyo upanuzi wa neno hubadilishwa.

Panua kwa majina ya vigezo ambazo majina yanayoanza na kiambishi , ikitenganishwa na tabia ya kwanza ya variable ya IFS .

Urefu wa wahusika wa thamani ya parameter hubadilishwa. Ikiwa parameter ni * au @ , thamani ya kubadilishwa ni idadi ya vigezo vya mpito. Ikiwa parameter ni jina la safu iliyoandikwa na * au @ , thamani iliyobadilishwa ni namba ya mambo katika safu.

Neno limepanuliwa ili kuzalisha muundo kama vile katika upanuzi wa jina. Ikiwa muundo unafanana na mwanzo wa thamani ya parameter , basi matokeo ya upanuzi ni thamani ya kupanua ya parameter na muundo mfupi unaofanana (`` # '' kesi) au ruwaza iliyofananisha zaidi (`` ## ' 'kesi) ilifutwa. Ikiwa parameter ni @ au * , operesheni ya kuondolewa kwa muundo hutumiwa kwa kila parameter ya mpito kwa upande mwingine, na upanuzi ni orodha ya matokeo. Ikiwa parameter ni safu ya safu iliyoandikwa na @ au * , operesheni ya kuondolewa kwa muundo hutumiwa kwa kila mwanachama wa safu kwa upande wake, na upanuzi ni orodha ya matokeo.

Neno limepanuliwa ili kuzalisha muundo kama vile katika upanuzi wa jina. Ikiwa muundo unalingana na sehemu ya trailing ya thamani iliyopanuliwa ya parameter , basi matokeo ya upanuzi ni thamani iliyopanuliwa ya parameter na muundo mfupi unaohusisha (kesi `` % '') au ruwaza iliyofananisha zaidi (`` % kesi ' % ') ilifutwa. Ikiwa parameter ni @ au * , operesheni ya kuondolewa kwa muundo hutumiwa kwa kila parameter ya mpito kwa upande mwingine, na upanuzi ni orodha ya matokeo. Ikiwa parameter ni safu ya safu iliyoandikwa na @ au * , operesheni ya kuondolewa kwa muundo hutumiwa kwa kila mwanachama wa safu kwa upande wake, na upanuzi ni orodha ya matokeo.

Mfano hupanuliwa ili kuzalisha mfano kama vile upanuzi wa jina. Kipimo kinapanuliwa na mechi ya muda mrefu zaidi ya muundo dhidi ya thamani yake inabadilishwa na kamba . Katika fomu ya kwanza, tu mechi ya kwanza ni kubadilishwa. Fomu ya pili inasababisha mechi zote za muundo ambazo zinasimamishwa na kamba . Ikiwa mfano huanza na # , lazima ufanane mwanzoni mwa thamani ya kupanua ya parameter . Ikiwa mfano huanza na % , lazima ufanane mwishoni mwa thamani ya kupanua ya parameter . Ikiwa kamba ni tupu, mechi za muundo zinafutwa na muundo wafuatayo unaweza kufutwa. Ikiwa parameter ni @ au * , operesheni ya kubadilisha hutumiwa kwa kila parameter ya mpito kwa upande wake, na upanuzi ni orodha ya matokeo. Ikiwa parameter ni safu ya safu iliyoandikwa na @ au * , operesheni ya kubadilisha hutumiwa kwa kila mwanachama wa safu kwa upande wake, na upanuzi ni orodha ya matokeo.

Amri Kuingia

Amri badala inaruhusu pato la amri kuchukua nafasi ya jina la amri. Kuna aina mbili:

$ ( amri )

au

` amri`

Bash hufanya upanuzi kwa kutekeleza amri na kubadilisha nafasi ya amri na pato la kawaida la amri, na majarida yoyote ya kufuatilia yamefutwa. Vipengee vya habari vilivyounganishwa hazifutwa, lakini vinaweza kuondolewa wakati wa kugawana neno. Kubadilisha amri $ ( faili ya paka ) inaweza kubadilishwa na sawa sawa na $ (< faili ).

Wakati fomu ya kubadilisha nyuma ya mtindo wa zamani hutumiwa, urejeshaji huhifadhi maana yake halisi isipokuwa ifuatiwa na $ , ` , au \ . Backquote ya kwanza ambayo haikuandikwa na kurudi nyuma inachia nafasi ya amri. Wakati wa kutumia fomu ya $ ( amri ), wahusika wote kati ya mababa hufanya amri; hakuna inatibiwa maalum.

Uingizaji wa amri huenda ukawa. Kwa kiota wakati wa kutumia fomu iliyosawazishwa, kuepuka backquotes ya ndani na backslashes.

Ikiwa mbadala inaonekana ndani ya quotes mbili, kupanua neno na upanuzi wa jina haifanyi kazi kwenye matokeo.

Upanuzi wa Arithmetic

Upanuzi wa Arithmeti inaruhusu tathmini ya kujieleza kwa hesabu na kubadili matokeo. Fomu ya upanuzi wa hesabu ni:

$ (( kujieleza )

Maneno hayo yanatendewa kama yalivyo ndani ya quotes mbili, lakini kiwango cha mara mbili ndani ya mababu haukutibiwa maalum. Ishara zote katika maneno hupanua upanuzi wa parameter, upanuzi wa kamba, badala ya amri, na uondoaji wa quote. Kubadilishana kwa hesabu inaweza kuwa na kiota.

Tathmini inafanywa kulingana na sheria zilizoorodheshwa hapa chini chini ya UCHIMU WA ARITHMETIC . Ikiwa kujieleza ni batili, bash husababisha ujumbe unaoonyesha kushindwa na hakuna ubadilishaji hutokea.

Mchakato Mchakato

Mchakato mbadala hutumiwa kwenye mifumo inayounga mkono mabomba ( FIFOs ) au njia / dev / fd ya kutaja faili wazi. Inachukua fomu ya <( orodha ) au > ( orodha ) . Orodha ya mchakato inaendeshwa na pembejeo au pato lake lililounganishwa na FIFO au faili fulani katika / dev / fd . Jina la faili hii limepitishwa kama hoja kwa amri ya sasa kama matokeo ya upanuzi. Ikiwa fomu > ( orodha ) itatumika, kuandika kwa faili itatoa pembejeo kwa orodha . Ikiwa fomu <( orodha ) itatumiwa, faili iliyopitishwa kama hoja inapaswa kusoma ili kupata pato la orodha .

Ipo inapatikana, mchakato mbadala hufanyika wakati huo huo na upangaji na upanuzi wa kutofautiana, badala ya amri, na upanuzi wa hesabu.

Neno kupiga

Hifadhi huchunguza matokeo ya upanuzi wa parameter, badala ya amri, na upanuzi wa hesabu ambao haukutokea ndani ya quotes mbili za kugawanya neno .

Hifadhi huchukua kila tabia ya IFS kama delimiter, na hufafanua matokeo ya mwingine kupanua kwa maneno juu ya wahusika hawa. Ikiwa IFS imefungua, au thamani yake ni , default, basi mlolongo wowote wa wahusika wa IFS hutumikia kupitisha maneno. Ikiwa IFS ina thamani nyingine isipokuwa chaguo-msingi, basi ufuatiliaji wa nafasi ya wahusika wa whitespace na kichupo hupuuzwa mwanzoni na mwisho wa neno, kama vile tabia ya whitespace ina thamani ya IFS (tabia ya IFS ya whitespace). Tabia yoyote katika IFS ambayo sio safu ya IFS , pamoja na wahusika wowote wa karibu wa IFS , hupunguza shamba. Mlolongo wa wahusika wa whitespace wa kizunguko pia hutendewa kama mchezaji. Ikiwa thamani ya IFS haifai, hakuna kugawanyika kwa neno kutokea.

Maandishi ya wazi ya wazi ( "" au '' ) yanahifadhiwa. Hitilafu zisizokubalika zisizozingatia, ambazo husababishwa na upanuzi wa vigezo ambavyo hazina maadili, huondolewa. Ikiwa kipangilio kisicho na thamani kinapanuliwa ndani ya quotes mbili, matokeo ya hoja ya null na huhifadhiwa.

Kumbuka kwamba ikiwa hakuna upanuzi hutokea, hakuna kupasuka hakuna kazi.

Upanuzi wa jina

Baada ya kugawanyika kwa neno, isipokuwa chaguo - chaguo kimewekwa, bash hunata kila neno kwa wahusika * ,? , na [ . Ikiwa moja ya wahusika hawa yanaonekana, basi neno linachukuliwa kama mfano , na kubadilishwa na orodha ya alfabeti ya majina ya faili yanayolingana na muundo. Ikiwa hakuna majina ya faili yanayolingana yanapatikana, na chaguo la shellglob kisichozimwa , neno limeachwa bila kubadilika. Ikiwa chaguo la nullglob kinawekwa, na hakuna mechi zinazopatikana, neno limeondolewa. Ikiwa kisasa cha kichafu cha kichafu kinawezeshwa, mechi hiyo hufanyika bila kujali kesi ya wahusika wa alfabeti. Wakati mfano unatumiwa kupanua jina la jina, tabia ``. '' Mwanzo wa jina au mara moja baada ya kufungwa lazima iwe sawa kulingana na, isipokuwa kifaa cha dotglob kinachowekwa. Inapokutana na jina la njia, tabia ya slash lazima iwe sawa kabisa. Katika hali nyingine, tabia ``. '' Haipatikani maalum. Angalia maelezo ya chini chini ya SHELL BUILTIN COMMANDS kwa maelezo ya nocaseglob , nullglob , na chaguzi za shellg dot .

Vipengele vya GLOBIGNORE vya shell vinaweza kutumika kuzuia seti ya majina ya faili vinavyolingana na mfano . Ikiwa GLOBIGNORE imewekwa, kila jina linalofanana na faili linalolingana na moja ya ruwaza katika GLOBIGNORE imeondolewa kwenye orodha ya mechi. Majina ya faili ``. '' Na `` .. '' hupuuziwa daima, hata wakati GLOBIGNORE imewekwa. Hata hivyo, kuweka GLOBIGNORE kuna athari za kuwezesha chaguo la shellg dot , hivyo hivyo majina mengine yote ya faili yanayotokana na ``. '' Yatafanana . Ili kupata tabia ya zamani ya kupuuza majina ya faili kuanzia ``. ' , Fanya ``. *' ' Moja ya chati katika GLOBIGNORE . Chaguo la dotglob humezimwa wakati GLOBIGNORE imefunguliwa .

Ulinganifu wa Pattern

Tabia yoyote inayoonekana katika muundo, isipokuwa wahusika maalum wa mfano iliyoelezwa hapo chini, inafanana. Tabia ya NUL haiwezi kutokea kwa mfano. Wahusika wa mfano maalum wanapaswa kunukuliwa ikiwa watafananishwa halisi.

Wahusika wa mfano maalum wana maana zifuatazo:

*

Inalinganisha kamba yoyote, ikiwa ni pamoja na kamba ya null.

?

Inafanana na tabia yoyote.

[...]

Inafanana na yeyote kati ya wahusika walio karibu. Jozi ya wahusika waliojitenga na hyphen inaashiria maelezo mengi ; tabia yoyote inayofanana kati ya wahusika hao wawili, ikiwa ni pamoja, kwa kutumia mlolongo wa eneo la sasa na kuweka tabia, inafanana. Ikiwa tabia ya kwanza ifuatavyo [ ni ! au ^ basi tabia yoyote ambayo haijaunganishwa inafanana. Utaratibu wa kuchagua wa wahusika katika maneno mbalimbali hutegemea eneo la sasa na thamani ya variable ya LC_COLLATE shell, ikiwa imewekwa. A - inaweza kuendana na kuifanya ikiwa ni tabia ya kwanza au ya mwisho katika kuweka. A ] inaweza kuendana na kuifanya kama tabia ya kwanza katika kuweka.

Ndani ya [ na ] , madarasa ya tabia yanaweza kutajwa kwa kutumia syntax [: darasa :] , ambapo darasa ni mojawapo ya madarasa yafuatayo yaliyoelezwa katika kiwango cha POSIX.2:

alumini alpha kamacii tupu cntrl tarakimu graph chini print punct nafasi neno la juu xdigit
Darasa la tabia linalingana na tabia yoyote ya darasa hilo. Darasa la tabia ya maneno linalingana na barua, tarakimu, na tabia _.

Ndani ya [ na ] , darasa la kulinganisha linaweza kutafanuliwa kwa kutumia syntax [= c =] , ambayo inalingana na wahusika wote wenye uzito wa kutosha (kama ilivyoelezwa na eneo la sasa) kama tabia c .

Ndani [ na ] , syntax [. ishara .] inalingana na alama ya ishara ya kuunganisha.

Ikiwa chaguo la shell ya extlogi linawezeshwa kwa kutumia kujengwa kwa muda mrefu, watumiaji kadhaa wanaotambulishwa kwa mfano hutambuliwa. Katika maelezo yafuatayo, orodha ya muundo ni orodha ya chati moja au zaidi iliyotengwa na | . Mifumo ya utungaji inaweza kuundwa kwa kutumia moja au zaidi ya mifumo ndogo yafuatayo:

( mfano-orodha )

Inafanana zero au tukio moja la chati zilizopewa

* ( orodha ya muundo )

Inafanana na zero au matukio zaidi ya chati zilizopewa

+ ( orodha ya muundo )

Inafanana na matukio moja au zaidi ya chati zilizopewa

@ ( orodha ya mfano )

Inafanana mojawapo ya ruwaza zilizopewa

! ( mfano wa orodha )

Inafanana chochote isipokuwa moja ya chati zilizopewa

Kuondoa Quote

Baada ya kupanua uliopita, yote yaliyotafsiriwa ya wahusika \ , ' , na ' ambayo hayakutolewa kutokana na mojawapo ya maandamano hapo juu yameondolewa.

REDIRECTION

Kabla ya amri inafanywa, pembejeo na pato zake zinaweza kurekebishwa kwa kutumia notation maalum iliyotafsiriwa na shell. Ukombozi pia unaweza kutumika kufungua na kufunga files kwa sasa shell mazingira ya utekelezaji. Wafanyakazi wa redirection yafuatayo wanaweza kutangulia au kuonekana mahali popote ndani ya amri rahisi au wanaweza kufuata amri . Marekebisho yanapatiwa ili waweze kuonekana, kutoka kushoto kwenda kulia.

Katika maelezo yafuatayo, ikiwa nambari ya maelezo ya faili haifai, na tabia ya kwanza ya mtumiaji wa redirection ni < , redirection inahusu pembejeo ya kawaida (faili descriptor 0). Ikiwa tabia ya kwanza ya mtumiaji wa redirection ni > , redirection inahusu pato la kawaida (faili descriptor 1).

Neno lifuatayo operator wa redirection katika maelezo yafuatayo, isipokuwa kama ilivyoelezwa vinginevyo, inastahili kupanua upanuzi, upanuzi wa urefu, upanuzi wa parameter, badala ya amri, upanuzi wa hesabu, uondoaji wa quote, upanuzi wa jina, na ugawanishaji wa neno. Ikiwa inaongeza kwa neno zaidi ya moja, bash hunaripoti kosa.

Kumbuka kwamba utaratibu wa marekebisho ni muhimu. Kwa mfano, amri

ls > dirlist 2 > na 1

inaongoza pato zote na kiwango cha kawaida kwa dirlist faili, wakati amri

ls 2 > na 1 > dirlist

inaongoza pato la kawaida tu la faili ya dirlist , kwa sababu kosa la kawaida lilipinduliwa kama pato la kawaida kabla ya pato kiwango ilirekebishwa kwa dirlist .

Bash inashughulikia majina kadhaa ya faili hasa wakati hutumiwa katika redirections, kama ilivyoelezwa kwenye meza ifuatayo:

/ dev / fd / fd

Ikiwa fd ni integer halali, faili descriptor fd ni duplicated.

/ dev / stdin

Faili ya maelezo ya faili ni 2.

/ dev / stdout

Faili ya maelezo ya faili 1 inachukuliwa.

/ dev / stderr

File descriptor 2 inapigwa.

/ dev / tcp / mwenyeji / bandari

Ikiwa mwenyeji ni jina la jeshi la kibali au anwani ya wavuti, na bandari ni nambari ya bandari ya jumla au jina la huduma, kujaribu majaribio ya kufungua uhusiano wa TCP kwenye tundu lanayofanana.

/ dev / udp / host / bandari

Ikiwa mwenyeji ni jina la mwenyeji sahihi au anwani ya mtandao, na bandari ni nambari ya bandari ya integu au jina la huduma, kujaribu majaribio ya kufungua uunganisho wa UDP kwenye tundu lanayofanana.

Kushindwa kufungua au kuunda faili husababisha redirection kushindwa.

Kuingiza Kuingiza

Upungufu wa pembejeo husababisha faili ambayo matokeo ya jina kutoka kwa upanuzi wa neno ili kufunguliwa kwa kusoma kwenye maelezo ya faili n , au pembejeo ya kawaida (faili descriptor 0) kama n si maalum.

Fomu ya jumla ya kurekebisha pembejeo ni:

[ n ] < neno

Kuagiza Pembejeo

Upungufu wa pato husababisha faili ambayo matokeo ya jina kutoka kwa upanuzi wa neno ili kufunguliwa kwa kuandika kwenye maelezo ya faili n , au pato la kawaida (faili descriptor 1) kama n si maalum. Ikiwa faili haipo imeundwa; ikiwa inakuwapo ni truncated kwa ukubwa wa sifuri.

Fomu ya jumla ya kurekebisha pato ni:

[ n ] > neno

Ikiwa mpangilio wa redirection ni > , na chaguo la nobobber kwenye kuweka imewekwa imewezeshwa, redirection itashindwa kama faili ambayo jina lake linatokana na upanuzi wa neno lipo na ni faili ya kawaida. Ikiwa operator wa redirection ni > | , au mtumiaji wa redirection ni > na chaguo la nobobber kwa amri iliyowekwa kujengwa haijawezeshwa, redirection hujaribu hata kama faili iliyoitwa na neno ipo.

Inatumia Pembejeo Iliyorekebishwa

Upungufu wa pato kwa mtindo huu husababisha faili ambayo matokeo ya jina kutoka kwa upanuzi wa neno ili kufunguliwa kwa kutumia kwenye faili descriptor n , au pato la kawaida (faili descriptor 1) kama n si maalum. Ikiwa faili haipo imeundwa.

Fomu ya jumla ya programu ya appending ni:

[ n ] >> neno

Inaelezea Pato la Standard na Hitilafu ya kawaida

Bash inaruhusu pato la kawaida (faili descriptor 1) na pato kiwango cha kawaida (faili descriptor 2) ili kurekebishwa kwenye faili ambayo jina lake ni upanuzi wa neno na ujenzi huu.

Kuna aina mbili za kurekebisha pato la kawaida na kosa la kawaida:

&> neno

na

> & neno

Ya fomu hizo mbili, wa kwanza hupendekezwa. Hii ni sawa na sawa

> neno 2 > & 1

Hapa Nyaraka

Aina hii ya redirection inaelezea shell ili kusoma pembejeo kutoka kwa chanzo cha sasa mpaka mstari ulio na neno pekee (bila safu za kufuata) huonekana. Mstari wote unaosoma hadi hatua hiyo hutumiwa kama pembejeo ya kawaida kwa amri.

Fomu ya hati hizi hapa ni:

<< [ - ] neno hapa-hati delimiter

Hakuna upanuzi wa parameter, badala ya amri, upanuzi wa hesabu, au upanuzi wa jina hufanyika kwa neno . Ikiwa wahusika yoyote katika neno wanasukuliwa, delimiter ni matokeo ya kuondolewa kwa quote kwa neno , na mistari katika hati hii hapa haipanuzi. Ikiwa neno halijatibiwa, mstari wote wa hati hii hapa ni chini ya upanuzi wa parameter, badala ya amri, na upanuzi wa hesabu. Katika kesi ya mwisho, mlolongo wa tabia \ haupuuliwi, na \ lazima kutumika kutumiwa wahusika \ , $ , na ` .

Ikiwa mpangilio wa redirection ni << - , basi wahusika wote wa kichwa cha kuongoza huondolewa kwenye mistari ya uingizaji na mstari ulio na delimiter . Hii inaruhusu nyaraka hapa ndani ya scripts za shell ili ziweke kwa mtindo wa asili.

Hapa Nguvu

Tofauti ya nyaraka hapa, muundo ni:

<<< neno

Neno hupanuliwa na hutolewa kwa amri kwenye mchango wake wa kawaida.

Kujumuisha Descriptors ya Picha

Mtumiaji wa redirection

[ n ] <& neno

hutumiwa kuchapisha maelezo ya faili ya pembejeo. Ikiwa neno linasambaza kwa tarakimu moja au zaidi, faili ya faili inayoashiria n inafanywa kuwa nakala ya faili hiyo ya faili. Ikiwa tarakimu katika neno hazifafanuzi descriptor faili kufunguliwa kwa pembejeo, kosa redirection hutokea. Ikiwa neno linatathmini kwa - , faili descriptor n imefungwa. Ikiwa n si maalum, pembejeo ya kawaida (faili descriptor 0) inatumiwa.

Mtumiaji

[ n ] > & neno

hutumiwa sawa na kurudia maelezo ya faili za pato. Ikiwa n si maalum, pato la kawaida (faili descriptor 1) linatumiwa. Ikiwa tarakimu katika neno hazifafanuzi descriptor faili kufunguliwa kwa pato, kosa redirection hutokea. Kama kesi maalum, kama n imefungwa, na neno halipanuzi kwa tarakimu moja au zaidi, pato la kawaida na kosa la kawaida huelekezwa kama ilivyoelezwa hapo awali.

Kuhamisha Descriptors za Picha

Mtumiaji wa redirection

[ n ] tarakimu -

husababisha faili ya descriptor faili na maelezo ya faili n , au pembejeo ya kawaida (faili descriptor 0) kama n si maalum. tarakimu imefungwa baada ya kuchukuliwa kwa n .

Vile vile, mtumiaji wa redirection

[ n ] > na tarakimu -

husababisha faili ya maelezo ya faili na maelezo ya faili n , au pato la kawaida (faili descriptor 1) kama n si maalum.

Kufungua Waandishi wa Picha kwa Kusoma na Kuandika

Mtumiaji wa redirection

[ n ] <> neno

husababisha faili ambayo jina lake ni upanuzi wa neno ili kufunguliwa kwa kusoma na kuandika kwenye descriptor faili n , au kwenye maelezo ya faili kama n si maalum. Ikiwa faili haipo, imeundwa.

MAFUNZO

Vipengee vinawezesha kamba kuingizwa kwa neno linapotumiwa kama neno la kwanza la amri rahisi. Hifadhi hiyo ina orodha ya vikwazo ambavyo vinaweza kuweka na kutenganishwa na amri za awali na uliasis (tazama SHELL BUILTIN COMMANDS chini). Neno la kwanza la kila amri, ikiwa haijatibiwa, hunachunguliwa ili kuona ikiwa lina hali. Ikiwa ndivyo, neno hilo linachukuliwa na maandishi ya viungo. Jina la alias na maandishi ya uingizaji yanaweza kuwa na pembejeo yoyote ya halali ya kichwani , ikiwa ni pamoja na metacharacters zilizoorodheshwa hapo juu, isipokuwa kuwa jina la alias haliwezi kuwa na = . Neno la kwanza la maandishi ya uingizaji hupimwa kwa vyuo vikuu, lakini neno ambalo linafanana na lililopanuliwa halijapanuliwa mara ya pili. Hii inamaanisha kwamba mtu anaweza kuwa na ls -F , kwa mfano, na bash hajaribu kupanua kwa mara kwa mara maandishi ya uingizaji. Ikiwa tabia ya mwisho ya thamani ya alias ni tupu , basi neno la amri inayofuata zifuatazo pia linafuatiwa kwa upanuzi wa alia.

Vipengee vimeundwa na kuorodheshwa na amri ya alias , na kuondolewa kwa amri ya ulias .

Hakuna njia ya kutumia hoja katika maandishi ya uingizaji. Ikiwa hoja zinahitajika, kazi ya shell lazima itumike (tazama FUNCTIONS chini).

Vipeperushi hazipanukiki wakati shell haiingiliani , isipokuwa chaguo la kupanua_aliases la shell linawekwa kwa kutumia papo hapo (angalia maelezo ya chini chini ya SHELL BUILTIN COMMANDS hapa chini).

Sheria kuhusu ufafanuzi na matumizi ya vikwazo ni kiasi fulani cha kuchanganya. Bash daima inasoma angalau mstari kamili wa pembejeo kabla ya kutekeleza amri yoyote kwenye mstari huo. Vipengee vinapanuliwa wakati amri inasomewa, si wakati inafanywa. Kwa hiyo, ufafanuzi wa alias unaoonekana kwenye mstari huo sawa na amri nyingine haifanyi kazi hadi mstari wa pili wa pembejeo unasomwa. Amri zifuatazo ufafanuzi wa alias kwenye mstari huo haziathiriwa na mipangilio mpya. Tabia hii pia ni suala wakati kazi zinafanywa. Vipengee vinapanuliwa wakati ufafanuzi wa kazi unasomwa, si wakati kazi inafanywa, kwa sababu ufafanuzi wa kazi ni yenyewe amri ya kiwanja. Kwa hiyo, vyuo vilivyoelezwa katika kazi haipatikani mpaka baada ya kazi hiyo kutekelezwa. Ili kuwa salama, daima kuweka ufafanuzi wa alia kwenye mstari tofauti, na usitumie alias katika amri za kiwanja.

Kwa karibu kila kusudi, vyuo vikuu vinaingizwa na kazi za shell.

FUNCTIONS

Kazi ya shell, iliyofafanuliwa kama ilivyoelezwa hapo juu chini ya SHELL GRAMMAR , huhifadhi mfululizo wa amri za utekelezaji wa baadaye. Wakati jina la kazi ya shell hutumiwa kama jina la amri rahisi, orodha ya amri inayohusishwa na jina la kazi hufanyika. Kazi zinafanyika katika muktadha wa sasa; hakuna mchakato mpya unaotengenezwa ili uwafasiri (tofauti hii na utekelezaji wa script shell). Wakati kazi inafanywa, hoja za kazi zinakuwa vigezo vya mpito wakati wa utekelezaji wake. Kipengele maalum # kinasasishwa ili kutafakari mabadiliko. Mpangilio wa Kipengee 0 haujabadilishwa. Tofauti ya FUNCNAME imewekwa kwa jina la kazi wakati kazi inafanya. Vipengele vingine vingine vya mazingira ya utekelezaji wa shell vinafanana kati ya kazi na mpigaji wake isipokuwa kuwa mtego wa DEBUG (tazama maelezo ya mtego uliojengwa chini ya SHELL BUILTIN COMMANDS hapa chini) sio urithi isipokuwa kazi imepewa sifa ya kufuatilia ( tazama maelezo ya kutangaza yaliyojengwa hapo chini).

Vigezo vya ndani kwa kazi vinaweza kutangazwa na amri ya ndani ya kujengwa. Kawaida, vigezo na maadili yao vinashirikiwa kati ya kazi na mpigaji wake.

Ikiwa kurudi amri iliyojengwa inatekelezwa katika kazi, kazi hukamilisha na kutekeleza huanza tena na amri ijayo baada ya wito wa kazi. Wakati kazi ikamilika, maadili ya vigezo vya mpangilio na parameter maalum # hurejeshwa kwa maadili waliyo nayo kabla ya utekelezaji wa kazi.

Majina ya kazi na ufafanuzi zinaweza kuorodheshwa na -a chaguo la kutangaza au aina za amri za kujengwa. Chaguo -F cha kutangaza au typeset kitatayarisha majina ya kazi tu. Kazi zinaweza kutumiwa nje ili kuwasilisha kwa moja kwa moja kuwafafanuliwa kwa -f chaguo la kujengwa nje .

Kazi inaweza kuwa ya kawaida. Hakuna kikomo kinachowekwa kwenye idadi ya wito zinazoendelea.

UCHIMU WA ARITHMETIC

Hifadhi inaruhusu maneno ya hesabu kuhesabiwa, chini ya hali fulani (angalia amri iliyojengwa na Ugani wa Arithmetic ). Tathmini inafanywa katika integers ya upana wa kudumu bila hundi ya kuongezeka, ingawa mgawanyiko na 0 imepigwa na kuashiria kama kosa. Waendeshaji na utangulizi wao na ushirika ni sawa na lugha ya C. Orodha yafuatayo ya waendeshaji imewekwa katika viwango vya waendeshaji sawa. Viwango vimeorodheshwa kwa utaratibu wa kupungua kwa utangulizi.

id ++ id -

kutofautiana baada ya kuongezeka na baada ya kupunguzwa

+ + id - id

kutofautiana kabla na kupunguzwa

- +

unary minus na pamoja

! ~

kinyume cha mantiki na kidogo

**

exponentiation

* /%

kuzidisha, mgawanyiko, salio

+ -

Aidha, kuondoa

<< >>

kushoto na kulia mabadiliko kidogo

<=> = <>

kulinganisha

==! =

usawa na usawa

&

bitwise NA

^

bitwise kipekee OR

|. |

Bila shaka

&&

NA NI

||

mantiki OR

expr ? expr : expr

tathmini ya masharti

= * = / =% = + = - = << = >> = & = ^ = | =

kazi

expr1 , expr2

soma

Vigezo vya Shell vinaruhusiwa kama waendeshaji; Upanuzi wa parameter hufanyika kabla ya maelezo ya kutathmini. Ndani ya maneno, vigezo vya shell inaweza pia kutajwa kwa jina bila kutumia syntax ya kupanua parameter. Thamani ya kutofautiana inapimwa kama kujieleza kwa hesabu wakati inapoelezewa. Tofauti ya shell haifai kuwa na sifa zake zote zimegeuka kutumika kwa maneno.

Mara kwa mara wanaoongoza 0 hutafsiriwa kama idadi ya octal. A 0x au 0X inayoongoza inaashiria hexadecimal. Vinginevyo, idadi huchukua fomu [ msingi # ] n, ambapo msingi ni nambari ya decimal kati ya 2 na 64 inayowakilisha msingi wa hesabu, na n ni namba katika msingi huo. Ikiwa msingi # umekoma, basi msingi wa msingi 10 hutumiwa. Ya tarakimu zaidi ya 9 zinawakilishwa na barua za chini, barua za ukubwa, @, na _, kwa utaratibu huo. Ikiwa msingi ni chini ya au sawa na 36, ​​barua za chini na majina zinaweza kutumiwa kwa njia tofauti kwa kuwakilisha idadi kati ya 10 na 35.

Waendeshaji wanapimwa kwa utaratibu wa utangulizi. Maneno ya chini ya maadili yanatathminiwa kwanza na yanaweza kuondokana na sheria za awali.

MAELEZO YA MAJIBU

Maneno ya masharti yanatumiwa na [[ amri ya kiwanja na mtihani na [ amri ya kujengwa ili kupima sifa za faili na kufanya kamba na kulinganisha hesabu. Maneno yanafanywa kutoka kwa nyaraka zisizofuata au za binary zifuatazo. Ikiwa hoja yoyote ya faili kwenye mojawapo ya msingi ni ya fomu / dev / fd / n , kisha faili ya faili n inachunguzwa. Ikiwa hoja ya faili kwenye moja ya msingi ni moja ya / dev / stdin , / dev / stdout , au / dev / stderr , maelezo ya faili 0, 1, au 2, kwa mtiririko huo, ni checked.

-a faili

Kweli ikiwa faili iko.

-b faili

Kweli ikiwa faili iko na ni faili maalum ya kuzuia.

-c faili

Kweli ikiwa faili iko na ni faili maalum ya tabia.

-d faili

Kweli ikiwa faili iko na ni saraka.

-faili

Kweli ikiwa faili iko.

-f faili

Kweli ikiwa faili iko na ni faili ya kawaida.

-g faili

Kweli ikiwa faili iko na imewekwa-kikundi-id.

-f faili

Kweli ikiwa faili iko na ni kiungo cha mfano.

-k faili

Kweli ikiwa faili ipo na bit `` sticky '' yake imewekwa.

-p faili

Kweli ikiwa faili iko na ni bomba lililoitwa (FIFO).

-r faili

Kweli ikiwa faili iko na inaonekana.

-s faili

Kweli ikiwa faili iko na ina ukubwa mkubwa kuliko sifuri.

-t fd

Kweli ikiwa faili ya faili ya fd ni wazi na inahusu terminal.

-u faili

Kweli ikiwa faili iko na bit yake ya mtumiaji-id imewekwa.

-w faili

Kweli ikiwa faili iko na imeandikwa.

-x faili

Kweli ikiwa faili iko na inaweza kutekelezwa.

-O faili

Kweli ikiwa faili iko na inamilikiwa na id idhini ya mtumiaji.

-G faili

Kweli ikiwa faili iko na inamilikiwa na id idhini ya kikundi.

-L faili

Kweli ikiwa faili iko na ni kiungo cha mfano.

-S faili

Kweli ikiwa faili iko na ni tundu.

N- faili

Kweli ikiwa faili iko na imebadilishwa tangu ilikuwa ya mwisho kusoma.

file1 - nt file2

Kweli ikiwa faili1 ni mpya (kulingana na tarehe ya mabadiliko) kuliko faili2 , au kama file1 ipo na faili2 haifai.

faili1 - ot file2

Kweli ikiwa file1 ni ya zamani zaidi kuliko file2 , au kama file2 ipo na faili1 haifai.

file1 -ef file2

Kweli ikiwa file1 na file2 hutaja kifaa sawa na nambari za inode.

-a optname

Kweli ikiwa chaguo la shell la optname linawezeshwa . Angalia orodha ya chaguo chini ya maelezo ya -o chaguo kwenye kuweka iliyowekwa chini.

-n kamba

Kweli ikiwa urefu wa kamba ni sifuri.

-n kamba

kamba

Kweli ikiwa urefu wa kamba sio sifuri.

string1 == string2

Kweli ikiwa masharti ni sawa. = inaweza kutumika katika nafasi ya == kwa kufuata kali POSIX.

string1 ! = string2

Kweli ikiwa masharti hayafanani.

string1 < string2

Kweli ikiwa aina 1 ya aina kabla ya string2 lexicographically katika eneo la sasa.

string1 > string2

Kweli ikiwa string1 aina baada ya string2 lexicographically katika eneo la sasa.

arg1 OP arg2

OP ni moja ya -eq , -ne , -lt , -le , -gt , au -ge . Wafanyabiashara hawa wa binary kurudi kweli kama arg1 ni sawa na, si sawa na, chini ya, chini au sawa, kubwa kuliko, au kubwa kuliko au sawa na arg2 , kwa mtiririko huo. Arg1 na arg2 inaweza kuwa na integers nzuri au hasi.

UFUNZO WA KUTUMA MASHARA

Wakati amri rahisi inapotekelezwa, shell hufanya ufuatiliaji, majukumu, na marekebisho yafuatayo, kutoka kushoto kwenda kulia.

1.

Maneno ambayo mtangazaji ameweka kama kazi za kutofautiana (wale wanaotangulia jina la amri) na marekebisho huhifadhiwa kwa ajili ya usindikaji baadaye.

2.

Maneno ambayo sio kazi tofauti au marekebisho yanapanuliwa. Ikiwa maneno yoyote yanaendelea baada ya upanuzi, neno la kwanza linachukuliwa kuwa jina la amri na maneno iliyobaki ni hoja.

3.

Marekebisho yanafanyika kama ilivyoelezwa hapo chini chini ya REDIRECTION .

4.

Maandishi baada ya = katika kila kazi ya kutofautiana huwa na upanuzi wa urefu, upanuzi wa parameter, udhibiti wa amri, upanuzi wa hesabu, na uondoaji wa nukuu kabla ya kupewa kwa kutofautiana.

Ikiwa hakuna matokeo ya jina la amri, kazi za kutofautiana zinaathiri mazingira ya sasa ya shell. Vinginevyo, vigezo vinaongezwa kwenye mazingira ya amri iliyotumiwa na haipaswi kuathiri mazingira ya sasa ya shell. Ikiwa kazi yoyote inajaribu kugawa thamani kwa kutofautiana kwa readonly, kosa hutokea, na amri hutoka kwa hali isiyo ya sifuri.

Ikiwa hakuna matokeo ya jina la amri, marekebisho yanafanywa, lakini hayanaathiri mazingira ya sasa ya shell. Hitilafu ya redirection inasababisha amri ya kuondoka kwa hali isiyo ya sifuri.

Ikiwa kuna jina la amri iliyoachwa baada ya upanuzi, mapato ya utekelezaji kama ilivyoelezwa hapo chini. Vinginevyo, amri inatoka. Ikiwa moja ya maandamano yaliyomo badala ya amri, hali ya kuondoka ya amri ni hali ya kuondoka ya kubadilisha nafasi ya mwisho. Ikiwa hapakuwa na mabadiliko ya amri, amri hutoka na hali ya sifuri.

UFUNZO WA KUTUMA

Baada ya amri imegawanyika kuwa maneno, ikiwa inakuja kwa amri rahisi na orodha ya hiari ya hoja, hatua zifuatazo zinachukuliwa.

Ikiwa jina la amri haijapungua, shell inajaribu kuipata. Ikiwa kuna kazi ya shell kwa jina hilo, kazi hiyo inatakiwa kama ilivyoelezwa hapo juu katika FUNCTIONS . Ikiwa jina hailingani na kazi, shell huifuta kwenye orodha ya kujengwa kwa shell. Ikiwa mechi inapatikana, kujengwa hiyo inakaribishwa.

Ikiwa jina sio kazi ya shell wala si kujengwa, na haina slashes, bash hunta kila kipengele cha PATH kwa saraka yenye faili inayoweza kutekelezwa kwa jina hilo. Bash hutumia meza ya hashi kukumbuka njia kamili za faili zinazoweza kutekelezwa (tazama hash chini ya SHELL BUILTIN COMMANDS hapa chini). Utafutaji kamili wa waandishi wa habari katika PATH unafanywa tu ikiwa amri haipatikani kwenye meza ya hashi. Ikiwa utafutaji haukufanikiwa, shell inaandika ujumbe wa kosa na inarudi hali ya kuondoka ya 127.

Ikiwa utafutaji unafanikiwa, au ikiwa jina la amri linapungua moja au zaidi, shell hufanya programu iliyoitwa katika mazingira tofauti ya utekelezaji. Mgongano 0 umewekwa kwa jina lililopewa, na hoja zilizobaki kwa amri zimewekwa kwenye hoja zilizotolewa, ikiwa zipo.

Ikiwa utekelezaji huu unashindwa kwa sababu faili haiko katika muundo wa kutekeleza, na faili sio saraka, inadhaniwa kuwa script ya shell , faili iliyo na amri za shell. Subshell hujazwa ili kuifanyia. Siri hii inajitengeneza yenyewe, ili athari ni kama shell mpya ilikuwa imetayarishwa kushughulikia script, isipokuwa kuwa mahali pa amri kukumbukwa na mzazi (angalia hash chini chini ya SHELL BUILTIN COMMANDS ) zinalindwa na mtoto.

Ikiwa programu ni faili inayoanza na #! , safu ya mstari wa kwanza inataja mkalimani wa programu. Hifadhi hufanya mkalimani maalum juu ya mifumo ya uendeshaji ambayo haipatii muundo huu wa kutekeleza wenyewe. Majadiliano kwa mkalimani huwa na hoja moja ya hiari ifuatayo jina la mkalimani kwenye mstari wa kwanza wa programu, ikifuatiwa na jina la programu, ikifuatiwa na hoja za amri, ikiwa zipo.

MAELEZO YA MAENDELEO MAHIMU

Hifadhi ina mazingira ya utekelezaji , ambayo yana yafuatayo:

*

Fungua faili zilizotajwa na shell wakati wa kuomba, kama ilivyobadilishwa na marekebisho yaliyotolewa kwa kutekelezwa

*

saraka ya kazi ya sasa kama ilivyowekwa na cd , pushd , au popd , au kurithi na shell katika kuomba

*

faili ya uumbaji wa faili kama ilivyowekwa na umask au kurithi kutoka kwa mzazi wa shell

*

mitego ya sasa iliyowekwa na mtego

*

vigezo vya shell ambazo zinawekwa na kazi tofauti au kwa kuweka au kurithi kutoka kwa mzazi wa shell katika mazingira

*

kazi za shell hufafanuliwa wakati wa kutekelezwa au kurithi kutoka kwa mzazi wa shell katika mazingira

*

chaguo kuwezeshwa katika kuomba (ama kwa chaguo-msingi au kwa hoja za mstari wa amri) au kwa kuweka

*

chaguo zimewezeshwa kwa haraka

*

safu za shell zimefafanuliwa na vingine

*

Vitambulisho mbalimbali vya mchakato, ikiwa ni pamoja na kazi za nyuma, thamani ya $$ , na thamani ya $ PPID

Wakati amri rahisi zaidi ya kazi iliyojengwa au shell ni kutekelezwa, inatakiwa katika mazingira tofauti ya utekelezaji ambayo yana yafuatayo. Isipokuwa ifafanuliwa vinginevyo, maadili yanatokana na shell.

*

mafaili ya wazi ya shell, pamoja na marekebisho yoyote na nyongeza zilizotajwa na marekebisho kwa amri

*

saraka ya kazi ya sasa

*

mask mode ya kuunda faili

*

vigezo vya shell zilizowekwa alama kwa ajili ya mauzo ya nje, pamoja na vigezo vilivyo nje kwa amri, hupita kwenye mazingira

*

mitego iliyopatikana na shell imewekwa upya kwa maadili ambayo yamerithi kutoka kwa mzazi wa shell, na mitego iliyopuuzwa na shell hupuuzwa

Amri inayotakiwa katika mazingira haya tofauti haiwezi kuathiri mazingira ya utekelezaji wa shell.

Amri mbadala na amri zisizo za kawaida zinatakiwa kwenye mazingira ya chini ambayo ni duplicate ya mazingira ya shell, isipokuwa mitego ambayo imechukuliwa na shell inarejeshwa kwa maadili ambayo shell hurithi kutoka kwa mzazi wake kwa kuomba. Amri zilizojengwa ambazo zinatakiwa kama sehemu ya bomba zinafanyika pia kwenye mazingira ya chini. Mabadiliko yaliyofanywa kwenye mazingira ya chini hawezi kuathiri mazingira ya utekelezaji wa shell.

Ikiwa amri ikifuatiwa na udhibiti wa & & kazi haifanyi kazi, pembejeo ya kiwango cha kawaida ya amri ni faili tupu / dev / null . Vinginevyo, amri inayotakiwa hurithi faili za faili za wito kama ilivyobadilishwa na marekebisho.

ANGALIA PIA

Mwongozo wa Bash Reference , Brian Fox na Chet Ramey

Maktaba ya Soma ya Gnu , Brian Fox na Chet Ramey

Maktaba ya Historia ya Gnu , Brian Fox na Chet Ramey

Muda wa Uendeshaji wa Mfumo wa Uendeshaji (POSIX) Sehemu ya 2: Shell na Huduma , IEEE

sh (1), ksh (1), csh (1)

emacs (1), vi (1)

usomaji (3)