Пепео - Линук Цомманд - Уник команда

НАМЕ

сх - командни интерпретер ( схелл )

СИНОПСИС

сх [- / + аЦефнувкИимксВЕбц ] [- о лонгнаме ] -вордс [ циљ ... ]

ОПИС

Сх је стандардни командни тумач за систем. Тренутна верзија сх је у процесу промјене како би се ускладио са спецификацијама ПОСИКС 1003.2 и 1003.2а за љуску. Ова верзија има мноштво функција које чине да је у неким погледима слична Корн схелл-у, али није клон Корн схелл-а (види ксх (1)). У ову шкољку се уграђују само функције означене ПОСИКС плус неколико Беркелеи екстензија. Очекујемо ПОСИКС усклађеност до тренутка издавања 4.4 БСД-а. Ова ман-страница није намењена да буде туторијал или потпуна спецификација схелл-а.

Преглед

Схелл је команда која чита линије из датотеке или терминала, тумачи их и обично извршава друге команде. То је програм који се покреће када се корисник пријављује у систем (иако корисник може изабрати другу љуску са командом цхсх (1)). Шупљина примењује језик који има конструкције контроле протока, макро објекат који пружа разне функције поред складиштења података, заједно са уграђеним историјским могућностима и могућностима за уређивање линија. Укључује многе значајке за помоћ интерактивној употреби и има предност да је интерпретативни језик заједнички и за интерактивну и неинтерактивну употребу (схелл скрипте). То значи да се команде могу директно куцати на покренуту шкољку или се могу ставити у датотеку и фајл може директно извршити схелл.

Позивање

Ако нису присутни никакви аргументи и ако је стандардни улаз љуске повезан са терминалом (или ако је постављена заставица - и ), а опција није присутна, схелл се сматра интерактивном шкољком . Интерактивна љуска генерално подстиче пре сваке наредбе и другачије управља програмским и управљачким грешкама (као што је описано у наставку). Када први пут започне, схелл проверава аргумент 0, а ако почиње са дасх-ом, схелл се такође сматра шифром за пријављивање. То обично ради аутоматски од стране система када се корисник први пут пријављује. Логичка шифра најпре чита команде из датотека / етц / профиле и .профиле ако постоје. Ако је варијабла околине ЕНВ постављена на улазу у љуску или је постављена у .профиле схелл-а за пријављивање, схелл затим чита команде из датотеке назване у ЕНВ-у. Због тога, корисник треба ставити команде које треба извршити само на време пријављивања у .профиле датотеку и команде које се извршавају за сваку шкољку унутар ЕНВ датотеке. Да бисте променили ЕНВ варијанту у неку датотеку, поставите следећу линију у вашу .профиле вашег кућног директорија

ЕНВ = $ ХОМЕ / .схинит; извоз ЕНВ

замењујући `` .схинит '' било које име датотеке које желите. Пошто се ЕНВ датотека чита за свако позивање љуске, укључујући љуске и неинтерактивне љуске, следећа парадигма је корисна за ограничавање команди у ЕНВ датотеки за интерактивне позиве. Ставите команде у "случај" и " есац " испод (ове наредбе су описане касније):

случај $ - у * и *)

# команде само за интерактивну употребу

...

есац

Ако су аргументи командне линије поред опција били прецизирани, онда схелл описује први аргумент као име датотеке за читање команди (схелл скрипту), а преостали аргументи су постављени као позицијски параметри схелл ($ 1 , $ 2, итд.). У супротном, схелл прочита команде са свог стандардног уноса.

Обрада листе аргумената

Све опције појединачног слова имају одговарајуће име које се може користити као аргумент за опцију - о . Име - о се налази поред опције за једно слово у опису који следи. Подешавање цртице `` - '' укључује опцију, а коришћење плус-а + '+' онемогућава опцију. Следеће опције могу се подесити из командне линије или са постављеним (1) уграђеним (описаним касније).

-Алекспорт

Извозите све променљиве додијељене. (УНИМПЛЕМЕНТЕД за 4.4алпха)

Прочитајте команде из командне линије. Нема никаквих команди са стандардног уноса.

ноцлоббер

Немојте преписивати постојеће датотеке са ``> '' (УНИМПЛЕМЕНТЕД за 4.4алпха)

еррекит

Ако није интерактиван, одмах изађите ако нека неизвршена команда не успије. Излазни статус команде сматра се експлицитно тестираним ако се команда користи за контролу елифа док је или до, или ако је команда леви ручни операнд оператера `` && '' или `` || ''.

ноглоб

Онемогући проширење путање .

ноекец

Ако нису интерактивни, прочитајте команде, али их не извршавајте. Ово је корисно за проверу синтаксе скриптова.

ноунсет

Напишите поруку стандардној грешци када покушате да проширите променљиву која није постављена, а ако схелл није интерактиван, изађите одмах. (УНИМПЛЕМЕНТЕД за 4.4алпха)

вербосе

Шукла уписује свој унос у стандардну грешку док се чита. Корисно за дебаговање.

ктраце

