Үнс - Linux Command - Unix Command

NAME

sh - тушаалын тайлбарлагч ( бүрхүүл )

Синнассис

sh [- / + aCefnuvxIimqsVEbc ] [- o longname ] -words [ зорилтот ... ]

ТОДОРХОЙЛОЛ

Sh нь системд зориулсан стандарт командын хэлмэрч юм. Sh одоогийн хувилбар нь бүрхүүлд зориулж POSIX 1003.2 ба 1003.2a тодорхойлолтуудтай нийцэж байгаа болно. Энэ хувилбар нь зарим талаараа Korn бүрхүүлтэй төстэй байдаг бөгөөд энэ нь Korn бүрхүүлийн хуулбар биш юм (ksh (1) -г үзнэ үү). POSIX-ээс гадна хэд хэдэн Берклигийн өргөтгөлүүдээр тодорхойлогдсон функцуудыг зөвхөн энэ бүрхүүлийн санд оруулдаг. POSIX-ийн тохиргоог бид 4.4 BSD-ээр суллаж байна. Энэ хүний ​​хуудас нь заавар эсвэл бүрхүүлийн бүрэн тодорхойлолт байх зорилгогүй.

Ерөнхий тойм

Бүрхүүл нь файл эсвэл терминалаас мөрүүдийг уншиж, тэдгээрийг тайлбарлаж, ерөнхийдөө бусад тушаалуудыг ажиллуулдаг тушаал юм. Энэ нь хэрэглэгч систем уруу нэвтрэх үед ажиллаж байгаа програм юм (хэдийгээр хэрэглэгч chsh (1) тушаалаар өөр бүрхүүл сонгох боломжтой). Shell нь урсгалын хяналтыг бий болгох хэлийг, өгөгдөл хадгалахаас гадна төрөл бүрийн функцүүдийг агуулсан түүх, шугамын засварлах чадамжтай макро хэрэгсэл юм. Энэ нь интерактив хэрэглээнд туслах олон боломжуудыг агуулдаг бөгөөд тайлбарлах хэл нь интерактив болон интерактив бус хэрэглээний (бүрхүүлийн скрипт) хоёуланд нь нийтлэг байдаг давуу талтай юм. Өөрөөр хэлбэл тушаалууд нь ажиллаж байгаа бүрхүүлд шууд бичигдэх эсвэл файлд хийж болох бөгөөд файлыг шууд бүрхүүлээр гүйцэтгэж болно.

Уучлалт

Хэрэв ямар ч аргумент байхгүй бөгөөд бүрхүүлийн стандарт оролт нь терминал уруу холбогдсон (эсвэл хэрэв - i тугийг тогтоосон бол), - c сонголт байхгүй бол бүрхүүл нь интерактив бүрхүүл гэж тооцогддог. Орчин үеийн интерфэйс бүрхүүл нь ерөнхийдөө команд тус бүрийн өмнөөс өдөөх ба хөтөлбөрүүд болон тушаалын алдааг өөрөөр (дор тайлбарлав) зохицуулдаг. Эхний ээлжинд бүрхүүл хязгаарын утгыг шалгаж байна, мөн энэ нь dash '-' гэсэн бүрхүүлээс эхэлдэг бол бүрхүүл нь бас бүрхүүл юм. Энэ нь ихэвчлэн системээр хэрэглэгч нэвтрэн ороход автоматаар хийгддэг. Нэвтрэх бүрхүүл эхлээд файлууд / etc / profile файлууд болон .profile файлуудыг уншдаг. Хэрэв хүрээлэн буй орчны хувьсагч ENV нь бүрхүүл рүү нэвтрэх үед тохируулсан эсвэл эсвэл нэвтрэх бүрхүүлийн .profile файлд байгаа бол бүрхүүл дээр ENV дээр нэрлэгдсэн файлаас тушаалыг нь уншуулна. Тиймээс хэрэглэгч зөвхөн зөвхөн биелүүлэх тушаалуудыг тавина. .profile файл, ENV файл доторх боодол бүр дээр гүйцэтгэгдэж байгаа тушаалууд. ENV хувьсагчийг зарим файл уруу тохируулахын тулд дараах мөрийг өөрийн гэрийн директорын .profile файлд байрлуулна уу

ENV = $ HOME / .shinit; Экспорт ENV

"хүссэн дурын файлын нэр ". " ENV файл нь бүрхүүлийн скриптүүд болон интерактив бүрхүүлүүдээс бүрдсэн дуудлага бүрийг унших учраас, дараах paradigm нь ENV файлд командыг интерактив хандалтуудад хязгаарлахад ашигтай байдаг. Доорх "хэргийг" болон " esac " гэсэн командуудыг байрлуулах (эдгээр тушаалуудыг сүүлд тайлбарлах болно):

$ a - in * i *)

Зөвхөн интерактив ашиглах # тушаалууд

...

esac

Хэрэв тушаалын мөрийн нэмэлт өгөгдлүүд тохируулагдсан бол нэмэлт мэдээлэл нь эхний аргументыг файлын нэрийг (бүрхүүлийн скрипт) уншихыг, харин үлдсэн аргументууд нь бүрхүүлийн байрлалын параметрын тохиргоогоор тодорхойлогдоно ($ 1 , $ 2, гэх мэт). Үгүй бол бүрхүүл нь стандарт оролтоос тушаалуудыг уншдаг.

Аргумент жагсаалт боловсруулах

Бүх үсэгнүүдийн сонголтууд нь - o тохируулгад нэмэлт өгөгдөл болгон ашигладаг харгалзах нэртэй байна. Set - o нэрийг доор тайлбарласан нэг үсэг операторын хажууд байрлуулах болно. "-" сонголтыг зурахдаа "+" сонголтыг идэвхгүй болгоно. Дараах тохируулгуудыг тушаалын мөрөөс эсвэл set (1) builtin (сүүлд тайлбарласан) зааж өгөх боломжтой.

-a allexport

Бүх өгсөн хувьсагчуудыг экспорт хийнэ. (4.4alpha нь UNITEDED)

-c

Тушаалын мөрөөс тушаалуудыг унших. Стандарт оролтоос тушаалыг уншихыг хориглоно.

- Сонгох

Одоо байгаа файлуудыг дарж бичиж болохгүй ""> "(4.4alpha-ийн хувьд UNIMPLEMENTED)

-и алдаатай

Хэрэв интерактив биш бол ямар нэгэн эвдэрсэн тушаал амжилтгүй болбол тэр даруй гарах. Тушаалын гарах exit status нь хэрэв elif тушаалыг ажиллуулах үед эсвэл хэрэв тушаал нь "&&" эсвэл "| |" - ийн операторын зүүн гар нь "operand" бол зүүн гар талын хяналтыг хянахад ашиглагдана.

-f noglob

Замын өргөтгөлийг идэвхгүй болгох.

-n noexec

Хэрэв интерактив биш бол тушаалыг унших боловч тэдгээрийг ажиллуулахгүй. Энэ нь бүрхүүлийн скриптүүдийн синтаксыг шалгахад хэрэгтэй.

-u nounset

Тохиргоо хийгээгүй хувьсагчийг өргөтгөхийг оролдох үед стандарт алдаанд мэдэгдэж, бүрхүүл нь интерактив биш бол шууд гаргана. (4.4alpha нь UNITEDED)

-v дэлгэрэнгүй

Бүрхүүл нь уншиж байгаа тул стандарт алдаа руу оролтыг бичдэг. Дебаг хийхэд ашигтай.

-x xtrace

