Bash - Linux Buyruq - Unix Buyruq

NAME

bash - GNU Bourne-Again Sheell

SYNOPSIS

bash [options] [fayl]

DESCRIPTION

Bash , standart kirish yoki fayldan o'qiladigan buyruqlarni bajaradigan sh- mos keladigan buyruq tili tarjimoni. Bash shuningdek, Korn va C kabuklarından foydali xususiyatlarni o'z ichiga oladi ( ksh va csh ).

Bash , IEEE POSIX Shell va Asboblar spetsifikatsiyasi (IEEE Ishchi Guruhi 1003.2) muvofiq bajarilishi uchun mo'ljallangan.

OPTIONS

O'rnatilgan komitetning tavsifida hujjatlangan yagona belgilar qobig'i variantlaridan tashqari, bash so'ralganda quyidagi variantlarni sharhlaydi:

-c string

-c variantni mavjud bo'lsa, buyruqlar satrdan o'qiladi. Jarayondan keyin dalillar mavjud bo'lsa, ular $ 0 dan boshlab pozitsion parametrlarga beriladi.

-i

-i variant mavjud bo'lsa, qobiq interaktivdir .

-l

Bashni kirish qobig'i sifatida chaqirgandek harakat qiling (quyida INVOCATION bo'limiga qarang).

-r

-r- variant mavjud bo'lsa, qobiq cheklanadi (quyida ko'rsatilgan QISQA KO'RIB ChIQILGAN ).

-s

-S- variant mavjud bo'lsa yoki parametrlarni qayta ishlashdan keyin hech qanday argumentlar qolmagan bo'lsa, buyruqlar standart kirishdan o'qiladi. Ushbu parametr interaktiv qobiqni chaqirishda joylashuv parametrlarini sozlash imkonini beradi.

-D

$ Oldingi ikkita tirnoqli satrlarning ro'yxati $ ga teng . Bu mahalliy til C yoki POSIX bo'lmasa, tilni tarjima qilishga tegishli bo'lgan satrlar. Bu -n variantini bildiradi; hech qanday buyruqlar bajarilmaydi.

[- +] O [ shopt_option ]

shopt_option - shopt builtin tomonidan qabul qilingan qobiq variantlaridan biri (qarang SHELL BUILTIN COMMANDS ). Shopt_option mavjud bo'lsa, -O bu tanlovning qiymatini belgilaydi; + O buni o'zgartirmaydi. Shopt_option berilmasa , shopt tomonidan qabul qilingan qobiq variantlarining nomlari va qadriyatlari standart chiqishda yoziladi. Chaqiruv variantni + O bo'lsa, chiqdi kirish sifatida qayta ishlatilishi mumkin bo'lgan formatda ko'rsatiladi.

-

A - variantlarning oxirigacha signal beradi va qo'shimcha variantni ishlashni o'chiradi. Keyin har qanday dalillar - fayl nomi va argument sifatida ko'rib chiqiladi. Bir argüman - tengdir.

Bash shuningdek bir nechta belgilar variantlarini ham sharhlaydi. Ushbu variantlar buyruqlar qatorida tan olinishi uchun yagona belgilar variantidan oldin ko'rinishi kerak.

- dump-po-strings

-D ga teng, lekin chiqish GNU gettext po (portativ ob'ekt) fayl formatida.

- dumaloq simlar

D-ga teng.

--Yordam bering

Foydalanuvchi chiqishi haqidagi xabarni ko'rsatish va muvaffaqiyatli chiqish.

- fayllar fayli

--rcfile fayli

Agar qobiq interaktiv bo'lsa ( ~ INVOCATION ga qarang). ~ / .bashrc standart shaxsiy boshlang'ich fayl o'rniga fayldan buyruqlar bajaring.

--Kirish

-l ga teng.

- yo'qotish

Qobiq interaktiv bo'lganda buyruq qatorlarini o'qish uchun GNU readline kutubxonasidan foydalanmang.

- noprofil

~ / .bash_profile , ~ / .bash_login , yoki ~ / .profile tizim fayllaridan boshlang'ich faylini / etc / profilini yoki shaxsiy boshlash fayllarini o'qimang . Odatiy ravishda, bosh fayllar login kabeli sifatida ishlatilganda ushbu fayllarni o'qiydi (quyidagi INVOCATION bo'limiga qarang).

--norc

Shell interaktiv bo'lsa ~ / .bashrc shaxsiy boshlash faylini o'qimoq va bajarmang . Agar qobiq sh kabi chaqirilsa, bu parametr tanlangan.

- posix

Standart operatsiyani POSIX 1003.2 standartidan standartga ( posix rejimiga ) moslashtiradigan bash xatti-harakatlarini o'zgartirish.

- cheklangan

Qobiq cheklangan bo'lib qoladi (quyida QO'ShIMChA QO'ShIMChA qarang).

- Rpm-talab qiladi

Qobiq skriptini ishlatish uchun zarur bo'lgan fayllar ro'yxatini ishlab chiqing. Bu "-n" degan ma'noni anglatadi va kompilyatsiya vaqtini xato tekshirishni tekshirish bilan bir xil cheklovlarga bog'liq; Orqa qismlar, [] testlar va evallar tahlil qilinmaydi, shuning uchun ba'zi bog'liqliklar o'tkazib yuborilishi mumkin. -verbose -v-ga teng.

- o'zgartirish

Bashning ushbu namunasi uchun standart chiqishda versiya ma'lumotlarini ko'rsatish va muvaffaqiyatli chiqing.

ARGUMLAR

Argumentlar parametrlarni qayta ishlashdan keyin qolsa va na -c yoki -s- variantlari taqdim etilmagan bo'lsa, birinchi dalil qobiqli buyruqlarni o'z ichiga olgan fayl nomi deb hisoblanadi. Bash bu usulda chaqirilsa, $ 0 fayl nomiga o'rnatiladi va joylashuv parametrlari qolgan argumentlarga o'rnatiladi. Bash ushbu faylni o'qiydi va bajaradi, so'ngra chiqadi. Bashning chiqish holati skriptda bajarilgan oxirgi buyruqning chiqish holati. Hech qanday buyruqlar bajarilmasa, chiqish holati 0 ga teng. Dastlab faylni joriy katalogda ochish uchun qilingan va hech qanday fayl topilmasa, qobiq skript uchun PATH katalogini izlaydi.

INVOKATION

Kirish qobig'i - argument nolining birinchi belgisidir - yoki --login opsiyasi bilan boshlangan.

Interaktiv qobiq bir-biridan farqli argumentlarsiz ishga tushirildi va standart kirish va chiqish ikkala terminalga ( isatty (3) bilan belgilanadigan) yoki -i opsiyasi bilan boshlangan -c variantisiz ishlaydi. PS1 belgilanadi va $ - ichki interfeys interaktiv bo'lib, bu shell skriptini yoki boshlang'ich faylini ushbu holatni sinab ko'rishga imkon beradi.

Quyidagi paragraflar bosh boshlash fayllarini qanday bajarilishini tasvirlaydi. Agar biror fayl mavjud bo'lsa, lekin uni o'qib bo'lmaydigan bo'lsa, bash xato haqida xabar beradi. Tildlar EXPLANION qismidagi Tilde kengayishi ostida quyida ko'rsatilganidek, fayl nomlari bilan kengaytiriladi .

Bash interaktiv kirish qobig'i sifatida yoki interaktiv bo'lmagan qobiq sifatida --login opsiyasi sifatida ishlatilganda, u avval faylni o'qiydi va faylni / etc / profilidagi buyruqlarni bajaradi. Ushbu faylni o'qib bo'lgach, u ~ / .bash_profile , ~ / .bash_login va ~ / .profile fayllarini ushbu tartibda topadi va mavjud bo'lgan va o'qilishi mumkin bo'lgan buyruqlar o'qiydi va ijro etadi. - Noobrofile opsiyasi qobiq ushbu xatti-harakatni inkor eta boshlaganda ishlatilishi mumkin.

Agar kirish qobig'i chiqsa, bash o'qiladi va ~ / .bash_logout faylidan buyruqlarni bajaradi, agar mavjud bo'lsa.

Agar kirish qobig'i bo'lmagan interaktiv qobiq ishga tushirilsa, bash o'qiydi va ~ / .bashrc dan buyruqlar bajaradi, agar bu fayl mavjud bo'lsa. Bu --norc parametrini ishlatish bilan inhibe qilinadi. --rcfile fayl variantni bash'ani ~ / .bashrc o'rniga fayllardan o'qish va bajarish uchun majbur qiladi .

Bash interaktiv usulda ishga tushirilganda, masalan, qobiqli skriptni ishga tushirish uchun muhitda BASH_ENV o'zgaruvchisini qidiradi , agar u paydo bo'lsa uning qiymatini kengaytiradi va kengaygan qiymati o'qish va ijro qilish uchun fayl nomi sifatida foydalanadi . Bash quyidagi buyruqlar bajarilganidek o'zini tutadi:

agar [-n "$ BASH_ENV"] bo'lsa; keyin. "$ BASH_ENV"; fi

ammo PATH o'zgaruvchining qiymati fayl nomini izlash uchun ishlatilmaydi.

Agar bash sh nomi bilan chaqirilsa, shning tarixiy versiyalarining boshlang'ich xatti-harakatlarini, POSIX standartiga mos kelganda, iloji boricha yaqinroq taqsimlaydi. Interaktiv kirish qobig'i yoki " login" parametrli interaktiv bo'lmagan qobiq sifatida ishlatilganda, avvalo bu tartibda / etc / profile va ~ / .profile komandalaridan o'qish va ularni bajarishga urinadi. Bunday xatti-harakatni oldini olish uchun --noprofile variantini ishlatish mumkin. Sh nomi bilan interaktiv qobiq sifatida chaqirilganda, BAS o'zgarmaydigan ENVni qidiradi, agar belgilangan bo'lsa, uning qiymatini kengaytiradi va kengaygan qiymati o'qish va ijro qilish uchun fayl nomi sifatida foydalanadi. Sh kabi chaqirilgan qobiq boshqa boshlang'ich fayllardan buyruqlarni o'qishga va bajarishga urinmaydi , chunki --rcfile parametrida hech qanday ta'siri yo'q. Sh nomi bilan chaqirilmagan interaktiv bo'lmagan qobiq boshqa boshlang'ich fayllarni o'qishga urinmaydi. Sh kabi chaqirilganda bosh boshlash fayllari o'qilgandan so'ng pashits rejimiga kiradi.

Bash posix rejimida ishga tushganda , --posix buyruq qatori variantida bo'lgani kabi, fayllarni ishga tushirish uchun POSIX standartidan foydalanadi. Ushbu rejimda interaktiv chig'anoqlar ENV o'zgaruvchini kengaytiradi va buyruqlar kengaytirilgan qiymatdan iborat fayldan o'qiladi va bajariladi. Boshqa boshlang'ich fayllari o'qilmaydi.

Bash , odatda rshd-da , uzoq qobiqli xizmat tomonidan ishlatilayotganligini aniqlashga urinishlar. Bash , u rshd tomonidan ishlayotganligini aniqlasa , u fayl o'qiydi va o'qilishi mumkin bo'lsa, ~ / .bashrc dan o'qiladi va buyruqlarni bajaradi. Buni sh deb chaqirsa, buni qilmaydi. --norc variantini bu xatti-harakatni inhibe qilish uchun foydalanish mumkin va --rcfile variantini boshqa fayllarni o'qilishini majbur qilish uchun foydalanish mumkin, lekin rshd odatda ushbu variantlar bilan qobiqni chaqirmaydi yoki ularni ko'rsatishga ruxsat beradi.

Agar qobiq haqiqiy foydalanuvchi (guruh) idiga teng bo'lmagan faol foydalanuvchi (guruh) identifikatori bilan ishga tushirilsa va -p parametri berilmasa, boshlang'ich fayllari o'qilmaydi, qobiq vazifalari atrofdan meros qilinmaydi, SHELLOPTS muhitda paydo bo'lsa, o'zgarmaydigan, e'tiborga olinmaydi va samarali foydalanuvchi identifikatori haqiqiy foydalanuvchi identifikatoriga o'rnatiladi. -p variantini chaqirilganda taqdim etilsa, boshlang'ich xatti-harakati bir xil, lekin samarali foydalanuvchi identifikatori qayta tiklanmaydi.

TANIBLAR

Ushbu hujjatning qolgan qismida quyidagi ta'riflar qo'llaniladi.

bo'sh

Bo'sh yoki yorliq.

so'z

Bir qator belgilar qobiq tomonidan bir birlik deb hisoblanadi. Shuningdek, token sifatida ham tanilgan.

nomi

Faqat alfasayısal belgilar va pastki chiziqlardan iborat va alfavitik belgi yoki pastki chiziqdan iborat so'zdan iborat. Shuningdek, identifikator deb ataladi.

metakarakter

So'zsiz bo'lsa so'zlarni ajratib turadigan belgi. Quyidagilardan biri:

| &; ()

nazorat operatori

Tekshirish funktsiyasini amalga oshiruvchi belgi . Bu quyidagi ramzlardan biridir:

| | & &&; ;; () |

SAVOLLAR

Qo'riqlanadigan so'zlar qobiq uchun alohida ma'noga ega bo'lgan so'zlardir. Quyidagi so'zlar, oddiy buyruqning birinchi so'zi (quyida SHELL GRAMMAR-ga qarang) yoki ishning uchinchi so'zi yoki buyruq uchun zaxiralangan holda tanlangan:

! agar elif else esac fi funktsiyasi bajarilsa {} vaqt {} vaqtgacha []]

SHELL GRAMMAR

Oddiy buyruqlar

Oddiy buyruqlar - ixtiyoriy o'zgaruvchan topshiriqlarning ketma-ketligi, so'ng bo'sh qoldirilgan so'zlar va qayta yo'naltirishlar va nazorat operatori tomonidan tugatilgan. Birinchi so'z ijro qilinadigan buyruqni belgilaydi va argument nol sifatida qabul qilinadi. Qolgan so'zlar chaqirilgan komandaga argument sifatida beriladi.

Oddiy buyruqning qaytish qiymati uning chiqish holatidir yoki agar buyruq signal n bilan bekor qilingan bo'lsa 128+ n .

Quvurlar

Bir quvur liniyasi , belgi bilan ajratilgan bir yoki bir necha buyruqlar ketma-ketligi . Bir quvur liniyasi quyidagicha:

[ time [ -p ]] [! ] buyrug'i [ | buyruq2 ...]

Buyruqning standart chiqishi quvur orqali buyruqlar kombinatsiyasi2 ga ulanadi . Ushbu ulanish buyruqlar bilan ko'rsatiladigan har qanday qayta yo'naltirishlardan oldin amalga oshiriladi (quyida REDIRECTION-ga qarang).

