Sh - Linux Command - Unix Command

NAME

bash - GNU Bourne-Again SHELL

სინოფსისი

bash [options] [file]

DESCRIPTION

Bash არის sh -compatible ბრძანება ენა თარჯიმანი, რომელიც ახორციელებს ბრძანებებს წაკითხვის სტანდარტული შეყვანის ან ფაილი. ბაშმა ასევე აერთიანებს Korn და C ჭურვიდან სასარგებლო თვისებები ( ksh და csh ).

Bash განკუთვნილია IEEE POSIX Shell და Tools სპეციფიკაციის (IEEE სამუშაო ჯგუფის 1003.2) შესაბამისობაში.

პარამეტრები

ბალიშის ბრძანების აღწერილობაში აღწერილ ერთი სიმბოლოთა ვარიანტების გარდა, bash განმარტავს შემდეგ პარამეტრებს, როდესაც იგი ითხოვს:

-c სიმებიანი

თუ -c პარამეტრი არსებობს, მაშინ ბრძანებები იკითხება სიმებიდან . თუ არსებობს არგუმენტები სიმებიდან , ისინი ენიჭებათ პოზიციურ პარამეტრებს, დაწყებული $ 0 .

-მე

თუ -i ვარიანტი არსებობს, შელი არის ინტერაქტიული .

-l

ჩადება bash აქტი, თითქოს იყო მოიყვანა, როგორც შესვლა shell (იხ. INVOCATION ქვემოთ).

-რ

თუ- r ვარიანტი არსებობს, შელი ხდება შეზღუდული (იხილეთ ქვემოთ მოცემული შეზღუდვა ).

-გ

თუ- s ვარიანტი არსებობს, ან თუ არგუმენტები არ დარჩება ვარიანტი დამუშავების შემდეგ, მაშინ ბრძანებები იკითხება სტანდარტული შეყვანისგან. ეს ვარიანტი საშუალებას იძლევა, რომ დააყენოთ პოზიტიური პარამეტრების დაყენება ინტერაქტიული გარსით.

-D

სტანდარტული ouput- ზე დაბეჭდილი ყველა ორმაგი ციტირებული სტრიქონების სია დაბეჭდილია $ . ეს არის სტრიქონები, რომლებიც ენობრივი თარგმანის ექვემდებარება, როდესაც მიმდინარე ლოკალი არ არის C ან POSIX . ეს გულისხმობს -n- ს ვარიანტს; ბრძანებები არ შესრულდება.

[- +] ო [ shopt_option ]

shopt_option არის ერთ-ერთი შელი ვარიანტი, რომელიც მიიღება მაღაზიის მშენებლობას (იხ. SHELL BUILTIN COMMANDS ქვემოთ). თუ shopt_option არსებობს, -O განსაზღვრავს ამ პარამეტრის მნიშვნელობას; + O unsets მას. თუ shopt_option არ არის მიწოდებული, მაღაზიის მიერ შეთავაზებული ჭურვი პარამეტრების სახელები და მნიშვნელობა დაბეჭდილია სტანდარტულ გამომავალზე. თუ invocation ვარიანტი + O , გამომავალი გამოჩნდება ფორმატში, რომელიც შეიძლება გამოყენებულ იქნეს როგორც შეყვანის სახით.

A - სიგნალის დასრულების პარამეტრები და გამორთვა შემდგომი პარამეტრების დამუშავება. ნებისმიერი არგუმენტი შემდეგ - განიხილება, როგორც filenames და არგუმენტები. არგუმენტი - უდრის - .

Bash ასევე ინტერპრეტაციას რამდენიმე მრავალპუნქტიანი პარამეტრები. ეს პარამეტრები უნდა გამოჩნდეს ბრძანებათა სტრიქში, სანამ ერთი ხასიათი პარამეტრები აღიარდება.

- dump-po-strings

D -ის ექვივალენტი, მაგრამ გამომავალი არის GNU gettext po (პორტატული ობიექტი) ფაილის ფორმატში.

- dump- სტრიქები

დივიზიონის ექვივალენტი

--help

გამოაქვეყნეთ გამოყენების შეტყობინება სტანდარტული გამომავალი და გასასვლელად წარმატებით.

- ფაილი ფაილის ფაილი

--rcfile ფაილი

ჩატვირთვა ბრძანებებიდან სტანდარტული ნაცვლად სტანდარტული პიქტოგრამის ~ ~ /. Bashrc- ის ნაცვლად, თუ shell არის ინტერაქტიული (იხ. INVOCATION ქვემოთ).

--შესვლა

-l- ის ექვივალენტი

- დაუმორჩილებლობა

არ გამოიყენოთ GNU readline ბიბლიოთეკა იმისათვის, რომ წაიკითხოთ ბრძანებათა ხაზები, როდესაც shell არის ინტერაქტიული.

--noprofile

არ წაიკითხოთ სისტემის გაშვების ფაილი / ა.შ. / პროფილი ან პერსონალური ინიციალიზაციის ნებისმიერი ფაილები ~ /. Bash_profile , ~ / .bash_login , ან ~ / .პროფილი . ჩვეულებრივ, bash ნათქვამია ამ ფაილებს, როდესაც ის შემოდის როგორც login shell (იხ. INVOCATION ქვემოთ).

--norc

არ წაიკითხოთ და შეასრულოთ პირადი ინიციალიზაციის ფაილი ~ / .bashrc თუ shell არის ინტერაქტიული. ეს პარამეტრი ჩართულია თუ shell მოიყვანა როგორც sh .

- სიმბოლო

ცვლის ქცევის შეცვლა, სადაც ნაგულისხმევი ოპერაცია განსხვავდება POSIX 1003.2 სტანდარტისგან, რათა შეესაბამებოდეს სტანდარტს ( posix mode ).

- მკაცრი

ჭურვი ხდება შეზღუდული (იხ. ქვემოთ მოყვანილი შეზღუდვა).

--rpm- მოითხოვს

აწარმოეთ ფაილების ნუსხა, რომლებიც საჭიროა ჭურვი სცენარის გასაშვებად. ეს ნიშნავს "-n" და ექვემდებარება იგივე შეზღუდვებს, როგორც შედგენის დროს შეცდომის შემოწმების შემოწმება; Backticks, [] ტესტები და ევალები არ არის გააზრებული, ამიტომ ზოგიერთი დამოკიდებულებები შეიძლება გაუქმდეს. -ვერბს-ის ექვივალენტი

--ვერსია

აჩვენეთ ვერსია ინფორმაცია ამ გამონაკლისისათვის სტანდარტული გამომავალიდან და გასასვლელი წარმატებით.

არგუმენტები

თუ არგუმენტები რჩება პარამეტრის დამუშავების შემდეგ, და არც C- ს და არც-ის პარამეტრი არ არის მოწოდებული, პირველი არგუმენტი ითვლება შელფის ბრძანებების შემცველი ფაილის სახელი. თუ ბაში გამოდის ამ ფორმით, $ 0 არის მითითებული ფაილის სახელი და პოზიტიური პარამეტრები დაყენებულია დანარჩენი არგუმენტებით. Bash იკითხება და ასრულებს ბრძანებებს ამ ფაილში, შემდეგ გამოსვლა. Bash- ის გასვლის სტატუსი არის სცენარის შესრულების ბოლო ბრძანების გასვლის სტატუსი. თუ ბრძანებები შესრულებული არ არის, გასასვლელი სტატუსი არის 0. მცდელობა პირველად გაკეთდა ფაილის მიმდინარე ფაილში გახსნისა და თუ ფაილი ვერ მოიძებნა, მაშინ შელი ეძებს PATH- ს სკრიპტს.

ინვოკაცია

შესვლა shell არის ერთი, რომლის პირველი ხასიათი არგუმენტი ნულის არის - ან ერთი დაიწყო --login ვარიანტი.

ინტერაქტიული ჭურვი ერთ-ერთი არჩევითი არგუმენტების გარეშე დაიწყო და -c პარამეტრის გარეშე, რომლის სტანდარტული შეყვანა და გამომავალი ორივეა ტერმინალებთან დაკავშირებული (როგორც ესაააააააააააააააააააააააააააააააა მოცემული ) PS1 არის კომპლექტი და $ - შედის i თუ bash არის ინტერაქტიული, რომელიც საშუალებას შელი სკრიპტი ან გაშვების ფაილი ამ სახელმწიფოს შესამოწმებლად.

ქვემოთ მოყვანილი პარაგრაფები აღწერს, თუ როგორ ასრულებს bash- ს ჩატვირთვის ფაილებს. თუ რომელიმე ფაილი არსებობს, მაგრამ არ შეიძლება წაიკითხოს, ბუშის შეცდომა იუწყება შეცდომა. Tildes გაფართოვდა ფაილის სახით, როგორც ქვემოთ აღწერილია Tilde- ის გაფართოება EXPANSION განყოფილებაში.

როდესაც bash იძახება, როგორც ინტერაქტიული შესვლის shell, ან არასამთავრობო ინტერაქტიული გარსი ერთად -login ვარიანტი, ეს პირველი ნათქვამია და ახორციელებს ბრძანებები ფაილი / etc / პროფილი , თუ ფაილი არსებობს. ამ ფაილის წაკითხვის შემდეგ გამოიყურება ~ /. Bash_profile , ~ / .bash_login , და ~ / .პროფილი , ამ ბრძანებით და იკითხება და ახორციელებს ბრძანებებს პირველი, რომელიც არსებობს და იკითხება. --noprofile- ის პარამეტრი შეიძლება გამოყენებულ იქნას, როდესაც ჭურვი იწყება ამ ქცევის დათრგუნვაზე.

როდესაც შესვლის შელსი გადის, bash ნათქვამია და ახორციელებს ბრძანებებს ფაილი ~ / .bash_logout , თუ ის არსებობს.

როდესაც ინტერაქტიული ჭურვი, რომელიც არ არის შეყვანილი შელზე , bash იკითხება და ახორციელებს ბრძანებებს ~ / .bashrc- ს , თუ ეს ფაილი არსებობს. ეს შეიძლება აიკრძალოს --norc პარამეტრის გამოყენებით. --rcfile ფაილის პარამეტრი აიძულებს Bash- ი წაიკითხოს და შეასრულოს ბრძანებები ფაილიდან ~ / .bashrc- ის ნაცვლად.

როდესაც bash დაიწყო შეუსაბამოდ, შეასრულოს ჭურვი სცენარი, მაგალითად, გამოიყურება ცვლადი BASH_ENV გარემოში, აფართოებს მის მნიშვნელობას, თუ ის გამოჩნდება და იყენებს გაფართოებულ მნიშვნელობას როგორც ფაილის წაკითხვისა და შესრულების მიზნით . ბოშმა ისე იქცევა, თითქოს შემდეგი ბრძანება შესრულდა:

თუ [-n "$ BASH_ENV"]; მაშინ. "$ BASH_ENV"; fi

მაგრამ PATH ცვლადის ღირებულება არ არის გამოყენებული ფაილების სახელით.

თუ bash იძახება სახელი sh , იგი ცდილობს mimic დაწყების ქცევის ისტორიული ვერსიები sh როგორც შეძლებისდაგვარად, ხოლო შეესაბამება POSIX სტანდარტი ასევე. როდესაც ინტერაქტიული ჩხვლეტის , ანუ ინტერაქტიული გარსით შესვლა -login პარამეტრით, იგი პირველად ცდილობს ბრძანებების წაკითხვას და შეასრულოს / etc / profile და ამ მიზნით. --noprofile- ის გამოყენება შეიძლება გამოყენებულ იქნას ამ ქცევის დათრგუნვაზე. როდესაც ჩართულია ინტერაქტიული ჭურვი სახელი sh , bash გამოიყურება ცვლადი ENV , აფართოებს მის მნიშვნელობას, თუ ის განსაზღვრულია და იყენებს გაფართოებულ მნიშვნელობას როგორც ფაილის წაკითხვისა და შესრულების მიზნით. მას შემდეგ, რაც shell მოიყვანა როგორც sh არ ცდილობენ წაიკითხოთ და შეასრულოს ბრძანებები ნებისმიერი სხვა გაშვების ფაილი, thercfile ვარიანტი არ აქვს ეფექტი. არა-ინტერაქტიული ჭურვი სახელწოდებით sh არ ცდილობენ წაკითხვის ნებისმიერი სხვა გაშვების ფაილი. როდესაც ჩართული როგორც sh , bash შედის posix რეჟიმში შემდეგ გაშვების ფაილი წაიკითხა.

როდესაც bash დაიწყო posix რეჟიმში, როგორც theposix ბრძანების ხაზი ვარიანტი, იგი შემდეგნაირად POSIX სტანდარტის ჩატვირთვის ფაილი. ამ რეჟიმში, ინტერაქტიული ჭურვი გაფართოების ENV ცვლადი და ბრძანებები იკითხება და შესრულებული ფაილი, რომლის სახელიც არის გაფართოებული ღირებულება. სხვა გაშვების ფაილები არ იკითხება.

Bash ცდილობს განსაზღვროს, როდესაც იგი მართავენ დისტანციური შელ დემის , ჩვეულებრივ rshd . თუ bash განსაზღვრავს მას მართავენ rshd , ეს წერია და ახორციელებს ბრძანებები ~ / .bashrc , თუ ეს ფაილი არსებობს და იკითხება. ეს არ გააკეთებს ამას, თუ . --norc პარამეტრი შეიძლება გამოყენებულ იქნას ამ ქცევის დათრგუნვაზე, ხოლო --rcfile- ის გამოყენება შეიძლება გამოყენებულ იქნას სხვა ფაილზე წაიკითხოს, მაგრამ rshd ზოგადად არ ითვალისწინებს ამ პარამეტრთან დაკავშირებას ან მისთვის მითითებას.

თუ shell იწყება ეფექტური მომხმარებლის (ჯგუფი) ID- სთან, რომელიც არ არის ნამდვილი მომხმარებლის (ჯგუფი) ID- ს ტოლი, და -p პარამეტრი არ არის მოწოდებული, არ ჩაიტვირთება ფაილები, შელფ ფუნქციები არ არის მემკვიდრეობით გარემოდან, ცვლადი, თუ ის გამოჩნდება გარემოში, იგნორირებულია და ეფექტური მომხმარებლის ID დაყენებულია ნამდვილ მომხმარებლის ID- ში. თუ -p პარამეტრი მოწოდებულია მოწოდებით, გაშვების ქცევა იგივეა, მაგრამ ეფექტური მომხმარებლის ID არ არის გადატვირთული.

განსაზღვრებები

ამ დოკუმენტის დანარჩენ ნაწილში გამოიყენება შემდეგი განმარტებები.

ცარიელი

სივრცე ან ჩანართი.

სიტყვა

თანმიმდევრობა სიმბოლოები, რომლებიც განიხილება როგორც ერთეული ერთეულით. ასევე ცნობილია, როგორც ნიშნად .

სახელი

სიტყვა, რომელიც შედგება მხოლოდ ალფანუმერული სიმბოლოებისა და ხაზებისგან, და იწყება ანბანური ხასიათის ანდა ხაზით. ასევე მოიხსენიება როგორც იდენტიფიკატორი .

მეტაჩარქეკატორი

ხასიათი, რომელიც, როდესაც unquoted, ჰყოფს სიტყვა. ერთი შემდეგი:

| &; () <> სივრცის ჩანართი

კონტროლის ოპერატორი

ნიშნად, რომელიც ასრულებს კონტროლის ფუნქციას. ეს არის შემდეგი სიმბოლოები:

|| &&; ; () | <ახალი ხაზი>

რეზერვირებული სიტყვები

დაცულია სიტყვები სიტყვა, რომელსაც აქვს განსაკუთრებული მნიშვნელობა აქვს ჭურვი. შემდეგი სიტყვები აღიარებულია, როგორც დაუცველი და მარტივი ბრძანების პირველი სიტყვა (იხ. ქვემოთ SHELL GRAMMAR ) ან მესამე სიტყვა ან ბრძანება:

! საქმის კეთება ეკისრება სხვას esac fi ფუნქცია, თუ შერჩევაში მაშინ სანამ სანამ [[]]

შელი გრამარი

მარტივი ბრძანებები

მარტივი ბრძანება არის სურვილისამებრ ცვლადი დავალების თანმიმდევრობა, რასაც მოჰყვება ცარიელი ცარიელი სიტყვები და გადამისამართებები და შეწყვიტა საკონტროლო ოპერატორი . პირველი სიტყვა განსაზღვრავს ბრძანების შესრულებას და გადაეცემა არგუმენტად ნულს. დანარჩენი სიტყვები არგუმენტირებული იქნა ბრძანებებით.

მარტივი ბრძანების დაბრუნების ღირებულებაა მისი გასასვლელი სტატუსი ან 128 + n თუ ბრძანება შეწყდება სიგნალის მიერ.

მილსადენები

მილსადენი არის ერთი ან მეტი ბრძანების თანმიმდევრობა ხასიათითაგან გამოყოფილი . მილსადენის ფორმატია:

[ დრო [ -p ]] [! ] ბრძანება [ | command2 ...]

ბრძანების სტანდარტული გამომავალი უკავშირდება command2- ის სტანდარტული შეყვანის მილს . ეს კავშირი შესრულებულია ბრძანების მიერ მითითებულ ნებისმიერ გადამისამართებამდე (იხ. REDIRECTION ქვემოთ).