Тушаал бүрийг стандарт алдаа (өмнө нь `+'-г өмнө нь гүйцэтгэсэн байна.) Дибаг хийхэд ашигтай.

-q quietprofile

Хэрэв - v эсвэл - x тохируулгууд тохируулагдсан бол эхлүүлэх файлуудыг уншиж байх үед үүнийг хэрэглэхгүй бөгөөд эдгээр нь / etc / profile .profile болон ENV орчны хувьсагчийн заагдсан файл юм.

-Би үүнийг үл тоомсорлов

Интернет дээр EOF-ыг орлуулахгүй байх.

интерактив

Бүрхүүл нь харилцан үйлдэл хийхийг шаардана.

- монитор

Ажлын хяналтыг идэвхжүүл (интерактив үед автоматаар тохируулагддаг).

-Стин

Стандарт оролтоос командыг унших (файлын нэмэлт өгөгдөл байхгүй бол автоматаар тохируулагдана). Бүрхүүл аль хэдийн ажиллаж эхэлсэний дараа энэ тохируулга идэвхжихгүй (өөрөөр хэлбэл set (1) ашиглан).

-V vi

Vi (1) тушаалын мөрийн засварлагчийг идэвхжүүлснээр (хэрэв E тохируулагдсан бол идэвхжээгүй).

-E emacs

Дэмжигдсэн emacs (1) тушаалын мөрийн засварлагчийг идэвхжүүл (хэрэв V тохируулагдсан бол идэвхжээгүй).

-мэдээлэх

Үндсэн ажил дууссаны талаар асинхрон мэдэгдлийг идэвхжүүлэх. (4.4alpha нь UNITEDED)

Лекцийн бүтэц

Бүрхүүл нь файлын мөрөнд оролтыг уншиж, түүнийг хоосон зай (хоосон зай, табууд) гэсэн үгс болгон задалж, "оператор" гэж нэрлэдэг хясааны тодорхой дарааллаар уншдаг. Хоёр төрлийн оператор байдаг: хяналтын операторууд болон дахин чиглүүлэгч операторууд (тэдгээрийн утгыг сүүлд нь хэлэлцдэг). Операторын жагсаалтыг доор үзүүлэв:

"Хяналтын операторууд:"

& && (); ;; | | |

"Эргэн чиглүүлэгч оператор:"

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

Шошго

Дуудлага нь тодорхой тэмдэгтүүд эсвэл үгнүүдийн тусгай утгыг операторууд, хоосон зай эсвэл түлхүүр зэрэг объектууд руу шилжүүлэхэд хэрэглэгддэг. Гурван төрлийн ишлэл байдаг: нэг хослолтой, хосоороо хослуулсан, урвуу хамааралтай байна.

Backslash

Нөхцөл байдал нь Aq newline-ээс бусад тохиолдолд дараах тэмдэгт үгийн утгыг хадгалдаг. АШ-ийн шинэ шугамны өмнөх урдуур нь мөрийн үргэлжлэл болно.

Single Quotes

Ганц үсгээр тэмдэгтүүдийг хавсаргах нь бүх тэмдэгтүүдийн жинхэнэ утгыг хадгалдаг (нэг шифрээс бусад нэг текстийг ганц бие иш татсан мөрөөр оруулах боломжгүй болгож байна).

Double Quotes

Давхар ишлэлийн доторх тэмдэгтүүдийг хавсаргах нь dollarsign ($) backquote (`) ба backslash (\) -ээс бусад давхар тэмдэгтүүдийн backslash нь түүхэн хачирхалтай бөгөөд зөвхөн дараах тэмдэгтүүдийг иш татдаг:

$ `\

Үгүй бол энэ нь хэвээр үлдэнэ.

Нөөц үг

Нөөцлөлт үгс нь хясааны тусгай утгатай үг бөгөөд мөрийн эхэнд болон хяналтын операторын дараа хүлээн зөвшөөрөгддөг үгс юм. Дараах үгнүүд байна:

! Ta elif Ta fi ta Ta Ta хэрэг

өөрөөр Ta ба Ta дараа Ta {Ta}

ta Ta Ta esac хүртэл Ta хүртэл хий

Тэдний утга санааг дараа нь ярилцана.

Алимаа

Алдаа нь нэр болон харгалзах утгыг alias (1) builtin тушаалаар ашиглана. Хадгалагдсан үг тохиолдоход (дээр дурдсаныг үзнэ үү), хадгалагдсан үгсийг шалгасны дараа бүрхүүл нь уг үгийг alias-тэй тохирч байгаа эсэхийг шалгана. Хэрэв энэ нь оролтын урсгалд түүний утгыг орлуулдаг. Жишээлбэл, "lf" нэртэй "ls -F" утгатай бол уг оруулга:

lf foobar

болно

ls -F foobar

Галиглалууд нь хэрэглэгчдийг аргументуудтай хэрхэн функцүүд үүсгэх талаар суралцалгүйгээр тушаалын хувьд shorthands үүсгэх тохиромжтой арга юм. Эдгээр нь мөн lexically харагдах кодыг үүсгэхэд ашиглагдаж болно. Энэ хэрэглээ нь урам хугардаг.

Тушаалууд

Бүрхүүл нь тухайн хэл дээрх хамрах хүрээнээс гадуур байгаа хэлний хэлээр, уншиж байгаа үгнүүдийг тайлбарладаг ( POSIX 1003.2 баримт бичигт байгаа BNF-г үз). Үндсэндээ мөр нь уншигддаг бөгөөд хэрэв мөрийн эхний үг (эсвэл хяналтын операторын дараа) нь нөөцлөгдсөн үг биш бол бүрхүүлийн энгийн тушаалыг таних болно. Өөрөөр хэлбэл нарийн төвөгтэй команд эсвэл бусад тусгай байгууламжийг хүлээн зөвшөөрч болно.

Энгийн тушаалууд

Хэрэв энгийн тушаал танигдсан бол бүрхүүл нь дараах үйлдлийг гүйцэтгэдэг:

  1. "Нэрийн = утга" хэлбэрийн тэргүүлэх үгс нь энгийн тушаалын орчинд шилждэг. Эргэж буй операторууд болон тэдгээрийн аргументууд (дор тайлбарласанчлан) боловсруулалтанд зориулж хуулбарлаж, хадгалж авдаг.
  2. Үлдсэн үгс нь "Expansions" гэж нэрлэгдэх хэсэгт өргөтгөгдсөн бөгөөд эхний үлдсэн үгийг тушаалын нэр гэж үздэг бөгөөд тушаал нь байрлаж байна. Үлдсэн үг нь тушаалын аргумент гэж тооцогддог. Хэрэв ямар ч тушаал гарсангүй бол 1-р зүйлд заасны дагуу "name = value" "хувьсах хуваарилалт нь одоогийн бүрхүүлд нөлөөлөх болно.
  3. Дамжуулалтыг дараагийн хэсэгт тайлбарласны дагуу гүйцэтгэнэ.

Шууд дамжуулалт

Дамжуулалт нь тушаалын оролтыг уншиж эсвэл гаралтыг нь илгээхэд өөрчлөхөд хэрэглэгддэг. Ерөнхийдөө, чиглүүлэлт нь файлд байгаа лавлагаа нээх, хааж, хуулбарлах. Дахин чиглүүлэх ерөнхий хэлбэр нь:

[n] redir-op файл

redir-op нь өмнө нь дурдсан дахин чиглүүлэгч операторуудын нэг юм. Дараах нь боломжит чиглүүлэлтүүдийн жагсаалт юм. Bq n нь `3 '(` Bq 3' биш фокусын тодорхойлогчийг хэлнэ.

[n]> файл

Стандарт гаралтын (эсвэл n) файлыг дахин чиглүүлэх.

[n]> | файл

Дээрхтэй адил боловч C сонголтыг дарж өөрчлөх хэрэгтэй.

[n] >> файл

Стандарт гаралтыг (эсвэл n) нэмнэ үү.

[n] <файл

Файлаас стандарт оролт (эсвэл n) шилжүүлэх.

[n1] <& n2

Файлын тодорхойлогчийн n2 хувилбарын стандарт оролт (эсвэл n1).

[n] <& -

Стандарт оролтыг (эсвэл n) хаах.

[n1]> & n2

N2-ээс хувилбарын стандарт гаралт (эсвэл n1).

[n]> & -

Стандарт гаралтыг (эсвэл n) хаах.

[n] <> файл

Стандарт оролт (эсвэл n) дээр унших, бичихэд зориулсан файлыг нээх.

Дараах дахин чиглүүлэлтийг ихэвчлэн "энд-баримт бичиг"

[n] << хязгаарлагч

энд-doc-текст ...

блоклогч

Хязгаарлагчид хүртэлх дараалсан мөрнүүдийн бүх текстийг хадгалж, стандарт оролт, эсвэл тодорхойлогдсон файлын тодорхойлогч дээрх командыг ашиглана. Хэрэв эхний мөрөнд заасан хязгаарлалтын талаар дурдсан бол, энд-doc-текстийг шууд утгаар эмчилдэг бол текстийг параметрийн өргөтгөл, тушаал орлуулалт, арифметик өргөтгөл ("Expansions" хэсэгт тайлбарласнаар) 'Хэрэв operator бол `` <<' 'биш бол энд-doc-текстээс тэргүүлэх цонхуудыг хуулна.

Хайлт ба гүйцэтгэл

Гурван төрлийн тушаалууд байдаг: бүрхүүлийн функцууд, builtin тушаалууд болон ердийн програмууд байдаг бөгөөд командыг дарааллаар нь (нэрээр) хайдаг. Тэд тус бүрийг өөр замаар гүйцэтгэдэг.

