Ნაცარი - Linux Command - Unix Command

NAME

sh - ბრძანება თარჯიმანი ( ჭურვი )

სინოფსისი

sh [- / + aCefnuvxIimqsVEbc ] [- o longname ] -words [ target ... ]

DESCRIPTION

Sh არის სტანდარტული ბრძანება თარჯიმანი სისტემისთვის. მიმდინარე ვერსია sh არის შეცვლის პროცესში შეესაბამება POSIX 1003.2 და 1003.2a სპეციფიკაციები ჭურვი. ამ ვერსიას ბევრი თვისებები აქვს, რომლებიც კნინგს უნახავს, ​​მაგრამ ეს არ არის კორნშლის კლონი (იხ. Ksh (1)). POSIX- ისა და რამდენიმე ბერკელის გაფართოების მიერ მინიჭებული მახასიათებლები მხოლოდ ამ ჭურვიში შედის. ჩვენ ვიმეორებთ POSIX- ის შესაბამისობას 4.4 BSD გამოთავისუფლებული დროის მიხედვით. ეს კაცი გვერდი არ არის განკუთვნილი სამეურვეო ან სრული დაზუსტება ჭურვი.

მიმოხილვა

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

შემოწირულობა

თუ არ არსებობს არგუმენტები და თუ შელტის სტანდარტული შეყვანა ტერმინალთან არის დაკავშირებული (ან თუ მე - დროშა არის დაყენებული) და c - ს ვარიანტი არ არის, შელი ითვლება ინტერაქტიული გარსით . ინტერაქტიული ჭურვი ზოგადად ითხოვს თითოეული ბრძანებამდე და ახორციელებს პროგრამირების და ბრძანების შეცდომებს (როგორც ზემოთ აღწერილია). პირველი დაწყებისას, shell ამოწმებს არგუმენტს 0, და თუ იგი იწყება Dash `- 'ჭურვი ასევე ითვლება შესვლა shell. ეს ნორმალურად ხდება ავტომატურად სისტემაში, როდესაც მომხმარებლის პირველი სისტემა შედის სისტემაში შესვლისას. შელობიდან თავდაპირველად იკითხება ბრძანებები ფაილები / ა.შ. / პროფილი და. თუ გარემოს ცვლადი ENV დაყენებულია shell- ში შესვლისას, ან არის მითითებული. Shell- ის სისტემაში შესვლის შემდეგ, shell შემდეგ იკითხება ENV- ში დასახელებული ბრძანებებიდან, ამიტომ მომხმარებელს უნდა მოათავსოს ბრძანება, რომელიც უნდა შესრულდეს მხოლოდ შესვლის დროს .პროფილური ფაილი და ბრძანებები, რომლებიც შესრულებულია ყველა shell შიგნით ENV ფაილი. ENV ცვლადი შეიტანოს ზოგიერთ ფაილზე, მოათავსეთ შემდეგი ხაზი თქვენს თქვენს სახლში

ENV = $ მთავარი /. ექსპორტის ENV

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

საქმე $ - ში * i *)

# ბრძანებები მხოლოდ ინტერაქტიული გამოყენებისათვის

...

esac

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

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

ყველა ერთიან ასო ვარიანტს აქვს შესაბამისი სახელი, რომელიც შეიძლება გამოყენებულ იქნას როგორც o - ვარიანტი. კომპლექტი - o სახელი მოცემულია ქვემოთ მოცემული ერთი ასო ვარიანტის შემდეგ. დაწონილი `` - `'მიუთითებს პარამეტრზე, პლუს` `+" გამოყენებით. შემდეგი პარამეტრები შეიძლება შეიქმნას ბრძანებათა სტრიქონიდან ან კომპლექტი (1) ინტეგრირებული (შემდეგ აღწერილია).

- ალექსპორტი

ექსპორტის ყველა ცვლადი. (4,3 მილიარდი)

-c

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

-C noclobber

არ გადაწეროთ არსებული ფაილები ``> '' (UNIMPLELEMENTED for 4.4alpha)

-გარემო

