Bash , standart girişdən və ya bir fayldan oxunan əmrləri yerinə yetirən bir sh- uyğunluq əmri dili tərcüməçisidir. Bash həmçinin Korn və C qabığının faydalı xüsusiyyətlərini birləşdirir ( ksh və csh ).
Bash , IEEE POSIX Shell və Tools spesifikasiyasının (IEEE İşçi Qrupu 1003.2) uyğun bir tətbiq edilməsi nəzərdə tutulur.
Seçimlər
Daxili komandanin təsvirində sənədləşdirilmiş tək xarakterli cədvəl variantlarına əlavə olaraq, bash çağırıldığında aşağıdakı variantları şərh edir:
-c string
-c variantının varsa, əmrlər stringdən oxunur. Satırdan sonra arqumentlər varsa, onlar 0 $ ilə başlayan mövqelər parametrlərinə təyin edilirlər.
-i
-i seçimi varsa, qabıq interaktivdir .
-l
Bir giriş kabuğu kimi çağırılmış kimi bash aktını edin (aşağıda baxın).
-r
-r variantını təqdim edərsə, qabıq məhdudlaşdırılır (aşağıda göstərilən ŞƏRTLƏRƏ bax).
-s
-s variantları mövcuddursa və ya seçimi işlədikdən sonra arqumentlər qalmazsa, əmrlər standart girişdən oxunur. Bu seçim, interaktiv qabığa müraciət edərkən mövqelər parametrlərinin təyin olunmasına imkan verir.
-D
Öncəki $ ikitərəfli simvolların bir siyahısı standart ouputda çap olunur. Mövcud dil C və ya POSIX olmadıqda dil tərcüməinə tabe olan simlərdir . Bu, -n variantını nəzərdə tutur; heç bir əmr edilməyəcəkdir.
[- +] O [ shopt_option ]
shopt_option , mağazada quraşdırılmış qablar tərəfindən qəbul edilən kabuk variantlarından biridir (aşağıda SHELL BUILTIN KOMANDALARINA bax). Shopt_option varsa, -O bu seçimin dəyərini təyin edir; + O bunu pozmur. Shopt_option təmin edilmirsə , shopt tərəfindən qəbul edilən kabuk variantlarının adları və qiymətləri standart çıxışda çap olunur. Çağırış seçimi + O isə, çıxış giriş kimi yenidən istifadə edilə bilən bir formatda göstərilir.
-
A - variantların sonunu göstərir və əlavə seçim emalını dayandırır. Bundan sonra hər hansı bir arqument - fayl və arqumentlər kimi qəbul edilir. Bir arqument - bərabərdir.
Bəş də bir çox xarakterli variantları şərh edir. Bu seçimlər bir xarakterli variantın tanınması üçün komanda xəttində görünməlidir.
- dump-po-strings
-D'ye bərabərdir, lakin çıxış GNU gettext po (portativ obyekt) fayl formatında.
- dump-strings
-D üçün bərabərdir.
- yardımçı
Standart çıxışda bir istifadə mesajını göstərin və uğurla çıxış edin.
- faylın faylı
--rcfile faylı
Shell interaktiv olduqda (/ aşağıda INVOCATION ) ~ / .bashrc standart fərdi başlatma faylı əvəzinə fayldan əmrləri yerinə yetirin .
--daxil ol
-l üçün bərabərdir.
- xəbərsiz
Qobon interaktiv olduqda əmr satırlarını oxumaq üçün GNU oxunuş kitabxanasını istifadə etməyin.
- noprofil
~ / .bash_profile , ~ / .bash_login , və ya ~ / .profile sistem faylları / etc / profilindən və ya şəxsi başlatma fayllarından hər hansı birini oxumayın . Başlanğıc olaraq, bir giriş kabuğu olaraq çağırıldığında bash bu faylları oxuyur (aşağıdakı INVOCATION bax).
- Nöqtə
Shell interaktiv olduqda ~ / .bashrc şəxsi başlatma faylını oxumaq və yerinə yetirməyin. Bu qab qalığının sh kimi çağrıldığı təqdirdə, bu seçim default olaraq göstərilir.
- posix
Standart əməliyyatın POSIX 1003.2 standartından fərqli olduğu bash davranışını dəyişdirin ( posix rejimi ).
- məhdudlaşdırılıb
Qabıq məhdudlaşır (aşağıda TƏHLÜKƏ EDİLƏN ŞƏXSLƏRƏ bax).
- Rpm-tələb edir
Qovluq skriptinin işə salınması üçün tələb olunan faylların siyahısını hazırlayın. Bu, '-n' deməkdir və kompilyasiya zamanı səhvini yoxlanmanın yoxlanılması ilə eyni məhdudiyyətlərə tabedir; Backtikler, [] testlər və evallar ayrılmaz, belə ki, bəzi bağımlılıkları buraxa bilər. -verbose -v .
--versiya
Standart çıxışdakı bash nümunəsi üçün versiya məlumatını göstərin və uğurla çıxış edin.
ARQUMENTLƏR
Seçim emalından sonra arqumentlər qalırsa və nə -c və ya -s variantları təmin olunmayıbsa, ilk arqument kabuk əmrləri olan bir faylın adını daşıyır. Bash bu şəkildə çağırılırsa, $ 0 faylın adına təyin edilir və mövqelər parametrləri qalan arqumentlərə təyin olunur. Bash , bu fayldan əmrləri oxuyur və yerinə yetirir, sonra çıxış edir. Bəşin exit statusu skriptdə icra edilən son komandanin exit statusudur. Heç bir əmr yerinə yetirilmirsə, çıxış vəziyyəti 0-dir. İlk olaraq faylı cari qovluğa açmaq və heç bir fayl tapılmadıqda, shell dizin üçün PATH- də dizinləri axtarır.
MƏLUMAT
Bir giriş kabuğu , ilk sıfır ardıcıllığını sıfırdan biri hesab edir və ya bir --login seçimi ilə başlamışdır.
Interaktiv qabıq bir variant seçilməmiş arqumentlər olmadan başlamışdır və standart giriş və çıxış hər iki terminala bağlıdır ( isatty (3) ilə müəyyənləşdirilmişdir) və ya -i seçimi ilə başlayan -c variantları olmadan. PS1 quraşdırılıb və $ - bash interaktiv olsaydı, bir kabuk skriptini və ya bir başlanğıc faylını bu vəziyyəti sınamağa imkan verir.
Aşağıdakı paraqraflar başlanğıc fayllarını necə yerinə yetirdiklərini təsvir edir. Fayllardan hər hansı biri mövcud olsa da oxunmur , bash bir səhv bildirir. Tildes, EXPLANION bölümündeki Tilde Genişlemesi altında aşağıda qeyd edildiği kimi fayl adlarında genişletilir.
Bash interaktiv giriş kabuğu kimi istifadə edildikdə və ya --login seçimi ilə qeyri-interaktiv bir qabıq kimi istifadə edildikdə , əvvəlcə bu fayl varsa, / etc / profile faylından əmrləri oxuyur və yerinə yetirir. Bu faylları oxuduqdan sonra, ~ / .bash_profile , ~ / .bash_login və ~ / .profile , bu sırada baxır və mövcud olan və oxunan birincidən əmrləri oxuyur və yerinə yetirir. - Bu qabiliyyətin bu davranışı maneə törətməyə başladığı zaman - noprofil seçimi istifadə edilə bilər.
Bir giriş kabuğu çıxdıqda, bash oxuyur və varsa ~ / .bash_logout faylından əmrləri yerinə yetirir.
Bir giriş kabuğu olmayan interaktiv bir qaba başlayanda, bash oxuyur və ~ / .bashrc əmrlərini yerinə yetirir, əgər bu fayl var. Bu, --norc parametrindən istifadə edərək inhibe edilə bilər. --rcfile faylının seçimi bash'yi ~ / .bashrc əvəzinə fayldan əmrləri oxumağa və yerinə yetirməyə məcbur edəcək.
Bash qeyri-interaktiv olaraq başlandığında, məsələn, bir dəyişiklik BASH_ENV üçün görünür bir kabuk script çalıştırmak, orada görünür əgər dəyəri genişləndirir və genişlənmiş dəyəri oxumaq və həyata keçirmək üçün bir fayl adı kimi istifadə edir . Baş əmr edildiyi kimi davranır:
əgər [-n "$ BASH_ENV"]; sonra . "$ BASH_ENV"; fi
lakin PATH dəyişəninin dəyəri fayl adını axtarmaq üçün istifadə edilmir.
Bash , sh adı ilə çağırılırsa, POSIX standartına uyğun olaraq, mümkün olduğu qədər ş tarixiy versiyalarının başlanğıc davranışını təqlid etməyə çalışır. Interaktiv giriş kabuğu kimi istifadə edildikdə və ya ' login' seçimi ilə qeyri-interaktiv bir qabıq kimi istifadə edildikdə ilk olaraq bu qaydada / etc / profile və ~ / .profile əmrlərini oxumaq və yerinə yetirməyə çalışır. Bu davranışa mane olmaq üçün - noprofil seçimi istifadə edilə bilər. İsmarıc ilə interaktiv bir qabıq kimi çağırıldığında, bash dəyişən ENV üçün baxır, müəyyən edildikdə dəyəri genişləndirir və oxumaq və yerinə yetirmək üçün bir fayl adını genişlənmiş dəyəri istifadə edir. Sh kimi çağrılan bir kabuk başqa başlanğıc fayllarından əmrləri oxumaq və yerinə yetirməyə cəhd etmədiyindən, --rcfile variantının heç bir təsiri yoxdur. İsminizlə əlaqəli qeyri-interaktiv bir qab , başqa bir başlanğıc faylını oxumağa çalışmır. Sh kimi çağırıldığında başlama faylları oxunduqdan sonra bash posix rejiminə daxil olur.
Bash posix rejimində, --posix command line seçimi ilə başladıldığında, başlanğıc faylları üçün POSIX standartını izləyir. Bu rejimdə interaktiv mərclər ENV dəyişənini genişləndirir və adları genişlənmiş dəyər olan fayldan oxunur və yerinə yetirilir. Başqa bir başlanğıc faylları oxunmur.
Bash , məsələn, rshd , uzaq kabuk daemon tərəfindən idarə olunduğunu müəyyənləşdirməyə çalışır. Bash bunu rshd tərəfindən idarə edərsə , o fayl oxuyur və oxuyursa ~ / .bashrc əmrlərini oxuyur və yerinə yetirir. Şey kimi çağırıldığında bunu etməz. - Bu variantın qarşısını almaq üçün --norc parametri istifadə edilə bilər və --rcfile variantının başqa bir faylın oxunmasını məcbur etmək üçün istifadə edilə bilər, lakin rshd genellikle bu variantları ilə kabuğu çağırmır və ya onlara göstərilməsinə icazə vermir.
Shell, real istifadəçi (qrup) idinə bərabər olmayan effektiv istifadəçi (qrup) id ilə başlamışsa və -p variantları təmin edilmirsə , heç bir başlanğıc faylları oxunmur , shell funksiyaları ətrafdan miras qalmaz , SHELLOPTS dəyişən, ətraf mühitdə görünsə, nəzərə alınmır və effektiv istifadəçi kimliyi real istifadəçi idinə təyin olunur. -p variantının çağırılması ilə təmin edilirsə, başlanğıc davranışı eynidır, lakin effektiv istifadəçi kimliyi sıfırlanmaz.
TƏKLİFLƏR
Aşağıdakı anlayışlar bu sənədin qalan hissəsində istifadə olunur.
boş
Boşluq və ya nişan.
söz
Qabıq tərəfindən tək vahid sayılan simvolların ardıcıllığı. Həm də bir mö'cüzə olaraq bilinir.
adı
Yalnız alfasayısal simvollardan və alt çərçivələrdən ibarət olan və alfabetik xarakterli və ya altçizgi ilə başlayan söz. Həmçinin bir identifikator kimi istinad edilir .
metakaracter
Sözsüz, sözləri ayırır ki, bir xarakter. Aşağıdakilerden biri:
| &; () <> boşluq nişanı
nəzarət operatoru
Bir nəzarət funksiyası yerinə yetirən bir simge . Aşağıdakı simvollardan biridir:
|| & &&; ;; () |
QEYDLƏR
Qorunan sözlər qabığa xüsusi məna verən sözlərdir. Aşağıdakı sözlər qeyd edilməmiş və ya sadə bir əmrin ilk sözü (aşağıda SHELL GRAMMAR bax) və ya işin üçüncü sözü və ya əmr üçün qorunub saxlanılır:
!! halda elif else esac fi funksiyasını yerinə yetirirsə, sonra seçin {} vaxt [[]]
SHELL GRAMMAR
Sadə əmrlər
Sadə bir komanda isteğe bağlı dəyişən tapşırıqların ardıcıllığıdır, sonra boş- ayrı sözlər və redirections və bir nəzarət operatoru tərəfindən sona çatdı. Birinci söz, icra ediləcək əmri ifadə edir və argument sıfır olaraq qəbul edilir. Qalan sözlər, çağırılan əmrlərə arqumentlər olaraq verilir.
Sadə bir əmrin qaytarılması dəyəri onun exit statusu və ya komanda n sinyal ilə bağlanarsa, 128+ n olur.
Boru kəmərləri
Bir boru kəməri xarakterlə ayrılmış bir və ya bir neçə əmrin ardıcıllığıdır . Boru kəmərinin forması:
[ zaman [ -p ]] [! ] komanda [ | komanda2 ...]
Komanda standart çıxış bir boru vasitəsilə komanda2 standart girişinə bağlanır . Bu əlaqə komanda tərəfindən göstərilən hər hansı redirections əvvəl həyata keçirilir (aşağıda REDIRECTION bax).
Zəruri söz varsa ! bir boru kəmərindən əvvəl, bu boru kəmərinin çıxış vəziyyəti son komandanın çıxma statusunun məntiqi deyil. Əks təqdirdə, boru kəmərinin vəziyyəti son komandanın çıxışıdır. Boru kəmərindəki bütün əmrləri bir dəyər qaytarmadan əvvəl dayandırmaq üçün gözləyir.
Borc boru kəmərinin əvvəlcədən qeyd olunan vaxtından əvvəl, boru kəməri istifadəyə verildikdə, istifadəçi və sistemin icrası ilə istifadə olunan sistem vaxtları bildirilir. -p variantı, çıxış formatını POSIX tərəfindən göstərilənə dəyişir. TIMEFORMAT değişkeni, vaxt məlumatının necə nümayiş edildiyini müəyyən edən bir format stringinə təyin edilə bilər; Shell Değişkenleri altında TIMEFORMAT'ın açıklamasına baxın.
Boru kəmərindəki hər bir əmr ayrı bir proses kimi icra olunur (yəni, bir subshelldə).
Siyahıları
Siyahı operatorlardan biri tərəfindən ayrılan bir və ya daha çox boru kəmərinin bir ardıcıllığıdır ; , & , && və ya || , və ya isteğe bağlı olaraq ; , və ya
Bu siyahı operatorları, && və || bərabər prioritetə malikdir ; və bərabər prioritetləri olan.
Komandaları məhdudlaşdırmaq üçün bir nöqtədə bir nöqtədə bir və ya bir neçə yeni satır ardıcıllığı görünə bilər.
Bir komanda nəzarət operatoru tərəfindən ləğv olunarsa və kabuk, əmrini arxa planda arxada işlədir. Kabuk, əmrin bitməsini gözləmir, qaytarma statusu isə 0-dir. ardıcıl olaraq icra edilir; hər bir əmr üçün cədvəl öz növbəsində sona çatacaq. Dönüş statusu, son əmrin çıxış statusudur.
Nəzarət operatorları && və || sırası ilə sırasıyla siyahı və OR siyahıları. A AND siyahısı forma malikdir
command1 && command2
komanda2 yerinə yetirilir və yalnız, command1 sıfırdan çıxma vəziyyətini qaytarır.
OR siyahısı bir forma malikdir
command1 || komanda2
command2 , əgər və yalnız command1 qeyri-sıfır çıxış statusunu qaytarırsa yerinə yetirilir. VƏ və OR siyahılarının qaytarma statusu siyahıda aparılan sonuncu komandanın çıxışıdır.
Bəstəkar əmrlər
Bir mürəkkəb əmr aşağıdakılardan biridir:
( siyahı )
siyahısı bir subshelldə icra edilir. Şəkildəki ətraf mühitə təsir göstərən dəyişkən tapşırıqlar və tikilmiş əmrlər komanda başa çatdıqdan sonra qüvvədə qalmır. Dönüş statusu siyahıdan çıxma statusudur.
{ siyahısı ; }
siyahısı sadəcə cari kabuk mühitində icra edilir. siyahı yeni bir satırla və ya nöqtəli vergül ilə ləğv edilməlidir. Bu qrup əmri olaraq bilinir. Dönüş statusu siyahıdan çıxma statusudur. Qeyd edək ki, metakaraktlardan ( və ) fərqli olaraq, { və } sözləri qorunur və qorunan bir sözün tanınmasına icazə verildiyi yerdə baş verməlidir. Bir söz breakuna səbəb olmadığı üçün boşluqlar siyahısından ayrılmalıdırlar.
(( ifadə ))
İfadə aşağıda göstərilən qaydalara əsasən qiymətləndirilir: ARITHMETIC DEFINITION . Sözün dəyəri sıfır deyilsə, qaytarma vəziyyəti 0; əks halda qaytarma statusu 1-dir. Bu, " ifadəni " bildirmək üçün tam bərabərdir.
[[ ifadə ]]
Şərti ifadə ifadəinin qiymətləndirilməsinə əsasən 0 və ya 1 statusu qaytarın. İfadə aşağıda göstərilən primerlərdən ibarətdir: KEYFİYYƏTLİ İFADƏLƏR . Word parçalanması və yol adı genişləndirilməsi [[ və ]] ilə sözlər arasında yerinə yetirilmir; tilde genişləndirilməsi, parametr və dəyişən genişləndirilməsi, aritmetik genişləndirmə, komanda əvəzi, proses əvəzi və svop aradan qaldırılması həyata keçirilir.
== və ! = Operatorlar istifadə edildikdə, operatorun sağ tərəfindəki simli bir nümunə hesab olunur və Pattern Matching altında aşağıda göstərilən qaydalara uyğun olaraq uyğunlaşdırılır . Dəyər uyğun olaraq sırasıyla eşleşirse və ya desenle uyuşmuyorsa, geri dönüş değeri 0'dır. Nümunənin hər hansı bir hissəsi bir simli olaraq uyğunlaşmağa məcbur etmək üçün istifadə edilə bilər.
Aşağıdakı operatorları istifadə edərək ifadələr əvvəlcədən azaldılmış qaydada sıralanır:
( ifadə )
Ifadə dəyərini qaytarır. Bu, operatorların normal prioritetini ləğv etmək üçün istifadə edilə bilər.
!! ifadəsi
İfşa yanlış olduqda doğru.
ifadə1 && expression2
Hər ikisi expression1 və expression2 də doğrudur.
ifadə1 || expression2 Doğrudan expression1 və ya expression2 həqiqidir.
Və & və || expression1 dəyərinin bütün şərti ifadəin qaytarılması dəyərini müəyyən etmək üçün kifayətdirsə, operatorlar ifadəni qiymətləndirmir2.
adı ilə ; siyahı etmək ; həyata keçirilir
Aşağıdakı sözlər siyahısı genişləndirilir və maddələrin siyahısını tərtib edir. Değişken adı bu siyahının hər bir elementinə növbə olaraq təyin edilir və siyahı hər dəfə yerinə yetirilir. Sözdəki ifadələr silinsə, komandanın təyin etdiyi hər bir mövqeləri parametr üçün siyahıdan birini yerinə yetirir (aşağıda bax PARAMETERS ). Dönüş statusu, yerinə yetirən son əmrin çıxma vəziyyətidir. Boş bir siyahıda nəticədə olan maddələrin genişlənməsi, heç bir əmr yerinə yetirilmir və qaytarma vəziyyəti 0 olur.
(( expr1 ; expr2 ; expr3 )); siyahı etmək ; həyata keçirilir
Birincisi, aritmetik ifadə expr1 aşağıda göstərilən qaydalara əsasən qiymətləndirilir: ARITHMETIC DEĞERLENDİRMƏSİ . Aritmetik ifadə expr2 sonra sıfıra qədər qiymətləndirilənə qədər təkrarlanır. Hər dəfə expr2 qeyri-sıfır dəyərlə qiymətləndirir, siyahı yerinə yetirilir və hesab ifadəsi expr3 qiymətləndirilir. Hər hansı bir ifadə çıxarılsa, bu, 1-ə kimi qiymətləndirir kimi davranır. Dönüş dəyəri, son əmrin yerinə yetirilən siyahıdakı exit statusu və ya ifadələrin hər hansı birinin etibarsız olması səhvdir.
adı [ sözlə ] seçin; siyahı etmək ; həyata keçirilir
Aşağıdakı sözlər siyahısı genişləndirilir və maddələrin siyahısını tərtib edir. Genişləndirilmiş sözlər dəsti standart həddə yazılıb, hər biri bir sıra sayılır. Sözdəki ifadələr ifşa olunarsa, mövqelər parametrləri çap olunur (aşağıda PARAMETRE bax). PS3 sorğusu sonra standart girişdən oxunan bir satır göstərilir. Satır göstərilən sözlərdən birinə uyğun gələn bir rəqəmdən ibarətdirsə, adın dəyəri həmin sözə düzəldilir. Xətt boşsa, sözlər və sorğu təkrar göstərilir. EOF oxunduqda, əmr tamamlanır. Oxunan hər hansı bir dəyər adın null olaraq təyin olunmasına səbəb olur. Oxunan xətt REPLY dəyişəndə saxlanılır. Siyahı , hər bir seçimdən sonra, bir break komutu yerinə yetirilənə qədər icra edilir. Seçimin exit statusu siyahıda yerinə yetirilən son əmrin exit statusu və ya heç bir əmr yerinə yetirilmədikdə sıfırdır.
[[(] model [ | model ]
Bir halda əmri əvvəlcə sözü genişləndirir və yolun adı genişlənmə ilə bağlı eyni uyğunluq qaydalarından istifadə edərək, hər bir nümunəni öz növbəsində uyğunlaşdırmağa çalışır (aşağıda Pathname Expansion bax). Bir matç tapıldığında, müvafiq siyahı yerinə yetirilir. İlk matçdan sonra heç bir sonrakı matçlar cəhd edilmir. Heç bir model uyğun deyilsə, çıxış statusu sıfırdır. Əks təqdirdə, siyahıda yerinə yetirilən son komandanın çıxışı.
siyahı ; sonra siyahı; [ elif siyahısı ; sonra siyahı ; ] ... [ başqa siyahı ; ] fi
Əgər siyahı yerinə yetirilirsə. Onun exit statusu sıfırsa, o zaman siyahı yerinə yetirilir. Əks təqdirdə, hər elif siyahısı öz növbəsində yerinə yetirilir və əgər onun exit statusu sıfırsa, müvafiq siyahı yerinə yetirilir və əmr tamamlanır. Əks təqdirdə başqa siyahı , əgər varsa, icra edilir. Çıxış statusu yerinə yetirilən son əmrin exit statusu və ya heç bir şərt düzgün olmadıqda sıfırdır.
siyahıda ; siyahı etmək ; həyata keçirilir
siyahıya qədər ; siyahı etmək ; həyata keçirilir
Siyahıda sonuncu əmr sıfırdan çıxma vəziyyətini qaytararkən müddətdə əmri davamlı olaraq yerinə yetirir. Komuta əmr edildiyi müddətə eynidır, istisna olmaqla, test imtina edilir; Siyahıda sonuncu əmr qeyri-sıfırdan çıxma statusunu qaytarırsa, siyahı işlədir. Əməliyyatın gediş vəziyyəti və əmrləri yerinə yetirilən sonuncu siyahısı əmrinin exit statusu və ya heç biri yerinə yetirilmədikdə sıfırdır.
[ function ] name () { siyahısı ; }
Bu, ad adlı bir funksiyanı müəyyənləşdirir. Funksiyanın orqanı {və} arasında əmrlərin siyahısıdır . Sadə komanda adının adı olduğu zaman bu siyahı yerinə yetirilir. Bir funksiyadan çıxış vəziyyəti bədənin içində yerinə yetirilən son əmrin çıxma statusudur. (Aşağıdakı FONKSİYONLARa baxın.)
ŞƏRHLƏR
Qeyri-interaktiv bir qabıqda və ya interaktiv bir mərtəbədə interaktiv_sözlülüklərin alışveriş yerində seçimi effektivdir (baxın SHELL BUILTIN COMMANDS ), # ilə başlayan bir söz bu xəttdə və qalan bütün simvolları nəzərə almamağa səbəb olur. Etkileşimli bir kabuk, interaktiv_saytlar seçimi olmadan imkan verir şərhlərə icazə vermir. Interaktiv_kommentlər seçimi interaktiv mərtəbələrdə default olaraq açıqdır.
QUOTING
Quoting , müəyyən simvol və ya sözlərin xüsusi mənasını qabığa çıxarmaq üçün istifadə olunur. Çıxarış, xüsusi simvollar üçün xüsusi müalicəni aradan qaldırmaq, qorunan sözlərin bu kimi tanınmasını qarşısını almaq və parametrlərin genişləndirilməsinin qarşısını almaq üçün istifadə edilə bilər.
Yuxarıda göstərilən metafaraktların hər biri AÇIQLAMA şəklində xüsusi bir məna daşıyır və özünü təmsil etmək üçün istifadə edilməlidir.
Komanda tarixinin genişləndirilməsi imkanları istifadə edildikdə, tarixin genişləndirilməsi xarakteri, adətən ! tarixin genişlənməsinin qarşısını almaq üçün qeyd olunmalıdır.
Üç quoting mexanizmləri var: qaçış xarakteri , tək quotes və ikiqat tırnak.
Qovlu olmayan bir terslik ( \ ) qaçış xarakteridir .
Tək quotes içərisində simvolların daxil edilməsi, hər bir xarakterin literal dəyərini quotes içərisində saxlayır. Tək tirajlar arasında bir tirajın qarşısında olsa da, tək bir qiymət verilə bilməz.
İki tirajlı simvolların qorunması, $ , ` , və \ istisna olmaqla, hər bir simvolun qiymətinin qiyməti daxilində saxlayır. Simvollar $ və ' ikiqat qiymətlərlə xüsusi mənasını tutur. Backslash, yalnız aşağıdakı simvollardan biri ilə izlənildikdə xüsusi mənasını saxlayır: $ , ` , ' , \ və ya . İki tirajın içərisində ikiqat sitat daxilində bir tersliklə qeyd etmək olar.
İki tirajlı zaman (və aşağıda bax PARAMETERS ) xüsusi parametrləri * və @ xüsusi məna daşıyır.
$ ' String ' formasının sözləri xüsusi olaraq müalicə olunur. Söz, ANSI C standartı ilə əvəz edildiyi kimi, əvəzlənən backslash-qaçan simvol ilə stringə genişlənir. Backslash escape sequences, əgər varsa, aşağıdakı kimi şifrələnir:
\ a
uyarı (zəng)
\ b
backspace
\ e
bir qaçış xarakteri
\ f
forma feed
\ n
yeni xətt
\ r
carriage return
\ t
yatay sekmə
\ v
şaquli nişanı
\\
backslash
\ '
tək təklif
\ nn
səkkiz bit xarakterli olan səkkiz dəyər nnn (bir-üç rəqəm)
\ x HH
səkkiz bit xarakteri, dəyəri on altılıq HH (bir və ya iki hex rəqəm)
\ c x
bir nəzarət x karakter
Genişletilmiş nəticə, dollar işareti olmadığı təqdirdə, tək quotes.
Bir dollar əlaməti ( $ ) əvvəlində ikiqat alınmış simli simli mövcud locale uyğun olaraq tərcümə olunacaq. Mövcud dil C və ya POSIX ise, dollar işarəsi göz ardı edilir. Simli tərcümə edildikdə və əvəz olunarsa, dəyişdirmə ikiqat alınır.
PARAMETRELER
Bir parametr dəyərləri saxlayan bir təşkilatdır. Xüsusi Parametrlər altında aşağıda göstərilən xüsusi simvolların adı , sayı və ya bir növü ola bilər. Kabuğun məqsədləri üçün bir dəyişən adla göstərilən parametrdir. Bir dəyişən bir dəyər və sıfır və ya daha çox xüsusiyyətlərə malikdir . Öznitelikler, yerleşik komuta kullanılarak atanır (aşağıda SHELL BUILTIN COMMANDS'te bildirin).
Bir dəyər təyin edilmişsə parametr müəyyənləşdirilir. Null simli etibarlı bir dəyərdir. Bir dəyişən müəyyən edildikdən sonra, yalnız unset builtin komutunu istifadə edərək silinməyəcəkdir (aşağıda SHELL BUILTIN COMMANDS bax).
Dəyişən formanın bəyanatı ilə təyin edilə bilər
adı = [ dəyər ]
Məbləğ verilmirsə, dəyişən null simli təyin olunur. Bütün dəyərlər tilde genişləndirilməsi, parametr və dəyişən genişləndirmə, komanda əvəzetmə, aritmetik genişləndirmə, və sütun çıxarılması (aşağıda EXPANSION bax) keçirilir. Değişkenin tamsayı öznitelik kümesi varsa, $ ((...)) genişlemesi kullanılmadığı halde , değer aritmetik genişlemeye tabidir (bkz. Aşağıdaki Aritmetik Genişleme ). Xüsusi Parametrlər altında aşağıda göstərildiyi kimi "$ @" istisna olmaqla, Word bölmələri həyata keçirilmir. Pathname genişləndirilməsi deyil. Təyinat bəyanatları da bəyanat , yazı tipi , ixrac , oxunuşda və yerli yerleşik əmrlərə aid arqumentlər kimi görünə bilər.
Konumsal parametrlər
Konumsal bir parametr, tək rəqəmli 0-dan başqa bir və ya daha çox rəqəmlə göstərilən parametrdir. Konvensiyalı parametrlər çağırıldıqda qabığın argumentlərindən təyin olunur və quraşdırılmış əmri istifadə edərək yenidən təyin edilə bilər. Vəzifə parametrləri atama ifadələri ilə təyin edilə bilməz. Qabıq funksiyası yerinə yetirildikdə mövqelər parametrləri müvəqqəti olaraq dəyişdirilir (aşağıdakı FUNKSİYA bax).
Vahid bir rəqəmdən daha çox olan bir mövqelər parametrinin genişləndirildiyi zaman, aşırmalarda əlavə edilməlidir (aşağıda EXPANSION bax).
Xüsusi parametrlər
Kabuk xüsusi parametrləri alır. Bu parametrlərə yalnız istinad edilə bilər; Onlara tapşırılmasına icazə verilmir.
*
Birindən başlayaraq mövqelər parametrlərinə genişlənir. Genişləmə ikiqat tirajlarda meydana gəldikdə, IFS xüsusi dəyişəninin ilk xarakteri ilə ayrılan hər bir parametrin dəyəri ilə bir sözlə genişlənir. Yəni, " $ * " $ 1 c $ 2 c ... "ye bərabərdir, burada c IFS dəyişəninin dəyərinin ilk xarakteridir. IFS müəyyən edilmədikdə parametrlər boşluqlarla ayrılır. IFS boş olduqda, parametrlər aralıq ayırıcılar olmadan birləşdirilir.
@
Birindən başlayaraq mövqelər parametrlərinə genişlənir. Genişləmə ikiqat tırnakların içərisində olduqda, hər bir parametr ayrı bir sözə qədər genişlənir. Yəni " $ @ " " $ 1 " " $ 2 " e bərabərdir ... Konvensiya parametrləri olmadıqda, " $ @ " və $ @ heç bir şeyə genişləndirməyin (yəni, silinir).
#
Ondalık konumlu parametrelerin sayısına genişletir.
?
Son dövrdə aparılan ön plan boru kəmərinin vəziyyətinə genişlənir.
-
Mövcud variant bayrağına, yığılmış komanda tərəfindən və ya qabığın özü ilə təyin edilən (məsələn, -i variant) kimi göstərildiyi kimi genişləndirir.
$
Qabığın proses kimliyinə genişlənir. Bir () alt hesabda, bu, cədvəlin proses kimliyinə genişlənir, deyil.
!!
En son yürütülen arka plan (asynchronous) komutunun proses kimliğine genişletir.
0
Shell və ya kabuk skriptinin adını genişləndirir. Bu kabuk başlatma zamanı müəyyən edilir. Baş əmrlər faylıyla çağırılırsa, $ 0 bu faylın adına təyin edilir. Bash -c seçeneğiyle başlamışsa, $ 0 , ifşa ediləcəyi simdan sonra ilk arqumentə təyin olunur. Əks halda, argument sıfır verildiyi kimi bash- i çağırmaq üçün istifadə olunan faylın adı təyin olunur.
_
Shell başlanğıcında, dəlil siyahısında keçildiyi kimi yerinə yetirilən qabığın və ya kabuk skriptinin mütləq faylının adını qoyun. Sonradan, genişləndirildikdən sonra əvvəlki əmrlərə son arqumenti genişləndirir. Həm də əmr verilən hər bir komandanın tam faylı adına qoyulur və bu əmrə ixrac olunan ətraf mühitə yerləşdirilir. Məktubun yoxlanılması zamanı bu parametr hazırda yoxlanılan poçt faylının adını saxlayır.
Shell dəyişənləri
Aşağıdakı dəyişənlər qabıq tərəfindən müəyyən edilir:
BASH
Bu bash nümunəsini çağırmaq üçün istifadə olunan tam fayl adını genişləndirir.
BASH_VERSINFO
Bu elementlər üçün bash versiyası üçün versiya məlumatlarına sahib olan readonly bir sıra dəyişən. Serialın üzvlərinə verilən dəyərlər aşağıdakılardır:
BASH_VERSINFO [ 0]
Əsas versiya sayı ( azad ).
BASH_VERSINFO [ 1]
Kiçik versiya nömrəsi ( versiya ).
BASH_VERSINFO [ 2]
Yama düzeni.
BASH_VERSINFO [ 3]
Quruluş versiyası.
BASH_VERSINFO [ 4]
Sərbəst status (məsələn, beta1 ).
BASH_VERSINFO [ 5]
MACHTYPE dəyəri.
BASH_VERSION
Bash nümunəsinin versiyasını təsvir edən bir simli genişləndirir.
COMP_CWORD
COMP_LINE
Mövcud əmr xətti. Bu dəyişən yalnız kabuk funksiyaları və proqramlaşdırılmış tamamlama qurğuları tərəfindən çağırılan xarici komutlarda mövcuddur (aşağıda Programlanabilir Tamamlama bax).
COMP_POINT
COMP_WORDS
Mövcud əmr satırında fərdi sözlərdən ibarət olan bir sıra dəyişən (aşağıdakı Dizaynlara baxın). Bu dəyişən yalnız proqramlaşdırılmış tamamlama qurğuları tərəfindən çağırılan kabuk funksiyalarında mövcuddur (aşağıda Programlanabilir Tamamlama bax).
DIRSTACK
Dizin yığınındakı mövcud məzmununu ehtiva edən bir sıra dəyişən (aşağıdakı Dizaynlara baxın). Dizinler , dirs yerleşik tarafından gösterildiği sırada yığın içinde görünür. Bu dizi dəyişəninin üzvlərinə təyin etmək artıq yığındakı dizinləri dəyişdirmək üçün istifadə oluna bilər, ancaq pushd və popd yerləri dizinləri əlavə etmək və silmək üçün istifadə olunmalıdır. Bu dəyişənə təyinat cari dizini dəyişmir. DIRSTACK unset deyilsə, sonradan sıfırlansa belə, onun xüsusi xüsusiyyətlərini itirir.
EUID
Mövcud istifadəçinin effektiv istifadəçi kimliyini genişləndirir, qabığın başlanğıcında başlanır. Bu dəyişən oxumaqdadır.
FUNCNAME
Hal-hazırda yerinə yetirən cədvəl funksiyasının adı. Bu dəyişən yalnız bir kabuk funksiyası icra edildikdə mövcuddur. FUNCNAME üçün tapşırıqlar heç bir təsiri yoxdur və bir səhv statusu qaytarır. FUNCNAME müəyyən edilmədikdə, sonradan sıfırlansa belə, onun xüsusi xüsusiyyətlərini itirir.
GROUPS
Cari istifadəçinin üzv olduğu qrupların siyahısını ehtiva edən bir sıra dəyişən. GROUPS üçün təyinatlar heç bir təsirə malik deyil və bir səhv statusu qaytarır. GROUPS unset deyilsə, sonradan sıfırlansa belə, onun xüsusi xüsusiyyətlərini itirir.
HISTCMD
Mövcud komanda tarix tarixində və ya tarix siyahısında. HISTCMD müəyyən edilmədikdə, sonradan sıfırlansa belə, onun xüsusi xüsusiyyətlərini itirir.
HOSTNAME
Avtomatik olaraq mövcud hostun adını seçin.
HOSTTYPE
Avtomatik olaraq bashin yerinə yetirdiyi maşının növünü dəqiq şəkildə təsvir edən bir simvolu müəyyənləşdirin. Varsayılan sistem sisteminə bağlıdır.
LINENO
Bu parametrə hər dəfə istinad edildikdə, qabıq bir sətri və funksiyası daxilində mövcud ardıcıl xətt nömrəsini (1-dən başlayaraq) əks etdirən bir decimal ədədini əvəz edir. Bir skriptdə və ya funksiyada olmadıqda, əvəz edilmiş dəyər mənalı olmaq üçün təmin edilmir. LINENO unset deyilsə, sonradan sıfırlansa belə, onun xüsusi xüsusiyyətlərini itirir.
MACHTYPE
Standart GNU cpu-şirkət-sistem formatında, bashin yerinə yetirildiyi sistem tipini tam olaraq təsvir edən bir simvolu avtomatik olaraq təyin edin. Varsayılan sistem sisteminə bağlıdır.
OLDPWD
Cd əmri ilə müəyyən edilmiş əvvəlki işçi qovluğu.
OPTARG
Getopts builtin komandası tərəfindən işlənən son variant dəlilinin dəyəri (aşağıda SHELL BUILTIN COMMANDS bax).
OPTIND
Getopts builtin komanda tərəfindən işləniləcək növbəti arqumentin indeksi (aşağıda SHELL BUILTIN COMMANDS bax).
OSTYPE
Başın yerinə yetirildiyi əməliyyat sistemini təsvir edən bir dize avtomatik olaraq qurulur. Varsayılan sistem sisteminə bağlıdır.
PİPESTATUS
Ən son vaxtlar yerinə yetirilmiş ön planda olan proseslərdən (yalnız bir komanda ola biləcək) çıxış statusu dəyərlərinin siyahısını ehtiva edən bir sıra dəyişən (aşağıda Array).
PPID
Kabuğun valideyninin proses kimliyi. Bu dəyişən oxumaqdadır.
PWD
Cd əmri ilə müəyyən edilmiş cari işçi qovluğu.
RANDOM
Bu parametrə istinadən hər dəfə 0 ilə 32767 arasında təsadüfi bir tamsayı yaranır. Təsadüfi ədədlərin ardıcıllığı RANDOM'a bir dəyər verilərək başlana bilər . RANDOM unset deyilsə, sonradan sıfırlansa belə, onun xüsusi xüsusiyyətlərini itirir.
REPLY
Heç bir argüman verilmədikdə oxunan komanda tərəfindən oxunan giriş xəttinə təyin edin.
SECONDS
Hər dəfə bu parametr istinad edildikdə, shell çağırışından bu yana saniyə sayını qaytarır. Bir dəyər SECONDS-ə təyin edildikdə, sonrakı referanslar ilə qaytarılan dəyər təyin edilmişdən və təyin olunan dəyərdən bir saniyədir. SECONDS unset deyilsə, sonradan sıfırlansa belə, onun xüsusi xüsusiyyətlərini itirir.
SHELLOPTS
Aktiv qovluğun seçilmiş kolonla ayrılmış siyahısı. Siyahıda olan hər bir söz, set seçilmiş komanda üçün -o variantının etibarlı mənbəyidir (baxın SHELL BUILTIN KOMMANDALARI aşağıda). SHELLOPTS-da görünən variantlar, -o olaraq təyin olunanlardır. Başlanğıc başlandığında bu dəyişən mühitdə olsaydı, hər bir başlanğıc faylını oxuduğunuzda siyahıdakı hər qabıq seçimi aktiv olacaq. Bu dəyişən yalnız oxunur.
SHLVL
Hər dəfə artan bir bash nümunəsi başlayır.
UID
Mövcud istifadəçinin istifadəçi kimliyinə genişləndirilir, qabığın başlanğıcında başlanır. Bu dəyişən oxumaqdadır.
Aşağıdakı dəyişənlər qabıq tərəfindən istifadə olunur. Bəzi hallarda, bash bir dəyişənə bir default dəyər verir; bu hallar aşağıda qeyd olunur.
BASH_ENV
Bash bir shell skriptini icra edərkən bu parametrenin təyin edildiyi təqdirdə, dəyəri ~ / .bashrc da olduğu kimi, kabuku başlatmaq üçün əmrləri olan bir filename kimi şərh edilir. BASH_ENV dəyəri parametr genişləndirilməsinə, komanda əvəzetmə və arifmetik genişlənməyə bir fayl adı kimi şərh edilməzdən əvvəl tətbiq edilir. PATH , nəticələnən fayl adını axtarmaq üçün istifadə edilmir.
CDPATH
Cd əmri üçün axtarış yolu. Bu, cd əmri ilə təyin edilmiş təyinat kataloqları üçün göründüyü qovluqların bir-birinə bölünmüş siyahısıdır. Nümunə dəyər ".: ~: / Usr" dir.
COLUMNS
Seçim siyahıları çap edərkən terminal genişliyini təyin etmək üçün seçilmiş komanda ilə istifadə olunur. Avtomatik olaraq SIGWINCH əldə edilər.
COMPREPLY
Bəşin programlanabilir tamamlama qurğusu tərəfindən çağırılan bir kabuk funksiyası ilə mümkün olan tamamlamaları oxuyan bir sıra dəyişən (aşağıda Programlanabilir Tamamlama bax).
FCEDIT
Fc yerleşik komanda üçün default redaktor.
FİGORE
Fayl adı başa çatdıqda (bax aşağıda READLINE ) işarələmə zamanı məhdudlaşdırılmaq üçün bir kolonla ayrılmış sonuncu siyahı. FİJOROREdakı girişlərdən birinə uyğun gələn fayl adı eşleşen faylların siyahısından çıxarılır. Bir nümunə dəyər ".o: ~" dir.
GLOBIGNORE
Yol adı ayrılması ilə məhdudlaşdırılacaq filenames dəstini müəyyən edən bir kolonla ayrılmış siyahı siyahısı. Bir yol adı genişləndirilməsi nümunəsi ilə uyğunlaşdırılan fayl da GLOBIGNORE- da nümunələrdən birinə uyğun gəlirsə , bu, oyunların siyahısından çıxarılır.
HISTCONTROL
İzahsız bir dəyərə təyin edildikdə , bir boşluq ilə başlayan xətlər tarix siyahısına daxil edilmir. İtirilmiş olmayan bir dəyərə təyin edildikdə , son tarix xəttinə uyğun olan xətlər daxil edilmir. Yalansız bir dəyər, iki variantları birləşdirir. Unset və ya yuxarıda göstərilənlərdən başqa hər hansı bir dəyərə təyin edildikdə, ayrıştırıcı tərəfindən oxunan bütün xətləri tarix siyahısında qeyd olunur, HISTIGNORE dəyərinə tabedir . Bu dəyişən funksiyası HISTIGNORE tərəfindən əvəz edilmişdir. Çox satırlı birləşmənin ikinci və sonrakı xəttləri test edilmir və HISTCONTROL dəyərindən asılı olmayaraq tarixə əlavə olunur.
HISTFILE
Komanda tarixinin saxlandığı faylın adı (aşağıda TARİXİ bax). Varsayılan dəyər ~ / .bash_history . Etməmiş olsaydı, interaktiv qabıqdan çıxdıqda komanda tarixi yadda saxlanmır.
HISTFILESIZE
Tarixi faylda olan xətlərin maksimum sayı. Bu dəyişənə bir dəyər təyin edildikdə, tarix faylı xətlərin sayından çox olmamaq üçün zəruri hallarda kəsilir. Varsayılan dəyər 500'dir. İnteraktiv qabıq çıxdıqda yazıdan sonra tarix faylı da bu ölçüyə qədər kəsilir.
HISTIGNORE
Hansı komanda xətlərinin tarix siyahısında saxlanılacağına qərar vermək üçün istifadə olunan nümunələrin kolonla ayrılmış siyahısı. Hər bir model xəttin əvvəlində anchored və tam xətt uyğun olmalıdır (heç bir örtük ' * ' əlavə olunur). HISTCONTROL tərəfindən göstərilən çeklər tətbiq edildikdən sonra hər bir model xəttə qarşı test edilir. Normal qabığa uyğunluq simvoluna əlavə olaraq ` & 'əvvəlki tarix xəttinə uyğun gəlir. ' & ' bir terslik istifadə edərək qaça bilər; bir matç cəhd etməzdən əvvəl ters istiqamətdə çıxarılır. Çox satırlı birləşmənin ikinci və sonrakı xəttləri test edilmir və HISTIGNORE dəyərindən asılı olmayaraq tarixə əlavə olunur.
HISTSIZE
Komanda tarixində xatırlanacaq əmrlərin sayı (aşağıda TARİXİ bax). Standart dəyər 500'dir.
EV
Cari istifadəçinin ev qovluğu; cd builtin komandasının default argumenti. Bu dəyişənin dəyəri də tilde genişləndirilməsi həyata keçirilir.
HOSTFILE
Shell bir hostname tamamlamaq lazımdır zaman oxumaq lazımdır / etc / host kimi eyni formatda bir fayl adını ehtiva edir. Mümkün hostname tamamlamalarının siyahısı qabarit çalışırken dəyişdirilə bilər; dəyəri dəyişildikdən sonra növbəti dəfə hostname tamamlanmaya cəhd edilir, bash yeni faylın məzmununu mövcud siyahıya əlavə edir. HOSTFILE müəyyən edildikdə , lakin dəyəri yoxdur, bash , mümkün hostname tamamlamaları siyahısını əldə etmək üçün / etc / hosts oxumağa çalışır. HOSTFILE unset halda, hostname siyahısı təmizlənir.
IFS
Genişlənmədən sonra söz bölməsində istifadə edilən və daxili oxumaq əmri ilə sözləri satırlara bölmək üçün istifadə edilən Də Dəyişən Separator . Standart dəyər '`
IGNOREEOF
EOF xarakterini tək giriş kimi əldə etməklə interaktiv qabığın hərəkətini nəzarət edir. Əgər müəyyən edilirsə, bu dəyər bash çıxışından əvvəl giriş xəttində ilk simvollar kimi yazılmalı olan ardıcıl EOF simvollarının sayıdır. Dəyişən var, lakin rəqəmsal dəyərə malik deyilsə və ya dəyəri yoxdursa, u mənim dəyər 10-a bərabərdir. Əgər mövcud deyilsə, EOF girişin sonunu qabığa bildirir.
INPUTRC
Readline başlanğıc faylının fayl adı, ~ / .inputrc-in əvəzini ləğv edir (aşağıdakı READLINE-ə baxın).
LANG
LC_ ilə başlayan dəyişən ilə xüsusi seçilməyən hər hansı bir kateqoriya üçün yerli kateqoriya müəyyən etmək üçün istifadə olunur .
LC_ALL
Bu dəyişən LANG və başqa bir LC_ dəyişəninin yerini təyin edən bir dəyərin əvəzini ləğv edir.
LC_COLLATE
Bu dəyişən yolname genişlənməsinin nəticələrini çeşidləyərkən istifadə olunan harmanlama qaydasını müəyyənləşdirir və aralıq ifadələrin, ekvivalentlik siniflərinin davranışını və yol adı genişləndirilməsi və desen eşleme içində ardıcıllıqla ardıcıllığı müəyyənləşdirir.
LC_CTYPE
Bu dəyişən, simvolun şərhini və yolun adı genişləndirilməsi və desen eşleme içərisində xarakter siniflərinin davranışını müəyyənləşdirir.
LC_MESSAGES
Bu dəyişən, əvvəllər ikiqat qiymətli lövhələri bir $ ilə əvəz etmək üçün istifadə olunan locale müəyyən edir.
LC_NUMERIC
Bu dəyişən sayı formatlaması üçün istifadə olunan yerli kateqoriya müəyyənləşdirir.
LİNE
Seçim siyahılarının çap olunması üçün sütun uzunluğunu müəyyən etmək üçün seçilmiş komanda ilə istifadə olunur. Avtomatik olaraq SIGWINCH əldə edilər.
Bu parametrenin bir fayl adı təyin olunduqda və MAILPATH değişkeni təyin edilmədikdə, bash istifadəçini təyin olunan faylda poçtun gəlməsini bildirir.
MAILCHECK
Poçt üçün bash çeklərini necə tez-tez (saniyədə) müəyyənləşdirir. Sifariş 60 saniyədir. Məktubu yoxlamaq üçün vaxt gəldikdə, qabıq birbaşa sorğu göstərmədən əvvəl bunu edir. Bu dəyişən müəyyən edildikdə və ya sıfırdan çox və ya bir ədədə bərabər olmayan bir dəyərə təyin edildikdə, kabuk poçt yoxlanmasını aradan qaldırır.
MAILPATH
Məktubda yoxlanılacaq fayl adlarının kolonla ayrılmış siyahısı. Məktubun xüsusi bir faylda gəldiyi zaman çap olunacaq mesaj, faylın ismini "?" Ilə bölüşdürməklə müəyyən edilə bilər. Mesajın mətnində istifadə edildikdə, $ _ mövcud poçt faylının adına genişlənir. Məsələn:
MAILPATH = '/ var / mail / bfox "Sizin poçtunuz var": ~ / shell-mail? "$ _ Mail var!"'
Bash bu dəyişən üçün u mənim dəyər təmin edir, lakin istifadə edən istifadəçi poçt fayllarının yeri sistemə asılıdır (məsələn, / var / mail / $ USER ).
OPTERR
1-ə qədər təyin edildikdə, bash getopts builtin komanda tərəfindən yaradılan səhv mesajları göstərir (aşağıdakı SHELL BUILTIN COMMANDS bax). OPTERR hər dəfə qabığın vurulduğu və ya bir kabuk skripti icra edildikdə 1-ə qədər başlatılır.
PATH
Komanda üçün axtarış yolu. Çərçivənin əmrləri üçün göründüyü qovluqların ikitərəfli bir siyahısıdır ( aşağıda COMMAND EXECUTION bax). Standart yol sistemdən asılıdır və bash-i yükləyən administrator tərəfindən müəyyən edilir. Ümumi dəyər: / usr / gnu / bin: / usr / local / bin: / usr / ucb: / bin: / usr / bin :. ''.
POSIXLY_CORRECT
Bu dəyişən başlanğıcda ətraf mühitdə olarsa , başlanğıc fayllarını oxuduğunuzda - posix çağırma seçimi təmin edildikdən sonra qabıq posix rejimi daxil olur. Kabuğu işləyərkən müəyyən edildiyi təqdirdə, bash posix rejimi verir, sanki əmr -o posix yerinə yetirildi.
PROMPT_COMMAND
Hər bir ilkin sorğu verməkdən öncə, dəyər əmr olaraq yerinə yetirilir.
PS1
Bu parametrenin dəyəri genişlənir (aşağıya baxın) və birincil isti simli kimi istifadə olunur. Varsayılan dəyər `` \ s- \ v \ $ '' dir.
PS2
Bu parametrenin dəyəri PS1- də olduğu kimi genişlənir və ikincil istək simli kimi istifadə olunur. Varsayılan: `` > ''.
PS3
Bu parametrenin dəyəri seçki əmri üçün sorğu kimi istifadə olunur (baxın SHELL GRAMMAR ).
PS4
Bu parametrenin dəyəri PS1- də olduğu kimi genişlənir və hər bir komanda bash ekranı bir icra izi zamanı göstərilir. PS4'ün ilk xarakteri, bir çox səviyyəyə indirection göstərmək üçün zərurət olduqda bir neçə dəfə təkrarlanır. Varsayılan'` + '' dir.
TIMEFORMAT
Bu parametrenin dəyəri, boru kəmərləri üçün vaxtı haqqında məlumatların zamanla qorunan sözlərlə necə göstərildiyini göstərən format string olaraq istifadə olunur. % Xarakter bir vaxt dəyərinə və ya digər məlumatlara genişlənmiş bir qaçış sırasını təqdim edir. Qaçış ardıcıllığı və onların mənaları aşağıdakılardır: braces isteğe bağlı hissələrini ifadə edir.
%%
A literal % .
% [ p ] [l] R
Saniyə saniyə.
% [ p ] [l] U
İstifadəçi rejimində sərf edilən CPU saniyələrinin sayı.
[ p ] [l] S
Sistem rejimində sərf edilən CPU saniyələrinin sayı.
P
CPU nisbəti (% U +% S) /% R olaraq hesablanır.
İsteğe bağlı p həssaslıq göstərən bir rəqəm, ondalık nöqtədən sonra kəsik rəqəmlərin sayıdır. 0 dəyəri bir decimal point və ya fraksiyanın çıxmasına səbəb olur. Ondalık nöqtədən sonra ən çox üç yer müəyyən edilə bilər; 3-dən böyük p dəyərləri 3-ə dəyişdirilir. Əgər p göstərilməyibsə, 3 dəyəri istifadə olunur.
İstiqamət l m MM m SS- in dəqiqəsi də daxil olmaqla, daha uzun formatı müəyyənləşdirir. FF s. P dəyəri fəslin daxil olub-olmamasını müəyyən edir.
Bu dəyişən müəyyən edilmədikdə, bash $ '\ nreal \ t% 3lR \ nuser \ t% 3lU \ nsys% 3lS' dəyəri olduğu kimi fəaliyyət göstərir. Qiymət null olarsa, heç bir vaxt məlumatı göstərilmir. Format string göstərildikdə ardıcıl bir satır əlavə olunur.
TMOUT
Sıfırdan böyük bir dəyərə təyin edildikdə , TMOUT oxumaq üçün hazırlanan zamanlama kimi qəbul edilir. Seçim əmri, girişdən bir terminaldən gələndə TMOUT saniyəsindən sonra gəlməyincə sona çatır. Interaktiv bir qabıqda, dəyər birincil soruşduqdan sonra giriş üçün gözləmək üçün saniyə sayıldığı kimi şərh edilir. Bürc , giriş gəlmədikdə saniyənin sayını gözlədikdən sonra sona çatır.
auto_resume
Bu dəyişən, qabığın istifadəçi və iş nəzarəti ilə necə əlaqə qurduğunu nəzarət edir. Bu dəyişən müəyyən edildikdə, təkrarlanan təkrarlanan sadə komutlar, mövcud iş yerlərinin yenidən bərpası üçün namizəd kimi qəbul edilir. Heç bir qeyri-müəyyənlik yoxdur; yazılmış simli ilə başlayan birdən çox iş varsa, ən son əldə edilən iş seçilir. Durdurulmuş bir işin adı , bu kontekstdə, onu başlamaq üçün istifadə olunan komanda xətti. Qiymətə tam olaraq təyin edildikdə, təchiz edilmiş simli dəqiq işin adına uyğun olmalıdır; substrinqə təyin edildikdə, təchiz edilmiş simli dayandırılmış işin bir substringinə uyğun olmalıdır. Substrinq dəyəri % ilə müqayisədə funksionallığı təmin edir ? iş identifikatoru (aşağıda BİOQ CONTROL bax). Hər hansı digər dəyərə təyin edildikdə, təchiz edilmiş simli dayandırılmış işin adının ön adı olmalıdır; bu % iş identifikatoruna oxşar funksionallığı təmin edir.
hıçqırıqlar
Tarixi genişləndirmək və tokenization (aşağıda TARİXİ EXPANSYON bax) nəzarət iki və ya üç simvol. Birinci xarakter tarixin genişləndirilməsi xarakteri, tarixin genişləndirilməsinin başlanğıcını səciyyələndirən xarakterdir . '. İkinci xarakter, əvvəlki komandanin yenidən işlədilməsi üçün stenar olaraq istifadə edilən və komanda başqa bir simli əvəz edən sürətli əvəzetmə xarakteridir. Varsayılan ' ^ ' dir. İsteğe bağlı üçüncü xarakter, xəttin qalığının bir sözün birinci xarakteri, normal olaraq ' # ' olduğu halda, bir şərh olduğunu göstərən xarakterdir. Tarixi şərh xarakteri, tarixin dəyişdirilməsini xətt üzrə qalan sözlər üçün atılmasına səbəb olur. Şübhəsiz ki, qəfəs parserin xəttin qalan hissəsinə bir şərh kimi davranmasına səbəb olmayacaqdır.
Diziler
Bash bir ölçülü sıra dəyişənləri təmin edir. Hər hansı dəyişən bir sıra kimi istifadə edilə bilər; bəyan edildiyi yer açıq şəkildə bir sıra elan edəcək. Bir sıra ölçüsündə maksimum həddi yox, üzvlərin birbaşa indeksləşdirilməsi və ya təyin edilməsi tələbi yoxdur. Sütanlar tamsayılar vasitəsilə endekslenir və sıfır əsaslıdır.
Sintaksis adı [ subscript ] = dəyərindən istifadə etmək üçün hər hansı bir dəyişən təyin edildikdə bir sıra avtomatik olaraq yaradılır. Alt indeks , sıfırdan çox və ya bərabər bir sıra qiymətləndirməli olan aritmetik ifadə kimi qəbul edilir. Bir sıra açıq şəkildə elan etmək üçün, elan edin- adı (aşağıda SHELL BUILTIN COMMANDS bax). bəyan - adı [ subscript ] də qəbul edilir; subscript məhəl qoymur. Bəyan edən və oxunan yerlərdə istifadə edilən xüsusiyyətlər bir sıra dəyişən üçün müəyyən edilə bilər. Hər bir xüsusiyyət bir sıra bütün üzvlərinə aiddir.
Sütunlar hər bir formanın [ subscript ] = string olduğu form adının = ( dəyər 1 ... dəyər n ) birləşmə tapşırıqlarını istifadə etmək üçün təyin olunur. Yalnız simli tələb olunur. İstiqamətli brackets və subscript verilirsə, o indeks təyin olunur; əks halda təyin olunan elementin indeksi indekslə birlikdə birinə təyin edilmiş son indeksdir. İndeksləşmə sıfırdan başlayır. Bu sözdizim də yerleşik elan ilə qəbul edilir. Fərdi array elementləri yuxarıdakı adı [ subscript ] = dəyər sintaksisini istifadə etmək üçün təyin oluna bilər.
Unset yerleşik dizileri məhv etmək üçün istifadə olunur. unset adı [ subscript ] dizin subscriptində serial elementi məhv edir. unset adı , burada adı bir sıra, və ya unset adı [ subscript ], burada subscript * və ya @ , bütün array aradan qaldırır.
Bəyannamə , yerli və oxunan yerlərdə hər biri bir sıra göstərmək üçün bir- a variantını qəbul edir. Oxunan yer standart girişdən bir diziyə oxunan sözlərin siyahısını təyin etmək üçün bir- a seçimini qəbul edir. Set və bəyan edilmiş yerlər, array dəyərlərini tapşırıq kimi təkrar istifadə etməyə imkan verən bir şəkildə göstərirlər.
EXPANSION
Genişlənmə sözləri bölündükdən sonra əmr satırında həyata keçirilir. Yeddi növ genişləndirilmişdir: brace genişləndirilməsi , tilde genişləndirilməsi , parametr və dəyişən genişləndirmə , komanda əvəzi , aritmetik genişləndirmə , söz bölməsi və yolun genişləndirilməsi .
Genişlənmə sırası: brace genişləndirilməsi, tilde genişləndirilməsi, parametr, dəyişən və aritmetik genişlənmə və komanda əvəzi (soldan sağa düzəldilmişdir), söz bölməsi və yolun genişləndirilməsi.
Onu dəstəkləyən sistemlərdə əlavə bir genişləndirmə var: proses əvəz .
Brace genişləndirilməsi
Brace genişləndirilməsi , özbaşına bantların yarana biləcəyi bir mexanizmdir. Bu mexanizm yolun genişləndirilməsinə bənzəyir, lakin yaradılan fayl adları mövcud deyildir. Genişletilmiş kalıplar üçün nümunələr isteğe bağlı bir preambulun formasını alırlar, sonra cüt birləşmələr arasında bir sıra virgülle ayrılmış strings və ardından isteğe bağlı postScript ilə birləşirlər . Ön sözcük braces içərisində olan hər bir simvolun prefektinə yerləşdirilir və postscript sonra yaranan hər bir dize əlavə olunur, soldan sağa genişlənir.
Brace genişlənmələri iç içə bilər. Hər genişlənmiş simli nəticəsi sıralanmamışdır; soldan sağa düzəldilmişdir. Məsələn, { d, c, b } e 'ade ace abe' ye genişlənir.
Brace genişləndirilməsi hər hansı digər genişləndirmədən əvvəl həyata keçirilir və nəticədə digər genişlənmələrə xüsusi olan hər hansı bir simvol saxlanılır. Bu, həqiqətən, mətndir. Baş , genişlənmə kontekstində və ya kənarları arasında olan mətnə sintaktik şərh etməz.
Bu konstruksiya, ümumiyyətlə, yaradılan strinqlərin ümumi prefiksi yuxarıda göstərilən nümunədən daha uzun olduqda, stenar kimi istifadə olunur:
mkdir / usr / local / src / bash / {eski, yeni, dist, bugs}
və ya
chown kökü /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}
Brace genişləndirilməsi, sh'nin tarixi versiyaları ilə uyğunsuzluq yaradır. bir sözün bir hissəsi kimi göründükdə xüsusi açılış və ya bağlanma şifrələrini müalicə etmir və onları çıxışda qoruyur. Bəş brace genişləndirilməsi nəticəsində sözlərdən braces aradan qaldırır. Məsələn, {1,2} faylına daxil edilən bir söz birbaşa çıxdıqda görünür. Eyni sözcük bash tərəfindən genişləndikdən sonra file1 file2 kimi çıxış edir. Sh ilə sıx uyğunluq tələb olunursa , + B seçimi ilə bash başlamaq və ya B komandası ilə + B seçimi ilə təyin olunmuş komanda (bax aşağıda SHELL BUILTIN KOMANDALAR ) baxın.
Tilde genişləndirilməsi
Bir sözcük qeyd edilməmiş tilde xarakterindən ( ~ ~ ) başlamışsa, ilk unquoted çatlardan əvvəlki bütün simvollar (və ya bütün simvollar, unquoted köçürülməmiş olduqda) bir tilde-prefiks hesab olunur. Tilde-prefiksindəki simvollardan heç biri qeyd edilmirsə, tildən sonra tilde-prefiksindəki simvollar mümkün bir giriş adı kimi qəbul edilir. Bu giriş adı null simli olduqda, tilde, shell parametrinin HOME parametrinin dəyəri ilə əvəz olunur. ANA SƏHİFƏ silinsə, qabığını yerinə yetirən istifadəçinin ev qovluğu yerinə əvəz olunur. Əks halda, tilde-prefiks müəyyən giriş adı ilə əlaqəli ev qovluğu ilə əvəz olunur.
Tilde-prefiks bir '~ +' ise, PWD'nin kabuk değişkeninin değeri tilde-prefiksinin yerini alır. Tilde-prefiks bir '~ -' olarsa , OLDPWD'nin qabığının dəyəri, əgər varsa, əvəz edilir. Tilde-prefiksindəki tildən sonra olan simvollar bir sıra N-dan ibarətdirsə, seçilmiş bir '+' və ya `- 'tərəfindən prefiks göstərildikdə, tilde-prefiks göstərilir ki, göstərilir bir dəlil kimi tilde-prefiks ilə çağırılan dirs inşa tərəfindən. Tilde-prefiksindəki tildən sonra olan simvollar aparıcı '+' və ya `olmadan bir ədəddən ibarətdirsə, '+' qəbul edilir.
Giriş adı etibarsızdırsa və ya tilde genişləndirilməsə, söz dəyişməzdir.
Hər bir dəyişən tapşırıq, aşağıdakılardan sonra dərhal alınmamış tilde-prefiksləri üçün yoxlanılır : və ya = . Bu hallarda tilde genişləndirilməsi də həyata keçirilir. Nəticədə, PATH , MAILPATH və CDPATH -a tapşırıqlarda tildən olan fayl adlarını istifadə edə bilər və kabuk genişlənmiş dəyəri təyin edir.
Parametr genişləndirilməsi
' $ ' Xarakteri parametr genişləndirilməsi, komanda əvəz və ya aritmetik genişləndirməni təqdim edir. Genişletilecek olan parametr adı və ya simvolu əlavə olaraq əlavə edilə bilər, lakin opsiyanın bir hissəsi kimi şərh edilə biləcəyi təqdirdə, dəyişənləri dəyişəndən qorunmaq üçün xidmət edir.
Braces istifadə edildikdə, eşleşen bitiş brace 'ters eğik çizgiden ya da alıntılanmış bir dize içinde kaçınılmayan ilk' } 'dir ve katıştırılmış bir aritmetik genişleme, komanda değiştirme ya da paramer genişlemesi içinde deyil.
Parametrin dəyəri əvəz olunur. Parçalar parametr birdən çox rəqəmli ilə bir mövqeləri parametr olduqda və ya parametrini onun adının bir hissəsi kimi şərh edilməməsi lazım olan bir xarakterlə təqlid edildikdə tələb olunur.
Aşağıdakı hallarda hər bir sözdə tilde genişləndirilməsi, parametr genişləndirilməsi, komanda əvəzetmə və aritmetik genişləndirilməyə tabedir. Substrinq genişlənməsini yerinə yetirmədikdə, unset və ya null olan bir parametr üçün bash testləri; kolonunu söndürmək yalnız bir parametr üçün yoxlanılmayan bir testdir.
Varsa dəyərlərdən istifadə edin . Parametr qoyulmadıqda və ya null olarsa, sözün genişlənməsi əvəz olunur. Əks halda parametr dəyəri əvəz olunur.
Varsa dəyərləri təyin edin . Parametr qoyulmamış və ya null olarsa, sözün genişləndirilməsi parametr təyin edilir. Parametrin dəyəri daha sonra əvəz edilmişdir. Konumsal parametrlər və xüsusi parametrlər bu şəkildə təyin edilə bilməz.
Null və ya Unset halda göstərilən səhv . Parametr null və ya açılmamışsa, sözün (və ya söz olmadığı halda bir mesajın) genişləndirilməsi standart səhvlərə yazılır və interaktiv deyilsə, qəfəs çıxır. Əks halda parametr dəyəri əvəz olunur.
Alternativ dəyər istifadə edin . Parametr null və ya unset halda, heç bir şey əvəz deyil, əks halda sözün genişləndirilməsi əvəz olunur.
İsmləri prefiks ilə başlayan və IFS xüsusi dəyişəninin birinci xarakteri ilə ayrılan dəyişənlərin adlarına genişlənir.
Parametr dəyərinin simvol uzunluğu əvəz olunur. Parametr * və ya @ olduqda, əvəz edilmiş dəyər mövqelər parametrlərinin sayıdır. Parametr , * və ya @ tərəfindən subcripted bir sıra adı olduqda, dəyişdirilmiş dəyər array elementlərin sayıdır.
Söz , yolname genişlənməsində olduğu kimi bir model çıxarmaq üçün genişlənir. Nümunə parametr dəyərinin başlanmasına uyğun olarsa, genişləndirmənin nəticəsi parametrlərin ən qısa uyğunluq modelinə ('' # '') və ya ən uzun eşleme modelinə (" ## " 'halda) silindi. Parametrdə @ və ya * olduğu təqdirdə, nümunə aradan qaldırılması əməliyyatı hər bir mövqelər parametrinə öz növbəsində tətbiq edilir və genişləndirilməsi nəticəsiz siyahıdır. Parametrdə @ və ya * ilə subscripted bir sıra dəyişən varsa, nümunə aradan qaldırılması əməliyyatı sırası hər bir üzvü üçün tətbiq edilir və genişləndirilməsi nəticələnən siyahıdır.
Söz , yolname genişlənməsində olduğu kimi bir model çıxarmaq üçün genişlənir. Nümunə parametr genişlənmiş dəyərinin arxa hissəsinə uyğun olarsa, genişləndirmənin nəticəsi parametrlərin genişləndirilmiş dəyəridir, ən qısa uyğun eşleme nümunəsi ('` % ' 'halda) və ya ən uyğun eşleme nümunəsi (` ` % % 'halda) silindi. Parametrdə @ və ya * olduğu təqdirdə, nümunə aradan qaldırılması əməliyyatı hər bir mövqelər parametrinə öz növbəsində tətbiq edilir və genişləndirilməsi nəticəsiz siyahıdır. Parametrdə @ və ya * ilə subscripted bir sıra dəyişən varsa, nümunə aradan qaldırılması əməliyyatı sırası hər bir üzvü üçün tətbiq edilir və genişləndirilməsi nəticələnən siyahıdır.
Nümunə , patname genişlənməsində olduğu kimi bir model çıxarmaq üçün genişlənir. Parametr genişlənir və onun dəyərinə qarşı ən çox uyğunluq simvolu ilə əvəz olunur. İlk formada yalnız ilk matç yerini alır. İkinci formada, bütün matçların matçları simli ilə əvəzlənir. Pattern # ilə başlayırsa, parametr genişlənmiş dəyərinin başında uyğun olmalıdır. Pattern % ilə başlayırsa, parametr genişlənmiş dəyərinin sonunda uyğun olmalıdır. Nöqtə null olarsa, desenli pasajlar silinir və aşağıdakı nümunə istisna edilə bilər. Parametrdə @ və ya * olduğu təqdirdə, əvəzləmə əməliyyatı hər bir mövqelər parametrinə öz növbəsində tətbiq edilir və genişləndirilməsi nəticələr siyahısından alınır. Parametrdə @ və ya * ilə subscripted bir sıra dəyişən varsa, əvəzləmə əməliyyatı array hər bir üzvü üçün öz növbəsində tətbiq edilir və genişləndirilməsi nəticəsidir.
Command Substitution
Command substitution əmr adını əvəz etmək üçün bir komandanın çıxışını təmin edir. İki formadır:
$ ( əmr )
və ya
` komanda`
Baş komanda yerinə yetirərək genişləndirməni yerinə yetirir və komandanın standart çıxışıyla komanda əvəzini əvəz edir. Daxili yeni satır silinməz, ancaq söz bölməsində qaldırılar. Komanda əvəzi $ (cat fayl ) ekvivalent, lakin daha sürətli $ (< fayl ) ilə əvəz edilə bilər.
Əvəzedicinin köhnə tərzi arxiv formu istifadə edildikdə, backslash $ , ` , və ya \ sonra təqib edildiyi istisna olmaqla, hərfi mənasını saxlayır. Bir bükülmə ilə əvəzlənməyən ilk backquote komanda əvəzini ləğv edir. $ ( Əmr ) formasını istifadə edərkən, parantezlər arasındakı bütün simvollar əmri təşkil edir; heç biri xüsusi olaraq müalicə edilmir.
Komanda əvəzləri içəri yerləşdirilə bilər. Arka sətirli formanı istifadə edərkən yuva içərisində daxili arxa qatlardan qaçışlar.
Əvəzetmə ikiqat qiymətlərlə görünsə, nəticədə söz bölüşdürmə və yol məlumatının genişləndirilməsi aparılmır.
Aritmetik genişləndirilməsi
Aritmetik genişlənmə bir aritmetik ifadənin qiymətləndirilməsinə və nəticənin dəyişdirilməsinə imkan verir. Aritmetik genişləndirilməsi üçün format:
$ (( ifadə ))
İfadə ifadəsi ikiqat sitat daxilində olduğu kimi qəbul edilir, lakin parantez içərisində ikiqat qiymət xüsusi olaraq müalicə edilmir. Sözügedən bütün simvollar parametr genişləndirilməsi, simli genişləndirilməsi, komanda əvəzetmə və sütun çıxarılmasına məruz qalır. Aritmetik əvəzlər içəri yerləşdirilə bilər.
Qiymətləndirmə aşağıda göstərilən qaydalara uyğun olaraq həyata keçirilir: ARITHMETIC DEFINITION . İfadə etibarsız vəziyyətdə, bash , qüsurları göstərən bir mesaj yazır və heç bir əvəz meydana gəlməz.
Proses əvəzi
Proses əvəzi adlandırılmış boruları dəstəkləyən sistemləri ( FIFO ) və ya açıq faylları adlandırmaq üçün / dev / fd metodu ilə dəstəklənir. <( Siyahı ) və ya > ( siyahısı ) formasını alır. Proses siyahısı FIFO- ya və / dev / fd- də birləşdirilmiş giriş və ya çıxış ilə idarə olunur. Bu faylın adı genişlənmə nəticəsində cari əmr üçün bir arqument kimi qəbul olunur. >> ( Siyahı ) şəklində istifadə edilərsə, faylya yazma siyahısı üçün giriş təmin edəcəkdir. <( List ) formu istifadə edildikdə, bir arqument kimi verilən fayl siyahının çıxışını əldə etmək üçün oxunmalıdır.
Mövcud olduqda proses əvəzi parametr və dəyişən genişləmə, komanda əvəzi və aritmetik genişləndirmə ilə eyni vaxtda həyata keçirilir.
Sözləri parçalamaq
Kabuk, parametr genişləndirilməsi, komanda əvəzetməsi və aritmetik genişləndirmənin nəticələrini tarar, söz bölməsində ikiqat qiymətlərlə meydana gəlmədi.
Qabıq IFS-in hər bir xarakterini məhdudlaşdırıcı kimi qiymətləndirir və digər genişlənmələrin nəticələrini bu simvollar üzərində sözlərə ayırır. IFS müəyyən olunmamışsa və ya onun dəyəri
Aydın olmayan boşluqlar ( "" və ya '' ) saxlanılır. Heç bir dəyərsiz olan parametrlərin genişləndirilməsindən irəli gələn örtük olmayan null arqumentlər silinir. Heç bir dəyəri olmayan bir parametr ikiqat tırnakların içərisində genişlənməsə, null arqument nəticə verir və saxlanılır.
Heç bir genişlənmə olmadıqda, heç bir bölmə aparılmadığını unutmayın.
Pathname Expansion
Söz bölməsindən sonra, -f variantları müəyyən edildikdə, bash hər bir sözü simvollar üçün tarar * ,? və [ . Bu simvollardan biri görünsə, sözü nümunə sayılır və nümunə uyğun olan əlifba sırası ilə təyin edilmiş fayl adları ilə əvəz olunur. Eşleşen fayl adları bulunamıyorsa və kabuk seçeneği nullglob aradan bırakılırsa, söz değişmeden qalır. Nullglob seçimi qurulduqda və heç bir uyğunluq tapılmadıqda söz çıxarılır. Shell variantının nocaseglob effektiv olsaydı , matça alfabetik xarakterlərə baxmayaraq yerinə yetirilir. Pathname genişləndirilməsi üçün bir model istifadə edildikdə, bir başlanğıcın başlanğıcında ''. '' Sətri və ya bir daraqdan dərhal sonra, qəfəs variantının dotglob qurulmadığı təqdirdə, eşqlə uyğunlaşdırılmalıdır. Bir yol adı eşleştiğinde, çizgi karakteri her zaman açıkça eşleştirilmelidir. Digər hallarda '`.' ' Xarakteri xüsusi olaraq müalicə edilmir. Nocaseglob , nullglob və dotglob qabıq variantlarının təsviri üçün SHELL BUILTIN COMMANDS altında aşağıdakı mağazanın təsviri baxın.
GLOBIGNORE shell dəyişən bir nümunəyə uyğun olan fayl adlarını məhdudlaşdırmaq üçün istifadə edilə bilər. GLOBIGNORE qurulduqda , GLOBIGNORE- da nümunələrdən birinə uyğun gələn hər bir uyğun fayl adı matçların siyahısından çıxarılır. GLOBIGNORE təyin olunduğunda belə fayl adları ``. '' Və `` `` '' hər zaman nəzərə alınmır. Buna baxmayaraq, GLOBIGNORE qəbulu dotglob qabığının seçimini təmin edir, buna görə də `` ` ilə başlayan digər fayl adları uyğun olacaq. ''. '' Ilə başlayan fayl adlarını məhdudlaşdırmaq üçün köhnə davranışı almaq üçün ``. * '' GLOBIGNORE'dakı nümunələrdən birini edin . GLOBIGNORE unset halda dotglob seçimi aradan qaldırılır.
Pattern Matching
Aşağıda təsvir olunan xüsusi nümunə simvollardan başqa bir modeldə görünən hər hansı bir xarakter özü ilə uyğun gəlir. NUL xarakteri bir nümunədə baş verməyəcək. Xüsusi nümunə simvolları, sözün əsl mənasında uyğunlaşması lazımdırsa, alınmalıdır.
Xüsusi nümunə simvolları aşağıdakı mənaları daşıyır:
*
Null simli daxil olmaqla hər hansı bir simli eşleşir.
?
Hər hansı bir xarakterə uyğunlaşır.
[...]
Əlavə olan simvollardan birinə uyğunlaşır. Bir tire ilə ayrılmış bir cüt simvol bir ifadə ifadə edir ; bu iki simvol arasında əhatə edən hər hansı bir xarakter, mövcud locale nin ardıcıllıq sırası və karakter dəsti istifadə edərək uyğunlaşdırılır. Birinci simvol [ a ! və ya bir hər hansı bir xarakterə əlavə edilməmişdir. Aralık ifadelerindeki karakterlerin sıralama sırası, ayarlanmışsa , mövcud locale ve LC_COLLATE shell değişkeninin değeri tarafından belirlenir. A - setdə ilk və ya sonuncu xarakter kimi daxil edilə bilər. A ], onu ilk seti daxil etməklə uyğunlaşdıra bilər.
[ Və ] daxilində, xarakter sinifləri POSIX.2 standartında müəyyən edilmiş aşağıdakı siniflərdən biri olan sinif [: class :] istifadə edərək müəyyən edilə bilər:
alnum alpha ascii blank cntrl rəqəmli rəqəm aşağı çap punct space yuxarı söz xdigit
Bir xarakter sinfi bu sinifə aid olan hər bir xarakterə uyğun gəlir. Sözü xarakter sinifində məktublar, rəqəmlər və xarakterlər eşidir.
[ Və ] içərisində, eyni cürbaşlıq ağırlığına malik olan bütün simvolları (cari yerli tərəfindən müəyyən edilmiş) c cədvəli cədvəlinə uyğun olan sintaksis [= c =] istifadə edərək ekvivalentlik sinfi müəyyən edilə bilər.
[ Və ] , sintaksis [. simvolu ] .
Iflgob qabığının seçimi shopt builtin istifadə edərək effektiv olsaydı , bir neçə geniş model eşleme operatoru tanınır. Aşağıdakı təsvirdə bir nümunə siyahısı , bir | ilə ayrılmış bir və ya daha çox nümunələrin siyahısıdır . Kompozit nümunələri aşağıdakı alt-nümunələrdən birindən və ya birdən çoxundan istifadə edilə bilər:
? ( nümunə siyahısı )
Verilən nümunələri sıfır və ya bir dəfə meydana çıxır
* ( nümunə siyahısı )
Verilən nümunələrin sıfır və ya daha çox ziddiyyətləri ilə uyğunlaşır
+ ( nümunə siyahısı )
Verilən nümunələrin bir və ya bir neçəsi ilə uyğunlaşır
@ ( nümunə siyahısı )
Verilən nümunələrdən tam olaraq uyğunlaşır
! ( nümunə siyahısı )
Verilən nümunələrdən başqa istənilən bir şeyə rast gəlinir
Sitatın çıxarılması
Əvvəlki genişlənmələrdən sonra, yuxarıdakı genişlənmələrdən birinə gətirib çıxara bilməyən simvolların, ' , və ' simvolların bütün qeyd edilməmiş görünüşləri silinir.
REDIRECTION
Komanda yerinə yetirilməmişdən əvvəl, giriş və çıxış qəfildən şərh olunan xüsusi qeyd ilə yönləndirilə bilər. Yeniden yönlendirme, mövcud shell icra mühiti üçün faylları açmaq və bağlamaq üçün də istifadə edilə bilər. Aşağıdakı redirection operatorları sadə komanda daxilində hər hansı bir yerdə əvvəl və ya görünə bilər və ya bir əmrə əməl edə bilər. Redirections, göründükləri sırada, soldan sağa doğru işlənir.
Aşağıdakı təsvirlərdə, fayl təsnifatı nömrəsi silinsə və yenidən yönlendirme operatorunun ilk xarakteri < , redirection standart girişi aid edir (fayl təsviri 0). Redirection operatorunun ilk xarakteri>> redirection standart çıxışa aiddir (fayl təsviri 1).
Aşağıdakı təsvirlərdə redirection operatorundan sonra sözü, əgər başqa cür qeyd edilməmişsə, şifrə genişləndirilməsi, tilde genişləndirilməsi, parametr genişləndirilməsi, komanda əvəzi, aritmetik genişləndirmə, sütun çıxarılması, yolun genişləndirilməsi və söz bölməsinə məruz qalır. Birdən çox sözə genişlənərsə, bash bir səhv bildirir.
Yenidən yönlendirme qaydası əhəmiyyətli olduğunu unutmayın. Məsələn, əmr
ls > dirlist 2 > & 1
komanda isə standart çıxış və standart səhvləri fayl çirkləndiricisi üçün yönləndirir
ls 2 > & 1 > dirlist
standard çıxışın çirkləndiriciyə yönlendirilməsindən əvvəl standart səhv standart çıxdığından , standart dağıdıcıya yalnız standart çıxışı yönəldir.
Bash , aşağıdakı redaksiyalarda istifadə edildikdə xüsusi olaraq bir neçə filename tutur:
/ dev / fd / fd
Fd etibarlı bir tamsayıysa, fd fayl identifikatoru təkrarlanır.
/ dev / stdin
Fayl təsviri 0 çoğaltılıb.
/ dev / stdout
Fayl təsviri 1 çoğaltılıb.
/ dev / stderr
Fayl descriptor 2 çoğaltılıb.
/ dev / tcp / host / port
Xatırlar bir etibarlı hostname və ya İnternet ünvanı və port bir tam nömrə nömrə və ya xidmət adı varsa, bash TCP bağlantısını müvafiq socket açmağa çalışır.
/ dev / udp / host / port
Xatırlı bir hostname və ya İnternet adresi və port bir tam nömrə nömrə və ya xidmət adı varsa, bash müvafiq bir yuvaya UDP bağlantısı açmağa çalışır.
Fayl açmaq və ya yaratmaq üçün uğursuzluq yönləndirmənin uğursuzluğa səbəb olur.
Girişə istiqamətləndirmə
Girişin yenidən yönəldilməsi, adının, fayl təsviri ndə oxumaq üçün açılacaq sözün genişlənməsindən və ya n göstərilməyibsə , standart girişin (fayl təsviri 0) açılmasına səbəb olur.
Girişi yenidən yönləndirmək üçün ümumi format:
[ n ] < söz
Rəqəmsal çıxışı
Çıxışın yönləndirilməsi adı n faylının təsvirinə yazılmaq üçün açılacaq sözün genişlənməsindən və ya n göstərilməyibsə , standart çıxışdan (fayl təsvirçisindən 1) olan faylya səbəb olur. Fayl yoxdursa, yaradılır; varsa, sıfır ölçüsü kəsilmişdir.
Yayının ötürülməsi üçün ümumi format:
[ n ] > söz
Yenidən yönlendirme operatoru>> və quraşdırılmış dəstəyə noclobber seçimi effektivdirsə, adı sözün genişlənməsindən nəticələnən və müntəzəm bir fayl olduğu təqdirdə, redirection baş verə bilməz. Yenidən yönlendirme operatoru > | , və ya redirection operator > və quraşdırılmış komanda üçün noclobber seçimi effektiv deyil, sözü olan fayl adı olsa belə redirection cəhd edilir.
Redirected Output əlavə
Bu modeldəki çıxış təkrarlanması, adının, fayl təsvirçisi n əlavə etmək üçün açılacaq sözün genişlənməsindən və ya n göstərilməyibsə , standart çıxışın (fayl təsvirçisi 1) nəticələndiyinə səbəb olur. Fayl yoxdursa, yaradılır.
Çıxış üçün ümumi format:
[ n ] >> sözü
Standart çıxış və standart xətaya yönləndirmə
Bash , standart çıxış (fayl təsvirçisi 1) və standart səhv çıxışı (fayl təsvirçisi 2) bu konstrukt ilə sözün genişlənməsi olan faylya yönəldilməsinə imkan verir.
Standart çıxış və standart səhvlərin yönləndirilməsi üçün iki format mövcuddur:
&> sözü
və
> & söz
İki formada, birinci seçimdir. Bu semantik olaraq bərabərdir
> söz 2 > & 1
Sənədlər
Bu tip təkrarlama cədvəl cari qaynaqdan oxumağı öyrədir, yalnız sözü olan bir xətt (arxa boşluqları olmayan) görünməyincə. Bu nöqtəyə qədər oxunan bütün xətləri sonra əmr üçün standart giriş kimi istifadə olunur.
Buradakı sənədlərin formatı:
<< [ - ] sözü buradakı sənəd dilimiter
Heç bir parametrenin genişləndirilməsi, komanda əvəzi, aritmetik genişləndirmə və ya yolun genişlənməsi sözlə yerinə yetirilir. Sözdəki hər hansı bir simvol alındıqda, məhdudlaşdırıcı sözün çıxarılmasının nəticəsidir və burada buradakı sənədlər genişlənməyib. Sözsüz deyilsə, buradakı sənədin bütün xətləri parametr genişlənməsi, komanda əvəzi və aritmetik genişləndirilməyə məruz qalır. Sonuncu vəziyyətdə, \
Yenidən yönlendirme operatoru << - , əgər bütün aparıcı sekme simvolları giriş xəttindən və məhdudlaşdırıcı olan xətadan silinir . Bu, buradakı sənədlərin təbii şəkildə tərtib edilməsinə imkan verir.
Burada Strings
Buradakı sənədlərin fərqli bir formasıdır:
<<< söz
Söz genişləndirilir və standart girişi əmrinə verilir.
Fayl təsvirlərini çoğaltıb
Yönləndirmə operatoru
[ n ] <& word
giriş fayl descriptorlarını kopyalamaq üçün istifadə olunur. Söz bir və ya daha çox rəqəmə genişlənirsə, n tərəfindən göstərilən fayl təsvirçisi həmin fayl descriptorunun surətidir. Sözdəki rəqəmlər giriş üçün açıq olan bir fayl təsvirini göstərmirsə, yenidən yönlendirme xətası baş verir. Sözü qiymətləndirirsə, - fayl nüsxəsi n bağlanır. Əgər n göstərilməyibsə, standart giriş (fayl təsviri 0) istifadə olunur.
Operator
[ n ] > & sözü
çoğaltılan çıxış faylı descriptorlarına bənzər şəkildə istifadə olunur. N göstərilməyibsə, standart çıxış (fayl təsviri 1) istifadə olunur. Sözdəki rəqəmlər çıxış üçün açıq olan bir fayl təsvirini göstərməsə, bir yeniden yönlendirme hatası meydana gəlir. Xüsusi bir vəziyyətdə, əgər n buraxılırsa və söz bir və ya daha çox rəqəmə genişlənməzsə, standart çıxış və standart səhv əvvəllər təsvir edildiyi kimi yenidən yönlendirilir.
Fayl Tanımlayıcılarının Taşınması
Yönləndirmə operatoru
[ n ] <& rəqəm -
Fayl tanımlayıcısı rəqəmini descriptor n və ya n göstərilməyibsə , standart girişi (fayl təsvirçisi 0) daşıyır. rəqəm n- ə çoğaldıqdan sonra qapalıdır.
Eynilə, yönləndirmə operatoru
[ n ] > & rəqəm -
n descriptor n fayl düsturu rəqəmi və ya n göstərilməyibsə , standart çıxış (fayl təsvirçisi 1) hərəkət edir.
Oxu və yazı üçün fayl təsvirçiləri açılması
Yönləndirmə operatoru
[ n ] <> sözü
adını açmaq üçün açılacaq olan faylın fayl təsvirində n və ya n qeyd edilmədiyi halda, fayl təsviri 0-da oxumaq və yazmaq üçün açılır. Fayl yoxdursa, yaradılır.
ALİASES
Aliaslar simvolun ilk sözü kimi istifadə edildikdə bir simvolu bir sözlə əvəz etməyə imkan verir. Kabuk, alias və unalias builtin əmrləri ilə müəyyənləşdirilmiş və açılmayan takma adların siyahısını saxlayır (baxın SHELL BUILTIN COMMANDS ). Hər komandanın ilk sözü, unquoted deyilsə, bir alias olub olmadığını yoxlamaq üçün yoxlanılır. Əgər belədirsə, bu söz, aliasın mətni ilə əvəz olunur. Alias adı və əvəzetmə mətni alias adının = ehtiva etməməsi istisna olmaqla, yuxarıda sadalanan metakarakteriyalar daxil olmaqla, hər hansı bir etibarlı kabuk girişini ehtiva edə bilər. Əvəzli mətnin ilk sözü aliaslar üçün sınanır, lakin genişlənən bir ada eyni olan bir söz ikinci dəfə genişlənməyib. Bu, məsələn, ls-F-lə ls ls ola bilər və bash özünü yeniləmə mətnini təkrar şəkildə genişləndirməyə çalışmır. Əgər alias dəyərinin son xarakteri boşsa, aliasdan sonra növbəti komanda sözü də alias genişləndirilməsi üçün yoxlanılır.
Aliaslar alias əmri ilə yaradılır və siyahıda verilir və unalias əmri ilə silinir.
Əvəzli mətndə argümanların istifadə edilməsi üçün heç bir mexanizm yoxdur. Mübahisələrə ehtiyac olduqda, qabıq funksiyası istifadə edilməlidir (aşağıda FUNKSİYA bax).
Expand_aliases shell opsiyonunu shopt istifadə edildikdə (buna görə SHELL BUILTIN KOMMANDALARI altında mağazanın təsvirinə baxın), əgər kabartma interaktiv olmadıqda, aliaslar genişlənməyib.
Aliasların müəyyənləşdirilməsi və istifadəsi ilə bağlı qaydalar bir qədər qarışıqdır. Bash həmişə bu xətt üzrə əmrlərdən birini icra etməzdən əvvəl ən az bir tam giriş xəttini oxuyur. Bir əmr oxunduqda deyil, icra edildikdə, aliaslar genişlənir. Buna görə, başqa bir komanda ilə eyni xəttdə görünən bir alias tərifi sonrakı giriş xətti oxunana qədər qüvvəyə minmir. Həmin xəttdə alias tərifi izləyən əmrlər yeni aliaslardan təsirlənmir. Bu davranış funksiyaları yerinə yetirərkən də problemdir. Bir funksiya tərifi işlədildikdə deyil, bir funksiya tərifi oxunduqda, aliaslar genişlənir, çünki bir funksiya tərifi özü bir mürəkkəb əmrdir. Nəticədə, funksiyada müəyyən edilmiş takma adlar funksiya yerinə yetirildikdən sonra mövcud deyildir. Təhlükəsiz olmaq üçün həmişə ayrı bir xəttdə alias tərifləri qoyun və mürəkkəb əmrlərdə alias istifadə etməyin.
Demək olar ki, hər məqsəd üçün, taxtalar qabıq funksiyaları ilə əvəz olunur.
FONKSİYALAR
SHELL GRAMMAR altında yuxarıda təsvir edilən kimi müəyyən edilmiş bir qabıq funksiyası, daha sonra icra üçün bir sıra əmr saxlayır. Bir kabuk funksiyasının adı sadə komanda adı olaraq istifadə edildikdə, bu funksiya adı ilə əlaqəli əmrlərin siyahısı yerinə yetirilir. Funksiyalar cari kabuğun kontekstində yerinə yetirilir; onları şərh etmək üçün heç bir yeni proses yaranmır (əksinə bu, bir shell scriptinin icrası ilə). Bir funksiya yerinə yetirildikdə, funksiyaya dair arqumentlər onun icrası zamanı mövqelər parametrləri olur. Xüsusi parametr # dəyişməni əks etdirmək üçün yenilənir. Konumsal parametr 0 dəyişməzdir. FUNCNAME dəyişən funksiyası yerinə yetirərkən funksiyanın adına təyin olunur. Shell icra mühitinin bütün digər aspektləri bir funksiya və onun arayanları ilə eynidır, istisna olmaqla, DEBUG tələsi (aşağıda SHELL BUILTIN əmrləri altında tikilən tələlərin təsviri bax) funksiya iz funksiyası verilmişdirsə ( aşağıda yerləşdirilən bəyannamənin təsviri bax).
Funksiyaya yerli olan dəyişənlər yerli inşa əmri ilə elan edilə bilər. Normal olaraq, dəyişənlər və onların dəyərləri funksiya və onun arayan arasında paylaşılır.
Daxili komanda iqtidarı bir funksiyada yerinə yetirilirsə, funksiya tamamlanır və funksiya funksiyasından sonra növbəti komanda ilə icra davam edir. Bir funksiya başa çatdıqda, mövqelər parametrləri və xüsusi parametr # dəyərləri funksiyanın icrası əvvəlində olan dəyərlərə bərpa olunur.
Funksiya adları və anlayışları, -f variantını elan edilmiş və ya yazı tipli yerleşik əmrlərə verilə bilər. Bəyan etmək və ya yazmaq üçün -F seçimi yalnız funksiya adlarını qeyd edəcəkdir. Funksiyalar ixrac edilə bilər, belə ki subshells avtomatik olaraq -f- seçim ilə müəyyənləşdirilmişdir.
Funksiyalar təkrarlana bilər. Təkrarlanan çağırışların sayına heç bir məhdudiyyət qoyulmur.
ARİMETİK DEĞERLENDİRME
Kabuk, aritmetik ifadələrin müəyyən şərtlər altında qiymətləndirilməsinə imkan verir (bax yerin komanda və aritmetik genişləndirilməsinə bax ). Qiymətləndirmə, sabitliyə görə tam ədəddə daşqın yoxluğu ilə həyata keçirilir, baxmayaraq ki, bölmə 0-da qapalı və səhv olaraq qeyd olunur. Operatorlar və onların üstünlüyü və birliyliyi C dilində olduğu kimi eynidır. Aşağıdakı operatorlar siyahısı bərabər prioritet operatorları səviyyələrinə qruplaşdırılır. Səviyyələr prioritetin azaldılması üçün verilmişdir.
id + + id -
dəyişən post-increment və post-decrement
+ + id - id
dəyişən əvvəlcədən artırma və əvvəlcədən azaldılması
- +
unary mənfi və artı
!! ~
mantıksal və bitməz inkar
**
exponentiation
* /%
çarpma, bölmə, qalıq
+ -
Bundan əlavə, çıxarma
<< >>
sol və sağ bitsə çevrilir
<=> = <>
müqayisə
==! =
bərabərlik və bərabərsizlik
Və
bitseyvə AND
^
bitwise eksklüziv VƏ
|
bitsey OR
&&
məntiqli və
||
məntiqi YA
expr ? expr : expr
şərti qiymətləndirmə
= * = / =% = + = - = << = >> = & = ^ = | =
tapşırıq
expr1 , expr2
vergül
Shell dəyişənləri operandlar olaraq icazə verilir; ifadənin qiymətləndirilməsi əvvəl parametr genişləndirilməsi həyata keçirilir. Bir ifadədə, shell dəyişənləri də parametr genişləndirilməsi sözdizimini istifadə etmədən adı ilə istinad edilə bilər. Bir dəyişənin dəyəri istinad edilən zaman bir aritmetik ifadə kimi qiymətləndirilir. Bir mərtəbə dəyişəninin bir ifadədə istifadə etmək üçün açılmış tamsayı xüsusiyyətinə ehtiyacı yoxdur.
Öncəki 0 ilə sabitlər sekiz ədədlər kimi şərh edilir. Önəmli 0x və ya 0X hexadecimal deməkdir. Əks halda nömrələr for [ base # ] n olur, burada əsas bazası 2 və 64 arasındakı decimal ədəddir və n əsasən bir nömrədir. Baza # sayılırsa, baz 10 istifadə olunur. 9'dan böyük rəqəmlər bu sıraya görə kiçik harflərlə, böyük harflərlə və @ ilə ifadə edilir. Baza 36-dan az və ya bərabər olduqda, kiçik və böyük harflər 10 və 35 arasında rəqəmləri təmsil etmək üçün birbaşa istifadə edilə bilər.
Operatorlar üstünlüyə görə qiymətləndirilir. Parantez içindəki ifadələr əvvəlcə qiymətləndirilir və yuxarıdakı qaydalara üstünlük verə bilər.
KONSEYİN İFADƏSİ
Şərti ifadələr [[ mürəkkəb əmr və test və [ faylın atributlarını sınamaq və simli və aritmetik müqayisə etmək üçün yerleşik əmrlər ] tərəfindən istifadə olunur. İfadələr aşağıdakı unary və ya ikili primerlərdən ibarətdir. Öncəklərdən birinə hər hansı bir fayl arqumenti / dev / fd / n formasıdırsa, fayl təsviri n yoxlanılır. Birincil fayllardan birinə fayl argumenti / dev / stdin , / dev / stdout və / dev / stderr , sırasıyla 0, 1 və ya 2 fayl təsvirçisidir.
- fayl
Fayl mövcud olduqda doğru.
-b fayl
Fayl mövcud olduqda və blok xüsusi fayldır.
-c fayl
Fayl mövcud olduqda və xüsusi bir fayl olduğu təqdirdə.
-d fayl
Fayl mövcud olduqda və bir qovluq olduğu doğru.
fayl
Fayl mövcud olduqda doğru.
-f fayl
Fayl mövcud olduqda və müntəzəm bir fayldır.
-g fayl
Fayl mövcud olduqda və qrup-id müəyyən edilir.
-h fayl
Fayl mövcud olduqda və simvolik bir link olduğu təqdirdə.
-k fayl
Fayl mövcud olduqda və onun `` yapışqan '' biti düzgündür.
-p fayl
Fayl mövcud olduqda və adlandırılmış bir boru (FIFO) olduqda doğru.
-r fayl
Fayl mövcud olduqda və oxunaqlıdır.
-s fayl
Fayl mövcud olduqda və sıfırdan böyük bir ölçüyə malikdir.
-t fd
Faylın təsviri fd açıq olduqda və terminə aiddir.
-u fayl
Fayl mövcud olduqda və onun set-user-id bit müəyyən edilir.
-w fayl
Fayl mövcud olduqda və yazılabilirdir.
-x fayl
Fayl mövcud olduqda və yerinə yetirilə bilər.
-O fayl
Fayl mövcud olduqda və effektiv istifadəçi idinə aiddir.
-G fayl
Fayl mövcud olduqda və effektiv qrup idinə aiddir.
-L fayl
Fayl mövcud olduqda və simvolik bir link olduğu təqdirdə.
-S faylı
Fayl varsa və bir yuva olduqda doğru.
-N fayl
Fayl mövcud olduqda və oxunduqdan sonra dəyişdirilmişdir.
file1 - nt file2
File1 daha yeni (dəyişiklik tarixinə görə) fayl2dən çoxsa və ya file1 və file2 olmadıqda doğru.
file1 - ot file2
File1 fayl2dən daha böyük olduqda və ya file2 və file1 olmadıqda doğru .
file1 -ef fayl2
File1 və file2 eyni cihaz və inode nömrələrinə istinad edərsə doğrudur.
-o optname
Shell variantının optname aktiv olduqda doğru. -o variantının təsviri altında yerləşdirilən qurğulara aid variantların siyahısını baxın.
-z simli
Sətirin uzunluğu sıfırdırsa doğrudur.
-n string
simli
Sətirin uzunluğu qeyri-sıfırdırsa doğrudur.
string1 == simli2
Sətirlər bərabər olduqda doğrudur. = POSIX uyğunluğuna görə == istifadə edilə bilər.
string1 ! = string2
Sətirlər bərabər olmadıqda doğrudur.
string1 < string2
String1, simli simvoldan əvvəlki lokal olaraq lksikoqrafik olaraq əvvəlcədən sıralanır .
string1 > string2
String1, string2-lərdən sonrakı lokal göstəricidən sonra sıralanır .
arg1 OP arg2
OP , -eq , -ne , -lt , -le , -gt və ya -q biridir . Bu aritmetik ikili operatorlar, arg1 bərabərdir, ardıcıl olduqda, az və ya daha az, arg2- dən çox və ya daha çox, bərabər olmayan bərabərdir. Arg1 və arg2 müsbət və ya mənfi tam ədədlər ola bilər.
BASIL KOMMUNİYA GENİŞLƏŞMƏSI
Sadə bir əmr edildikdə, mərtəbə aşağıdakı genişləndirmələri, tapşırıqları və redirections, soldan sağa həyata keçirir.
1. Parserin dəyişən tapşırıqlar (əmr adından əvvəl olanlar) kimi qeyd etdiyinə və redirections sonrakı emal üçün saxlanıldığı sözlər.
2. dəyişən tapşırıq və redirections olmayan sözlər genişləndirilir. Genişləndirildikdən sonra hər hansı sözlər qalırsa, ilk söz əmrin adı, qalan sözlər isə arqumentlərdir.
3.Redirections yuxarıda REDIRECTION altında təsvir edilir.
4. Hər bir dəyişkən təyinatda = sonra mətn dəyişənə təyin edilməzdən əvvəl tilde genişləndirilməsi, parametr genişləndirilməsi, komanda əvəzi, aritmetik genişləndirmə və sətirlərin aradan qaldırılmasına məruz qalır.
Heç bir komanda adı nəticəsi olmadıqda, dəyişən tapşırıqlar hazırkı kabuk mühitinə təsir göstərir. Əks halda, dəyişənlər yerinə yetirilən komandanın mühitinə əlavə olunur və cari kabuk mühitinə təsir göstərmir. Tapşırıqlardan hər hansı bir oxunuşlu dəyişənə bir dəyər təyin etməyə çalışırsa, səhv olur və əmr sıfır olmayan vəziyyətdən çıxır.
Heç bir komanda adı nəticəsi olmadıqda, redirections həyata keçirilir, lakin mövcud shell mühitinə təsir göstərmir. Yeniden yönlendirme hatası, komutun qeyri-sıfır statüyle çıkmasına neden olur.
Genişləndirildikdən sonra bir komanda adı varsa, icra aşağıda göstərildiyi kimi davam edir. Əks halda əmr çıxır. Genişləmələrdən birində komanda əvəzi varsa, komandanın çıxış vəziyyəti yerinə yetirilən son komanda əvəzinin çıxma vəziyyətidır. Komanda əvəzi olmadıqda, komanda sıfır statusu ilə çıxış edir.
KOMMUN YÜKLƏMƏSİ
Bir əmr sözlərə bölündükdən sonra sadə komanda və seçilmiş arqumentlərin siyahısı ilə nəticələnsə, aşağıdakı tədbirlər görülür.
Komanda adı boşluq içermiyorsa, qabıq onu tapmağa çalışır. Bu adı ilə bir qövs funksiyası varsa, bu funksiya FUNKSİYALARda yuxarıda təsvir olunduğu kimi çağırılır. Adı bir funksiyaya uyğun gəlmirsə, qabıq onu qabığın yerlərinin siyahısında axtarır. Bir matç tapıldığı təqdirdə, bu yerə çağırılır.
Ad, nə bir qabıq funksiyası, nə də bir yerleşim deyilsə və heç bir bükülməzsə, bash , PATH'nin hər bir elementini bu adla yürütülebilir fayl olan bir kataloq üçün axtarış edir. Bash , yürütülebilir faylların tam yollarını yadda saxlamaq üçün bir hash masası istifadə edir (aşağıda SHELL BUILTIN COMMANDS altında hash bax). PATH- də kataloqların tam axtarışı yalnız komanda hash masasında tapılmadıqda həyata keçirilir. Axtarış müvəffəqiyyətsiz olarsa, qabıq bir səhv mesajı yazır və 127-nin çıxma vəziyyətini qaytarır.
Axtarış müvəffəqiyyətli olarsa və ya komanda adı bir və ya birdən çox sancaqlar içərsə, qabaqlanan proqram ayrı bir icra mühitində həyata keçirilir. Ardıcıl 0, verilən ad üçün təyin edilir və qalan arqumentlər əmr üçün verilmiş arqumentlərə təyin olunur.
Fayl yürütülebilir formatda olmadığı üçün bu icra başarısız olursa və fayl bir qovluq deyilsə, kabuk komutları olan bir fayl kabuk skripti olduğu varsayılır. Bir subhell onu icra etmək üçün spawned olunur. Bu subshell özünü reinitializes, belə ki, təsiri, yeni bir qövsə ssenari ilə məşğul olmaq üçün çağırılmışdır, istisna olmaqla, valideyn tərəfindən xatırlanan komanda yerləri ( SHELL BUILTIN COMMANDS altında aşağıdakı hash bax) uşağı saxlayır.
Proqram, # ilə başlayan fayldırsa ! birinci xəttin qalan hissəsi proqram üçün tərcüməçiyə aiddir. Kabuk, bu çalıştırılabilir formatın özlərini idarə etməyən əməliyyat sistemlərində göstərilən tərcüməçini yerinə yetirir. Tərcüməçiyə verilən arqumentlər proqramın birinci xəttində tərcüməçi adını izləyən tək bir isteğe bağlı arqumentdən ibarətdir, sonra proqramın adı, əgər varsa, komanda argumentləri.
KOMMUNİK İCRAÇI MƏRKƏZİ
Kabukda aşağıdakılardan ibarət olan icra mühiti var :
* Daxil edilən exec üçün redirections tərəfindən dəyişdirilmiş kimi, invocation da shell tərəfindən devralınan açıq faylları
cd , pushd , və ya popd tərəfindən təyin edilmiş və ya çağırışda qabıq tərəfindən devralınan cari iş dizinidir
* Umask tərəfindən təyin edilən və ya qabığın uşağından devralınan fayl yaradılması rejimi maskası
Tələbə tərəfindən hazırlanmış * mövcud tələlər
dəyişən atama və ya qabığın valideynindən ətraf mühitə təyin edilmiş və ya miras alınaraq təyin olunan shell parametrləri
* Kabuk funksiyaları ətraf mühitin icrasında və ya qabığın valideynindən miras alındıqda təyin olunur
* Seçimlər (ya default və ya command-line arguments ilə) və ya set ilə aktivləşdirilmiş
shopt tərəfindən aktivləşdirilmiş * variantlar
alias ilə müəyyən edilmiş shell aliasları
fon işlərinin, $$ dəyərinin və $ PPID dəyərinin də daxil olduğu müxtəlif proses identifikasiyası
Daxili və ya qabıq funksiyasından başqa bir sadə komanda icra edilsə, aşağıdakılardan ibarət olan ayrı bir icra mühiti ilə çağırılır. Aksi qeyd edilməmiş halda, dəyərlər qabığından miras alınır.
* Kabuğun açıq faylları, üstəlik komanda üçün redirections tərəfindən göstərilən dəyişikliklər və əlavələr
* mövcud iş directory
* fayl yaradılması rejimi maskası
* ixrac üçün qeyd olunan kabuk dəyişənləri, əmr üçün ixrac edilən dəyişənlərlə birlikdə, ətraf mühitə keçdi
Shell tərəfindən tutulan tələlər qabığın valideynindən miras qalan dəyərlərə yenidən qurulur və kabuk tərəfindən yox sayılan tələlər nəzərə alınmır
Bu ayrı mühitdə çağırılan əmr qabığın icra mühitinə təsir göstərə bilməz.
Komanda əvəzetmə və asinxron əmrlər, qabığın tutduqları tələlərin qabarma otağındakı ibadətdən miras qalan dəyərlərə yenidən qurulması istisna olmaqla, kabuk mühitinin dublikatı olan bir alt-mühitdə çağırılır. Boru kəmərinin bir hissəsi kimi çağırılan əmtəə əmrləri də bir subshell mühitində həyata keçirilir. Subshell mühitinə edilən dəyişikliklər qabığın icra mühitinə təsir göstərə bilməz.
Bir əmri bir & & iş nəzarət aktiv deyilsə, əmr üçün standart standart giriş boş fayl / dev / nulldur . Əks halda, çağırılan komanda çağırış kabuğunun fayl identifikatorlarını redirections tərəfindən dəyişdirildiyi kimi devralır.