Бүрхүүлийн функцийг гүйцэтгэх үед бүрхүүлийн байрлалын параметрүүд ($ 0-ээс бусад өөрчлөгдөлгүй үлдсэн) нь бүрхүүлийн функцийн аргументууд дээр тавигддаг. Тухайн командын орчинд тодорхойлогддог хувьсагчууд (функцийн нэрний өмнө тэдгээрийн үүрэг даалгавар өгч) орон нутгийн объектуудад хийгээд өгөгдсөн утгад тохируулна. Дараа нь функцийн тодорхойлолтод өгөгдсөн тушаалыг гүйцэтгэнэ. Тушаалын дуусах үед параметрийн параметрүүд нь анхны утгуудаа сэргээнэ. Энэ бүгд нь одоогийн бүрхүүлд байна.

Shell бүрхүүлийн бүтэц нь шинэ процесс үүсгэлгүйгээр бүрхүүлд дотоод бүрхүүлээр хийгддэг.

Үгүй бол хэрэв тушаалын нэр функц эсвэл builtin-тай тохирохгүй бол файлын систем дээр тушаалыг ердийн програмаар хайдаг (дараагийн хэсэгт тайлбарлав). Ердийн програмыг ажиллуулж байгаа тохиолдолд бүрхүүл нь програмыг ажиллуулж, аргументууд болон хүрээлэн буй орчныг програм руу дамжуулдаг. Хэрэв програм нь ердийн гүйцэтгэгддэг файл биш (өөрөөр хэлбэл " ASCII илэрхийлэл" нь "шидэт дугаар" -аас эхэлдэг бол, тиймээс execve (2) Эр ENOEXEC-ийг буцаадаг бол) shell нь уг програмыг Дараахи. Хүүхдийн бүрхүүл нь энэ тохиолдолд дахин шинэчлэгдэх бөгөөд ингэснээр үр дүн нь ad-hoc бүрхүүлийн скриптийг зохицуулахын тулд шинэ бүрхүүл ажиллуулсан мэт байх болно, ингэснээр толгой бүрхүүлийн хэсэгт байгаа тушаалын байршлын байршил нь санах ойг санаж байх болно. хүүхэд.

Энэ баримтын өмнөх хувилбарууд болон эх код нь өөртөө "бүрхүүлийн процедур" хэлбэрээр ид шидийн дугааргүйгээр бүрхүүлийн скриптийг төөрөгдүүлж байдаг.

Замын хайлт

Тушаал байршуулах үед бүрхүүл нь энэ нэрээр бүрхүүлийн функц байгаа эсэхийг анх харах болно. Дараа нь уг нэрээр барьсан командыг хайж байна. Хэрэв builtin тушаал олдоогүй бол хоёр зүйл тохиолдоно.

  1. Налуу зураас агуулсан нэрүүдийг ямар нэг хайлт хийхгүйгээр шууд гүйцэтгэдэг.
  2. Бүрхүүл нь тушаал бүрт PATH -д оролт бүрийг хайж олоход хайлт хийнэ. PATH хувьсагчийн утга нь багануудаар тусгаарлагдсан оруулгууд байх ёстой. Оруулга бүр лавлах нэрээс бүрдэнэ. Одоогийн сан нь хоосон санааны нэрээр тодорхойлогдож болно, эсвэл тодорхой хугацааны дараа тодорхой зааж өгч болно.

Тушаалын Exit Status

Тушаалын тушаал бүр бусад бүрхүүлийн тушаалуудын зан төлөвт нөлөөлж болох гаралтын статустай байна. Програм нь алдаа, алдаа эсвэл худал заалтанд алдаа гарахгүй байхын тулд хэвийн эсвэл амжилтын хувьд тэгээс гарна. Тушаалын хуудасны man page нь янз бүрийн гарах кодыг зааж өгнө. Түүнчлэн, builtin тушаалууд нь ажиллуулах бүрхүүл функцтэй адил гарах кодыг буцаана.

Complex Commands

Complex командууд нь хяналтын операторууд эсвэл нөөцлөгдсөн үгстэй энгийн командуудын хослолууд бөгөөд илүү нарийн төвөгтэй тушаал үүсгэх явдал юм. Ерөнхийдөө дараах тушаалуудын нэг нь тушаал юм:

Өөрөөр заагаагүй бол тушаалын exit status нь тушаалаар гүйцэтгэгдэж байгаа хамгийн сүүлийн энгийн тушаал юм.

Дамжуулах хоолой

Ус дамжуулах хоолой нь хяналтын операторын тусгаарласан нэг буюу хэд хэдэн командын дараалал юм. Бүх бүхний стандарт гаралтыг харин сүүлийн тушаал нь дараагийн тушаалын стандарт оруулгад холбогдсон байна. Сүүлийн тушаалын стандарт гаралт нь бүрхүүлээс уламжлагдан ирсэн байдаг.

Хоолойн загвар нь:

[!] тушаал1 [| тушаал2 ...]

Command1-ийн стандарт гаралтыг command2-ийн стандарт оролтод холбогддог. Тухайн командын хэсэг болох дахин чиглүүлэгч операторуудын зааж дахин чиглүүлэхээс өмнө стандарт оролт, стандарт гаралт, эсвэл хоёулаа дамжуулах хоолойгоор хуваарилагдах болно.

Хэрвээ хоолой нь арай дээр биш (сүүлд нь ярих юм бол) бүрхүүл бүх командуудыг хүлээлгэхийг хүлээнэ.

Хадгалагдсан үг! pipeline-г урьдчилан харахгүй, гарах статус нь дамжуулах хоолойд заасан сүүлийн тушаалын гарах статус юм. Үгүй бол гарах гарц нь сүүлчийн тушаалын гарах статусын талаархи логик юм. Өөрөөр хэлбэл, хэрэв сүүлийн тушаал тэгийг буцаах бол гарах статус нь 1; Хэрэв сүүлчийн тушаал тэгээс их байвал, гарах статус нь тэг байна.

Стандарт оролт эсвэл стандарт гаралтын шугам хоолойн шилжүүлэлт нь хоёулаа дахин чиглүүлэлт хийхээс өмнө хийгддэг тул үүнийг дахин чиглүүлэлтээр өөрчилж болно. Жишээлбэл:

$ command1 2> & 1 | тушаал2

Стандарт гаралт болон тушаалын стандарт алдааг command2-ийн стандарт оролт руу илгээдэг.

А; эсвэл терминатор нь өмнөх AND-OR-жагсаалт (дараагийн тайлбарт тайлбарлавал) дараалан ажиллуулах шалтгаан болдог; a & өмнөх OR-OR-жагсаалт дээрх асинхрон гүйцэтгэлийг үүсгэдэг.

Зарим бүрхүүлүүдээс ялгаатай нь дамжуулах хоолойн процесс бүр нь бүрхүүлийн бүрхүүлээс тогтдог (хэрэв бүрхүүлийн бүтээгдхүүн байхгүй бол энэ тохиолдолд тухайн бүрхүүлийн орчинд ажиллуулаагүй л бол байгаль орчинд ямар нэгэн нөлөө үзүүлдэг) гэдгийг анхаарна уу.

Оршил тушаалууд -

Хэрэв тушаал коммерын ampersand (&) хяналт дууссан бол бүрхүүл нь асинхроноор тушаалыг ажиллуулдаг - өөрөөр хэлбэл бүрхүүл дараагийн тушаалыг ажиллуулахаас өмнө тушаалыг дуусгана гэж хүлээхгүй.

Дараах тушаалыг ажиллуулах формат нь:

command1 & [command2 & ...]

Хэрэв бүрхүүл интерактив биш бол асинхрон командын стандарт оролтыг / dev / null гэж тохируулна

Жагсаалт - Ерөнхийдөө ярих

Жагсаалт нь шинэ мөр, цэг таслал, эсвэл таслалаар тусгаарлагдсан тэг болон түүнээс дээш тушаалын дараалал бөгөөд эдгээр гурван тэмдэгтийн аль нэгээр сонголтоо цуцална. Жагсаалт дахь тушаалуудыг бичсэн дарааллаар нь гүйцэтгэдэг. Хэрэв команд дарааллаар оруулаад бүрхүүл нь командыг эхлүүлж дараагийн команд руу орно. Өөрөөр хэлбэл дараагийн тушаалыг ажиллуулахаас өмнө зогсоох тушаалыг хүлээж байна.

Богино холбооны хэлхээний операторууд