თუ არ არის ინტერაქტიული, გამოტოვეთ დაუყოვნებლივ, თუ რაიმე უმოქმედო ბრძანება ვერ მოხერხდება. ბრძანების გასვლის სტატუსი ითვლება მკაფიოდ შესამოწმებლად, თუ ბრძანება გამოიყენება იმ შემთხვევაში, თუ Elif- ის განმავლობაში ან სანამ ან ბრძანება არის `` && '' ან `` || "ოპერატორის მარცხენა ხელი.

-f noglob

გამორთვა pathname გაფართოება.

-n noexec

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

-u არსებითი სახელი

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

-ვ verbose

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

-x xtrace

დაწერეთ თითოეული ბრძანება სტანდარტული შეცდომით (წინ უძღვის `+ 'სანამ შესრულდება.

-q quietprofile

თუ v - ან x - ის პარამეტრები დაინერგა, არ ვრცელდება ინიციალიზაციისას ფაილების წაკითხვისას, ეს არის / etc / profile .პროგრამის და ENV გარემოს ცვლადის მიერ მითითებული ფაილში.

იგნორირება

იგნორირება EOF- ის შეყვანისას, როდესაც ინტერაქტიული.

-i ინტერაქტიული

გააქტიურეთ ჭურვი ინტერაქტიულად.

-m მონიტორი

ჩართეთ დასაქმების კონტროლი (ავტომატურად დაყენება, როდესაც ინტერაქტიული).

- სდ

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

-V vi

ჩართეთ ინტეგრირებული vi (1) ბრძანების რედაქტორი (გამორთულია - თუ იგი დაყენებულია).

-E emacs

ჩართეთ ჩაშენებული emacs (1) ბრძანების რედაქტორი (გამორთულია - V თუ იგი დაყენებულია).

-b შეატყობინეთ

Background სამუშაოების დასრულების ასინქრონული შეტყობინების ჩართვა. (4,3 მილიარდი)

ლექსიკური სტრუქტურა

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

"საკონტროლო ოპერატორები:"

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

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

<>> << >> <&> & << - <>

ციტატა

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

Backslash

Backslash ინარჩუნებს ლიტერატურულ მნიშვნელობას შემდეგი მახასიათებლებით, გარდა AQ ახლისა. Aq- ს ახალი ხაზის წინ უძღვის უკუჩვენება ხაზის გაგრძელებად.

ერთი შეთავაზებები

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

ორმაგი შეთავაზებები

ორმაგი კოტირების ფარგლებში დამახსოვრებული სიმბოლოები ინახავს ყველა სიმბოლოთა ლიტერატურულ მნიშვნელობას, გარდა დოლარიშორისი ($) backquote (`) და backslash (\). ორმაგი შეთავაზებების შიგნით ორმაგი ციტატების უკუმაგვარია ისტორიულად უცნაური და ემსახურება მხოლოდ შემდეგ სიმბოლოებს:

