Bash - Linux Command - Unix пәрмені

NAME

bash - GNU Bourne-Again Шелл

Синопсис

bash [опциялар] [файл]

СИПАТТАМАСЫ

Bash - стандартты енгізуден немесе файлдан оқу пәрмендерін орындайтын sh- үйлесімді пәрмен тілі аудармашы. Bash сондай-ақ Korn және C қабықшаларының ( ksh және csh ) пайдалы мүмкіндіктерін қамтиды.

Bash IEEE POSIX Shell және құралдар спецификациясын (IEEE жұмыс тобы 1003.2) үйлесімді түрде іске асыруға арналған.

ОПЦИЯЛАР

Орнатылған пәрменнің сипаттамасында құжатталған жалғыз таңбалы қабық опцияларынан басқа, bash интерфейсінде келесі опцияларды түсіндіреді:

-c string

Егер -c параметрі болса, онда пәрмендер жолдан оқылады. Жолдан кейін дәлелдер болса, олар $ 0-ден бастап позициялық параметрлерге тағайындалады.

-i

Егер -i параметрі болса, қабық интерактивті болып табылады.

-l

Bash әрекетін кіру қабығы ретінде шақырылғандай жасаңыз (төмендегі INVOCATION бөлімін қараңыз).

Егер -r параметрі болса, қабықша шектеледі (төменде ШЕШІМДІ ШЕКТЕУ қараңыз).

Егер -s параметрі бар болса немесе параметрді өңдеуден кейін дәлелдер қалмаса, онда командалар стандартты енгізуден оқылады. Бұл параметр интерактивті қабықты шақырғанда позициялық параметрлерді орнатуға мүмкіндік береді.

-D

$ Алдында тұрған барлық қос тырнақшалар тізбесі стандартты оупута жазылады. Бұл ағымдық тіл C немесе POSIX емес болғанда, тілге аударуға жататын жолдар. Бұл -n опциясын білдіреді; ешқандай командалар орындалмайды.

[- +] O [ shopt_option ]

shopt_option - дүкен салынған (қабылданған SHELL BUILTIN COMMANDS бөлімін қараңыз) арқылы қабылданған қабығы параметрлері. Shopt_option бар болса, -O осы параметрдің мәнін орнатады; + O оны бөлектейді. Егер shopt_option жеткізілмесе, дүкен арқылы қабылданған қабық параметрлерін атаулары мен мәндері стандартты шығаруда басып шығарылады. Егер шақыру опциясы + O болса, шығыс енгізу ретінде қайта қолданылуы мүмкін пішімде көрсетіледі.

-

A - опциялардың аяқталуын сигналдар және қосымша опцияларды өңдеу мүмкіндігін ажыратады. Кейінгі аргументтер - файл атаулары мен дәлелдер ретінде қарастырылады. Аргумент - бұл балама - .

Баш сондай-ақ бірқатар көп таңбалы опцияларды түсіндіреді. Бұл опциялар пәрмен жолында танылатын бір таңбалы опциялардың алдында пайда болуы керек.

- dump-po-strings

-D-ға тең, бірақ шығу GNU gettext po (портативті нысан) файл пішімінде.

- dump-strings

-D-ға тең.

--Көмектесіңдер

Пайдалану туралы хабарламаны стандартты шығаруда көрсету және сәтті шығу.

- файл файл

--rcfile файлы

Егер қабық интерактивті болса, ( ~ INVOCATION бөлімін қараңыз) стандартты жеке инициализация файлының орнына ~ / .bashrc файлынан командаларды орындаңыз.

--кіру

-L-ға тең.

- Қарым-қатынас

GNU Readline кітапханасын қабығы интерактивті болған кезде командалық жолдарды оқу үшін пайдаланбаңыз.

- непрофиль

~ / .bash_profile , ~ / .bash_login немесе ~ / .profile жүйелік файлдарды / etc / profile немесе кез келген жеке баптандыру файлдарын оқымаңыз . Әдепкі бойынша, кіріс кабелі ретінде шақырылғанда, bash осы файлдарды оқиды (төмендегі INVOCATION бөлімін қараңыз).

--norc

Егер қабығы интерактивті болса, ~ / .bashrc жеке баптандыру файлын оқымаңыз және орындамаңыз. Бұл параметр әдепкі бойынша қосылады, егер қабықшасы sh сияқты шақырылса .

--posix

Бастапқы әрекеттің POSIX 1003.2 стандартынан стандартты ( posix режимі ) сәйкестігіне қарай айырмашылығы бар Bash әрекетін өзгерту.

- шектелген

Қабықша шектеледі (төменде ШЕКТЕУ ШЕШЕЛЕРІН қараңыз).

- Rpm - талап етіледі

Қабық сценарийін іске қосу үшін қажетті файлдар тізімін шығарыңыз. Бұл «-n» дегенді білдіреді және компиляция уақытын қате тексеруді тексеру сияқты шектеулерге ұшырайды; Backticks, [] тесттері мен жаңалықтары талданбайды, сондықтан кейбір тәуелділіктер жіберіп алуы мүмкін. -verbose -v -ге тең.

- түрлендіру

Нұсқалық мәліметтерді стандартты шығарудағы bash данасына көрсету және сәтті шығу.

АРТҚЫШТАР

Параметрді өңдеуден кейін дәлелдер қалса және -c де, -s параметрлері де берілмесе, алғашқы аргумент қабық командалары бар файлдың атауы деп есептеледі. Егер bash осы жолмен шақырылса, $ 0 файлдың атына орнатылады және позициялық параметрлер қалған аргументтерге орнатылады. Bash осы файлдан пәрмендерді оқиды және орындайды, содан кейін шығады. Бас шығу мәртебесі - сценарийде орындалған соңғы команданың шығу мәртебесі. Ешбір команда орындалмаса, exit мәртебесі 0 болып табылады. Алдымен файлды ағымдағы каталогта ашуға әрекет жасалды және егер ешқандай файл табылмаса, онда қабат сценарий үшін PATH каталогтарын іздейді.

INVOCATION

Логин қабықшасы - дәлелдің нөлдік бірінші таңбасы - немесе --login опциясымен басталған.

Интерактивті қабық-бір опциональды емес аргументтері жоқ және стандартты енгізу және шығару терминалдарға ( isatty (3) бойынша анықталған) немесе -i опциясынан басталған -c опциясынсыз басталады. PS1 орнатылды және $ - i bash интерактивті болса, ол қабық сценарийін немесе іске қосу файлын осы күйді тексеруге мүмкіндік береді.

Келесі параграфтар іске қосу файлдарын қалай іске асыратынын сипаттайды. Егер қандай да бір файлдар бар, бірақ оқуға болмайды, bash қате туралы хабарлайды. Tildes EXPLANION бөліміндегі Tilde Expansion астында төменде сипатталғандай файл аттарында кеңейтіледі.

Bash интерактивті кіру қабығы ретінде шақырылғанда немесе --login параметрі бар интерактивті емес қабық ретінде, ол алдымен файлды / etc / profile файлынан пәрмендерді оқиды және орындайды. Бұл файлды оқығаннан кейін, ол ~ / .bash_profile , ~ / .bash_login және ~ / .profile деп аталған тәртіпте іздейді және бар және оқуға болатын бірінші біреуден пәрмендерді оқиды және орындайды. - Неопрофильный опция қабықшаның осы әрекетті болдырмай бастаған кезде пайдаланылуы мүмкін.

Кіру снаркасы шыққанда, bash егер ~ бар болса, ~ / .bash_logout файлынан пәрмендерді оқиды және орындайды.

Логин қабы емес интерактивті қабық басталғанда, bash бұл файл бар болса ~ / .bashrc файлынан оқиды және орындалады. Бұл --norc опциясын қолдану арқылы тыйым салынуы мүмкін. --rcfile файл опциясы ~ / .bashrc орнына файлдан пәрмендерді оқуды және орындауды күшейтеді .

Bash интерактивті емес кезде, қапшықтың сценарийін іске қосу үшін, мысалы, BASH_ENV айнымалы мәнін ортада іздейді, егер ол пайда болса, оның мәнін кеңейтеді және кеңейтілген мәнді оқуға және орындауға арналған файлдың атауы ретінде пайдаланады . Баш келесі пәрменді орындағандай әрекет етеді:

егер [-n «$ BASH_ENV»] болса; содан кейін. «$ BASH_ENV»; fi

бірақ PATH айнымалы мәні файл атауын іздеу үшін пайдаланылмайды.

Егер bash аты sh атымен аталса , онда ол POSIX стандартына сәйкес бола отырып, SH нұсқасының тарихи нұсқаларын іске қосу әрекетін мүмкіндігінше мимикамен салыстыруға тырысады. Интерактивті кіру қабығы ретінде шақырылғанда немесе --login опциясымен интерактивті емес қапталған кезде ол алдымен осы тәртіпте / etc / profile және ~ / .profile командаларын оқып, орындауға тырысады. Бұл әдіске тыйым салу үшін - noprofile параметрі пайдаланылуы мүмкін. Ш атауымен интерактивті қабық ретінде шақырғанда, BAS ENV айнымалысын іздейді, анықталған болса, оның мәнін кеңейтеді және кеңейтілген мәнді оқу және орындау үшін файлдың атауы ретінде пайдаланады. Себет ретінде шақырылған қабық басқа іске қосу файлдарынан пәрмендерді оқып, орындауға әрекет жасамаса, --rcfile параметрі ешқандай нәтиже бермейді. Ш атауымен шақырылған интерактивті емес қабық басқа ешқандай бастау файлдарын оқи алмайды. Ш сияқты шақырғанда, бас бастау файлдары оқылғаннан кейін poshix режиміне өтеді.

Bash посиx режимінде, --posix пәрмен жолы опциясымен басталған кезде, файлдарды іске қосу үшін POSIX стандартына сүйенеді. Бұл режимде интерактивті қабықшалар ENV айнымалысын кеңейтеді және пәрмендер кеңейтілген мән болып табылатын файлдан оқылады және орындалады. Басқа старт-файлдар оқылмайды.

Bash қашықтағы қабықтың қашан орындалатындығын анықтауға тырысады, әдетте rshd . Егер bash айқындайды, оны rshd басқарады, онда ол оқиды және ~ / .bashrc командаларын орындайды, егер бұл файл бар және оқуға болады. Ол sh деп аталса, мұны жасамайды. --norc опциясы осы әрекетті болдырмау үшін пайдаланылуы мүмкін, және --rcfile параметрі басқа файлды оқуға мәжбүрлеу үшін пайдаланылуы мүмкін, бірақ rshd әдетте сол параметрлермен қабықшаны шақырмайды немесе оларды көрсетуге мүмкіндік береді.

Егер қабығы нақты пайдаланушы (топ) идентификаторына емес, тиімді пайдаланушы (топ) идентификаторымен басталса және -p параметрі берілмесе, іске қосу файлдары оқылмайды, қабық функциялары қоршаған ортаға мұраланбайды , SHELLOPTS айнымалы, егер ол ортада пайда болса, еленбейді және тиімді пайдаланушы идентификаторы нақты пайдаланушы идентификаторына орнатылады. Егер -p опциясы шақыру кезінде берілсе, іске қосу әрекеті бірдей, бірақ тиімді пайдаланушы идентификаторы қалпына келтірілмейді.

АНЫҚТАМАЛАР

Осы құжаттың қалған бөліктерінде келесі анықтамалар қолданылады.

бос

Бос орын немесе қойынды.

сөз

Қабықтың бір бірлігі ретінде қарастырылатын таңбалардың реті. Сондай-ақ белгі ретінде белгілі.

аты

Тек әріптік-сандық таңбалар мен астыңғы сызықтарды қамтитын және алфавиттік таңбадан немесе астыңғы сызығынан басталатын сөз. Сондай-ақ идентификатор деп аталады.

метакаркер

Белгісіз кезде сөздерді ажырататын кейіпкер. Төмендегілердің бірі:

| &; () <> бос орын қойындысы

басқару операторы

Басқару функциясын орындайтын белгі . Бұл келесі таңбалардың бірі:

| | & &&; ;; () |

ҚОРҒАЛҒАН СӨЗ

Резервтегі сөздер - бұл қабығы үшін ерекше мағынасы бар сөздер. Төменде көрсетілген сөздер сөзсіз жазылған кезде немесе қарапайым пәрменнің бірінші сөзі (төменде SHELL GRAMMAR-ні қараңыз) немесе істің үшінші сөзі немесе пәрмен үшін:

! case elif else esac fi функциясын атқарады, егер таңдалса, {} уақытқа дейін {[]]

SHELL GRAMMAR

Қарапайым командалар

Қарапайым пәрмен - қосымша айнымалы тапсырмалар тізбегі, кейіннен бос сөздерді және қайта бағыттауды және басқару операторы тоқтатады. Бірінші сөз орындалатын пәрменді анықтайды және дәлел нөлге келтіріледі. Қалған сөздер шақырылған командаға дәлел ретінде беріледі.

Қарапайым пәрменнің қайтару мәні оның шығу мәртебесі немесе команда n сигналы арқылы тоқтатылған кезде 128+ n .

Құбырлар

Құбыр - кейіпкермен бөлінген бір немесе бірнеше командалардың тізбегі . Құбырдың пішімі:

[ time [ -p ]] [! ] командасы [ | команда2 ...]

Командалық стандартты шығу құбыр арқылы командалық команданың стандартты енгізуіне қосылады . Бұл байланыс команданың кез-келген қайта бағыттауынан бұрын орындалады (төменде REDIRECTION бөлімін қараңыз).