`` && '' болон `|| '' нь AND-OR жагсаалтыг операторууд юм. `` && '' эхний тушаалыг гүйцэтгэж дараа нь хоёр дахь тушаалыг ажиллуулах iff эхний тушаалын exit status нь тэг байна. `` || '' нь адилхан боловч эхний тушаалын exit status нь nonzero iff гэсэн хоёр дахь тушаалыг ажиллуулдаг. `` && '' болон `|| '' хоёулаа ижил давуу талтай.

Урсгалын хяналт Хянах - хэрвээ, жишээ нь, тохиолдолд

Тушаалын мөрийн синтакс нь

жагсаалтад оруулав
Дараа нь жагсаалт
[elif жагсаалт
дараа нь жагсаалт] ...
[бусад жагсаалт]
fi

Тушаалын синтакс нь

жагсаалтын үед
жагсаалт хийх
хийсэн

Эхний жагсаалт дахь гарах статус нь тэг бол хоёр жагсаалтыг давтан гүйцэтгэдэг. Дээрх тушаал нь ижил төстэй боловч эхнийх нь гарах утга нь тэг хүртэл үргэлжилнэ.

Тушаалын мөрийн синтакс нь

үгийн дотор хувьсагч ...
жагсаалт хийх
хийсэн

Үгс өргөтгөсөн бөгөөд дараа нь жагсаалт бүрийг хувьсагчийн тохируулгаар дахин дахин дахин гүйцэтгэдэг. хийж гүйцэтгэж болно. "{'' ба` `} ''

Хугацаа ба таслах командын синтакс нь

завсарлага [тоо]
үргэлжлүүлэх [тоо]

Break гэж хамгийн ихдээ буюу хамгийн түрүүнд гүүр болдог. Үргэлжлүүлэн үргэлжилсэн давталтын дараагийн давталт үргэлжилсээр байх болно. Эдгээр нь барьсан тушаалуудаар хэрэгждэг.

Шийтийн командын синтакс нь

хэрэглэгчийн үг дотор байна
хэв маяг) жагсаалт ;;
...
esac

Энэ загвар нь үнэндээ нэг юмуу хэд хэдэн загвар байж болно (сүүлд тайлбарласан Shell Patterns -ийг үзнэ үү), "тэмдэгт" -ээр тусгаарлагдана.

Бүлэглэх коммандууд

Дүрмүүдийг бичиж болно

(жагсаалт)

эсвэл