Напишите сваку команду на стандардну грешку (претходи '+' прије него што се изврши. Корисно за дебаговање.

тихо профил

Ако су поставке - в ор - к постављене, немојте их примјењивати приликом читања иницијализацијских датотека, то су / етц / профиле .профиле и датотека коју је одредила варијабла ЕНВ окружења.

незгодан

Игноре ЕОФ-а са инпута када су интерактивни.

интерактиван

Приближите љуску да се понаша интерактивно.

монитор

Укључите контролу над радом (аутоматски се подешава када је интерактиван).

стдин

Прочитајте команде са стандардног уноса (аутоматски се подешава ако нису присутни аргументи датотеке). Ова опција нема ефекта када је подешено након што је схелл већ почела да ради (тј. Са сетом (1)).

ви

Омогућите уграђени едитор ви (1) наредбе (онемогућите - Е ако је постављено).

емацс

Омогућите уграђени емацс (1) едитор командне линије (онемогућава - В ако је постављено).

обавестити

Омогућите асинхроно обавештење о завршетку задатка посла. (УНИМПЛЕМЕНТЕД за 4.4алпха)

Лексичка структура

Схема чита улаз помоћу линија из датотеке и прелази на речи на простору (празнине и табови), а код одређених секвенца знакова који су посебни за љуску под називом `` оператери '' Постоје две врсте оператора: контролне операторе и оператере за преусмеравање (њихово значење се разматра касније). Следи листа оператора:

"Оператори контроле:"

& && (); ;; | || <невлине>

"Оператор преусмеравања:"

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

Цитирање

Цитирање се користи да уклони посебно значење одређених знакова или речи у схелл, као што су оператери, пространи простор или кључне речи. Постоје три врсте цитирања: упарени појединачни цитати, упарени двоструки цитати и обрнути пошевници.

Бацксласх

Основа бацксласх-а чува дословно значење следећег карактера, изузев Ак линије. Скрајшана пошевница пред Ак ново линијо се обравнава кот надаљевање линије.

Сингле Куотес

Приложени знакови у појединачним цитатима чувају дословно значење свих знакова (изузев појединачних цитата, што онемогућава стављање појединачних цитата у низу са једним цитатом).

Доубле Куотес

Затворени знакови унутар двоструких цитата чувају дословно значење свих знакова осим долазних ($) и (бацксласх) (\). Окосница са двоструким наводницима је историјски чудна и служи за навођење само следећих знакова:

$ `\ <невлине>

Иначе остаје дословно.

Резервисане ријечи

Резервисане речи су речи које имају посебну значење за љуску и препознате су на почетку линије и након оператора контроле. Следеће су резервисане речи:

! Та елиф Та фи Та док је случај Та

друго Та за Та затим Та {Та}

До Та је учинио Та до Та ако је Есац

Њихово значење се касније разматра.

Алиасес

Алиас је име и одговарајућа вриједност која је постављена помоћу алијансе (1) уграђене команде. Кад год се може појавити резервирана реч (види горе), и након провере резервисаних ријечи, схелл провјерава ријеч да види да ли се поклапа са псеудонимом. Уколико то учини, он га замењује у улазном току са својом вриједношћу. На примјер, ако постоји псеудоним назван `` лф '' са вриједношћу `` лс -Ф '', онда је унос:

лф фообар <повратак>

би постао

лс -Ф фообар <повратак>

Алиасес обезбеђују погодан начин за наивне кориснике да креирају скрипте за наредбе без потребе да науче како да креирају функције са аргументима. Такође се могу користити за креирање лексички нејасног кода. Ова употреба је обесхрабрена.

Команде

Шкабле тумаче речи које читају према језику, чија је спецификација изван оквира ове манне странице (погледајте БНФ у документу ПОСИКС 1003.2). У суштини, ипак се чита линија и ако прва реч линије (или након оператора контроле) није резервирана реч, онда је схелл препознала једноставну команду. У супротном, можда је препозната комплексна команда или неки други посебан конструкт.

Једноставне команде

Ако је препозната једноставна команда, схелл извршава следеће акције:

  1. Водеће речи обрасца `` име = вриједност '' су уклоњене и додијељене окружењу једноставне наредбе. Оператори преусмеравања и њихови аргументи (као што је описано у наставку) се уклањају и чувају за обраду.
  2. Преостале речи проширене су како је описано у одељку под називом `` Проширења '', а прва преостала реч се сматра командом и команда се налази. Преостале речи се сматрају аргументима команде. Ако није произвело ниједну командну ознаку, тада одредбе варијабли `` наме = валуе '' препознате у ставку 1 утичу на тренутну љуску.
  3. Преусмеравање се врши како је описано у следећем одељку.

Преусмерења

Преусмеравања се користе за промену где команда чита свој унос или шаље свој излаз. Генерално, редирекције се отварају, затварају или дуплирају постојеће референце на датотеку. Укупан формат који се користи за преусмеравање је:

[н] редир-оп фајл

где је редир-оп један од оператера за преусмеравање поменутих раније. Следи листа могућих преусмеравања. Бк н је необавезан број, као у `3 '(не` Бк 3' који се односи на дескриптор датотеке.

[н]> датотеку

Преусмери стандардни излаз (или н) у датотеку.

[н]> | филе

Исто, али превазиђите опцију - Ц.

[н] >> фајл

Додајте стандардни излаз (или н) у датотеку.

[н] <датотека

Преусмери стандардни унос (или н) из датотеке.

[н1] <& н2

Дупликат стандардног уноса (или н1) из дескриптора датотеке н2.

[н] <&

Затвори стандардни унос (или н).

[н1]> & н2

Дупли стандардни излаз (или н1) из н2.

[н]> &

Затвори стандардни излаз (или н).

[н] <> фајл

Отворите датотеку за читање и писање на стандардном улазу (или н).

Следеће преусмеравање се често назива "овде-документ"

[н] << раздјелник

овде-доц-текст ...

раздјелник

Сва текстова на редоследу до раздјелника се чува и ставља на располагање команди на стандардном улазу, или дескриптор датотеке н ако је наведен. Ако се цитира раздјелник који је наведен на почетној линији, овдје-доц-текст се третира буквално, иначе је текст подвучен експанзији параметара, супституцији наредбе и аритметичком експанзији (као што је описано у одјељку "Проширења") 'Ако је оператер `` << -' 'уместо `` <<' ', онда се водећи табови у овде-доц-тексту уклањају.

Претраживање и извршење

Постоје три врсте команди: функције схелл-а, уграђене команде и нормални програми - и наредба се тражи (по имену) у том редоследу. Сваки од њих се извршава на други начин.

Када се изврши шоља функција, сви параметри позиционирања схелл-а (осим $ 0, који остаје непромењен) постављени су на аргументе функције схелл-а. Варијабле које се експлицитно стављају у окружење команде (постављањем задатака њима прије назива функције) постају локални за функцију и подешавају се на дате вриједности. Тада се извршава наредба дата у дефиницији функције. Позицијски параметри се враћају на њихове првобитне вриједности када команда заврши. Ово се све дешава унутар тренутне љуске.

Изградња Схелл-а се извршава интерно у школу, без пораста новог процеса.

У супротном, ако се командно име не поклапа са функцијом или је изграђено, команда се тражи као нормалан програм у датотечном систему (као што је описано у следећем одељку). Када се изврши нормалан програм, схелл покреће програм, преноси аргументе и окружење програму. Ако програм није нормална извршна датотека (тј. Ако не почиње са "чаробним бројем" чија је АСЦИИ репрезентација "#!", Тако екецве (2) враћа Ер ЕНОЕКСЕЦ тада) схелл ће тумачити програм у субхелл. Дјечија граната ће се поново иницијализирати у овом случају, тако да ће ефекат бити као да је нова љуска била позвана да се носи са ад-хоц скриптом, осим што ће локација хашних команди лоцираних у родитељској школи памтити од стране дете.

Имајте на уму да се претходне верзије овог документа и изворни код сасвим погрешно и спорадично односе на схелл скрипту без магичног броја као "поступак оквира".

Претраживање путева

Приликом лоцирања команде, схелл прво изгледа да види да ли има ту функцију схелл-а. Онда потражује изграђену команду под тим именом. Ако се не пронађе изграђена команда, дешава се једна од две ствари:

  1. Имена команди која садрже косу се једноставно извршавају без обављања било каквих претрага.
  2. Шкапља тражи сваку ставку у ПАТХ- у за наредбу. Вредност променљиве ПАТХ треба да буде серија уноса раздвојених колонама. Свака ставка се састоји од имена директоријума. Садашњи директоријум може бити имплицитно назначен називом празног директоријума, или експлицитно у једном периоду.

Цомманд Екит Статус

Свака команда има статус изласка који може утицати на понашање других команди схелл-а. Парадигма је да команда излази са нула за нормално или успјешно, а не нула за неуспјех, грешку или лажну индикацију. На страници човјека за сваку наредбу треба навести различите излазне шифре и оно што подразумијевају. Поред тога, уграђене команде враћају излазне кодове, као и извршену функцију схелл-а.

Комплексне команде

Комплексне команде су комбинације једноставних команди са управљачким оператерима или резервисаним речима, заједно стварајући већу сложену команду. Опћенито, команда је једна од следећих:

Осим ако није другачије назначено, статус излаза команде је задња једноставна команда коју извршава команда.

Цевоводи

Цевовод је низ једне или више команди одвојених од контролног оператера. Стандардни излаз свих изузев последње команде је повезан са стандардним улазом наредне наредбе. Стандардни излаз последње команде наслијеђен је из љуске, као и обично.

Формат за гасовод је:

[!] цомманд1 [| цомманд2 ...]

Стандардни излаз команде1 је повезан са стандардним улазом команде2. Стандардни улаз, стандардни излаз или обе команде се сматрају додељеним од стране цевовода пре него што се преусмеравање одреди оператерима за преусмеравање који су део команде.

Ако гасовод није у позадини (о чему се касније говори), схелл чека све команде да се заврше.

Ако резервисана реч! не претходе цевоводу, статус изласка је статус излаза последње команде која је наведена у плиноводу. У супротном, статус изласка је логична НОТ статуса изласка последње команде. То јест, ако последња команда врати нулу, статус излазног стања је 1; ако последња команда враћа више од нуле, статус излаза је нула.

С обзиром на то да је додељивање цевовода стандардним улазним или стандардним излазом или оба прије преусмеравања, може се промијенити преусмеравањем. На пример:

$ цомманд1 2> & 1 | цомманд2

шаље и стандардни излаз и стандардну грешку команде1 на стандардни унос команде2.

А; или <невлине> терминатор доводи до тога да се претходна АНД-ОР-листа (описана следећа) извршава секвенцијално; а & узрокује асинхроно извршавање претходне АНД-ОР-листе.

Имајте на уму да, за разлику од неких других граната, сваки процес у цјевоводу је дијете љуске која се позива (осим ако је она изграђена, у том случају она се извршава у тренутној школи - али сваки ефекат који он има на окружење је обрисан).

Команде позадине -

Ако команду прекине контролни оператор амперсанд (&), схелл извршава команду асинхроно - тј., Схелл не чека да команда заврши пре него што изврши следећу наредбу.

Формат за покретање наредбе у позадини је:

цомманд1 & [цомманд2 & ...]

Ако схелл није интерактиван, стандардни унос асинхроних команди је подешен на / дев / нулл

Листе - Генерално говорећи

Листа је низ нула или више команди одвојених новим линијама, тачкама зарезима или амперсандима, а опционо прекинута од стране једног од ова три знака. Команде на листи извршавају се по редоследу који су написани. Ако команду следи амперсанд, схелл започиње команду и одмах настави на следећу наредбу; у супротном чека да команда престане пре него што пређе на следећу.

Оператори листе кратког споја

`` && '' и `` || '' су АНД-ОР листе оператора. `` && '' извршава прву команду, а затим извршава другу команду ако је излазни статус прве команде нула. `` || '' је сличан, али извршава другу наредбу ако је статус излаза прве наредбе нула. `` && '' и `` || '' имају исти приоритет.

Контрола протока - ако, док, за случај

Синтакса команде иф је

ако је листа
затим попис
[елиф листа
онда попису] ...
[другу листу]
фи

Синтакса команде вхиле је

док лист
уради списак
Готово

Две листе се извршавају више пута док је статус излаза прве листе нула. Све док команда није слична, али има реч све док не дође време, што га понавља док статус излаза прве листе није нула.

Синтакса команде за

за променљиву ријеч ...
уради списак
Готово

Речи су проширене, а затим се листа извршава више пута са променљивом која је постављена на сваку реч. учинити и урадити може се заменити са `` {'' и ​​``} ''

Синтакса команде бреак и настави је

бреак [нум]
настави [број]

Пауза прекида бројну унутрашњу за или током петље. Наставите са следећом итерацијом унутрашње петље. Оне се имплементирају као уграђене команде.

Синтакса команде случаја је

случај реч у
образац) ;;
...
есац