Егер сақталған сөз ! құбырдың алдында, бұл құбырдың шығу күйі соңғы команданың шығу мәртебесінің логикалық емес екендігін білдіреді. Олай болмаған жағдайда, құбырдың күйі соңғы команданың шығу күйі болып табылады. Қабықша құбырдағы барлық пәрмендерді мәнді қайтармас бұрын тоқтату үшін күтеді.

Уақытша сақталған сөз құбырға дейін болса, ол аяқталғаннан кейін, пайдаланушы және оның орындалуы арқылы тұтынылатын жүйе уақыты газ құбыры аяқталған кезде хабарланатын болады. -p опциясы шығыс пішімін POSIX арқылы анықталғанға өзгертеді. TIMEFORMAT айнымалысы уақыт туралы ақпараттың қалай көрсетілетінін анықтайтын пішім жолына орнатылуы мүмкін; төмендегі Shell Variables астында TIMEFORMAT сипаттамасын қараңыз.

Құбырдағы әрбір команда жеке үдеріс ретінде орындалады (яғни, кішігірімде).

Тізімдер

Тізім - бір оператордың біреуімен бөлінген бір немесе бірнеше құбырлар тізбегі ; , & , && немесе || , және, мүмкін, біреуі бойынша тоқтатылады ; , & , немесе .

Осы тізім операторларының, && және || басымдылыққа ие ; және &, тең басымдыққа ие.

Командаларды шектеу үшін нүктелі үтірдің орнына тізімде бір немесе бірнеше жаңа жолдардың тізбегі пайда болуы мүмкін.

Егер пәрмен басқару операторы тарапынан тоқтатылса, қабықшаның үстіндегі өңдегі пәрменді орындалады. Команданың аяқталуын күтпейді, ал қайтару күйі 0 болады . дәйекті түрде орындалады; әрбір команда өз кезегінде тоқтату үшін күтеді. Қайтару күйі орындалатын соңғы команданың шығу күйі болып табылады.

Басқару операторлары && және || ЖӘНЕ тізімін және ЖОҚ тізімін белгілеңіз. ЖӘНЕ тізімде пішін бар

command1 && командасы2

command2 орындалса және тек егер команда1 нөлден шығу мәртебесін қайтарса.

НЕМЕСЕ тізімінде пішін бар

команда1 || команда2

command2 командасы1 нөлден тыс шығу мәртебесін қайтарса ғана орындалады. AND және OR тізімдерінің қайтару күйі тізімде орындалған соңғы команданың шығу күйі болып табылады.

Құрамдас командалар

Құрамдастыру пәрмені келесілердің бірі болып табылады:

( тізім )

тізбе кішігірімде орындалады. Қабықтың ортасына әсер ететін ауыспалы тапсырмалар мен салынған пәрмендер пәрмен аяқталғаннан кейін әрекет етпейді. Қайтару күйі - тізімнің шығу күйі.

{ тізім ; }

тізім ағымдағы жай қабық ортасында орындалады. тізімді жаңа немесе нүктелі үтірмен тоқтатуға болады. Бұл топтық команда ретінде белгілі. Қайтару күйі - тізімнің шығу күйі. Метакарактерлерден ( және ) айырмашылығы, { және } - сақталған сөздер және сақталған сөзді тануға рұқсат берілген жерде орын алуы керек екенін ескеріңіз. Олар сөз үзілісін тудырмағандықтан, олар тізімнен бос орыннан бөлінуі керек.

(( өрнек ))

Өрнек төменде сипатталған ережелерге сәйкес бағаланады: ARITHMETIC EVALUATION . Егер өрнектің мәні нөлге тең болмаса, қайтару күйі - 0; әйтпесе қайтару мәртебесі - 1. Бұл « өрнектің » болуына тең.

[[ өрнек ]]

Шартты өрнек өрнегін бағалауға байланысты 0 немесе 1 күйін қайтарады. Өрнектер төменде сипатталған преамбуладан тұрады, CONDITIONAL EXPRESSIONS . Word ажырату және жолдың атын кеңейту [[ және ]] арасындағы сөздер бойынша орындалмайды; тильды кеңейту, параметрлер мен айнымалы кеңейту, арифметикалық кеңейту, командалық ауыстыру, процесті ауыстыру және цитатаны жою орындалады.

== және ! = Операторлары пайдаланылғанда, оператордың оң жағындағы жол үлгі болып саналады және төменде суреттелген Үлгі сәйкестігі ережелері бойынша сәйкес келеді. Қайтар- мағына қайтар- мағына 0, жол сәйкес келсе немесе сәйкес келмесе, және басқаша 1. Үлгінің кез-келген бөлігі оны жол ретінде сәйкестендіру үшін мәжбүрлеуі мүмкін.

Өрнектерді төмендету тәртібінде көрсетілген келесі операторлар арқылы біріктіруге болады:

( өрнек )

Өрнек мәнін береді. Оны операторлардың қалыпты басымдықтарын елемеу үшін қолдануға болады.

! өрнек

Егер өрнек қате болса, шын.

өрнек1 && expression2

Егер expression1 және expression2 екеуі де шын болса, шын.

expression1 || expression2 Егер expression1 немесе expression2 шын болса, шын.

&& және || операторлар expression2 мәнін бағаламайды, егер өрнек1 мәні барлық шартты өрнектің қайтару мәнін анықтау үшін жеткілікті болса.

аты үшін [ сөзбен ]; істеу тізімі ; жасалды

Келесі сөздер тізімі кеңейтіліп, элементтердің тізімін жасайды. Айнымалы атау осы тізімнің әрбір элементіне кезекпен орнатылады және тізім әрбір рет орындалады. Сөздегі сөз жоқ болса, команда үшін орнатылатын әрбір позициялық параметр үшін тізім бір рет орындалады (төмендегі PARAMETERS бөлімін қараңыз). Қайтару күйі - орындалатын соңғы пәрменнің шығу күйі. Бос тізімдегі нәтижені кейінгі элементтерді кеңейту болса, ешбір команда орындалмайды және қайтару күйі 0 болады.

үшін (( expr1 ; expr2 ; expr3 )); істеу тізімі ; жасалды

Біріншіден, арифметикалық өрнек expr1 төменде сипатталған ережелерге сәйкес бағаланады ARITHMETIC EVALUATION . Арифметикалық өрнек expr2 ол нөлге дейін бағаланғанша бірнеше рет бағаланады. Әрбір expr2 нөл емес мәнге бағаланады, тізбе орындалады және арифметикалық өрнектер expr3 бағаланады. Егер қандай да бір өрнек алынып тасталса, ол 1-ге бағалағандай әрекет етеді. Қайтар- мағына - соңғы команданың exit мәртебесі орындалатын, немесе жалған сөйлемнің біреуі дұрыс болмаса.

аты [ сөз бойынша ] таңдаңыз; істеу тізімі ; жасалды

Келесі сөздер тізімі кеңейтіліп, элементтердің тізімін жасайды. Кеңейтілген сөздер жиынтығы стандартты қатеге басылады, олардың әрқайсысының алдында сан. Сөздегі сөз жоқ болса, позициялық параметрлер басып шығарылады (төмендегі PARAMETERS бөлімін қараңыз). Содан кейін PS3 нұсқауы пайда болады және стандартты енгізу жолынан оқиды. Егер сызық көрсетілетін сөздердің біріне сәйкес келетін саннан тұрса, аттың мәні сол сөзге орнатылады. Егер жол бос болса, сөздер мен шақыру қайтадан көрсетіледі. EOF оқылса, команда аяқталады. Кез келген басқа мән оқылымның атын нөлге орнатады. Оқылған жол REPLY айнымалысында сақталады. Тізім үзіліс пәрмені орындалмайынша әрбір таңдаудан кейін орындалады. Таңдаудың шығу мәртебесі - тізімде орындалған соңғы команданың шығу күйі немесе ешбір пәрмен орындалмаса нөл.