თუ დაცულია სიტყვა ! მილსადენის წინ უსწრებს მილსადენის გასასვლელი სტატუსი, რომელიც უკანასკნელი ბრძანების გასასვლელი სტატუსი არ არის ლოგიკური. წინააღმდეგ შემთხვევაში, მილსადენის სტატუსი ბოლო ბრძანების გასასვლელი სტატუსია. Shell ელოდება ყველა ბრძანებებს მილსადენის შეწყვიტოს სანამ ღირებულება დაბრუნებას.

თუ დრო დაცულია სიტყვა მილსადენის წინ წინ უსწრებს, მით უმეტეს, რომ მისი შესრულებით მოხმარებული მომხმარებელი და სისტემა დროით მიუთითებს, როდესაც მილსადენი წყდება. -p პარამეტრი შეცვლის გამომავალ ფორმატს POSIX- ის მიერ განსაზღვრული. TIMEFORMAT ცვლადი შეიძლება ჩამოყალიბდეს ფორმატის სტრიქონზე, რომელიც განსაზღვრავს, თუ როგორ უნდა იყოს ნაჩვენები დრო; იხილეთ TIMEFORMAT- ის აღწერა Shell ცვლადების ქვემოთ.

მილსადენის თითოეული ბრძანება ხორციელდება როგორც ცალკეული პროცესი (ანუ ქვესადგურში).

სიები

სიაში შედის ერთი ან მეტი მილსადენის ერთ-ერთი ოპერატორის მიერ გამოყოფილი თანმიმდევრობა ; , & , && , ან || , და სურვილისამებრ შეწყვიტა ერთი ; , & , ან .

ამ სიაში ოპერატორები, && და || აქვს თანასწორი პრეცედენტი, რასაც მოყვება ; და , რომელიც თანაბარი წინაპირობაა.

ერთი ან მეტი ახალი ხაზის თანმიმდევრობა შეიძლება გამოჩნდეს სიაში ნაცვლად სემიკონის ნაცვლად, რათა განისაზღვროს ბრძანებები.

თუ ბრძანება შეწყდება საკონტროლო ოპერატორის მიერ, შელი ამუშავებს ქვედანაყოფის ფონზე . შელი არ დაელოდა ბრძანების დასრულებას და დაბრუნების სტატუსია 0. ბრძანებები გამოყოფილია ; შესრულებულია თანამიმდევრული; shell ელოდება თითოეული ბრძანება შეწყვიტოს თავის მხრივ. დაბრუნების სტატუსი შესრულებული ბოლო ბრძანების გასვლის სტატუსია.

კონტროლის ოპერატორები && და || აღნიშვნა და სიები და სიები, შესაბამისად. და სია აქვს ფორმა

command1 && command2

command2 შესრულებულია, თუ მხოლოდ, თუ command1 დააბრუნებს ნულის გამოსვლის სტატუსს.

ან სიას ფორმა აქვს

command1 || command2

command2 შესრულებულია თუ მხოლოდ და თუ command1 დააბრუნებს არასამთავრობო ნულოვანი გასვლის სტატუსი. AND და LIST- ის დაბრუნების სტატუსი სიაში შესრულებული ბოლო ბრძანების გასვლის სტატუსია.

რთული ბრძანებები

რთული ბრძანება ერთ-ერთია:

( სია )

სია შესრულებულია სუბშელში. ცვლადი დავალებები და ჩამონტაჟებული ბრძანებები, რომლებიც გავლენას ახდენენ შელის გარემოზე, არ შეჩერდება ბრძანების დასრულების შემდეგ. დაბრუნების სტატუსი სიის გასვლის სტატუსია.

{ სია ; }

სიაში უბრალოდ შესრულებულია მიმდინარე ჭურვი გარემოში. სია უნდა შეწყდეს ახალი ან სემინოლონით. ეს ცნობილია, როგორც ჯგუფის ბრძანება . დაბრუნების სტატუსი სიის გასვლის სტატუსია. გაითვალისწინეთ, რომ მეტაჩარქექტორებისგან განსხვავებით ( და ) , დაცულია სიტყვები და უნდა მოხდეს, სადაც დაცული სიტყვის ნებადართულია აღიარება. მას შემდეგ, რაც მათ არ იწვევენ სიტყვის შესვენება, ისინი უნდა გამოეყოთ სიიდან ყველაფერს .

( გამოხატვა ))

გამოხატულება შეფასებულია ARITHMETIC შეფასების ფარგლებში ქვემოთ მოყვანილი წესების მიხედვით . თუ გამოხატვის მნიშვნელობა არ არის ნულოვანი, დაბრუნების სტატუსი 0; სხვაგვარად დაბრუნების სტატუსი 1. ეს არის ზუსტად ეკვივალენტი, რათა " გამოხატვა ".

[[ გამოხატვა ]]

დავუბრუნდეთ 0 ან 1 სტატუსს, პირობების გამოხატვის გამოხატვის შეფასების მიხედვით. გამონათქვამები შედგება ქვემოთ მოყვანილი პრაიმერის საფუძველზე, რომელიც გამოითვლება პირობითად . სიტყვა გაყოფა და გზას გაფართოება არ შესრულდება სიტყვებით [[ და ]] ; tilde გაფართოება, პარამეტრი და ცვლადი გაფართოება, არითმეტიკული გაფართოება, ბრძანების ჩანაცვლება, პროცესი ჩანაცვლება და ციტატის მოხსნა შესრულებულია.

== და = = ოპერატორები გამოიყენება, ოპერატორის უფლების სიმები ითვლება ნიმუში და შეესაბამება Pattern Matching- ზე ქვემოთ მოყვანილ წესებს. დაბრუნების მნიშვნელობა არის 0 თუ სიმებიანი მატჩები ან არ ემთხვევა ნიმუში, შესაბამისად, და 1 სხვაგვარად. ნიმუშის ნებისმიერი ნაწილი შეიძლება ციტირებული იყოს იმისთვის, რომ იგი უნდა დაემსგავსოს როგორც სიმებიანი.

გამოხატვა შეიძლება კომბინირებული იყვნენ შემდეგი ოპერატორების გამოყენებით, რომლებიც ჩამოთვლილია უპირატესობის შემცირებით:

( გამოხატვა )

აბრუნებს გამოხატვის ღირებულებას. ეს შეიძლება გამოყენებულ იქნას ოპერატორების ნორმალური პრეცენდენტის გადალახვის მიზნით.

! გამოხატვა

მართალია, თუ გამოხატვა მცდარია.

expression1 && expression2

მართალია, თუ ორივე expression1 და expression2 არის ნამდვილი.

expression1 || expression2 True თუ expression1 ან expression2 არის ნამდვილი.

&& და || ოპერატორები არ აფასებენ გამოხატვის 2 თუ გამოხატვის ღირებულება 1 საკმარისია იმისათვის, რომ განსაზღვროს მთელი პირობითი გამოხატვის დაბრუნების ღირებულება.

სახელით [ სიტყვაში ]; სია ; შესრულებულია

სიის სიტყვების სია გაფართოვდა, სიის ელემენტების გენერირება. ცვლადი სახელი მითითებული თითოეული სია ამ ელემენტის თავის მხრივ, და სია შესრულებულია ყოველ ჯერზე. იმ შემთხვევაში, თუ სიტყვა არ არის გამოტოვებული, ბრძანება ახორციელებს ჩამონათვალს თითოეული პოსტიურ პარამეტრზე, რომელიც არის მითითებული (იხ. PARAMETERS ქვემოთ). დაბრუნების სტატუსი არის ბოლო ბრძანების გასასვლელი სტატუსი, რომელიც ახორციელებს. თუ ცარიელი სიის შედეგების შემდეგ გაფართოება, ბრძანებები არ შესრულდება და დაბრუნების სტატუსი 0.

(( expr1 ; expr2 ; expr3 )); სია ; შესრულებულია

პირველი, არითმეტიკული გამოხატვის expr1 შეფასებულია ARITHMETIC შეფასების ფარგლებში ქვემოთ მოყვანილი წესების მიხედვით . არითმეტიკული გამოხატვა expr2 შემდეგ განიხილება არაერთხელ სანამ იგი აფასებს ნულს. ყოველ ჯერზე expr2 აფასებს არასამთავრობო ნულოვანი ღირებულება, სია შესრულებულია და არითმეტიკული გამოხატვის expr3 ფასდება. თუ რომელიმე გამოხატვა გამოტოვებულია, ის იქცევა, თითქოს იგი აფასებს 1. დაბრუნების ღირებულება არის ბოლო ბრძანების გასვლის სტატუსი იმ სიაში, რომელიც შესრულებულია, ან ყალბი, თუ რომელიმე გამონათქვამი არასწორია.

აირჩიეთ სახელი [ სიტყვაში ]; სია ; შესრულებულია

სიის სიტყვების სია გაფართოვდა, სიის ელემენტების გენერირება. გაფართოებული სიტყვების კომპლექტი იბეჭდება სტანდარტულ შეცდომაზე, თითოეული წინ უძღვის რიცხვს. თუ სიტყვა არ არის გამოტოვებული, მოთავსებულია პოზიტიური პარამეტრები (იხილეთ PARAMETERS ქვემოთ). PS3 prompt შემდეგ გამოჩნდება და ხაზი წაკითხვის სტანდარტული შეყვანის. თუ ხაზი შედგება ერთი ნაჩვენები სიტყვის შესაბამისი რიცხვისაგან, მაშინ სახელი მითითებული იქნება ამ სიტყვის მნიშვნელობით. თუ ხაზი ცარიელია, სიტყვები და შენიშვნა კვლავ გამოჩნდება. თუ EOF იკითხება, ბრძანება ასრულებს. ნებისმიერი სხვა ღირებულება წაკითხული იწვევს სახელი უნდა იყოს მითითებული null. ხაზის წაკითხვა შენახულია ცვლადში. სიის შესრულება ხდება თითოეული შერჩევის შემდეგ, სანამ შესვენების ბრძანება შესრულდება. შერჩევის გამორთვის სტატუსი არის სიაში შესრულებული ბოლო ბრძანების გასვლის სტატუსი ან ნულოვანი თუ არ შესრულდება ბრძანებები.