Шаблон може заправо бити један или више шаблона (погледајте шаблоне Схелл описане касније), одвојене знаком `` '.

Заједнички команде

Команде се могу груписати писањем или

(листа)

или

{ листа;

Први од њих извршава команде у подсклопу. Команде уграђене у групу (листе) неће утицати на тренутну шкољку. Други образац не крије другу шкољку, тако да је мало ефикаснији. Груписање команди на овај начин омогућава вам да преусмерите свој излаз као да су један програм:

{принтф хелло; принтф ворлд \ н ";}> поздрав

Функције

Синтакса дефиниције функције је

име () команду

Дефиниција функције је изведбени израз; када се изврши, инсталира функцију под именом и враћа статус излаза нуле. Команда је обично листа смештена између `` {'' и ​​``} ''

Варијабле се могу прогласити локалним функцијама помоћу локалне команде. Ово би требало да се појави као први израз функције, а синтакса је

локална [променљива | -] ...

Локално се имплементира као изграђена команда.

Када је варијабла лоцирана, она наслијеђује почетну вриједност и извезује и реадонли заставице из варијабле са истим именом у околини, ако их има. У супротном, варијабла је у почетку неисправна. Шкорпија користи динамички опсег, тако да ако промените к локалну функцију ф, која затим назива функцију г, референце на варијаблу к направљену унутар г ће се односити на променљиву к декларисану унутар ф, а не на глобалну варијаблу названу к .

Једини посебан параметар који се може направити локално је ,, `` `` `` `` `` `` `` `` `` локално за сваку опцију схелл-а која се мења преко команде која се налази унутар функције која се враћа на првобитне вриједности када се функција враћа.

Синтакса команде за повратак је

ретурн [екитстатус

Он прекида функцију која се тренутно извршава. Повратак се имплементира као изграђена команда.

Варијабле и параметри

Шака држи скуп параметара. Параметар означен називом се назива променљива. Приликом покретања, љуска претвара све променљиве окружења у варијабле љуске. Нове варијабле се могу поставити користећи образац

име = вредност

Варијабле постављене од стране корисника морају имати име које се састоји искључиво од абецеда, бројева и подчртава - први не сме бити нумерички. Параметар се може означити и бројем или посебним карактером као што је објашњено у наставку.

Позицијски параметри

Позицијски параметар је параметар означен бројем (н> 0). Шурила их првобитно поставља на вриједности аргумената командне линије које слиједе име схелл скрипте. Сет (1) уграђен може се користити и за подешавање или ресетовање.

Посебни параметри

Посебан параметар је параметар означен једним од следећих специјалних знакова. Вредност параметра је наведена поред њеног карактера.

*

Проширује се на позицијске параметре, почевши од једног. Када се експанзија јавља у двоструком цитираном низу, она се шири на једно поље са вриједношћу сваког параметра одвојеног првим карактером ИФС варијабле или са простором ако је ИФС неискључен.

@

Проширује се на позицијске параметре, почевши од једног. Када се експанзија јавља у двоструким наводницима, сваки позицијски параметар се шири као посебан аргумент. Ако не постоје параметри позиције, експанзија @ генерира нулте аргументе, чак и када је @ двапут цитиран. Оно што у основи значи, на пример, ако је $ 1 "абц" и $ 2 је "деф гхи" онда Кк $ @ проширује два аргумента:

абц деф гхи

#

Проширује се на број позицијских параметара.

?

Проширује се у статус изласка најновијег гасовода.

- (Хипхен.)

Проширује се у тренутне заставе опција (називи опција са једним словом укрштени у низ) као што је наведено у инвокацији, постављена уграђена команда или имплицитно од стране љуске.

$

Проширује се у ИД процеса позиване љуске. Поддршка задржава исту вриједност $ као родитеља.

!

Проширује се у ИД процеса најновије команде позадине извршене из тренутне љуске. За гасовод, ИД процеса је онај задње команде у плиноводу.

0 (Зеро.)

Проширује се на име схелл или скрипти.

Проширење ријечи

Ова клаузула описује разне експанзије које се изводе на ријечима. Нису све експанзије обављене на свакој речи, како је објашњено касније.

Тилде експанзије, експанзије параметара, замене команди, аритметичке експанзије и уклањање цитата који се јављају унутар једне речи проширују се на једно поље. То је само раздвајање поља или проширење путање које може креирати више поља из једне ријечи. Једини изузетак од овог правила је проширење специјалног параметра @ унутар двоструких цитата, као што је горе описано.

Редослед проширења речи је:

  1. Проширење тилде, проширење параметара, замена команди, аритметичка експанзија (сви се истовремено појављују).
  2. Раздвајање поља врши се на пољима која се генеришу кораком (1) осим ако је променљива ИФС нула.
  3. Проширење путање (осим ако није подешено - ф је на снази).
  4. Куоте Ремовал.

Знак $ се користи да уведе проширење параметара, супституцију наредбе или аритметичку процену.

Тилде Екпансион (замена почетног директоријума корисника)

Ријеч која почиње са некитованим знаком тилде (~) подлеже ширењу тилде. Сви ликови до косине (/) или на крају речи третирају се као корисничко име и замењују се са кућним директоријумом корисника. Ако корисничко име недостаје (као у ~ / фообар), тилда се замењује вредностом променљиве ХОМЕ (тренутни директоријум тренутног корисника).

Ширење параметара

Формат за ширење параметара је следећи:

где се израз састоји од свих знакова све док се не уклапа са ``} '' било којим ``} '' есцапед са косом или са цитираним низом, а знакови у уграђеним аритметичким експанзијама, замјенама команди и променљивим проширењима се не испитују при одређивању упаривање ``} ''