$ `ახალი ხაზი>

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

დაცულია სიტყვები

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

! Ta elif Ta fi Ta ხოლო Ta შემთხვევაში

დანარჩენი Ta for Ta then Ta {Ta}

Do Ta done Ta სანამ Ta თუ ტაქსი

მათი მნიშვნელობა განიხილება მოგვიანებით.

მიმოწერა

Alias ​​არის სახელი და შესაბამისი ღირებულება მითითებული გამოყენებით alias (1) builtin ბრძანება. როდესაც დაცულია სიტყვა შეიძლება მოხდეს (იხ. ზემოთ) და რეზერვირებული სიტყვების შემოწმების შემდეგ, შელი ამოწმებს სიტყვას, თუ იგი შეესაბამება alias. თუ ეს ასეა, იგი შეცვლის მას შეყვანის ნაკადში მისი ღირებულებით. მაგალითად, თუ `` lf '' - ის სახელწოდებაა, `` ls-F '

lf foobar <დაბრუნება>

გახდებოდა

ls-F foobar

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

ბრძანებები

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

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

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

  1. ფორმა `` სახელი = ღირებულების \ "ძირითადი სიტყვები ჩამოიწერება და მარტივი ბრძანების გარემოს მინიჭებაა. გადამისამართების ოპერატორები და მათი არგუმენტები (როგორც ზემოთ აღწერილია) ამოღებულია და გადამუშავებულია შენახვისთვის.
  2. დანარჩენი სიტყვები გაფართოვდა, როგორც აღწერილია სექციაში სახელწოდებით "Expansions" და პირველი დარჩენილი სიტყვა ითვლება Command სახელი და ბრძანება მდებარეობს. დარჩენილი სიტყვები ბრძანების არგუმენტად ითვლება. იმ შემთხვევაში, თუ არ სახელწოდება ვერ მოხერხდა, მაშინ "1" ღირებულების 1 "ცვლადი დავალებები მოქმედებს ამჟამინდელ შელზე.
  3. გადამისამართებების შესრულება ხდება შემდეგნაირად აღწერილი.

გადამისამართებები

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

[n] redir-op ფაილი

სადაც redir-op არის ერთ-ერთი გადამისამართების ოპერატორი. შემდეგ შესაძლებელია გადამისამართების ნუსხა. Bq n არის სურვილისამებრ ნომერი, როგორც `3` (არ არის` Bq 3`, რომელიც ეხება ფაილის დეპოზიტორს.

[n]> ფაილი

გადამისამართება სტანდარტული გამომავალი (ან n) შეიტანოს.

[n]> | ფაილი

იგივე, მაგრამ override - C ვარიანტი.

[n] >> ფაილი

დაამატეთ სტანდარტული გამომავალი (ან n) შეიტანოს.

[n]

გადამისამართება სტანდარტული შეყვანის (ან n) ფაილიდან.

[n1] <& n2

დუბლიკატი სტანდარტული შეყვანის (ან n1) ფაილების დესკრიპტორი N2.

[n] <& -

სტანდარტული შეყვანის დახურვა (ან n).

[n1]> & n2

დუბლიკატი სტანდარტული გამომავალი (ან N1) საწყისი n2.

& nbsp; & nbsp; & gt;

სტანდარტული გამომავალი (ან n) დახურვა.

[n] <> ფაილი

გახსენით ფაილი წაკითხვის და წერის სტანდარტული შეყვანის (ან n).

შემდეგი გადამისამართება ხშირად უწოდებენ "აქ დოკუმენტს"

[n] << delimiter

აქ- doc- ტექსტი ...

delimiter

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

ძიება და შესრულება

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

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

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

წინააღმდეგ შემთხვევაში, თუ ბრძანება არ ემთხვევა ფუნქციას ან ჩაშენებას, ბრძანება ჩხრეკულია ნორმალურ პროგრამულ ფაილურ სისტემაში (როგორც ეს აღწერილია მომდევნო სექციაში). როდესაც ნორმალური პროგრამა ხორციელდება, შელი გაშვებულია პროგრამა, რომელიც გადადის არგუმენტებსა და გარემოს გადაცემაში. თუ პროგრამა არ არის ნორმალური შესრულებადი ფაილი (ანუ, თუ ის არ იწყება "ჯადოსნური რიცხვით", რომლის ASCII- ის წარმომადგენლობაა "#!", ასე რომ შესრულდება (2) ერ ENOEXEC- ის შემდეგ), მაშინ shell იქნება ინტერპრეტაცია პროგრამაში სუბშელი. ბავშვის ჭურვი თავისთავად ხელახლა უნდა გადააყენოს ამ შემთხვევაში, ისე, რომ ეფექტი მოხდება, თითქოს ახალი ჭურვი იქნა გამოყენებული, რათა შეესრულებინათ რეკლამა- hoc შელფის სკრიპტი, გარდა იმ შემთხვევისა, როდესაც მშობლის ჭურვიში მდებარე სადაო ბრძანებები განთავსდება ბავშვი.

გაითვალისწინეთ, რომ ამ დოკუმენტის წინა ვერსიები და კოდის კოდის შეცდომა დაუშვებელია და sporadically ეხება shell script გარეშე ჯადოსნური რიცხვი, როგორც "ჭურვი პროცედურა".

გზა ძიება

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

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

ბრძანების გასვლის სტატუსი

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

კომპლექსური ბრძანებები

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

  • მარტივი ბრძანება
  • მილსადენი
  • სია ან რთული სია
  • რთული ბრძანება
  • ფუნქციის განსაზღვრა

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

მილსადენები

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

მილსადენის ფორმატია:

[!] command1 [| command2 ...]

Command1- ის სტანდარტული გამომუშავება დაკავშირებულია command2- ის სტანდარტული შეყვანისთვის. სტანდარტული შეყვანა, სტანდარტული გამომუშავება ან ორივე ბრძანება ითვლება მილსადენის მიერ მინიჭებული მითითებით გადამისამართების მიერ განსაზღვრული გადამისამართების მითითებით.

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

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

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

$ command1 2> & 1 | command2

აგზავნის ორივე სტანდარტული output და სტანდარტული შეცდომა command1 სტანდარტული შეყვანის 2.

ა; ან terminator იწვევს წინა ან- OR- სიას (აღწერილი შემდეგი) შესრულებას თანამიმდევრობით; და იწვევს წინა და ანტი-სიის ასინქრონული შესრულებას.

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

ფონის ბრძანებები -

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

ფონზე გაშვების ფორმატი არის:

command1 & [command2 & ...]

თუ shell არ არის ინტერაქტიული, ასინქრონული ბრძანების სტანდარტული შეყვანა მითითებული არის / dev / null

სიები - ზოგადად ვსაუბრობ

სიაში არის ნულოვანი ან მეტი ბრძანების თანმიმდევრობა newlines, semicolons ან ampersands- ით, და სურვილისამებრ შეჩერებულია ერთი ამ სამი სიმბოლოთი. ბრძანებები სიაშია შესრულებული იმისათვის, რომლითაც ისინი დაწერილია. თუ ბრძანება მოჰყვა ampersand, შელი იწყებს ბრძანებას და დაუყოვნებლივ გააგრძელოს შემდეგი ბრძანება; წინააღმდეგ შემთხვევაში, ის ბრძანებას ელოდება, რათა შეწყდეს შემდეგი ნაბიჯი.

მოკლე ჩართვა სია ოპერატორები

`` && '' და `` || "არის AND- ან სიაში ოპერატორები. `` && '' ახორციელებს პირველ ბრძანებას და შემდეგ მეორე ბრძანებას ახორციელებს, თუ პირველი ბრძანების გასვლის სტატუსი ნულია. `` || "არის მსგავსი, მაგრამ მეორე ბრძანებას ახორციელებს თუ პირველი ბრძანების გასვლის სტატუსი არ არის ნულოვანი. `` && '' და `` || "ორივევეს აქვს იგივე პრიორიტეტი.

ნაკადის კონტროლი აშენებს - თუ, ხოლო, ამისთვის

თუ ბრძანება არის სინტაქსი

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

სინტაქსი ხოლო ბრძანება არის

ხოლო სიაში
სიაში
შესრულებულია

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

ბრძანების სინტაქსი არის

ცვლადი სიტყვით ...
სიაში
შესრულებულია

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

შესვენების სინტაქსი და გაგრძელდება ბრძანება

შესვენება
გააგრძელე

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

საქმის სინტაქსი არის ბრძანება

საქმის სიტყვა
ნიმუში);
...
esac

ნიმუში შეიძლება სინამდვილეში იყოს ერთი ან მეტი ნიმუში (იხ. Shell Patterns შემდგომში), გამოყოფილია `` "სიმბოლოების მიერ.

დაჯგუფება ბრძანებები ერთად

ბრძანებები შეიძლება დაჯგუფებულია წერილობით

(სია)

ან

{სია;

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

{printf hello; printf world \ n ";}> მისალმება

ფუნქციები

ფუნქციის განსაზღვრის სინტაქსია

სახელი () ბრძანება

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

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

ადგილობრივი [ცვლადი | -] ...

ლოკალური ხორციელდება აშენებული ბრძანებად.

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

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

სინტაქსი დაბრუნების ბრძანებაა

დაბრუნება [exitstatus

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

ცვლადები და პარამეტრები

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

სახელი = მნიშვნელობა

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

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

პოზიტიური პარამეტრი არის პარამეტრი, რომელიც მითითებულია რიცხვით (n> 0). Shell ადგენს ამ თავდაპირველად ღირებულებების მისი ბრძანება ხაზი არგუმენტები, რომ დაიცვას სახელი ჭურვი სცენარი. კომპლექტი (1) buildin შეიძლება გამოყენებულ იქნას მითითებული ან გადატვირთვის მათ.

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

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

*

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

@

აფართოებს პოზიციურ პარამეტრებს, დაწყებული ერთიდან. როდესაც გაფართოება ხდება ორმაგ შეთავაზებებში, თითოეული პოზიტიური პარამეტრი ცალკე არგუმენტს აფართოებს. თუ არ არსებობს პოსტიანი პარამეტრები, გაფართოება @ გენერირებას ნულოვანი არგუმენტები, მაშინაც კი, როდესაც @ არის ორმაგი ციტირებული. რა მნიშვნელობა აქვს ამ მაგალითს, მაგალითად, თუ $ 1 არის abc '' და $ 2 `` დეფ '', მაშინ Qq $ @ აფართოებს ორ არგუმენტს:

abc def ghi

#

აფართოებს პოზიციურ პარამეტრებს.

?

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

- (ჰიფენი.)

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

$

აფართოებულია ამოღებული ჭურვი პროცესის ID. შვილობილი აქვს იგივე ღირებულებას, როგორც $ მშობელს.

!

მიმდინარე ჭურვიდან შესრულებული უახლესი ფონური ბრძანების პროცესის ID- ის გაფართოება. მილსადენისთვის, პროცესი ID მილსადენის ბოლო ბრძანებაა.

0 (ნულოვანი.)

აფართოებს shell ან shell script- ის სახელს.

Word გაფართოება

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

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

სიტყვის გაფართოების ბრძანებაა:

  1. Tilde გაფართოება, პარამეტრი გაფართოება, სარდლობის შეცვლა, არითმეტიკული გაფართოება (ეს ყველაფერი ერთდროულად ხდება).
  2. საველე გაყოფა შესრულებულია ნაბიჯებით (1) მიერ არ გამოტოვებულია იმ შემთხვევაში, თუ IFS ცვლადი null.
  3. Pathname გაფართოება (თუ კომპლექტი f არ მოქმედებს).
  4. Quote მოხსნა.

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

Tilde Expansion (შეცვლის მომხმარებლის & # 39; საწყისი დირექტორია)

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

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

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

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

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

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

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

  1. გაფართოების შედეგები არ არის შესრულებული Pathname გაფართოება.
  2. საველე გაყოფა არ მოქმედებს გაფართოების შედეგებზე, გამონაკლისის გარდა.

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

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

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

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

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

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

სიმებიანი სიგრძე. სიგრძე პარამეტრების ღირებულების სიმბოლოებში.

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

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

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

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

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

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

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

$ (ბრძანება)

ან Po `` backquoted '' ვერსია Pc:

`ბრძანება`

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

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

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

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

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

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

თეთრი ფართი გაყოფა (საველე გაყოფა)

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

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

Pathname გაფართოება (ფაილის სახელი თაობა)

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

შელი ნიმუშები

ნიმუში შედგება ჩვეულებრივი პერსონაჟებისგან, რომლებიც შეესაბამება საკუთარ თავს და მეტა-სიმბოლოებს. მეტა სიმბოლოები არიან ``! "` `* ''` `?? '' და` `ეს სიმბოლოები კარგავენ სპეციალურ მნიშვნელობას, თუ ისინი ციტირებენ. როდესაც ბრძანება ან ცვლადი ჩანაცვლება ხორციელდება და დოლარის ნიშანი ან უკანა კვოტები არ არის ორმაგი ციტირებული, ცვლადის ან ბრძანების ღირებულება ამ სიმბოლოების დასკანერებულია და ისინი გადაიქცევიან მეტა-სიმბოლოებად.

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

ხასიათის კლასში ``] "შეიტანეთ, გახადოს ის პირველი სიმბოლო (` `! იმისათვის, რომ შეიყვანოთ მინუს ნიშანი, გახადოთ ის პირველი ან ბოლო სიმბოლო

ჩაშენებული

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

:

Null ბრძანება, რომელიც დააბრუნებს 0 (ნამდვილ) გასასვლელს.

. ფაილი

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

alias [ სახელი [ = string ... ]]

თუ სახელი = სტრია მითითებულია, shell განსაზღვრავს სხვა სახელს ღირებულების სიმებიანი თუ მხოლოდ სახელი მითითებულია, იბეჭდება სხვა სახელი . არგუმენტებთან ერთად, ანაიას აშენებულია ყველა განსაზღვრული სახელების სახელები და მნიშვნელობები (იხილეთ უნიალი)

bg [ სამუშაო] ...

გაგრძელდეს სამუშაო ადგილები (ან მიმდინარე სამუშაო, თუ სამუშაო ადგილები არ არის მოცემული) ფონზე.

ბრძანება ბრძანება arg ...

შეასრულოს მითითებული builtin ბრძანება. (ეს არის სასარგებლო როდესაც თქვენ გაქვთ shell ფუნქცია იგივე სახელით, როგორც შენობა ბრძანება.)

cd [ დირექტორია ]

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

eval string ...

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

exec [ command arg arg ... ]

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

გასასვლელი

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

ექსპორტის სახელი ...

ექსპორტი

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

ექსპორტის სახელი = მნიშვნელობა

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

fc [- e editor ] [ პირველი ] ბოლო

fc -l [- nr ] [ პირველი [ ბოლო ]

fc -s [ ძველი = ახალი ] [ პირველი ]

Fc buildin სიები, ან რედაქტირება და ხელახლა შესრულება, ბრძანებები ადრე შევიდა ინტერაქტიული გარსი.

-e რედაქტორი

გამოიყენეთ რედაქტორი რედაქტირება ბრძანებების რედაქტირებისათვის. რედაქტორის სტრიქონი არის ბრძანების სახელი, რომელსაც ექვემდებარება ძიება PATH ცვლადის მეშვეობით. FCEDIT ცვლადის მნიშვნელობა გამოიყენება როგორც ნაგულისხმები, - e არ არის მითითებული. თუ FCEDIT არის null ან unset, გამოიყენება ღირებულება EDITOR ცვლადი. თუ რედაქტორი არის null ან unset, ed (1) გამოიყენება რედაქტორი.

-l (ell)

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

-ნ

შეაჩეროს ბრძანებათა რიცხვი, როდესაც სიაში შეიტანეთ -l.

-რ

შეცვალეთ ბრძანებების (შემდგომში - ან რედაქციით )

-გ

ხელახლა შეასრულოს ბრძანება რედაქტორის გარეშე.

პირველი

ბოლო

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

[+] ნომერი

დადებითი რიცხვი, რომელიც წარმოადგენს ბრძანების რიცხვს; ბრძანების ნომრები შეიძლება გამოჩნდეს - l პარამეტრით.

-ნომერი

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

სიმებიანი

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

შემდეგი გარემოს ცვლადები გავლენას ახდენს fc- ის აღსრულებაზე:

FCEDIT

რედაქტორის სახელი გამოყენება.

HISTSIZE

წინა ბრძანებების რაოდენობა, რომლებიც ხელმისაწვდომია.

fg [ სამუშაო ]

გადააადგილეთ მითითებული სამუშაო ან მიმდინარე სამუშაო წინა პლანზე.

getopts optstring var

POSIX მიიღოთ ბრძანება, არ იყოს დაბნეული Bell Labs -derived getopt (1).

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

Getopts ბრძანება deprecates ხანდაზმული getopt (1) კომუნალური მისი გატარება არგუმენტები შემცველი whitespace.

Getopts buildin შეიძლება გამოყენებულ იქნას პარამეტრები და მათი არგუმენტები სიიდან პარამეტრების. როდესაც მოიყვანა, მიიღოთ შემდეგი პარამეტრის მნიშვნელობა ინდექსის სიის დანართში სიაში ცვლის ცვლაში და მისი ინდექსი შელი ცვლადში OPTIND როდესაც ჭურვი მოიწვევა, OPTIND ინიციალიზებულია 1- ისთვის. არგუმენტი, getopts builtin ის განათავსებს მას shell ცვლადი OPTARG თუ ვარიანტი არ არის დაშვებული in optstring შემდეგ OPTARG არ იქნება დაყენებული.

optstring არის სიმებიანი აღიარებული ვარიანტი წერილები. თუ წერილი მოჰყვება კოლონის, ვარიანტს სავარაუდოდ აქვს არგუმენტი, რომელიც შეიძლება იყოს ან არ იყოს გამოყოფილი თეთრი სივრცე. თუ პარამეტრი სიმბოლო ვერ მოიძებნა, სადმე მოსალოდნელია, მიიღებთ ცვლადს, რომელიც ``? "" მიიღებს მას შემდეგ, რაც "" OPTARG "- ის დაინსტალირება და სტანდარტული შეცდომის გამოწერა . უგულვებელყოფით, როგორც უგულებელყოფის სახით, ყველა შეცდომის იგნორირება.

უკანასკნელი ვარიანტი მიღწეული როდესაც nonzero ღირებულება დაბრუნდა. თუ არ არსებობს დარჩენილი არგუმენტები, მიიღებთ სპეციალურ ვარიანტს, `- '' სხვაგვარად, ის შეიტანება var` `?

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