[[(] үлгісіндегі [ | үлгі ]

Іс командасы, алдымен, сөзді кеңейтеді және жолдың атын кеңейтуге қатысты бірдей сәйкес ережелерді қолданып, оны әрбір паттернге сәйкес келтіруге тырысады (төменде Pathname Expansion бөлімін қараңыз). Матч табылғанда, сәйкес тізім орындалады. Бірінші матчтан кейін, кейінгі сәйкестікке әрекет жасалмайды. Егер үлгі сәйкес болмаса, шығу күйі нөлге тең. Әйтпесе, тізімде орындалған соңғы команданың шығу күйі болып табылады.

егер тізім болса ; содан кейін тізім; [ elif тізімі ; содан кейін тізім ; ] ... [ тағы да тізімі ; ] fi

Егер тізбе орындалса. Егер оның шығу мәртебесі нөлге тең болса, онда ол тізім орындалады. Әйтпесе, әрбір элиф тізім өз кезегінде орындалады, ал егер оның шығу мәртебесі нөлге тең болса, тиісті тізім орындалады және пәрмен аяқталады. Әйтпесе, басқа тізім болса, орындалады. Шығу күйі орындалатын соңғы пәрменнің шығу күйі немесе ешқандай шарт шындықты тексермеген болса, нөлге тең.

тізімінде ; істеу тізімі ; жасалды

тізімге дейін ; істеу тізімі ; жасалды

Уақыт пәрмені тізімдегі соңғы пәрмен нөлден шығу мәртебесін қайтаратын болса, тізім тізімін үздіксіз орындаады. Команда әлі уақытқа дейін бірдей, тек сынақ қабылданбайды; тізімдегі соңғы пәрмен нөлден тыс шығу мәртебесін қайтаратын болса, іс тізімі орындалады. Уақыттың шығу мәртебесі және командаларға дейін орындалатын соңғы атқарымдар тізімінің шығу күйі болып табылады немесе орындалмаса, нөлге тең болады.

[ function ] аты () { тізім ; }

Бұл атау атты функцияны анықтайды. Функция денесі - {және} арасындағы командалардың тізімі . Бұл тізім атау қарапайым пәрменнің аты ретінде көрсетілген кезде орындалады. Функцияның шығу күйі ағзадағы орындалатын соңғы команданың шығу күйі болып табылады. (Төменде FUNCTIONS қараңыз.)

Түсініктемелер

Интерактивті емес қабықшада немесе дүкен салынған интерактивті комбинациялар интерактивті қабықшасы қосылғанда (төменде SHELL BUILTIN COMMANDS бөлімін қараңыз) # бастап басталатын сөз сол сызықтағы барлық қалған таңбаларды елемеуге мәжбүр етеді. Interactive_comments опциясы жоқ интерактивті қабық түсініктемелерге рұқсат бермейді. Interactive_comments параметрі әдепкі бойынша интерактивті қабықшаларда қосылады.

QUOTING

Котировка белгілі бір таңбалар немесе сөздердің ерекше мәнін қабықшаға шығару үшін қолданылады. Котировка ерекше белгілерге арналған арнайы емдеуді өшіру үшін, резервтелген сөздердің осылай танылуын болдырмау және параметрді кеңейтуге жол бермеу үшін қолданылуы мүмкін.

АНЫҚТАМАЛАРДА жоғарыда аталған метакарактерлардың әрқайсысы қабығы үшін ерекше мағынаға ие және ол өзін білдіретін болса, цитировать керек.

Командалық тарихты кеңейту мүмкіндіктері қолданылған кезде, тарихты кеңейту сипаты, әдетте ! , тарихты кеңейтуді болдырмау үшін котировкалануы керек.

Үш квоталау механизмі бар: құтылу сипаты , жалғыз тырнақша және қос тырнақшалар.

Кәдімгі кері қиғаш сызық ( \ ) - құтылу сипаты . Ол қоспағанда, келесі таңбаның әріптік мәнін сақтайды. Егер \ жұбы пайда болса және кері қиғаш сызық өзі көрсетілмесе, \ сызықты жалғастыру ретінде қарастырылады (яғни ол кіріс ағынынан алынып тасталады және тиімді түрде еленбейді).

Таңбаларды жалғыз тырнақшалармен қоршау тырнақшадағы әрбір таңбаның мәндік мәнін сақтайды. Жалғыз тырнақша, кері қиғаш сызықпен бұрын болғанда, бірыңғай баға белгілер арасында болмауы мүмкін.

Қосарлы тырнақшалардағы таңбаларды бекіту $ , ` , және \ қоспағанда, тырнақшадағы барлық таңбалардың әріптік мәнін сақтайды. $ Мен символдар ерекше мағынасын қос тырнақшаларда сақтайды. Кері қиғаш сызық келесі белгілердің біреуі ғана болғанда, оның ерекше мағынасын сақтайды: $ , ` , ' , \ немесе Екі қос тырнақшаға кері қиғаш сызықпен алдын-ала келтірілген болуы мүмкін.

Қосарлы тырнақшаларда арнайы және * арнайы параметрлері бар (төмендегі PARAMETERS бөлімін қараңыз).

$ ' String ' пішінінің сөздері арнайы қарастырылады. Сөз тіркемені кеңейтеді, кері қиғаш сызықпен таңбалар ANSI C стандартына сәйкес ауыстырылады. Егер бар болса, қиғаш сызықтарының қашуының кезектіліктері келесідей декодталған:

\ a

ескерту (қоңырау)

\ b

артқа

\ e

құтылу сипаты

\ f

пішінді беру

\ n

жаңа желі

\ r

аралық қайтару

\ t

көлденең табуляция

\ v

тік қойындысы

\\

кері қиғаш сызық

\ '

жалғыз тырнақша

\ n жоқ

сегіздік таңба, оның мәні сегіз мәнді (бір-үш цифр)

\ x HH

HH он алтылық мәні (бір немесе екі он алты сан) болатын сегіз-биттік таңба,

\ c x

control- x таңбасы

Кеңейтiлген нәтиже - доллар белгісі болмаған секілді бір-дәйексөз.

Алдыңғы сөзі доллар белгісі ( $ ) алдында қос тырнақшаға жол жолды ағымдық тілге сәйкес аударуға әкеледі. Ағымдағы тіл C немесе POSIX болса, доллар белгісі еленбейді. Егер жол ауыстырылса және алмастырылса, ауыстыру екі рет келтірілген.

PARAMETERS

Параметр - мәндерді сақтайтын ұйым. Арнайы Параметрлер астында төменде көрсетілген арнайы таңбалардың аты , нөмірі немесе біреуі болуы мүмкін. Қабықтың мақсаттары үшін айнымалы мән - бұл атаумен белгіленетін параметр. Айнымалы мән нөл немесе одан көп атрибуттарға ие . Атрибуттар declare builtin пәрменін пайдалану арқылы тағайындалады ( SHELL BUILTIN COMMANDS төменде жариялауды қараңыз).

Параметр егер ол тағайындалған болса, орнатылады. Бос жол - жарамды мән. Айнымалы мән орнатылғаннан кейін, оны орнатылмаған команда арқылы ғана орнатуға болады (төменде SHELL BUILTIN COMMANDS бөлімін қараңыз).

Айнымалы пішіннің мәлімдемесі бойынша тағайындалуы мүмкін

name = [ value ]

Мән берілмесе, айнымалы мән бос жолға тағайындалады. Барлық құндылықтар тильда кеңеюі, параметр мен айнымалы кеңейту, командалық алмастыру, арифметикалық кеңейту және цитатаны жоюдан өтеді (төменде EXPANSION қараңыз). Айнымалы бүтін төлсипат жиынтығы болса, онда $ ((...)) кеңейтімі пайдаланылмаса да, арифметикалық кеңейтуге мән беріледі (төменде арифметикалық кеңейтуді қараңыз). Арнайы Параметрлер астында төменде түсіндірілгендей «$ @» қоспағанда, Word бөлімі орындалмайды. Pathname кеңейтімі орындалмайды. Тағайындау туралы мәлімдемелер declare , typeet , export , readonly және local builtin командалары үшін дәлел ретінде көрінуі мүмкін.

Позициялық параметрлері

Позициялық параметр - бұл бір сандықтан басқа бір немесе бірнеше санмен белгіленетін параметр. 0 Орналастырылған пәрменді қолдану арқылы позициялық параметрлері қабықтың аргументтерінен тағайындалады және оны тағайындауға болады. Позициялық параметрлер тағайындалу мәлімдемелерімен тағайындалмауы мүмкін. Позициялық параметрлер уақытша ауыстырылады, егер қабық функциясы орындалады ( FUNCTIONS төменде қараңыз).

Бір позициядан артық позициялық параметр кеңейтілсе, ол жақшаларда (төмендегі EXPANSION бөлімін қараңыз).

Арнайы параметрлері

Қабықша бірнеше параметрді арнайы қарастырады. Бұл параметрлерге ғана сілтеме жасалуы мүмкін; оларға тағайындалуға жол берілмейді.

*

Біреуден бастап позициялық параметрлерге дейін кеңейтіледі. Кеңейту қос тырнақшаларда пайда болғанда, IFS арнайы айнымалы мәнінің бірінші таңбасымен бөлінген әрбір параметрдің мәнімен бір сөзге дейін кеңейтіледі. Яғни, « $ * » $ 1 c $ 2 c ... «дегенге тең, мұнда c - IFS айнымалы мәнінің бірінші сипаты. IFS орнатылмаған болса, параметрлер бос орындармен бөлінеді. IFS бос болса, параметрлер бөлгіш сепараторларсыз қосылады.

@

Біреуден бастап позициялық параметрлерге дейін кеңейтіледі. Кеңейту қос тырнақшаларда орын алғанда, әр параметр бөлек сөзге дейін кеңейтіледі. Яғни, « $ @ » « $ 1 » « $ 2 » дегенге тең ... Позициялық параметрлер болмаған кезде, « $ @ » және $ @ ештеңеге дейін кеңейтілмейді (яғни жойылады).

#

Ондық түрдегі позициондық параметрлердің санына дейін кеңейтіледі.

?

Ең соңғы орындалатын алдын-ала құбырдың күйін кеңейтеді.

-

Ағымдағы опцияның жалаушаларына шақыру кезінде, орнатылған орнатылған пәрмен арқылы немесе қабықтың өзі орнатқан (мысалы, -i опциясы) кеңейтеді.

$

Қабықтың процесс идентификаторына кеңейтіледі. () Тасымалдауда, ол ағымдағы қабықтың процестің идентификаторына емес, оның шегінен кеңейтіледі.

!

Ең соңғы орындалатын фон (асинхронды) пәрменінің үрдіс идентификаторына кеңейтіледі.

0

Қабырға немесе қабық сценарий атауын кеңейтеді. Бұл қабық инициализациясында орнатылады. Егер bash командалар файлымен шақырылса, $ 0 бұл файлдың атына орнатылады. Егер bash -c опциясымен басталса, онда $ 0 параметрі орындалатын жолдан кейін, егер бар болса, бірінші аргументке орнатылады. Олай болмаған жағдайда, ол файл атауына bash шақыру үшін пайдаланылады, дәлел ретінде берілген нөл.

_

Қабықтарды іске қосу кезінде аргумент тізімінде жіберілген орындайтын қабықтың немесе қабық скриптің абсолютті файл атауын орнатыңыз. Содан кейін, кеңейтілгеннен кейін, алдыңғы пәрменге соңғы дәлелге дейін кеңейтіледі. Сондай-ақ, осы пәрменге экспортталған ортаға орналастырылған және орындалатын әрбір пәрменнің толық файл атына орнатыңыз. Поштаны тексергенде, бұл параметр қазіргі уақытта тексерілетін пошта файлының атын ұстайды.

Shell айнымалысы

Келесі айнымалылар қабықпен орнатылады:

BASH

Баштың осы данасын шақыру үшін пайдаланылатын толық файл атауына дейін кеңейтіледі.

BASH_VERSINFO

Оқиғадағы жиым айнымалысы, оның мүшелері баштың осы данасына арналған нұсқа туралы ақпаратты ұстайды. Массив мүшелеріне тағайындалған мәндер келесідей:

BASH_VERSINFO [ 0]

Негізгі нұсқа нөмірі ( шығарылым ).

BASH_VERSINFO [ 1]

Кішігірім нұсқа нөмірі ( нұсқасы ).

BASH_VERSINFO [ 2]

Патчиктің деңгейі.

BASH_VERSINFO [ 3]

Құрастыру нұсқасы.

BASH_VERSINFO [ 4]

Босату мәртебесі (мысалы, бета1 ).

BASH_VERSINFO [ 5]

MACHTYPE мәні.

BASH_VERSION

Бұл дананың нұсқасын сипаттайтын жолға кеңейтеді.

COMP_CWORD

COMP_LINE

Ағымдағы пәрмен жолы. Бұл ауыспалы тек қабық функциясында және бағдарламаланатын аяқтау құралдарымен шақырылған сыртқы командаларға қол жетімді (төменде Бағдарламаланатын аяқтауды қараңыз).

COMP_POINT

COMP_WORDS

Ағымдағы пәрмен жолында жеке сөздерді қамтитын массивтің айнымалысы (Төмендегі массивтерді қараңыз). Бұл ауыспалы тек бағдарламаланатын аяқтау құралдарымен шақырылған қабық функциясында қол жетімді (төменде Бағдарламаланатын аяқтауды қараңыз).

DIRSTACK

Каталог жиынын ағымдағы мазмұнын қамтитын массивтің айнымалысы (Төмендегі массивтерді қараңыз). Директивалар дисктің орнына көрсетілген тәртіпте пайда болады. Бұл массив айнымалы мүшелеріне тағайындау стекадағы каталогтарды өзгерту үшін пайдаланылуы мүмкін, бірақ pushd және popd кірістері каталогтарды қосу және жою үшін пайдаланылуы керек. Бұл айнымалыға тағайындау ағымдағы каталогты өзгертпейді. Егер DIRSTACK орнатылмаған болса, ол кейінірек қалпына келтірілсе де, оның арнайы қасиеттерін жоғалтады.

EUID

Қабықтарды іске қосу кезінде инициализацияланған ағымдағы қолданушының тиімді идентификаторын кеңейтеді. Бұл айнымалы болып табылады.

FUNCNAME

Кез-келген орындалатын қабық функциясының атауы. Бұл айнымалы қабық функциясы орындалатын кезде ғана бар. FUNCNAME үшін тағайындаулар ешқандай әсер етпейді және қате күйін қайтарады. FUNCNAME орнатылмаған болса, ол кейінірек қалпына келтірілсе де, оның арнайы қасиеттерін жоғалтады.

Топтар

Ағымдағы пайдаланушысы мүше болып табылатын топтардың тізімін қамтитын жиым айнымалысы. GROUPS тобына тағайындаулар ешқандай әсер етпейді және қате күйін қайтарады. GROUPS белгіленбеген болса, ол кейінірек қайта қалпына келтірілсе де, оның ерекше қасиетін жоғалтады.

HISTCMD

Ағымдағы пәрменнің тарих нөмірі немесе тарих тізіміндегі индекс. Егер HISTCMD орнатылмаған болса, ол кейінірек қайта қалпына келтірілсе де, оның арнайы қасиеттерін жоғалтады.

HOSTNAME

Ағымдағы хосттың атын автоматты түрде орнату.

HOSTTYPE

Автоматты түрде, bash орындалатын машинаның түрін бірегей түрде сипаттайтын жолға орнатыңыз. Әдепкі бойынша, жүйеге тәуелді болады.

LINENO

Бұл параметр сілтеме жасалған сайын, қабық сценарийде немесе функцияда ағымдық дәйекті жол нөмірін (1-ден бастап) білдіретін ондық санмен алмастырады. Сценарийде немесе функцияда болмаған кезде, мәнді ауыстыру маңызды болып табылмайды деп кепілдік бермейді. LINENO орнатылмаған болса, ол кейінірек қайта қалпына келтірілсе де, оның ерекше қасиетін жоғалтады.

MACHTYPE

Стандартты GNU cpu-company-system пішімінде bash орындалатын жүйе түрін толығымен сипаттайтын жолға автоматты түрде орнатылады. Әдепкі бойынша, жүйеге тәуелді болады.

OLDPWD

Cd пәрменімен орнатылған алдыңғы жұмыс каталогы.

OPTARG

Соңғы нұсқа параметрінің мәні getopts builtin командасымен өңделген (төменде SHELL BUILTIN COMMANDS бөлімін қараңыз).

OPTIND

Келесі аргумент индексі getopts builtin командасымен өңделетін болады (төменде SHELL BUILTIN COMMANDS бөлімін қараңыз).

OSTYPE

Bash орындалатын операциялық жүйені сипаттайтын жолға автоматты түрде орнатылады. Әдепкі бойынша, жүйеге тәуелді болады.

PIPESTATUS

Ең соңғы жақында орындалған алдыңғы панельдегі (тек бір пәрмені болуы мүмкін) процестерден шығу күйінің мәндерінің тізімін қамтитын жиым айнымалысы (Төмендегі Массивтерді қараңыз).

PPID

Қабықшаның ата-анасының үрдіс идентификаторы. Бұл айнымалы болып табылады.

PWD

Ағымдағы жұмыс каталогы cd пәрменімен орнатылады.

RANDOM

Бұл параметрге сілтеме жасалған сайын, 0 мен 32767 арасында кездейсоқ бүтін сан қалыптастырылады. Кездейсоқ сандардың ретін RANDOM мәніне тағайындау арқылы инициализациялануы мүмкін. Егер RANDOM орнатылмаса, ол кейінірек қайта қалпына келтірілсе де, оның ерекше қасиетін жоғалтады.

REPLY

Дәлелдер болмаған кезде оқылған кіріс жолына оқу оқылған команда арқылы орнатыңыз.

SECONDS

Бұл параметрге әрбір рет сілтеме жасағанда, қабықтың шақырылуынан кейінгі секундтар саны қайтарылады. Егер SECONDS мәніне тағайындалса, кейінгі сілтемелерде қайтарылған мән тағайындаудан және тағайындалған мәннен кейінгі секундтардың саны болып табылады. Егер SECONDS орнатылмаса, ол кейінірек қалпына келтірілсе де, оның арнайы қасиеттерін жоғалтады.

Шеллопс

Қосылған қабық опцияларының қос нүктемен бөлінген тізімі. Тізімдегі әрбір сөз - set- in пәрменіне -o параметрінің жарамды дәлелі болып табылады (төменде SHELL BUILTIN COMMANDS бөлімін қараңыз). SHELLOPTS- да пайда болатын опциялар - set -o деп көрсетілген . Егер бұл айнымалы мән баста іске қосылған ортада болса, тізімдегі әрбір қабық параметрі кез-келген бастапқы файлдарды оқу алдында қосылады. Бұл айнымалы мән тек оқуға арналған.

SHLVL

Баштың данасы әрбір рет басталады.

UID

Ағымдағы қолданушының пайдаланушы идентификаторын кеңейтеді, қабықтың іске қосылуында инициализацияланған. Бұл айнымалы болып табылады.

Келесі айнымалылар қабықпен пайдаланылады. Кейбір жағдайларда bash айнымалыға әдепкі мәнді тағайындайды; бұл жағдайлар төменде көрсетілген.

BASH_ENV

Егер бұл параметр bash shell сценарийін орындаған кезде орнатылса, оның мәні ~ / .bashrc сияқты қабықты инициализациялау үшін пәрмендері бар файл атауымен түсіндіріледі . BASH_ENV мәні файл атауымен түсіндірмес бұрын параметрді кеңейту, команда ауыстыру және арифметикалық кеңейтуге ұшырайды. PATH нәтиже беретін файл атауын іздеу үшін пайдаланылмайды.

CDPATH

Cd пәрменінің іздеу жолы. Бұл cD пәрмені арқылы анықталған мақсатты каталогтарды іздейтін каталогтар тізімін бөлектелген тізім. Үлгі мәні «.: ~: / Usr» болып табылады.

COLUMNS

Таңдау тізімдерін басып шығару кезінде терминал енін анықтау үшін таңдалған пәрменді таңдау. SIGWINCH алу кезінде автоматты түрде орнатылады.

COMPREPLY

Бағдарламаланатын аяқтау қондырғысы арқылы шақырылған қабық функциясымен жасалатын ықтимал аяқталымдарды оқитын массив айнымалысы (төменде Бағдарламаланатын аяқтау бөлімін қараңыз).

FCEDIT

Fc builtin пәрменіне арналған әдепкі редактор.

FIGNORE

Файл атауын аяқтағанда орындалатын елемеуге болатын қос нүкте бөлінген тізім (төмендегі READLINE бөлімін қараңыз). FIGNORE ішіндегі жазбалардың біреуі сәйкес келетін файл атауы сәйкес келетін файлдар тізімінен алынып тасталады. Үлгі мәні «.o: ~».

GLOBIGNORE

Жолақ атауын кеңейту арқылы еленбейтін файл атауларының жиынын анықтайтын қос нүкте бөлінген тізім. Егер жол атауын кеңейту үлгісімен сәйкестелген файл атауы GLOBIGNORE ішіндегі үлгілердің біріне сәйкес келсе , ол сәйкестік тізімінен жойылады.

HISTCONTROL

Есірткілердің мәніне орнатылса , бос орын таңбаларымен басталатын жолдар тарих тізіміне енгізілмейді. Ignoredups мәніне орнатылса , соңғы тарих сызығына сәйкес келетін жолдар енгізілмейді. Қараусыздық мәні екі параметрді біріктіреді. Егер белгіленбеген болса немесе жоғарыдағылардан басқа кез келген мәнге орнатылса, парсерін оқыған барлық жолдар HISTIGNORE мәніне байланысты тарих тізімінде сақталады. Бұл айнымалы функция HISTIGNORE арқылы ауыстырылады . Көп жолды қосылым командасының екінші және кейінгі жолдары тексерілмейді және HISTCONTROL мәніне қарамастан тарихқа қосылады.

HISTFILE

Пәрмен журналы сақталған файлдың атауы (төмендегі HISTORY бөлімін қараңыз). Әдепкі мән - ~ / .bash_history . Егер орнатылмаған болса, интерактивті қабық шыққанда пәрмен тарихы сақталмайды.

HISTFILESIZE

Тарих файлындағы жолдардың ең көп саны. Бұл айнымалы мән берілсе, тарих файлы қажет болған жағдайда жолдардың санынан аспауы керек. Әдепкі мән - 500. Тарих файлы интерактивті қабық шыққанда жазғаннан кейін осы өлшемге де қысқартылады.

HISTIGNORE

Тарих тізімінде қандай командалық жолдарды сақтау керектігін шешу үшін пайдаланылатын үлгілердің қос нүкте тізімі. Әрбір сызық сызықтың басында бекітіліп, толық сызықпен сәйкес болуы керек (ешқандай жабық ' * ' қосылмайды). HISTCONTROL анықтаған тексерулер қолданылғаннан кейін, әрбір үлгі сызықпен сыналады. Қалыпты қабықша үлгісіне сәйкес келетін таңбалардан басқа ` & 'алдыңғы тарих жолына сәйкес келеді. ` & 'кері қиғаш сызық арқылы кетуі мүмкін; сәйкестік әрекеті алдында кері қиғаш сызық жойылады. Көп жолды қосылыстар командасының екінші және кейінгі жолдары тексерілмейді және HISTIGNORE мәніне қарамастан тарихқа қосылады.

HISTSIZE

Пәрмен тарихында есте сақтайтын командалардың саны (төменде келтірілген HISTORY бөлімін қараңыз). Әдепкі мән - 500.

HOME

Ағымдағы қолданушының үй каталогы; cd салынған пәрмен үшін әдепкі аргумент. Бұл айнымалы мәнді тильды кеңейту кезінде де пайдаланылады.

HOSTFILE

Құрамында хост атауын аяқтау қажет болғанда / etc / hosts сияқты форматта файл атауын қамтиды. Қабықша жұмыс істеп тұрған кезде мүмкін хост атының толықтыруларының тізімі өзгертілуі мүмкін; келесі жолы хост атауы аяқталғаннан кейін әрекетті өзгертуге болады, bash жаңа файлдың мазмұнын бар тізімге қосады. Егер HOSTFILE орнатылса, бірақ маңызы жоқ болса, bash мүмкін / host / host / хост аттарын оқуға тырысады, мүмкін хост атауының толықтыруларын алу үшін. HOSTFILE орнатылмаған кезде, хост аттарының тізімі жойылады.

IFS

Ішкі өріс бөлгіші , ол кеңейтілгеннен кейін сөз бөлуге арналған және оқылған оқу пәрменімен сызықтарды бөлуге арналған. Әдепкі мән `` <бос орын> '' болып табылады.

IGNOREEOF

EOF таңбасын бірден енгізу ретінде интерактивті қабықтың әрекетін басқарады. Орнатылса , мән - бас-басы EOF таңбаларының саны, олар bash шығудан бұрын кіріс жолында бірінші таңбалар ретінде терілуі керек. Айнымалысы бар болса, бірақ сандық мәні болмаса немесе мәні болмаса, әдепкі мән 10 болады. Егер ол жоқ болса, EOF қабықтың кірістің соңын білдіреді.

INPUTRC

Readline іске қосу файлының файл атауы, ~ / .inputrc дефолтынан басталады (төмендегі READLINE бөлімін қараңыз).

LANG

LC_ бастап басталатын ауыспалымен арнайы таңдалмаған кез келген санат үшін жергілікті санатты анықтау үшін қолданылады.

LC_ALL

Бұл айнымалы LANG мәнін және кез-келген LC_ айнымалы мәнін жергілікті тіл санатын көрсетіп жазады .

LC_COLLATE

Бұл ауыспалы жолақ атын кеңейту нәтижелерін сұрыптау кезінде пайдаланылатын салыстыру тәртібін анықтайды және өріс өрнектерінің, эквиваленттік класстардың мінез-құлқын анықтайды және pathname кеңейтімі мен үлгіні сәйкестендірудегі реттіліктерді реттейді.

LC_CTYPE

Бұл ауыспалы таңбалардың түсіндірілуін және жолдың атын кеңейту мен үлгіні сәйкестендірудегі таңба сыныптарының әрекетін анықтайды.

LC_MESSAGES

Бұл айнымалы мән $ алдымен қос тырнақшаға аудару үшін пайдаланылатын тілді анықтайды.

LC_NUMERIC

Бұл айнымалы сан пішімдеу үшін пайдаланылатын тіл санатын анықтайды.

СЫЗЫҚТАР

Таңдау тізімдерін басып шығару үшін баған ұзындығын анықтау үшін таңдалған пәрмен арқылы таңдалады. SIGWINCH алу кезінде автоматты түрде орнатылады.

MAIL

Егер бұл параметр файл атауына орнатылса және MAILPATH айнымалысы орнатылмаса, bash пайдаланушыға көрсетілген файлға пошта келу туралы хабарлайды.

MAILCHECK

Поштаны тексеруді қаншалықты жиі (секундтармен) анықтайды. Әдепкі бойынша - 60 секунд. Поштаны тексеруге уақыт болған кезде, қабық бастапқы ескертуді көрсетуден бұрын орындалады. Егер бұл айнымалы мән теңшеленсе немесе нөлден үлкен немесе тең емес мәнге орнатылса, қабығы пошта тексерісін өшіреді.

MAILPATH

Поштада тексерілетін файл атауларының қос нүкте бөлінген тізімі. Пошта белгілі бір файлға келгенде басып шығарылатын хабарды файлдың атауын '?' Жолымен бөлу арқылы көрсетуге болады. Хабардың мәтінінде $ _ ағымдағы пошта файлының атына кеңейеді. Мысал:

MAILPATH = '/ var / mail / bfox' Сізде пошта бар ': ~ / shell-mail? «$ _ Поштасы бар!»'

Баш бұл айнымалы мәнге әдепкі мән береді, бірақ пайдаланатын пайдаланушы пошта файлдарының орналасуы жүйеге тәуелді (мысалы, / var / mail / $ USER ).

OPTERR

1 мәніне орнатылса, bash getopts builtin пәрмені арқылы жасалған қате хабарларын көрсетеді (төменде SHELL BUILTIN COMMANDS бөлімін қараңыз). OPTERR әрқайсысы қабығы шақырылған немесе қабық сценарий орындалатын сайын инициализацияланған.

PATH

Командалар үшін іздеу жолы. Бұл пәрмендер үшін қабығы іздейтін каталогтар тізімін бөлектелген (төмендегі COMMAND EXECUTION бөлімін қараңыз). Әдепкі жол - жүйеге тәуелді және bash-ды орнататын әкімші орнатады. Ортақ мән `` / usr / gnu / bin: / usr / local / bin: / usr / ucb: / bin: / usr / bin :. ''.

POSIXLY_CORRECT

Егер бұл айнымалы баста басталған кезде ортада болса, онда қабат іске қосу файлдарын оқып шыққанша posix режиміне кіреді, егер --posix шақыру опциясы берілген болса. Қабықша жұмыс істеп тұрған кезде орнатылса, bash posix режимін қосады, егер команда set -o posix орындалды.

PROMPT_COMMAND

Орнатылса, мән әрбір негізгі тапсырманы шығарғанға дейін пәрмен ретінде орындалады.

PS1

Бұл параметрдің мәні кеңейтілді (төменде PROMPTING бөлімін қараңыз) және негізгі жедел жол ретінде пайдаланылады. Әдепкі мән `` \ s- \ v \ $ '' болып табылады.

PS2

Бұл параметрдің мәні PS1-дегідей кеңейтіледі және қосымша қайталама жол ретінде пайдаланылады. Әдепкі бойынша `` >> ''.

PS3

Бұл параметрдің мәні таңдау пәрменіне шақыру ретінде пайдаланылады (жоғарыдағы SHELL GRAMMAR бөлімін қараңыз).

PS4

Бұл параметрдің мәні PS1-дегідей кеңейтіледі және мән әр орындау бетін көрсету кезінде әр команда бишінің алдында басылады. PS4- нің бірінші кейіпкері инициирлеудің бірнеше деңгейлерін көрсету үшін бірнеше рет қайталанады. Әдепкі бойынша `` + ''.

TIMEFORMAT

Бұл параметрдің мәні уақытша сақталған сөзбен алдын ала берілген құбырларға арналған уақыт туралы ақпараттың көрсетілуін көрсететін пішім жолы ретінде пайдаланылады. % Символы уақыт мәніне немесе басқа ақпаратқа кеңейтілетін қашу ретін көрсетеді. Қашу кезектіліктері мен олардың мағынасы келесідей: жақшалар қосымша бөліктерді белгілейді.

%%

Айталық % .

% [ p ] [l] R

Өткен уақыт секундтарда.

% [ p ] [l] U

Пайдаланушы режимінде жұмсалған CPU секундтарының саны.

% [ p ] [l] S

Жүйелік режимде жұмсалатын CPU секундтарының саны.

% P

Процессордың пайыздық үлесі (% U +% S) /% R.

Қосымша п - бұл дәлдікпен , ондық бөлшек санынан кейін бөлшек сандардың санын көрсететін сан. 0 мәні ондық бөлшекке немесе бөлікке шығарылмайды. Ондық нүктеден кейін ең көбі үш орынды көрсетуге болады; 3-ден асатын р мәндері 3 мәніне ауысады. Егер p көрсетілмесе, 3 мәні қолданылады.

Қосымша l ұзын форматты көрсетеді, оның ішінде минуттар, MM m SS формасы. FF с. Р мәні фракцияның қосылғанын немесе анықталмайтынын анықтайды.

Егер бұл айнымалы мән орнатылмаса, bash $ '\ nreal \ t% 3lR \ nuser \ t% 3lU \ nsys% 3lS' мәніне ие болғандай әрекет етеді . Мән бос болса, уақыт туралы ақпарат көрсетілмейді. Пішін жолы көрсетілсе, кейінгі сызық қосылады.

TMOUT

Егер нөлден үлкен мәнге орнатылса, TMOUT оқу үшін орнатылған уақытша күту уақыты ретінде қарастырылады. Таңдау пәрмені терминалдан кіріс кіргенде TMOUT секундтан кейін пайда болмаса тоқтатылады. Интерактивті қабықшада мән бастапқы ескертуді шығарғаннан кейін енгізуді күту секундтар саны ретінде түсіндіріледі. Bash кіріс сигналы келмейтін болса, секундалардың санын күтіп болғаннан кейін тоқтатылады.

auto_resume

Бұл айнымалы қабықша пайдаланушымен және тапсырманы басқарумен өзара әрекеттесуді басқарады. Егер бұл айнымалы мән орнатылса, қайта бағытталусыз қарапайым сөздердің біреуі бар тоқтатылған жұмысты қайта бастауға үміткер ретінде қарастырылады. Ешбір белгісіздік жоқ; егер терілген жолдан басталатын бірнеше тапсырма болса, ең соңғы қол жетімді тапсырма таңдалады. Бұл тұрғыда тоқтатылған жұмыс атауы - оны бастау үшін қолданылатын пәрмен жолы. Мәнге нақты орнатылған болса, жеткізілген жол дәл аяқталған жұмыс атауына сәйкес келуі керек; егер ішкі жолға орнатылса, берілген жол тоқтатылған жұмыс атауының ішкі жолына сәйкес келуі керек. Ішкі мән % функциясына ұқсас функционалдылықты қамтамасыз етеді . жұмыс идентификаторы (төменде JOB CONTROL бөлімін қараңыз). Егер кез-келген басқа мәнге орнатылса, берілген жол жолдың тоқтатылған жұмысының префиксі болуы керек; бұл % жұмыс идентификаторына ұқсас функционалдылықты қамтамасыз етеді.

тарихшылар

Тарихты кеңейту және таңбалауды бақылайтын екі немесе үш таңба (Төмендегі HISTORY EXPANSION бөлімін қараңыз). Алғашқы кейіпкер - тарихты кеңейту сипаты, тарихты кеңейтудің басталуын көрсететін кейіпкер, әдетте ' ! '. Екінші таңба - команданың басқа жолын алмастыратын алдыңғы команданың қайта іске қосылуы үшін стенография ретінде пайдаланылатын жылдам ауыстыру сипаты. Әдепкі бойынша ` ^ '. Қосымша үшінші таңба - бұл жолдың қалған бөлігі сөздің бірінші таңбасы, әдетте ' # ' деп табылған кезде түсініктеме екенін көрсетеді. Тарих түсініктемесінің сипаты жолдың қалған сөздері үшін тарихтың ауыстырылуын өткізіп жібереді. Міндетті түрде, қабықтың парсерін жолдың қалған бөлігін түсініктеме ретінде қарауға міндетті емес.

Массивтер

Bash бір өлшемді жиым айнымалыларын береді. Кез келген айнымалы массив ретінде пайдаланылуы мүмкін; declare builtin массивін анық түрде жариялайды. Массивтің өлшеміне ең үлкен шектеу немесе мүшелердің бір-біріне индекстелуі немесе тағайындалуы талап етілмейді. Массивдер бүтін сандар арқылы индекстеледі және нөлге негізделген.

Синтаксис аты [ subscript ] = мәнін қолдануға кез келген айнымалы мән берілсе, массаны автоматты түрде жасайды. Субкрипт арифметикалық өрнектер ретінде қарастырылады, ол нөлден үлкен немесе тең санға бағалануы керек. Жиыны айқындау үшін declare- атауын (төмендегі SHELL BUILTIN COMMANDS бөлімін қараңыз) пайдаланыңыз. хабарландыру - аты [ бағыныңқы ] да қабылданады; инвентарь еленбейді. Атрибуттар declare және readonly салынған пайдаланып жиым айнымалы үшін көрсетілуі мүмкін. Әрбір төлсипат массивтің барлық мүшелеріне қолданылады.

Массивтер пішін атауы = ( мән 1 ... мәні n ) құрамды тапсырмаларын пайдалану үшін тағайындалады, мұнда әрбір мән [ subscript ] = жолдың нысаны болады. Тек жол қажет. Егер қосымша кронштейндер мен инвентарь берілсе, бұл индекс келесіге тағайындалады; әйтпесе тағайындалған элемент индексі - бұл мәлімдеме плюс біреуіне тағайындалған соңғы индекс. Индекстеу нөлден басталады. Бұл синтаксис сонымен қатар декларация салынған. Жеке массив элементтері жоғарыда енгізілген [ subcript ] = мән синтаксисінің атын пайдалану үшін тағайындалуы мүмкін.

Unset салынған массивтерді жою үшін пайдаланылады. unset name [ subscript ] массив элементін индекстің индексі арқылы жояды. unset name , мұнда аты массив болып табылады немесе индекстелмеген аты [ subscript ], мұнда subscript * немесе @ бүтін алапты жояды.

Хабарлама, жергілікті және оқылатын қондырмалар әрқайсысы массивді көрсету үшін -a опциясын қабылдайды. Оқу құралы стандартты енгізуден массивке оқылатын сөздердің тізімін тағайындау үшін -a опциясын қабылдайды. Орнатылған және бекітілген салынғандар массив мәндерін тапсырмалар ретінде қайта пайдалануға мүмкіндік беретін етіп көрсетеді.

EXPANSION

Кеңейтім сөзге бөлінгеннен кейін пәрмен жолында орындалады. Кеңейтуді жетілдіретін жеті түрі бар: брайль кеңеюі , тильда кеңеюі , параметр және ауыспалы кеңейту , командалық алмастыру , арифметикалық кеңейту , сөз бөлу және жолдың атауының кеңеюі .

Кеңейтудің тәртібі: брейк кеңеюі, тильдалық кеңею, параметр, ауыспалы және арифметикалық кеңейту және командалық ауыстыру (солдан оңға қарай), сөз бөлу және жолдың атауының кеңеюі.

Оны қолдайтын жүйелерде қосымша кеңейту бар: процесті ауыстыру .

Қағазды кеңейту

Қағаздың кеңеюі - ерікті жолдар жасалуы мүмкін механизм. Бұл механизм жолдың атауын кеңейтуге ұқсас, бірақ жасалатын файл аттары болмауы керек. Кеңейтілетін үлгілер қосымша емес кіріспе формасын қабылдайды, одан кейін жұп қаңқалар арасындағы үтірмен бөлінген жолдар сериясы, одан кейін қосымша постстеме болады . Преамбуладан жақшаларда орналасқан әрбір жолға префикс беріледі, содан кейін постставтар сол жолдан оңға қарай кеңейтілетін әр жолға қосылады.

Кескіннің кеңеюі кірістірілуі мүмкін. Әрбір кеңейтілген жолдың нәтижелері сұрыпталмаған; солға қарай оңға қарай сақталады. Мысалы, { d, c, b } e «ade ace abe» деп кеңейтіледі.

Қағаздың кеңеюі кез-келген басқа кеңеюден бұрын орындалады, ал басқа кеңеюге арнайы таңбалар сақталады. Бұл қатаң мәтіндік. Bash ешқандай синтаксистік интерпретацияны кеңейтілім немесе қиғаштар арасындағы мәтінге қолданбайды.

Бұл құрылғыны, әдетте, генерацияланатын жолдардың жалпы префиксі жоғарыда келтірілген мысалға қарағанда ұзын болған кезде, стенография ретінде пайдаланылады:

mkdir / usr / local / src / bash / {ескі, жаңа, dist, bugs}

немесе

chown түбірі /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}

Бөртпенің кеңеюі sh-ның тарихи нұсқаларымен сәл үйлеспеушілікке жол ашады. Ш сөздің бір бөлігі ретінде пайда болғанда, олар ашылған немесе жабылатын брекстерді емдейді және оларды шығаруға сақтайды. Баш алақанның кеңеюінің салдарынан сөздерді жақшалар алып тастайды. Мысалы, {1,2} файлы ретінде енгізілген сөз шығаруда бірдей болады. Бірдей сөз bash арқылы кеңейтілуден кейін file1 file2 ретінде шығарылады. Егер sh- пен қатаң үйлесімділік қажет болса, + B опциясымен Bash- ды бастаңыз немесе + B нұсқасымен белгіленген пәрменге орамалды кеңейтуді өшіріңіз (төмендегі SHELL BUILTIN COMMANDS бөлімін қараңыз).

Tilde кеңейту

Егер сөз таңбаланбаған тильда таңбасымен (` ~ ) басталса, бірінші тырнақшалардан (немесе барлық таңбалардан, егер тегіс емес қиғаш сызықтар болмаса), таңбалардың бәрі тильда-префикс деп қарастырылады. Егер тильда префиксіндегі таңбалардың ешқайсысы цитирленбесе, тильден кейін тильда префиксіндегі таңбалар ықтимал логин атауы ретінде қарастырылады. Егер бұл логин аты бос жол болса, онда тильда HOME параметрі ұяшығының параметрімен ауыстырылады. Егер HOME орнатылмаса, орнына пайдаланушы орнын ауыстырады, оның орнын ауыстырады. Әйтпесе, тильда префиксі көрсетілген кіру атымен байланысты үй каталогымен ауыстырылады.

Егер тильда префиксі '~ +' болса, онда PWD қабықтың айнымалы мәнінің мәні tilde-префиксті ауыстырады. Егер тильда префиксі `~ - 'болса, ол орнатылған болса, OLDPWD қабықтың айнымалы мәнінің мәні ауыстырылады. Егер тильда-префиксіндегі тильден кейінгі таңбалар N санынан тұрса, міндетті түрде «+» немесе «-» арқылы префикстенсе, тильда-префиксі қалта жиынынан тиісті элементпен ауыстырылады, себебі ол көрсетіледі дәлел ретінде тильда-префиксімен шақырылған дирстер салынған. Егер тильда-префиксіндегі тильден кейінгі таңбалар жетекші «+» немесе «-» жоқ санды құраса, «+» деп болжануда.

Егер логин аты жарамсыз болса немесе тильда кеңеюі сәтсіз болса, сөз өзгеріссіз қалдырылады.

Әрбір ауыспалы тағайындау келесіден кейін деректемеген tilde-префикстері үшін тексеріледі : немесе = . Мұндай жағдайларда тильда кеңеюі жүзеге асырылады. Нәтижесінде, PATH , MAILPATH және CDPATH жолдарына тағайындаулармен файл атауларын пайдалануға болады және қабық кеңейтілген мәнді тағайындайды.

Параметрді кеңейту

' $ ' Таңбасы параметрді кеңейтуді, команда ауыстыруды немесе арифметикалық кеңейтуді енгізеді. Кеңейтілетін параметр атауы немесе символы фрагментте болуы мүмкін, бірақ олар айнымалы мәнді атаудың бір бөлігі ретінде түсіндірілуі мүмкін кейіпкерлерден кеңейтілетін болады.

Қысқартулар қолданылғанда, сәйкес келетін аяқтаушы жақша - кірістірілген арифметикалық кеңейту, командалық алмастыру немесе парамтерлерді кеңейту емес, кері қиғаш сызықпен немесе тырнақша жолында қашқан бірінші } .

Параметр мәні өзгертілді. Браузерлер параметр бір позициялық параметрі бар позициялық параметр болған кезде немесе параметрді оның атауының бір бөлігі ретінде түсіндірілмейтін таңбамен жалғасқан кезде талап етіледі.

Төменде келтірілген жағдайлардың әрқайсысында сөз тильда кеңейтуге, параметрді кеңейтуге, командалық алмастыруға және арифметикалық кеңейтуге жатады. Ішкі жолақты кеңейтуді орындамаған кезде, белгіленбеген немесе нөлге тең емес параметрді сынау; Екінші нүктені шығарып тастағаннан кейін ғана орнатылмаған параметр үшін тестке шығады.

Әдепкі мәндерді қолданыңыз . Параметр орнатылмаған не нөл болса, сөздің кеңеюі ауыстырылады. Әйтпесе, параметрдің мәні ауыстырылады.

Әдепкі мәндерді тағайындау . Параметр орнатылмаған не нөл болса, сөздің кеңеюі параметрге тағайындалады. Параметрдің мәні кейін ауыстырылады. Позиционалдық параметрлер мен арнайы параметрлер осы жолмен тағайындалмауы мүмкін.

Null немесе Unset болса, қате көрсетіңіз . Параметр нөлге тең немесе орнатылмаған болса, сөздің кеңеюі (немесе сөз жоқ болса, хабарлама) стандартты қатеге және интерактивті емес болса, қабыққа жазылады. Әйтпесе, параметрдің мәні ауыстырылады.

Баламалы мәнді қолданыңыз . Егер параметр бос немесе орнатылмаған болса, ештеңе алмастырылмайды, әйтпесе сөздің кеңеюі ауыстырылады.

Есімдердің префикстен басталатын айнымалылардың аттарына кеңейтіледі, IFS арнайы айнымалы мәнінің бірінші таңбасы бөлінеді.

Параметр мәнінің таңбаларындағы ұзындығы ауыстырылады. Параметр * немесе @ болса , ауыстырылған мән - позициялық параметрлердің саны. Егер параметр * немесе @ арқылы индекстелген жиым аты болса, онда мән ауыстырылады - алаптың элементтерінің саны.

Сөз жолдың кеңеюімен қатар, үлгі жасау үшін кеңейтіледі. Параметр параметрдің басталуына сәйкес келсе, онда кеңейтудің нәтижесі - ең қысқа сәйкестік үлгісі бар параметрдің кеңейтілген мәні немесе ең ұзын сәйкестендіру үлгісі (`` ## ' 'case) жойылды. Егер @ немесе * параметрі болса, үлгіні алу әрекеті кез келген позициялық параметрге өз кезегінде қолданылады және кеңейту нәтиже тізімі болып табылады. Егер параметр - @ немесе * таңбалы айнымалы айнымалы болса, онда үлгіні алу әрекеті массивтің әрбір мүшесіне өз кезегінде қолданылады және кеңейту нәтиже тізімі болып табылады.

Сөз жолдың кеңеюімен қатар, үлгі жасау үшін кеңейтіледі. Егер үлгі сәйкесінше параметрдің кеңейтілген мәніне сәйкес келетін болса, онда кеңейтудің нәтижесі - ең қысқа сәйкестік үлгісімен (`` `` '' жағдайда) немесе ұзын сәйкестендіру үлгісімен (`` % % '' жағдайы) жойылды. Егер @ немесе * параметрі болса, үлгіні алу әрекеті кез келген позициялық параметрге өз кезегінде қолданылады және кеңейту нәтиже тізімі болып табылады. Егер параметр - @ немесе * таңбалы айнымалы айнымалы болса, онда үлгіні алу әрекеті массивтің әрбір мүшесіне өз кезегінде қолданылады және кеңейту нәтиже тізімі болып табылады.

Үлгі кеңейтілді, мысалы, жолды кеңейту сияқты үлгі жасау. Параметр кеңейтілді және үлгіге ең ұзын сәйкестік оның жолына ауыстырылады. Бірінші пішінде бірінші матч ғана ауыстырылады. Екінші нысан барлық үлгілерді жолға ауыстыруды тудырады. Егер үлгі # басталса, ол параметрдің кеңейтілген мәнінің басында сәйкес келуі керек. Егер үлгі % бастап басталса, ол параметрдің кеңейтілген мәнінің соңына сәйкес келуі керек. Егер жол нөлге тең болса, үлгіге сәйкестік жойылады және келесі үлгі болмайды. Егер @ немесе * параметрі болса, ауыстыру әрекеті өз кезегінде кез келген позициялық параметрге қолданылады, ал кеңейту нәтиже тізімі болып табылады. Егер параметр - @ немесе * таңбалы айнымалы айнымалы болса, ауыстыру әрекеті массивтің әрбір мүшесіне өз кезегінде қолданылады және кеңейту нәтиже тізімі болып табылады.

Командалық ауыстыру

Командалық ауыстыру пәрмен атауын ауыстыру үшін пәрменді шығаруға мүмкіндік береді. Екі нысан бар:

$ ( команда )

немесе

` командасы`

Баш кеңейтуді команданы орындау және пәрменді командалық ауыстыруды командалардың стандартты шығысымен ауыстыруды жүзеге асырады, кез келген жаңа жолдар жойылады. Ендірілген жаңа жолдар жойылмайды, бірақ сөздерді бөлу кезінде жойылуы мүмкін. Команданы ауыстыру $ (мысф файл ) баламалы, бірақ тезірек $ (< файл ) ауыстырылуы мүмкін.

Қайталанудың ескі стильдегі қиғаштық формасы пайдаланылғанда, қиғаш сызық $ , ` , немесе \ болып шыққаннан басқа, оның мағынасын сақтайды. Кері қиғаш сызықпен бірінші айналдыру командасы командалық алмастыруды тоқтатады. $ ( Пәрмен ) пішінін пайдаланғанда, жақшалар арасындағы барлық таңбалар пәрменді құрайды; ешкім арнайы қарастырылмайды.

Командалық ауыстыру енгізілуі мүмкін. Кескіндеме салынған пішінді пайдаланған кезде ұя салуға ішкі соққылардан кері соққылардан аулақ болыңыз.

Егер алмастыру қос тырнақшаларда пайда болса, сөздердің бөлінуі және жолдың атауын кеңейту нәтижелері бойынша орындалмайды.

Арифметикалық кеңейту

Арифметикалық кеңейту арифметикалық өрнекті бағалауға және нәтижені ауыстыру мүмкіндігін береді. Арифметикалық кеңейтілім форматы:

$ (( өрнек ))

Өрнектің қос тырнақшаға ұқсайтыны өңделеді, бірақ жақшадағы қос тырнақшаға арнайы өңделмейді. Өрнектегі барлық таңбалар параметрді кеңейтуге, жолды кеңейтуге, командалық алмастыруға және цитатаны жоюға жатады. Арифметикалық ауыстыру енгізілуі мүмкін.

Бағалау ARITHMETIC DEFINITION астында төменде көрсетілген ережелерге сәйкес жүзеге асырылады . Егер өрнек жарамсыз болса, bash бас тартуды көрсететін хабарды басып шығарады және алмастыру болмайды.

Процесті ауыстыру

Аталған түтіктерді ( FIFO ) немесе ашық файлдарды атау әдісін / dev / fd әдістерін қолдайтын жүйелерде процесті ауыстыру қолданылады . Ол <( тізім ) немесе > ( тізім ) пішінін қабылдайды. Процестер тізімі FIFO немесе / dev / fd ішіндегі кейбір файлға қосылған кіріс немесе шығыспен іске қосылады. Бұл файлдың атауы кеңейтімнің нәтижесі ретінде ағымдағы пәрменге дәлел ретінде берілді. Егер > ( тізім ) пішіні пайдаланылса, файлға жазу тізімге енгізуді қамтамасыз етеді. <( Тізім ) пішіні пайдаланылса, дәлел ретінде берілген файл тізімнің шығысын алу үшін оқылуы керек.

Қол жетімді болған кезде, процесті ауыстыру параметрлер мен айнымалы кеңейту, командалық ауыстыру және арифметикалық кеңейтуге бір уақытта орындалады.

Сөзді бөлу

Қабақ параметрлерді кеңейту, командалық ауыстыру және арифметикалық кеңейту нәтижелерін сканерлейді, ол сөздерді бөлу үшін қос тырнақшаларда пайда болмады.

Қабықша IFS -тің әрбір таңбасын бөлгіш ретінде қарастырады және басқа кеңейтулердің нәтижелерін осы таңбалардағы сөздерге бөледі. IFS орнатылмаған болса немесе оның мәні , әдепкі, онда IFS таңбаларының кез-келген дәйектілігі сөздерді шектеуге қызмет етеді. IFS әдепкі мәннен басқа мән болса, онда бос орын таңбасының IFS ( IFS бос кеңістік таңбасы) мәнінде болған кезде бос орын таңбалар кеңістігі мен қойындысының кезектіліктері сөздің басында және соңында еленбейді. IFS ағыны емес IFS кез келген таңбалар, кез-келген аралас IFS ағымдық таңбаларымен қатар даланы бөледі. IFS бос орын таңбаларының реті де бөлгіш ретінде қарастырылады. Егер IFS мәні нөлге тең болса, сөздердің бөлінуі орын алмайды.

Нөлдік бос дәлелдер ( «» немесе « ) сақталады. Мәні жоқ параметрлердің кеңеюінен туындаған несквидті емес нөлдік аргумент жойылады. Ешбір мәнсіз параметр қос тырнақшаға кеңейтілсе, бос аргумент нәтиже береді және сақталады.

Ешқандай кеңейту болмаса, бөліну орындалмайтынын ескеріңіз.

Pathname кеңейту

Сөзді бөліп болғаннан кейін, -f параметрі орнатылмаса, bash таңбалар үшін әр сөзді сканерлейді * ? және [ . Егер осы таңбалардың бірі пайда болса, онда сөз үлгі ретінде қарастырылады және үлгіге сәйкес келетін файл атауларының әліпби ретімен сұрыпталған тізімімен ауыстырылады. Егер сәйкес келетін файл атаулары табылмаса және nullglob қабығы параметрі ажыратылса, сөз өзгеріссіз қалады. Егер nullglob параметрі орнатылса және сәйкестік табылмаса, сөз жойылады. Егер nocaseglob қабықшасының опциясы қосылса, матч әліпбилік таңбалар жағдайына қарамастан орындалады. Жолды атауды кеңейту үшін үлгі пайдаланылғанда, аттың басында `` `. '' Таңбасы немесе қиғаш сызықтан кейін бірден сәйкес болуы керек, егер қабық параметрі dotglob орнатылса. Жол атауын сәйкестендірген кезде, сызбаның таңбасы әрқашан анық түрде сәйкестендірілуі керек. Кейбір жағдайларда `` `'' таңбасы арнайы қарастырылмайды. Nocaseglob , nullglob және dotglob қабық параметрлерін сипаттау үшін SHELL BUILTIN COMMANDS астындағы дүкеннің сипаттамасын қараңыз.

GLOBIGNORE shell айнымалысы үлгіге сәйкес келетін файл атауларының жиынын шектеу үшін пайдаланылуы мүмкін. Егер GLOBIGNORE орнатылса, GLOBIGNORE-дағы үлгілердің біріне сәйкес келетін әр сәйкес келетін файл атауы сәйкестіктер тізімінен жойылады. GLOBIGNORE орнатылса да, `` `` '' және `` `` ` файл аттары әрқашан еленбейді. Дегенмен, GLOBIGNORE параметрін орнату dotglob қабы параметрін қосудың әсері бар, сондықтан «`. '' Дегеннен басталатын барлық басқа файл атаулары сәйкес келеді. Файл атауларын «`. '' Басталатын ескі файлдарды елемеу үшін, ``. * '' GLOBIGNORE ішіндегі үлгілердің бірін жасаңыз . GLOBIGNORE орнатылмаған кезде dotglob параметрі ажыратылады.

Үлгіге сәйкес келу

Төменде сипатталған арнайы үлгілік таңбалардан басқа үлгіде пайда болатын кез келген таңба өзіндік сәйкес келеді. NUL сипаты үлгіде болмауы мүмкін. Арнайы таңбалар кейіпкерлері тек сөзбен сәйкестендірілуге ​​тиіс болса, белгіленуі керек.

Арнайы кейіпкерлердің келесі мағыналары бар:

*

Бос жолды қоса, кез келген жолға сәйкес келеді.

?

Кез келген жалғыз таңбаға сәйкес келеді.

[...]

Қосылған таңбалардың кез келгеніне сәйкес келеді. Қисық сызықпен бөлінген жұп таңбалар ауқым өрнегін білдіреді; ағымдағы екі тілдің таңбаларын және таңбалар жиынын пайдаланып, осы екі таңбадан тұратын кез келген таңба сәйкестендіріледі. Егер бірінші таңба [ a ! немесе а, содан кейін қоса салынбаған кез келген таңба сәйкестендіріледі. Ауқым өрнектеріндегі таңбалардың сұрыптау реті ағымдағы тілмен және LC_COLLATE қабықшасының айнымалы мәнімен анықталған. A - оны жиынтығында бірінші немесе соңғы таңба ретінде қосу арқылы сәйкестендірілуі мүмкін. A ] жиынтығында бірінші таңба ретінде қосу арқылы сәйкестендірілуі мүмкін.

[ Және ] ішінде , таңбалар сыныптары синтаксисі [: class :] арқылы көрсетілуі мүмкін, мұнда сынып POSIX.2 стандартында анықталған келесі сыныптардың бірі:

alnum alpha ascii бос cntrl сандық диаграмма төменгі басып шығару пунктінің кеңістігі жоғарғы сөз xdigit
Таңба классы осы сыныпқа жататын кез келген таңбаға сәйкес келеді. Әріптік класс сөзі әріптер, сандар және таңба _ сәйкес келеді.

[ Және ] ішіндегі эквиваленттік класс синтаксисі [= c =] арқылы белгіленуі мүмкін, бұл символ c сияқты бірдей әртүрлі салмақпен (ағымдағы тілмен анықталған) бар барлық таңбаларға сәйкес келеді.

[ Және ] ішінде , синтаксис [. символы ] белгісінің таңбасына сәйкес келеді.

Егер кеңейтілген қабықша опциясы дүкен салынған болса, бірнеше кеңейтілген үлгіні сәйкестендіру операторлары танылады. Төмендегі сипаттамада, үлгі тізім - бұл бір | немесе | бөлінген бір немесе бірнеше үлгілердің тізімі . Композициялық үлгілер мына төмендегі үлгілердің біреуін немесе бірнешеуін пайдалана отырып құрылуы мүмкін:

? ( үлгі тізімі )

Нөлге немесе берілген үлгілердің біреуіне сәйкес келеді

* ( үлгі тізімі )

Берілген үлгілердің нөлдік немесе көп кездесулеріне сәйкес келеді

+ ( үлгі тізімі )

Берілген үлгілердің бір немесе бірнеше келуіне сәйкес келеді

@ ( үлгілік тізім )

Берілген үлгілердің біріне сәйкес келеді

! ( үлгі тізімі )

Берілген үлгілердің біреуінен басқа кез келген нәрсеге сәйкес келеді

Цитировать жою

Алдыңғы кеңістіктен кейін, жоғарыда көрсетілген кеңістіктердің біреуінің нәтижесінен шықпаған \ , ' , және ' таңбаларындағы барлық байқалмаған оқиғалар жойылады.

Қайта тарату

Команда орындалмас бұрын оның кірісі мен шығысы қабықпен түсіндірілген арнайы ескерту арқылы қайта бағытталуы мүмкін. Қайта бағыттау ағымдағы қабықтың орындалу ортасы үшін файлдарды ашу және жабу үшін пайдаланылуы мүмкін. Келесі бағыттау операторлары қарапайым пәрменнің кез келген жерінде пайда болуы немесе пайда болуы немесе пәрменді орындауы мүмкін. Қайта бағыттау солдан оңға қарай пайда болған тәртіпте өңделеді.

Төмендегі сипаттамада, егер файлдың дескрипторы нөмірі алынып тасталса және қайта бағыттау операторының бірінші таңбасы < болса, қайта жіберу стандартты енгізуді білдіреді (файлдың дескрипторы 0). Егер қайта бағыттау операторының бірінші таңбасы >> қайта бағыттау стандартты шығысқа жатады (файлдың дескрипторы 1).

Келесі нұсқауларда қайта бағыттау операторынан кейінгі сөз, егер өзгеше көрсетілмесе, бедердің кеңеюі, тильдалық кеңею, параметрді кеңейту, командалық ауыстыру, арифметикалық кеңейту, үзінділерді жою, жолдың атауын кеңейту және сөз бөлу. Егер ол бір сөзден көп болса, қате туралы хабарлайды.

Қайта бағыттау тәртібі елеулі екенін ескеріңіз. Мысалы, команда

ls > dirlist 2 > & 1

пәрменде стандартты шығыс пен стандартты қатені файлды сүзгішке жібереді

ls 2 > & 1 > dirlist

стандартты өнімнің ластаушыға стандартты шығысын ғана жібереді, себебі стандартты қате шығару стандартты өнімнің ластаушыға қайта бағытталмас бұрын стандартты қате стандартты шығару ретінде қайталанған.

Bash келесі кестеде сипатталғандай қайта бағыттауда қолданылғанда бірнеше файл атауын арнайы өңдейді:

/ dev / fd / fd

Fd - жарамды бүтін сан болса, fd файлының дескрипторы қайталанады.

/ dev / stdin

0 файлының дескрипторы қайталанған.

/ dev / stdout

1-файлдың дескрипторы қайталанады.

/ dev / stderr

2-файлдың дескрипторы қайталанады.

/ dev / tcp / host / port

Егер хост жарамды хост атауы немесе Интернет мекенжайы болса және порт порт нөмір немесе қызмет атауы болса, bash TCP қосылымын тиісті ұяшыққа ашады.

/ dev / udp / host / port

Егер хост жарамды хост атауы немесе Интернет мекенжайы болса және порт порт нөмір немесе қызмет атауы болса, bash UDP қосылымын тиісті ұяшыққа ашады.

Файлды ашу немесе жасау сәтсіз аяқталуына әкеп соғады.

Кірісті қайта бағыттау

Енгізуді қайта бағыттау файл атауы, файлдың дескрипторында оқуға арналған сөздің кеңейтілуінен, не егер n көрсетілмесе, стандартты енгізуді (файлдың дескрипторы 0) пайда болады.

Енгізуді қайта бағыттаудың жалпы форматы:

[ n ] < сөз

Қайта бағыттау

Шығарылымды қайта атау файл атауы деформацияланатын файлға жазуға арналған сөздің кеңейтілуінен немесе n көрсетілмесе , стандартты шығарумен (файлдың дескрипторы 1) пайда болады. Егер файл жоқ болса, ол жасалады; егер ол бар болса, ол нөлге дейін қысқартылады.

Шығарылымды қайта бағыттаудың жалпы форматы:

[ n ] > сөз

Егер қайта бағыттаушы оператор >> орнатылған және орнатылуға noclobber параметрі қосылған болса, атының сөздіктің кеңейтілуіне әкелетін және тұрақты файл болған жағдайда, қайта бағыттау орындалмайды. Егер қайта бағыттаушы оператор > | болса , немесе қайта бағыттаушы оператор >> орнатылған күйге орнатылған пәрменге noclobber параметрі қосылмаған болса, сөздің атауы бар файл болса да қайта бағыттауға әрекет жасалады.

Қайта жіберілген нәтижені қосу

Шығарылымның осы жолмен қайта бағытталуы, атының аты файлдың дескрипторына n қосу үшін ашылатын сөздің кеңейтілуінен немесе n көрсетілмесе , стандартты шығудан (файлдың дескрипторы 1) пайда болады. Егер файл жоқ болса, ол жасалады.

Өнімді шығарудың жалпы форматы:

[ n ] >> сөз

Стандартты шығыс және стандартты қателерді қайта бағыттау

Баш стандартты шығу (файлдың дескрипторы 1) және стандартты қателік шығуы (файлдың дескрипторы 2) осы құрылыста сөздің кеңеюі болатын файлға қайта бағытталуға мүмкіндік береді.

Стандартты шығуды және стандартты қателерді қайта бағыттау үшін екі пішім бар:

&> сөзі

және

> & сөзі

Екі нысанның бірі бірінші болып табылады. Бұл семантикалық түрде баламалы

> Сөз 2 > & 1

Мұнда құжаттар

Қайта бағыттаудың бұл түрі тек қана сөзді (беткі жағы жоқ бланкілерді) қамтитынша, ағымдағы көзден енгізуді оқуға үйретеді. Осы тармаққа дейін оқылған барлық жолдар командаларға арналған стандартты енгізу ретінде пайдаланылады.

Осы құжаттың форматы:

<< [ - ] сөзі мұнда - құжатты бөлгіш

Сөзде ешқандай параметрді кеңейту, командалық алмастыру, арифметикалық кеңейту немесе жолдың атауының кеңеюі орындалады. Сөздегі кез келген таңбалар белгіленсе, шектегіш сөзден алып тастаудың нәтижесі болып табылады және осы құжатдағы сызықтар кеңейтілмейді. Егер сөз сөзсіз болса, осы құжаттың барлық сызықтары параметрді кеңейтуге, команда ауыстыруына және арифметикалық кеңейтуге ұшырайды. Соңғы жағдайда, \ таңбалар тізбегі еленбейді және \ , $ , және ` таңбаларын белгілеу үшін пайдаланылуы керек.

Егер қайта жіберу операторы << - болса , онда барлық жетекші қойынды таңбалары кіріс жолдарынан және бөлгішті қамтитын жолдан алынады. Бұл жерде қабық сценарийлері ішіндегі құжаттар табиғи түрде шегінуге мүмкіндік береді.

Мұнда Strings

Құжаттардың нұсқасы, форматы:

<<< сөз

Сөз кеңейтіліп, стандартты енгізудегі пәрменге жеткізіледі.

Файлдық дескрипторларды қайталау

Қайта бағыттаушы оператор

[ n ] <& сөз

кіріс файлының дескрипторларын қайталайды. Егер сөз бір немесе бірнеше санға дейін кеңейсе, n арқылы белгіленетін файл дескрипторы сол файлдық дескриптордың көшірмесі болып табылады. Егер сөздегі сандар кіріс үшін ашылатын файлдың дескрипторын көрсетпесе, қайта жіберу қатесі пайда болады. Егер сөз - бағаланады, - файлдың дескрипторы жабық. Егер n көрсетілмесе, стандартты енгізу (файлдың дескрипторы 0) қолданылады.

Оператор

[ n ] > & сөз

сонымен қатар, демалыс файлының дескрипторларын қайталама түрде пайдаланылады. Егер n көрсетілмесе, стандартты шығыс (файлдың дескрипторы 1) қолданылады. Егер сөздегі сандар шығару үшін ашылатын файл дескрипторын көрсетпесе, қайта жіберу қатесі пайда болады. Арнайы жағдайда, егер n енгізілмесе және сөз бір немесе бірнеше санға дейін кеңеймесе, стандартты шығыс және стандартты қате бұрын сипатталғандай қайта бағытталады.

Файлдық дескрипторларды жылжыту

Қайта бағыттаушы оператор

[ n ] <& сан -

файлдың дескрипторының санын дескриптор n файлына немесе егер n көрсетілмесе, стандартты енгізуді (файлдың дескрипторы 0) жылжытады. сан нительге көшірілгеннен кейін жабылады.

Сол сияқты, қайта бағыттаушы оператор

[ n ] > & сан -

файлдың дескрипторының санын дескриптор n файлына немесе стандартты шығысқа (файлдың дескрипторы 1), егер n көрсетілмесе, жылжытады.

Оқу және жазу үшін файлдық дескрипторларды ашу

Қайта бағыттаушы оператор

[ n ] <> сөзі

файл атауы деформациясы бойынша оқуға және жазуға арналған сөздің кеңеюі немесе егер n көрсетілмесе, файлдық дескрипторда файл атауы пайда болады. Егер файл жоқ болса, ол жасалады.

ALIASES

Бүркеншік аттар қарапайым пәрменнің бірінші сөзі ретінде пайдаланылатын жолды сөзге ауыстыруға мүмкіндік береді. Қабықша бүркеншік аттары мен unalias салынған пәрмендері арқылы орнатылуы және орнатылуы мүмкін бүркеншік тізімдерін сақтайды (төменде SHELL BUILTIN COMMANDS бөлімін қараңыз). Әрбір команданың бірінші сөзі, егер атаусыз болса, бүркеншік аты бар-жоғын тексеру үшін тексеріледі. Егер солай болса, бұл сөз бүркеншік атты мәтінімен ауыстырылады. Бүркеншік аты және алмастыратын мәтін жоғарыда аталған метакарактерлерді қоса алғанда, кез келген жарамды қабығы кірісін қамтуы мүмкін, қоспағанда, бүркеншік аты = болмауы мүмкін. Ауыстыру мәтінінің бірінші сөзі бүркеншік аттар үшін сыналады, бірақ кеңейтілетін бүркеншікке ұқсас сөз екінші рет кеңейтілмейді. Бұл дегеніміз, мысалы, ls -F , мысалы, бүркеншік аты болуы мүмкін және bash алмастыру мәтінін рекурсивті түрде кеңейтуге тырыспайды. Егер бүркеншік мәннің соңғы сипаты бос болса , бүркеншік атпен келесі келесі пәрмен сөзі бүркеншік кеңейтуге тексеріледі.

Бүркеншік аттар лақап пәрменімен жасалып, тізімделеді және unalias пәрменімен жойылады.

Ауыстырылған мәтінде аргументтерді қолдану механизмі жоқ. Аргументтер қажет болса, қабық функциясын пайдалану керек (төменде ФУНКЦИЯЛАРДЫ қараңыз).

Кеңейтілімсіз қабықша параметрі дүкен арқылы орнатылмаса (төмендегі SHELL BUILTIN COMMANDS астында дүкен сипаттамасын қараңыз) бүркеншік кеңейтілмейді.

Бүркеншік аттарды анықтау мен пайдалану ережелері біршама шатастырады. Bash әрқашан осы жолдағы командалардың кез келгенін орындаудан бұрын кем дегенде бір толық жолды оқиды. Бүркеншік аттар команда орындалатын кезде емес, оқылған кезде кеңейтіледі. Сондықтан басқа пәрмен сияқты бірдей жолда пайда болатын бүркеншік аттар анықтамасының келесі жолына дейін әрекет етпейді. Бұл жолдағы бүркеншік анықтау анықтамасынан кейінгі пәрмендер жаңа бүркеншік аттармен әсер етпейді. Бұл мінез-құлық функция орындалатын мәселе болып табылады. Бүркеншік функциялар функцияны орындағанда емес, функция анықтамасы оқылғанда кеңейтіледі, себебі функцияның өзі анықтама пәрмені болып табылады. Соның салдарынан, функцияда анықталған бүркеншік аттар бұл функция орындалмайынша қол жетімді болмайды. Қауіпсіз болу үшін әрқашан бүркеншік анықтамаларын бөлек жолға қойыңыз және аралас командаларда бүркеншік атты қолданбаңыз.

Әрбір мақсат үшін бүркеншік қабықтың функцияларымен ауыстырылады.

ФУНКЦИЯЛАР

Shell GRAMMAR астында жоғарыда сипатталғандай анықталған қабық функциясы кейінірек орындау үшін бірқатар командаларды сақтайды. Қабықша атауының атауы қарапайым пәрмен атауы ретінде пайдаланылғанда, сол функция атымен байланысты командалардың тізімі орындалады. Функциялар ағымдағы қабықтың контекстінде орындалады; оларды интерпретациялау үшін жаңа процесс жасалмайды (мұны қабақ сценарийді орындау арқылы қарама-қарсы). Функция орындалғанда, функцияның дәлелдері оны орындау кезінде позициялық параметрлерге айналады. Өзгертулерді көрсету үшін арнайы параметр # жаңартылады. 0 позициялылық параметрі өзгермейді. FUNCNAME айнымалы функция орындалу кезінде функцияның атына орнатылады. Қабықтарды орындау ортасының барлық басқа аспектілері функция мен оның шақырушысы арасында бірдей болады, бірақ функцияға trace атрибуты берілмесе ( DEBUG тұзағы төмендегі SHELL BUILTIN COMMANDS астында салынған тұзақтың сипаттамасын қараңыз) төменде салынған декларацияның сипаттамасын қараңыз).

Функцияға жергілікті айнымалылар жергілікті салынған пәрменмен жариялануы мүмкін. Әдетте, айнымалы мәндер мен олардың мәндері функция мен оның шақырушы арасында бөлінеді.

Егер салынған пәрмен тапсырмасы функцияда орындалған болса, функция функцияны шақырудан кейін келесі пәрменмен жалғастырады және орындалады. Функция аяқталғанда, позициялық параметрлердің мәндері және # арнайы параметрі функция орындалмас бұрын алынған мәндерге қалпына келтіріледі.

Функция атаулары мен анықтамалары « -f» опциясымен декларацияға немесе салынған пәрмендер тізіміне енгізілуі мүмкін. Декларациялау немесе түрлендіру -F- опциясы функция атауын ғана көрсетеді. Функцияларды экспорттау үшін -f параметрімен автоматты түрде анықтайтын етіп экспорттауға болады .

Функциялар рекурсивті болуы мүмкін. Рекурсиялық қоңырауларға ешқандай шектеу қойылмайды.

АРЕММЕТИКАЛЫҚ БАҒАЛАУ

Қабықша арифметикалық өрнектерді белгілі бір жағдайларда бағалауға мүмкіндік береді (қараңыз, сандық командалар мен арифметикалық кеңейту ). Баға толтыруға арналған чек жоқ, тіркелген ені бар бүтін сандарда жүргізіледі, бірақ 0-ге бөліну қате ретінде белгіленеді және белгіленеді. Операторлар, олардың басымдықтары мен ассоциациясы С тіліндегідей. Келесі операторлар тізімі тең дәрежелі операторлар деңгейіне топтастырылған. Деңгейлер басымдықты төмендету тәртібімен тізімделеді.

id ++ id -

айнымалы кейінгі қадам және кейінгі азайту

++ id - id

айнымалы алдын ала ұлғайту және алдын-ала азайту

- +

бірлік минус және плюс

! ~

логикалық және битальды түрде қабылдамау

**

экспоненциация

* /%

көбейту, бөлу, қалдықтар

+ -

қосу, алып тастау

<< >>

сол және оң битальды ауыстыру

<=> = <>

салыстыру

==! =

теңдік және теңсіздік

Және

битмалық және AND

^

битальды ерекше НЕМЕСЕ

|

битальды немесе НЕМЕСЕ

&&

логикалық AND

| |

логикалық НЕМЕСЕ

expr ? expr : expr

шартты бағалау

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

тағайындау

expr1 , expr2

үтір

Shell айнымалылары операндтар ретінде рұқсат етіледі; Параметрді кеңейту өрнектің бағалануына дейін орындалады. Өрнек ішінде параметрді кеңейту синтаксисін пайдаланбастан, қабықтың айнымалы мәндерін атаумен атауға болады. Айнымалының мәні ол сілтеме жасалған кезде арифметикалық өрнекте бағаланады. Қабықтың айнымалысы өрнекте пайдаланылатын толық бүтіндік төлсипаты болмауы керек.

0 жетекші тұрақтысы сегіздік сандар ретінде түсіндіріледі. Жетекші 0x немесе 0X он алтылықты білдіреді. Әйтпесе, сандар [ base # ] n нысанын қабылдайды, мұнда база арифметикалық базаны білдіретін 2 және 64 арасындағы ондық сан және n - бұл негіздегі сан. Егер негіз # алынбаса, онда 10 негізі пайдаланылады. 9-дан жоғары сандар осы ретпен кіші әріппен, бас әріптермен, @, және _ арқылы көрсетіледі. Егер база 36-дан аз немесе тең болса, онда 10-дан 35-ке дейінгі сандарды көрсету үшін кіші әріптер мен бас әріптер бір-бірінен ауыстырылуы мүмкін.

Операторлар басымдық тәртібімен бағаланады. Жақшадағы қосалқы өрнектер алдымен бағаланады және жоғарыда көрсетілген басымдық ережелерін ауыстыруы мүмкін.

КЕЛІСІМШАРТТЫҢ ЕСЕПТЕРІ

Шартты өрнектер [[ қосылыс пәрмені және сынақ және [ файлдық атрибуттарды тексеріп, жолды және арифметикалық салыстыруды орындау үшін салынған пәрмендер] арқылы пайдаланылады. Өрнек келесі біртұтас немесе екілік құрамдастардан құралады. Егер кез-келген файл аргументінің біреуі / dev / fd / n пішіні болса, онда n файлының дескрипторы тексеріледі. Егер файлдың бастапқы дәлелі / dev / stdin , / dev / stdout немесе / dev / stderr болса , онда 0, 1 немесе 2-файлдың дескрипторы сәйкесінше тексеріледі.

- файл

Файл бар болса шын.

-b файлы

Файл бар болса және арнайы файл блокты болса.

-c файл

Файл бар болса және таңбаның ерекше файлы болып табылады.

-d файл

Файл бар болса және каталог болса, шын.

-e файл

Файл бар болса шын.

-f файл

Файл бар болса және файл тұрақты болса.

-g файл

Файл бар болса және орнатылған-топ-id болса, дұрыс.

-h файл

Файл бар болса және символдық сілтеме болып табылады.

-k файлы

Файл бар болса және оның `` жабысқақ '' биті орнатылған болса.

-p файл

Файл бар болса және аталып өткен құбыр (FIFO) болып табылады.

-r файл

Файл бар болса және оқуға жарамды болса.

-s файл

Файл бар болса және өлшемі нөлден үлкен болса, дұрыс болады.

-t fd

Fd файлының дескрипторы ашық болса және терминалға қатысты болса.

-u файл

Файл бар болса және оның орнатылған-пайдаланушы-идентификатор бит орнатылған болса.

-w файл

Файл бар болса және жазуға болатын болса, шын.

-x файл

Файл бар болса және орындалатын болса, шын.

-O файл

Файл бар болса және тиімді пайдаланушы идентификаторына тиесілі.

-G файл

Файл бар болса және тиімді топтық идентификаторға тиесілі болса шын.

-L файл

Файл бар болса және символдық сілтеме болып табылады.

-S файлы

Файл бар болса және розетка болса.

-N файлы

Егер файл бар болса және ол соңғы оқылғаннан кейін өзгертілсе.

file1 - nt file2

Егер file1 файл2 қарағанда жаңа (модификации күніне) немесе файл1 бар болса және file2 жоқ болса, дұрыс.

file1 - ot файл2

Егер файл1 файл2 қарағанда ескі болса, немесе файл2 бар болса және file1 дұрыс болмаса.

file1 -ef file2

Файл1 және файл2 бірдей құрылғыға және иноды нөмірлерге сілтеме жасалған болса дұрыс.

-o optname

Егер қабығы опциясының оптималды атауы қосылса, шын. -o опциясының сипаттамасы астында төменде салынған жиынтыққа арналған опциялардың тізімін қараңыз.

-z жолы

Егер жолдың ұзындығы нөл болса.

-n жол

жол

Жолдың ұзындығы нөл емес болса, шын.

string1 == string2

Егер жолдар бірдей болса, шын. == POSIX қатаң сәйкестік үшін орнына қолданылуы мүмкін.

string1 ! = string2

Егер жолдар тең емес болса, шын.

string1 < string2

String1 ағымдағы жолда лексикографиялық жолмен2 жолына дейін сұрыптайды.

string1 > жол2

True if string1 жолдан кейін2 ағымдағы тілде лексикографиялық түрде сұрыптайды.

arg1 OP arg2

ОП -eq , -ne , -lt , -le , -gt немесе -ge . Бұл арифметикалық екілік операторлар arg1 тең болса, тең немесе одан көп, немесе артығынан үлкен немесе тең, тең, кем, тең немесе одан аз, тең. Arg1 және arg2 оң немесе теріс сандар болуы мүмкін.

НЕГІЗГІ БІЛДІРІП БЕРУ

Қарапайым тапсырма орындалған кезде, қабық солдан оңға қарай келесі кеңейтуді, тапсырмаларды және қайта бағыттауды орындайды.

1. Сарптағыш айнымалы тапсырмалар ретінде белгілеген сөздер (команда атауының алдындағы) және қайта бағыттау кейінірек өңдеу үшін сақталады.

2. Ауыспалы тапсырмалар немесе қайта бағытталмаған сөздер кеңейтілді. Кеңейтілуден кейін қандай да бір сөздер қалса, бірінші сөз команданың атауы, ал қалған сөздер дәлел болып табылады.

3.Redirections REDIRECTION бөлімінде көрсетілгендей орындалады.

4. Әрбір ауыспалы тапсырмадан кейінгі мәтін айнымалыға тағайындалмас бұрын тильденді кеңейтуге, параметрді кеңейтуге, командалық алмастыруға, арифметикалық кеңейтуге және цитата шығарудан өтеді.

Егер командалық атау нәтижесі болмаса, айнымалы тапсырмалар ағымдағы қабық ортасына әсер етеді. Әйтпесе, айнымалылар орындалатын пәрменнің ортасына қосылады және ағымдағы қабық ортасына әсер етпейді. Егер тапсырмалардың кез-келгені readonly айнымалы мәнге тағайындалса, қате пайда болады және пәрмен нөлден тыс күйден шығады.

Егер ешқандай пәрмен атауы нәтиже бермесе, қайта бағыттау орындалады, бірақ ағымдағы қабық ортасына әсер етпейді. Қайта жіберу қатесі пәрменнің нөлден тыс күйден шығуына әкеледі.

Егер кеңейтілген кейін командалық атау болса, орындалу төменде сипатталғандай орындалады. Әйтпесе, команда шығып тұрады. Егер кеңейтімдердің бірі командалық алмастыруды қамтыса, команданың шығу күйі орындалған соңғы командалық ауыстырудың шығу күйі болып табылады. Егер командалық ауыстыру болмаса, команда нөлдік күйден шығады.

COMMAND EXECUTION

Команданың сөзге бөлінгеннен кейін, егер ол қарапайым пәрменге және аргументтердің қосымша тізіміне әкелсе, келесі әрекеттер жасалады.

Егер пәрмен атауы ешқандай сызықсыз болса, қабық оны орналастыруға тырысады. Егер осы атаумен қабық функциясы бар болса, онда бұл функция жоғарыда сипатталғандай FUNCTIONS функциясында шақырылады. Егер атау функцияға сәйкес келмесе, қабық оны қабығы салынған тізімде іздейді. Егер сәйкестік табылса, бұл салынған.

Егер атау қабығы функциясы де, қалта да болмаса және ешқандай сызулар болмаса, bash PATH элементінің әрбір элементін аталған атаумен орындалатын файлды қамтитын каталог үшін іздейді. Bash бағдарламасы орындалатын файлдардың толық жолдарын еске сақтау үшін хэш кестесін қолданады (төменде SHELL BUILTIN COMMANDS астындағы хешті қараңыз). PATH ішіндегі каталогтарды толық іздеу хэш кестесінде табылмаған жағдайда ғана орындалады. Егер іздеу сәтсіз болса, қабығы қате туралы хабарды шығарады және 127 мәртебесін қайтарады.

Егер іздеу сәтті болса немесе пәрмен атауы бір немесе бірнеше слэш болса, бұл бағдарлама аталған бағдарламаны бөлек орындау ортасында жүзеге асырады. Аргумент 0 берілген атқа орнатылады, ал қалған командаларға аргументтер берілген болса, берілген дәлелдерге орнатылады.

Егер бұл атқару орындалмаса, файл орындалатын пішімде болмаса және файл каталог болмаса, ол қабық пәрмендері бар файл қабығы сценарийі деп есептеледі. Оны орындау үшін кішігірім кісі бар. Бұл подождите өзін қалпына келтіреді, өйткені әсер жаңа снарядты сценарийді өңдеу үшін шақырылды, қоспағанда, ата-аналар есте сақтаған командалардың орындары ( SHELL BUILTIN COMMANDS астында төмендегі хешті қараңыз) баланы сақтайды.

Егер бағдарлама # болып басталатын файл болса , бірінші жолдың қалған бөлігі бағдарламаға аудармашы көрсетеді. Қабықша осы орындалатын пішімді өздігінен өңдемейтін операциялық жүйелерде көрсетілген аудармашыды орындайды. Аудармашыға арналған аргументтер бағдарламаның бірінші жолында аудармашы атауынан кейін бір қосымша опциядан тұрады, одан кейін бағдарламаның атауы, одан кейін команда параметрлері болса, бар болса.

ЖҰМЫС ІСТЕУ ЖҰМЫСЫ

Қабықшаның орындалу ортасы бар , ол келесіден тұрады:

* exec салынған қайта бағыттау арқылы өзгертілгендей, шақыру кезінде қабықпен мұраланған ашық файлдар

* Ағымдағы жұмыс каталогы cd , pushd немесе popd арқылы белгіленеді немесе шақыру кезінде қабықпен мұраланған

* файлды жасау режимінің маскасын umask немесе қабықтың ата-анасынан мұраланған орнатқан

* Тұздықпен орнатылған ағымдағы торлар

* Айнымалы тағайындау немесе қоршаудың ата-анасынан қоршаған ортаға қойылған немесе мұраланған параметр арқылы орнатылған қабық параметрлері

* Қоршаудың функциялары қоршаған ортамен орындалатын немесе қабықтың ата-анасынан мұраланған кезде анықталған

* опцияларды (әдепкі бойынша немесе пәрмен жолы дәлелдерімен) немесе орнату арқылы іске қосады

* shopt арқылы қосылған опциялар

* бүркеншік атпен анықталған қабық бүркеншік аттары

* әртүрлі процедураның идентификаторлары, соның ішінде фондық тапсырмалар, $$ мәні және $ PPID мәні

Орнатылған немесе қабық функциясынан басқа қарапайым пәрменді орындау қажет болғанда, ол төмендегілерден тұратын жеке орындалу ортасында шақырылады. Егер өзгеше көрсетілмесе, мәндер қапталдан мұраланған.

* қабықтың ашық файлдары, сондай-ақ пәрменге қайта бағыттау арқылы көрсетілетін кез-келген өзгерістер мен толықтырулар

* ағымдағы жұмыс каталогы

* файлды жасау режимінің маскасы

* Қоршаған ортаға жіберілген командаларға экспортталатын айнымалылармен бірге, экспорт үшін белгіленген қабықтың айнымалы мәндері

Қабықпен ұсталған тұзақтар қабықтың ата-анасынан мұраланған мәндерге қалпына келтіріледі және қабықпен елемеген тұзақтар еленбейді

Бұл жеке ортада шақырылған команда қабықтың орындау ортасына әсер ете алмайды.

Командалық алмастыру және асинхронды командалар қабықтың ортасында қайталанатын қабықшаның ортасында, тек қана қабықпен ұсталған тұзақтар оның ата-анасынан мұраға қалған мұраға алынған мәндерге қайтарылады. Құбырдың бөлігі ретінде шақырылған салынған командалар, сондай-ақ, кішігірім ортада орындалады. Шағын ортада жасалған өзгертулер қабықтың орындау ортасына әсер ете алмайды.

Егер пәрменді & & job бақылауы белсенді болмаса, пәрмен үшін әдепкі стандартты енгізу - бос файл / dev / null . Әйтпесе, шақыру пәрмені қоңырау шалушысының файлдық дескрипторларын қайта бағыттау арқылы өзгертілген болады.