Најједноставнији облик ширења параметара је:

Вредност, ако постоји, параметра је замењена.

Име параметра или симбол може бити затворено у грудима, које су опционалне, осим за параметре позиције са више од једне цифре или када параметар прати знак који се може тумачити као дио имена. Ако се експанзија параметра одвија унутар двоструких цитата:

  1. Ширење пута се не врши на резултатима експанзије.
  2. Раздвајање поља се не врши на резултатима експанзије, са изузетком @.

Поред тога, проширење параметара се може модифицирати помоћу једног од следећих формата.

Користите подразумеване вредности. Ако је параметар неискључен или нултан, ширење речи је замењено; у супротном, вредност параметра се замењује.

Додели подразумеване вредности. Ако је параметар нерешен или нултан, проширење речи додељује се параметру. У свим случајевима коначна вредност параметра је замењена. На овакав начин се могу доделити само варијабле, а не позицијски параметри или специјални параметри.

Навести грешку ако је Нулл или Унсет. Ако је параметар неискључен или нултан, проширење речи (или порука која је назначила да је неуспјела ако је ријеч испуштена) је уписана у стандардну грешку и схелл излази са нултим излазним статусом. У супротном, вредност параметра је замењена. Интерактивна шкољка не мора излазити.

Користите алтернативну вредност. Ако је параметар унсет или нулл, нулл је супституисан; у супротном, ширење речи је замењено.