ვულკანები abc: f
კეთება
საქმე $ f in
| | ბ) დროშა = $ f;
გ) ტვირთის = $ OPTARG;
\? echo $ USAGE; გასასვლელი 1;
esac
შესრულებულია
shift `expr $ OPTIND - 1`

ეს კოდი მიიღებს შემდეგს:

cmd -acarg file ფაილი
cmd -a -c arg file ფაილი
cmd -carg -a ფაილის ფაილი
cmd -a -carg - ფაილის ფაილი

hash -rv ბრძანება ...

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

არგუმენტებით, hash ბრძანება ხსნის მითითებულ ბრძანებებს hash ცხრილი (თუ ისინი ფუნქციები) და შემდეგ locates მათ. - V- ის პარამეტრით, hash ბეჭდავს ბრძანებების ადგილმდებარეობას, როგორც ის პოულობს მათ. The r პარამეტრი იწვევს hash ბრძანებას წაშლა ყველა მასალა hash მაგიდა გარდა ფუნქციები.

jobid [ სამუშაო ]

ბეჭდვის პროცესი id- ის პროცესების პროცესში. თუ სამუშაო არგუმენტი გამოტოვებულია, მიმდინარე სამუშაო გამოიყენება.

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

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

pwd

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

წაიკითხეთ [- p სწრაფი ] [- ] ცვლადი ...

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

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