{жагсаалт;

Эдгээрийн эхнийх нь дэд модн дахь командуудыг гүйцэтгэдэг. Баригдсан тушаалуудыг (жагсаалт) руу бүлэглэх нь одоогийн бүрхүүлд нөлөөлөхгүй. Хоёр дахь хэлбэр нь өөр нэг бүрхүүлийг салгаж авдаггүй тул илүү үр дүнтэй байдаг. Ингэж бүлэглэх тушаалууд нь нэг гарцтай програм юм шиг тэдний гаралтыг дахин чиглүүлэх боломжийг олгодог:

{printf Сайн уу; printf world \ n ";}> мэндчилгээ

Чиг үүрэг

Функцын тодорхойлолт нь

нэр () тушаал

Функцын тодорхойлолт нь гүйцэтгэгддэг мэдэгдэл юм; гүйцэтгэсэн үед уг нэрээр нэрлэгдсэн функцийг суулгаж, тэгийн гарах статусыг буцаана. Тушаал нь ихэвчлэн "{'' ба` `} ''

Хувьсагчид орон нутгийн коммандыг ашиглан функцэд орон нутгийнханд мэдэгдэж болно. Энэ нь функцын эхний мэдэгдэл мэт харагдах бөгөөд синтакс нь

орон нутгийн [хувьсагч | -] ...

Орон нутаг нь builtin тушаалаар хэрэгждэг.

Орон нутгийн хувьсагчийг үүсгэх үед энэ нь анхдагч утгыг өвлөн авч, хэрэв байгаа бол хүрээлэн буй орчноос ижил нэртэй хувьсагчаас унших, уншигдах тугуудыг өгнө. Үгүй бол хувьсагч эхлээд тохируулагдана. Бүрхүүл нь динамик хамрах хүрээг ашигладаг бөгөөд ингэснээр x хувьсагчийг орон нутгийн ард f функцээр хийдэг бөгөөд дараа нь функцын г дууддаг бол g доторх хувьсагч x-ийн тодорхойлолт нь f доторх хувьсагчийн x хувьсагч биш f-д илэрхийлсэн x хувьсагчид хамаарна. .

Орон нутгийн хийсэн цорын ганц тусгай параметр нь "-" - "" функцийг буцаах үед функц доторх функц доторх функцийг өөрчлөх "" - "Орон нутгийн ямар ч бүрхүүлийн сонголт хийх".

Ашиглалтын командын синтакс нь

буцах [exitstatus

Энэ нь одоогийн гүйцэтгэх функцийг зогсооно. Return нь builtin тушаалаар хэрэгждэг.

Хувьсагч ба үзүүлэлтүүд

Бүрхүүл нь параметрийн олонлогийг арчилдаг. Нэрээр нь заасан параметрийг хувьсагч гэж нэрлэдэг. Эхлэхэд бүрхүүлийн бүх хувьсагчдыг бүрхүүлийн хувьсагч болгон хувиргадаг. Шинэ хувьсагчийг маягт ашиглан тохируулж болно

нэр = утга

Хэрэглэгчийн тохируулсан хувьсагч нь зөвхөн цагаан толгойн үсгийн, тоонууд, доогуур зураасаас бүрдэх нэртэй байх ёстой - эхний нь тоон байх ёсгүй. Параметрийг доор тайлбарласны дагуу тоо эсвэл тусгай тэмдэгтээр тодорхойлж болно.

Байршлын үзүүлэлтүүд

Байршлын параметр нь тоонуудаар тодорхойлогдсон параметр (n> 0). Эхний бүрхүүл нь бүрхүүлийн скриптийн нэрийг дагаж байгаа тушаалын мөрийн утгуудад өгдөг. Set (1) builtin-ийг бас тохируулах эсвэл дахин тохируулахад ашиглаж болно.

Тусгай параметрүүд

Тусгай параметр нь дараах тусгай тэмдэгтүүдийн аль нэгээр тэмдэглэгдсэн параметр байна. Параметрийн утга нь түүний шинж тэмдгийн дэргэд ордог.

*

Нэгээс эхлэн параметрийн параметрийг өргөжүүлнэ. Өргөтгөлийг давхар хашилтын мөрөнд үүсгэх үед энэ нь IFS хувьсагчийн эхний тэмдэгт буюу тусгаарлагдсан IFS хувьсагчаар тусгаарлагдсан параметрийн утгатай нэг талбарт шилждэг.

@

Нэгээс эхлэн параметрийн параметрийг өргөжүүлнэ. Өргөтгөлийг давхар хашилтанд багтаах үед байрлал бүр нь тусдаа аргумент байдлаар өргөжинө. Хэрэв ямар нэгэн параметрийн параметр байхгүй бол @ нь өргөтгөсөн утгатай байсан ч гэсэн 0-ийн өргөтгөлийг үүсгэдэг. Жишээ нь, $ 1 бол "abc", $ 2 бол def ghi, Qq $ @ нь хоёр нэмэлт өгөгдлүүд рүү шилждэг бол:

abc def ghi

#

Байршлын параметрийн тоог өргөжүүлнэ үү.

?

Хамгийн сүүлийн үеийн дамжуулах шугам руу гарах статусыг өргөжүүлнэ.

- (Hyphen.)

Тогтмол командаар тогтоосон, эсвэл бүрхүүлээр бүрхэгдэж байгаа одоогийн тохируулгын тугуудыг (нэг үсэгийн опционы нэрийг мөр болгон нийлүүлсэн) хүртэл өргөжүүлнэ.

$

Өгөгдсөн бүрхүүлийн процес ID руу өргөжүүлнэ. Дэд хэсэг нь эцэг эхийнхтэй адил $ утгатай хэвээр байна.

!

Хамгийн сүүлийн үеийн тушаалын процедурын ID процессыг одоогийн бүрхүүлээс гүйцэтгэнэ. Ус дамжуулах хоолойн хувьд процессийн ID нь дамжуулах хоолой дахь хамгийн сүүлийн тушаал юм.

0 (тэг).

Shell буюу бүрхүүлийн скриптийн нэрийг өргөжүүлэх.

Үг Өргөтгөлүүд

Энэ бүлэгт үг хэллэгээр гүйцэтгэх янз бүрийн өргөтгөлүүдийг тайлбарлав. Бүх тайлбарласнаар бүх үг бүрт тайлбарлагдаагүй болно.

Tilde өргөтгөлүүд, параметрийн өргөтгөлүүд, тушаалын орлуулалт, арифметик өргөтгөлүүд, нэг үг дотор тохиолдох ишлэл арилгах нэг талбарт өргөжин тэлнэ. Энэ нь зөвхөн нэг талбараас олон талбарыг үүсгэх талбар хуваах буюу замнал өргөтгөл юм. Дээр дурдсанчлан, энэ дүрэмд хамаарах ганц ялгаа нь дээр дурьдсанчлан хоёр тооны ишлэлийн дотор тусгай параметрийн өргөтгөл юм.

Үг өргөтгөлийн дараалал нь:

  1. Tilde өргөтгөл, Үзүүлэлт өргөтгөл, Тушаал орлуулалт, Арифметик өргөтгөл (эдгээр нь бүгд ижил хугацаанд хийгддэг).
  2. Хэрвээ IFS хувьсагч утга нь null бол талбар хуваах арга нь алхам (1) дээр үүссэн талбар юм.
  3. Pathname Expansion ( f - тохируулгыг идэвхжүүлээгүй л бол).
  4. Ивээхээс хасах.

$ Тэмдэгт нь параметрийг өргөтгөх, тушаал орлуулах эсвэл арифметик үнэлгээ хийхэд хэрэглэгддэг.

Tilde Expansion (хэрэглэгчид & rsquo; s home directory орлуулах)

Бүртгэгдээгүй tilde тэмдэгтээс эхэлдэг үг (~) нь tilde өргөтгөлтэй тулгардаг. Налуу зураас хүртэлх бүх тэмдэгтүүд нь хэрэглэгчийн нэрээр хэрэглэгдэж, хэрэглэгчийн гэрийн сангаар солигдоно. Хэрэглэгчийн нэр байхгүй (жишээ нь ~ / foobar) tilde нь HOME хувьсагчийн утгыг (одоогийн хэрэглэгчийн гэрийн сан) сольсон байдаг.

Өргөтгөх өргөтгөл

Параметр өргөтгөх формат дараах байдалтай байна:

Энд илэрхийлэл нь урвуу эгнээ эсвэл "тэмдэгт" -тэй нийцэх хүртэл "бүх тэмдэгтүүдээс бүрдэх ба", "Embedded arithmetic expansions, тушаал орлуулалт, хувьсагчийн өргөтгөлүүд дэх тэмдэгтүүд нь "`} '' таарч байна

Параметр өргөтгөх хамгийн хялбар хэлбэр нь:

Параметрийн утгыг орлуулсан бол.

Параметрийн нэр, тэмдэг нь хаалтанд хаалттай байж болно. Энэ нь нэгээс илүү тооны оронтой параметрийн параметрийн утгатай эсвэл параметрийг нэрээр нь тайлбарлав. Хэрвээ параметр нь давхар хашилтанд багтах бол:

  1. Pathname өргөтгөл нь өргөтгөлийн үр дүнд хийгддэггүй.
  2. Талбайн хуваалт нь өргөтгөлийн үр дүнд хийгддэггүй бөгөөд харин @.

Үүнээс гадна, параметрийг өргөтгөхөд дараах форматуудын аль нэгийг ашиглан өөрчилж болно.

Анхдагч утгыг ашиглана уу. Параметр нь тохируулагдаагүй эсвэл null бол үгийн өргөтгөлийг орлуулах; Өөрөөр хэлбэл параметрийн утга орлуулсан болно.

Анхны утгыг оноох. Хэрэв параметр тохируулагдаагүй эсвэл null бол үгийн өргөтгөл параметрийн хувьд өгөгдөнө. Бүх тохиолдолд параметрийн төгсгөлийн утга нь орлуулах болно. Зөвхөн боломжит параметрүүд эсвэл тусгай параметрүүдээс зөвхөн хувьсагчдыг энэ аргаар тохируулж болно.

Null эсвэл Unset гэсэн алдаа гарга. Хэрэв параметр тохируулагдаагүй эсвэл null бол үгийн өргөтгөл (эсвэл үгийг орхисон тохиолдолд мэдэгдэлгүйгээр тохируулагдсан мэдээ) стандарт алдаа бичигдэж, бэлгэ тэмдэг гарахгүй статустай бүрхүүл гарна. Үгүй бол параметрийн утга нь орлуулсан болно. Интерактив бүрхүүл нь гарахгүй байх шаардлагатай.

Алтернатив үнэ цэнийг ашиглах. Хэрэв параметр тохируулагдаагүй эсвэл null бол null гэж солих; Өөрөөр хэлбэл үгийн өргөтгөлийг орлуулах болно.

Өмнөх харуулсан параметрүүдийн өргөтгөлийн хувьд цэг нь фонтын форматаар тохируулга эсвэл утгагүй параметрийн шалгалтын үр дүнгийн форматыг ашиглах; Зөвхөн тохироогүй параметрийн шалгалтын үр дүнгийн таслалтын үр дүнг орхигдуулсан байна.

Урттай мөр. Параметрийн утга дахь тэмдэгтүүдийн урт.

Параметрийн өргөтгөлийн доорх дөрвөн сорт нь субстратын процессыг хангадаг. Аль ч тохиолдолд хэвлэлтийн тэмдэглэгээнээс ялгаатай хэв маяг (Shell Patterns-ийг үзнэ үү) хэв маягыг үнэлэхэд ашиглагддаг. Хэрэв параметр нь * эсвэл @ бол тэлэлтийн үр дүн тодорхойгүй байна. Бүх параметрийг өргөтгөх тэмдэгтийг хавсаргасан хоёр тэмдэгтийг хавсаргахад дараах дөрвөн төрлийн тэмдэгтийг иш татдаггүй бөгөөд харин хаалтан доторх тэмдэгтүүдийг иш татахад нөлөөлдөг.

Хамгийн жижигхэн боодолтой загварыг арилгах. Үг нь загварыг бий болгодог. Параметр өргөтгөл нь параметрийн үр дүнг гаргадаг бөгөөд устгагдсан загвартай тохирсон хамгийн бага хэсэг нь параметр болно.

Хамгийн том нүхний загварыг хас. Үг нь загварыг бий болгодог. Параметрын өргөтгөл нь параметрт үр дүнг өгдөг бөгөөд устгагдсан загвартай таарах дагавартын хамгийн их хэсгийг агуулна.

Хамгийн бага хамгийн бага язгуурыг арилгах. Үг нь загварыг бий болгодог. Параметр өргөтгөл нь параметрийн үр дүнг гаргадаг бөгөөд устгагдсан загвартай тохирох угтварын хамгийн бага хэсэг.

Хамгийн том текстийг устгах Үг нь загварыг бий болгодог. Параметр өргөтгөл нь параметрийг үр дүнтэй болгодог бөгөөд устгагдсан загвартай тохирох угтварын хамгийн их хэсэг.

Тушаал солих

Тушаалын орлуулалт нь командын гаралтыг тушаалын нэрийн оронд орлуулах боломжийг олгодог. Тушаалын орлуулалт дараах тушаалаар хаалтанд ордог:

$ (тушаал)

эсвэл По "буцаагдсан" хувилбар Pc:

`тушаал`

Shell тушаал нь дэд хэвлэг дэх командыг гүйцэтгэх ба тушаалын стандарт гаралтыг орлуулах тушаалаар сольж, орлуулалтын төгсгөлд нэг эсвэл түүнээс дээш шинэчлэгдсэн сүүдийг дарж орлуулдаг. Гаралт дуусахаас өмнө Embedded s-г устгахгүй, гэхдээ талбар хуваагдах үед тэдгээр нь IFS -ийн утгаас хамааран s уруу орчуулагдаж болно.

Арифметик өргөтгөл

Арифметик өргөтгөл нь арифметик илэрхийлэл ба түүний утгыг орлох механизмыг бий болгодог. Арифметик өргөтгөлийн хэлбэр нь дараах байдалтай байна:

$ ((илэрхийлэл))

Хэл илэрхийлэлд давхар иш татах нь тусгайлан эмчлэхгүй бол хоёр илэрхийлэлд орсон гэж үзнэ. Платформ нь параметрийг өргөтгөх, тушаал орлуулах, болон иш таталт авахын тулд бүх жетонуудыг өргөжүүлнэ.

Дараа нь бүрхүүл үүнийг арифметик илэрхийлэл гэж үзэж, илэрхийлэлийн утгыг орлуулдаг.

Цагаан зай хуваах (талбар хуваах)

Параметр өргөтгөлийн дараа тушаал орлуулалт, арифметик өргөтгөлийн үр дүн нь өргөтгөлийн үр дүн, орлуулалтын үр дүнг хоёр талаас хуваахад ороогүй орлуулалтын үр дүнг сканнердаж, олон талбарыг үр дүнтэй болгодог.

Бүрхүүл нь IFS- ийн ялгагдах шинж чанарыг хязгаарладаг бөгөөд хязгаарлалтын утгыг парамерын өргөтгөлийн үр дүнг хувааж, орлуулалтыг талбар болгон хуваадаг.

Pathname өргөжүүлэх (File Name Generation)

Хэрэв - f тугийг тохируулаагүй бол үгийн хуваалт дууссаны дараа файлын нэр үүсдэг. Үг болгоныг салаагаар тусгаарласан цуврал хэв маягаар үздэг. Өргөтгөх үйл явц нь нэрийг хэв маягаар тохирох тэмдэгт мөр бүхий хэв маягийг солих замаар нэрийг нь үүсгэж болох бүх одоо байгаа файлуудын нэрээр солино. Үүн дээр хоёр хязгаарлалт байдаг: эхнийх нь загвар нь налуу зураастай мөрийг тааруулах боломжгүй, хоёрдахь нь хэв маяг нь эхний эхний тэмдэгт бол хугацаатай үед тэмдэгт мөрийг тохирохгүй байж болно. Дараагийн хэсэг нь Pathname Expansion болон case (1) тушаалуудад ашиглагддаг загваруудыг тайлбарладаг.

Shell хэлбэрүүд

Загвар нь өөрсдийгөө болон мета-тэмдэгтүүдтэй таардаг ердийн тэмдэгтүүдээс тогтдог. Мета-тэмдэгтүүд нь `` '' `` * '' ``? '' Ба `` ['' Эдгээр тэмдэгтүүд нь иш татагдсан тохиолдолд тусгай утгыг алддаг. Захиалга эсвэл хувьсах орлуулалт хийгдэж, долларын тэмдэг буюу буцах ишлэл нь хоёр дахин иш татагдахгүй бол тушаалын хувьсагч эсвэл гаралтын утга эдгээр тэмдэгтүүдэд зориулан сканнердсан бөгөөд тэдгээр нь мета-тэмдэгтүүд рүү шилждэг.

Одоор (`` * '') тэмдэгт мөрүүдтэй таарч байна. Асуулт тэмдэг нь ямар ч тэмдэгттэй таарч байна. Зүүн хаалт (`` ['') нь тэмдэгтийн ангийн талаар танилцуулав. Тэмдэгт ангийн төгсгөлд (`` `` `` `` `` `` `` `` `` `` `` `` `` `` `` '' Тэмдэгт анги нь дөрвөлжин хаалтуудын хоорондох бүх тэмдэгтийг тааруулна. Тэмдэглэсэн тэмдэглэгээг ашиглан олон тэмдэгтийг тодорхойлж болно. Тэмдэгтийн ангийн эхний тэмдэгтийг анхаарлын тэмдэг тавих замаар тэмдэгтийн ангилалыг нөхөж болно.

Тэмдэгт ангид "`] '' оруулахын тулд эхний тэмдэгтийг (``! '' Дараа нь) тэмдэглэнэ. Нь хасах тэмдэг оруулахын тулд хамгийн сүүлчийн тэмдэгтийг жагсаана уу

Баригдсан

Энэ хэсэг нь бүтээгдсэн builtin тушаалуудыг жагсаана. Учир нь тусдаа процессоор гүйцэтгэх боломжгүй үйлдлийг гүйцэтгэх хэрэгтэй болдог. Үүний зэрэгцээ үр ашгийг сайжруулах хэд хэдэн командууд байдаг (жишээ нь, echo 1).

:

0 (true) гарах утга буцаадаг null тушаал.

. файл

Тодорхой файл дахь тушаалууд нь бүрхүүлийг уншиж, ажиллуулдаг.

alias [ name [ = string ... ]]

Хэрэв нэр = string тодорхойлогдвол бүрхүүл нь мөрийн утга бүхий alias нэрийг тодорхойлно. Зөвхөн нэрийг заасан бол alias нэрний утгыг хэвлэнэ. Ямар ч нэмэлт өгөгдөлгүйгээр alias builtin нь бүх тодорхойлсон алиасуудын нэр болон утгуудыг хэвлэдэг ( unalias- ийг харна уу )

bg [ ажил] ...

Тодорхой ажлын байрыг үргэлжлүүлэх (эсвэл ажлын байргүй бол одоо ажиллаж буй ажлыг үргэлжлүүлэх).

command тушаал arg ...

Тусгайлан зааж өгсөн builtin тушаалыг ажиллуулна. (Энэ нь builtin тушаалын адил нэртэй бүрхүүлийн функцтэй үед энэ нь ашигтай байдаг.)

cd [ лавлах ]

Заасан сан руу шилжих (анхдагч $ HOME) Хэрэв CDPATH- ийн оруулга нь cd тушаалын орчинд эсвэл бүрхүүлийн хувьсагчийн CDPATH тохируулагдсан бөгөөд сангийн нэр нь зүсэгдсэн эхлэлээс байхгүй бол CDPATH -д жагсаагдсан сангууд хайлт хийнэ. заасан сантай байна. CDPATH формат нь PATH- тэй адилхан интерактив бүрхүүлтэй үед cd команд нь хэрэглэгчийн өгсөн нэрээс өөр байсан бол энэ фокусын нэрийг солих байсан. Эдгээр нь CDPATH механизмыг ашигласан эсвэл симболын холбоосыг гадагшлуулснаас өөр байж болно.

eval мөр ...

Бүх орон зайг тайлбарлав. Дараа нь командыг дахин гүйцэтгэж, гүйцэтгэнэ.

exec [ command arg ... ]

Тушаалыг оруулаагүй тохиолдолд бүрхүүлийн процесс нь заагдсан програмаар солигдоно (энэ нь бүрхүүлийн бүтээгдхүүн эсвэл функц биш жинхэнэ програм байх ёстой). Тушаалын тушаалын төгсгөлд дурын чиглүүлэлтүүд нь байнгын тэмдэглэгддэг бөгөөд тэдгээр нь гүйцэтгэгдэж байгаа команд дуусах үед устгагдахгүй байдаг.

гарах [ exitstatus ]

Бүрхүүлийн процессыг зогсоох. Хэрэв exitstatus өгөгдсөн бол энэ нь бүрхүүлийн гарах статус болж ашиглагддаг; Эсвэл өмнөх тушаалын exit status ашиглагдана.

экспортын нэр ...

экспорт -p

Нэр заасан нэр нь дараагийн командын орчинд гарч ирэхээр экспортлогдсон байна. Хувьсагчийг экспортлох цорын ганц арга бол үүнийг тохируулах явдал юм. Бүрхүүл нь хувьсагчийн утгыг бичиж, экспорт хийхтэй зэрэгцүүлэн тохируулж болно

экспортын нэр = утга

Экспортын тушаал нь бүх экспортлогдсон хувьсагчдын нэрсийг жагсаахад ямар ч аргумент хэрэггүй. - p сонголтоор зааж өгсөн бол гаралт нь интерактив бус хэрэглээнд тохируулагдсан байх ёстой.

fc [- e засварлагч ] [ эхний [ сүүлчийн ]]

fc -l [- nr ] [ эхний [ сүүлийн ]]

fc -s [ хуучин = шинэ ] [ эхний ]

FC нь цуг бүтээгдсэн жагсаалт, эсвэл засварлах, дахин ажиллуулах, өмнөх интерфэйс бүрхүүлд тушаал оруулна.

-e редактор

Редактороор нэрлэгдсэн редактор ашиглан тушаалуудыг засварлана уу. Редакторын мөр нь тушаалын нэр бөгөөд PATH хувьсагчаар хайлт хийдэг. FCEDIT хувьсагчийн утгыг e- ийг заагаагүй тохиолдолд анхдагч байдлаар ашиглагддаг. Хэрэв FCEDIT нь null эсвэл unset бол EDITOR хувьсагчийн утгыг хэрэглэнэ. Хэрэв EDITOR нь null эсвэл unset бол ed (1) нь редактороор ашиглагддаг.

-l (ell)

Тэдгээрийг редакторлохын оронд тушаалуудыг жагсаа. Тушаалууд нь эхний болон сүүлийн алгоритмуудын дарааллаар бичигдсэн дарааллаар бичигдэх бөгөөд команд бүрээр нь тушаалын дугаараар тушаалын дугаартайгаар өгнө.

-n

-l тушаалаар жагсаалтын үед тушаалын дугаарыг дарах.

-r

Бүртгэгдсэн тушаалуудын дарааллыг ( l - эсвэл засварлагдсан ( l - l - ийн хамтаар )

-s

Редактор ажиллуулахгүйгээр тушаалаа дахин гүйцэтгэх хэрэгтэй.

Эхлээд

сүүлчийн

Жагсаалт буюу засвар оруулах командыг сонгоно уу. Өмнөх тушаалуудын тоо нь HISTSIZE хувьсагчийн утгаас тодорхойлогдоно . Эхний болон сүүлчийн эсвэл хоёулангийнх нь үнэ цэнэ нь дараах зүйлсийн аль нэг нь байна:

[+] тоо

Тушаалын дугаарыг төлөөлөх эерэг тоо; тушаалын + дугааруудыг l сонголттой хамт харуулж болно.

-хувь

Өмнөх тушаалын тоог гүйцэтгэсэн командыг илэрхийлсэн сөрөг аравтын дугаар. Жишээ нь, -1 бол өмнөх тушаалын өмнөх тушаал юм.

мөр

Энэ мөрөөс эхэлсэн хамгийн сүүлд оруулсан тушаалыг заах мөр. Хуучин = шинэ алгоритмыг мөн зааж өгөөгүй бол - s эхний мөрийн хэлбэрийн хэлбэр нь суулгагдсан тэгш тэмдэг агуулж болохгүй.

Дараах орчны хувьсагчууд fc-ийн гүйцэтгэлд нөлөөлөх болно:

FCEDIT

Редакторын нэрийг ашиглах.

HISTSIZE

Өмнөх тушаалуудын тоо.

fg [ ажил ]

Тодорхойлогдсон ажлуудыг эсвэл ажлын байрандаа нүүрэн дээр нь шилжүүл.

var авах

POSIX нь Bell Labs -derived getopt (1) -тай андуурагдахгүй байх тушаал юм.

Эхний аргумент нь хэд хэдэн үсэг байх ёстой бөгөөд тэдгээр нь аргумент шаарддаг гэдгийг харуулахын тулд цэг бүрийг нэмэлт сонголтоор оруулж болно. Тодорхойлж буй хувьсагч нь салаа утгатай тохируулагдсан байна.

Getopts тушаал нь хуучин getopt (1) хэрэгсэлийг хоосон зай агуулж байгаа аргументуудтай холбоотойгоор хаах боломжийг олгодог.

Платформуудын жагсаалтаас сонголт болон түүний нэмэлт өгөгдлүүдийг барьж авах боломжтой. Шаардлагатай үед getopts нь var -р тодорхойлогдсон бүрхүүлийн хувьсагч дахь жагсаалтын тохируулгын мөрөөс жагсаалтын тохируулгын мөрөөс байрлах ба бүрхүүлийн хувьсагч дахь индекс дэхь хувьсагчийн утгыг байршуулна. Цуваа дуудагдсан үед OPTIND нь 1- ээр эхэлдэг. argument, getopts баригдсан нь үүнийг бүрхүүлийн хувьсагч дотор байрлуулна. OPTARG Хэрэв оптимед опционыг зөвшөөрөхгүй бол OPTARG нь тохируулагдана.

Оптик функц нь хүлээн зөвшөөрөгдсөн оптик үсэг юм. Хэрвээ үсэг нь цэгийг дагаж байгаа бол сонголтыг цагаан зайгаар тусгаарлаж болох эсвэл үгүйсгэх аргументтай байна. Хэрэв опционы тэмдэгтийг хүлээж авахгүй бол getopts нь var хувьсагчийг ``? '' '' Getopts дараа нь OPTARG-г тохируулах ба гаралтыг стандарт алдаа руу бичих болно. Бүх алдааг эргүүлэх эхний шинж тэмдэг болох цэгийг тодорхойлох замаар орхигдуулна.

Сүүлийн сонголтыг хүрэх үед nonzero утга буцаагдах болно. Хэрэв үлдсэн нэмэлт өгөгдлүүд байхгүй бол getopts нь var- ийг тусгай тохируулгаар зааж өгөх юм бол `- '' тэгэхгүй бол var нь`?? ''

Дараах код хуваагдал нь аргументуудыг [a] болон [b] болон аргументийг шаарддаг опцион [c] аргументыг хэрхэн боловсруулахыг харуулж байна.

f
хийх
$ f функц
a | b) flag = $ f ;;
c) carg = $ OPTARG ;;
\?) echo $ USAGE; exit 1 ;;
esac
хийсэн
shift `expr $ OPTIND - 1`