У претходно приказаним параметрима, употреба дебелог црева у формату резултира тестом за параметар који је неисправан или нултан; изостављање дебелог црева резултира тестом за параметар који је искључен.

Стринг Ленгтх. Дужина у карактерима вредности параметра.

Следеће четири варијанте ширења параметара омогућавају обраду подстраница. У сваком случају, ознака која одговара образовању (видети Схелл Паттернс), а не као обичан израз, користи се за процену шаблона. Ако је параметар * или @, резултат експанзије није одређен. Укључујући пуну шифру ширине параметара у двоструким наводницима не узрокује следеће четири варијанте симбола узорака, док цитати знакове у грудима има овај ефекат.

Уклони најмањи Паттерн Суффик. Реч је проширен како би се направио образац. Ширење параметара затим резултира у параметру, при чему је најмањи дио суфикса усклађен са обрисаним образцем.

Уклоните највећи Паттерн Суффик. Реч је проширен како би се направио образац. Ширење параметара затим резултира у параметру, при чему највећи дио суфикса одговара обрисаном шаблону.

Уклони најмањи шаблон префикса. Реч је проширен како би се направио образац. Ширење параметара затим резултира у параметру, при чему је најмањи део префикса усклађен са обрисаним обрасцем.

Уклоните највећи шаблон префикса. Реч је проширен како би се направио образац. Ширење параметара затим резултира у параметру, при чему највећи дио префикса одговара обрисаном шаблону.

Командна замена

Замјена наредбе омогућава измену излаза команде уместо самог командног имена. Замјена наредбе се јавља када је команда затворена на сљедећи начин:

$ (команда)

или По `` бацккуотед '' верзију Пц:

`цомманд`

Шкабле проширује замену наредбе извршавајући команду у окружењу подгрупе и замењујући супституцију наредбе с стандардним излазом команде, уклањајући секвенце једног или више <невлине> с на крају замене. (Ембеддед <невлине> с пре краја излаза се не уклањају, међутим, током раздвајања поља, они се могу преведити у <простор> с, у зависности од вредности ИФС- а и цитирања који је на снази.)

Аритметичка експанзија

Аритметичка експанзија обезбеђује механизам за процену аритметичке експресије и замењујући његову вриједност. Формат аритметичке експанзије је следећи:

$ ((израз))

Израз се третира као да је у двоструким цитатима, осим што се двоструки цитат унутар израза не третира посебно. Шкафа проширује све токене у изразу за ширење параметара, замену наредбе и уклањање цитата.

Затим, схелл ово третира као аритметички израз и замењује вредност израза.

Раздвајање бијелог простора (раздвајање поља)

Након експанзије параметара, замене команди и аритметичке експанзије, схелл скенира резултате експанзија и замена које се нису појавиле у двоструким наводницима за поделу поља и могу резултирати више поља.