Agar ajratilgan so'z ! bir quvur liniyasi oldidan, bu quvur liniyasining chiqish holati oxirgi buyruqning chiqish holatining mantiqiy emas. Aks holda, quvur tarmog'ining holati oxirgi buyruqning chiqish holatidir. Qobiq quvuridagi barcha buyruqlar uchun qiymatni qaytarmasdan turib bekor qilishni kutadi.

Agar vaqt ajratilgan so'zlar quvur liniyasiga o'tadigan bo'lsa, o'tgan vaqt o'tishi bilan foydalanuvchi va tizimning bajarilishi bilan iste'mol qilinadigan tizim vaqt o'tishi bilan tugaydi. -p varianti chiqish formatini POSIX tomonidan belgilanadigan tarzda o'zgartiradi. TIMEFORMAT o'zgaruvchisi vaqt ma'lumotlarining qanday aks ettirilishi kerakligini belgilaydigan formatdagi mag'lubiyatga o'rnatilishi mumkin; Shell o'zgaruvchilar ostida TIMEFORMAT tavsifiga qarang.

Har bir quvur liniyasidagi har bir buyruq alohida ishlov sifatida bajariladi (ya'ni, quyi qismda).

Ro'yxat

Ro'yxat operatorlardan biri tomonidan ajratilgan bir yoki bir nechta quvur liniyalarining ketma-ketligi ; , & , && yoki || ni tanlang va ixtiyoriy ravishda ; , & , yoki .

Ushbu ro'yxat operatorlari, && va || ustunlikka egadirlar ; va teng huquqqa egadir.

Buyruqlarni ajratish uchun nuqta-vergul o'rniga ro'yxatda bir yoki bir nechta yangi qatorlar ketma-ketligi ko'rinishi mumkin.

Agar buyruq boshqaruvchi operator tomonidan tugatilsa va qobiq pastki platada fonda buyruqni bajaradi. Qo'mondon buyrug'i bajarilishini kutmaydi va qaytish holati 0 ga teng . navbat bilan bajariladi; qobiq har bir buyruqning o'z navbatida bekor bo'lishini kutadi. Qaytish holati - bajarilgan so'nggi buyruqning chiqish holati.

Tekshirish operatorlari && va || navbati bilan ro'yxatlarini va OR ro'yxatlarini bildiradi. AND va ro'yxatda forma bor

command1 && buyrug'i2

buyruqlar2 bajarilsa va faqat buyruq1 noldan chiqish holatini qaytaradi.

OR ro'yxatida forma bor

buyruq1 || buyruqlar2

buyruq2 bajarilsa va faqat buyruq1 nol bo'lmagan chiqish holatini qaytarib bersa. AND va OR ro'yxatlarini qaytish holati ro'yxatda bajarilgan oxirgi buyruqning chiqish holati.

Murakkab buyruqlar

Murakkab buyruqlar quyidagilardan biri hisoblanadi:

( ro'yxat )

ro'yxati quyi qismda amalga oshiriladi. Buyruqlar bajarilgandan so'ng, qobiq atrofini ta'sir qiluvchi o'zgaruvchan vazifalar va joylashtirilgan buyruqlar kuchga kirmaydi. Qaytish holati - ro'yxatning chiqish holati.

{ ro'yxat ; }

ro'yxat oddiygina joriy qobiq muhitida amalga oshiriladi. ro'yxat yangi yoki nuqta-vergul bilan tugatilishi kerak. Bu guruh komandasi sifatida tanilgan. Qaytish holati - ro'yxatning chiqish holati. Eslatib o'tamiz, metakarakteriyalardan ( va ) farqli o'laroq, { va } so'zlar zaxiralangan va ajratilgan so'zlar tan olinishi mumkin bo'lgan joyda yuzaga kelishi kerak. So'zlar uzilishiga olib kelmagani uchun ular ro'yxatidan bo'sh joy bilan ajratilishi kerak.

(( ifoda ))

Bu iboralar quyida keltirilgan qoidalarga muvofiq baholanadi: ARITHMETIC DEFINITION . Ifoda qiymati nol bo'lmagan bo'lsa, qaytish holati 0 ga teng; aks holda qaytish holati 1 bo'ladi. Bu " ifoda " ga ruxsat berishga tengdir.

[[ ifodasi ]]

Shartli ifoda ifodasini baholashga qarab 0 yoki 1 holatini qaytaring. Ifodalar quyida keltirilgan primerlardan iborat . So'zlarni ajratish va yo'lning kengayishi [[ va ]] orasidagi so'zlarda bajarilmaydi; tilde kengayishi, parametr va o'zgaruvchan kengayish, arifmetik kengayish, komandani almashtirish, jarayonni almashtirish va takliflarni olib tashlash amalga oshiriladi.

== va ! = Operatorlari foydalanilganda, operatorning o'ng tomonidagi satr naqsh deb hisoblanadi va Pattern Matching ostida quyida keltirilgan qoidalarga muvofiq mos keladi. Qaytish qiymati 0 bo'lsa, mag'lubiyatga mos keladigan yoki naqshga to'g'ri kelmaydi, aks holda 1. Naqshning biron bir qismi uni mag'lubiyatga o'xshash deb majburlash uchun keltirilishi mumkin.

So'zlar quyidagi operatorlar yordamida birlashtirilishi mumkin, bu navbatdagi tartibda kamayib boradi:

( ifoda )

Ifoda qiymatini qaytaradi. Bu operatorlarning oddiy ustunligini bekor qilish uchun ishlatilishi mumkin.

! ifoda qilish

Ifoda ifodasi noto'g'ri.

expression1 && ifodasi2

Ikkala expression1 va expression2 ham to'g'ri bo'lsa.

expression1 | | expression2 yoki expression1 yoki expression2 to'g'ri bo'lsa.

Va && va || ifodalar1 qiymati barcha shartli ifodani qaytarish qiymatini aniqlash uchun etarli bo'lsa, operatorlar expression2 qiymatini baholamaydi.

nom uchun [ so'z bilan ]; ro'yxatga olish ro'yxati ; bajarildi

Quyidagi so'zlar ro'yxati kengaytirilib, ob'ektlar ro'yxatini yaratadi. O'zgaruvchining nomi ushbu ro'yxatning har bir elementiga navbat bilan o'rnatiladi va ro'yxat har safar amalga oshiriladi. So'zda yozilmagan bo'lsa, buyruq uchun belgilangan har bir pozitsiya parametri uchun ro'yxatni bir marta ijro etadi (pastroqda qarang PARAMETERS ). Qaytish holati - ijro etiladigan so'nggi buyruqning chiqish holati. Agar bo'sh ro'yxatga kiritilgan narsalarni kengaytiradigan bo'lsak, hech qanday buyruqlar bajarilmaydi va qaytish holati 0 ga teng.

uchun (( expr1 ; expr2 ; expr3 )); ro'yxatga olish ro'yxati ; bajarildi

Birinchidan, arifmetik ifodasi expr1 quyidagi parametrlarga muvofiq baholanadi: ARITHMETIC evalitsion . Arifmetik ifodasi expr2 keyinchalik nolga baholanmaguncha qayta-qayta baholanadi. Har doim expr2 nol bo'lmagan qiymatga baholanadi, ro'yxat bajariladi va arifmetik ifoda expr3 baholanadi. Agar biron bir ifodani chiqarib yuborsa, u xuddi 1 ga baholagandek harakat qiladi. Qaytish qiymati - bajarilgan ro'yxatdagi oxirgi buyruqning chiqish holati yoki ifodalardan biri yaroqsiz bo'lsa, noto'g'ri.

ismni [ so'z bilan ] tanlang ; ro'yxatga olish ro'yxati ; bajarildi

Quyidagi so'zlar ro'yxati kengaytirilib, ob'ektlar ro'yxatini yaratadi. Kengaytirilgan so'zlar majmui standart xatolikda, har bir raqam oldidan yoziladi. So'zda yozilmagan bo'lsa, joylashuv parametrlari bosib chiqariladi (quyida PARAMETRE bo'limiga qarang). Keyin PS3 ko'rsatgichi ko'rsatiladi va standart kiritilgan satr o'qiladi. Agar chiziq ko'rsatilgan so'zlardan biriga mos keladigan raqamdan iborat bo'lsa, ismning qiymati o'sha so'zga o'rnatiladi. Agar chiziq bo'sh bo'lsa, so'zlar va takliflar yana ko'rsatiladi. EOF o'qilsa, buyruq tugaydi. O'qilgan boshqa har qanday qiymat nomning bo'shligini belgilaydi. O'qilgan satr REPLY o'zgaruvchiga saqlanadi. Ro'yxat , tanaffus buyrug'i bajarilguniga qadar, har bir tanlovdan so'ng amalga oshiriladi. Tanlovning chiqish holati ro'yxatda bajarilgan oxirgi buyruqning chiqish holati yoki hech qanday buyruqlar bajarilmaganda nol bo'ladi.

[[(] naqsh [ | naqsh ]

Dastlabki buyruq buyruqni kengaytiradi va uni har bir naqshni o'z navbatida, yo'lning nomi kengaytishi bilan bir xil moslashuv qoidalarini qo'llash bilan (masalan, Pathname kengayishi ) ko'ring. Agar o'yin topilsa, tegishli ro'yxat ijro etiladi. Birinchi o'yindan so'ng, kelgusi uchrashuvlar amalga oshirilmadi. Agar naqshli natija bo'lmasa, chiqish holati nol bo'ladi. Aks holda, ro'yxatda ko'rsatilgan oxirgi buyruqning chiqish holati.

agar ro'yxat bo'lsa ; keyin ro'yxat; [ elif ro'yxati ; keyin ro'yxat ; ] ... [ boshqa ro'yxat ; ] fi

Agar ro'yxat ijro etilsa . Uning chiqish holati nol bo'lsa, u holda ro'yxat tuziladi. Aks holda, har bir elif ro'yxati o'z navbatida amalga oshiriladi va agar uning chiqish holati nol bo'lsa, tegishli ro'yxat keyin bajariladi va buyruq tugaydi. Aks holda, boshqa ro'yxat mavjud bo'lsa, bajariladi. Chiqish holati - bajarilgan oxirgi buyruqning chiqish holati yoki hech qanday holatda test qilinmagan bo'lsa, nol.

ro'yxatda ; ro'yxatga olish ro'yxati ; bajarildi

ro'yxatga qadar ; ro'yxatga olish ro'yxati ; bajarildi

Vaqt buyrug'i ro'yxatdagi oxirgi buyruqlar noldan chiqish holatini qaytarib beradigan bo'lsa, doimiy ro'yxatni bajaradi. Buyruq buyrug'i bilan bir xil bo'lgunga qadar , testdan voz kechishdan tashqari; Ro'yxatdagi so'nggi buyruqlar nol bo'lmagan chiqish holatini qaytargan ekan, bajariladigan ro'yxat bajariladi. Vaqtning chiqish holatini va buyruqlarni bajarish bajarilgan oxirgi bajarilgan buyruqlar komandasining chiqish holati yoki hech bajarilmagan bo'lsa, nol bo'ladi.

[ Function ] name () { ro'yxat ; }

Bu ism nomidagi funksiyani belgilaydi. Funktsiyaning tanasi {va} o'rtasida buyruqlar ro'yxati . Ushbu ro'yxat oddiy buyruqlar nomi sifatida ko'rsatilgan har doim amalga oshiriladi. Funktsiyaning chiqish holati tanadagi bajarilgan so'nggi buyruqning chiqish holatidir. (Quyidagi funktsiyalarga qarang.)

IZOHLAR

Interaktiv bo'lmagan qobiq yoki interaktiv qobiqda interaktiv_kompaniyalarning do'konga joylashtirilgan opsiyasi yoqilgan bo'lsa (quyidagi SHELL BUILTIN-ning buyruqlar-ga qarang), # bilan boshlangan so'z bu satrda qolgan barcha belgilarni e'tiborsiz qoldiradi. Interaktiv qobiq interaktiv_kompaniyani tanlab olmasdan tanlovga ruxsat bermaydi. Interaktiv_kompyuterlar interfeysi interaktiv kabuklarda sukut bo'yicha ochiq.

QUOTING

Qisqartma ma'lum belgilar yoki so'zlarning alohida ma'nosini qobiqga olib tashlash uchun ishlatiladi. Quoting maxsus belgilar uchun maxsus muolajalarni o'chirish, zahiralangan so'zlarni shu kabi tan olishni oldini olish va parametrlarni kengaytirishni oldini olish uchun ishlatilishi mumkin.

Yuqorida sanab o'tilgan metafaraktlarning har birining aniqlanishi qobiq uchun maxsus ma'noga ega va uni ifodalash uchun keltirilgan bo'lishi kerak.

Buyruqlar tarixini kengaytiradigan vositalar ishlatilganda, odatda tarixni kengaytirish belgisi ishlatiladi ! , tarixning kengayishini oldini olish uchun kote qilingan bo'lishi kerak.

Uchta kotirovka mexanizmlari mavjud: qochish belgisi , bitta tirnoq va juft tirnoq.

Yo'qotilgan teskari egri chiziq ( \ ) qochish belgisidir . tashqari, keyingi belgilarning tom ma'nodagi qiymatini saqlaydi. Agar \ jufti paydo bo`lsa va teskari egilish chizig'i o'zi ko'rsatilmagan bo'lsa, \ satr davomi sifatida ko'rib chiqiladi (ya'ni kirish oqimidan olib tashlanadi va samarali ravishda e'tiborsiz qoldiriladi).

Belgilarni yagona tirnoqlarga joylashtirish tirnoq ichidagi har bir belgining literal qiymatini saqlaydi. Bitta tirnoq oralig'ida, hatto teskari egri chiziqlardan oldin ham birgina taklif bo'lmaydi.

Ikkala tirnoqli belgilarni qo'shib qo'yish $ , ` , va \ istisnolardan tashqari barcha belgilarning haqiqiy qiymatini tirnoq ichida saqlaydi. Ikkala tirnoq ichida $ va ' belgilar o'zlarining maxsus ma'nosini saqlaydilar. Bo'shashma faqatgina quyidagi belgilardan biri bilan ta'riflanadi: $ , ` , \ , yoki . Ikki marta tirnoq ichida ikkita tirnoq ichida teskari egri chiziq bilan keltirilgan bo'lishi mumkin.

Ikkita tirnoqlarda (va pastdagi PARAMETRE bo'limiga qarang) maxsus va * maxsus parametrlarga ega bo'ladi.

$ ' String ' formasining so'zlari maxsus hisoblanadi. So'z, strayka-qochib ketilgan belgilarni ANSI C standarti bilan almashtirilgan holda o'zgartiradi. Chiqib ketish qochish suhbatlari, agar mavjud bo'lsa, quyidagicha ajralib chiqadi:

\ A

ogohlantirish (qo'ng'iroq)

\ b

orqaga

\ e

qochish belgisi

\ f

ariza shakli

\ n

yangi yo'nalish

\ r

arava qaytarish

\ t

gorizontal yorliq

\ V.

vertikal yorliq

\\

teskari o'girish

\ '

bitta taklif

\ nn

qiymat nnn (bir-uch pog'ona) sakkiz-bit belgisi,

\ x HH

sakkiz-bit belgisi, qiymati o'n olti karra qiymatdan iborat (bir yoki ikki hexli raqam)

\ c x

nazorat x belgisi

Kengaygan natija bitta belgidan iborat bo'lib, dollar belgisi mavjud bo'lmaganday.

Bir dollar belgisi ( $ ) oldidan ikkita tirnoqli satr mag'lubiyatning joriy mahalliy tilga ko'ra tarjima qilinishiga sabab bo'ladi. Joriy mahalliy C yoki POSIX bo'lsa, dollar belgisi e'tiborsiz qilinadi. Agar mag'lubiyat tarjima qilingan va o'zgartirilgan bo'lsa, o'zgartirish ikkilamchi hisoblanadi.

PARAMETRE

Parametr qiymatlarni saqlaydigan obyektdir. Bu maxsus parametrlar bo'yicha quyida keltirilgan maxsus belgilarning nomi , raqami yoki biri bo'lishi mumkin. Qobiq maqsadlari uchun, o'zgaruvchining ismi bilan ko'rsatilgan parametr. O'zgaruvchining qiymati va nol yoki undan ortiq atributlari mavjud . Atributlar dekompilyatsiya qilingan buyruqlar yordamida belgilanadi (quyida SHELL BUILTIN COMMANDS da e'lon qiling ).

Agar parametr tayinlangan bo'lsa, parametr belgilanadi. Null magistral haqiqiy qiymat hisoblanadi. O'zgaruvchilar o'rnatilgach, faqat unset builtin buyrug'ini ishlatish bilan belgilanishi mumkin (quyidagi SHELL BUILTIN USTALARI bo'limiga qarang).

O'zgaruvchining shaklning ifodasi bilan tayinlanishi mumkin

name = [ value ]

Agar qiymat berilmasa, o'zgaruvchiga bo'sh satr beriladi. Barcha qiymatlar tilde kengayishi, parametr va o'zgaruvchan kengayish, komandani almashtirish, arifmetik kengaytirish va bekor qilinishdan (past EXPANSION ga qarang) o'tadi. Agar o'zgaruvchining tamsayı xususiyati majmui bo'lsa, unda qiymat $ ((...)) kengayishidan foydalanmasa ham arifmetik kengayishlarga bog'liq (qarang Aritmetik kengaytirish ). Maxsus parametrlar ostida quyida aytib o'tilganidek, "$ @" so'zidan tashqari so'zlarni ajratish amalga oshirilmaydi. Pathname kengaytirilmaydi. Assignment bayonnomalari deklaratsiya , toifa , eksport , o'qish va mahalliy tuzilgan buyruqlar uchun argument sifatida ham ko'rinishi mumkin.

Joylashgan parametrlar

Joylashtiruvchi parametr bitta raqamdan tashqari bir yoki bir nechta raqam bilan ko'rsatilgan parametrdir. Joylashtirilgan parametrlar qobiqning argumentlarini chaqirilganda belgilanadi va o'rnatilgan o'rnatilgan buyruq yordamida tayinlanishi mumkin. Joylashtirilgan parametrlar belgilash bayonotlari bilan tayinlanishi mumkin emas. Qobiq vazifasi bajarilganda pozitsion parametrlar vaqtincha o'zgartiriladi (quyidagi FONKSIYONLAR bo'limiga qarang).

Agar bitta raqamdan ko'prog'idan iborat joylashuv parametri kengaytirilsa, uni qoshiqchalarga qo'shilishi kerak (quyidagi EXPANSION ga qarang).

Maxsus parametrlar

Qobiq alohida parametrlarni ko'rib chiqadi. Ushbu parametrlar faqatgina havola bo'lishi mumkin; ularga topshirishga yo'l qo'yilmaydi.

*

Joylashtiruvchi parametrlarga birdan boshlanib, kengaytiriladi. Kengayish er-xotin tirnoq ichida paydo bo'lganda, IFS maxsus o'zgaruvchining birinchi belgisi bilan ajratilgan har bir parametr qiymati bilan bir so'zga kengayadi. Ya'ni, " $ * " $ 1 c $ 2 c ... "ga teng, bu erda c IFS o'zgaruvchining qiymatining birinchi belgisidir. IFS o'rnatilmagan bo'lsa, parametrlar bo'shliqlar bilan ajratiladi. IFS bo'sh bo'lsa, parametrlar parchalanishsiz ajratiladi.

@

Joylashtiruvchi parametrlarga birdan boshlanib, kengaytiriladi. Kengayish er-xotin tirnoq ichida sodir bo'lganda, har bir parametr alohida so'zga kengayadi. Ya'ni, " $ @ " " $ 1 " " $ 2 " ga teng ... " # @ " va $ @ hech qanday pozitsion parametrlar bo'lmaganida (ya'ni o'chiriladi).

#

O'nli kasrdagi joylashuv parametrlari soniga qarab kengayadi.

?

Yaqinda amalga oshirilgan oldingi quvur liniyasi holatini kengaytiradi.

-

Joriy variantni bayroqchalarga, o'rnatilgan ichki buyruq yoki qobiqning o'zi tomonidan o'rnatiladigan (masalan, -i variant) yordamida chaqiriladi.

$

Qobiqning jarayon identifikatoriga kengayadi. A () pastki qavatida u pastki qavatni emas, balki joriy qobiqning jarayon identifikatoriga kengayadi.

!

Eng oxirgi bajarilgan fon (asenkron) buyrug'i jarayon identifikatoriga kengayadi.

0

Shell yoki shell skript nomini kengaytiradi. Bu shell boshlashda o'rnatiladi. Bash buyruqlar fayli bilan chaqirilgan bo'lsa, $ 0 bu faylning nomiga o'rnatiladi. Agar bash -c opsiyasi bilan boshlangan bo'lsa, unda mavjud bo'lsa, $ 0 qiymati birinchi argumentga o'rnatiladi. Aks holda, argument nol deb ko'rsatilgan bashni chaqirish uchun ishlatiladigan fayl nomiga o'rnatiladi.

_

Shellni ishga tushirishda, qobiq yoki qobiq skriptining mutlaq fayl nomiga argumentlar ro'yxatida topshirilgandek bajariladi. Keyinchalik, kengaytgandan keyin, avvalgi buyruqqa so'nggi dalilni kengaytiradi. Bundan tashqari, ijro etilgan har bir komandaning to'liq fayl nomiga o'rnatiladi va u komandaga eksport qilinadigan muhitga joylashtiriladi. Pochtani tekshirishda ushbu parametr mavjud bo'lgan pochta faylining nomini saqlaydi.

Shell o'zgaruvchilari

Quyidagi o'zgaruvchilar qobiq tomonidan o'rnatiladi:

BASH

Bu bosh misolini chaqirish uchun ishlatiladigan to'liq fayl nomini kengaytiradi.

BASH_VERSINFO

Foydalanuvchilarning ushbu misol uchun versiya ma'lumotiga ega bo'lgan o'qilgan ketma-ket o'zgaruvchilar. Jildlar a'zolariga tayinlangan qiymatlar quyidagicha:

BASH_VERSINFO [ 0]

Asosiy versiya raqami ( versiya ).

BASH_VERSINFO [ 1]

Kichik versiya raqami ( versiya ).

BASH_VERSINFO [ 2]

Yaman darajasi.

BASH_VERSINFO [ 3]

Qurilish versiyasi.

BASH_VERSINFO [ 4]

Chiqarish holati (masalan, beta1 ).

BASH_VERSINFO [ 5]

MACHTYPE qiymati.

BASH_VERSION

Bashning ushbu versiyasining versiyasini ta'riflaydigan mag'lubiyatga kengaytiriladi.

COMP_CWORD

COMP_LINE

Joriy buyruq satri. Ushbu o'zgaruvchining faqatgina qobiq vazifalari va programlanadigan yakunlovchi qurilmalar tomonidan chaqirilgan tashqi buyruqlar mavjud (quyidagilarni qarang).

COMP_POINT

COMP_WORDS

Joriy buyruq qatoridagi alohida so'zlardan iborat qator o'zgaruvchisi (quyida Arraysga qarang). Ushbu o'zgarmaydigan faqatgina dasturlashtirilgan yakunlovchi qurilmalar tomonidan chaqirilgan qobiq funksiyalarida mavjud (quyidagi dasturiy ta'minotni yakunlash bo'limiga qarang).

DIRSTACK

Kataloglar to'plamining mavjud tarkiblarini o'z ichiga olgan qator o'zgaruvchilar (quyida joylashgan Arraylar ). Dizaynlar datch ichida joylashgan tartibda ko'rsatiladi. Ushbu qator o'zgaruvchiga a'zolarni tayinlash allaqachon to'plamda joylashgan kataloglarni o'zgartirish uchun ishlatilishi mumkin, ammo pushd va popd o'rnatilganlar kataloglarni qo'shish va o'chirish uchun ishlatilishi kerak. Ushbu o'zgaruvchiga tayinlash joriy katalogni o'zgartirmaydi. DIRSTACK o'rnatilmagan bo'lsa, u keyinchalik qayta tiklansa ham, uning maxsus xususiyatlarini yo'qotadi.

EUID

Joriy foydalanuvchining samarali foydalanuvchi identifikatori uchun kengaytiriladi, qobiqni ishga tushirishda boshlanadi. Ushbu o'zgaruvchining o'zi o'qiydi.

FUNCNAME

Hozirda bajariladigan qobiq funksiyasining nomi. Bu o'zgarmaydigan faqat qobiq vazifasi bajarilganda mavjud. FUNCNAME-ga tayinlash hech qanday ta'sir ko'rsatmaydi va xato holatini qaytaradi. Agar FUNCNAME sozlanmagan bo'lsa, u keyinchalik qayta tiklansa ham, uning maxsus xususiyatlarini yo'qotadi.

Guruhlar

Joriy foydalanuvchi a'zo bo'lgan guruhlarning ro'yxatini o'z ichiga olgan qator o'zgaruvchiga. GROUPS guruhiga tayinlash hech qanday ta'sir ko'rsatmaydi va xato holatini qaytaradi. GROUPS o'rnatilmagan bo'lsa, u keyinchalik qayta tiklansa ham, uning maxsus xususiyatlarini yo'qotadi.

HISTCMD

Amaldagi buyruqlar tarixi ro'yxatidagi yoki indeksdagi katalog. HISTCMD belgilanmagan bo'lsa, u keyinchalik qayta tiklansa ham, uning maxsus xususiyatlarini yo'qotadi.

HOSTNAME

Joriy hostning nomini avtomatik ravishda belgilash.

HOSTTYPE

Avtomatik ravishda bash ishlayotgan mashinaning turini mutlaqo ifodalaydigan mag'lubiyatga o'rnatiladi. Standart tizimga bog'liq.

LINENO

Ushbu parametrga har safar murojaat qilinganda, qobiq joriy ketma-ket chiziq raqamini ifodalovchi kasrli raqamni (1dan boshlab) bir buyruq fayli yoki funktsiya ichida o'zgartiradi. Skript yoki funktsiyada bo'lmaganida, qiymati almashtirilgan qiymat ma'noga ega emasligi kafolatlanmaydi. Agar LINENO sozlanmagan bo'lsa, u keyinchalik qayta tiklansa ham, uning maxsus xususiyatlarini yo'qotadi.

MACHTYPE

Standart GNU cpu-kompaniya-tizim formatida bashning bajarilayotgan tizim turini to'liq tavsiflaydigan mag'lubiyatga avtomatik ravishda o'rnatiladi. Standart tizimga bog'liq.

OLDPWD

Cd buyrug'i bilan belgilangan oldingi ishchi katalog.

OPTARG

Getopts builtin buyrug'i bilan ishlov berilgan oxirgi parametrli mustaqil o'zgaruvchining qiymati (quyidagi SHELL BUILTIN TOMONIDAN qarang).

OPTIND

Keyingi argumentni indekslarini buildin buyrug'i bilan ishlov berish uchun indeks (quyidagi SHELL BUILTIN buyruqlar bo'limiga qarang).

OSTYPE

Bash ishlayotgan operatsion tizimni ta'riflaydigan mag'lubiyatga avtomatik ravishda o'rnatiladi. Standart tizimga bog'liq.

PIPESTATUS

Eng so'nggi yaqinda bajarilgan old fon (faqat bitta buyruqni o'z ichiga oladigan) jarayonida chiqish holati qiymatlari ro'yxatini o'z ichiga olgan bir qator o'zgaruvchiga (quyida Arrays ) qarang.

PPID

Shellning ota-onasining jarayon identifikatori. Ushbu o'zgaruvchining o'zi o'qiydi.

PWD

Cd buyrug'i bilan o'rnatilgan joriy ishchi katalog.

RANDOM

Ushbu parametrga har safar murojaat qilinganda 0 dan 32767 gacha bo'lgan tasodifiy tamsayı hosil qilamiz. Tasodifiy sonlar ketma-ketligi RANDOMga qiymat berish orqali boshlanishi mumkin. RANDOM belgilanmagan bo'lsa, u keyinchalik qayta tiklansa ham, uning maxsus xususiyatlarini yo'qotadi.

REPLY

Hech qanday dalillar keltirilmagan bo'lsa, o'qilgan buyruqlar buyrug'i bilan o'qiladigan matnning satriga o'rnating.

SECONDS

Ushbu parametrga har safar murojaat qilinganda, qobiq chaqiruvi qaytarilgandan keyingi soniyalar soni. Agar qiymat SECONDSga tayinlangan bo'lsa, keyingi arizalar bo'yicha qaytarilgan qiymat tayinlashdan va tayinlangan qiymatdan keyingi soniya sonidir. SECONDS belgilanmagan bo'lsa, u keyinchalik qayta tiklansa ham, uning maxsus xususiyatlarini yo'qotadi.

SHELLOPS

Yoqilgan qobiqli variantlarning yo'g'on ichak-ajratilgan ro'yxati. Ro'yxatdagi har bir so'z, -o parametrini o'rnatilgan o'rnatilgan buyruqlar uchun to'g'ri argument deb hisoblaydi (quyidagi SHELL BUILTIN TOMONIDAN qarang). SHELLOPTSda ko'ringan variantlar - set -o tomonidan bildirilgan. Bash ishga tushganda, bu o'zgaruvchining muhitda bo'lsa, ro'yxatdagi har bir qobiq variantini har qanday boshlang'ich fayllarni o'qishdan oldin yoqib qo'yiladi. Ushbu o'zgaruvchining faqat o'qiladi.

SHLVL

Bashning bir misoli har safar ortib boradi .

UID

Joriy foydalanuvchining foydalanuvchi identifikatorini kengaytiradi, qobiqni ishga tushirishda ishga tushiriladi. Ushbu o'zgaruvchining o'zi o'qiydi.

Quyidagi o'zgaruvchilar qobiq tomonidan ishlatiladi. Ba'zi hollarda, bosh o'zgaruvchiga standart qiymatni belgilaydi; ushbu holatlar quyida keltirilgan.

BASH_ENV

Bash bir shell skriptini bajarayotganda, bu parametr o'rnatilgan bo'lsa, uning qiymati ~ / .bashrc kabi qobiqni ishga tushirish uchun buyruqlar o'z ichiga olgan fayl nomi sifatida talqin etiladi. BASH_ENV ning qiymati parametrlarni kengaytirishga, komandani almashtirishga va arifmetik kengayishlarga fayl nomi sifatida talqin qilinishdan oldin ta'sir ko'rsatadi. PATH natija bergan fayl nomini izlash uchun ishlatilmaydi.

CDPATH

CD- buyrug'i uchun qidirish yo'li. Bu qobiq cd buyrug'i bilan belgilangan maqsadli kataloglarni izlaydigan kataloglarning yo'laklar bilan ajratilgan ro'yxatidir. Misol qiymat ".: ~: / Usr" dir.

COLUMNS

Tanlov ro'yxatlarini chop etishda terminal kengligini aniqlash uchun tanlangan buyruqlar komandasi tomonidan ishlatiladi. SIGWINCHni qabul qilganda avtomatik ravishda o'rnatiladi.

COMPREPLY

Bash programlanabilir yakunlash vositasi tomonidan chaqirilgan qobiq funksiyasi tomonidan yuzaga kelishi mumkin bo'lgan tugallanishlarni o'qiyotgan bir qator o'zgaruvchiga (quyidagi dasturiy ta'minotni yakunlash bo'limiga qarang).

FCEDIT

Fc builtin buyrug'i uchun standart tahrirlovchisi.

FIGNORE

Fayl nomini bajarish jarayonida e'tiborga olinmaydigan ikkita qo'shimcha qo'shilgan qo'shimchalar ro'yxati (quyida READLINE-ga qarang). FIJORORE dagi yozuvlardan biri bilan suxbatlangan fayl nomi mos keladigan fayllar ro'yxatidan chiqarib olingan. Misol qiymat ".o: ~" dir.

GLOBIGNORE

Pathname kengaytmasi bilan e'tiborga olinmaydigan fayl nomlarini aniqlovchi nuqta-nuqta belgilari. Agar yo'l nomini kengaytirish naqshlari bilan mos keladigan fayl, shuningdek, GLOBIGNORE- dagi naqshlardan biriga mos keladigan bo'lsa, u o'yinlarning ro'yxatidan o'chiriladi.

HISTCONTROL

Ifodasiz maydonning qiymatiga o'rnatilgan bo'lsa, bo'sh joy belgisi bilan boshlangan chiziqlar tarix ro'yxatiga kiritilmaydi. Agar ignoredups qiymatiga o'rnatilsa, oxirgi o'tgan qatorga mos satrlar kiritilmaydi. Jahongirning qiymati ikkita variantni birlashtiradi. Agar belgilansa yoki yuqorida ko'rsatilgan qiymatdan boshqa qiymatga o'rnatilsa, ayrıştırıcı tomonidan o'qilgan barcha satrlar HISTIGNORE qiymatiga qarab tarix ro'yxatida saqlanadi. Ushbu o'zgaruvchining funksiyasi HISTIGNORE tomonidan superseded . Ko'p chiziqli birikma komandasining ikkinchi va keyingi satrlari sinovdan o'tmaydi va HISTCONTROL qiymatidan qat'i nazar, tarixga qo'shiladi.

HISTFILE

Buyruq tarixi saqlanadigan fayl nomi (quyida TARIXga qarang). Asl qiymati: ~ / .bash_history . Belgilansa, interaktiv qobiq chiqqandan keyin buyruqlar tarixi saqlanmaydi.

HISTFILESIZE

Tarix fayliga kiritilgan maksimal chiziqlar soni. Ushbu o'zgaruvchiga qiymat tayinlanganida, agar kerak bo'lsa, tarixning fayli ushbu qatordan ko'p bo'lmagan miqdorda qisqartiriladi. Asl qiymati - 500. Tarix fayli interaktiv qobiq chiqqandan so'ng uni yozgandan so'ng, bu o'lchamga qisqartiriladi.

HISTIGNORE

O'tgan ro'yxatda qaysi buyruq qatorlarini saqlab qolish kerakligini belgilash uchun foydalaniladigan naqshlar nuqsonli ro'yxat. Har bir naqsh chiziqning boshida ankrajlangan va to'liq qatorga mos kelishi kerak (hech qanday yopiq " * " qo'shilmaydi). HISTCONTROL tomonidan belgilangan tekshiruvlar qo'llanilgandan so'ng, har bir naqsh chiziq bo'yicha sinovdan o'tkaziladi. Oddiy qobiq naqshiga mos keladigan belgilarga qo'shimcha ravishda ` & 'avvalgi tarix qatoriga mos keladi. ` & 'Backslash yordamida qochib ketishi mumkin; bir-biriga urinishdan oldin terskeys olib tashlanadi. Ko'p chiziqli buyruqlar komandasining ikkinchi va keyingi satrlari sinovdan o'tmaydi va HISTIGNORE qiymatidan qat'i nazar, tarixga qo'shiladi.

Tanishing

Buyruq tarixida eslab qolinadigan buyruqlar soni (quydagi TARIXga qarang). Asl qiymati: 500.

HOME

Joriy foydalanuvchining uy katalogi; cd builtin buyrug'i uchun standart argument. Ushbu o'zgaruvchining qiymati shuningdek tilde kengayishida ham qo'llaniladi.

HOSTFILE

Faylni nomini to'ldirish uchun kerak bo'lgan / etc / hosts formatidagi fayl nomini o'z ichiga oladi. Mumkin bo'lgan hostname tugallanishlari ro'yxati qobiq ishlayotganda o'zgartirilishi mumkin; qiymatni o'zgartirgandan keyingi keyingi mezbon nomini bajarishga harakat qilinganda, yangi faylning mazmunini mavjud ro'yxatga qo'shadi. HOSTFILE o'rnatilsa, lekin hech qanday qiymatga ega bo'lmasa, bash / etc / hosts ni o'qib chiqishga urinib, mumkin bo'lgan kompyuter nomi tugallanishi ro'yxatini olish uchun. HOSTFILE belgilanmagan bo'lsa, hostname ro'yxati tozalanadi.

IFS

Ichki maydonni ajratuvchi, kengaytgandan keyin so'zni bo'linish uchun ishlatiladi va o'qilgan buyruqlar bilan satrlarni so'zlarga bo'linadi. Standart qiymat: ` ''.

IGNOREEOF

EOF xarakterini yagona kirish sifatida qabul qilishda interaktiv qobiqning harakatini nazorat qiladi. Agar belgilansa, bu qiymat ketma-ketlikdagi EOF belgilarining soni bo'lib, bash chiqishidan oldin kirish chizig'idagi birinchi belgilar sifatida yozilishi kerak. Argumentlar mavjud bo'lsa-da, ularning soni qiymati bo'lmasa yoki qiymati bo'lmasa, standart qiymat 10 ga teng. Agar u mavjud bo'lmasa, EOF qobiqga kirishning oxirini bildiradi.

INPUTRC

Readline boshlang'ich faylining nomi, ~ / .inputrc sukutini bekor qiladi (quyidagi READLINEni ko'ring).

LANG

LC_ bilan boshlangan o'zgaruvchiga maxsus tanlanmagan har qanday toifadagi turkumni aniqlash uchun ishlatiladi.

LC_ALL

Ushbu parametr LANG va boshqa LC_ o'zgaruvchining mahalliy turkumini belgilaydigan qiymatini bekor qiladi.

LC_COLLATE

Ushbu o'zgaruvchining yo'l nomini kengaytirish natijalarini tartiblashda ishlatiladigan xaritalash tartibini aniqlaydi va array ifodalarini, ekvivalentlik sinflarini va pathname kengaytmasi va naqsh ulashidagi ketma-ketliklar ketma-ketligini belgilaydi.

LC_CTYPE

Ushbu o'zgaruvchining belgilar talqinini va yo'lning nomi kengaytmasi va naqshni moslashtirishda belgilar sinflarining xatti-harakatini belgilaydi.

LC_MESSAGES

Bu o'zgarmaydigan $ bilan oldingi ikkita tirnoqli satrlarni tarjima qilish uchun ishlatiladigan tilni belgilaydi.

LC_NUMERIC

Ushbu parametr raqam formatlash uchun ishlatiladigan mahalliy turkumni aniqlaydi.

TARIX

Tanlov ro'yxatini chop qilish uchun ustun uzunligini aniqlash uchun tanlangan buyruqlar buyrug'i yordamida ishlatiladi. SIGWINCHni qabul qilganda avtomatik ravishda o'rnatiladi.

POChTA

Ushbu parametr fayl nomiga o'rnatilsa va MAILPATH o'zgaruvchisi o'rnatilmagan bo'lsa, bash foydalanuvchini pochta faylining belgilangan faylga etkazilishini bildiradi.

MAILCHECK

Pochta uchun tekshirishlarni tez-tez (sekundlarda) tekshiradi. Asl qiymati 60 soniya. Pochtani tekshirish vaqti kelganida, qobiq asosiy xohishini ko'rsatmasdan turib buni amalga oshiradi. Ushbu o'zgaruvchining qiymati belgilanmagan bo'lsa yoki noldan katta yoki teng bo'lmagan qiymatga o'rnatilsa, qobiq pochta tekshiruvini o'chiradi.

MAILPATH

Pochta orqali tekshiriladigan fayl nomlari bilan ajratilgan ro'yxat. Pochta ma'lum bir faylga kelganda bosib chiqariladigan xabar, fayl nomini '?' Bilan ajratib ko'rsatishi mumkin. Xabarning matnida foydalanilganda, $ _ joriy pochta faylining nomiga kengayadi. Misol:

"Pochta mavjud": ~ / shell-pochta? "$ _ Pochta bor!" '

Bash bu o'zgaruvchiga standart qiymatni etkazib beradi, lekin foydalanadigan foydalanuvchi pochta fayllarining joylashuvi tizimga bog'liq (masalan, / var / mail / $ USER ).

OPTERR

Agar qiymat 1 ga o'rnatilgan bo'lsa, bash getopts builtin buyrug'i tomonidan generatsiya qilingan xato xabarlarni ko'rsatadi (quyidagi SHELL BUILTIN TOMONIDAN qarang). OPTERR qobiq chaqirilganda yoki qobiq buyrug'i bajarilganda har safar 1 marta boshlanadi.

PATH

Buyruqlar uchun qidiruv yo'li. Bu qoidaning buyruqlar izlayotgan kataloglari (ma'lumotlar quyida berilgan Buyruqning bajarilishi bo'limiga qarang). Standart yo'l tizimga bog'liq bo'lib, bashni o'rnatuvchi ma'mur tomonidan o'rnatiladi. Umumiy qiymat: `/ usr / gnu / bin: / usr / local / bin: / usr / ucb: / bin: / usr / bin :. ''.

POSIXLY_CORRECT

Bash ishga tushganda, bu o'zgaruvchi muhitda bo'lsa, - posix chaqiruv variantini taqdim etilganidek boshlovchi fayllarni o'qimasdan qobiq posix rejimiga kiradi. Qobiq ishlayotganda o'rnatilgan bo'lsa, bash posix rejimini ishga tushiradi, go'yo buyruq -o posix bajarilganidek.

PROMPT_COMMAND

Agar belgilansa, qiymat har bir asosiy buyruq berishdan avval buyruqlar sifatida olib boriladi.

PS1

Ushbu parametrning qiymati kengaytirildi (quyida PROMPTING bo'limiga qarang) va asosiy xohishi satri sifatida ishlatiladi. Asl qiymati: ` \ s- \ v \ $ ''.

PS2

Ushbu parametr qiymati PS1 bilan kengaytirildi va ikkilamchi buyruq qatori sifatida ishlatildi. Asl qiymati `` `` '' deb belgilandi.

PS3

Ushbu parametrning qiymati tanlangan buyruqlar uchun buyruq sifatida ishlatiladi (qarang SHELL GRAMMAR ).

PS4

Ushbu parametrning qiymati PS1da bo'lgani kabi kengaytiriladi va qiymat har bir buyruq bajarilishidan oldin bajariladi. PS4 ning birinchi xarakterini, agar kerak bo'lsa, bir nechta darajadagi indirectionni ko'rsatish uchun ko'p marta takrorlanadi. Asl qiymati: ` + ''.

TIMEFORMAT

Ushbu parametrning qiymati formatlash magistrali sifatida ishlatiladi, bu vaqtni ajratish so'zlari bilan oldindan belgilangan quvur liniyalari uchun vaqt ma'lumotlarini ko'rsatishi kerak. % Belgisi vaqt qiymatiga yoki boshqa ma'lumotlarga kengaytirilgan qochish majmuasini taqdim etadi. Qochish sekanslari va ularning ma'nolari quyidagicha; ustunlar ixtiyoriy qismlarni bildiradi.

%%

A literal % .

% [ p ] [L] R

O'tgan vaqt sekundlarda.

% [ p ] [l] U

Foydalanuvchi rejimida sarflangan CPU soniyalar soni.

% [ p ] [L] S

Tizim rejimida ishlatiladigan CPU soniyalar soni.

% P

CPU ulushi (% U +% S) /% R deb hisoblanadi.

Majburiy emas p - aniqlikni bildiradigan raqam, kasrli nuqtadan keyin parchalanadigan raqamlar soni. 0 qiymatida kasr nuqtasi yoki fraktsiyani chiqarib bo'lmaydi. O'nli nuqtadan keyin eng ko'p uchta joyni ko'rsatish mumkin; 3 dan katta bo'lgan p qiymatlari 3 ga o'zgartiriladi. Agar p qiymati aniqlanmasa, 3 qiymati ishlatiladi.

Majburiy emas L m MM m SS shaklidagi daqiqalar, shu jumladan, uzoqroq formatni belgilaydi. FF s. R ning qiymati fraksiyon tarkibiga kiradimi yoki yo'qligini aniqlaydi.

Agar bu o'zgaruvchi o'rnatilmagan bo'lsa, bash $ '\ nreal \ t% 3lR \ nuser \ t% 3lU \ nsys% 3lS' qiymatiga ega bo'lgan kabi harakat qiladi . Qiymat bo'sh bo'lsa, vaqt haqida ma'lumot ko'rsatilmaydi. Paydo bo'ladigan yangi satr format tartibi ko'rsatilganda qo'shiladi.

TMOUT

Noldan kattaroq qiymatga o'rnatilgan bo'lsa, TMOUT o'qish uchun mo'ljallangan vaqt tugashi sifatida ko'rib chiqiladi. Tanlov buyrug'i terminali terminaldan kirish kiritilganda TMOUT soniyasidan keyin kelmasa, tugatiladi . Interaktiv qobiqda qiymati birlamchi buyruq berilgandan keyin kirishni kutish uchun soniya soniga tenglashtiriladi. Bash kirib kelmasa, soniya sonini kutganidan keyin tugaydi.

auto_resume

Ushbu o'zgaruvchining qobiqning foydalanuvchi va ishni boshqarish bilan qanday aloqasi borligini nazorat qiladi. Agar bu o'zgaruvchiga o'rnatilgan bo'lsa, qayta yo'naltirishsiz bir so'zli oddiy buyruqlar mavjud to'xtatilgan ishni qayta boshlash uchun nomzod sifatida ko'rib chiqiladi. Hech qanday noaniqlik mavjud emas; Agar siz kiritilgan satr bilan boshlangan bir nechta ish bo'lsa, eng so'nggi ishlatilgan ish tanlanadi. Ushbu kontekstda tugatilgan ishning nomi uni ishga tushirish uchun ishlatiladigan buyruqlar satri. Qiymati aniq belgilangan bo'lsa, berilgan tokcha to'xtatilgan ishning nomiga to'liq mos kelishi kerak; pastki chiziqqa o'rnatilsa, berilgan tok to'xtatilgan ish nomining pastki qismiga mos kelishi kerak. Substring qiymati % ga o'xshash funksionallikni ta'minlaydi . Ish identifikatori (pastroqdagi JAVA CONTROL bo'limiga qarang). Agar boshqa qiymatga o'rnatilsa, berilgan satr to'xtatilgan ishning nomining prefiksi bo'lishi kerak; Bu % identifikatoriga o'xshash funksiyani ta'minlaydi.

Xarkovlar

Tarixni kengaytirish va tokenizatsiyalashni boshqaruvchi ikki yoki uchta belgilar (quyida TUG'ILGAN EXPANSIYa-ga qarang). Birinchi belgi - tarixni kengaytiruvchi belgi, tarixning kengayishi boshlanishini ko'rsatadigan belgi, odatda ! '. Ikkinchisining belgisi, tezkor almashtirish belgisidir, bu oldingi buyruqni qayta ishga tushirish uchun buyruq sifatida ikkinchi qatorni o'rniga qo'yish uchun stenograf sifatida ishlatiladi. Asl qiymati: ^ ^ . Majburiy bo'lmagan uchinchi belgi - so'zning birinchi belgisi, odatda, " # " deb topilgan chiziqning qolgan qismini sharh sifatida ko'rsatadigan belgi. Tarixning sharhlash belgisi, tarixning o'rnini boshqa qator so'zlar uchun o'tkazib yuboradi. Bu, shell parserni chiziqning qolgan qismiga sharh sifatida munosabatda bo'lishiga sabab bo'lmaydi.

Arrays

Bash bir o'lchamli qator o'zgaruvchilarni taqdim etadi. Har qanday o'zgaruvchining qator sifatida ishlatilishi mumkin; qurilgan e'lon bir qator aniqlik kiritadi. Jildning kattaligi bo'yicha maksimal chegara yo'q, yoki a'zolarning bir-biriga indekslangan yoki biriktirilmagan talablari yo'q. Array tamsayılar yordamida indekslanadi va nolga asoslangan.

Har qanday o'zgaruvchining sintaksik nomi [ subscript ] = qiymatidan foydalanishga tayinlangan bo'lsa, qator avtomatik ravishda hosil qilinadi. Pastki alifboda arifmetik ifodalar sifatida ko'rib chiqiladi va u noldan kattaroq yoki teng songa ega bo'lishi kerak. Aniq bir qatorni e'lon qilish uchun declare -A name-ni ishlating (quyidagi SHELL BUILTIN COMMANDS-ga qarang). e'lon qilish - ism [ subscript ] ham qabul qilinadi; pastki belgisi e'tiborsiz qilinadi. Identifikatorlarni declare va readonly builtins yordamida bir qator o'zgaruvchilar uchun belgilash mumkin. Har bir xususiyat bir qator barcha a'zolari uchun amal qiladi.

Arrays form nomi = ( qiymat 1 ... qiymat n ) birikma belgilari yordamida tayinlanadi, bu erda har bir qiymat [ subscript ] = mag'lubiyat shakli. Faqat string kerak. Agar ixtiyoriy parantezlar va pastki indekslar berilgan bo'lsa, ushbu indeks tayinlanadi; aks holda tayinlangan element indekslari - bu atamalar bilan bir qatorda tayinlangan oxirgi indeks. Kataloglashtirish noldan boshlanadi. Ushbu sintaksisi shuningdek, e'lon qilingan qurilma tomonidan qabul qilinadi. Yuqoridagi kiritilgan nom [ subscript ] = qiymati sintaksisini ishlatish uchun alohida qator elementlari tayinlanishi mumkin.

Unset- emblem, massivlarni yo'q qilish uchun ishlatiladi. unset nomi [ subscript ] katalog elementini qator elementini buzadi. unset nomi , undagi nom bir qator yoki unset nomi [ subscript ], unda pastki indeks * yoki @ butun qatorni olib tashlaydi.

Deklaratsiya , mahalliy va o'qiydigan qurilganlar har bir qatorni tanlash uchun -a variantini qabul qiladi. O'qilgan matn standart-kiritilgan satrdan o'qilgan so'zlarning ro'yxatini belgilash uchun a -a optsiyasini qabul qiladi. O'rnatilgan va e'lon qilingan joylar ularni tayinlash sifatida qayta ishlatishga imkon beruvchi qator qiymatlarini aks ettiradi.

EXPANSIYa

Kengayish buyruq satrida so'zlarga bo'linganidan keyin amalga oshiriladi. Kengayishning etti turi mavjud: burqa kengayishi , tilde kengayishi , parametr va o'zgaruvchan kengayish , komandani almashtirish , arifmetik kengaytirish , so'zlarni ajratish va yo'lning kengayishi .

Kengayish tartibi quyidagilardir: bras kengayishi, tilde kengayishi, parametr, o'zgarmaydigan va arifmetik kengayish va komanda almashuvi (chapdan o'ngga to'g'ri shaklda bajariladi), so'zlarni ajratish va yo'lning kengayishi.

Uni qo'llab-quvvatlaydigan tizimlarda qo'shimcha ravishda kengayish mavjud: jarayonni almashtirish .

Brace kengaytirish

Brace kengayish - bu o'zboshimchalik bilan chiziqlar yaratilishi mumkin bo'lgan mexanizm. Ushbu mexanizm yo'lning nomi kengayishiga o'xshaydi, ammo yaratilgan fayl nomlari mavjud bo'lmasligi kerak. Kengaytiriladigan naqshlar ixtiyoriy boshlang'ich shaklni oladi, undan keyin juft juftlar o'rtasida vergul bilan ajratilgan qatorlar, keyinchalik ixtiyoriy postScript ko'rsatiladi . Preamble brauzerlarda joylashgan har bir qatorga prefiks qo'yiladi va postscript so'ngra har bir natija uchun qo'shiladi va chapdan o'ngga kengayadi.

Brace kengaytmalari ichki bo'lishi mumkin. Har bir kengaytirilgan magistralning natijalari tartiblangan emas; chapdan o'ng tomonga saqlanadi. Misol uchun, { d, c, b } e "ade ace abe" ga kengayadi.

Brace kengaytirish boshqa kengayishlardan oldin amalga oshiriladi va natijada boshqa kengaytmalarga xos bo'lgan har qanday belgi saqlanadi. Bu juda aniq. Bash , kengayish yoki qalamchalar orasidagi matnga sintaktik talqin qilmaydi.

Ushbu konstruktsiya, odatda, ishlab chiqariladigan satrlarning umumiy prefiksi yuqoridagi misolga qaraganda uzunroq bo'lsa, stenologiya sifatida qo'llaniladi:

mkdir / usr / local / src / bash / {eski, yangi, dist, bugs}

yoki

chow root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}

Brace kengaytirish sh ning tarixiy versiyalari bilan engil mos kelmaydiganlikni keltirib chiqaradi. sh so'zning bir qismi sifatida paydo bo'lganda, ularni ochish yoki yopish dastasini mujassam qilmaydi va ularni chiqishda saqlaydi. Bash kelepçenin kengayishi natijasida so'zlardan qalamlarni olib tashlaydi. Masalan, {1,2} faylga kiritilgan so'z chiqishda bir xil ko'rinadi. Xuddi shu so'z bash tomonidan kengaytirilgandan keyin file1 file2 sifatida chiqariladi . Sh bilan qattiq muvofiqligi zarur bo'lsa, + B opsiyasi bilan bashni boshlang yoki + B ni tanlab oldik .

Tilde kengayishi

Agar so'z chizilgan tildik belgisi bilan boshlansa (' ~ '), birinchi unlokatsiz chiziqdan avvalgi barcha belgilar (yoki barcha belgilar, chizilmasin chiziq bo'lmasa) tilde-prefiks hisoblanadi . Tilde-prefiksidagi belgilarning hech biri ko'rsatilmasa, tildagi keyingi tilde-prefiksidagi belgilar mumkin login nomi sifatida ko'rib chiqiladi. Ushbu login nomi null satr bo'lsa, tilde " HOME " qobiq parametrining qiymatiga almashtiriladi. BOSH SAHIFA o'rnatilmasa, qobiqni bajaradigan foydalanuvchining uy katalogi uning o'rnini egallaydi. Aks holda, tild-prefiksi belgilangan login nomiga tegishli uy katalogiga o'zgartiriladi.

Agar tilde-prefiksi "~ +" bo'lsa, qobiq o'zgaruvchisi PWD qiymati tilde-prefiks o'rniga o'tadi. Agar tilde-prefiksi "~ -" bo'lsa, OLDPWD qobiqli o'zgaruvchining qiymati , agar u o'rnatilgan bo'lsa, o'rnini bosadi. Tilde-prefiksidagi tildagi belgilar keyingi sonda N raqamidan iborat bo'lsa, ixtiyoriy ravishda "+" yoki "-" tomonidan prefiks qo'yilsa, tild-prefiks ko'rsatiladigan katalog to'plamining mos keladigan elementi bilan almashtiriladi. argument sifatida tild-prefiks bilan chaqirilgan dirs o'rnatilgan. Tilde-prefiksidagi tildagi harflar oldingi «+» yoki «-» bo'lmasdan raqamdan iborat bo'lsa, «+» so'zlari qabul qilinadi.

Agar kirish nomi noto'g'ri yoki tilde kengayish bajarilmasa, so'z o'zgarmaydi.

Har bir o'zgaruvchining belgilari : yoki = dan keyin darhol chizilgan tild-prefikslar uchun tekshiriladi. Bunday hollarda tilde kengayishi ham amalga oshiriladi. Natijada, PATH , MAILPATH va CDPATH belgilari bo'yicha tilda fayl nomlarini ishlatishi mumkin va qobiq kengaytirilgan qiymatni belgilaydi.

Parametrni kengaytirish

« $ » Belgisi parametrni kengaytirishi, buyruqni almashtirish yoki arifmetik kengayishlarni joriy qiladi. Kengaytirilishi kerak bo'lgan parametr nomi yoki belgisi ixtiyoriy, ammo nomning bir qismi sifatida sharhlanishi mumkin bo'lgan o'zgaruvchan belgilardan kengaytirilishini himoya qilish uchun xizmat qiluvchi braxiyalarga biriktirilishi mumkin.

Qavslar ishlatilganda, mos keladigan tugatish tirgovichlari, tsetkadan yoki tirnoqli mag'lubiyatdan qochib qutulmagan birinchi ` }} dir , va ko'milgan arifmetik kengaytma, buyruqni almashtirish yoki paramter kengaytmasi ichida emas.

Parametr qiymati o'zgaradi. Parametrlar bir nechta raqamli pozitsiya parametri bo'lgan yoki parametrga uning nomining bir qismi sifatida talqin qilinmaydigan belgi tomonidan kiritilganda talab qilinadi.

Quyidagi holatlarda so'z tilde kengayishi, parametrlarni kengayishi, komandani almashtirish va arifmetik kengayishlarga bog'liq. Pastki chiziqli kengaytma bajarilmasa, unset yoki null parametr uchun bash testlari; yo'g'on ichakni tashlab ketish faqatgina belgilanmagan parametr uchun sinovga olib keladi.

Standart qiymatlardan foydalaning . Parametr belgilanmagan yoki null bo'lsa, so'z kengaytmasi almashtiriladi. Aks holda, parametr qiymati o'zgaradi.

Standart qiymatlarni belgilash . Parametr belgilanmagan yoki bo'sh bo'lsa, so'zning kengayishi parametrga tayinlanadi. Parametr qiymati keyinchalik almashtiriladi. Joylashtirilgan parametrlar va maxsus ko'rsatkichlar bu tarzda tayinlanmasligi mumkin.

Null yoki Unset-ni ko'rsating . Agar parametr null yoki unset bo'lsa, so'zning kengayishi (yoki so'z mavjud bo'lmagan taqdirda xabar) standart xatoga yoziladi va interaktiv bo'lmasa qobiq chiqadi. Aks holda, parametr qiymati o'zgaradi.

Boshqa qiymatdan foydalaning . Agar parametr bo'sh yoki unset bo'lsa, hech narsa o'zgarmaydi, aks holda so'z kengaytiriladi.

Nomlari prefiks bilan boshlangan, IFS maxsus o'zgaruvchining birinchi belgisi bilan ajratilgan o'zgaruvchining nomlarini kengaytiradi.

Parametr qiymatining belgilar uzunligi almashtiriladi. Agar parametr * yoki @ bo'lsa, qiymatni o'zgartirgan pozitsion parametrlar soni. Agar parametr * yoki @ bilan indikatorlangan qator nom bo'lsa, o'zgaruvchi qiymat qatordagi elementlarning soni.

So'z keng tarqalib, yo'lning kengayishi kabi naqsh ishlab chiqariladi. Agar naqsh parametr qiymatining boshlanishiga mos keladigan bo'lsa, kengayish natijasi parametrning kengaytirilgan qiymati - eng qisqa vaqt bilan mos keladigan naqsh bilan ("` # '') yoki eng uzun mos keladigan naqsh (" ## " 'ishi) o'chirildi. Agar parametr @ yoki * bo'lsa, naqsh olib tashlash amaliyoti har bir joylashuv parametriga o'z navbatida qo'llaniladi va kengayish natijalar ro'yxatidir. Agar parametr @ yoki * bilan qo'shiladigan bir qator o'zgaruvchi bo'lsa, nusxani o'chirish jarayoni ketma-ketlikning har bir a'zosiga navbat bilan qo'llaniladi va kengayish natijalar ro'yxatidir.

So'z keng tarqalib, yo'lning kengayishi kabi naqsh ishlab chiqariladi. Agar naqsh parametrning kengaygan qiymatining orqada qolgan qismiga mos keladigan bo'lsa, kengayish natijasi parametrning kengaygan qiymati - eng qisqa mos keladigan naqsh bilan ('` % ' 'holat) yoki eng uzun mos keladigan naqsh (" % " % "ishi) o'chirildi. Agar parametr @ yoki * bo'lsa, naqsh olib tashlash amaliyoti har bir joylashuv parametriga o'z navbatida qo'llaniladi va kengayish natijalar ro'yxatidir. Agar parametr @ yoki * bilan qo'shiladigan bir qator o'zgaruvchi bo'lsa, nusxani o'chirish jarayoni ketma-ketlikning har bir a'zosiga navbat bilan qo'llaniladi va kengayish natijalar ro'yxatidir.

Naqsh , yo'lning kengayishi kabi naqsh ishlab chiqarish uchun kengaytirilgan. Parametr kengaytirildi va naqshning eng uzun qiymatiga mos keladigan qiymati magistral bilan almashtirildi. Birinchi shaklda faqat birinchi o'yin o'zgartirildi. Ikkinchi shakl, barcha naqsh namunalarini mag'lubiyatga almashtirishga olib keladi. Pattern # bilan boshlangan bo'lsa, parametrning kengaytirilgan qiymatining boshida mos kelishi kerak. Agar naqsh % bilan boshlangan bo'lsa, u parametrning kengaytirilgan qiymatining oxiriga mos kelishi kerak. Agar mag'lubiyat null bo'lsa, naqshga mos keladigan so'zlar o'chiriladi va quyidagi naqsh chiqarilishi mumkin. Agar parametr @ yoki * bo'lsa, o'zgarish jarayoni o'z navbatida har bir joylashuv parametriga qo'llaniladi va kengayish natijalar ro'yxatidir. Agar parametr @ yoki * bilan qo'shib qo'yilgan qator o'zgaruvchisi bo'lsa, o'zgarish jarayoni ketma-ketlikning har bir a'zosiga o'z navbatida qo'llaniladi va kengayish natijalar ro'yxatidir.

Buyruqlarni almashtirish

Buyruqning o'rnini bosish komandaning buyrug'ini almashtirish uchun buyruq chiqishni ta'minlaydi. Ikki shakl mavjud:

$ ( buyruqlar )

yoki

` Buyruq '

Bash kengaytmasini buyruqni bajarish va komanda o'rnini buyruqning standart chiqishi bilan almashtirishni amalga oshiradi, keyingi yangiliklar o'chiriladi. Qo'shilgan yangi satrlar o'chirilmaydi, lekin so'zlarni bo'linish vaqtida olib tashlanishi mumkin. Buyruq substitution $ (cat fayl ) ekvivalenti bilan almashtirilishi mumkin, ammo tezroq $ (< file ).

Qadimgi uslubdagi qo'zg'alish shakli ishlatilganda, teskari o'girish $ , ` , yoki \ ta'qib etilgandan keyingina o'z ma'nosini saqlab qoladi. Orqaga aylanmagan dastlabki qo'ng'irog' buyruqni almashtirishni tugatadi. $ ( Buyruq ) formasini ishlatganda, parentezlar orasidagi barcha belgilar buyruqni tashkil qiladi; hech kimga alohida e'tibor berilmaydi.

Buyruqlar ikkilamchi bo'lishi mumkin. Orqa chizilgan shaklni qo'llashda uyquga qo'yish uchun ichki orqa qismlardan teskari tomonga burilib kiring.

Agar ikkilamchi er-xotin tirnoq ichida ko'rinadigan bo'lsa, natijalar bo'yicha so'zlarni ajratish va yo'lning kengayishi amalga oshirilmaydi.

Aritmetik kengayish

Aritmetik kengayish arifmetik ifoda va baholash natijalarini baholashga imkon beradi. Arifmetik kengaytirish formati:

$ (( ifoda ))

Bu ifoda ikkilik tusda bo'lganidek muomala qilinadi, ammo parentezlar ichidagi ikkilamchi takliflar alohida ko'rib chiqilmaydi. Belgilangan barcha belgilar parametr kengayishi, mag'lubiyatni kengaytirish, komandani almashtirish va kotirovkalashni olib tashlanadi. Arifmetik almashtirishlar ichki bo'lishi mumkin.

Baholash ARITHMETIC evalitsioni bo'yicha quyida keltirilgan qoidalarga muvofiq amalga oshiriladi . Ifodani bekor qiladigan bo'lsa, bash xatoga yo'l qo'yganligini bildiruvchi xabar chiqaradi va hech qanday o'zgarish bo'lmaydi.

Jarayonni almashtirish

Jarayonni almashtirish adlandırılmış quvurlar ( FIFO ) yoki ochiq fayllarni nomlash uchun / dev / fd usuli qo'llab-quvvatlaydigan tizimlarda qo'llab-quvvatlanadi. Bu <( list ) yoki > ( ro'yxat ) shaklini oladi. Jarayon ro'yxati FIFO yoki / dev / fd- dagi ba'zi bir faylga ulangan yoki chiqishi bilan ishlaydi. Ushbu faylning nomi kengayish natijasida joriy buyruqning argumenti sifatida qabul qilinadi. Agar > ( list ) formasidan foydalanilsa, faylga yozish ro'yxatga kiritiladi. <( List ) shakli ishlatilsa, argument sifatida berilgan fayl ro'yxatning chiqishi uchun o'qilishi kerak.

Mavjud bo'lsa, jarayonni almashtirish parametr va o'zgaruvchan kengayish, komandani almashtirish va arifmetik kengaytirish bilan bir vaqtning o'zida amalga oshiriladi.

So'zni bo'linish

Qobiq parametrlarni kengaytirish, buyruqni almashtirish va arifmetik kengayish natijalarini tarjima qiladi, bu so'zlarni ajratish uchun er-xotin tirnoq ichida bo'lmaydi.

Qobiq IFSning har bir belgi bilan cheklash vositasi sifatida ishlaydi va boshqa belgilarning natijalarini ushbu belgilar bo'yicha so'zlarga ajratadi. IFS o'rnatilmagan bo'lsa yoki uning qiymati to'liq bo'lsa, standart, keyin IFS belgilarning har qanday qatori so'zlarni cheklash uchun xizmat qiladi. Agar IFS standart qiymatdan boshqa qiymatga ega bo'lsa, bo'shliqlar belgilarining bo'sh joylari sekanslari va yorliq so'zning boshida va oxirida e'tiborsiz qoladi, chunki bo'shliqlar belgisi IFS ( IFS bo'shliq belgisi) qiymatida bo'ladi. IFS bo'sh joylari bo'lmagan IFSdagi har qanday belgi, har qanday qo'shni IFS bo'shliq belgilar bilan birga, maydonni ajratadi. IFS bo'shliqqa oid belgilar ketma-ketligi shuningdek, chegaralash vositasi sifatida ko'rib chiqiladi. IFS qiymati null bo'lsa, hech qanday so'z bo'linmaydi.

Aniq bo'sh fikrlar ( "" yoki "" ) saqlanadi. Hech qanday qadriyatga ega bo'lmagan parametrlarning kengaytirilishidan kelib chiqadigan, noma'lum null argumentlar olib tashlanadi. Ikkala tirnoq ichida qiymati bo'lmagan bir parametr kengaytirilsa, bo'sh dalillar natija beradi va saqlanadi.

Hech qanday kengayish bo'lmasa, hech qanday bo'linish amalga oshirilmasligini unutmang.

Pathname kengaytmasi

So'zni bo'lgandan keyin, -f parametri o'rnatilmagan bo'lsa, bash belgilar uchun har bir so'zni tekshiradi * ? va [ . Agar ushbu belgilardan biri paydo bo'lsa, unda so'z naqsh deb hisoblanadi va naqshga mos keladigan alifbo tartibida tartiblangan fayl nomlari bilan almashtiriladi. Agar mos keladigan fayl nomlari topilmasa va qobiq nullglob variantni o'chirilsa, so'z o'zgarmasdan qoladi. Agar nullglob parametri o'rnatilsa va hech qanday mos kelmasa , so'z o'chiriladi. Qobiq variantini nocaseglob yoqilgan bo'lsa, o'yin alifbo belgilar holatlariga qaramay amalga oshiriladi. Pathname kengaytmasi uchun naqsh ishlatilganda, nomning boshida "yoki." Belgisi yoki chiziqdan keyin darhol, agar qobiq variantini dotglob o'rnatilmagan bo'lsa, mos keladigan bo'lishi kerak. Yo'l nomi bilan mos kelganda, chizilgan belgilar har doim ochiq-oydin bo'lishi kerak. Boshqa hollarda, " ." Belgisi maxsus ravishda ko'rib chiqilmaydi. Nocaseglob , nullglob va dotglob qobig'i variantlarini tavsifi uchun SHELL BUILTIN buyruqlar ostida pastdagi do'konning tavsifiga qarang .

GLOBIGNORE shell o'zgaruvchisi naqshga mos keladigan fayl nomlari majmuini cheklash uchun ishlatilishi mumkin. Agar GLOBIGNORE o'rnatilsa, GLOBIGNOREdagi naqshlardan biriga mos keladigan har bir mos keladigan fayl nomi o'yinlarning ro'yxatidan o'chiriladi. GLOBIGNORE o'rnatilsa ham, "`. '' Va `` .. '' fayl nomlari doim e'tiborsiz qoladi. Biroq, GLOBIGNORE ni sozlash dotglob qobig'i parametrini yoqish ta'siriga ega, shuning uchun "`. '' Bilan boshlangan barcha fayl nomlari mos keladi. `` `` Bilan boshlangan fayl nomlarini e'tibordan chetda qoldirishning eski xatti-harakatlarini olish uchun " . *" " GLOBIGNORE " dagi naqshlardan birini tanlang . GLOBIGNORE o'rnatilmagan bo'lsa, dotglob variantini o'chirib qo'yiladi.

Pattern Matching

Quyida tavsiflangan maxsus naqshli belgilardan tashqari, naqshdek ko'rinadigan har qanday belgi o'zini o'zi topadi. NUL belgisi naqshdek ko'rinmasligi mumkin. Maxsus naqshli belgilar so'zma-so'z moslashtirilsa, ular keltirilishi kerak.

Maxsus naqshli belgilar quyidagi ma'nolarga ega:

*

Null satrni o'z ichiga olgan har qanday mag'lubiyatga mos keladi.

?

Har qanday bitta belgiga mos keladi.

[...]

Qoplangan belgilarning biriga mos keladi. Chiziq bilan ajratilgan bir juft belgilar oralig'i ifodasini bildiradi; mavjud bo'lgan mahalliy belgilar va belgilar to'plamidan foydalanib, ushbu ikkita belgi orasida joylashgan har qanday belgi mos tushadi. Agar birinchi belgilar [ a ! yoki undan keyin biron-bir belgi qo'shilmaydi. Range iboralaridagi belgilarning tartiblash tartibini joriy mahalliy va LC_COLLATE shell o'zgarmaydigan qiymati belgilanadi. A - to'plamdagi birinchi yoki oxirgi belgilar sifatida qo'shib olinishi mumkin. A ] to'plamidagi birinchi belgi sifatida qo'shish orqali mos kelishi mumkin.

[ And ] ichida belgilar sinflari POSIX.2 standartida belgilangan quyidagi sinflardan biri bo'lgan sintaksisi [: class :] yordamida aniqlanishi mumkin:

alnum alpha ascii bo'sh cntrl raqamli grafik pastki bosma nuqta bo'sh joy yuqori so'z xdigit
Belgilar klassi shu klassga tegishli har qanday belgi bilan mos keladi. Belgilar belgisi harflari, raqamlari va belgilarga mos keladi.

[ Va ] ichida ekvivalentlik klassi c belgisi sifatida bir xil taqqoslash vazniga ega bo'lgan barcha belgilar (joriy mahalliy tomonidan belgilangan) bilan mos keladigan sintaksisi [= c =] yordamida aniqlanishi mumkin.

[ And ] ichida sintaksis [. belgisi .] belgilar bilan mos keladi .

Extglob qobig'i tanlovi shopt builtin yordamida yoqilgan bo'lsa, bir nechta kengaytirilgan moslama operatorlari tan olinadi. Quyidagi tavsifda, naqsh ro'yxati - bir yoki bir nechta naqshlarning ro'yxati . Murakkab namunalar quyidagi pastki naqshlardan birini yoki bir nechtasini ishlatish yo'li bilan tuzilishi mumkin:

? ( naqsh ro'yxati )

Berilgan naqshlarning nol yoki bitta paydo bo'lishi

* ( naqsh ro'yxati )

Berilgan naqshlarning nol yoki undan ortiq ko'rinishlariga mos keladi

+ ( naqsh ro'yxati )

Berilgan naqshlarning bir yoki bir nechta holatiga mos keladi

@ ( naqsh ro'yxati )

Berilgan naqshlarning biriga mos keladi

! ( naqsh ro'yxati )

Berilgan naqshlardan boshqa hech narsa topilmaydi

Iqtibos olib tashlash

Yuqoridagi kengaytmalardan keyin, yuqoridagi kengaytmalardan birortasi kelib chiqmagan \ , ' , va ' belgilarining barcha kutilmagan hollari o'chiriladi.

Qaytarilish

Buyruqlar bajarilmasdan oldin uning kiritishi va chiqishi qobiq tomonidan talqin etilgan maxsus ko'rsatgich yordamida qayta yo'naltirilishi mumkin. Qayta yo'naltirish joriy qobiqni ijro etish muhiti uchun fayllarni ochish va yopish uchun ham ishlatilishi mumkin. Quyidagi qayta yo'naltirish operatorlari oddiy buyruq ichida biron-bir joydan oldin yoki ko'rinishi mumkin yoki buyruqni bajarishi mumkin. Qayta yo'naltirishlar ular paydo bo'ladigan tartibda, chapdan o'ngga yo'naltiriladi.

Quyidagi tavsiflarda, agar fayl identifikatori raqami inobatga olinmasa va qayta terish operatsiyaning birinchi belgisi < , qayta yo'naltirish standart kirish (fayl identifikatori 0) ga tegishlidir. Yonaltiruvchi operatorining birinchi belgisi > bo'lsa, qayta yo'naltirish standart chiqish (fayl identifikatori 1) ga tegishlidir.

Boshqa ko'rsatmalar aks ettirilmasa, quyidagi ko'rsatmalarda qayta yo'naltirish operatoridan keyin keladigan so'z shablon kengayishi, tilde kengayishi, parametrlarni kengayishi, komandani almashtirish, arifmetik kengayish, takliflarni olib tashlash, yo'lning kengayishi va so'zlarni bo'linishga ta'sirlanadi. Agar u bir necha so'zlarga kengaytirilsa, bash xato haqida xabar beradi.

Qayta yo'nalishlar buyrug'i ahamiyatli ekanini unutmang. Masalan, buyruq

ls > dirlist 2 > & 1

Buyruqlar esa, standart chiqdi va standart xato faylni dirlistka boshqaradi

l > 2 > 1 > terib

Standart chiqish faqatgina standart chiqindilardan standart chiqdi qilib chiqqandan keyin normativ xatolikka o'xshash bo'lganligi sababli, faqatgina standart chiqishni faylga o'tkazadi .

Bash quyidagi jadvalda ta'riflanganidek, qayta yo'naltirishlarda ishlatilganda, bir nechta fayl nomlarini qo'llaydi:

/ dev / fd / fd

Agar fd joriy tamsayı bo'lsa, fd fayl identifikatori takrorlanadi.

/ dev / stdin

Fayl identifikatori 0 takrorlanadi.

/ dev / stdout

Fayl identifikatori 1 takrorlanadi.

/ dev / stderr

Fayl identifikatori 2 takrorlanadi.

/ dev / tcp / host / port

Xost , haqiqiy hostname yoki Internet manzili bo'lsa va port to'liq raqamli port raqami yoki xizmat nomi bo'lsa, bash TCP ulanishini mos keladigan soketga ochishga harakat qiladi.

/ dev / udp / host / port

Xost , haqiqiy hostname yoki Internet manzili bo'lsa va port , bir tamsayı port raqami yoki xizmat nomi bo'lsa, bash mos keladigan soket UDP ulanishni ochishga harakat qiladi.

Faylni ochish yoki yaratib bo'lmadi, qayta yo'naltirish muvaffaqiyatsizlikka olib keladi.

Kirishni qayta yo'naltirish

Kirishning qayta yo'naltirilishi nomini fayl identifikatori n o'qishda ochilishi kerak bo'lgan so'zning kengayishidan kelib chiqadigan fayl yoki n kiritilmagan bo'lsa standart kirish (fayl identifikatori 0) ga olib keladi.

Kirishni qayta yo'naltirish uchun umumiy format:

[ n ] < so'z

Chiqish qayta yo'naltirish

Chiqarishning qayta yo'naltirilishi nomini fayl identifikatori n ga yozish uchun ochiladigan so'zning kengayishi yoki n belgilangan bo'lsa, standart chiqishi (fayl identifikatori 1) dan iborat bo'lgan faylga olib keladi. Agar fayl mavjud bo'lmasa, u yaratiladi; agar u mavjud bo'lsa, u nol hajmiga qisqartiriladi.

Chiqarishni qayta yo'naltirishning umumiy formati:

[ N ] > so'z

Qayta yo'naltirish operatsiyalari > va > noclobber parametrlari o'rnatilgan bo'lsa, agar nomning kengayishidan kelib chiqqan fayl oddiy fayl bo'lsa, qayta yo'naltirish muvaffaqiyatsiz bo'ladi. Yonaltiruvchi operatori > | bo'lsa , yoki qayta yo'naltirish operatori > va o'rnatilgan o'rnatilgan buyruqlar uchun noclobber opsiyasi yoqilmagan bo'lsa, so'zlar bilan atalgan fayl mavjud bo'lsa ham, qayta yo'naltirishga uriniladi .

Qayta yo'naltirilgan chiqadigan qo'shimchalar

Chiqib ketish bu yo'nalishda qayta nomlanishi nomini fayl identifikatori n ga qo'shilishi uchun ochiladigan so'zning kengayishi natijasida yoki agar n belirtilmezse standart chiqish (fayl identifikatori 1) bo'ladi. Agar fayl mavjud bo'lmasa, u yaratiladi.

Chiqarishni qo'shishning umumiy formati:

[ n ] >> so'z

Standart chiqish va standart xatolarni qayta yo'naltirish

Bash , standart chiqdi (fayl identifikatori 1) va standart xato chiqishi (fayl identifikatori 2) ushbu tuzilma bilan so'zning kengayishi bo'lgan faylga qayta yo'naltirilishiga imkon beradi.

Standart chiqish va standart xatolarni qayta yo'naltirish uchun ikkita format mavjud:

&> so'zini tanlang

va

> & so'z

Ikkala shaklning birinchisi afzal. Bu semantik jihatdan ekvivalent

> So'z 2 > & 1

Bu erda Hujjatlar

Qayta yo'riqning bunday turi faqatgina so'zni (chiziqli blanklarsiz) ko'rsatadigan chiziq paydo bo'lmaguncha, qobiqning joriy manbadan kirishni o'qishni o'rgatadi. Bu nuqtaga o'qilgan barcha satrlar keyinchalik buyruqlar uchun standart kirish sifatida ishlatiladi.

Bu erda ko'rsatilgan hujjatlarning formati:

<< [ - ] bu erda so'z - hujjat ajratuvchi

So'zda parametrni kengaytirmaslik, buyruqni almashtirish, arifmetik kengayish yoki yo'lning kengayishi amalga oshirilmaydi. So'zdagi har qanday harflar ko'rsatilsa, chegarachi so'zdan so'zni olib tashlash natijasidir va bu hujjatdagi satrlar kengaytirilmaydi. Agar so'zi noma'lum bo'lsa, bu erda ko'rsatilgan hujjatning barcha satrlari parametrlarni kengaytirishi, buyruq almashinuvi va arifmetik kengayishlarga to'g'ri keladi. Keyingi holatda, \ belgilar navbati e'tiborsiz qilinadi va \ , $ , va ` belgilarini kiritish uchun foydalanilishi lozim.

Yonaltiruvchi operatori << - bo'lsa , u holda barcha etakchi tab tavsiflari kirish liniyalari va ajratuvchi chegaradan chiqariladi . Bu esa, qobiq skriptlari ichidagi hujjatlarni tabiiy ravishda indentatsiya qilish imkonini beradi.

Bu erda Strings

Bu erda hujjatning varianti, formati:

<<< so'z

So'z kengaytirildi va standart kiritishda buyruqlar bilan ta'minlandi.

Fayl identifikatorlarini nusxalash

Yonaltiruvchi operator

[ n ] so'z

asosiy fayl identifikatorlarini takrorlash uchun ishlatiladi. Agar so'z bir yoki bir nechta raqamga kengaytirilsa, n tomonidan belgilangan fayl identifikatori ushbu fayl identifikatorining nusxasi bo'lib hisoblanadi. So'zdagi raqamlar kiritish uchun ochiq bo'lgan fayl identifikatorini ko'rsatmasa, qayta yo'naltirish xatoligi yuzaga keladi. Agar so'z so'zlanganda, - fayl identifikatori yopiladi. Agar n belgilanmagan bo'lsa, standart kirish (fayl identifikatori 0) ishlatiladi.

Operator

[ n ] > & so'z

ikki nusxadagi chiqish fayllari identifikatorlari kabi ishlatiladi. Agar n aniqlanmasa, standart chiqish (fayl identifikatori 1) ishlatiladi. So'zdagi raqamlar chiqish uchun ochiq bo'lgan fayl identifikatorini ko'rsatmasa, qayta yo'naltirish xatoligi yuzaga keladi. Maxsus holat sifatida, agar n kiritilgan bo'lsa va so'z bir yoki bir nechta raqamga kengaytirilmasa, standart chiqish va standart xato oldindan aytib o'tilganidek yo'naltiriladi.

Fayl identifikatorlarini ko'chirish

Yonaltiruvchi operator

[ n ] raqam -

identifikator n faylga fayl identifikatorining raqamini yoki n belgilangan bo'lsa, standart kiritishni (fayl identifikatori 0) ko'chiradi. raqam nga takrorlangandan keyin yopiladi.

Xuddi shunday, qayta yo'naltirish operatori

[ n ] > va raqam -

identifikator n faylga fayl identifikatori raqamini yoki n belgilangan bo'lsa, standart chiqdi (fayl identifikatori 1) harakatlantiradi.

O'qish va yozish uchun fayl identifikatorlarini ochish

Yonaltiruvchi operator

[ n ] <> so'z

fayl nomi identifikatorida o'qish yoki yozish uchun ochiladigan so'zning kengayishi yoki agar n belirtilmemişse, fayl identifikatori 0 bo'lgan faylga sabab bo'ladi. Agar fayl mavjud bo'lmasa, u yaratiladi.

ALIASES

Taxalluslar oddiy buyruqning birinchi so'zi sifatida ishlatilganda, bir so'z uchun bir satrni almashtirish imkonini beradi. Qobiq boshqa taxalluslar va unalias builtin buyruqlar bilan o'rnatilishi va o'rnatilishi mumkin bo'lgan taxalluslar ro'yxatini saqlab qoladi (quyidagi SHELL BUILTIN TOMONIDAN qarang). Har bir buyruqning birinchi so'zi, agar unikipediya bo'lsa, uning taxallusni tekshirish uchun tekshiriladi. Agar shunday bo'lsa, bu so'z boshqa nom matnini o'zgartiradi. Taxallus nomi va o'zgartirilgan matn yuqorida sanab o'tilgan metamerachilar , shu jumladan, taxallus nomi o'z ichiga ololmasligi kerak bo'lgan har qanday qobiq kiritilishini o'z ichiga olishi mumkin. O'zgartirish matnining birinchi so'zi taxalluslar uchun sinovdan o'tkazildi, lekin takrorlanadigan nomga teng bo'lgan so'z ikkinchi marta kengaytirilmagan. Buning ma'nosi shuki, bir-biriga l -s-F , masalan, bash o'z-o'zidan almashtirish matnini kengaytirishga urinmaydi. Boshqa taxallus qiymatining oxirgi belgisi bo'sh bo'lsa , taxallusni ta'qib qilgan keyingi buyruq so'zi ham taxallusni kengaytirish uchun tekshiriladi.

Aliaslar yaratilgan va taxallus buyrug'i bilan berilgan va unalias buyrug'i bilan olib tashlangan.

O'zgartirish matnida argumentlarni ishlatish uchun mexanizm yo'q. Agar argumentlar kerak bo'lsa, qobiq vazifasini ishlatish kerak (quyidagi funktsiyalarga qarang).

Kengaytmali qobiq variantini shopt yordamida o'rnatmasangiz , taxalluslar interaktiv bo'lmasa, taxalluslar kengaytirilmaydi (quyidagi SHELL BUILTIN buyruqlar ostida do'konning tavsifini ko'ring).

Taxalluslarni aniqlash va ulardan foydalanish qoidalari biroz chalkashlik kasb etadi. Bash har doim bu qatordagi buyruqlardan birini bajarishdan oldin hech bo'lmaganda bitta aniq qatorni o'qiydi. Taklif bajarilganda emas, buyruq o'qilganda takrorlanishlar kengaytiriladi. Shu sababli, keyingi buyruqlar satri o'qilmaguncha, boshqa buyruq bilan bir xil satrda paydo bo'lgan taxallus ta'rifi kuchga kirmaydi. Bu qatordagi taxallus ta'rifidan so'ng buyruqlar yangi taxalluslardan ta'sirlanmaydi. Bunday xatti-harakatlar funktsiyalar bajarilganda ham muammodir. Funktsiyaning ta'rifi funktsiya bajarilganda emas, balki, funktsiyaning ta'rifi o'ziga xos buyruqlar ekanligi sababli, takrorlanishlar kengaytiriladi. Natijada, funktsiyada belgilangan takomillashtirilgan funksiyalar bajarilmaguncha mavjud bo'lmaydi. Xavfsiz bo'lish uchun har doim boshqa ismlarni alohida satrda joylashtiring va aralash buyruqlardagi takrorlashni ishlatmang.

Deyarli har bir maqsad uchun, taxalluslar qobiq vazifalari bilan almashtiriladi.

FUNKSIYALAR

SHELL GRAMMAR ostida yuqorida aytib o'tilganidek, belgilangan qobiq funksiyasi keyinchalik bajarilishi uchun bir qator buyruqlarni saqlaydi. Qobiq funksiyasining nomi oddiy buyruqlar nomi sifatida ishlatilganda ushbu funktsiya nomi bilan bog'liq buyruqlar ro'yxati bajariladi. Vazifalar joriy qobiq kontekstida bajariladi; ularni sharhlash uchun hech qanday yangi jarayon yaratilmaydi (buning kontrakti shell skriptini bajarish bilan farqlanadi). Agar funktsiya bajarilsa, funktsiya uchun argumentlarni bajarish vaqtida joylashuv parametrlari bo'ladi. O'zgartirishni aks ettirish uchun maxsus parametr # yangilanadi. Positional parametr 0 o'zgarmaydi. Funktsiya bajarilayotganda FUNCNAME o'zgaruvchisi funksiyaning nomiga o'rnatiladi. Qobiqni ijro etuvchi muhitning barcha boshqa tomonlari funktsiya va chaqiruvchi bilan bir xil bo'ladi, istisno holatlardan tashqari, funksiyaning iz elementi berilgan bo'lsa, DEBUG tuzog'i (quyidagi SHELL BUILTIN buyruqlar ostida tuzilgan tuzoq ta'rifiga qarang) quyida joylashgan deklaratsiyaning bayoniga qarang).

Funksiyaga mahalliy funktsiyalar mahalliy tuzilgan buyruq bilan e'lon qilinishi mumkin. Odatda, o'zgaruvchilar va ularning qiymatlari funktsiya va uning chaqiruvchisi o'rtasida taqsimlanadi.

O'rnatilgan buyruqlar funktsiyasi bir funktsiyada bajarilsa, funktsiya bajariladi va ijro funktsiya chaqiruvidan keyingi buyruqlar bilan davom etadi. Agar funktsiya bajarilsa, joylashuv parametrlari va maxsus parametr # qiymatlari funktsiyaning bajarilishidan oldingi qiymatlarga qayta tiklanadi.

Funktsiya nomlari va ta'riflari -f- parametrida e'lon qilingan yoki yoziladigan buyruqlar ro'yxatiga kiritilishi mumkin. Deklaratsiya qilish yoki yozish uchun -F parametri faqat funktsiya nomlarini ro'yxatga oladi. Vazifalar eksport qilinadigan bo'lishi mumkin, shuning uchun pastki qavatlar avtomatik ravishda -f- parametr bilan belgilangan eksportga aniqlanadi.

Vazifalar o'zboshimchalik bilan bo'lishi mumkin. Recursiv chaqiruvlar soniga cheklov belgilanmaydi.

ARITMETIK DEGERLASh

Qobiq arifmetik ifodalarni muayyan holatlarda baholashga imkon beradi (qarang, qurilgan buyruq va Aritmetik kengaytirish ). Baholash jarayoni qattiq kenglikdagi tamsaytlarda amalga oshiriladi, lekin ortiqcha chegara yo'q, lekin 0 bo'limi tuzoqqa tushib qoladi va xatolik sifatida belgilanadi. Operatorlar, ularning ustuvorligi va birlashishi C tilida bir xil. Quyidagi operatorlar ro'yxati teng huquqlarga ega operatorlar darajasida guruhlangan. Ushbu darajalar ustuvorlikni kamaytirish tartibida berilgan.

id ++ id -

o'zgaruvchan post-increment va post-decrement

++ id - id

o'zgaruvchan oldindan oshirish va oldindan kamaytirish

- +

unary va ortiqcha

! ~

mantiqiy va bittadan rad etish

**

exponentiation

* /%

ko'paytirish, bo'linish, qoldiq

+ -

Bundan tashqari, olib tashlash

<< >>

chap va o'ng bitma siljishlari

<=> = <>

taqqoslash

==! =

tenglik va tengsizlik

&

bitni va AND

^

bitwise maxsus OR

|

Bitsel YoKI

&&

mantiqiy AND

| |

mantiqiy YoKI

expr ? expr : eksp

shartli baholash

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

tayinlash

expr1 , expr2

vergul

Shell o'zgaruvchilari operandlar sifatida qabul qilinadi; parametrni kengaytish iborani baholashdan oldin amalga oshiriladi. Agar ifodada, parametrni kengayish sintaksisini ishlatmasdan, qobiq o'zgaruvchilari nomga ham murojaat qilishlari mumkin. Agar o'zgaruvchining qiymati arifmetik ifodalar sifatida qaralganda baholanadi. Agar qobiq o'zgaruvchining o'zida tamsayı xususiyati bir ifodada foydalanish uchun ochiq bo'lishi kerak emas.

Etakchi 0 bilan sobit bo'lgan sakkiz sonlar deb talqin etiladi. Etakchi etakchi 0x yoki 0x onaltılık sonini bildiradi. Aks holda, raqamlar [ base # ] n shaklini oladi, bu erda bazalar arifmetik bazani ifodalovchi 2 dan 64 gacha bo'lgan kasr sonlari bo'lib, n - bu bazada raqam hisoblanadi. Agar tayanch # kiritilgan bo'lsa, unda baz 10 ishlatiladi. 9dan katta raqamlar kichik harflar, katta harflar, @ va _ bilan ko'rsatilgan. Agar tayanch 36 dan kam yoki teng bo'lsa, kichik va katta harflar 10 va 35 orasida raqamlarni ifodalash uchun bir-birining o'rnida ishlatilishi mumkin.

Operatorlar birinchi navbatda baholanadi. Qavslardagi past iboralar avval baholanadi va yuqoridagi ustunlik qoidalarini bekor qilishi mumkin.

KO'RIB ChIQISh

Shartli iboralar [[ murakkab buyrug'i va test va [ fayllar atributlarini sinab ko'rish va string va arifmetik taqqoslashlarni bajarish uchun o'rnatilgan buyruqlar ] tomonidan ishlatiladi. So'zlar quyidagi unary yoki ikkitomonlama primerlardan iborat. Agar dastlabki fayllardan biriga fayl argumenti / dev / fd / n shaklida bo'lsa , u holda fayl identifikatori n tekshiriladi. Agar dastlabki fayllardan biriga fayl argumenti / dev / stdin , / dev / stdout yoki / dev / stderrdan biri bo'lsa , fayl identifikatori 0, 1 yoki 2 mos ravishda belgilanadi.

- fayl

Agar fayl mavjud bo'lsa.

-b fayli

Agar fayl mavjud bo'lsa va bloklangan maxsus fayl bo'lsa.

-c fayli

Agar fayl mavjud bo'lsa va belgi maxsus fayl bo'lsa.

-d fayli

Agar fayl mavjud bo'lsa va katalog bo'lsa.

- fayl

Agar fayl mavjud bo'lsa.

-f fayl

Agar fayl mavjud bo'lsa va muntazam fayl bo'lsa.

-g fayl

Agar fayl mavjud bo'lsa va sozlangan-guruh-id bo'lsa.

-h faylida

Agar fayl mavjud bo'lsa va ramziy havola bo'lsa.

-k fayl

Agar fayl mavjud bo'lsa va uni `` yopishqoq '' bit o'rnatilgan bo'lsa.

-p faylida

Agar fayl mavjud bo'lsa va adlandırılmış bir quvur (FIFO) bo'lsa.

-r fayli

Fayl mavjud bo'lsa va o'qilishi mumkin bo'lsa.

-s faylida

Agar fayl mavjud bo`lsa va noldan katta bo`lsa.

-t fd

To'g'ri fd fayl identifikatori ochiq bo'lsa va terminalga murojaat qilsa.

-u fayl

Agar fayl mavjud bo'lsa va uning set-user-id biti aniq bo'lsa.

-w fayl

Fayl mavjud va yozilishi mumkin.

-x faylida

Fayl mavjud va bajarilishi mumkin.

-O fayl

Fayl mavjud bo'lsa va samarali foydalanuvchi identifikatoriga tegishli bo'lsa.

-G fayli

Fayl mavjud bo'lsa va samarali guruh identifikatoriga tegishli bo'lsa.

-L fayli

Agar fayl mavjud bo'lsa va ramziy havola bo'lsa.

-S fayli

Agar fayl mavjud bo'lsa va rozetkaning rost bo'lsa.

-N faylida

Fayl mavjud bo'lsa va oxirgi o'qilganidan boshlab o'zgartirilgan bo'lsa.

file1 - NT fayl2

Fayl1 yangi (o'zgartirilgan sana bo'yicha) file2 dan farqli bo'lsa , yoki file1 va file2 mavjud bo'lmasa.

file1 - ot file2

File1 fayl2 dan katta bo'lsa yoki file2 mavjud bo'lsa va file1 to'g'ri bo'lsa.

file1 - fayl2

File1 va file2 bir xil qurilma va inode raqamlariga murojaat qilsa.

-o optname

Qobiq parametr tanlovi yoqilgan bo'lsa rost. -o- variantining tavsifi ostidagi variantlar ro'yxatini quyida joylashgan to'plamga qarang.

-z string

Jarayonning uzunligi nol bo'lsa to'g'ridir.

-n string

string

Agar magistral uzunligi nolga teng bo'lmasa.

string1 == string2

Satrlar teng bo'lsa, to'g'ri. = POSIXga qattiq rioya qilish uchun == o'rniga ishlatilishi mumkin.

string1 ! = string2

Satrlar teng bo'lmasa rost.

string1 < string2

String1, string2 tilidan oldingi mahalliy tilda leksikografik ravishda belgilansa, to'g'ri.

string1 > string2

String1, string2 tilidan keyingi tilda lexikografik jihatdan tartiblasa.

arg1 OP arg2

OP , -eq , -ne , -lt , -le , -gt yoki -ge dan biridir . Ushbu arifmetik ikkilik operatorlar arg1 teng bo'lsa, arg2 teng yoki undan kam, teng yoki undan katta, yoki teng arg2 teng, teng yoki teng emas. Arg1 va arg2 ijobiy yoki salbiy tamsayılar bo'lishi mumkin.

Oddiy buyruq kengaytirish

Oddiy buyruqlar bajarilganda, qobiq chapdan o'ngga quyidagi kengayishlarni, topshiriqlarni va qayta yo'naltirishlarni amalga oshiradi.

1. Parserning o'zgarmaydigan belgilashlari (buyruq nomi oldidan avvalgi) deb belgilagan so'zlari va qayta yo'naltirishlar keyinroq ishlash uchun saqlanadi.

2. O'zgaruvchan topshiriq yoki qayta yo'naltirishlar bo'lmagan so'zlar kengaytirildi. Kengayishdan keyin so'zlar qolsa, birinchi so'z buyruqning nomi bo'lib, qolgan so'z esa argument hisoblanadi.

3.Redirections yuqorida ko'rsatilgan REDIRECTION ostida amalga oshiriladi.

4. Har bir o'zgaruvchining tayinlanishidan keyin matn, tilden kengayish, parametrlarni kengaytirish, buyruqlar almashtirish, arifmetik kengayish va o'zgaruvchiga tayinlanmasdan oldin o'chirishni bekor qiladi.

Hech qanday buyruq nomi natijasi bo'lmasa, o'zgaruvchan topshiriqlar joriy qobiq muhiti ta'sir qiladi. Aks holda, o'zgaruvchilar bajarilgan buyruq muhitiga qo'shiladi va joriy qobiq muhiti ta'sir qilmaydi. Atamalaridan birortasi o'zgaruvchiga qiymatni belgilashga urinadigan bo'lsa, xato bo'ladi va buyrug'i nol bo'lmagan holatga ega bo'ladi.

Agar buyruq nomi natijasi bo'lmasa, qayta yo'naltirishlar bajariladi, lekin joriy qobiq muhiti ta'sir qilmaydi. Qayta yo'naltirish xatosi buyrug'i nol bo'lmagan holat bilan chiqishiga sabab bo'ladi.

Kengaytirishdan keyin buyruqlar nomi bo'lsa, bajarish jarayoni quyida keltirilgan. Aks holda, buyruq chiqadi. Agar kengaytmalardan biri komandani almashtirishni o'z ichiga olgan bo'lsa, buyruqning chiqish holati bajarilgan so'nggi buyruqni almashtirish holatini ko'rsatadi. Buyruq almashtirishlar bo'lmasa, buyruqlar nol holatida bo'ladi.

Buyruqlar

Agar buyruq so'zlarga bo'linib bo'lgandan so'ng, oddiy buyruq va ixtiyoriy argumentlar ro'yxatiga olib keladigan bo'lsa, quyidagi harakatlar amalga oshiriladi.

Buyruqlar nomi bo'shliqlar bo'lmasa, qobiq uni topishga urinadi. Agar ushbu nom bilan qobiq vazifasi mavjud bo'lsa, ushbu funktsiya yuqorida FUNCTIONSda aytib o'tilganidek chaqiriladi. Agar nom funktsiyaga mos kelmasa, qobiq uni qobiqning ichki tuzilish ro'yxatida izlaydi. Agar o'yin topilsa, u qurilgan bo'ladi.

Agar nom qobiq vazifasi ham, joylashuvi ham bo'lmasa va plashlar mavjud bo'lmasa, bash PATH ning har bir elementini ushbu nom bilan bajariladigan faylni o'z ichiga olgan katalog uchun izlaydi. Bash , olib boriladigan fayllarning to'liq yo'llarini eslab qolish uchun xash jadvali foydalanadi (quyida SHELL BUILTIN USTALARI ostidagi xeshga qarang). PATH katalogini to'liq qidirish faqat buyruq jadvali jadvalida topilmasa bajariladi. Qidiruv muvaffaqiyatsiz bo'lsa, qobiq xato xabari yozishadi va 127 chiqish holatini qaytaradi.

Qidiruv muvaffaqiyatli bo'lganda yoki buyruq nomi bir yoki bir nechta chiziqli bo'lsa, qobiq nomlangan dasturni alohida ijro muhitida bajaradi. Argument 0 berilgan nomga o'rnatiladi va qolgan argumentlar berilgan bo'lsa, berilgan argumentlarga o'rnatiladi.

Ushbu ijro etilmasa, fayl executable formatida bo'lmasa va fayl katalog bo'lmasa, qobiqli buyruq fayli , qobiq buyruqlar o'z ichiga olgan fayl hisoblanadi. Bu ishni bajarish uchun pastki qavat. Ushbu subshell o'z-o'zini qayta boshlaydi, shuning uchun effekt ota-onalar tomonidan eslab o'tilgan buyruqlarning joylashuvi ( SHELL BUILTIN buyruqlar ostida quyida ko'rsatilgan) bolani saqlab qolishi bundan mustasno, buyruqni bajarish uchun yangi qobiqni chaqirishga o'xshashdir.

Agar dastur # bilan boshlangan fayl bo'lsa ! , birinchi qatorning qolgan qismi dastur uchun tarjimonni bildiradi. Qobiq belgilangan translatsiyani ushbu bajariladigan formatga mos kelmaydigan operatsion tizimlarida amalga oshiradi. Tarjimonning argumentlari dasturning birinchi satrida tarjimon nomidan so'ng, dasturning nomi, agar bo'lsa, argumentlarni argumentlardan so'ng bitta ixtiyoriy dalildan iborat.

Buyruqlar atrof-buyrug'i

Qobiq quyidagilarni o'z ichiga olgan ijro etuvchi muhitga ega :

* Exec joylashgan manzilga yo'naltirishlar bilan o'zgartirilganligi kabi, chaqiruv vaqtida shell tomonidan devralınan ochiq fayllar

* CD , pushd yoki popd tomonidan o'rnatiladigan yoki chaqiruv vaqtida qobiq tomonidan meros qilingan joriy ishchi katalog

* faylni yaratish tartibi maskasi umask tomonidan belgilanadi yoki qobiqning ota-onasidan meros bo'lib olinadi

* Hozirgi makr tuzoq tomonidan o'rnatiladi

o'zgaruvchining belgilanishi yoki qobiqning ota-onasidan muhitda saqlangan yoki merosxo'r tomonidan o'rnatilgan qobiq parametrlari

- qobiqning ota-onasidan atrof muhitda ijro etilishi yoki meros qilib olinishi paytida aniqlangan qobiq vazifalari

* chaqiruv vaqtida yoqilgan (yoki sukut yoki buyruq qatori argumentlari bilan) yoki o'rnatilgan parametrlar

* shopt tomonidan yoqilgan variantlar

Boshqa taxallus bilan belgilangan shell taxalluslari

* turli xil jarayon identifikatorlari, shu jumladan, fon ishlarini bajarish, $$ funktsiyasi va $ PPID qiymati

O'rnatilgan yoki qobiq funktsiyasidan boshqa oddiy buyruqlar bajarilishi kerak bo'lsa, u quyidagilardan iborat bo'lgan alohida ijro muhitida chaqiriladi. Aks belgilanmagan bo'lsa, qiymatlar qobiqdan meros bo'lib o'tadi.

qobiqning ochiq fayllari, shuningdek, buyruqqa yo'naltirishlar ko'rsatadigan har qanday o'zgartirishlar va qo'shimchalar

* Joriy ishchi katalog

* Faylni yaratish rejimi maskasi

* Buyruqlar uchun eksport qilinadigan parametrlarga qo'shimcha ravishda eksport uchun belgilangan qobiqli o'zgaruvchilari, atrofdan o'tgan

qobiq tomonidan tutilgan tuzoqlar qobiqning ota-onasidan meros qolgan qadriyatlarga qayta tiklanadi va qobiq tomonidan e'tiborsiz qoldirilgan tuzoqlarga e'tibor berilmaydi

Ushbu alohida muhitda chaqirilgan buyruqlar qobiqning ijro muhitiga ta'sir qilmaydi.

Qo'mondon o'rinbosari va asenkron buyruqlar, qobiq tomonidan tutilgan tuzoqlarning qobiq ota-onasidan chaqiruvdagi meros qilib olingan qadriyatlarga qayta tiklanishidan tashqari, qobiq muhiti ekvivalenti bo'lgan pastki muhit sharoitida chaqiriladi. Quvurlarning bir qismi sifatida chaqirilgan qurilgan buyruqlar, shuningdek, quyi qismli muhitda ham amalga oshiriladi. Subhome muhitiga kiritilgan o'zgarishlar qobiqning ijro muhitiga ta'sir qilmaydi.

Agar buyruqni bajarish va ishni boshqarish faol bo'lmasa, buyruqlar uchun standart standart kirish bo'sh fayl / dev / null hisoblanadi . Aks holda, chaqirilgan buyruq qoidaning fayl identifikatorlarini qayta yo'naltirishlar bilan o'zgartirilganligini devralır.