Энэ код нь дараахь аль нэгийг тэнцүү гэж үзнэ:

cmd -acarg файлын файл
cmd -a -c arg файлын файл
cmd -carg -a файлын файл
cmd -a -carg - файлын файл

hash -rv тушаал ...

Энэ бүрхүүл нь тушаалын байршлыг дурдах бөгөөд hash хүснэгтийг хадгалдаг. Ямар ч аргументгүйгээр энэ hash тушаал нь энэ хүснэгтийн агуулгыг хэвлэдэг. Сүүлчийн cd командаас хараагүй байсан оруулгууд нь одоор тэмдэглэгдсэн байдаг; Эдгээр оруулгуудыг хүчингүй болгох боломжтой.

Аргументуудтай бол hash тушаал нь заасан хүснэгтийн хэш хүснэгтийн (тэдгээр нь функц биш бол) арилгах бөгөөд тэдгээрийг байрлуулна. - v сонголттой бол hash тушаалуудыг тэдгээрийг олох болгонд хэвлэдэг. R сонголт нь hash тушаалыг функцээс бусад хэш хүснэгтийн бүх оруулгуудыг устгана.

jobid [ ажил ]

Ажлын явцад процессийн id-ийг хэвлэх. Хэрэв ажлын тодорхойлолтыг орхисон бол одоогийн ажлыг ашиглаж байна.