Шарка третира сваки карактер ИФС-а као раздјелника и користи раздјелнике да подели резултате експанзије параметара и замјене команди у поља.

Проширење путање (генерисање имена датотеке)

Осим ако није постављена заставица - ф , генерисање имена датотеке се врши након завршетка ријечи ријечи. Свака реч се посматра као низ образаца, раздвојених косинама. Процес експанзије замењује реч са именима свих постојећих датотека чија се имена могу формирати заменом сваког образца низом који одговара наведеном образцу. Постоје два ограничења: прво, образац не може да се подудара с низом који садржи косу црту, и друго, образац не може да се подудара са низом који почиње са одређеним периодом, осим ако први карактер узорка није период. Следећи одељак описује обрасце који се користе за опцију Патхнаме Екпансион и за случај (1).

Схелл Паттернс

Узорак састоји се од нормалних знакова, који се подударају и мета-карактера. Метаподаци су ``! '' `` * ''```?' 'И `` [' 'Ови ликови губе своје посебно значење ако се цитирају. Када се изврши команда или варијабилна супституција, а знакови за долар или задње цитате нису двоструки цитирани, вредност варијабле или излаз команде се скенира за ове знакове и они се претварају у мета-карактере.

Звездица (`` * '') одговара низу знакова. Знак питања одговара сваком појединачном карактеру. Лева конзола (`` ['') уводи карактерну класу. Крај класе карактера означава (``] '') ако недостаје ``] '' онда тада `` ['' одговара на `` ['' умјесто увођење класе знакова. Класа знакова се подудара са било којим од знакова између квадратних заграда. Низ карактера се може одредити помоћу знак минус. Класа карактера може бити употпуњена стварањем узвичног тачке првог карактера класе знакова.

Да укључите ``] '' у групу знакова, учините да је први знак наведен (након "`! "Ако постоји). Да бисте укључили знак минус, учините га првим или последњим знаком

Уграђени

Овај одељак наводи уграђене команде које су уграђене зато што им је потребно извршити неку операцију која се не може извршити посебним процесом. Поред ових, постоји и неколико других команди који могу бити уграђени за ефикасност (нпр. Ецхо 1).

:

Нула команда која враћа 0 (истиниту) излазну вредност.

. филе

Команде у наведеној датотеки чита и извршава схелл.

алиас [ име [ = стринг ... ]]

Ако је назначено име = стринг , схелл дефинише име алијанса с низом вриједности. Ако је само назначено, вриједност имена алијаске се одштампа. Без аргумената, уграђени алијас одштампава имена и вредности свих дефинисаних псеудонима (погледајте уналиас)

бг [ посао] ...

Наставите са наведеним пословима (или тренутним послом ако ниједан посао не буде дат) у позадини.

наредба командне речи ...

Извршите специфицирану уграђену наредбу. (Ово је корисно када имате функцију схелла са истим именом као и команда буилтин.)

цд [ директоријум ]

Пребаците се на наведени директоријум (подразумевани $ ХОМЕ) Ако се унесе унос ЦДПАТХ-а у окружење команде цд или је постављена варијабла схелл-а ЦДПАТХ и име именика не почиње са косом, тада ће се претраживати у ЦДПАТХ- у за одређени директоријум. Формат ЦДПАТХ је исти као и ПАТХ. У интерактивној школи , цд наредба ће одштампати име директорија у којем је заправо прешао ако се то разликује од имена које је корисник дао. Ово може бити различито јер је коришћен ЦДПАТХ механизам или је прешла симболичка веза.

евал стринг ...

Приближите све аргументе са размацима. Затим ре-парсе и изврши наредбу.

екец [ команда арг ... ]

Осим ако команда није изостављена, процес шкољке се замењује наведеним програмом (који мора бити прави програм, а не уграђен или функционалан). Свака преусмјеравања на команду екец су означена као трајна, тако да се не поништавају када се извршава наредба екец.

излаз [ екитстатус ]

Прекините процес шкољке. Ако је дат екитстатус , користи се као статус излаза љуске; у супротном се користи статус излаза претходне команде.

извозно име ...

извоз -п

Наведена имена се извозе тако да ће се појавити у окружењу наредних команди. Једини начин да се не извози варијабла је да га унесете. Шоку дозвољава да се вредност променљиве поставља у исто вријеме када се извози писањем

извоз име = вредност

Без аргумената, команда за извоз наводи имена свих извезених варијабли. Са наведеном опцијом - п , излаз ће бити правилно форматиран за неинтерактивну употребу.

фц [- е едитор ] [ први [ посљедњи ]]

фц -л [- нр ] [ прва [ последња ]]

фц -с [ старо = ново ] [ прво ]

Фц уграђене листе, или измене и поновно извршавају, команде претходно унете у интерактивни схелл.

- уредник

Користите уредника којег именује уредник да бисте уредили команде. Низ уредника је командно име, подложно претрази преко променљиве ПАТХ . Вредност у варијанти ФЦЕДИТ се користи као подразумевано када - е није специфицирано. Ако је ФЦЕДИТ нула или није постављена, користи се варијабла ЕДИТОР . Ако је ЕДИТОР нула или није постављена, ед (1) се користи као уредник.

-л (елл)

Наведите команде уместо да позивате уредника на њима. Команде се пишу у секвенци коју указују први и посљедњи операнди, као што је погођено - р са сваку команду којој претходи командни број.

Склоните командне бројеве приликом листинга са -л.