წაკითხული სახელი ...

readonly -p

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

readonly name = value

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

მითითებული [{- პარამეტრები | + პარამეტრები | - არგ ... ]

კომპლექტი ბრძანება ასრულებს სამ სხვადასხვა ფუნქციას.

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

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

მითითებული ბრძანების მესამე გამოყენება განისაზღვრება shell- ის პოზიციური პარამეტრების მნიშვნელობები მითითებულ არგებზე. შეცვლის პარამეტრების შეცვლა პარამეტრების შეცვლის გარეშე, გამოიყენეთ `` - "პირველი არგუმენტისთვის. თუ არ არსებობს არგუმენტები, კომპლექტი ბრძანება წაშლის ყველა პოზიციურ პარამეტრს (ეგზემპლარი "$ shift $".

ცვლადი მნიშვნელობა

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

გადაადგილება [ n ]

შეცვალეთ positional პარამეტრების n times. $ 1 ღირებულების $ 2 ღირებულების $ 2 ღირებულების $ 2 ღირებულების $ 3 და ა.შ., მცირდება ღირებულება $ # ერთი. თუ n უფრო მეტია, ვიდრე პოზიტიური პარამეტრების რიცხვი, ცვლა შეცდომის გამოსასწორებლად გამოსცემს და დაბრუნების სტატუსთან ერთად გასვლა.

ჯერ

ამობეჭდოთ დაგროვილი მომხმარებლის და სისტემის ჯერ ჭურვი და პროცესების აწარმოებს ჭურვი. დაბრუნების სტატუსი 0.

ხაფანგში სამოქმედო სიგნალი ...

გამოიწვიეთ ჭურვი გარჩევის და შეასრულოს ქმედება, როდესაც რომელიმე მითითებულ სიგნალებს მიიღებენ. სიგნალები მითითებულია სიგნალის ნომრით. თუ სიგნალია 0 მოქმედების შესრულება, მაშინ როდესაც ჭურვი გადის. ქმედება შეიძლება იყოს null ან `` - "ყოფილი იწვევს მითითებულ სიგნალს იგნორირება და ეს უკანასკნელი იწვევს ნაგულისხმევი ქმედებას. როდესაც shell ჩხირები off subshell , ეს რესეტი ხაფანგში (მაგრამ არ იგნორირებულია) სიგნალები ნაგულისხმევი action. ხაფანგის ბრძანება არ იმოქმედებს სიგნალებზე, რომლებიც იგნორირებულია ჭურვიში შესვლისას.

ტიპი [ სახელი ... ]

ინტერპრეტაცია თითოეული სახელით, როგორც ბრძანება და ბეჭდვა ბრძანება ბრძანება ძებნის. შესაძლო რეზოლუციები: shell სიტყვით, alias, shell buildin , ბრძანება, tracked alias და ვერ მოიძებნა. ანალოგიისთვის იბეჭდება ანალოგიური გაფართოება; ბრძანებები და საგამომცემლო aliases სრული pathname ბრძანება იბეჭდება.

ulimit [- H-S ] [- a -tfdscmlpn [ ღირებულება ]]

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

-H

მითითებული ან დავის შესახებ მძიმე ლიმიტები

-S

მითითებული ან დავის შესახებ რბილი ლიმიტები. თუ არც - H და არც S მითითებული, რბილი ლიმიტი არის ნაჩვენები ან ორივე ლიმიტი არის მითითებული. თუ ორივე მითითებული, ბოლო გაიმარჯვებს.

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

- ა

აჩვენე ყველა არსებული ლიმიტი

-t

აჩვენე ან დააყენეთ შეზღუდვა CPU- ს დროში (წამებში)

-f

აჩვენე ან დააყენეთ ლიმიტი ყველაზე დიდი ფაილის, რომელიც შეიძლება შეიქმნას (512-byte ბლოკში)

-d

შოუ ან მითითებული ლიმიტი მონაცემები სეგმენტის ზომა პროცესი (in kilobytes)

-გ

შოუ ან მითითებული ლიმიტი დასტის ზომა პროცესი (in kilobytes)

-c

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

-m

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

-l

აჩვენეთ ან დაწესდეს ლიმიტი რამდენი მეხსიერების პროცესი შეიძლება ჩაკეტვასთან ერთად (2) ( კილობიტებში )

-p

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

-ნ

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

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

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

umask [ ნიღაბი ]

მითითებული umask- ის მნიშვნელობა (umask (2)) მითითებულ octal- ის მნიშვნელობას. თუ არგუმენტი გამოტოვებულია, umask ღირებულება იბეჭდება.

unalias [-] [ სახელი ]

თუ სახელი მითითებულია, შელი ამოშლის, რომ იგივე. თუ - მითითებულია, ყველა aliases ამოღებულია.

შეუძლებელია სახელი ...

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

დაველოდოთ [ სამუშაო ]

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

ბრძანების რედაქტირება

როდესაც ტერმინი ტერმინალისგან გამოიყენება, მიმდინარე ბრძანება და ბრძანებათა ისტორია (იხ. FX- ში Sx Builtins) შეიძლება რედაქტირებული იყოს vi-mode command-line editing გამოყენებით. ეს რეჟიმი იყენებს ქვემოთ მოცემულ ბრძანებებს, როგორც ვიკიპაჟის გვერდზე აღწერილი ქვესადგურის მსგავსია. ბრძანება `კომპლექტი '- ან vi საშუალებას იძლევა vi- რეჟიმში რედაქტირება და შეიტანოს vi ჩასმა რეჟიმი. Vi-mode ჩართულია, sh შეიძლება ჩაირთოს ჩასმა რეჟიმში და ბრძანების რეჟიმში. რედაქტორი არ არის აღწერილი სრულად აქ, მაგრამ მოგვიანებით იქნება დოკუმენტი. ეს მსგავსია vi: აკრეფის ESC იქნება გადაყარეთ ბრძანება VI ბრძანების რეჟიმში. Hitting Aq დაბრუნების ხოლო ბრძანების რეჟიმში გაივლის ხაზი ჭურვი.

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