ажлын байр

Энэ команд нь одоогийн бүрхүүлийн процессын үр хүүхэд байгаа бүх процессуудыг жагсаав.

pwd

Одоогийн директороо хэвлэ. Builtin тушаал нь ижил нэртэй програмаас өөр байж магадгүй тул builtin тушаал нь тухайн санг тухайн үед санах ойд дурдагддагийг санадаг. Энэ нь илүү хурдан болгодог. Гэхдээ хэрэв одоогийн лавлах нэр өөрчлөгдсөн бол pwd -н builtin хувилбар нь уг директорын хуучин нэрийг хэвээр үргэлжлүүлэн хэвлэдэг.

[- p prompt ] [- r ] хувьсагчийг уншаарай ...

Хэрэв - p сонголтыг зааж өгсөн бөгөөд стандарт оролт нь терминал бол хүлээх мөр хэвлэгддэг. Дараа нь мөрийг стандарт оролтоос уншина. Төгсгөлийн шинэ мөр нь мөрөөс устгагдах бөгөөд мөр нь дээр хуваагдсан үгийн талаар хэсэгт хуваасантай адилаар хэсгүүдийг хувааж, хувьсагчдыг дарааллаар нь жагсаадаг. Хамгийн багадаа нэг хувьсагчийг тодорхойлсон байх ёстой. Хувьсагчуудаас олон хэсгүүд байгаа бол үлдсэн хэсгүүдийг (тэдгээрийг тусгаарласан IFS дэх тэмдэгтүүдтэй хамт) сүүлийн хувьсагчид зааж өгдөг. Хэрвээ хувьсагчаас илүү олон хувьсагч байгаа бол үлдсэн хувьсагч нь null тэмдэгтийг өгнө. Оруулсан уншилт нь EOF-ийг оролтод тулгардаггүй бол амжилтанд хүрэх болно. Энэ тохиолдолд алдаа нь буцаагдах болно.

Анхдагчаар - r тохируулгыг зааж өгдөггүй бол уртрагын "" "тэмдэгт нь зугтах тэмдэгт болж ажилладаг бөгөөд дараах тэмдэгтүүдийг шууд утгаар эмчилдэг. Хэрвээ урвуу ослын дараа шинэ мөрийг дагавал backslash болон newline устах болно.

Уншлагын нэр ...

readonly -p

Тодорхойлогдсон нэрсийг зөвхөн уншигдсан гэж тэмдэглэнэ. Ингэснээр тэдгээрийг дараа нь өөрчлөгдөхгүй эсвэл тохируулах боломжгүй болно. Бүрхүүл нь зөвхөн хувьсагчийн утгыг зөвхөн бичсэнээр уншигдахаар тэмдэглэсэн тэмдэгтээр тавьдаг

readonly name = утга