Обрнути редослед наредјених команди (са - л или уређеним (без иконе - л нити - с)

Поново извршите наредбу без позивања уредника.

први

последњи

Изаберите команде за листање или уређивање. Број претходних команди којима се може приступити одређује се вриједношћу променљиве ХИСТСИЗЕ . Вредност првог или последњег или оба је једна од следећих:

[+] број

Позитивни број који представља командни број; командни бројеви се могу приказати са опцијом - л .

-број

Негативни децимални број који представља команду која је извршила број команди раније. На примјер, -1 је одмах претходна наредба.

низ

Низ који указује на последњу унету наредбу која почиње са том низом. Ако стари = нови операнд није наведен са - с стринг облик првог операнда не може садржати уграђени знак једнакости.

Следеће варијабле окружења утичу на извршење фц:

ФЦЕДИТ

Име уредника који ће се користити.

ХИСТСИЗЕ

Број претходних команди који су доступни.

фг [ посао ]

Померите наведени задатак или тренутни задатак у први план.

гетоптс оптстринг вар

ПОСИКС гетоптс команда, а не да се збуни са Белл Лабс -оперираним гетопт (1).

Први аргумент треба да буде серија слова, од којих свака може опционо пратити дебело црево које указује на то да опција захтева аргумент. Наведена варијабла је подешена на опцију.

Команда гетоптс заступа старији програм гетопт (1) због свог поступања са аргументима који садрже празне просторе.

Уграђени гетопти се могу користити за добијање опција и њихових аргумената са листе параметара. Када се позову, гетоптс ставља вредност следеће опције из стринг стринга у листи у варијабли схелла коју је одредио вар и индекс је у варијабли љуске ОПТИНД Када се схелл користи, ОПТИНД се иницијализује на 1. За сваку опцију која захтијева аргумент, гетоптс буилтин ће га ставити у варијаблу љуске ОПТАРГ Ако опција није дозвољена у опстрингу, онда ће ОПТАРГ бити неискључен .

оптстринг је низ признатих опција слова. Ако у писмо следи двотачка, опција се очекује да има аргумент који се може или не мора одвојити од њега у бијелом простору. Ако се не очекује знак опције гдје се очекује, гетоптс ће поставити варијаблу вар на ``? '' Гетоптс ће онда унсетовати ОПТАРГ и написати излаз у стандардну грешку. Прецизирањем дебљине као првог карактера опстринга све грешке ће бити игнорисане.

Нула вредност се враћа када се достигне задња опција. Ако нема преосталих аргумената, гетоптс ће поставити вар на посебну опцију, `` - '' иначе ће поставити вар на ``? ''

Следећи фрагмент кода показује како се могу процесирати аргументи за наредбу која може узети опције [а] и [б] и опцију [ц] која захтијева аргумент.

док се гетоптс абц: ф
урадите
случај $ ф ин
а | б) флаг = $ ф ;;
ц) царг = $ ОПТАРГ ;;
\?) ецхо $ УСАГЕ; излаз 1 ;;
есац
Готово
схифт `екпр $ ОПТИНД - 1`

Овај код ће прихватити било који од сљедећих:

цмд -ацарг датотеку датотеке
цмд -а -ц арг датотека датотека
цмд -царг -а фајл фајла
цмд -а -царг - датотека датотека

хасх -рв команда ...

Шака држи таблу хаша која памти локације команди. Без икаквих аргумената, команда хасх исписује садржај ове табеле. Уноси који нису прегледани од задње наредбе цд- а означени су звјездицом; могуће је да ови уноси буду неважећи.

Са аргументима, команда хасх уклања одређене команде из хасх табле (осим ако нису функције), а затим их лоцира. Са опцијом - в , хеш штампа локације команди док их пронађе. Опција доводи команду хасх да обрише све уносе у табели хашиша, осим функција.

јобид [ посао ]

Штампајте процесне процесе процеса у послу. Ако је аргумент за посао изостављен, тренутни задатак се користи.

посао

Ова команда приказује све позадинске процесе који су деца тренутног процеса рада.

пвд

Штампајте тренутни директоријум. Изграђена команда се може разликовати од програма са истим именом јер уграђена команда памти шта је тренутни директориј, а не сваки пут. То чини брже. Међутим, ако је тренутни директоријум преименован, уграђена верзија пвд ће наставити да штампа старо име за директориј.

прочитајте [- п промпт ] [- р ] варијаблу ...

Позив се штампа ако је наведена опција -п, а стандардни улаз је терминал. Затим се линија чита са стандардног уноса. Задња линија је обрисана из линије и линија је подељена, како је описано у одељку за поделу ријечи изнад, а дијелови се додјељују променљивим редоследом. Треба навести најмање једну варијаблу. Ако има више комада од варијабли, остали дијелови (заједно са знаковима у ИФС-у који су их раздвојили) додељују се последњој варијабли. Ако има више варијабли од комада, преосталим варијаблама се додјељује нулл низ. Читав уграђени ће указати на успех осим ако се ЕОФ не нађе на улазу, у ком случају се грешка враћа.

Подразумевано, уколико није наведена опција - р , бацксласх `` \ '' делује као знак за избјегавање, чиме се буквално третира сљедећи знак. Ако је прислонском траком следи нова линија, бацксласх и нова линија ће бити избрисана.

читљиво име ...

реадонли -п

Наведена имена су означена као само за читање, тако да се не могу касније модификовати или уклонити. Шоку дозвољава да се вредност променљиве поставља истовремено када је означена само за читање писањем

реадонли наме = вредност

Без аргумената, команда реадонли наводи имена свих варијабли само за читање. Са наведеном опцијом - п , излаз ће бити правилно форматиран за неинтерактивну употребу.