საქმის სიტყვა [[(] ნიმუში [ | ნიმუში ]

საქმის ბრძანება პირველი აფართოებს სიტყვას და ცდილობს ყოველი მასალის წინააღმდეგ შეესაბამებოდეს იმავე შესაბამის წესებს, როგორიცაა გზამკვლევი გაფართოება (იხ. ქვემოთა გაფართოება ქვემოთ). მატჩის აღმოჩენისას, შესაბამისი სია შესრულებულია. პირველი მატჩის შემდეგ, მომდევნო მატჩები სცადეს. გასვლის სტატუსი ნულოვანია, თუ ნიმუში არ შეესაბამება. წინააღმდეგ შემთხვევაში, ეს არის სიაში შესრულებული ბოლო ბრძანების გასვლის სტატუსი.

თუ სია ; შემდეგ სიაში; [ elif სია ; შემდეგ სიაში ; ] ... [ სხვა სია ; ] fi

თუ სია შესრულებულია. თუ მისი გასვლის სტატუსი ნულოვანია, მაშინ სიაში შესრულებულია. წინააღმდეგ შემთხვევაში, თითოეული elif სია შესრულებულია, ხოლო თუ მისი გასვლის სტატუსი ნულოვანია, მაშინ შესაბამისი სია შესრულებულია და ბრძანება ასრულებს. წინააღმდეგ შემთხვევაში, სხვა სია შესრულებულია, თუ არსებობს. გასვლის სტატუსი არის გასასვლელი ბრძანების გასვლის სტატუსი, ან ნულოვანი თუ არ არის მდგომარეობის ტესტირება.

სია ; სია ; შესრულებულია

სიაში ; სია ; შესრულებულია

ხოლო ბრძანება მუდმივად ახორციელებს სიის სიას , სანამ ბოლო ბრძანება სიაში დაბრუნდება გასასვლელი სტატუსის ნულოვანი. სანამ ბრძანება იდენტურია, ხოლო ბრძანება, გარდა იმისა, რომ გამოცდა უარყოფითია; სიის შესრულება ხორციელდება სიაში ბოლო ბრძანებულებით, ხოლო ნულოვანი გასვლის სტატუსს უკავშირდება. გამშვები სტატუსი ხოლო და ბრძანებები არის გასასვლელი სიის ბრძანების გასვლის სტატუსი, ან ნულოვანი თუ არ შესრულებულა.

[ ფუნქცია ] სახელი () { სია ; }

ეს განსაზღვრავს ფუნქციის სახელს . ფუნქციის ორგანო არის {და} შორის ბრძანების სია . ეს სია შესრულებულია მაშინ, როდესაც მითითებულია მარტივი ბრძანების სახელი. ფუნქციის გასვლის სტატუსი არის ორგანოში შესრულებული ბოლო ბრძანების გასვლის სტატუსი. (იხილეთ ფუნქციები ქვემოთ.)

კომენტარები

არა ინტერაქტიული ჭურვი, ან ინტერაქტიული ჭურვი, რომელშიც ინტერაქტიული კომბინირებული ვარიანტია მაღაზიის ინტეგრირებული კომბინაციისთვის (იხ. SHELL BUILTIN COMMANDS ქვემოთ), სიტყვა იწყება # მიზეზებით, რომ სიტყვა და ყველა დარჩენილი სიმბოლო იგნორირებულია. ინტერაქტიული შელი საშუალებას არ იძლევა ინტერაქტიული კომბინირების პარამეტრის ჩართვა არ იძლევა კომენტარს. ინტერაქტიულ კომბინირებს ჩართულია ინტერაქტიული ჭურვები.

QUOTING

ციტატა გამოიყენება გარკვეული სიმბოლოების ან სიტყვების სპეციალური მნიშვნელობის ამოღების მიზნით. შენიშვნა შეიძლება გამოყენებულ იქნას სპეციალური სიმბოლოების სპეციალური მკურნალობის გამორთვაზე, რათა თავიდან იქნეს აცილებული დაცული სიტყვები, როგორც ასეთი აღიარება და პარამეტრი გაფართოების თავიდან ასაცილებლად.

ზემოთ ჩამოთვლილ მეტაჩარქექტორებს, რომლებსაც ზემოთ ჩამოთვლილთა შორის აქვთ განსაკუთრებული მნიშვნელობა აქვს ჭურვიზე და უნდა იყოს ციტირებული, თუ ის წარმოადგენს თავის თავს.

როდესაც ბრძანება ისტორია გაფართოების ობიექტების გამოიყენება, ისტორია გაფართოების ხასიათი, როგორც წესი , , უნდა აღინიშნოს ისტორიის გაფართოების თავიდან აცილება.

არსებობს სამი ციტირების მექანიზმი: გაქცევის ხასიათი , ერთი შეთავაზებები და ორმაგი შეთავაზებები.

არა-ციტირებული backslash ( \ ) არის გაქცევის ხასიათი . ის ინარჩუნებს შემდეგი სიმბოლოების ლიტერატურულ მნიშვნელობას, რომელიც შემდეგნაირად გამოიყურება, გარდა . თუ გამოჩნდება \ წყვილი, ხოლო backslash არ არის ციტირებული, \ განიხილება როგორც ხაზის გაგრძელება (ანუ ის ამოღებულია ნაკადიდან და ეფექტურად იგნორირებულია).

კოტირების სიმბოლოები შეესაბამება თითოეული მახასიათებლის ლიტერატურულ მნიშვნელობას ციტატების ფარგლებში. ერთი ციტატი შეიძლება არ მოხდეს ერთჯერად ციტატებს შორის, მაშინაც კი, როდესაც უკანასკნელმა წინ უძღვის.

ორმაგი ციტატების სიმბოლოები ინახავს ყველა სიმბოლოთა ლიტერატურულ მნიშვნელობას ციტატების ფარგლებში, გარდა $ , ` , და \ . სიმბოლოები $ და ` შეინარჩუნებენ განსაკუთრებულ მნიშვნელობას ორმაგ შეთავაზებებში. Backslash- ი მხოლოდ განსაკუთრებულ მნიშვნელობას ანიჭებს მას შემდეგ, რაც მოჰყვება შემდეგი სიმბოლოები: $ , ` , " , \ , ან .

სპეციალური პარამეტრების * და @ აქვს განსაკუთრებული მნიშვნელობა, როდესაც ორმაგი შეთავაზებები (იხ. PARAMETERS ქვემოთ).

ფორმის $ string- ის ფორმები სპეციალურად განიხილება. სიტყვა აფართოებს სტრინგს , რომელიც შეცვლის backslash-escaped სიმბოლოს შეცვალა როგორც ANSI C სტანდარტით. Backslash escape sequences, თუ ესწრებოდა, გაშიფრულია შემდეგნაირად:

\ ა

გაფრთხილება (ზარი)

\ b

backspace

\ e

გაქცევის ხასიათი

\ ვ

ფორმა feed

\ n

ახალი ხაზი

\ r

ვაგონების დაბრუნება

\ t

ჰორიზონტალური ჩანართი

\ v

ვერტიკალური ჩანართი

\\

backslash

\ '

ერთი ციტატა

\ nnn

რვა ბიტიანი ხასიათი, რომლის ღირებულებაც არის ოქტალური ღირებულება nnn (ერთი სამი ციფრი)

\ x HH

რვა ბიტიანი ხასიათი, რომელთა ღირებულებაა ჰექსადეციალური მნიშვნელობა HH (ერთი ან ორი hex ციფრი)

\ c x

საკონტროლო- x სიმბოლო

გაფართოებული შედეგი არის ერთი ციტირებული, თითქოს დოლარის ნიშანი არ იყო წარმოდგენილი.

ორმაგი ციტირებული სტრიქონი, რომელსაც წინ უძღვის დოლარი ნიშანი ( $ ), გამოიწვევს სიღრმის თარგმნას ამჟამინდელი ლოკალით. თუ ამჟამინდელი ლოკალია C ან POSIX , იგნორირებულია დოლარის ნიშანი. თუ სიმებიანი თარგმნილია და შეცვალა, ჩანაცვლება ორჯერ არის ციტირებული.

პარამეტრები

პარამეტრი არის ერთეული, რომელიც ინახავს ღირებულებებს. ეს შეიძლება იყოს სახელი , ნომერი, ან სპეციალური სიმბოლოების ქვეშ ჩამოთვლილი სპეციალური სიმბოლოები. Shell- ის მიზნებისთვის, ცვლადი არის სახელით მითითებულ პარამეტრზე. ცვლადს აქვს მნიშვნელობა და ნულოვანი ან მეტი ატრიბუტები . ატრიბუტები ენიჭება დეკლარაციის აშენების ბრძანებას (იხ. ქვემოთ SHELL BUILTIN COMMANDS ).

პარამეტრი არის მითითებული, თუ მას ენიჭება მნიშვნელობა. Null string არის სწორი მნიშვნელობა. მას შემდეგ, რაც ცვლადი არის დაყენებული, ეს შეიძლება არ იყოს მხოლოდ შეუძლებელია ჩასმის ბრძანების გამოყენებით (იხ. SHELL BUILTIN COMMANDS ქვემოთ).

ცვლადი შეიძლება დაინიშნოს ფორმის განცხადებით

სახელი = [ ღირებულება ]

თუ მნიშვნელობა არ არის მოცემული, ცვლადი ენიჭება null string. ყველა ღირებულებამ გაიარა tilde გაფართოება, პარამეტრი და ცვლადი გაფართოება, ბრძანების ჩანაცვლება, არითმეტიკული გაფართოება და ციტატის მოხსნა (იხილეთ EXPANSION ქვემოთ). თუ ცვლადი აქვს მთელი რიცხვითი ატრიბუტის კომპლექტი, მაშინ ღირებულება არითმეტიკული გაფართოების შემთხვევაშიც კი, თუ $ (() ...) გაფართოება არ გამოიყენება (იხილეთ არითმეტიკული გაფართოება ). სიტყვის გაყოფა არ შესრულდება, გარდა "$ @" , სპეციალური განმარტების ქვეშ განმარტებულია ქვემოთ. Pathname გაფართოება არ არის შესრულებული. დავალებათა განცხადებები ასევე შეიძლება გამოცხადდეს როგორც არგუმენტები დეკლარაციის , ტიპტის , ექსპორტის , მკითხველისა და ადგილობრივი ჩამონტაჟებული ბრძანებების შესახებ.

პოზიტიური პარამეტრები

პოზიტიურ პარამეტრს წარმოადგენს ერთი ან მეტი ციფრი, რომელზეც მითითებულია ერთი ან მეტი ციფრი. 0. პოზიტიური პარამეტრი ენიჭება shell- ის არგუმენტებს, როდესაც ის ითხოვს, და შეიძლება გადაწყდეს კომპლექტი builtin ბრძანება. პოზიციურ პარამეტრებს არ შეიძლება დაეკისროთ დავალებების შესრულება. დაყენების პარამეტრი დროებით შეიცვალა, როდესაც ჭურვი ფუნქცია შესრულდება (იხ. ქვემოთ მოყვანილი ფუნქციები ).

როდესაც ერთნიშნაზე მეტი პოზიტიური პარამეტრია გაფართოებული, ეს უნდა იყოს თანდართული კბილებით (იხილეთ EXPANSION ქვემოთ).

სპეციალური პარამეტრები

Shell ეპყრობა რამდენიმე პარამეტრი სპეციალურად. ეს პარამეტრი შეიძლება იყოს მხოლოდ მითითებული; მათთვის დავალება არ არის ნებადართული.

*

აფართოებს პოზიციურ პარამეტრებს, დაწყებული ერთიდან. როდესაც გაფართოება იწყება ორმაგ შეთავაზებებში, ის გაფართოვდება ერთი სიტყვით თითოეული პარამეტრის ღირებულებით, რომელიც გამოყოფილია IFS- ს სპეციალური ცვლადის პირველი სიმბოლოთი. ანუ " $ * " უდრის " $ 1 $ 2 ... ", სადაც არის IFS ცვლადის ღირებულების პირველი ხასიათი. თუ IFS არ არის დაყენებული, პარამეტრების გამოყოფა ფართები. თუ IFS null, პარამეტრების ჩართვა შეუთავსებელია გამყოფების გარეშე.

@

აფართოებს პოზიციურ პარამეტრებს, დაწყებული ერთიდან. როდესაც გაფართოება ხდება ორმაგ შეთავაზებებში, თითოეული პარამეტრი ცალკე სიტყვას აფართოებს. ეს არის " $ @ ", " $ 1 " " $ 2 " - ის უდრის ... როდესაც არ არსებობს პოზიტიური პარამეტრები, " $ @ " და $ @ გაფართოება არაფერი (ანუ ისინი წაიშლება).

#

აფართოებს პოსტირების პარამეტრების რაოდენობას ათობითი.

?

აფართოებს უკანასკნელად შესრულებული წინა პლანტის სტატუსს.

-

გაფართოვდეს მიმდინარე პარამეტრების დროშებით, როგორც მითითებულია invocation, კომპლექტი builtin ბრძანებით ან shell- ის მიერ დადგენილი (როგორიცაა -i ვარიანტი).

$

აფართოებს ჭურვი პროცესის ID- ს. In () ქვეპუნქტი, ის აფართოებს მიმდინარე შელბის პროცესის ID- ს, არა სუბჰილს.

!

აფართოებს ბოლო დროს შესრულებული ფონის (ასინქრონული) ბრძანების პროცესის ID.

0

აფართოებს shell ან shell script- ის სახელს. ეს არის დაყენებული shell ინიციალიზაციისას. თუ bash იძახებს ფაილის ბრძანებებს, $ 0 არის მითითებული ფაილის სახელი. თუ bash იწყება -c პარამეტრით, მაშინ $ 0 არის მითითებული პირველი არგუმენტის შემდეგ სიმებიანი შესრულება, თუ ერთი იმყოფება. წინააღმდეგ შემთხვევაში, ის დაყენებულია ფაილის სახელით, რომელიც გამოიყენება bash- სთვის , როგორც არგუმენტით ნულოვანია.

_

Shell ჩატვირთვისას, დაყენებულია Shell ან Shell Script- ის აბსოლუტური ფაილის სახელი, რომელიც შესრულებულია როგორც არგუმენტის სიაში. მოგვიანებით, გასული არგუმენტი გაფართოების შემდეგ, წინა ბრძანებაში გაფართოვდება. ასევე მითითებული თითოეული ბრძანების სრული ფაილის სახელწოდება და განთავსებული გარემოში ექსპორტირებული ამ ბრძანება. ფოსტის შემოწმებისას, ამ პარამეტრს ახდენს შემოწმების ფოსტის ფაილის სახელი.

Shell ცვლადები

შემდეგი ცვლადები დადგენილია ჭურვი:

სალარო

გაფართოვდა სრული ფაილის სახელი, რომელიც გამოიყენება გამოსაყენებლად ამ შემთხვევის შესახებ.

BASH_VERSINFO

მკითხველის მასივის ცვლადი, რომლის წევრებიც ამ ვერსიის შესახებ ინფორმაციის მოპოვებას ეხება. მასივის წევრებისთვის მიკუთვნებული მნიშვნელობებია:

BASH_VERSINFO [ 0]

ძირითადი ვერსია ნომერი ( გათავისუფლება ).

BASH_VERSINFO [ 1]

უმნიშვნელო ვერსია ნომერი ( ვერსია ).

BASH_VERSINFO [ 2]

პატჩი დონე.

BASH_VERSINFO [ 3]

აშენების ვერსია.

BASH_VERSINFO [ 4]

გათავისუფლების სტატუსი (მაგალითად, ბეტა 1 ).

BASH_VERSINFO [ 5]

MACHTYPE- ის ღირებულება.

BASH_VERSION

აფართოებს სიმებიანი სიმბოლოს, რომელიც აღწერს ბასის ამ მაგალითს.

COMP_CWORD

COMP_LINE

მიმდინარე ბრძანების ხაზი. ეს ცვლადი ხელმისაწვდომია მხოლოდ ჭურვი ფუნქციებში და პროგრამების დასრულების საშუალებებით გამოწვეული გარე ბრძანებები (იხილეთ პროგრამირებადი დასრულება ქვემოთ).

COMP_POINT

COMP_WORDS

მასივის ცვლადი (იხ. მასივები ქვემოთ), რომელიც შედგება ინდივიდუალური სიტყვებისგან, რომელიც მიმდინარე ბრძანების ხაზშია. ეს ცვლადი ხელმისაწვდომია მხოლოდ პროგრამირების დასრულების საშუალებებით (იხ. პროგრამირებადი დასრულება ).

DIRSTACK

მასივის ცვლადი (იხ. ქვემოთ მოყვანილი მასივები ), რომელიც შეიცავს სტეკის მიმდინარე შინაარსს. დირექტივები გამოჩნდება დასტისთვის იმისათვის, რომლებშიც ისინი გამოჩნდება DIRI- ს მიერ . ამ მასივის ცვლადის წევრების მინიჭება შეიძლება გამოყენებულ იქნას იმ დასტაში, რომელიც უკვე შეყვანილია დირექტორიაში, მაგრამ pushd და popd buildins უნდა იქნას გამოყენებული, რათა დაამატოთ და წაშალოთ დირექტორიები. ამ ცვლადის დავალება არ შეცვლის მიმდინარე დირექტორიაში. თუ DIRSTACK არ არის დაყენებული, ის კარგავს თავის სპეციალურ თვისებებს, მაშინაც კი, თუ ის მოგვიანებით გადატვირთულია.

EUID

აფართოებს მიმდინარე მომხმარებლის ეფექტურ მომხმარებლის ID- ს, რომელიც იწყება shell- ში. ეს ცვლადი არის readonly.

FUNCNAME

სახელი გაკეთებული ნებისმიერი გაკეთებული შესრულების ჭურვი ფუნქცია. ეს ცვლადი არსებობს მხოლოდ მაშინ, როდესაც ჭურვი ფუნქცია შესრულდება. FUNCNAME- ზე დავალება არ მოქმედებს და შეცდომის სტატუსს დააბრუნებს. თუ FUNCNAME არ არის დაყენებული, იგი კარგავს თავის სპეციალურ თვისებებს, მაშინაც კი, თუ ის შემდგომში გადატვირთულია.

GROUPS

მასივი ცვლადი, რომელიც შეიცავს ჯგუფების ჩამონათვალს, რომლის მომხმარებელიც არის წევრი. GROUPS- ზე დავალებები არ მოქმედებს და შეცდომის სტატუსს დააბრუნებს. თუ GROUPS არ დაინსტალირდება, ის კარგავს თავის სპეციალურ თვისებებს, თუნდაც ის გადატვირთვის შემდეგ.

HISTCMD

ისტორიის ნომერი, ან ინდექსი სიაში, არსებული ბრძანების. თუ HISTCMD არ არის დაყენებული, ის კარგავს თავის განსაკუთრებულ თვისებებს, მაშინაც კი, თუ ის შემდგომში გადატვირთულია.

მასპინძლის სახელი

ავტომატური დაყენებული მიმდინარე ჰოსტის სახელი.

HOSTTYPE

ავტომატურად დადგენილი სიმებიანი რომ ცალსახად აღწერს ტიპის მანქანა, რომელზეც bash შესრულებაში. ნაგულისხმევი სისტემა დამოკიდებულია.

LINENO

ყოველ ჯერზე ეს პარამეტრი არის მითითებული, შელი შეცვლის ათობითი რიცხვი, რომელიც წარმოადგენს მიმდინარე რიგითი ხაზის ნომერს (დაწყებული 1) სკრიპტის ან ფუნქციის ფარგლებში. როდესაც არ არის სკრიპტი ან ფუნქცია, მნიშვნელობა არ შეცვლილა, რომ იყოს მნიშვნელოვანი. თუ LINENO არ არის გახსნილი , ის კარგავს თავის განსაკუთრებულ თვისებებს, მაშინაც კი, თუ ის მოგვიანებით გადატვირთულია.

MACHTYPE

ავტომატურად დადგენილი სიმებიანი, რომელიც სრულად აღწერს სისტემურ ტიპს, რომელიც bash შესრულებისას, სტანდარტული GNU cpu- კომპანია-სისტემის ფორმატში. ნაგულისხმევი სისტემა დამოკიდებულია.

OLDPWD

წინა სამუშაო დირექტორია, როგორც მითითებული cd ბრძანება.

OPTARG

ბოლო ვარიანტის არგუმენტის ღირებულება, რომელიც მიიღება გრაფტების აგებულებით (იხ. SHELL BUILTIN COMMANDS ქვემოთ).

OPTIND

მომდევნო არგუმენტის მაჩვენებელი დამუშავებული გრაფტების მიერ დამონტაჟებული ბრძანების მიხედვით (იხ. SHELL BUILTIN COMMANDS ქვემოთ).

OSTYPE

ავტომატურად დადგენილი სიმებიანი, რომელიც აღწერს ოპერაციული სისტემა, რომელიც bash შესრულებაში. ნაგულისხმევი სისტემა დამოკიდებულია.

PIPESTATUS

მასივის ცვლადი (იხ. ქვემოთ მოყვანილი მასივები ), რომელიც შეიცავს უშუალო სტატუსის ღირებულებების ჩამონათვალს პროცესებისგან ყველაზე ცოტა ხნის წინ შესრულებული წინა პლანზე (რომელიც შეიძლება შეიცავდეს მხოლოდ ერთ ბრძანებას).

PPID

გარდაცვლილის მშობლის პროცესი ID. ეს ცვლადი არის readonly.

PWD

მიმდინარე სამუშაო დირექტორია, როგორც მითითებული cd ბრძანება.

რანდომი

ყოველ ჯერზე ეს პარამეტრი არის მითითებული, შემთხვევითი რიცხვი 0 და 32767 შორის არის გენერირებული. შემთხვევითი რიცხვების თანმიმდევრობა შეიძლება ინიცირებული იყოს RANDOM- სთვის მნიშვნელობის მინიჭებით. თუ RANDOM არ არის დაყენებული, ის კარგავს თავის სპეციალურ თვისებებს, მაშინაც კი, თუ ის შემდგომში გადატვირთულია.

ხელახლა

შეიტანეთ შეყვანის ხაზის წაკითხვა წაკითხული builtin ბრძანება, როდესაც არგუმენტები მოწოდებულია.

SECONDS

ყოველ ჯერზე ეს პარამეტრი არის მითითებული, რამდენი წამიანი რიცხვი წამში ჩამოსვლის შემდეგ. თუ მნიშვნელობა ენიჭება SECONDS- ს , შემდგომში მოხსენიებული ღირებულება არის წამების რიცხვი, რომლის მიხედვითაც დავალება და ღირებულება. თუ SECONDS არ არის დაყენებული, ის კარგავს თავის სპეციალურ თვისებებს, თუნდაც ის გადატვირთვის შემდეგ.

SHELLOPTS

გააქტიურებული shell პარამეტრების კოლონიით გამოყოფილი სია. თითოეული სიტყვა სიაში არის სწორი არგუმენტი -o პარამეტრი კომპლექტი builtin ბრძანება (იხ. SHELL BUILTIN ბრძანებები ქვემოთ). შელოცვებში გამოჩნდება პარამეტრები, რომლებიც მითითებული არიან როგორც set -o- მიერ. თუ ეს ცვლადი არის გარემოში, როდესაც bash იწყება, თითოეული shell პარამეტრი სიაში იქნება წაკითხვის ადრე ნებისმიერი გაშვების ფაილი. ეს ცვლადი წაკითხულია მხოლოდ.

SHLVL

გაიზარდა ერთი ყოველ ჯერზე მაგალითად bash დაიწყო.

UID

აფართოებს მიმდინარე მომხმარებლის მომხმარებლის ID- ს, რომელიც იწყება shell- ში. ეს ცვლადი არის readonly.

შემდეგი ცვლადები გამოიყენება ჭურვი. ზოგიერთ შემთხვევაში, bash ანიჭებს სტანდარტულ ღირებულებას ცვლადს; ეს შემთხვევები ქვემოთ მითითებულია.

BASH_ENV

თუ ეს პარამეტრი დგინდება, როდესაც bash ახორციელებს shell სკრიპტს, მისი მნიშვნელობა ინტერპრეტირებულია როგორც ფაილის სახელი, რომელიც შეიცავს shell- ს, როგორც ~ /. Bashrc- ს . BASH_ENV- ის ღირებულება ექვემდებარება პარამეტრების გაფართოებას, ბრძანების ჩანაცვლებას და არითმეტიკული გაფართოებას, სანამ განიხილება ფაილის სახელი. PATH არ არის გამოყენებული, რათა მოძებნოთ შესაბამისი ფაილის სახელი.

CDPATH

ძებნის გზა cd ბრძანება. ეს არის კოლონიით გამოყოფილი სია დირექტორიები, სადაც shell გამოიყურება დანიშნულების დირექტორიები მითითებულია cd ბრძანება. ნიმუში ღირებულებაა ".: ~: / Usr".

სვეტები

გამოიყენება შერჩეული builtin ბრძანება, რათა დადგინდეს ტერმინალის სიგანე, როდესაც ბეჭდვის შერჩევის სიები. SIGWINCH- ის მიღებიდან ავტომატურად შეიქმნა.

COMPREPLY

მასივი ცვლადი, საიდანაც bash იკითხება პროგრამების დასრულების საშუალებით გამოწვეული ჭურვი ფუნქციით (იხილეთ პროგრამის დასრულების დასრულება ) მიერ შესრულებული დასრულებები .

FCEDIT

ნაგულისხმევი რედაქტორი fc buildin ბრძანება.

FIGNORE

კოლონის გამოყოფილი სიუჟეტების იგნორირება, როდესაც შესრულების ფაილის დასრულების (იხ. READLINE ქვემოთ). ფაილის სახელი, რომლის სულელიც შეესატყვისება FIGNORE- ში არსებულ ერთ-ერთ ჩანაწერს გამორიცხულია შესაბამისი ფაილის სახელიდან . ნიმუში ღირებულებაა ".o: ~".

GLOBIGNORE

კოლონის გამოყოფილი ჩამონათვალი ნიმუშების განსაზღვრის კომპლექტი filenames უნდა იგნორირება მიერ pathname გაფართოებას. თუ GLOBIGNORE- ში ერთ-ერთი ნიმუში შეესაბამება ბირთვის გაფართოების ნიმუში შესაბამისი ფაილის სახელი, ის ამოღებულია სიიდან.

HISTCONTROL

თუ უგულებელყოფს მნიშვნელობა ignorespace , ხაზები, რომლებიც იწყება სივრცეში ხასიათის არ შედის ისტორიის სიაში. თუ იგნორირებული ღირებულების დადგენა , უკანასკნელი ისტორიის ხაზის შესაბამისი ხაზები არ შედის. უგულებელყოფის ღირებულება ორ ვარიანტს აერთიანებს. თუ შეუძლებელია, ან თუ სხვა მნიშვნელობაზე მეტია, ვიდრე ზემოთ, ყველა ხაზი იკითხება პარკირების მიერ ისტორიის სიაში შენახულია HISTIGNORE- ის ღირებულებით. ეს ცვლადის ფუნქცია შედის HISTIGNORE- ის მიერ. მრავალსაუკუნოვანი კომბინირებული ბრძანების მეორე და შემდგომი ხაზები არ არის ტესტირება და დაემატა ისტორიას ისტორიის მიუხედავად, HISTCONTROL- ის მნიშვნელობა.

HISTFILE

ფაილის სახელი, რომელშიც ბრძანებათა ისტორია გადაარჩინა (იხ. ისტორიის ქვემოთ). ნაგულისხმევი მნიშვნელობა ~ /. Bash_history . თუ შეუძლებელია, ბრძანების ისტორია არ არის შენახული, როდესაც ინტერაქტიული გარსი გადის.

HISTFILESIZE

ისტორიაში არსებული ხაზების მაქსიმალური რაოდენობა. როდესაც ეს ცვლადი ენიჭება მნიშვნელობას, საჭიროა ისტორიის ფაილი დამახსოვრებული, რომ არ შეიცავდეს არაუმეტეს ხაზების რაოდენობას. ნაგულისხმევი მნიშვნელობა 500. ისტორიული ფაილი ასევე ამ ფრაზითაა გადმოწერილი მას შემდეგ, რაც ინტერაქტიული გარსი გადის.

HISTIGNORE

კოლონის გამოყოფილი ჩამონათვალი ნიმუშების გამოიყენება გადაწყვიტოს რომელიც ბრძანება ხაზები უნდა იყოს შენახული ისტორიის სიაში. თითოეული ნიმუში იწყება ხაზის დასაწყისში და უნდა შეესაბამებოდეს სრულ ხაზს (არ არის ჩანერგილი ` * " დამატება). თითოეული ნიმუში შემოწმებულია ხაზის წინააღმდეგ, მას შემდეგ, რაც გამოიყენება HISTCONTROL- ის მიერ განსაზღვრული ამოწმებები . გარდა ჩვეულებრივი ჭურვი ნიმუში შესატყვისი სიმბოლოები, ` & 'შეესაბამება წინა ისტორიის ხაზს. ` და 'შეიძლება გაიქცნენ backslash გამოყენებით; მატჩის მცდელობის დაწყებამდე ზურგსკი ამოღებულია. მრავალსაუკუნოვანი კომბინირებული ბრძანების მეორე და შემდგომი ხაზები არ არის ტესტირება და დაემატა ისტორიაში HISTIGNORE- ს ღირებულების მიუხედავად .

HISTSIZE

ბრძანების ისტორიაში გახსოვდეთ ბრძანებათა ისტორიაში (იხილეთ ისტორია ქვემოთ). ნაგულისხმევი ღირებულება 500.

მთავარი

მიმდინარე მომხმარებლის მთავარი დირექტორია; ნაგულისხმევი არგუმენტი cd buildin ბრძანებისათვის. ამ ცვლადის ღირებულება ასევე გამოიყენება ტილდის გაფართოებისას.

HOSTFILE

შეიცავს სახელის ფაილის იგივე ფორმატში, როგორც / etc / hosts, რომელიც უნდა წაიკითხო, როდესაც shell- ს უნდა დაასრულოს hostname. შესაძლო hostname დასრულების ნუსხა შეიძლება შეიცვალოს, როდესაც იგი მუშაობს; მომდევნო დროს დამონტაჟებულია მასპინძელი დამთავრების მცდელობა, შეცვალა ღირებულება, შეიცვლება ახალი ფაილის შინაარსი არსებულ სიაში. თუ HOSTFILE არის მითითებული, მაგრამ არ აქვს მნიშვნელობა, bash მცდელობები წაკითხვის / etc / მასპინძლებს მიიღონ სიაში შესაძლო hostname დასრულების. როდესაც HOSTFILE არ არის დაყენებული, მასპინძლების სია წაიშლება .

IFS

შინაგანი სფერო გამყოფი, რომელიც გამოიყენება სიტყვა გაყოფის შემდეგ გაფართოება და გაყოფილი ხაზები სიტყვები წაკითხვის builtin ბრძანება. ნაგულისხმევი მნიშვნელობა `` > ''.

IGNOREEOF

აკონტროლებს EOF სიმბოლოს მიღებას ინტერაქტიული გარსით, როგორც ერთადერთი შეყვანა. თუ მითითებული, ღირებულება არის რიგი ზედიზედ EOF სიმბოლოები, რომელიც უნდა აკრეფილი როგორც პირველი სიმბოლოების შეყვანის ხაზი ადრე bash გასასვლელები. თუ ცვლადი არსებობს, მაგრამ არ აქვს რიცხვითი მნიშვნელობა, ან მნიშვნელობა არ აქვს, ნაგულისხმევი მნიშვნელობაა 10. თუ ის არ არსებობს, EOF ნიშნავს შეყვანის ბოლოს შელზე.

INPUTRC

ფაილის გახსნისას ფაილის დასაწყებად , ~ / .ინტუსტრში ნაგულისხმევი (იხილეთ READLINE ქვემოთ).

LANG

გამოყენებული იქნას ლოკალური კატეგორიის განსაზღვრა ნებისმიერი კატეგორიისთვის, რომელიც სპეციალურად არჩეულია ცვლადით დაწყებული LC_- სთან .

LC_ALL

ეს ცვლადი გადალახავს LANG- ის მნიშვნელობას და სხვა LC_ ცვლადს, რომელიც განსაზღვრავს ლოკალურ კატეგორიას.

LC_COLLATE

ეს ცვლადი განსაზღვრავს ფორმულთა გაფართოების შედეგების დახარისხებისას და განსაზღვრავს სპექტრის გამოხატვის, ეკვივალენტობის კლასების, და კოლაბორაციის სეგმენტების ქცევის გაფართოებას და ნიმუში შესატყვისი.

LC_CTYPE

ეს ცვლადი განსაზღვრავს სიმბოლოების ინტერპრეტაციას და პერსონაჟების ქცევის ქცევას გზების გაფართოებისა და ნიმუში შესატყვისი.

LC_MESSAGES

ეს ცვლადი განსაზღვრავს ლოკალურ გამოყენებას ორმაგად ციტირებული სტრიქონების თარგმნა $ წინა .

LC_NUMERIC

ეს ცვლადი განსაზღვრავს ლოკალურ კატეგორიას ნომრის ფორმატირებისთვის.

ხაზები

გამოიყენება შერჩეული აშენდა ბრძანება, რათა დადგინდეს სვეტის სიგრძე ბეჭდვის შერჩევის სიები. SIGWINCH- ის მიღებიდან ავტომატურად შეიქმნა.

ფოსტა

თუ ეს პარამეტრი დაყენებულია ფაილის სახით და MAILPATH ცვლადი არ არის დადგენილი, bash იუწყება მომხმარებლის ჩამოსვლის მომხმარებლის მითითებულ ფაილში.

MAILCHECK

განსაზღვრავს, თუ რამდენად ხშირად (წამებში) bash ამოწმებს ფოსტისთვის. ნაგულისხმევი 60 წამი. როდესაც დროა შეამოწმოს ფოსტისთვის, შელფი ასე გამოიყურება პირველადი სწრაფი გამოსატანად. თუ ეს ცვლადი არ არის დაყენებული, ან დააყენეთ მნიშვნელობა, რომელიც არ არის რიცხვი მეტია ან ტოლია ნულოვანი, შელი გამორთავს ფოსტის შემოწმებას.

ფოსტა

მსხვილფეხა რქოვანთა გამოყოფილი სია სახელები შემოწმდება ფოსტისთვის. წერილის დაბეჭდვისას, როდესაც კონკრეტულ ფაილში ფოსტის ჩამოსვლა შეიძლება დაკონკრეტდეს, შეიძლება შეიცავდეს ფაილის სახელის შეცდომას `?". ტექსტის ტექსტში გამოყენებამდე $ _ აფართოებს მიმდინარე ფოსტის სახელს. მაგალითი:

MAILPATH = '/ var / mail / bfox? "თქვენ გაქვთ ფოსტა": ~ / shell-mail? "$ _ აქვს ფოსტა!"'

Bash- ი ამ ცვლადის სტანდარტულ მნიშვნელობას ანიჭებს, მაგრამ მომხმარებლის ფოსტის ფაილების ადგილმდებარეობის გამოყენება არის სისტემა დამოკიდებული (მაგალითად, / var / mail / $ USER ).

OPTERR

თუ 1-ის მნიშვნელობაზე დაყრდნობით, bash აჩვენებს შეცდომის შეტყობინებებს გენერირებული getopts buildin ბრძანება (იხ. SHELL BUILTIN COMMANDS ქვემოთ). OPTERR ინიციალიზებულია 1 ყოველ ჯერზე ჭურვი არის მოწოდებული ან შელი სკრიპტი შესრულებულია.

PATH

ძებნის გზა ბრძანებები. ეს არის კოლონიით გამოყოფილი სია დირექტორიები, სადაც Shell გამოიყურება ბრძანებები (იხ. COMMAND აღსრულების ქვემოთ). ნაგულისხმევი გზა სისტემაზეა დამოკიდებული და ადგენს ადმინისტრატორს, რომელიც აყენებს bash- ს . საერთო ღირებულება არის `` / usr / gnu / bin: / usr / local / bin: / usr / ucb: / bin: / usr / bin: ''.

POSIXLY_CORRECT

თუ ეს ცვლადი არის გარემოში, როდესაც ბატალი იწყება, შელი შედის პოსქსის რეჟიმში, სანამ დაიწყებს ჩატვირთვის ფაილების წაკითხვას, როგორც - თუ იგი დაყენებულია შელბის გაშვებისას, bash საშუალებას იძლევა posix რეჟიმი , თითქოს ბრძანება კომპლექტი- posix შესრულებულია.

PROMPT_COMMAND

თუ მითითებული, ღირებულება შესრულებულია, როგორც ბრძანება ყოველი პირველადი სწრაფი გამოსაგზავნად.

PS1

ამ პარამეტრის მნიშვნელობა გაფართოვდა (იხ. PROMPTING ქვემოთ) და გამოიყენება როგორც პირველადი სწრაფი სიმებიანი. ნაგულისხმევი მნიშვნელობა `` \ s- \ v \ $ ''.

PS2

ამ პარამეტრის მნიშვნელობა გაფართოვდა როგორც PS1- ით და გამოიყენება როგორც მეორადი სწრაფი სიმებიანი. ნაგულისხმევი არის `` > "'.

PS3

ამ პარამეტრის მნიშვნელობა გამოიყენება როგორც ბრძანების შერჩევისთვის (იხ. SHELL GRAMMAR ზემოთ).

PS4

ამ პარამეტრის მნიშვნელობა PS1- თან ერთად გაფართოვდა და ღირებულება დაიბეჭდება აღსასრულებლად ყოველი ბრძანების დროს. PS4- ის პირველი ხასიათი რამდენჯერმე გაიმეორება, რამდენადაც საჭიროა, მიუთითოს მრავალრიცხოვანი ინდიკაცია. ნაგულისხმევი არის `` + ''.

დროის ფორმატი

ამ პარამეტრის მნიშვნელობა გამოიყენება როგორც ფორმატის სტრიქონი, სადაც მითითებულია, თუ როგორ უნდა აისახოს მილსადენის დროში გამოყენებული დრო , სადაც გამოყენებულია დროით დაცული სიტყვები. % სიმბოლო წარმოგიდგენთ გაქცევის თანმიმდევრობას, რომელიც გაფართოვდა დროის ღირებულებას ან სხვა ინფორმაციას. გაქცევის sequences და მათი მნიშვნელობა შემდეგნაირად; braces აღინიშნოს სურვილისამებრ ნაწილი.

%%

ლიტერატურული.

[ p ] [ლ] რ

გასული დრო წამებში.

[ p ] [ლ] U

CPU- ის წამების რაოდენობა მომხმარებელ რეჟიმში იხარჯება.

[ p ] [ლ] S

CPU წამის რაოდენობა სისტემაში რეჟიმით გაატარა.

% P

პროცენტული პროცენტული მაჩვენებელი, როგორც (% U +% S) /% R.

სურვილისამებრ p არის ციფრი, რომელიც განსაზღვრავს სიზუსტეს , ათობითი წერტილის შემდეგ ფრაქციული რიცხვების რიცხვს. 0-ის მნიშვნელობა არ იძლევა ათობითი წერტილი ან ფრაქციის გამომუშავებას. განისაზღვროს სამი წერტილიდან ათწილადი წერტილი; 3-ზე მეტ მნიშვნელობას იცვლება 3. თუ p არ არის მითითებული, მნიშვნელობა 3 გამოიყენება.

სურვილისამებრ l განსაზღვრავს უფრო მეტ ფორმატს, მათ შორის წუთებს, ფორმა MM m SS . FF s. P- ის ღირებულება განსაზღვრავს თუ არა ფრაქცია.

თუ ეს ცვლადი არ არის დადგენილი, bash მოქმედებს, თითქოს ღირებულება $ $ \ nreal \ t% 3lR \ nuser \ t% 3lU \ ns% 3lS ' . თუ მნიშვნელობა null, არ არის დრო ინფორმაცია არ არის ნაჩვენები. გადმოკიდული ახალი ხაზი დაემატება ფორმატის სტრიქონს.

TMOUT

თუ ნულზე მეტი ღირებულების დადგენა , TMOUT განიხილება, როგორც ნაგულისხმევ დროში წაკითხული ჩაშენებული. შერჩევა ბრძანება წყვეტს თუ შეყვანა არ მოხდება TMOUT წამის შემდეგ, როდესაც შეყვება ტერმინალში მოდის. In ინტერაქტიული გარსი, მნიშვნელობა ინტერპრეტირებული როგორც წამში რაოდენობა დაველოდოთ შეყვანის შემდეგ გაცემის პირველადი სწრაფი. ბაშმა წყვეტს იმ წამში მოლოდინს, თუ შეყვანა არ ჩამოვა.

auto_resume

ეს ცვლადი აკონტროლებს თუ როგორ შეესაბამება shell ურთიერთქმედებს მომხმარებელი და სამუშაო კონტროლი. თუ ეს ცვლადი დგინდება, ერთჯერადი სიტყვა უბრალო ბრძანებები გადამისამართების გარეშე განიხილება, როგორც არსებული შეჩერებული სამუშაოს განახლების კანდიდატები. არ არსებობს ბუნდოვანი ნებართვა; თუ ერთზე მეტი სამუშაოა დაწყებული სიმებიანი აკრეფით, სამუშაოს ბოლო დროს შეარჩია. შეჩერებული სამუშაოს სახელი, ამ კონტექსტში არის ბრძანების ხაზი, რომელიც გამოიყენება. თუ ზუსტად დადგენილია სიდიდე, უნდა მიეთითოს შევსებული სამუშაოების სახელწოდება; თუ დამონტაჟდება, სავალდებულო მიწოდების საჭიროება შეჩერებული შეჩერებული სამუშაოს დასახელება. სათადარიგო ღირებულება უზრუნველყოფს ფუნქციონალური ანალოგური %? სამუშაოს იდენტიფიკატორი (იხ. JOB CONTROL ქვემოთ). თუ რომელიმე სხვა ღირებულებას მიენიჭება, მიწოდებული სიმებიანი უნდა იყოს შეჩერებული სამუშაოს სახელი; ეს უზრუნველყოფს ფუნქციონალური ანალოგიურად სამუშაო იდენტიფიკატორი.

histchars

ორი ან სამი სიმბოლო, რომლებიც აკონტროლებენ ისტორიის გაფართოებას და ტოქსიკონს (იხ. ისტორიული ექსპანსია ქვემოთ). პირველი ხასიათი ისტორიის გაფართოების ხასიათია, რომელიც ასახავს ისტორიის გაფართოების დაწყებას, ჩვეულებრივ ` ! '. მეორე სიმბოლო არის სწრაფი ჩანაცვლების ხასიათი, რომელიც გამოყენებულია წინა ბრძანებაში ხელახლა გაშვებისთვის, როგორც ერთი სტრიქონის ჩაანაცვლებისთვის. ნაგულისხმევი არის ` ^ '. სურვილისამებრ მესამე ხასიათი არის ხასიათი, რომელიც მიუთითებს იმაზე, რომ დანარჩენი ხაზი არის კომენტარი, როდესაც აღმოჩნდა სიტყვა პირველი ხასიათი, ჩვეულებრივ ` # ". ისტორიის კომენტარი ხასიათს ატარებს ისტორიის ჩანაცვლებას, რომ დატოვოს დარჩენილი სიტყვები. ეს სულაც არ გამოიწვევს shell parser მკურნალობა დანარჩენი ხაზი, როგორც კომენტარი.

კოლექტორები

Bash უზრუნველყოფს ერთ-განზომილებიანი მასივის ცვლადებს. ნებისმიერი ცვლადი შეიძლება გამოყენებულ იქნას როგორც მასივი; გამოაცხადოს აშენებული მკაფიოდ გამოაცხადოს მასივი. არ არსებობს მაქსიმალური ზღვარი მასივის ზომაზე და არც რაიმე მოთხოვნა, რომლებშიც უნდა იყოს ინდექსები ან დანიშნულები. მასივები ინდექსები იყენებენ მთელი რიცხვების გამოყენებით და ნულოვანი დაფუძნებულია.

მასივი ქმნის ავტომატურად, თუ ცვლადი ენიჭება სინტაქსის სახელის [ ქვეპუნქტი ] = ღირებულების გამოყენებით . აბონენტი განიხილება, როგორც არითმეტიკული გამოხატულება, რომელიც უნდა შეაფასოს ნულის ტოლი ან მეტი. მკაფიოდ გამოაცხადოს მასივი, გამოაცხადოს სახელი-გვარი (იხ. SHELL BUILTIN COMMANDS ქვემოთ). გამოაცხადეთ - სახელი [ საანგარიშო ] ასევე მიღებულია; გამოწერა იგნორირებულია. ატრიბუტები შეიძლება დაინიშნოს მასივის ცვლადში დეკლარირებისა და მკითხველისთვის. თითოეული ატრიბუტი ვრცელდება მასივის ყველა წევრზე.

მასივები ენიჭება ფორმის სახელის შედგენილ დავალებებს = ( ღირებულება 1 ... ღირებულება n ) , სადაც თითოეული ღირებულება არის ფორმა [ სუბტიტრი ] = სტრიქონი . საჭიროა მხოლოდ სიმებიანი . თუ სურვილისამებრ ფრჩხილებსა და სტრიფტებს მიეწოდება, ეს ინდექსი ენიჭება; სხვაგვარად ინდექსის ელემენტის მინიჭება არის ბოლო მაჩვენებელი, რომელსაც ენიჭება განცხადება პლუს ერთი. ინდექსირება ნულს იწყება. ეს სინტაქსი ასევე მიიღება დეკლარაციის აგებულებით. ინდივიდუალური მასივის ელემენტები შეიძლება გამოყენებულ იქნას სახელით [ Subscript ] = ღირებულების სინტაქსის გამოყენებით.

არეების განადგურებისას გამოყენებული შენობა გამოიყენება. არჩეული სახელი [ ქვეპუნქტი ] შეიცვლის მასივის ელემენტს ინდექსიდან . არჩეული სახელი , სადაც სახელი არის მასივი, ან შეუძლებელია სახელი [ აბონენტი ], სადაც ქვეტიპი არის * ან @ , შლის მთელ მასივს.

დეკლარირება , ადგილობრივი და მკითხველი აგებულების თითოეული მიიღებს -a პარამეტრი განსაზღვროს მასივი. წაკითხული builtin- ი- a- ს პარამეტრი მიანიჭებს სიტყვების ჩამონათვალს სტანდარტული შეყვანისგან მასივიდან. კომპლექტი და დეკლარაცია აშენებულები აჩვენებს მასივის მნიშვნელობებს ისე, რომ მათ საშუალებას აძლევენ, გამოიყენონ დავალებები.

EXPANSION

გაფართოება ხორციელდება ბრძანებათა სიაში, მას შემდეგ, რაც სიტყვები გაყოფილია. არსებობს 7 გაფართოების გაფართოება: ბრმა გაფართოება , tilde გაფართოება , პარამეტრი და ცვლადი გაფართოება , ბრძანების ჩანაცვლება , არითმეტიკული გაფართოება , სიტყვა გაყოფა და გზას გაფართოება .

გაფართოების ბრძანებაა: ბრტყელი გაფართოება, tilde გაფართოება, პარამეტრი, ცვლადი და არითმეტიკული გაფართოება და ბრძანება ჩანაცვლება (გაკეთებულია მარცხნიდან მარჯვნივ), სიტყვის გაყოფა და გზა გაფართოება.

სისტემებს, რომლებიც მას მხარს დაუჭერენ, არსებობს დამატებითი გაფართოება: პროცესის ჩანაცვლება .

ბრმა გაფართოება

ბრტყელი გაფართოება არის მექანიზმი, რომლის საშუალებითაც შესაძლებელია თვითნებური სიმები გენერირებული. ეს მექანიზმი მსგავსია pathname- ის გაფართოებასთან , მაგრამ საჭიროა წარმოქმნილი ფაილები არ არსებობს. ნიმუშები უნდა გაიზარდოს ფრჩხილის გაფართოებული ფორმა, რომელიც მოჰყვა სურვილისამებრ პრეამბულის სახეს, რასაც მოჰყვება სერია მძიმით გამოყოფილი წყვილი სიმებიანი წყვილი, რასაც მოჰყვება სასურველი ფოსტა . პრეამბულას შეესაბამება თითოეული სიმებიანი შეფუთვა, რომელიც შეიცავს ბრჭყალებში, ხოლო ფოსტის შრიფტის შემდეგ დაემატება ყოველი მომდევნო სტრიქონი, გაფართოება მარცხნიდან მარჯვნივ.

კბილების გაფართოება შეიძლება შეიზღუდოს. თითოეული გაფართოებული სიის შედეგები არ არის დახარისხებული; მარცხნიდან მარჯვნივ შეკვეთა დაცულია. მაგალითად, { d, c, b } e გაფართოვდება `ade ace abe '.

ბრტყელი გაფართოება ხორციელდება ნებისმიერი სხვა გაფართოების წინ, და სხვა გაფართოებებისთვის დამახასიათებელი პერსონაჟები დაცულია შედეგში. ეს მკაცრად ტექსტურია. Bash არ ვრცელდება რაიმე სინტაქსურ ინტერპრეტაციას კონტექსტში გაფართოების კონტექსტში ან ტექსტში.

ეს კონსტრუქცია, როგორც წესი, გამოიყენება როგორც მოკლედ, მაშინ, როდესაც ზემოთ ჩამოთვლილი მაგალითების სიგრძის საერთო პრეფიქსი უნდა აღემატებოდეს:

mkdir / usr / local / src / bash / {ძველი, ახალი, dist, შეცდომები}

ან

chown root /usr/visucb/{ex.edit},lib/{ex?.?* ,howhow_ex}}

კბილების გაფართოება შემოთავაზებულია მცირე შეუთავსებლობასთან დაკავშირებული ისტორიული ვერსიით. sh არ ახორციელებს გახსნას ან დახურვას braces სპეციალურად როდესაც ისინი გამოჩნდება, როგორც ნაწილი სიტყვის, და ინარჩუნებს მათ გამომავალი. Bash მოხსნის braces საწყისი სიტყვები შედეგად გაუწიოს გაფართოებას. მაგალითად, სიტყვა შევიდა როგორც ფაილი {1,2} როგორც ჩანს, იდენტურად გამომავალი. იგივე სიტყვა არის output1 როგორც file1 file2 შემდეგ გაფართოების bash . თუ მკაცრი თავსებადობა sh- ით არის სასურველი, დაიწყეთ bash + B ვარიანტი ან გამორთვა ბრმა გაფართოების ერთად + B პარამეტრი კომპლექტი ბრძანება (იხ. SHELL BUILTIN ბრძანებები ქვემოთ).

Tilde გაფართოება

თუ სიტყვა იწყება unquoted tilde character (` ~ '), ყველა სიმბოლოა, რომელიც წინა უნაკლო სლაშის წინ უძღვის (ან ყველა სიმბოლოს, თუ არ არსებობს unquoted slash) ითვლება tilde- პრეფიქსი . თუ tilde- პრეფიქსიდან არცერთი სიმბოლო არ არის ციტირებული, tilde- ის შემცველი tilde-prefix- ის სიმბოლოები ითვლება შესაძლო შესვლის სახელით . თუ ამ მომხმარებლის სახელი null string, tilde შეიცვალა ღირებულება shell პარამეტრი HOME . თუ სახლი არ არის დაყენებული, ნაცვლად შეფუთული მომხმარებლის მთავარი დირექტორია შეიცვალა. წინააღმდეგ შემთხვევაში, tilde-prefix შეიცვლება მთავარი დირექტორია ასოცირდება მითითებული შესვლა სახელი.

თუ tilde-prefix არის `~ +", shell- ის ცვლადი PWD- ის ღირებულება იცვლება tilde- პრეფიქსით. თუ tilde-prefix არის `~ -", shell ცვლადი OLDPWD- ის მნიშვნელობა , თუ იგი არის მითითებული, შეიცვალა. თუ tilde-prefix- ში შემავალი სიმბოლოები შედგება ნომერ N- ისაგან, სასურველია `+ 'ან` -' მიხედვით, tilde-prefix შეიცვლება საცავის დასტის შესაბამისი ელემენტით, რადგან ეს გამოჩნდება დრტ -ს პრეფიქსი, რომელიც არგუმენტად ითვლება. თუ tilde-prefix- ში შემავალი სიმბოლოები შედგება ნომრის გარეშე, `+ 'ან` `-", + + აიღება.

თუ შესვლა სახელი არასწორია, ან tilde გაფართოება ვერ, სიტყვა უცვლელი.

თითოეული ცვლადი დავალება შემოწმებულია დაუყოვნებლივი tilde-prefixes შემდეგ დაუყოვნებლივ : ან = . ასეთ შემთხვევებში შესრულებულია ტელეს გაფართოება. შესაბამისად, შეიძლება გამოყენებულ იქნას ფაილები სახელწოდებით PATH , MAILPATH და CDPATH , და shell- ის გაფართოებული მნიშვნელობა.

პარამეტრის გაფართოება

` $ 'სიმბოლოს წარმოადგენს პარამეტრის გაფართოება, ბრძანების ჩანაცვლება ან არითმეტიკული გაფართოება. პარამეტრის სახელი ან სიმბოლო უნდა გაფართოვდეს შეიძლება იყოს ბლოკირებებში, რომლებიც სურვილისამებრ არიან, მაგრამ ემსახურება, რათა დაიცვას ცვლადი, რომელიც გაფართოვდა პერსონაჟებისგან დაუყოვნებლივ მას შემდეგ, რაც შეიძლება მოხდეს მისი სახელით ინტერპრეტაცია.

როდესაც braces გამოიყენება, შესატყვისი დამუხრუჭება არის პირველი ` } ", რომელიც არ იშლება ცირკულაციით ან ციტირებული სიმებიდან, და არა ჩაშენებული არითმეტიკული გაფართოების, ბრძანების ჩანაცვლების ან პარამეტრების გაფართოების ფარგლებში.

პარამეტრის მნიშვნელობა შეცვლილია. საჭიროა braces საჭიროების შემთხვევაში, პარამეტრი არის ერთზე მეტი ციფრით პოზიტიური პარამეტრი, ან როდესაც პარამეტრი მოჰყვება ხასიათს, რომელიც არ არის ინტერპრეტირებული მისი სახელის ნაწილი.

ქვემოთ მოყვანილი თითოეული შემთხვევის დროს, სიტყვა ექვემდებარება Tilde გაფართოებას, პარამეტრების გაფართოებას, ბრძანების ჩანაცვლებას და არითმეტიკული გაფართოებას. როდესაც არ ახორციელებს შემცვლელი გაფართოებას, bash ტესტები პარამეტრი, რომელიც არ არის დაყენებული ან null; უგულებელყოფა მსხვილი ნაწლავის შედეგების გამოცდა მხოლოდ პარამეტრისთვის, რომელიც არ არის გახსნილი.

გამოიყენეთ ნაგულისხმები ღირებულებები . თუ პარამეტრი არ არის დაყენებული ან ნულოვანი, სიტყვა გაფართოება შეიცვალა. წინააღმდეგ შემთხვევაში, პარამეტრის მნიშვნელობა შეცვლილია.

მიუთითეთ ნაგულისხმები მნიშვნელობები . თუ პარამეტრი არ არის დაყენებული ან null, სიტყვა გაფართოება ენიჭება პარამეტრს . პარამეტრის ღირებულება მაშინ შეიცვალა. ამ გზით შეიძლება არ დაინიშნოს პოზიტიური პარამეტრები და სპეციალური პარამეტრები.

გამოტანის შეცდომა თუ Null ან Unset . თუ პარამეტრი Null ან Unset, სიტყვის გაფართოება (ან იმ შემთხვევაში, თუ სიტყვა არ არის წარმოდგენილი) არის დაწერილი სტანდარტული შეცდომა და შელი, თუ ეს არ არის ინტერაქტიული, გასვლა. წინააღმდეგ შემთხვევაში, პარამეტრის მნიშვნელობა შეცვლილია.

გამოიყენეთ ალტერნატიული ღირებულება . თუ პარამეტრი არ არის ნულოვანი ან არარსებული, არაფერი შეიცვლება, წინააღმდეგ შემთხვევაში სიტყვის გაფართოება შეიცვალა.

აფართოებს ცვლადების სახელს, რომელთა სახელები იწყება პრეფიქსით , რომელიც გამოყოფილია IFS სპეციალური ცვლადის პირველი სიმბოლოთი.

პარამეტრის ღირებულების სიმბოლოები შეიცვალა. თუ პარამეტრი არის * ან @ , შეცვლის ღირებულება არის პოზიტიური პარამეტრების რაოდენობა. თუ პარამეტრი არის * ან @ მიერ გამოწერილი მასივი სახელი, შეიცვალა მნიშვნელობა არის მასივის ელემენტების რაოდენობა.

სიტყვა გაფართოვდა წარმოების ნიმუში ისევე როგორც pathname გაფართოებას. თუ ნიმუში შეესაბამება პარამეტრის ღირებულების დაწყებას, მაშინ გაფართოების შედეგი არის პარამეტრის გაფართოებული მნიშვნელობა უცვლელი შესატყვისი ნიმუში (`` # ") ან გრძელვადიანი შესატყვისი ნიმუში (` ` ## " 'საქმე) წაიშალა. თუ პარამეტრი არის @ ან * , თითოეული მოქმედი პარამეტრისთვის გამოიყენება ნიმუში მოხსნა ოპერაცია, ხოლო გაფართოება შედეგიანი სიაა. თუ პარამეტრი არის მასივის ცვლადი, რომელიც შეივსება @ ან * , ნიმუშის თითოეული წევრისთვის გამოიყენება ნიმუში მოხსნა ოპერაცია, ხოლო გაფართოება არის შედეგიანი სია.

სიტყვა გაფართოვდა წარმოების ნიმუში ისევე როგორც pathname გაფართოებას. თუ ნიმუში შეესაბამება პარამეტრის გაფართოებულ მნიშვნელობას, მაშინ გაფართოების შედეგია პარამეტრის გაფართოებული მნიშვნელობა, რომელიც შეესაბამება უმოკლეს შესატყვისი ნიმუში (`` % ") ან გრძელვადიანი შესატყვისი ნიმუში (` ` % % "შემთხვევაში) წაიშალა. თუ პარამეტრი არის @ ან * , თითოეული მოქმედი პარამეტრისთვის გამოიყენება ნიმუში მოხსნა ოპერაცია, ხოლო გაფართოება შედეგიანი სიაა. თუ პარამეტრი არის მასივის ცვლადი, რომელიც შეივსება @ ან * , ნიმუშის თითოეული წევრისთვის გამოიყენება ნიმუში მოხსნა ოპერაცია, ხოლო გაფართოება არის შედეგიანი სია.

ნიმუში გაფართოვდა წარმოების ნიმუში ისევე როგორც pathname გაფართოებას. პარამეტრი გაფართოვდა და მისი ღირებულების ნიმუში გრძელი მატჩი შეცვალა სიმებიანი . პირველ ფორმით, მხოლოდ პირველი მატჩი შეცვლის. მეორე ფორმა იწვევს ნიმუშის ყველა მატჩს შეცვალოს სიმებიანი . თუ ნიმუში იწყება # , იგი უნდა შეესაბამებოდეს დასაწყისში გაფართოებული ღირებულების პარამეტრი . თუ ნიმუში იწყება % , ეს უნდა ემთხვეოდეს დასასრულს გაფართოებული ღირებულება პარამეტრი . თუ სიმებიანი არის null, ნიმუში მატჩები წაიშლება და / ქვემოთ მოყვანილი ნიმუში შეიძლება გამოტოვა. თუ პარამეტრი არის @ ან * , ჩანაცვლებითი ოპერაცია გამოიყენება თითოეული პოზიციურ პარამეტრზე, ხოლო გაფართოება არის შედეგიანი სია. თუ პარამეტრი არის მასივის ცვლადი, რომელიც შეივსება @ ან * , ჩანაცვლების ოპერაცია გამოიყენება მასივის თითოეულ წევრზე, ხოლო გაფართოება შედეგიანი სიაა.

სარდლობის შეცვლა

ბრძანების ჩანაცვლება საშუალებას ბრძანება გამოიმუშავებს ბრძანების შეცვლის ბრძანებას. არსებობს ორი ფორმა:

$ ( ბრძანება )

ან

` ბრძანება`

Bash ასრულებს გაფართოებას შესრულების ბრძანებით და შეცვლის ბრძანება ჩანაცვლების სტანდარტული გამოსვლის ბრძანება, ნებისმიერი გადმოკიდული newlines წაშლილია. ჩანერგილი newlines არ წაიშლება, მაგრამ ისინი შეიძლება ამოღებულ დროს სიტყვა გაყოფა. ბრძანება ჩანაცვლების $ (კატა ფაილი ) შეიძლება შეიცვალოს ეკვივალენტური მაგრამ სწრაფად $ (< file ).

როდესაც ჩანაცვლება ძველი ტიპის backquote ფორმა გამოიყენება, backslash ინარჩუნებს მისი ლიტერატურული მნიშვნელობა გარდა მაშინ, როდესაც მოჰყვა $ , ` , ან \ . პირველი backquote არ უძღვის backslash წყვეტს ბრძანება ჩანაცვლების. $ ( ბრძანების ) ფორმის გამოყენებისას, ყველა სიმბოლოს მწკრივებს შორის ბრძანება ქმნის; არავითარი მკურნალობა არ არის.

ბრძანების შეცვლა შეიძლება შეიცვალოს. ბუკლეტის ფორმის გამოყენებისას, შიდა ბუჭუკების გაქცევა უკუჩვენებით.

თუ ჩანაცვლებითი ორმაგი შეთავაზებების ფარგლებში გამოჩნდება, სიტყვა გაყოფა და გზავნილის გაფართოება არ ხდება შედეგებზე.

არითმეტიკული გაფართოება

არითმეტიკული გაფართოება საშუალებას იძლევა არითმეტიკული გამოხატვის შეფასება და შედეგების ჩანაცვლება. არითმეტიკული გაფართოების ფორმატია:

$ (( გამოხატვა ))

გამოხატულება განიხილება, თითქოს ორმაგი ციტატების ფარგლებში იყო, მაგრამ ორმაგი ციტატა ფრჩხილებში შიგნით არ არის დამუშავებული. ყველა სიმბოლოში გამოხატვა გაივლის პარამეტრი გაფართოება, სიმებიანი გაფართოება, ბრძანების ჩანაცვლება და ციტატის მოხსნა. არითმეტიკული ჩანაცვლები შეიძლება შეიცვალოს.

შეფასება ხორციელდება ARITHMETIC შეფასების საფუძველზე ქვემოთ ჩამოთვლილი წესების მიხედვით . თუ გამოხატვა არასწორია, bash ბეჭდავს გაგზავნა მითითებით მარცხი და არ ჩანაცვლება ხდება.

პროცესის შეცვლა

პროცესის ჩანაცვლება მხარს უჭერს სისტემებს, რომლებიც დაასაქმებს დასახელებულ მილებს ( FIFOs ) ან ღია ფაილების დასახელების / dev / fd მეთოდით. იგი იღებს ფორმის <( სია ) ან > ( სია ) . პროცესი სია აწარმოებს მის შეყვანაში ან გამომავალს, რომელიც დაკავშირებულია FIFO- ს ან ზოგიერთ ფაილს / dev / fd . ამ ფაილის სახელი გადაეცემა მიმდინარე ბრძანებას არგუმენტს გაფართოების შედეგად. თუ > ( სიის ) ფორმა გამოიყენება, ჩაწერეთ ფაილი შეყვანის სიაში . თუ <( სია ) ფორმა გამოიყენება, ჩაიწერება ფაილი, როგორც არგუმენტი უნდა წაიკითხოთ სიის გამომავალი.

როდესაც ხელმისაწვდომია, პროცესის ჩანაცვლება ხორციელდება ერთდროულად პარამეტრისა და ცვლადის გაფართოების, ბრძანების ჩანაცვლებისა და არითმეტიკული გაფართოებით.

Word გაყოფა

შელი ინახავს პარამეტრის გაფართოების შედეგებს, ბრძანების ჩანაცვლებას და არითმეტიკული გაფართოებას, რომელიც არ მოხდა სიტყვა გაყოფისთვის ორმაგ შეთავაზებებში.

Shell ეპყრობა IFS- ის თითოეული მახასიათებელს, როგორც დემიმიტეტერს, და გაყოფილი სხვა გაფართოების შედეგებს ამ სიმბოლოზე სიტყვებში. თუ IFS არ არის გახსნილი, ან მისი მნიშვნელობა არის ზუსტად , default, მაშინ IFS სიმბოლოების ნებისმიერი თანმიმდევრობა ემსახურება სიტყვების დელიმირებას. თუ IFS- ს აქვს მნიშვნელობა, გარდა ნაგულისხმევი, მაშინ წყობის სიმბოლოების სივრცე და ჩანართების იგნორირება იწყება სიტყვის დასაწყისში და დასასრულში, რადგან წყობის სიმბოლოა IFS ( IFS თეთრფერის სიმბოლო) ღირებულებაში. ნებისმიერი ხასიათის IFS- ში, რომელიც არ არის IFS Whitespace- თან, ნებისმიერი მიმდებარე IFS Whitespace სიმბოლოებთან ერთად, delimits სფეროში. IFS Whitespace სიმბოლოების თანმიმდევრობა ასევე განიხილება როგორც delimiter. თუ IFS- ის ღირებულება არის null, სიტყვა არ გაყოფა ხდება.

შეუსრულებელი null არგუმენტები ( "" ან "" ) შეინარჩუნეს. Unquoted მინიშნება null არგუმენტები, რის შედეგადაც გაფართოება პარამეტრების რომ არ აქვს ღირებულებები, ამოღებულ. თუ ორმაგი შეთავაზებების ფარგლებში გაფართოვდა პარამეტრი, ნულის არგუმენტი შედეგები და შეინარჩუნებს.

გაითვალისწინეთ, რომ თუ არ გაფართოება ხდება, არ გაყოფა ხდება.

Pathname გაფართოება

სიტყვის გაყოფის შემდეგ, თუ -f პარამეტრი არ არის დაყენებული, bash იბეჭდება თითოეული სიტყვა სიმბოლოებისთვის * ? , და [ . თუ ეს ერთი სიმბოლო გამოჩნდება, მაშინ სიტყვა განიხილება როგორც ნიმუში და შეცვალა ნიმუში შესატყვისი ფაილების სახელები ანბანის მიხედვით. თუ ვერ მოიძებნა შესაბამისი ფაილების სახელები და შელფის პარამეტრი nullglob გამორთულია, სიტყვა უცვლელი დარჩა. თუ nullglob ვარიანტი დაყენებულია და არ მოიძებნა მატჩები, სიტყვა ამოღებულია. თუ shell ვარიანტი nocaseglob ჩართულია, მატჩი ხორციელდება ალფავიტის სიმბოლოების შემთხვევაში. როდესაც ნიმუში გამოიყენება pathname გაფართოებისთვის, ``. '' სახელი დაწყებისას ან დაუყოვნებლივ შეკუმშვის შემდეგ დაუყოვნებლივ უნდა შეესაბამებოდეს, თუ shell პარამეტრი dotglob არ არის მითითებული. როდესაც შეესაბამება გზავნილს, slash ხასიათი ყოველთვის უნდა იყოს შესაბამისი მკაფიოდ. სხვა შემთხვევაში, ``. '' ხასიათი არ განიხილება სპეციალურად. იხილეთ მაღაზიის ქვემოთ აღწერილი SHELL BUILTIN COMMANDS for აღწერილობა nocaseglob , nullglob და dotglob shell პარამეტრები.

GLOBIGNORE- ის ჭურვი ცვლადი შეიძლება გამოყენებულ იქნას, რათა შეიზღუდოს ნიმუში შესაბამისი ფაილის სახელები. თუ GLOBIGNORE იქმნება, თითოეული შესატყვისი ფაილის სახელი, რომელიც ასევე შეესაბამება GLOBIGNORE- ის ერთ-ერთ ნიმუშს მატჩების სიიდან. ფაილის სახელები "`. '' და `` .. '' ყოველთვის იგნორირებულია, მაშინაც კი, როდესაც GLOBIGNORE არის მითითებული. თუმცა, GLOBIGNORE- ს შექმნის საშუალება აქვს dotglob შელფის პარამეტრს, ასე რომ ყველა სხვა ფაილის სახელი იწყება `` . მიიღოს ძველი ქცევის იგნორირება ფაილის სახელები დაწყებული ``. '' , ``. '' ' ერთი ნიმუშების GLOBIGNORE . Dotglob პარამეტრი გამორთულია, როდესაც GLOBIGNORE არ არის დაყენებული.

ნიმუში შესატყვისი

ნებისმიერი ხასიათი, რომელიც გამოჩნდება ნიმუშიდან, გარდა ქვემოთ აღწერილი სპეციალური ნიმუში სიმბოლოებისგან, შეესაბამება თავად. NUL ხასიათი არ შეიძლება მოხდეს ნიმუში. სპეციალური ნიმუში გმირები უნდა იყოს ციტირებული, თუ ისინი უნდა შეესაბამებოდეს სიტყვასიტყვით.

სპეციალური ნიმუში სიმბოლოებს აქვთ შემდეგი მნიშვნელობა:

*

მატჩებს ნებისმიერი სიმებიანი, მათ შორის null სიმებიანი.

?

მატჩებს ერთი ხასიათი აქვს.

[...]

შეესატყვისება რომელიმე თანდართულ სიმბოლოს. ჰიპენის მიერ გამოყოფილი წყვილი სიმბოლოები აღნიშნავს სპექტრიანობას ; ნებისმიერი პერსონაჟი, რომელიც მოიცავს ამ ორ სიმბოლოს შორის, მოიცავს ლოკალი-ს წყვეტის და სიმბოლოების სიმრავლის გამოყენებით. თუ პირველი ხასიათი შემდეგ [ არის ! ან ^ მაშინ ნებისმიერი ხასიათი არ არის ჩანერგილი. სიმბოლოების სიმბოლოების სიმბოლოების დიაპაზონებში განისაზღვრება მიმდინარე ლოკალი და LC_COLLATE ჭურვი ცვლადი, თუ მითითებული. A - შეიძლება შეესაბამებოდეს მათ შორის, როგორც პირველი ან ბოლო პერსონაჟის კომპლექტი. A ] შეიძლება შეესაბამებოდეს მათ შორის, როგორც პირველი პერსონაჟი კომპლექტი.

ფარგლებში [ და ] , კლასების კლასები შეიძლება განისაზღვროს სინტაქსის გამოყენებით [ კლასი :] , სადაც კლასი არის POSIX.2 სტანდარტში განსაზღვრული ერთ-ერთი შემდეგი კლასი:

alnum alpha ascii ცარიელი cntrl ციფრი გრაფა ქვედა ბეჭდვითი პუნქტი სივრცე ზედა სიტყვა xdigit
ხასიათი კლასი ემთხვევა ნებისმიერ კლასს, რომელიც ეკუთვნის ამ კლასს. სიტყვა ხასიათი კლასი შეესაბამება ასოებს, ციფრებს და სიმბოლოს.

ფარგლებში [ და ] , ეკვივალენტობის კლასი შეიძლება განისაზღვროს სინტაქსის გამოყენებით [= c =] , რომელიც შეესაბამება ყველა სიმბოლოს იგივე კოალიციის წონაში (როგორც ეს განსაზღვრულია ამჟამინდელი ლოკალით), როგორც ხასიათი .

ფარგლებში [ და ] , სინტაქსი [. სიმბოლო .] ემთხვევა სიმბოლოების სიმბოლოს სიმბოლოს .

თუ extglob shell ვარიანტი ჩართულია გამოყენებით shopt builtin, რამდენიმე გაფართოებული ნიმუში შესაბამისი ოპერატორები აღიარებულია. შემდეგი აღწერაში, ნიმუში-სია არის ერთი ან მეტი შაბლონის სიგანე . კომპოზიტური ნიმუშები შეიძლება ჩამოყალიბდეს ერთი ან მეტი შემდეგი ქვე-ნიმუშებით:

? ( ნიმუში-სია )

შეესაბამება მოცემულ ნიმუშებს ნულოვანი ან ერთი შემთხვევით

* ( ნიმუში-სია )

შეესაბამება მოცემული ნიმუშების ნულოვანი ან მეტი შემთხვევები

+ ( ნიმუში-სია )

შეესაბამება მოცემულ ნიმუშთა ერთ ან მეტ შემთხვევას

@ ( ნიმუში-სია )

შეესაბამება ერთ-ერთ მოცემულ ნიმუშს

! ( ნიმუში-სია )

შეესაბამება არაფერი გარდა რომელიმე მოცემული ნიმუში

Quote მოხსნა

წინა ექსპანსიის შემდეგ, ყველა არჩეული მოვლენები \\ " ," და ", რომელიც არ არის გამოწვეული ზემოდან გაფართოების შედეგად.

გადანაწილება

ბრძანების შესრულებამდე, მისი შეყვანა და გამომავალი შეიძლება გადამისამართება სპეციალური გაფრთხილების გამოყენებით, რომელიც შეფუთულია. გადამისამართება შეიძლება გამოყენებულ იქნას მიმდინარე და შელფის აღსრულების გარემოში ფაილების გასახსნელად. შემდეგი გადამისამართების ოპერატორები წინ უძღვის ან გამოჩნდებიან მარტივი ბრძანების ფარგლებში ან შეიძლება დაიცვან ბრძანება . გადამისამართებების დამუშავება ხდება მათგან, მარცხნიდან მარჯვნივ.

ქვემოთ მოყვანილი აღწერილობის შემთხვევაში, ფაილის დეფისირექციის ნომერი გამოტოვებულია და გადამისამართების ოპერატორის პირველი ხასიათის არის < , გადამისამართება ეხება სტანდარტული შეყვანის (ფაილის დესკრიპტორი 0). თუ გადამისამართების ოპერატორის პირველი სიმბოლოა, გადამისამართება სტანდარტული გამომავალი (ფაილის descriptor 1).

გადამისამართების შემდეგ ოპერატორის შემდეგი სიტყვებით, თუ სხვაგვარად არ არის აღნიშნული, ექვემდებარება გაუქმების გაფართოებას, tilde გაფართოებას, პარამეტრების გაფართოებას, ბრძანების ჩანაცვლებას, არითმეტიკული გაფართოებას, ციტატის მოხსნას, გზას გაფართოებას და სიტყვის გაყოფას. თუ ის ერთზე მეტი სიტყვის გაფართოებას განიცდის , შეცდომას აცნობებს.

გაითვალისწინეთ, რომ გადამისამართების რიგი მნიშვნელოვანია. მაგალითად, ბრძანება

ls > dirlist 2 > და 1

ხელმძღვანელობს როგორც სტანდარტული გამომავალი და სტანდარტული შეცდომა ფაილის dirlist , ხოლო ბრძანება

ls 2 > & 1 > dirlist

ხელმძღვანელობს მხოლოდ სტანდარტული გამომუშავება, რათა შეიტანოს dirlist , რადგან სტანდარტული შეცდომა დუბლირებული როგორც სტანდარტული გამომავალი ადრე სტანდარტული გამომავალი გადამისამართება dirlist .

Bash ახორციელებს რამდენიმე filenames სპეციალურად, როდესაც ისინი გამოიყენება გადამისამართებების, როგორც აღწერილია შემდეგ ცხრილში:

/ dev / fd / fd

თუ fd არის სწორი რიცხვი, ფაილის descriptor fd არის დუბლირებული.

/ dev / stdin

ფაილის დეფისიტორი 0 დუბლირებულია.

/ dev / stdout

ფაილი descriptor 1 არის დუბლირებული.

/ dev / stderr

ფაილი დეციპერიტორი 2 არის დუბლირებული.

/ dev / tcp / host / port

თუ მასპინძელი მართალია ჰოსტის სახელი ან ინტერნეტ მისამართია, და პორტი არის მთელი პორტის ნომერი ან სერვისის სახელი, bash მცდელობები TCP კავშირის გახსნას შესაბამისი სოკეტისთვის.

/ dev / udp / host / port

თუ მასპინძელი მართალია მასპინძელი ან ინტერნეტ მისამართია, და პორტი მთელი პორტის ნომერი ან სერვისის სახელია, bash ცდილობს UDP კავშირის გახსნას შესაბამისი სოკეტისთვის.

ფაილის გახსნა ან შექმნა ვერ მოხერხდება გადამისამართების მარცხი.

შეყვანის გადამისამართება

შეყვანის გადამისამართება იწვევს ფაილს, რომლის სახელიც იწყება სიტყვის გაფართოების შედეგად გახსნილი ტექსტის დეფექტორი N- ში , ან სტანდარტული შეტანის (ფაილის descriptor 0), თუ n არ არის მითითებული.

გადამისამართების გადამისამართების ზოგადი ფორმატია:

[ n ] < სიტყვა

გადამისამართება გამომავალი

გამომავალი გადამისამართება იწვევს იმ ფაილს, რომლის სახელიც არის სიტყვის გაფართოების შედეგი, რომელიც გახსნილია ფაილის დეციბერნის N- ში , ან სტანდარტული გამომავალი (ფაილის descriptor 1) თუ n არ არის მითითებული. თუ ფაილი არ არსებობს, ის შეიქმნა; თუ ის არსებობს, ეს არის გაანგარიშება ნულოვანი ზომა.

გადამისამართების გადამისამართების ზოგადი ფორმატია:

[ n ] > სიტყვა

თუ გადამისამართების ოპერატორი არის > და Noclobber პარამეტრი კომპლექტი builtin- ით , გადამისამართება ვერ მოხდება, თუ ფაილი, რომლის სახელიც არის სიტყვის გაფართოების შედეგი და არის ჩვეულებრივი ფაილი. თუ გადამისამართების ოპერატორი არის | , ან გადამისამართების ოპერატორი არის > და noclobber პარამეტრი კომპლექტი builtin ბრძანება არ არის ჩართული, გადამისამართება სცადა თუნდაც ფაილი დაასახელა სიტყვა არსებობს.

გადამისამართებული გამომავალი

ამ ფორმით გამომავალი გადანაწილება იწვევს ფაილს, რომლის სახელიც იწყება სიტყვის გაფართოების შედეგად, რომელიც შეიტანება ფაილის ავტორის N , ან სტანდარტული გამომავალი (ფაილის descriptor 1), თუ n არ არის მითითებული. თუ ფაილი არ არსებობს, იგი შეიქმნა.

გამოტანის გასაგზავნად საერთო ფორმატია:

[ n ] >> სიტყვა

სტანდარტული გამომავალი და სტანდარტული შეცდომის გადამისამართება

Bash საშუალებას იძლევა როგორც სტანდარტული გამომავალი (ფაილის descriptor 1) და სტანდარტული შეცდომის გამომავალი (ფაილის descriptor 2) გადამისამართება ფაილი, რომლის სახელი არის გაფართოების სიტყვა ამ მშენებლობის.

სტანდარტის გამოტანისა და სტანდარტული შეცდომის გადამისამართების ორი ფორმატი არსებობს:

&> სიტყვა

და

> და სიტყვა

ორი ფორმით, პირველი სასურველია. ეს არის სემანტიკურად ექვივალენტი

> სიტყვა 2 > და 1

აქ დოკუმენტები

ამ ტიპის გადამისამართება ავალებს shell- ს შეყვანა მიმდინარე წყაროდან, სანამ არ შეინიშნება მხოლოდ სიტყვის შემცველი ხაზი (რომელსაც არ გააჩნია არასასურველი ბლანკები). ყველა პუნქტი, რომელიც ამ წერტილამდე წაიკითხა, მაშინ გამოიყენება როგორც ბრძანების სტანდარტული შეყვანა.

აქ დოკუმენტაციის ფორმატია:

<< [ - ] სიტყვა აქ დოკუმენტი delimiter

არ არის პარამეტრის გაფართოება, ბრძანების ჩანაცვლება, არითმეტიკული გაფართოება ან გზა გაფართოება შესრულებულია სიტყვით . თუ რომელიმე სიმბოლო სიტყვა სიტყვასიტყულია , delimiter არის შედეგი ციტატის მოხსნის სიტყვაზე და ხაზები აქ დოკუმენტი არ გაფართოვდა. თუ სიტყვა არ არის დაკონკრეტებული, აქ ყველა დოკუმენტი აქედან გამომდინარე ვრცელდება პარამეტრების გაფართოება, ბრძანების ჩანაცვლება და არითმეტიკული გაფართოება. ამ უკანასკნელ შემთხვევაში ხასიათის თანმიმდევრობა \ იგნორირებულია და უნდა გამოიყენებოდეს სიმბოლოების \ , $ , და `

თუ გადამისამართების ოპერატორი << - , მაშინ ყველა წამყვანი tab სიმბოლოები ამოღებულია შეყვანის ხაზებიდან და ხაზის შემცველი დელიმიტრი . ეს საშუალებას აძლევს აქ- დოკუმენტებს შელი სკრიპტებიდან, რომლებიც ბუნებრივია.

აქ სტრინგები

აქ დოკუმენტების ვარიანტი, ფორმატია:

<<< სიტყვა

სიტყვა გაფართოვდა და მიეწოდება ბრძანება მისი სტანდარტული შეყვანის შესახებ.

ფაილების დესკრიპტორების დუბლირება

გადამისამართების ოპერატორი

[ n ] <და სიტყვა

გამოყენებულია შეყვანის ფაილის აღწერის დუბლიკატი. თუ სიტყვა გაფართოვდა ერთი ან მეტი ციფრებით, ფაილის ავტორის მიერ n- მიერ მითითებულს მიენიჭება ამ ფაილის დეპოზიტორის ასლი. თუ სიტყვა სიტყვებში არ მიუთითეთ ფაილების დეციდიტორი გახსნის შეყვანისთვის, გადამისამართების შეცდომა ხდება. თუ სიტყვა აფასებს - , ფაილის ავტორის N დახურულია. თუ n არ არის მითითებული, სტანდარტული შეყვანა (ფაილის descriptor 0) გამოიყენება.

ოპერატორი

& nbsp; & nbsp; & gt;

ასევე გამოიყენება გამომავალი ფაილების დუბლიკატების დუბლიკატისთვის. თუ n არ არის მითითებული, სტანდარტული გამომავალი (ფაილის descriptor 1) გამოიყენება. თუ სიტყვებით სიტყვა არ აკონკრეტებს ფაილების დესკრიპტორს ღია გამომავალი, გადამისამართების შეცდომა ხდება. როგორც განსაკუთრებულ შემთხვევაში, თუ გამოტოვებული არ არის და სიტყვა არ გაფართოვდეს ერთი ან მეტი ციფრი, სტანდარტული გამომავალი და სტანდარტული შეცდომა გადანაწილებულია როგორც ადრე აღწერილი.

მოძრავი ფაილის აღწერები

გადამისამართების ოპერატორი

[ n ] <& digit -

მოძრაობს ფაილის დეფლექტორორის ციფრი , შეიტანოს descriptor n ან სტანდარტული შეტანის (ფაილის descriptor 0) თუ n არ არის მითითებული. ციფრი დაიხურება შემდეგ დუბლიკატი n .

ანალოგიურად, გადამისამართების ოპერატორი

& nbsp; & gt;

მოძრაობს ფაილის დეფლექტორორის ციფრი , შეიტანოს დეფექტორი N , ან სტანდარტული გამომავალი (ფაილის descriptor 1) თუ n არ არის მითითებული.

გახსნა ფაილი Descriptors კითხვა და წერა

გადამისამართების ოპერატორი

[ n ] <> სიტყვა

იწვევს ფაილს, რომლის სახელიც არის სიტყვის გაფართოება როგორც წაკითხვისა და წერისთვის, როგორც ფაილის დეფლექტორი N- ში ან 0-ის არ არის მითითებული, თუ ფაილის დეფლექტორი 0-ზე. თუ ფაილი არ არსებობს, იგი შეიქმნა.

ALIASES

ინდიკატორები საშუალებას იძლევიან, რომ გამოიყენოთ სიმებიანი სიტყვა სიტყვისთვის, როდესაც გამოიყენება მარტივი ბრძანების პირველი სიტყვა. Shell ინარჩუნებს იმ aliases სიას, რომელიც შეიძლება დაყენდეს და არ დაემორჩილებინა alias და unalias builtin ბრძანებები (იხ. SHELL BUILTIN COMMANDS ქვემოთ). თითოეული ბრძანების პირველი სიტყვა, თუ არ არის მითითებული, შეამოწმებს, თუ მას აქვს იგივე სახელი. თუ ასეა, ეს სიტყვა შეცვალა ტექსტის სახით. სხვა სახელი და ჩანაცვლების ტექსტი შეიძლება შეიცავდეს ნებისმიერ მართებულ შელის შეყვანას, მათ შორის ზემოთ ჩამოთვლილ მეტაჩაროქტორებს , გარდა იმ შემთხვევისა, რომ სხვა სახელი შეიძლება არ შეიცავდეს = . შეცვლის ტექსტის პირველი სიტყვა aliases- ის ტესტირებაა, მაგრამ სიტყვა, რომელიც იდენტურია alias გაფართოებული, არ არის გაფართოებული მეორედ. ეს ნიშნავს, რომ მაგალითად, ls-F- ს , ანუ ls-F- ს , შეიძლება შეცვალოს ტექსტის შეცვლა. თუ ალიას ღირებულების ბოლო ხასიათის არის ცარიელი , მაშინ მომდევნო ბრძანება სიტყვა შემდეგ alias ასევე შემოწმდება იგივე გაფართოება.

Aliases იქმნება და ჩამოთვლილია alias ბრძანება, და ამოღებულ ერთად unalias ბრძანება.

ჩანაცვლების ტექსტში არგუმენტების გამოყენების მექანიზმი არ არსებობს. თუ არგუმენტები საჭიროა, უნდა გამოიყენოთ ჭურვი ფუნქცია (იხილეთ ფუნქციები ქვემოთ).

არეალი არ არის გაფართოებული, როდესაც ჭურვი არ არის ინტერაქტიული, თუ expand_aliases შელფის ვარიანტი არ არის გამოყენებული მაღაზიის გამოყენებით (იხ. მაღაზიათა თავშესაფრის აღწერა ქვემოთ მოყვანილი SHELL BUILTIN COMMANDS ).

წესების განმარტებისა და გამოყენების წესები გარკვეულწილად დამაბნეველია. Bash ყოველთვის ნათქვამია მინიმუმ ერთი სრული ხაზი შეყვანის ადრე შესრულების რომელიმე ბრძანებები რომ ხაზი. გაანგარიშება, როდესაც ბრძანება წაკითხულია, არა მაშინ, როდესაც იგი შესრულებულია. აქედან გამომდინარე, იგივე მითითება, როგორც სხვა ბრძანებაში გამოჩნდება, არ მოქმედებს მანამ, სანამ შეყვანის შემდეგი ხაზი არ არის წაკითხული. ბრძანებები, რომლებიც შემდეგნაირად იკვეთება ამ ხაზში, არ იმოქმედებს ახალი alias. ეს ქცევა ასევე არის საკითხი, როდესაც ფუნქციები შესრულდება. სიდიდეები გაფართოვდებიან, როდესაც ფუნქციის განმარტება იკითხება, არა მაშინ, როდესაც ფუნქცია შესრულდება, რადგან ფუნქციის განსაზღვრება თავისთავად ნაერთი ბრძანებაა. ამის შედეგად, ფუნქციებში განსაზღვრული საგადასახადო შენიშვნები არ არის შესაძლებელი, სანამ ეს ფუნქცია შესრულდება. უსაფრთხოდ იყენებენ, ყოველთვის განსაზღვრავენ სხვა განმარტებებს ცალკე ხაზში და ნუ გამოიყენებთ ერთმანეთს ნაერთის ბრძანებებში.

თითქმის ყველა მიზნით, aliases შეკუმშული მიერ ჭურვი ფუნქციები.

ფუნქციები

Shell ფუნქცია, რომელიც განისაზღვრება ზემოთ მოყვანილი Shell GRAMMAR- ზე, მოგვიანებით აღასრულებს ბრძანებების სერიებს. როდესაც shell ფუნქციის სახელი გამოიყენება მარტივი ბრძანების სახელით, შესრულებულია ამ ფუნქციის სახელთან დაკავშირებული ბრძანებების სია. ფუნქციები შესრულებულია მიმდინარე შელის კონტექსტში; მათთვის ინტერპრეტაციისთვის ახალი პროცესი არ არის შექმნილი (განსხვავებით ეს შელფის შესრულების შესრულებით). როდესაც ფუნქცია შესრულებულია, ფუნქციის არგუმენტები ხდება მისი შესრულებისას პოზიტიური პარამეტრი. სპეციალური პარამეტრი # შეიცვალა ცვლილების შესაფასებლად. პოზიციურ პარამეტრი 0 უცვლელი რჩება. FUNCNAME ცვლადი ფუნქციის სახელით არის დაყენებული ფუნქციის შესრულებისას. შელი აღსრულების გარემოს ყველა სხვა ასპექტი იდენტურია ფუნქციასა და მის აბონენტს შორის, გარდა იმ შემთხვევისა, რომ DEBUG ხაფანგში (იხ. ქვემოთ მოყვანილი ხაფანგის შემქმნელთა ბრძანების აღწერა ) არ არის მემკვიდრეობითი, თუ ფუნქცია მოცემულია კვალი ატრიბუტი ( იხილეთ ქვემოთ მოცემული დეკლარაციის აღწერა).

ფუნქციის ადგილობრივ ვარიანტებს შეიძლება გამოაცხადოს ადგილობრივი ინტეგრირებული ბრძანება. ჩვეულებრივ, ცვლადები და მათი ღირებულებები იზიარებენ ფუნქციასა და მის აბონენტს შორის.

თუ ინტეგრირებული ბრძანების დაბრუნების ფუნქცია ფუნქციონირებს, ფუნქცია დაასრულებს და შესრულებას განაახლებს მომდევნო ბრძანებას ფუნქციის ზარის შემდეგ. როდესაც ფუნქცია დაასრულა, პოზიტიური პარამეტრების მნიშვნელობები და სპეციალური პარამეტრი # აღდგენილია იმ ფუნქციებზე, რომლებსაც ჰქონდათ ფუნქციის შესრულებამდე.

ფუნქციის სახელები და განმარტებები შეიძლება ჩამოთვლილ იქნას -f პარამეტრი დეკლარულად ან ტიპტის ინტეგრირებული ბრძანებით. -F პარამეტრი გამოაქვეყნებს ან ტიპტის მითითება მხოლოდ ფუნქციის სახელებს. ფუნქციები შეიძლება ექსპორტირებული იყოს იმდენად, რომ subshells ავტომატურად აქვს განსაზღვრული- f პარამეტრი ექსპორტის აშენდა.

ფუნქციები შეიძლება იყოს რეკურსიული. არ შემოიფარგლება რეკურსიული ზარების რაოდენობაზე.

არითმეტიკა შეფასება

ჭურვი საშუალებას აძლევს არითმეტიკული გამონათქვამების შეფასებას გარკვეულ გარემოებებში (იხ. ნება აგებული ბრძანება და არითმეტიკული გაფართოება ). შეფასების გაკეთება ფიქსირებული სიგანე რიცხვებით არ ხდება გადაფარვის შემოწმების გარეშე, თუმცა 0-ის განყოფილება ხაფანგშია და დროშის შეცდომაა. ოპერატორები და მათი უპირატესობა და ასოცირება არის იგივე როგორც C ენაზე. ოპერატორების შემდეგი სია დაჯგუფებულია თანაბარი პრეცენდენტის ოპერატორების დონეზე. დონეები ჩამოთვლილია უპირატესობის შემცირების მიზნით.

id ++ id -

ცვლადი შემდგომი ზრდა და პოსტ-შემცირება

++ id - id

ცვლადი წინასწარ გადახდა და წინასწარ შემცირება

- +

unary მინუს და პლუს

! ~

ლოგიკური და ცოტათი უარყოფითი

**

გაფართოება

* /%

გამრავლება, განყოფილება, დანარჩენი

+ -

გარდა ამისა, გამოკლება

<< >>

მარცხენა და მარჯვენა bitwise ძვრები

<=> = <>

შედარება

==! =

თანასწორობა და უთანასწორობა

&

bitwise და

^

bitwise ექსკლუზიური OR

|

bitwise ან

&&

ლოგიკური და

||

ლოგიკური OR

გასვლა ? expr : expr

პირობითი შეფასება

= * = / =% = + = - = << = >> = და = ^ = =

დავალება

expr1 , expr2

მძიმით

Shell ცვლადები დასაშვებია როგორც ოპერატები; პარამეტრი გაფართოება ხორციელდება ექსპრესიის შეფასებამდე. გამოხატვის ფარგლებში, ჭურვი ცვლადები შეიძლება გამოყენებულ იქნეს სახელით პარამეტრის გაფართოების სინტაქსის გამოყენების გარეშე. ცვლადის ღირებულება შეფასებულია, როგორც არითმეტიკული გამოხატულება, როდესაც იგი მითითებულია. ჭურვი ცვლადი არ უნდა ჰქონდეს მისი მთელი რიცხვითი ატრიბუტი გამოყენებულ იქნას გამოხატულებაში.

სიღრმისეული ციფრები, რომლებიც ზედმეტი ნომრით არიან განპირობებული. წამყვანი 0x ან 0X აღნიშნავს ჰექსადეციმას. წინააღმდეგ შემთხვევაში, ციფრები მიიღებს ფორმას [ base # ] n, სადაც ბაზა არის 2 და 64 შორის ათობითი რიცხვი, რომელიც წარმოადგენს არითმეტიკურ ბაზას და n არის რიცხვი ამ ბაზაში. თუ ბაზის # არ არის გამოტოვებული, მაშინ ბაზა 10 გამოიყენება. 9-ზე მეტი რიცხვი წარმოდგენილია ასოებით, ზედა ასოებით, @, და _ ამ მიზნით. თუ ბაზა ნაკლებია ან ტოლია 36, მცირე და ზედა ასოები შეიძლება გამოყენებულ იქნას interchangably ნომრები 10 და 35 შორის.

ოპერატორები შეაფასებენ უპირატესობის მიხედვით. ქვე-გამოხატვა ფრჩხილებში პირველ რიგშია შეფასებული და შეიძლება ზემოთ მოყვანილი წინაპირობის წესები.

პირობითი გამონათქვამები

პირობითი გამონათქვამები გამოიყენება [[ რთული ბრძანებით და გამოცდისა და [ ინტეგრირებული ბრძანებების მიხედვით, ატრიბუტების ფაილების შესამოწმებლად და სიმებიანი და არითმეტიკული შედარებით. გამონათქვამები იქმნება შემდეგნაირი ან ბინარული პრაიმერისგან. თუ რომელიმე ფაილების არგუმენტი ერთ-ერთი პრაიმერის სახითაა ფორმა / dev / fd / n , მაშინ ფაილის დეპოზიტორი N შემოწმდება. თუ შემოწმების ერთ-ერთი პრაქტიკაში ჩაითვლება ერთ-ერთი / dev / stdin , / dev / stdout , ან / dev / stderr , შემოწმების 0, 1, ან 2 ტიპის ფაილი.

- ფაილი

მართალია, თუ ფაილი არსებობს.

-b ფაილი

მართალია თუ ფაილი არსებობს და ბლოკი სპეციალური ფაილია.

-c ფაილი

მართალია თუ ფაილი არსებობს და არის ხასიათი სპეციალური ფაილი.

-d ფაილი

მართალია თუ ფაილი არსებობს და არის დირექტორია.

-e ფაილი

მართალია, თუ ფაილი არსებობს.

-f ფაილი

მართალია თუ ფაილი არსებობს და არის ჩვეულებრივი ფაილი.

-g ფაილი

მართალია, თუ ფაილი არსებობს და არის set-group-id.

-h ფაილი

მართალია თუ ფაილი არსებობს და არის სიმბოლური ბმული.

-k ფაილი

მართალია თუ ფაილი არსებობს და მისი `` წებოვანი '' ბიტი არის მითითებული.

-p ფაილი

მართალია, თუ ფაილი არსებობს და არის დასახელებული მილის (FIFO).

-r ფაილი

მართალია, თუ ფაილი არსებობს და იკითხება.

-ის ფაილი

მართალია თუ ფაილი არსებობს და აქვს ზომა მეტია, ვიდრე ნულოვანი.

-t fd

მართალია, თუ ფაილის ავტორსი fd ღიაა და ტერმინალის მითითებით.

-u ფაილი

მართალია თუ ფაილი არსებობს და მისი set-user-id ცოტაა მითითებული.

-w ფაილი

მართალია, თუ ფაილი არსებობს და არის ჩაწერადი.

-x ფაილი

მართალია, თუ ფაილი არსებობს და შესრულდება.

-O ფაილი

მართალია თუ ფაილი არსებობს და ფლობს ეფექტური მომხმარებლის ID.

-G ფაილი

მართალია, თუ ფაილი არსებობს და ფლობს ეფექტური ჯგუფის ID.

-L ფაილი

მართალია თუ ფაილი არსებობს და არის სიმბოლური ბმული.

-S ფაილი

მართალია თუ ფაილი არსებობს და არის სოკეტი.

-N ფაილი

მართალია, თუ ფაილი არსებობს და შეცვლილია, რადგან ბოლო წაკითხული იყო.

file1 - nt file2

მართალია, თუ file1 ახალია (მოდიფიცირების თარიღის მიხედვით) ვიდრე file2 ან, თუ file1 არსებობს და file2 არ არის.

file1 - ot file2

მართალია თუ file1 უფრო ძველია, ვიდრე file2 , ან თუ file2 არსებობს და file1 არ არის.

file1 -ef file2

მართალია, თუ file1 და file2 ეხება იგივე მოწყობილობას და ინტოდს.

-O optname

მართალია თუ shell ვარიანტი optname ჩართულია. იხილეთ პარამეტრების სია ქვემოთ მოყვანილი კომპლექტისთვის -o პარამეტრის აღწერით.

-z სიმებიანი

მართალია, თუ სიგრძის სიგრძე ნულია.

-n სიმებიანი

სიმებიანი

მართალია, თუ სიგრძის სიგრძე არ არის ნულოვანი.

string1 == string2

მართალია, თუ სიმები თანაბარია. = შეიძლება გამოყენებულ იქნას == მკაცრი POSIX- ის შესაბამისად.

string1 ! = string2

მართალია, თუ სიმები არ არის თანაბარი.

string1 < string2

მართალია, თუ string1 სახის წინ string2 ლექსიკოგრაფიულად ადრე არსებული ლოკალით .

string1 > string2

True თუ string1 სახის შემდეგ string2 ლექსიკოგრაფიურად მიმდინარე ლოკალი.

arg1 OP arg2

OP არის ერთ-ერთი, -ე , ლ- , -le , -gt ან -ge . ეს არითმეტიკული ორობითი ოპერატორები ჭეშმარიტად დაბრუნდებიან, თუ arg1 ტოლია, თანაბარი, არანაკლებ, ნაკლებია ან ტოლია, უფრო დიდი, ვიდრე ან უფრო მეტია, ვიდრე ან არგუმენტი 2 . Arg1 და arg2 შეიძლება იყოს დადებითი ან უარყოფითი რიცხვები.

SIMPLE COMMAND EXPANSION

როდესაც მარტივი ბრძანება შესრულებულია, შელი ასრულებს შემდეგ გაფართოებას, დავალებებსა და გადამისამართებებს, მარცხნიდან მარჯვნივ.

1.

სიტყვები, რომლიდანაც ცვლადი დავალებები (როგორც ბრძანების წინ უძღვის) და გადამისამართებების გადანაწილება ხდება მოგვიანებით დამუშავებისათვის.

2.

გაფართოვდა სიტყვები, რომლებიც არ არის ცვლადი დავალებები ან გადამისამართებები. თუ რომელიმე სიტყვა გაფართოების შემდეგ რჩება, პირველი სიტყვა არის ბრძანების სახელი და დარჩენილი სიტყვები არის არგუმენტები.

3.

გადამისამართებები შესრულებულია როგორც ზემოთ აღწერილი ქვემოთ.

4.

თითოეული ცვლადის გადაცემის შემდეგ ტექსტი შემდეგში შედის tilde გაფართოება, პარამეტრი გაფართოება, ბრძანების ჩანაცვლება, არითმეტიკული გაფართოება და ციტატის მოხსნა, სანამ გადაეცემა ცვლადს.

იმ შემთხვევაში, თუ ბრძანება არ იწვევს შედეგებს, ცვლადი დავალებები მოქმედებს მიმდინარე ჭურვი გარემოში. წინააღმდეგ შემთხვევაში, ცვლადები დაემატება შესრულებული ბრძანების გარემოს და გავლენას არ ახდენს მიმდინარე ჭურვი გარემოზე. თუ რომელიმე დავალება მცდელობას მიანიჭოს ღირებულების წაკითხვადი ცვლადი, შეცდომა ხდება და ბრძანება გასასვლელად არასამთავრობო ნულოვანი სტატუსი.

თუ ბრძანების სახელი არ იძლევა გადამისამართებების შესრულებას, არ მოქმედებს მიმდინარე ჭურვი გარემოზე. გადამისამართების შეცდომა იწვევს ბრძანების გასასვლელად არასამთავრობო ნულოვანი სტატუსი.

თუ არსებობს გაფართოების შემდეგ დარჩენილი ბრძანება, აღსრულება მიმდინარეობს როგორც ქვემოთ აღწერილი. წინააღმდეგ შემთხვევაში, ბრძანება გასასვლელად. თუ ერთ-ერთი გაფართოება შეიცავდა ბრძანების ჩანაცვლებას, ბრძანების გასვლის სტატუსი არის ბოლო ბრძანების ჩანაცვლების გასვლის სტატუსი. თუ არ არსებობს ბრძანება ჩანაცვლებითი, ბრძანება გამოდის ნულის სტატუსთან.

COMMAND აღსრულება

ბრძანების ამოღების შემდეგ, თუ ეს მარტივი ბრძანებით და არგუმენტების სურვილისამებრ ნუსხაშია, ხდება შემდეგი ქმედებები.

თუ ბრძანების სახელი არ შეიცავს ფრაზებს, შელი ცდილობს მოძებნოს. თუ ამ სახელწოდების შელფის ფუნქცია არსებობს, ეს ფუნქცია გამოიყენება როგორც ზემოთ აღწერილი ფუნქციებში . თუ სახელი არ შეესაბამება ფუნქციას, shell ეძებს მას სიაში შენობების აშენებს. თუ მატჩი დადგინდა, რომ აშენდა ინიციატივით.

თუ სახელი არ არის ჭურვი ფუნქცია და აგებულია, და არ შეიცავს ფრაზებს, ბატს ეძებს თითოეული ელემენტის PATH- ის დირექტორიაში, რომელიც შეიცავს შემსრულებელ ფაილს ამ სახელის მიხედვით. Bash იყენებს hash მაგიდასთან უნდა გვახსოვდეს, სრული pathnames შესრულებადი ფაილი (იხ. Hash ქვეშ SHELL BUILTIN ბრძანებები ქვემოთ). PATH- ის სრული ძიების სრული ძიება ხორციელდება მხოლოდ იმ შემთხვევაში, თუ ბრძანება არ არის ნაპოვნი hash table- ში. თუ ჩხრეკა წარუმატებელი აღმოჩნდა, shell ბეჭდავს შეცდომის შეტყობინებას და დააბრუნებს 127-ის გასვლის სტატუსს.

თუ ძებნა წარმატებულია, ან თუ ბრძანებათა სახელი შეიცავს ერთ ან მეტ სიას, შელი ახორციელებს დასახელებულ პროგრამას ცალკე აღსრულების გარემოში. არგუმენტი 0 მითითებულია სახელით და დანარჩენი არგუმენტები ბრძანებაზე მითითებულია არგუმენტებით, თუ რომელიმე.

თუ ეს აღსრულება ვერ მოხერხდა, რადგან ფაილი არ არის შესრულებული ფორმატში და ფაილი არ არის დირექტორია, იგი ითვლება ჭურვი სკრიპტი , რომელიც შეიცავს შემცველ ბრძანებებს. ქვედანაყოფი მოქმედებაში შედის. ეს სუბიჰილის ხელახალი ინიციატივაა, რომ ეფექტი ისეთივეა, თითქოს ახალი ჭურვი მოიწვია სკრიპტის გადასაწყვეტად, გარდა იმ შემთხვევისა, როდესაც მშობლების მიერ ახსენებული ბრძანებების ადგილას (იხ. ქვემოთ მოცემული ქუსლი ბილიტინის ბრძანებების ქვეშ ).

თუ პროგრამა არის ფაილი დაწყებული #! , დანარჩენი პირველი ხაზი განსაზღვრავს პროგრამას თარჯიმანს. Shell ახორციელებს მითითებულ თარჯიმანს ოპერაციული სისტემების შესახებ, რომლებიც არ შეასრულებენ ამ შესრულებულ ფორმატს. თარჯიმნის არგუმენტები შედგება ერთი სურვილისამებრ არგუმენტით, რომელიც შეესაბამება პროგრამის პირველი ხაზის თარჯიმნის სახელს, რომელსაც მოჰყვება პროგრამის დასახელება, რასაც მოჰყვება ბრძანების არგუმენტები, თუ რომელიმე.

საკომუნიკაციო გარემოს ექსპლუატაცია

ჭურვი აქვს აღსრულების გარემო , რომელიც მოიცავს შემდეგს:

*

გახსნილი ფაილები მემკვიდრეობით შევიწროებული შევიწროებით, როგორც შეცვლილია გადამისამართების მიერ მიწოდებული გადამისამართების მიერ

*

მიმდინარე სამუშაო დირექტორია, რომელიც დადგენილია cd , pushd ან popd , ან მემკვიდრეობით შეშის დროს invocation

*

ფაილის შექმნის რეჟიმი ნიღაბი, როგორც დადგენილი umask ან მემკვიდრეობით shell- ის მშობელი

*

მიმდინარე ხაფანგები დადგენილი ხაფანგით

*

ჭურვი პარამეტრებს, რომლებიც დადგენილია ცვლადი დავალების მიხედვით ან კომპლექტი ან მემკვიდრეობით

*

ჭურვი ფუნქციები განსაზღვრული დროს შესრულების ან მემკვიდრეობით Shell მშობელი გარემოში

*

პარამეტრების ჩართვა invocation (ან default ან ბრძანება ხაზი არგუმენტები) ან კომპლექტი

*

პარამეტრების მეშვეობით შესაძლებელია მაღაზია

*

shell aliases განსაზღვრული alias

*

სხვადასხვა პროცესის პირადობის მოწმობები, მათ შორის ფონური სამუშაოების, $ $ ღირებულების და $ PPID- ს ღირებულების

როდესაც მარტივი ბრძანება, გარდა აგებულია ან ჭურვი ფუნქცია შესრულდება, იგი მოიყვანა ცალკე აღსრულების გარემოში, რომელიც შედგება შემდეგი. თუ სხვაგვარად არ არის მითითებული, ფასეულობები მემკვიდრეობითაა გარსით.

*

shell- ის ღია ფაილები, პლუს ნებისმიერი ცვლილებები და დამატებები განსაზღვრული redirections ბრძანება

*

მიმდინარე სამუშაო დირექტორია

*

ფაილის შექმნის რეჟიმი ნიღაბი

*

ექსპორტისთვის განკუთვნილ ჭურვი ცვლადებს, იმ პირობით, რომ გადაეცემა ცვლადი ექსპორტისთვის ბრძანება, რომელიც გადაეცემა გარემოს

*

ჭურვი დაჭერილი ხაფანგები გადატვირთულია შელის მშობლის მიერ მემკვიდრეობით მიღებული ღირებულებებით და იგნორირებული ხაფანგებიდან იგნორირებულია ხაფანგები

ამ ცალკე გარემოში გამოწვეული ბრძანება გავლენას ვერ მოახდენს შელის აღსრულების გარემოზე.

ბრძანების ჩანაცვლება და ასინქრონული ბრძანებები ჩართულია სუბშელის გარემოში, რომელიც არის ჭურვი გარემოების დუბლიკატი, გარდა იმ შემთხვევისა, როდესაც ჭურვი დაჭერილი ხაფანგები გადატვირთულია იმ ღირებულებებზე, რომლებიც მისი მშობლის მხრიდან მემკვიდრეობით მიწვეული იყო. ბილდინის ბრძანებები, რომლებიც მილსადენის ნაწილით არის მოყვანილი, ასევე შესრულებულია სუბშელის გარემოში. შეშის გარემოში შეტანილი ცვლილებები გავლენას ვერ ახდენს შელის აღსრულების გარემოზე.

თუ ბრძანება მოჰყვება და დაუშვებელია და სამუშაო კონტროლი არ არის აქტიური, ბრძანების სტანდარტულ სტანდარტული შეყვანა არის ცარიელი ფაილი / dev / null . წინააღმდეგ შემთხვევაში, მითითებულ ბრძანებულებას მემკვიდრეობით გადაეცემა გადამისამართების გადამისამართების ფაილის აღწერები.

იხილეთ ასევე

Bash Reference Manual , ბრაიან Fox და Chet Ramey

გნუ რიტუალის ბიბლიოთეკა , ბრაიან ფოქსი და ჩეტი რაიმი

გნუ ისტორიის ბიბლიოთეკა , ბრაიან ფოქსი და ჩეტი რაიმი

პორტატული ოპერაციული სისტემის ინტერფეისი (POSIX) ნაწილი 2: Shell და Utilities , IEEE

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

emacs (1), vi (1)

კითხვა (3)