Унших хувьсагчуудын нэрсийг readonly тушаал жагсаах шаардлагагүй. - p сонголтоор зааж өгсөн бол гаралт нь интерактив бус хэрэглээнд тохируулагдсан байх ёстой.

[{- тохируулга | + сонголтууд | - arg ... ]

Set команд нь гурван өөр функцийг гүйцэтгэдэг.

Ямар ч аргументгүйгээр энэ нь бүх бүрхүүлийн хувьсагчдын утгуудыг жагсаадаг.

Хэрэв сонголтууд өгөгдсөн бол энэ нь заагдсан тохируулгын тугуудыг зааж өгдөг, эсвэл Sx Argument List Processing гэж нэрлэгдсэн хэсэгт өгүүлсэний дагуу тэдгээрийг цэвэрлэнэ.

Set командын гурав дахь хэрэглээ нь тодорхойлсон аргуудын хувьд бүрхүүлийн байрлалын параметрийн утгуудыг тогтоох явдал юм. Аль ч сонголтыг өөрчлөхгүйгээр байрлал параметрийг өөрчлөхийн тулд "-" гэж бичээд эхний аргументийг ашиглана. Хэрэв ямар ч аргумент байхгүй бол set команд нь бүх байрлалын параметрүүдийг (" shift $ #" -ийг ажиллуулахтай ижил байна).

хувьсах утга

Хувьсагчийн утга өгнө. (Ерөнхийдөө setvar setvar- г ашиглахын оронд хувьсагч = утгыг бичих нь илүү дээр юм. Нэр нь параметараар дамжуулагдаж байгаа хувьсагчдад утгыг өгдөг функцүүдэд ашиглагдана.)

ээлж [ n ]

Байршлын параметрийг n удаа шилжүүл. Шилжилт нь $ 1 $ 2- ын утгыг $ 2- ын үнэ $ 3 гэх мэт $ 1- с $ 1- ээр бууруулдаг. Хэрэв n нь байрлалын параметрийн тооноос их байвал шилжүүлэлт нь алдааны мэдэгдэл өгч, буцаах статустай гарна.

цаг хугацаа

Бүрхүүлд ажиллаж буй үйл явц болон бүрхүүлийн хувьд хуримтлагдсан хэрэглэгч болон системийн хугацааг хэвлэ. Буцаах статус 0 байна.

занга үйл ажиллагааны дохио ...

Тодорхой дохионуудыг хүлээн авсны дараа бүрхүүлийг задлан шинжилж, үйлдлийг гүйцэтгэнэ. Дохио нь дохионы дугаараар тодорхойлогдоно. Хэрэв дохиог 0 бол үйлдэл нь бүрхүүл гарахад гүйцэтгэгдэнэ. Үйлдэл нь null эсвэл `` '' байж болох бөгөөд хуучин дохио нь үл тоомсорлогдож, сүүлд нь анхдагч үйлдлийг хийх шалтгаан болдог. Бүрхүүлийн бэхэлгээ нь дэд дарааллыг унтраах үед анхдагч үйлдэл рүү дохио өгдөг (гэхдээ үл тоомсорлодоггүй) дохиог дахин тохируулж болдог. Залгах команд нь бүрхүүлд оруулснаар дохио өгөхгүй.

төрөл [ нэр ... ]

Тухайн нэрийг команд болгон тодорхойлж, тушаалын хайлтын үр дүнг хэвлэх. Боломжит шийдлүүд нь: бүрхүүлийн түлхүүр үг, alias, shell builtin , тушаал, tracked alias болон олдсонгүй. Аль алиных нь хувьд alias өргөтгөлийг хэвлэх болно; тушаалууд болон дагасан алиасуудыг бичихэд тушаалын бүрэн нэрийг нь хэвлэдэг.

ulimit [- H -S ] [- a -tfdscmlpn [ утга ]]

Процессийн хатуу эсвэл зөөлөн хязгаарлалтуудыг шалгаж, тохируулах, эсвэл шинэ хязгааруудыг тогтоох. Хатуу хязгаарлалт (ямар ч процессийг зөрчихийг зөвшөөрдөггүй бөгөөд үүнийг багасгасаны дараа ч нэмэгдэхгүй байж болно) болон зөөлөн хязгаар (процессыг дохио өгөх боловч заавал алахгүй байх шаардлагагүй юм) Эдгээр тугуудыг:

-H

хатуу хязгаарлалтын талаар лавлана уу

-S

Зөөлөн хязгаарлалт тавих буюу хайх. Хэрэв H болон S - ийн аль нэгийг зааж өгөөгүй бол зөөлөн хязгаарлалт нь эсвэл хоёр хязгаарлалтыг тавьсан байна. Хэрэв хоёулаа тодорхойлогдвол хамгийн сүүлд хожиж болно.

Байцаагдах буюу тавигдах хязгаарыг дараах байдлаар сонгож болно:

Бүх одоогийн хязгаарыг харуул

CPU-ийн хугацаа (секундээр) дээр хязгаар тавих буюу үзүүл

-f

үүсгэж болох хамгийн том файл дээрх хязгаарыг (эсвэл 512-байтаар блок)

-d

процессийн өгөгдлийн сегментийн хэмжээг хязгаарлах эсвэл хязгаарлах (килобайт дахь)

-s

процессийн стекийн хэмжээг хязгаарлах эсвэл хязгаарлах (килобайтад)

-c

үүсгэх боломжтой хамгийн том овоолгын хэмжээг хязгаарлах эсвэл хязгаарлах (512-байт блок дахь)

процессоор (килобайтаар) ашиглагдаж болох нийт физик санах ойн хязгаарыг харуулах буюу хязгаарлах

-l

mlock (2) ( килобайтаар ) хэр олон санах ой дээр түгжигдсэн хязгаарыг харуулж эсвэл хязгаарлах

-p

Энэ хэрэглэгч нэг удаад байж болох процессийн тоог хязгаарлах эсвэл хязгаарлах

-n

процессийн зэрэгцээ нээж болох тоон файлын хязгаарыг үзүүлэх эсвэл хязгаарлах

Хэрэв эдгээрийн аль нь ч тодорхойлогдоогүй бол энэ нь файлын хэмжээг харуулах буюу тохируулах хязгаар юм. Хэрэв утга тодорхойлогдвол хязгаарын тоог тохируулна; Тэгэхгүй бол өнөөгийн хязгаар харагдана.

Ямар нэгэн дурын процессийн хязгаарыг sysctl (8) хэрэгсэл ашиглан харж эсвэл тохируулж болно.

umask [ маск ]

Umask утгыг тохируулах (umask (2)) -ийг заасан octal утгад тохируулна. Хэрэв аргументийг орхисон бол umask утга хэвлэгдэх болно.

unalias [- a ] [ нэр ]

Хэрэв нэр тодорхой бол бүрхүүл нь тэрхүү alias-ийг устгадаг. Хэрэв - a нь тодорхойлогдвол бүх alias устгагдана.

нэрийг тохируулах ...

Тодорхойлсон хувьсагчууд болон функцууд нь тогтоогдоогүй, тайлагнадаггүй. Хэрэв өгөгдсөн нэр хувьсагч болон функц хоёулаа тохирч байвал хувьсагч ба функц хоёулаа тохируулагдана.

хүлээх [ ажил ]

Тодорхой ажлуудыг бөглөж дуусаад ажил дахь сүүлийн процессийн гарах статусыг буцаана. Хэрэв аргументийг орхисон бол бүх ажлыг дуусгахыг хүлээх болон буцах тэгийн гарах статусыг хүлээнэ.

Command Line Editing

Sh -ийг терминалаас интерактив ашигласан үед, одоогийн тушаал болон тушаалын түүхийг (Sx Builtins дахь fc- г үзнэ үү) vi-горимд тушаалын мөрийн засварыг ашиглан засварлаж болно. Энэ горим нь vi хүний ​​хуудаст тодорхойлсон хэсгүүдтэй төстэй командуудыг ашиглана. `Set '-o vi нь vi-горимыг засварлаж vi оруулах горимыг sh болгоно. Vi-горим идэвхжсэн үед sh нь оруулах горим болон тушаал горимын хооронд шилжих боломжтой. Редактор энд бүрэн хэмжээгээр тайлбарлагдаагүй, гэхдээ дараа дараагийн баримт бичигт байх болно. Энэ нь vi: AQ ESC гэж бичвэл таныг VI тушаалын горимд шидэх болно. Ачаалах явцыг Aq буцаах үед тушаалын горимд бүрхүүлийг бүрхүүл рүү дамжуулна.

Чухал: Тушаалын командыг ашиглана ( % man ) ашиглана.