подесите [{- оптионс | + опције | - арг ... ]

Команда за подешавање врши три различите функције.

Без аргумената, наводи се вриједности свих варијабли љуске.

Ако су дате опције, поставља специфициране опције за заставе или их брише како је описано у одељку под називом Ск Аргумент Лист Процессинг.

Трећа употреба задате наредбе је да поставите вредности параметара позиционирања схелл-а на специфициране аргументе. Да промените позицијске параметре без мењања било каквих опција, користите `` - '' као први аргумент који сте поставили. Уколико ниједан аргумент није присутан, задата команда ће избрисати све параметре за позицију (еквивалентно извршавању `` схифт $ #. ''

променљива вредност

Додјељује вриједност променљивој. (Уопштено, боље је писати варијаблу = вриједност умјесто кориштења сетвар сетвар намијењена је за кориштење у функцијама које додјељују вриједности варијаблама чије су имена пренијете као параметри.)

схифт [ н ]

Промените позицијске параметре н пута. Померање поставља вриједност од $ 1 вриједности од $ 2 вриједности од $ 2 до вриједности од $ 3 и тако даље, смањивање вриједности $ # за једно. Ако је н већи од броја позицијских параметара, померање ће издати поруку о грешци и изаћи са статусом поврата 2.

пута

Штампајте акумулирану корисничко и системско вријеме за љуску и за процесе који се покрећу из љуске. Повратни статус је 0.

трап акцијски сигнал ...

Узрок љуска да разблажи и изврши акцију када се прими неки од наведених сигнала. Сигнали су специфицирани бројевима сигнала. Ако је сигнал 0 , акција се извршава када лупа излази. акција може бити нула или `` - '' што први узрокује да се наведени сигнал игнорише, а други изазива подразумевану акцију. Када се грана одбије подсхелл , она ресетује заробљене (али не занемарене) сигнале на подразумевану акцију. Команда трап- а нема утицаја на сигнале који су игнорисани приликом уноса у љуску.

тип [ име ... ]

Интерпретирајте свако име као команду и одштампајте резолуцију претраживања наредбе. Могуће резолуције су: кључна реч схелл, алиас, схелл буилтин , цомманд, трацкед алиас и нису пронађени. За надимке је исписано ширење алиас-а; за команде и надгледане надимке се штампа потпуна путања команде.

улимит [- Х -С ] [- а-тфдсцмлпн [ вредност ]]

Упитајте се или поставите тврду или меку границу у процесима или поставите нове границе. Избор између тврдог ограничења (који не може да се наруши ни један процес и који се не може подићи када се спусти) и меки лимит (који узрокује да се процеси сигнализирају али не морају нужно убити и који се могу подићи) врши се са ове заставе:

поставити или распитати се о тврдим границама

поставити или распитати се о меким границама. Ако није наведен ни - Х нити - С , приказује се гранична граница или су постављене обе границе. Ако су оба наведена, задња победа.

Лимит који ће се испитивати или поставити, онда је изабран одређивањем било које од ових ознака:

Покажите све тренутне границе

покажите или подесите ограничење на време ЦПУ-а (у секундама)

покажите или поставите ограничење на највећу датотеку која се може креирати (у 512-бајтним блоковима)

покажите или поставите ограничење величине процеса процеса (у килобајтовима)

покажите или поставите ограничење величине стуба процеса (у килобајтовима)

покажите или поставите ограничење на највећу величину великог думпа која се може произвести (у 512-бајтном блоковима)

покажите или поставите ограничење укупне физичке меморије која може да користи процес (у килобајтовима)

покажите или поставите границу колико меморије процес може да закључава са млоцк (2) (у килобајтима )

-п

покажите или поставите ограничење броја процеса који овај корисник може имати истовремено

покажите или поставите ограничење на датотеке са бројевима који процес може одмах да се отвори

Ако ниједно од њих није специфицирано, то је ограничење величине датотеке која је приказана или постављена. Ако је вредност одређена, ограничење је подешено на тај број; у супротном се приказује тренутна граница.

Границе произвољног процеса могу се приказати или подесити користећи сисцтл (8) услужни програм.

умаск [ маск ]

Подесите вредност умаск (погледајте умаск (2)) на одређену окталну вредност. Ако је аргумент изостављен, вриједност умаск се штампа.

уналиас [- а ] [ име ]

Ако је име назначено, схелл отклања тај алијас. Ако је - а специфицирано, сви алијаси су уклоњени.

унсет наме ...

Наведене варијабле и функције су искључене и неекспортиране. Ако одређено име одговара и варијабли и функцији, и варијабла и функција су неискључени.

чекати [ посао ]

Сачекајте да наведен посао заврши и вратите статус излазног задњег процеса у послу. Ако је аргумент изостављен, сачекајте да се сви задаци заврше и вратите статус излазне вредности нули.

Уређивање командне линије

Када се интерактивно користи с терминала, тренутна команда и историја наредби (погледајте фц у Ск Уградјеним) могу се уређивати помоћу едитовања на командној линији ви-моде. Овај режим користи наредбе, описане испод, сличне подскупу оних описаних на страници ви ман. Команда `сет '-о ви омогућава ви-моде едитовање и поставља сх у режим ви инсертирања. Са омогућеним ви-режимом, сх се може пребацити између режима убацивања и командног режима. Уредник овде није описан у потпуности, већ ће бити у каснијом документу. Слично је ви: куцање АК ЕСЦ ће вас бацити у командни мод команде ВИ. Хиттинг Ак повратак док је у командном режиму прође линију до љуске.

Важно: Користите команду човјека ( % човјек ) да бисте видели како се на вашем рачунару користи команда.