АнглийскийФранцузскийИспанский

Ad


Значок OnWorks

mksh-static - Онлайн в облаке

Запустите mksh-static в бесплатном хостинг-провайдере OnWorks через Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS

Это команда mksh-static, которую можно запустить в бесплатном хостинг-провайдере OnWorks, используя одну из наших многочисленных бесплатных онлайн-рабочих станций, таких как Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.

ПРОГРАММА:

ИМЯ


МКШ, sh - Оболочка MirBSD Korn

СИНТАКСИС


МКШ [- + abCefhiklmnprUuvXx] [-T [!]терминал | -] [- + о вариант] [-c string | -s | файл
[аргумент ...]]
встроенное имя [аргумент ...]

ОПИСАНИЕ


МКШ - интерпретатор команд, предназначенный как для интерактивного использования, так и для использования в сценариях оболочки. Его
командный язык является надмножеством языка оболочки sh (C) и в значительной степени совместим с
оригинальная оболочка Korn. Иногда на этой странице руководства могут содержаться советы по написанию сценариев; пока это
иногда принимает во внимание переносимые сценарии оболочки или различные стандарты,
информация в первую очередь представлена МКШ в виду и должны восприниматься как таковые.

я an Android пользователь, so то, что мкш?
МКШ интерпретатор оболочки / команд UNIX, похожий на COMMAND.COM or CMD.EXE, который имеет
уже некоторое время включен в Android Open Source Project. По сути, это программа
который запускается в терминале (окне консоли), принимает пользовательский ввод и запускает команды или сценарии,
что его также могут попросить сделать другие программы, даже в фоновом режиме. Любая привилегия
всплывающие окна, с которыми вы можете столкнуться, не МКШ проблемы, но вопросы других
программа, использующая это.

Вызов
Большинство встроенных функций можно вызывать напрямую, например, если ссылка указывает от своего имени на
оболочка; не все имеют смысл, хотя были протестированы или вообще работают.

Возможны следующие варианты:

-c string МКШ выполнит команды, содержащиеся в string.

-i Интерактивная оболочка. Оболочка, считывающая команды со стандартного ввода, - это
«Интерактивный», если используется этот параметр или если используется как стандартный ввод, так и стандартная ошибка
прикреплены к терминал(4). В интерактивной оболочке включено управление заданиями, но игнорируется
сигналы SIGINT, SIGQUIT и SIGTERM и выводит подсказки перед чтением ввода
(см. параметры PS1 и PS2). Он также обрабатывает параметр ENV или
мкшрк файл (см. ниже). Для неинтерактивных оболочек треколл опция включена
по умолчанию (см. набор команду ниже).

-l Оболочка входа. Если базовое имя, с которым вызывается оболочка (например, argv [0]), начинается с
'-' или, если используется эта опция, предполагается, что оболочка является оболочкой входа в систему; видеть
Стартап файлов внизу.

-p Привилегированная оболочка. Оболочка является «привилегированной», если реальный идентификатор пользователя или идентификатор группы
не соответствует эффективному идентификатору пользователя или идентификатору группы (см. Getuid(2) и Getgid(2 г.)).
Очистка привилегированной опции заставляет оболочку установить свой эффективный идентификатор пользователя.
(идентификатор группы) на его реальный идентификатор пользователя (идентификатор группы). Для получения дополнительных сведений см. Стартап
файлов. Если оболочка является привилегированной и этот флаг явно не установлен,
Параметр «привилегированный» автоматически сбрасывается после обработки файлов запуска.

-r Ограниченная оболочка. Если используется эта опция, оболочка «ограничена». Следующий
ограничения вступают в силу после того, как оболочка обработает любой профиль и ENV
файлов:

· Ассоциация cdChDir) команда отключена.
· Параметры SHELL, ENV и PATH изменить нельзя.
· Имена команд не могут быть указаны с абсолютными или относительными путями.
· Ассоциация -p опция встроенной команды команду нельзя использовать.
· Нельзя использовать перенаправления, которые создают файлы (например, '>', '> |', '>>', '<>').

-s Оболочка считывает команды со стандартного ввода; все неопциональные аргументы
позиционные параметры.

-T имя Порождать МКШ на терминал(4) данное устройство. Пути имя, / dev / ttyCname и
/ dev / ttyname предпринимаются по порядку. Пока не имя начинается с восклицательного знака
('!'), это делается в подоболочке и немедленно возвращается. Если имя это тире
('-'), вместо этого отсоединитесь от управляющего терминала (демонизируйте).

В дополнение к вышесказанному, параметры, описанные в набор также можно использовать встроенную команду
в командной строке: оба [- + abCefhkmnuvXx] И [- + о вариант] можно использовать для одной буквы
или длинные варианты соответственно.

Если ни -c ни -s указан параметр, первый аргумент, не являющийся параметром, указывает
имя файла, из которого оболочка считывает команды. Если нет аргументов, не являющихся опциями,
оболочка читает команды со стандартного ввода. Имя оболочки (т.е. содержимое
$ 0) определяется следующим образом: если -c опция используется и есть аргумент, не являющийся опцией,
используется как имя; если команды читаются из файла, файл используется как
имя; в противном случае используется базовое имя, с которым была вызвана оболочка (например, argv [0]).

Статус выхода оболочки - 127, если командный файл, указанный в командной строке, может
не открываться или отличное от нуля, если фатальная синтаксическая ошибка произошла во время выполнения
сценарий. При отсутствии фатальных ошибок статус выхода - это статус последней команды.
выполняется или ноль, если команда не выполняется.

Стартап файлов
Фактическое местонахождение этих файлов см. FILES. Оболочка входа в систему обрабатывает систему
профиль в первую очередь. Затем привилегированная оболочка обрабатывает профиль suid. Непривилегированный вход
Затем оболочка обрабатывает профиль пользователя. Непривилегированная интерактивная оболочка проверяет значение
параметра ENV после применения к нему параметра, команды, арифметики и тильды ('~')
подмена; если не задано или пусто, обрабатывается профиль пользователя mkshrc; в противном случае, если файл
чьё имя есть результат подстановки, он обрабатывается; небытие тихо
игнорируется. Привилегированная оболочка затем отбрасывает привилегии, если ни то, ни другое не было -p вариант, указанный на
в командной строке и не устанавливается во время выполнения файлов запуска.

Command синтаксис
Оболочка начинает синтаксический анализ своего ввода, удаляя любые комбинации обратной косой черты и новой строки, затем
разбивая это на слова. Слова (которые представляют собой последовательности символов) разделяются некотируемыми
символы пробела (пробел, табуляция и новая строка) или метасимволы ('<', '>', '|', ';', '(',
')', а также '&'). Помимо разделителей слов, пробелы и табуляции игнорируются, а символы новой строки
обычно разделяют команды. Мета-символы используются при построении следующих лексемы:
'<', '<&', '<<', '<<<', '>', '> &', '>>', '&>' и т. д. используются для указания перенаправления (см.
Вход / выход перенаправление ниже); '|' используется для создания конвейеров; '| &' используется для создания совместных
процессы (см. Совместные процессы ниже); ';' используется для разделения команд; '&' используется для создания
асинхронные конвейеры; '&&' и '||' используются для указания условного исполнения; ';;', '; &'
и '; |' используются в случаев заявления; '((..))' используется в арифметических выражениях; а также
наконец, '(..)' используется для создания подоболочек.

Пробелы и метасимволы можно цитировать по отдельности с помощью обратной косой черты ('\') или в
группы, используя двойные ('"') или одинарные (" '") кавычки. Обратите внимание, что следующие символы
также обрабатываются оболочкой специально и должны быть указаны в кавычках, если они должны представлять себя:
'\', '"', '' ',' # ',' $ ',' '', '~', '{', '}', '*', '?' и '['. первые три из них
вышеупомянутые символы цитирования (см. квотирование ниже); '#', если используется в
начало слова, вводит комментарий - все после символа "#" до ближайшего
новая строка игнорируется; '$' используется для обозначения параметра, команды и арифметики.
замены (см. подмена ниже); '' 'представляет собой подстановку команд в старом стиле
(См. подмена ниже); '~' начинает расширение каталога (см. Тильда расширение ниже); '{'
и '}' разделитель CSH(1) -стилевые чередования (см. распорка расширение ниже); и наконец, '*',
'?' и '[' используются при генерации имени файла (см. Файл имя паттеранами ниже).

По мере анализа слов и токенов оболочка создает команды, из которых есть два основных
типы: простые команды, как правило, программы, которые выполняются, и составные команды, такой
as для и if операторы, группирующие конструкции и определения функций.

Простая команда состоит из некоторой комбинации назначений параметров (см. параметры
ниже), перенаправления ввода / вывода (см. Вход / выход переадресовывает ниже) и командные слова;
единственное ограничение состоит в том, что параметры присваиваются перед какими-либо командными словами. В
командные слова, если таковые имеются, определяют команду, которая должна быть выполнена, и ее аргументы. В
команда может быть встроенной командой оболочки, функцией или внешней командой (т. е. отдельной
исполняемый файл, расположенный с помощью параметра PATH; видеть Command выполнение ниже).
Обратите внимание, что все командные конструкции имеют статус выхода: для внешних команд это связано
к статусу, возвращенному ждать(2) (если команда не может быть найдена, статус выхода
127; если он не может быть выполнен, статус выхода - 126); статус выхода другой команды
конструкции (встроенные команды, функции, составные команды, конвейеры, списки и т. д.) - все
четко определены и описаны там, где описывается конструкция. Статус выхода
команда, состоящая только из назначений параметров, является командой последней подстановки
выполняется во время присвоения параметров или 0, если не было подстановок команд.

Команды можно объединить в цепочку с помощью символа '|' токен для формирования конвейеров, в которых
стандартный вывод каждой команды, кроме последней, передается по конвейеру (см. труба(2)) на стандартный ввод
следующую команду. Статус выхода конвейера - это статус его последней команды, если только
домен трубка опция установлена ​​(см. там). Все команды конвейера выполняются отдельно.
подоболочки; это разрешено POSIX, но отличается от обоих вариантов AT&T UNIX КШ, Где
все команды, кроме последней, выполнялись в подоболочках; увидеть читать встроенное описание для
последствия и обходные пути. Конвейер может иметь префикс '!' зарезервированное слово, которое
приводит к логическому дополнению статуса выхода конвейера: если исходный статус
был 0, дополненный статус будет 1; если исходный статус не был 0, добавленный
статус будет 0.

Списки команд можно создать, разделив конвейеры с помощью любого из следующих токенов:
'&&', '||', '&', '| &' и ';'. Первые два предназначены для условного исполнения: «cmd1 && cmd2
исполняет cmd2 только если статус выхода cmd1 равно нулю; '||' наоборот - cmd2 is
выполняется, только если статус выхода cmd1 не равно нулю. '&&' и '||' иметь равный приоритет
который выше, чем у '&', '| &' и ';', которые также имеют равный приоритет. Примечание
что "&&" и "||" операторы «левоассоциативны». Например, оба эти
команды будут печатать только «полосу»:

$ false && echo foo || эхо-бар
$ true || эхо фу && эхо бар

Токен '&' вызывает асинхронное выполнение предыдущей команды; то есть оболочка
запускает команду, но не ждет ее завершения (оболочка отслеживает
статус асинхронных команд; видеть работа контроль ниже). Когда асинхронная команда
запускается, когда управление заданиями отключено (т.е. в большинстве сценариев), команда запускается с
сигналы SIGINT и SIGQUIT игнорируются, а вход перенаправляется из / DEV / нуль (тем не мение,
перенаправления, указанные в асинхронной команде, имеют приоритет). Оператор '| &'
запускает сопроцесс, который представляет собой особый вид асинхронного процесса (см. Совместные процессы
ниже). Обратите внимание, что команда должна следовать за '&&' и '||' операторы, в то время как это не нужно
следуйте за '&', '| &' или ';'. Статус выхода списка - это статус последней выполненной команды,
за исключением асинхронных списков, для которых статус выхода равен 0.

Составные команды создаются с использованием следующих зарезервированных слов. Эти слова только
распознается, если они не заключены в кавычки и используются в качестве первого слова команды (т. е.
им не может предшествовать назначение параметров или перенаправление):

case else функция тогда! (
сделать esac, если время [[((
готово до {
elif для выбора пока}

В следующих описаниях составных команд списки команд (обозначенные как список) которые
за которыми следуют зарезервированные слова, должны заканчиваться точкой с запятой, новой строкой или (синтаксически
правильное) зарезервированное слово. Например, все следующие действительны:

$ {echo foo; эхо-бар; }
$ {echo foo; эхо-бар }
$ {{echo foo; эхо-бар; }}

Это неверно:

$ {echo foo; эхо-бар}

(список)
Выполнить список в подоболочке. Не существует неявного способа передать изменения среды из
подоболочка обратно к своему родителю.

{ список; }
Составная конструкция; список выполняется, но не в подоболочке. Обратите внимание, что '{' и '}'
являются зарезервированными словами, а не метасимволами.

случаев слово в [[(] описания [| описания] ...) список терминатор] ... эсак
Ассоциация случаев заявление пытается сопоставить слово против указанного описания; список
ассоциированный с первым успешно подобранным шаблоном, выполняется. Шаблоны, используемые в
случаев операторы такие же, как и те, которые используются для шаблонов имен файлов, за исключением того, что
ограничения относительно "." и '/' опускаются. Обратите внимание, что любой пробел без кавычек перед
и после того, как выкройка снята; любое пространство в шаблоне должно быть заключено в кавычки. Оба
слово и шаблоны могут быть заменены параметрами, командами и арифметиками,
а также замена тильды.

По историческим причинам вместо фигурных скобок могут использоваться открывающие и закрывающие фигурные скобки. in и ESAC например
случаев $ Foo { *) эхо бар ;; }.

Список терминаторs:

';;' Завершить после списка.

'; &' Перейти в следующий список.

'; |' Оцените оставшиеся кортежи списка шаблонов.

Статус выхода случаев заявление - это то из выполненного список; если нет список is
выполнено, статус выхода равен нулю.

для имяслово ...]; делать список; сделано
Для каждого слово в указанном списке слов параметр имя установлен на слово и
список выполняется. Если in не используется для указания списка слов, позиционные параметры
(1 доллар, 2 доллара и т. Д.). По историческим причинам открывающая и закрывающая фигурные скобки могут быть
используется вместо do и сделанный например для i; { эхо $ i; }. Статус выхода для
оператор - это последний статус выхода список; если список никогда не выполняется, статус выхода
это ноль.

if списока метаболическая активность список; [Элиф списока метаболическая активность список;] ... [еще список;] фи
Если статус выхода первого список равен нулю, второй список выполняется; иначе,
домен список после Элиф, если таковые имеются, оформляется с аналогичными последствиями. Я упал
списки, следующие за if и Элифсбой (т.е. выход с ненулевым статусом), список
после еще выполняется. Статус выхода if заявление - это то, что не-
условный список что выполняется; если нет безусловного список выполняется, выход
статус равен нулю.

выберите имяслово ...]; делать список; сделано
Ассоциация выберите оператор обеспечивает автоматический метод представления пользователю меню
и выбирая из него. Нумерованный список указанных слово(s) напечатано на
стандартная ошибка, после которой следует запрос (PS3: обычно '#?'). Число, соответствующее
одно из перечисленных слов затем считывается со стандартного ввода, имя устанавливается в
выбранное слово (или не установлено, если выбор недействителен), REPLY устанавливается на то, что было прочитано
(начальный / конечный пробел удаляется) и список выполняется. Если пустая строка (т.е.
ноль или более октетов IFS) меню печатается повторно без выполнения список.

После появления список завершается, перечисляемый список печатается, если REPLY равен NULL, приглашение
напечатаны и так далее. Этот процесс продолжается до тех пор, пока не будет прочитан конец файла, прерывание
получен, или перерыв оператор выполняется внутри цикла. Если «словом ...»
опущено, используются позиционные параметры (например, $ 1, $ 2 и т. д.). Для исторического
причины, открывающие и закрывающие фигурные скобки могут использоваться вместо do и сделанный например выберите i; {
эхо $ i; }. Статус выхода выберите оператор равен нулю, если перерыв заявление
используется для выхода из цикла, в противном случае - ненулевое значение.

до список; делать список; сделано
Это работает как в то время как, за исключением того, что тело выполняется только тогда, когда статус выхода
первый список ненулевой

в то время как список; делать список; сделано
A в то время как это предварительно проверенный цикл. Его тело выполняется так же часто, как и статус выхода
первый список равно нулю. Статус выхода в то время как инструкция - это последний статус выхода
список в теле петли; если тело не выполнено, статус выхода
нулю.

функция имя { список; }
Определяет функцию имя (См. функции ниже). Обратите внимание, что указанные перенаправления
после определения функции выполняются всякий раз, когда функция выполняется, а не когда
определение функции выполняется.

имя() команду
В основном то же, что и функция (См. функции ниже). Пробел (пробел или табуляция) после
имя будет игнорироваться большую часть времени.

функция имя() { список; }
Такой же как имя() (колотитьизм). В функция ключевое слово игнорируется.

время [-p] [трубопровод]
Ассоциация Command выполнение раздел описывает время зарезервированное слово.

(( выражение ))
Арифметическое выражение выражение оценивается; эквивалентно «let выражение» (см.
Арифметический выражения и позволять ниже) в составной конструкции.

[[ выражение ]]
Как и в случае тестXNUMX и [ ... ] команды (описанные позже), со следующими
исключения:

· Разделение полей и создание имени файла для аргументов не выполняется.

· Ассоциация -a (И и -o Операторы (ИЛИ) заменяются на '&&' и '||' соответственно.

· Операторы (например, '-f',' = ','! ') не должны заключаться в кавычки.

· Параметры, команды и арифметические замены выполняются как выражения.
вычисленное и отложенное вычисление выражений используется для '&&' и '||' операторы.
Это означает, что в следующем утверждении $ ( оценивается тогда и только тогда, когда
файла Foo существует и читается:

$ [[-r foo && $ (

· Второй операнд выражений '! =' И '=' представляет собой подмножество шаблонов (например,
сравнение [[ Foobar = б * р ]] успешно). Это работает даже косвенно:

$ bar = foobar; baz = 'е * р'
$ [[$ bar = $ baz]]; эхо $?
$ [[$ bar = "$ baz"]]; эхо $?

Как это ни удивительно, первое сравнение удается, а второе - нет.
В настоящее время это не относится ко всем метасимволам extglob.

квотирование
Цитаты используются, чтобы оболочка не обрабатывала символы или слова специально. Есть
три метода цитирования. Во-первых, '\' цитирует следующий символ, если он не находится в
конец строки, и в этом случае удаляются как символ '\', так и новая строка. Во-вторых, сингл
quote («'») помещает в кавычки все, вплоть до следующей одинарной кавычки (это может занимать строки). В-третьих,
двойные кавычки ('"') заключают в кавычки все символы, кроме '$', '' 'и' \ ', до следующего неэкранированного
двойная кавычка. '$' и '' 'внутри двойных кавычек имеют свое обычное значение (т.е. параметр,
арифметические операции или подстановка команд), за исключением того, что для результатов не выполняется разделение полей
замен в двойных кавычках, а в старой форме подстановки команд
обратная косая черта для двойных кавычек включена. Если '\' внутри строки, заключенной в двойные кавычки, является
за которым следует '\', '$', '' 'или' "', он заменяется вторым символом; если за ним следует
при переводе строки удаляются как символ "\", так и символ новой строки; в противном случае как '\', так и
следующие символы не изменились.

Если строке в одинарных кавычках предшествует "$" без кавычек, расширение обратной косой черты в стиле C (см.
ниже) (даже символы одиночной кавычки внутри могут быть экранированы и не завершаются
строка тогда); расширенный результат рассматривается как любая другая строка в одинарных кавычках. Если
Строке с двойными кавычками предшествует "$" без кавычек, "$" просто игнорируется.

бэкслэш расширение
В местах, где используется обратная косая черта, некоторые C и AT&T UNIX КШ или GNU колотить стиль
побеги переведены. К ним относятся '\ a', '\ b', '\ f', '\ n', '\ r', '\ t', '\ U ########',
'\ u ####' и '\ v'. Для '\ U ########' и '\ u ####' «#» означает шестнадцатеричную цифру, например
их может быть не больше четырех-восьми; эти escape-последовательности переводят кодовую точку Unicode в UTF-8.
Кроме того, '\ E' и '\ e' заменяются escape-символом.

В Распечатать встроенный режим, '\ "', '\' 'и' \? ' явно исключены; восьмеричные последовательности
должен содержать до трех восьмеричных цифр «#» с префиксом ноль ('\ 0 ###');
шестнадцатеричные последовательности '\ x ##' не могут содержать до двух шестнадцатеричных цифр «#»; оба
восьмеричные и шестнадцатеричные последовательности преобразуются в необработанные октеты; '\ #', где # ничего из вышеперечисленного,
переводится в \ # (обратная косая черта сохраняется).

Расширение обратной косой черты в режиме стиля C немного отличается: восьмеричные последовательности '\ ###' должны иметь
нет нулевой цифры в префиксе от единицы до трех восьмеричных цифр «#» и дают необработанные октеты;
шестнадцатеричные последовательности '\ x # *' жадно съедают столько шестнадцатеричных цифр «#», сколько могут, и
заканчиваться первой не шестнадцатеричной цифрой; они переводят кодовую точку Unicode в
UTF-8. Последовательность '\ c #', где «#» - любой октет, переводится в Ctrl- # (что в основном
означает '\ c?' становится DEL, все остальное обрабатывается побитовым AND с 0x1F). Наконец, '\ #', где
# ничего из вышеперечисленного, переводится как # (с обрезанной обратной косой чертой), даже если это
новая линия.

Псевдонимов
Есть два типа псевдонимов: обычные псевдонимы команд и отслеживаемые псевдонимы. Псевдонимы команд
обычно используются как сокращение для длинной или часто используемой команды. Оболочка расширяется
псевдонимы команды (т.е. заменяет имя псевдонима на свое значение) при чтении первого слова
команды. Расширенный псевдоним повторно обрабатывается для проверки наличия дополнительных псевдонимов. Если команда
псевдоним заканчивается пробелом или табуляцией, следующее слово также проверяется на предмет раскрытия псевдонима. В
процесс раскрытия псевдонима останавливается, когда найдено слово, не являющееся псевдонимом, когда слово в кавычках
найден, или когда найдено слово псевдонима, которое в настоящее время раскрывается. Псевдонимы
конкретно интерактивная функция: пока они работают в сценариях и на
в командной строке в некоторых случаях псевдонимы раскрываются во время лексирования, поэтому их использование должно быть
отделить дерево команд от их определения; в противном случае псевдоним не будет найден.
Примечательно, что списки команд (разделенные точкой с запятой, при подстановке команд также символ новой строки)
может быть одно и то же дерево разбора.

Следующие псевдонимы команд определяются оболочкой автоматически:

autoload = '\ typeset -fu'
функции = '\ typeset -f'
hash = '\ встроенный псевдоним -t'
history = '\ builtin fc -l'
целое число = '\ typeset -i'
local = '\ typeset'
логин = '\ exec логин'
nameref = '\ typeset -n'
nohup = 'nohup'
г = '\ встроенный fc -e -'
type = '\ builtin откуда -v'

Отслеживаемые псевдонимы позволяют оболочке запоминать, где она нашла конкретную команду. Первое
когда оболочка выполняет поиск по пути для команды, помеченной как отслеживаемый псевдоним, она сохраняет
полный путь к команде. При следующем выполнении команды оболочка проверяет
сохраненный путь, чтобы убедиться, что он все еще действителен, и если это так, избегает повторения поиска пути.
Отслеживаемые псевдонимы можно перечислить и создать с помощью псевдоним -t. Обратите внимание, что изменение PATH
Параметр очищает сохраненные пути для всех отслеживаемых псевдонимов. Если треколл опция установлена
(т.е. набор -o треколл or набор -h) оболочка отслеживает все команды. Эта опция установлена
автоматически для неинтерактивных оболочек. Для интерактивных оболочек только следующие
автоматически отслеживаются команды: кошка(1) cc(1) CHMOD(1) cp(1) даты(1) ed(1)
Emacs(1) GREP(1) ls(1) сделать(1) mv(1) pr(1) rm(1) СЕПГ(1) sh(1) vi(1), и кто(1).

подмена
Первым шагом оболочки при выполнении простой команды является выполнение подстановок в
слова команды. Есть три вида подстановки: параметр, команда и
арифметика. Подстановки параметров, которые подробно описаны в следующем разделе,
принять форму $имя или $ {...}; подстановки команд имеют вид $ (команду) Или
(устарело) `команду`или (выполняется в текущей среде) $ { команду;} и убрать
завершающие символы новой строки; а арифметические подстановки имеют вид $ ((выражение)). Разбор
Подстановка команды current-environment требует пробела, табуляции или новой строки после открытия
фигурная скобка и чтобы закрывающая фигурная скобка распознавалась как ключевое слово (т.е. ей предшествовала новая строка
или точка с запятой). Они также называются funsubs (подстановки функций) и ведут себя как
функции в этом локальным и возвращают работа, и в этом выход завершает родительскую оболочку; оболочка
варианты общие.

Другой вариант подстановки - это valsubs (подстановки значений) $ {|команду;} которые
также выполняется в текущем окружении, как funsubs, но делится своим вводом-выводом с родителем;
вместо этого они вычисляют то, что изначально пустая локальная переменная выражения REPLY
установлен в пределах командуs.

Если замена появляется вне двойных кавычек, результаты замены
обычно подлежат разделению на слова или поля в соответствии с текущим значением IFS
параметр. Параметр IFS указывает список октетов, которые используются для разбиения строки.
в несколько слов; любые октеты из заданного пробела, табуляции и новой строки, которые появляются в IFS
октеты называются «пробелами IFS». Последовательности из одного или нескольких октетов пробелов IFS в
комбинация с нулем или одним октетом пробела, отличным от IFS, ограничивает поле. В частном случае
начальные и конечные пробелы IFS удаляются (т.е. нет начальных и конечных пустых полей).
созданный им); начальные или конечные пробелы, не относящиеся к IFS, создают пустое поле.

Пример. Если для IFS установлено значение « : ”, А для VAR задано значение
« А : B :: D », замена на $ VAR приводит к появлению четырех полей: 'A',
«B», «» (пустое поле) и «D». Обратите внимание, что если параметр IFS установлен в пустой
строка, разделение полей не производится; если он не установлен, значение по умолчанию для пробелов, табуляции и
используется новая строка.

Также обратите внимание, что разделение полей применяется только к непосредственному результату
подмена. Используя предыдущий пример, замена $ VAR: E приводит к
поля: 'A', 'B', '' и 'D: E', а не 'A', 'B', '', 'D' и 'E'. Это поведение POSIX
совместимый, но несовместимый с некоторыми другими реализациями оболочки, которые выполняют разделение полей
на слове, содержащем замену, или используйте IFS в качестве общего разделителя пробелов.

Результаты замены, если не указано иное, также подлежат раскрытию фигурных скобок.
и расширение имени файла (см. соответствующие разделы ниже).

Подстановка команды заменяется выводом, сгенерированным указанной командой, которая
запустить в подоболочке. За $ (команду) и $ {|команду;} и $ { команду;} замены, нормальные
правила цитирования используются, когда команду разбирается; однако для устаревшего `команду`форма, а
'\', за которым следует любой из '$', '' 'или' \ ', удаляется (как и' "', когда подстановка является частью
строки в двойных кавычках); обратная косая черта '\', за которой следует любой другой символ, не изменяется.
Как частный случай подстановки команд, команда видафайл интерпретируется как
означает заменить содержимое файл, Обратите внимание, что $ ( имеет тот же эффект, что и $ (кошка фу).

Обратите внимание, что некоторые оболочки не используют рекурсивный синтаксический анализатор для подстановки команд, что приводит к
отказ для определенных конструкций; чтобы быть переносимым, используйте в качестве обходного пути 'x = $ (cat) << "EOF"' (или
newline-keeping 'x = << "EOF"' extension) вместо того, чтобы просто пропустить строку. IEEE Std 1003.1
(«POSIX.1») рекомендует использовать операторы case в форме 'x = $ (case $ foo in (bar) echo $ bar
;; (*) echo $ baz ;; esac) 'вместо этого, что будет работать, но не будет служить примером для этого
проблема переносимости.

x = $ (case $ foo in bar) echo $ bar ;; *) echo $ baz ;; esac)
# выше не удается выполнить синтаксический анализ на старых оболочках; ниже - обходной путь
x = $ (eval $ (cat)) << "EOF"
case $ foo in bar) echo $ bar ;; *) echo $ baz ;; esac
EOF

Арифметические подстановки заменяются значением указанного выражения. Для
Например, команда Распечатать $ ((2 + 3 * 4)) отображает 14. См. Арифметический выражения для
описание выражения.

параметры
Параметры - это переменные оболочки; им можно присвоить значения, и к их значениям можно получить доступ
с помощью подстановки параметра. Имя параметра может быть одним из специальных
параметры знаков препинания или цифры, описанные ниже, либо буква, за которой следует ноль, или
больше букв или цифр ('_' считается буквой). Последнюю форму можно рассматривать как массивы
добавив индекс массива в форме [выраж] где выраж это арифметическое выражение.
Индексы массива в МКШ ограничены диапазоном от 0 до 4294967295 включительно. То есть,
они представляют собой 32-битное целое число без знака.

Подстановки параметров имеют вид $имя, $ {имя} или $ {имя[выраж]} куда имя - это
имя параметра. Замена всех элементов массива на $ {имя[*]} и $ {имя[@]} работает
эквивалентно $ * и $ @ для позиционных параметров. Если замена выполняется на
параметр (или элемент параметра массива), который не установлен, подставляется пустая строка
если только существительное вариант (набор -o существительное or набор -u), и в этом случае возникает ошибка.

Параметрам можно присвоить значения несколькими способами. Во-первых, оболочка неявно устанавливает
некоторые параметры, такие как '#', 'PWD' и '$'; только так специальный одиночный символ
параметры установлены. Во-вторых, параметры импортируются из среды оболочки в
запускать. В-третьих, параметрам можно присвоить значения в командной строке: например, FOO = бар
устанавливает параметр «FOO» на «bar»; несколько назначений параметров могут быть даны на одном
командная строка, и за ними может следовать простая команда, и в этом случае присваивания
действует только на время действия команды (такие назначения также экспортируются; см.
ниже о последствиях этого). Обратите внимание, что и имя параметра, и знак '=' должны быть
без кавычек, чтобы оболочка распознала назначение параметра. Конструкция FOO + = baz Также
признанный; старое и новое значения немедленно объединяются. Четвертый способ установки
параметр с экспорт, Глобальный, только для чтениякачества набрана команды; увидеть их
описания в Command выполнение раздел. Пятое, для и выберите петли установить параметры
так же хорошо как Getopts, читатькачества набор -A команды. Наконец, можно назначить параметры
значения с помощью операторов присваивания внутри арифметических выражений (см. Арифметический выражения
ниже) или используя $ {имя=ценностное } форма подстановки параметра (см. ниже).

Параметры с атрибутом экспорта (задаются с помощью экспорт or набрана -x командами, или
назначения параметров, за которыми следуют простые команды) помещаются в среду (см.
среда(7)) команд, запускаемых оболочкой как имя=ценностное пары. Порядок, в котором параметры
появляться в окружении команды не указано. Когда оболочка запускается, она
извлекает параметры и их значения из своей среды и автоматически устанавливает экспорт
атрибут для этих параметров.

К $ {имя} форма подстановки параметров:

${имя:-слово}
If имя установлен, а не NULL, он заменяется; иначе, слово заменяется.

${имя:+слово}
If имя установлен, а не NULL, слово заменяется; в противном случае ничего не заменяется.

${имя:=слово}
If имя установлен, а не NULL, он заменяется; в противном случае присваивается слово и
итоговое значение имя заменяется.

${имя:?слово}
If имя установлен, а не NULL, он заменяется; иначе, слово напечатано на
стандартная ошибка (предшествует имя:) и возникает ошибка (обычно вызывающая прерывание
сценария оболочки, функции или сценария, полученного с использованием '.' встроенный). Если слово is
опущено, вместо этого используется строка «параметр null или не установлен». В настоящее время ошибка,
if слово - это переменная, которая расширяется до пустой строки, сообщение об ошибке также
распечатаны.

Обратите внимание, что для всего вышеперечисленного слово фактически считается процитированным, и специальный синтаксический анализ
применяются правила. Правила синтаксического анализа также различаются в зависимости от того, заключено ли выражение в двойные кавычки: слово
затем использует правила двойных кавычек, за исключением самих двойных кавычек ('"') и закрывающего
фигурная скобка, к которой при экранировании обратной косой черты применяется удаление кавычек.

В приведенных выше модификаторах можно опустить ':', и в этом случае условия зависят только от
имя установлен (в отличие от set, а не NULL). Если слово необходим, параметр, команда,
на нем производятся арифметика и подстановка тильды; если слово не нужно, это не
оценен.

Также можно использовать следующие формы подстановки параметров (если имя это массив,
элемент с ключом «0» будет подставлен в скалярном контексте):

$ {#имя}
Количество позиционных параметров, если имя '*', '@' или не указано; иначе
длина (в символах) строкового значения параметра имя.

$ {#имя[*]}
$ {#имя[@]}
Количество элементов в массиве имя.

$ {%имя}
Ширина (в столбцах экрана) строкового значения параметра имя, или -1, если
${имя} содержит управляющий символ.

$ {!имя}
Имя переменной, на которую ссылается имя, Это будет имя кроме случаев, когда имя is
ссылка на имя (связанная переменная), созданная ссылка на имя команда (которая является псевдонимом
для набрана -n).

$ {!имя[*]}
$ {!имя[@]}
Имена индексов (ключей) в массиве имя.

${имя#описания}
${имя##описания}
If описания соответствует началу значения параметра имя, совпавший текст
удален из результата подстановки. Одиночный знак "#" приводит к самому короткому
матч, и два из них приводят к самому продолжительному совпадению. Нельзя применить к вектору
($ {*} или $ {@}, или $ {array [*]}, или $ {array [@]}).

${имя%описания}
${имя%%описания}
Подобно подстановке $ {.. # ..}, но она удаляется с конца значения. Не может быть
применяется к вектору.

${имя/узор / строка}
${имя/#узор / строка}
${имя/%узор / строка}
${имя//узор / строка}
Самый длинный матч описания в значении параметра имя заменяется на string
(удаляется, если string пустой; в этом случае можно опустить завершающую косую черту ('/')).
Начальная косая черта, за которой следует '#' или '%', приводит к привязке шаблона к
начало или конец значения соответственно; пустой без якоря описанияs причина нет
замена; одинарная косая черта или использование описания что соответствует пустому
строка вызывает замену только один раз; две ведущие косые черты вызывают все
совпадения в заменяемом значении. Нельзя применить к вектору.
Неэффективно реализовано, может быть медленным.

${имя:пост:только}
Первый только персонажи имя, начиная с позиции пост, заменяются. Оба
пост и:только являются необязательными. Если пост отрицательный, отсчет начинается в конце
нить; если он опущен, по умолчанию используется 0. Если только опущено или больше
длина оставшейся строки, вся она заменяется. Оба пост и только Он
оценивается как арифметическое выражение. В настоящее время, пост должен начинаться с пробела,
открывающая скобка или цифра, которую нужно распознать. Нельзя применить к вектору.

${имя@ #}
Хеш (с использованием алгоритма BAFH) расширения имя. Это также используется
внутренне для хэш-таблиц оболочки.

${имя@Q}
Выражение в кавычках, безопасное для повторного входа, значение которого является значением имя
параметр, подставляется.

Обратите внимание, что описания может потребоваться расширенный шаблон подстановки (@ (...)), одинарный ('...') или двойной
("...") экранирование кавычек, если -o sh установлен.

Следующие специальные параметры неявно устанавливаются оболочкой и не могут быть установлены напрямую.
с использованием заданий:

! Идентификатор последнего запущенного фонового процесса. Если нет фоновых процессов
запущен, параметр не установлен.

# Количество позиционных параметров ($ 1, $ 2 и т. Д.).

$ PID оболочки или PID исходной оболочки, если это подоболочка. Делать НЕ
использовать этот механизм для генерации имен временных файлов; видеть мктемп(1) вместо этого.

- Объединение текущих однобуквенных вариантов (см. набор команда ниже
для списка опций).

? Статус завершения последней выполненной неасинхронной команды. Если последняя команда
был убит сигналом, $? установлено 128 плюс номер сигнала, но не более 255.

0 Имя оболочки, определяемое следующим образом: первый аргумент для МКШ если бы это было
вызывается с -c были даны варианты и аргументы; в противном случае файл аргумент, если
это было поставлено; или же базовое имя, с которым была вызвана оболочка (например, argv [0]). 0 долл. США
также устанавливается имя текущего скрипта или имя текущей функции,
если он был определен с функция ключевое слово (т.е. функция в стиле оболочки Korn).

1 .. 9 Первые девять позиционных параметров, которые были переданы оболочке, функции или
сценарий, полученный с использованием '.' встроенный. Дополнительные позиционные параметры могут быть
доступ через $ {номер}.

* Все позиционные параметры (кроме 0), т.е. $ 1, $ 2, $ 3, ...
При использовании вне двойных кавычек параметры представляют собой отдельные слова (которые подвергаются
к разбиению слов); если используется в двойных кавычках, параметры разделяются
первый символ параметра IFS (или пустая строка, если IFS имеет значение NULL).

@ Такой же как $*, если он не используется в двойных кавычках, и в этом случае отдельное слово
генерируется для каждого позиционного параметра. Если нет позиционных параметров, нет
слово генерируется. $@ может использоваться для доступа к аргументам, дословно, без потери
NULL-аргументы или разделение аргументов пробелами.

Следующие параметры устанавливаются и / или используются оболочкой:

_ (подчеркивание) Когда оболочка выполняет внешнюю команду, этот параметр
устанавливается в среде нового процесса на путь выполняемого
команда. При интерактивном использовании этот параметр также устанавливается в родительской оболочке на
последнее слово предыдущей команды.

BASHPID PID оболочки или подоболочки.

CDPATH Подобно PATH, но используется для разрешения аргумента в cd встроенная команда. Примечание
что если CDPATH установлен и не содержит '.' или пустой строковый элемент,
текущий каталог не ищется. Так же cd встроенная команда отобразит
результирующий каталог, когда совпадение найдено в любом пути поиска, кроме
пустой путь.

COLUMNS Установите количество столбцов на терминале или в окне. Всегда устанавливается, по умолчанию
до 80, если значение, указанное стти(1) ненулевое и достаточно разумное
(минимум 12x3); аналогично для ЛИНИЙ. Этот параметр используется
интерактивные режимы редактирования строк, а также выберите, набор -oкачества убивать -l команды
для форматирования информационных столбцов. Импорт из окружения или снятие настроек
этот параметр удаляет привязку к фактическому размеру терминала в пользу
предоставленное значение.

ENV Если установлено, что этот параметр установлен после выполнения каких-либо файлов профиля,
расширенное значение используется как файл запуска оболочки. Обычно он содержит функцию
и определения псевдонимов.

ERRNO Целочисленное значение оболочки ERRNO Переменная. Указывает причину последнего
системный вызов не удался. Еще не реализовано.

EXECSHELL Если установлено, предполагается, что этот параметр содержит оболочку, которая будет использоваться для
выполнять команды, которые Execve(2) не выполняется и не начинается с
«#!оболочка" последовательность.

FCEDIT Редактор, используемый fc команда (см. ниже).

FPATH Подобно PATH, но используется, когда выполняется неопределенная функция для поиска файла.
определение функции. Он также ищется, когда команда не может быть найдена с помощью
ДОРОЖКА. Видеть функции ниже для получения дополнительной информации.

HISTFILE Имя файла, используемого для хранения истории команд. При назначении или отключении
файл открывается, история обрезается и загружается из файла; последующий
новые команды (возможно, состоящие из нескольких строк) добавляются после того, как они
успешно скомпилирован. Кроме того, несколько вызовов оболочки будут совместно использовать
history, если все их параметры HISTFILE указывают на один и тот же файл.

Внимание: Если HISTFILE не задан или пуст, файл истории не используется. Это
отличается от AT&T UNIX КШ.

HISTSIZE Количество команд, обычно сохраняемых для истории. По умолчанию - 2047. Сделайте
не устанавливайте это значение на безумно высокие значения, такие как 1000000000, потому что МКШ может
тогда не будет выделено достаточно памяти для истории и не запустится.

HOME Каталог по умолчанию для cd команда и значение, замененное на
неквалифицированный ~ (См. Тильда расширение ниже).

IFS Внутренний разделитель полей, используемый при замене и читать команда, чтобы
разделять значения на отдельные аргументы; обычно устанавливается на пробел, табуляцию и новую строку.
Читать подмена подробности выше.

Внимание: Этот параметр не импортируется из среды, когда оболочка
началась.

KSHEGID Эффективный групповой идентификатор оболочки.

KSHGID Реальный идентификатор группы оболочки.

KSHUID Реальный идентификатор пользователя оболочки.

KSH_VERSION Имя и версия оболочки (только для чтения). См. Также команды версии
in Emacs редактирование Режим и Vi редактирование Режим разделы ниже.

LINENO Номер строки функции или сценария оболочки, который в настоящее время
казнены.

ЛИНИИ Установите количество строк в терминале или окне. Всегда устанавливается, по умолчанию
24. См. КОЛОННЫ.

ЭПОХРЕАЛЬНОЕ ВРЕМЯ
Время с эпохи, возвращенное получить время дня(2) в десятичном формате
тв_сек за которым следует точка ('.') и tv_usec дополнен точно до шести десятичных знаков
цифры.

OLDPWD Предыдущий рабочий каталог. Отключить, если cd не удалось успешно изменить
каталоги с момента запуска оболочки, или если оболочка не знает, где она находится.

OPTARG При использовании Getopts, он содержит аргумент для анализируемой опции, если он
требуется один.

OPTIND Индекс следующего аргумента, который будет обрабатываться при использовании Getopts. Назначение 1
к этому параметру вызывает Getopts обрабатывать аргументы с самого начала
при следующем вызове.

ПУТЬ Список каталогов, в которых выполняется поиск, разделенных двоеточием (точка с запятой в OS / 2).
при поиске команд и файлов, полученных с помощью '.' команда (см. ниже).
Пустая строка, образованная начальным или конечным двоеточием или двумя соседними
двоеточия, рассматривается как "." (текущий каталог).

PGRP Идентификатор процесса лидера группы процессов оболочки.

PIPESTATUS Массив, содержащий коды уровня ошибки (состояния выхода), один за другим, из последних
Трубопровод на переднем плане.

PPID Идентификатор процесса родительской оболочки.

PS1 Основная подсказка для интерактивных оболочек. Параметр, команда и арифметика
замены выполняются, и '!' заменяется текущей командой
номер (см. fc команду ниже). Буквальное "!" можно вставить в подсказку
размещение '!!' в PS1.

Приглашение по умолчанию - «$» для пользователей без полномочий root, «#» для пользователей root. Если МКШ is
вызывается root и PS1 не содержит символа '#', значения по умолчанию
будет использоваться, даже если PS1 уже существует в среде.

Ассоциация МКШ раздача идет с образцом точка.mkshrc содержащий сложный
пример, но вам может понравиться следующий (обратите внимание, что
$ {HOSTNAME: = $ (hostname)} и условие различия корневого пользователя и пользователя (в
в этом примере) выполняется во время назначения PS1, а $ USER и $ PWD -
экранированы и, таким образом, будут оцениваться каждый раз, когда отображается приглашение):

PS1 = '$ {USER: = $ (id -un)}' "@ $ {HOSTNAME: = $ (hostname)}: \ $ PWD $ (
если ((USER_ID)); затем напечатайте \ $; иначе напечатайте \ #; fi) "

Обратите внимание, что, поскольку редакторы командной строки пытаются выяснить, сколько времени
есть (чтобы они знали, как далеко он находится до края экрана), escape-коды в
подсказка, как правило, все портит. Вы можете сказать оболочке, чтобы она не считала определенные
последовательности (например, escape-коды), добавив к приглашению префикс символа
(например, Ctrl-A), за которым следует возврат каретки, а затем разделение escape-символа
коды с этим символом. Любые появления этого символа в приглашении
не печатается. Кстати, не вините меня за этот взлом; это получено из
оригинал кш88(1), который напечатал символ разделителя, так что вы были вне
удачи, если у вас не было ни одного непечатаемого символа.

Поскольку обратная косая черта и другие специальные символы могут интерпретироваться оболочкой,
чтобы установить PS1, либо избегайте самой обратной косой черты, либо используйте двойные кавычки. В
последнее более практично. Это более сложный пример, позволяющий избежать прямого
введите специальные символы (например, с ^V в режиме редактирования emacs), который
встраивает текущий рабочий каталог в обратном видео (цвет будет работать,
тоже), в строке приглашения:

х = $ (печать \\ 001)
PS1 = "$ x $ (print \\ r) $ x $ (tput so) $ x \ $ PWD $ x $ (tput se) $ x>"

Благодаря убедительному предложению Дэвида Г. Корна, МКШ теперь также поддерживает
следующая форма:

PS1=$'\1\r\1\e[7m\1$PWD\1\e[0m\1> '

PS2 Вторичная строка приглашения, по умолчанию '>', используется, когда требуется дополнительный ввод для
завершите команду.

Подсказка PS3, используемая выберите заявление при чтении выбора меню. По умолчанию
является '#? '.

PS4 Используется для префикса команд, которые печатаются во время трассировки выполнения (см. набор
-x команду ниже). Параметры, команды и арифметические замены являются
выполняется перед печатью. По умолчанию - «+». Вы можете установить это
вместо '[$ EPOCHREALTIME]', чтобы включить временные метки.

PWD Текущий рабочий каталог. Может быть не задано или NULL, если оболочка не знает
где это.

RANDOM Каждый раз, когда используется RANDOM, ему присваивается номер от 0 до 32767
сначала из линейного конгруэнтного ГПСЧ.

REPLY Параметр по умолчанию для читать команда, если имена не указаны. Также используется в
выберите циклы для хранения значения, считанного со стандартного ввода.

СЕКУНДЫ Количество секунд с момента запуска оболочки или, если параметр был
присвоено целочисленное значение, количество секунд с момента присвоения плюс
присвоенное значение.

TMOUT Если в интерактивной оболочке задано положительное целое число, он указывает максимум
количество секунд, в течение которых оболочка будет ждать ввода после печати первичного
подсказка (PS1). Если время превышено, оболочка закрывается.

TMPDIR Каталог, в котором создаются временные файлы оболочки. Если этот параметр не
установлен или не содержит абсолютный путь к доступному для записи каталогу, временный
файлы создаются в / Tmp.

USER_ID Эффективный идентификатор пользователя оболочки.

Тильда расширение
Расширение тильды, которое выполняется параллельно с заменой параметра, выполняется на словах
начиная с "~" без кавычек. Символы, следующие за тильдой, до первого '/', если
любой, предполагается, что это имя для входа. Если имя входа пустое, '+' или '-', значение
заменяется параметр HOME, PWD или OLDPWD соответственно. В противном случае пароль
файл ищется по имени входа, и выражение тильды заменяется на имя пользователя
домашний каталог. Если имя для входа не найдено в файле паролей или если цитируется или
в имени входа происходит подстановка параметров, подстановка не производится.

В назначениях параметров (например, перед простой командой или в
аргументы псевдоним, экспорт, Глобальный, только для чтениякачества набрана), тильда выполняется после
любое присвоение (то есть после знака равенства) или после двоеточия без кавычек (':'); имена для входа
также разделяются двоеточиями.

Домашний каталог с ранее развернутыми именами входа кэшируется и используется повторно. В псевдоним -d
команда может использоваться для перечисления, изменения и добавления в этот кеш (например, псевдоним -d
fac = / usr / local / services; cd ~ fac / bin).

распорка расширение (чередование)
Выражения скобок имеют следующий вид:

префикс{str1, ...,улN}суффикс

Выражения расширяются до N слова, каждое из которых является конкатенацией префикс, улi,
и суффикс (например, «a {c, b {X, Y}, d} e» расширяется до четырех слов: «ace», «abXe», «abYe» и «ade»).
Как отмечено в примере, фигурные скобки могут быть вложенными, а полученные слова не
отсортировано. Выражения в фигурных скобках должны содержать запятую (',') без кавычек, чтобы могло произойти раскрытие (например,
{} и {фу} не расширяются). Раскладка скобок выполняется после подстановки параметров
и до генерации имени файла.

Файл имя паттеранами
Шаблон имени файла - это слово, содержащее один или несколько символов «?», «*», «+», «@» Или «!» Без кавычек.
символы или последовательности «[..]». После расширения раскоса оболочка заменяет
шаблоны имен файлов с отсортированными именами всех файлов, которые соответствуют шаблону (если нет
файлы совпадают, слово остается без изменений). Элементы шаблона имеют следующее значение:

? Соответствует любому одиночному символу.

* Соответствует любой последовательности октетов.

[..] Соответствует любому из октетов в квадратных скобках. Диапазоны октетов могут быть указаны с помощью
разделение двух октетов знаком «-» (например, «[a0-9]» соответствует букве «a» или любой цифре).
Для того, чтобы представить себя, необходимо заключить '-' в кавычки, либо в качестве первого или последнего октета.
в списке октетов. Точно так же должен быть заключен в кавычки "]" или первый октет в списке.
если он должен представлять себя вместо конца списка. Также '!' появление
в начале списка имеет особое значение (см. ниже), поэтому для обозначения себя он
должны быть процитированы или появиться позже в списке.

[! ..] Подобно [..], за исключением того, что ему соответствует любой октет, не заключенный в скобки.

*(описания| ... |описания)
Соответствует любой строке октетов, которая соответствует нулю или более вхождений указанного
узоры. Пример: узор * (фу|бар) соответствует строкам «», «foo», «bar»,
«Foobarfoo» и т. Д.

+(описания| ... |описания)
Соответствует любой строке октетов, которая соответствует одному или нескольким вхождениям указанного
узоры. Пример: узор + (фу|бар) соответствует строкам «foo», «bar»,
«Foobar» и т. Д.

?(описания| ... |описания)
Соответствует пустой строке или строке, соответствующей одному из указанных шаблонов.
Пример: узор ? (фу|бар) соответствует только строкам «», «foo» и «bar».

@(описания| ... |описания)
Соответствует строке, соответствующей одному из указанных шаблонов. Пример: узор
@ (foo|бар) соответствует только строкам «foo» и «bar».

!(описания| ... |описания)
Соответствует любой строке, не соответствующей ни одному из указанных шаблонов. Примеры:
описания ! (фу|бар) соответствует всем строкам, кроме «foo» и «bar»; шаблон ! (*)
не соответствует никаким строкам; шаблон ! (?) * соответствует всем строкам (подумайте об этом).

Обратите внимание, что сложная подстановка, особенно с альтернативами, выполняется медленно; используя отдельные
сравнения могут быть (а могут и не быть) быстрее.

Обратите внимание, что МКШпдкш) никогда не соответствует '.' и '..', но AT&T UNIX КШ, Борн sh, и GNU
колотить делать.

Обратите внимание, что ни один из вышеперечисленных элементов шаблона не соответствует точке ('.') В начале
имя файла или косая черта ('/'), даже если они явно используются в последовательности [..]; так же
имена '.' и '..' никогда не совпадают, даже по шаблону '. *'.

Если же линия индикатора маркдиры задана опция, любые каталоги, полученные в результате генерации имени файла, будут
помечены завершающим символом '/'.

Вход / выход перенаправление
Когда команда выполняется, ее стандартный ввод, стандартный вывод и стандартная ошибка (файл
дескрипторы 0, 1 и 2 соответственно) обычно наследуются от оболочки. Три
Исключением являются команды в конвейерах, для которых стандартный ввод и / или стандартный
вывод - это те, которые настроены конвейером, асинхронные команды, созданные, когда управление заданием
отключен, для которого стандартный ввод изначально установлен на / DEV / нуль, и команды для
для которых было указано любое из следующих перенаправлений:

>файл Стандартный вывод перенаправляется на файл. Если файл не существует, он создан;
если он существует, это обычный файл, а никчемный опция установлена, ошибка
происходит; в противном случае файл усекается. Обратите внимание, что это означает команду CMD
<фу > фу откроется Foo для чтения, а затем обрезать его, когда он откроет для
письмо, прежде чем CMD получает шанс прочитать Foo.

>|файл Такой же как >, за исключением того, что файл усекается, даже если никчемный опция установлена.

>>файл Такой же как >, кроме случаев, когда файл существует, к которому он добавляется, а не усекается.
Кроме того, файл открывается в режиме добавления, поэтому запись всегда идет в конец
файл (см. открытый(2 г.)).

<файл Стандартный ввод перенаправляется из файл, который открыт для чтения.

<>файл Такой же как <, за исключением того, что файл открыт для чтения и записи.

<<маркер После прочтения командной строки, содержащей такое перенаправление (называемое
«Здесь документ»), оболочка копирует строки из источника команды в
временный файл до совпадения строки маркер читается. Когда команда
выполняется, стандартный ввод перенаправляется из временного файла. Если маркер
не содержит кавычек, содержимое временного файла обрабатывается
как если бы они заключались в двойные кавычки каждый раз при выполнении команды, поэтому параметр,
команда, а арифметические подстановки выполняются вместе с обратной косой чертой ('\')
экранирует символы '$', '' ',' \ 'и' \ newline ', но не для' "'. Если здесь несколько
документы используются в одной командной строке, они сохраняются по порядку.

Если нет маркер дан, здесь документ заканчивается на следующем << и замена
будет выполнено. Если маркер это только набор либо одиночных «''», либо двойных «» "'
кавычки, между которыми ничего нет, здесь документ заканчивается на следующей пустой строке
и замена не производится.

<< -маркер Такой же как <<, за исключением того, что ведущие табуляторы удаляются из строк в данном документе.

<<слово Такой же как <<, Кроме этого слово is здесь документ. Это называется здесь
строка.

<&fd Стандартный ввод дублируется из файлового дескриптора fd. fd может быть числом,
указание номера существующего файлового дескриптора; буква "р", обозначающая
дескриптор файла, связанный с выводом текущего сопроцесса; или
символ '-', обозначающий, что стандартный ввод должен быть закрыт. Обратите внимание, что fd is
ограничивается одной цифрой в большинстве реализаций оболочки.

>&fd Такой же как <&, за исключением того, что операция выполняется на стандартном выводе.

&>файл Такой же как >файл 2> & 1. Это устаревший (устаревший) GNU колотить расширение поддерживается
by МКШ который также поддерживает предыдущий явный номер fd, например,
3 &>файл такой же как 3>файл 2> & 3 in МКШ но синтаксическая ошибка в GNU колотить.

&> |файл, & >>файл, &> &fd
Такой же как >|файл, >>файлили >&fd, с последующим 2> & 1, как указано выше. Эти МКШ
.

В любом из вышеуказанных перенаправлений дескриптор файла, который перенаправляется (т. Е. Стандартный
ввод или стандартный вывод) можно явно указать, указав перед перенаправлением число
(портативно, только одна цифра). Параметр, команда и арифметические замены, тильда
замены и (если оболочка интерактивная) генерация имени файла выполняются на
домен файл, маркеркачества fd аргументы перенаправления. Обратите внимание, однако, что результаты любых
Генерация имени файла используется только в том случае, если сопоставляется один файл; если совпадают несколько файлов,
слово с расширенными символами генерации имени файла. Обратите внимание, что в ограниченном
оболочки, перенаправления, которые могут создавать файлы, не могут быть использованы.

Для простых команд перенаправления могут появляться в любом месте команды; для составных команд
(if операторы и т. д.), любые перенаправления должны появляться в конце. Перенаправления обрабатываются
после того, как конвейеры созданы и в том порядке, в котором они указаны, поэтому следующее будет печатать
ошибка с добавленным к ней номером строки:

$ cat / foo / bar 2> & 1> / dev / null | пр-п -т

Дескрипторы файлов, созданные перенаправлением ввода-вывода, являются частными для оболочки.

Арифметический выражения
Целочисленные арифметические выражения могут использоваться с позволять команда внутри выражений $ ((..)),
ссылки на внутренние массивы (например, имя[выраж]), как числовые аргументы для тестXNUMX команда, и как
значение присвоения целочисленному параметру. Предупреждение: Это также влияет на неявное
преобразование в целое число, например, как это делается позволять команда. Никогда использовать непроверенного пользователя
ввод, например, из среды, в арифметике!

Выражения вычисляются с использованием знаковой арифметики и mksh_ari_t тип (32-битный подписанный
целое число), если они не начинаются с единственного символа '#', в этом случае они используют mksh_uari_t (a
32-битное целое число без знака).

Выражения могут содержать буквенно-цифровые идентификаторы параметров, ссылки на массивы и целые числа.
константы и могут быть объединены со следующими операторами C (перечислены и сгруппированы в
в порядке возрастания приоритета):

Унарные операторы:

+ -! ~ ++ -

Бинарные операторы:

,
= + = - = * = / =% = <<< = >>> = << = >> = & = ^ = | =
||
&&
|
^
&
==! =
<<=>> =
<<< >>> << >>
+ -
* /%

Тернарные операторы:

?: (приоритет сразу выше присвоения)

Операторы группировки:

()

Целочисленные константы и выражения вычисляются с использованием ровно 32-битных, знаковых или
беззнаковый, введите с тихим переносом при переполнении целого числа. Целочисленные константы могут быть
заданный с произвольным основанием с использованием обозначения Использование темпера с изогнутым основанием#номер, Где Использование темпера с изогнутым основанием десятичный
целое число, определяющее базу, и номер число в указанном основании. Кроме того,
целые числа с основанием 16 могут быть указаны с префиксом '0x' (без учета регистра) во всех
формы арифметических выражений, кроме числовых аргументов тестXNUMX встроенная команда.
Префикс чисел с помощью единственной цифры ноль ('0') не приводит к интерпретации как восьмеричной, так как
это небезопасно.

Как особый МКШ расширение, числа до единицы обрабатываются как (8-битные
прозрачный) кодовые точки ASCII или Unicode, в зависимости от оболочки utf8-режим флаг (текущий
параметр). AT&T UNIX кш93 Также поддерживается синтаксис «x» вместо «1 # x». Примечание
что байты NUL (целое значение нуля) не могут быть использованы. Неустановленный или пустой параметр
оценивается как 0 в целочисленном контексте. В режиме Unicode необработанные октеты отображаются в диапазоне
EF80..EFFF, как в OPTU-8, который находится в PUA и был назначен CSUR для этого использования. Если
более одного октета в режиме ASCII или последовательность из более чем одного октета, не образующая допустимого
и минимальная последовательность CESU-8 передается, поведение не определено (обычно оболочка прерывает
с ошибкой синтаксического анализа, но редко, например, в последовательности C2 20). Вот почему ты
всегда следует использовать режим ASCII, если вы не знаете, что ввод правильно сформирован UTF-8 в
диапазон 0000..FFFD, если вы используете эту функцию, в отличие от читать -a.

Операторы оцениваются следующим образом:

унарный +
Результат - это аргумент (включен для полноты).

унарный -
Отрицание.

! Логическое НЕ; результат равен 1, если аргумент равен нулю, и 0, если нет.

~ Арифметика (побитовая) НЕ.

++ Приращение; должен применяться к параметру (а не к литералу или другому выражению).
Параметр увеличивается на 1. При использовании в качестве префиксного оператора результат
- увеличенное значение параметра; при использовании в качестве постфиксного оператора,
результатом будет исходное значение параметра.

-- Похожий на ++, за исключением того, что параметр уменьшается на 1.

, Разделяет два арифметических выражения; левая часть оценивается первой,
тогда право. Результатом является значение выражения справа.
стороны.

= Назначение; переменной слева присваивается значение справа.

+ = - = * = / =% = <<< = >>> = << = >> = & = ^ = | =
Операторы присваивания.вар><op> =выраж> то же самое, что ивар> =вар><op><выраж>,
с любым приоритетом оператора ввыраж> Сохранилось. Например, «var1 * = 5 +
3 »- это то же самое, что и« var1 = var1 * (5 + 3) ».

|| Логическое ИЛИ; результатом будет 1, если любой из аргументов не равен нулю, и 0, если нет. В
Правый аргумент оценивается, только если левый аргумент равен нулю.

&& Логическое И; результат равен 1, если оба аргумента не равны нулю, и 0, если нет. В
Правый аргумент оценивается, только если левый аргумент не равен нулю.

| Арифметика (побитовая) ИЛИ.

^ Арифметическое (побитовое) XOR (исключающее ИЛИ).

& Арифметика (побитовая) И.

== Равно; результат равен 1, если оба аргумента равны, и 0, если нет.

! = Не равно; результат равен 0, если оба аргумента равны, и 1, если нет.

<Меньше чем; результат равен 1, если левый аргумент меньше правого, 0, если
не.

<=>> =
Меньше или равно, больше, больше или равно. Видеть <.

<<< >>>
Повернуть влево (вправо); результат аналогичен сдвигу (см. <<) за исключением того, что
биты, сдвинутые на одном конце, сдвигаются на другом конце вместо нуля
или знаковые биты.

<< >> Сдвиг влево (вправо); результат - левый аргумент со сдвинутыми влево битами
(справа) на сумму, указанную в правом аргументе.

+ - * /
Сложение, вычитание, умножение и деление.

% Остаток; результат - симметричный остаток от деления левой
аргумент по праву. Чтобы получить математический модуль «a модуль b », используйте
формула «(a% b + b)% b».

<arg1>?arg2>:arg3>
Еслиarg1> не равно нулю, результатarg2>; в противном случае результатarg3>.
Аргумент, не являющийся результатом, не оценивается.

Совместные процессы
Сопроцесс (который представляет собой конвейер, созданный с помощью оператора '| &') - это асинхронный процесс.
что оболочка может писать в (используя Распечатать -p) и читать из (используя читать -p). Вход
и выходом совместного процесса также можно управлять с помощью > & p и <& p перенаправления,
соответственно. После того, как совместный процесс был запущен, другой не может быть запущен до тех пор, пока совместный процесс не начнется.
процесс завершится, или пока вход сопроцесса не будет перенаправлен с помощью Exec n> & p
перенаправление. Если ввод сопроцессора перенаправлен таким образом, следующий сопроцесс будет
start будет разделять вывод с первым сопроцессом, если только вывод начального
сопроцесс был перенаправлен с помощью Exec n<& p перенаправление.

Некоторые примечания относительно сопроцессов:

· Единственный способ закрыть ввод сопроцесса (чтобы сопроцесс считал конец файла) - это
чтобы перенаправить ввод на нумерованный файловый дескриптор, а затем закрыть этот файловый дескриптор:
Exec 3> & p; Exec 3> & -

· Чтобы совместные процессы могли совместно использовать общий вывод, оболочка должна сохранять запись
часть выходной трубы открыта. Это означает, что конец файла не будет обнаружен до тех пор, пока
все сопроцессы, совместно использующие выходные данные сопроцесса, завершились (когда все они выходят,
оболочка закрывает свою копию трубы). Этого можно избежать, перенаправив вывод на
нумерованный файловый дескриптор (так как это также заставляет оболочку закрывать свою копию). Обратите внимание, что
это поведение немного отличается от исходной оболочки Korn, которая закрывает свою копию
части записи вывода совместного процесса, когда последний запущенный совместный процесс
(вместо завершения всех совместных процессов совместного использования).

· Распечатать -p будет игнорировать сигналы SIGPIPE во время записи, если сигнал не перехватывается или
игнорируется; то же самое верно, если ввод сопроцессора был дублирован в другой файл
дескриптор и Распечатать -un используется.

функции
Функции определяются с помощью оболочки Korn. функция имя-функции синтаксис или
Оболочка Bourne / POSIX имя-функции() синтаксис (разницу между двумя
формы). Функции похожи на.-Скрипты (т. Е. Скрипты, полученные с использованием встроенного '.') В том, что
они выполняются в текущей среде. Однако, в отличие от. ‐ Скриптов, аргументы оболочки
(т.е. позиционные параметры $ 1, $ 2 и т. д.) внутри них никогда не видны. Когда оболочка
определение местоположения команды, функции ищутся по специальным встроенным
перед поиском встроенных команд и PATH.

Существующую функцию можно удалить с помощью сброшен -f имя-функции. Список функций может
быть полученным с помощью набрана +f и определения функций могут быть перечислены с помощью набрана -f.
Ассоциация автозагрузка команда (которая является псевдонимом для набрана -фу) может использоваться для создания неопределенного
функции: когда выполняется неопределенная функция, оболочка ищет путь, указанный в
параметр FPATH для файла с тем же именем, что и функция, который, если найден, читается
и казнен. Если после выполнения файла обнаруживается, что указанная функция определена,
функция выполняется; в противном случае продолжается обычный поиск команд (т. е. оболочка
выполняет поиск в обычной встроенной таблице команд и в PATH). Обратите внимание: если команда не найдена
используя PATH, делается попытка автозагрузки функции с помощью FPATH (это недокументированный
особенность оригинальной оболочки Korn).

Функции могут иметь два атрибута: «трассировка» и «экспорт», которые можно установить с помощью набрана -фут
и набрана -FX, соответственно. Когда выполняется отслеживаемая функция, оболочка xtrace
опция включена на время действия функции. Атрибут «экспорт» функций
в настоящее время не используется. В исходной оболочке Korn экспортированные функции видны оболочке.
скрипты, которые выполняются.

Поскольку функции выполняются в текущей среде оболочки, параметры присваиваются.
внутренние функции видны после завершения функции. Если это не желаемый
эффект, набрана Команда может использоваться внутри функции для создания локального параметра. Примечание
что AT&T UNIX кш93 использует статическую область видимости (одна глобальная область видимости, одна локальная область видимости для каждой функции)
и разрешает локальные переменные только в функциях стиля Korn, тогда как МКШ использует динамическую область видимости
(вложенные области разной местности). Обратите внимание, что специальные параметры (например, $$, $!) не может быть
таким образом.

Статус выхода функции - это статус последней команды, выполненной в функции. А
функция может быть завершена немедленно, используя возвращают команда; это также может быть использовано
чтобы явно указать статус выхода.

Функции, определенные с помощью функция зарезервированные слова обрабатываются по-разному в следующих
пути из функций, определенных с помощью () обозначения:

· Параметр $ 0 устанавливается равным имени функции (функции в стиле Борна оставляют $ 0
нетронутые).

· Назначения параметров, предшествующие вызовам функций, не хранятся в среде оболочки.
(выполнение функций в стиле Борна сохранит назначения).

· OPTIND сохраняется / сбрасывается и восстанавливается при входе и выходе из функции, поэтому Getopts может быть
используется правильно как внутри, так и вне функции (функции в стиле Борна оставляют OPTIND
нетронутый, поэтому используя Getopts внутри функции мешает использованию Getopts Внешние параметры
функция).

· Варианты оболочки (набор -o) имеют локальную область видимости, т.е. изменения внутри функции сбрасываются при
его выход.

В будущем также могут быть добавлены следующие отличия:

· Во время выполнения функций будет использоваться отдельная среда прерывания / сигнала. Этот
будет означать, что ловушки, установленные внутри функции, не будут влиять на ловушки и сигналы оболочки
которые не игнорируются в оболочке (но могут быть захвачены), будут иметь свой эффект по умолчанию в
функция.

· Ловушка EXIT, если она установлена ​​в функции, будет выполнена после возврата из функции.

Command выполнение
После оценки аргументов командной строки, перенаправления и назначения параметров
определяется тип команды: специальная встроенная команда, функция, обычная встроенная команда или
имя файла для выполнения, найденного с помощью параметра PATH. Проверки производятся в
выше порядка. Специальные встроенные команды отличаются от других тем, что PATH
параметр не используется для их поиска, ошибка при их выполнении может вызвать не-
интерактивная оболочка для выхода и назначения параметров, указанные перед командой
сохраняются после завершения команды. Обычные встроенные команды отличаются только тем, что
параметр PATH не используется для их поиска.

Оригинальный КШ и POSIX несколько различаются тем, какие команды считаются специальными или
Regular.

Специальные встроенные утилиты POSIX:

., :, перерыв, продолжать, Eval, Exec, выход, экспорт, только для чтения, возвращают, набор, сдвиг, раз, ловушка,
сброшен

дополнительный МКШ команды, сохраняющие назначения:

встроенная, Глобальный, источник, набрана, ждать

Встроенные функции, не являющиеся особенными:

[, псевдоним, bg, связывать, кошка, cd, команду, эхо, ложный, fc, fg, Getopts, работе, убивать, позволять, Распечатать,
PWD, читать, реальный путь, переименовать, спать, приостановить, тестXNUMX, правда, ограничение, Umask, Unalias, откуда

После определения типа команды любые назначения параметров командной строки
выполняется и экспортируется на время выполнения команды.

Ниже описаны специальные и обычные встроенные команды и встроенные зарезервированные команды.
слова:

. файл [аргумент ...]
Это называется командой «точка». Выполните команды в файл в течении
среда. Файл ищется в каталогах PATH. Если аргументы
Учитывая, что позиционные параметры могут использоваться для доступа к ним, в то время как файл это бытие
выполнен. Если аргументы не указаны, позиционные параметры соответствуют параметрам
среда, в которой используется команда.

: [...]
Пустая команда. Статус выхода установлен на ноль.

[ выражение ]
Читать тестXNUMX.

псевдоним [-d | -t [-r] | + -x] [-p] [+] [имя [=ценностное ] ...]
Без аргументов, псевдоним перечисляет все псевдонимы. Для любого имени без значения
отображается существующий псевдоним. Любое имя со значением определяет псевдоним (см. Псевдонимов
выше).

При перечислении псевдонимов используется один из двух форматов. Обычно псевдонимы перечислены как
имя=ценностное , Где ценностное цитируется. Если перед вариантами был поставлен знак "+" или один единственный знак "+"
указывается в командной строке, только имя печатается.

Ассоциация -d опция вызывает список псевдонимов каталогов, которые используются в раскрытии тильды
или установить (см. Тильда расширение выше).

Если же линия индикатора -p используется опция, каждый псевдоним имеет префикс со строкой «псевдоним».

Ассоциация -t указывает, что отслеживаемые псевдонимы должны быть перечислены / установлены (значения указаны
в командной строке игнорируются для отслеживаемых псевдонимов). В -r опция указывает, что
все отслеживаемые псевдонимы должны быть сброшены.

Ассоциация -x наборы опций (+x очищает) атрибут экспорта псевдонима, или, если имена не указаны
задано, перечисляет псевдонимы с атрибутом экспорта (экспорт псевдонима не имеет
эффект).

bg [работа ...]
Возобновить указанные остановленные задания в фоновом режиме. Если вакансии не указаны, %+
предполагается. Видеть работа контроль ниже для получения дополнительной информации.

связывать [-l]
Перечислены текущие привязки. Если -l дан флаг, связывать вместо этого перечисляет
имена функций, к которым могут быть привязаны ключи. Видеть Emacs редактирование Режим для большего
Информация.

связывать [-m] string=[замена] ...
связывать string=[команда редактирования] ...
Указанная команда редактирования привязана к заданному string, который должен состоять из
управляющий символ, которому может предшествовать один из двух префиксных символов и
необязательно следует за символом тильды. Будущий вклад string приведет к тому,
команда редактирования, которая должна быть немедленно вызвана. Если -m установлен флаг, указанный
вход string впоследствии будет немедленно заменен данным замена string
который может содержать команды редактирования, но не другие макросы. Если постфикс тильды
задано, тильда в конце одного или двух префиксов, а управляющий символ игнорируется,
любой другой завершающий символ будет обработан позже.

Управляющие символы могут быть написаны с использованием обозначения курсора, т.е. ^ X представляет Ctrl-X.
Обратите внимание, что хотя поддерживаются только два префиксных символа (обычно ESC и ^ X),
могут поддерживаться некоторые многосимвольные последовательности.

Следующие привязки по умолчанию показывают, как клавиши со стрелками, клавиши home, end и delete
на BSD wsvt25, xterm-xfree86 или экранный терминал GNU привязаны (конечно, некоторые
escape-последовательности не будут работать так хорошо):

привязать '^ X' = префикс-2
привязать '^ [[' = префикс-2
привязать '^ XA' = up-history
привязать '^ XB' = вниз-история
привязать '^ XC' = вперед-символ
привязать '^ XD' = обратный символ
bind '^ X1 ~' = начало строки
bind '^ X7 ~' = начало строки
привязать '^ XH' = начало строки
bind '^ X4 ~' = конец строки
bind '^ X8 ~' = конец строки
привязать '^ XF' = конец строки
привязать '^ X3 ~' = delete-char-forward

перерыв [уровень]
Выйдите из уровень-й самый внутренний для, выберите, доили в то время как петля. уровень по умолчанию 1.

встроенная [--] команду [аргумент ...]
Выполнить встроенную команду команду.

кошка [-u] [файл ...]
Последовательное чтение файлов в порядке командной строки и запись их на стандартный вывод.
Если файл является одиночным тире ('-') или отсутствует, читается со стандартного ввода. Для прямого
встроенные вызовы, POSIX -u опция поддерживается как запретная. Для вызовов из оболочки, если
даются любые варианты, внешний кошка(1) утилита предпочтительнее встроенной.

cd [-L] [директория]
cd -P [-e] [директория]
ChDir [-eLP] [директория]
Установите рабочий каталог на директория. Если установлен параметр CDPATH, он перечисляет
путь поиска для каталога, содержащего директория. ПУСТОЙ путь означает текущий
каталог. Если директория находится в любом компоненте пути поиска CDPATH, кроме
NULL путь, имя нового рабочего каталога будет записано в стандартный вывод.
If директория отсутствует, используется домашний каталог HOME. Если директория '-', предыдущий
используется рабочий каталог (см. параметр OLDPWD).

Если же линия индикатора -L вариант (логический путь) или если физический опция не установлена ​​(см.
набор команда ниже), ссылки на '..' в директория относятся к пути, по которому
каталог. Если -P вариант (физический путь), или если физический опция
set, '..' относится к дереву каталогов файловой системы. PWD и OLDPWD
параметры обновляются, чтобы отразить текущий и старый рабочий каталог,
соответственно. Если -e опция установлена ​​для обхода физической файловой системы, а PWD
не может быть установлен, код выхода 1; больше 1, если произошла ошибка, 0
в противном случае.

cd [-eLP] старый new
ChDir [-eLP] старый new
Строка new заменяется старый в текущем каталоге, а оболочка
пытается перейти в новый каталог.

команду [-pVv] CMD [аргумент ...]
Если ни -v ни -V предоставляется вариант, CMD выполняется точно так же, как если бы команду было
не указано, за двумя исключениями: во-первых, CMD не может быть функцией оболочки; а также
во-вторых, специальные встроенные команды теряют свою специфику (т.е. перенаправление и
ошибки служебной программы не приводят к завершению работы оболочки, а назначения команд не выполняются.
постоянный).

Если же линия индикатора -p задана опция, вместо текущего значения используется путь поиска по умолчанию
PATH, фактическое значение которого зависит от системы.

Если же линия индикатора -v дается опция вместо выполнения CMD, информация о том, что будет
дано (и то же самое для аргумент ...). Для встроенных функций, функций и
ключевые слова, их имена просто печатаются; для псевдонимов команда, которая их определяет:
печатный; для утилит, найденных путем поиска параметра PATH, полный путь к
команда напечатана. Если команда не найдена (т. Е. Поиск пути не удался), ничего не найдено.
напечатаны и команду выходит с ненулевым статусом. В -V вариант похож на -v
вариант, за исключением того, что он более подробный.

продолжать [уровень]
Переход к началу уровень-й самый внутренний для, выберите, доили в то время как петля.
уровень по умолчанию 1.

эхо [-Эн] [аргумент ...]
Внимание! эта утилита не переносима; использовать встроенную оболочку Korn Распечатать .

Печатает свои аргументы (разделенные пробелами), за которыми следует новая строка, в соответствии со стандартом
выход. Новая строка подавляется, если какой-либо из аргументов содержит обратную косую черту.
последовательность '\ c'. Увидеть Распечатать команда ниже для списка других последовательностей обратной косой черты
которые признаны.

Параметры предоставлены для совместимости со сценариями оболочки BSD. В -n вариант
подавляет завершающую новую строку, -e включает интерпретацию обратной косой черты (без операции, поскольку
это обычно делается), и -E подавляет интерпретацию обратной косой черты.

Если же линия индикатора POSIX or sh установлена ​​опция или это прямой встроенный вызов, только первый
аргумент рассматривается как вариант, и только если он равен «-n». Обратная косая черта
интерпретация отключена.

Eval команду ...
Аргументы объединяются (с пробелами между ними) в одну строку
который оболочка затем анализирует и выполняет в текущей среде.

Exec [-a argv0] [-c] [команду [аргумент ...]]
Команда выполняется без разветвления, заменяя процесс оболочки. Это
в настоящее время абсолютное, т.е. Exec никогда не возвращается, даже если команду не найден. В
-a опция позволяет установить другое значение argv [0], и -c очищает окружающую среду
перед выполнением дочернего процесса, за исключением переменной _ и прямого присваивания.

Если не задана никакая команда, кроме перенаправления ввода-вывода, перенаправление ввода-вывода является постоянным.
и оболочка не заменяется. Любые открытые файловые дескрипторы больше 2
or дубликат(2) 'd таким образом недоступны для других выполняемых команд (т. Е.
команды, не встроенные в оболочку). Обратите внимание, что оболочка Борна отличается
здесь; он передает эти файловые дескрипторы.

выход [статус]
Оболочка завершает работу с указанным статусом выхода. Если статус не указано, выход
статус - текущее значение $? Параметр.

экспорт [-p] [параметр[=ценностное ]]
Устанавливает атрибут экспорта названных параметров. Экспортируемые параметры передаются в
среда для выполняемых команд. Если значения указаны, названные параметры
также присваиваются.

Если параметры не указаны, все параметры с установленным атрибутом экспорта
печатается по одному в строке; либо их имена, либо, если стоит '-' без дополнительной буквы
указаны пары имя = значение или -p, экспорт команды, подходящие для повторного входа.

ложный Команда, которая завершается с ненулевым статусом.

fc [-e редактор | -l [-n]] [-r] [первый [последний]]
первый и последний выберите команды из истории. Команды можно выбирать по истории
число (отрицательные числа идут назад от текущей, самой последней строки) или
строка, определяющая самую последнюю команду, начинающуюся с этой строки. В -l вариант
перечисляет команду в стандартном выводе и -n запрещает номера команд по умолчанию.
Ассоциация -r опция меняет порядок в списке. Без -l, выбранные команды
редактируется редактором, указанным в -e вариант, или если нет -e указано,
редактор, указанный параметром FCEDIT (если этот параметр не установлен, / bin / ed is
используется), а затем выполняется оболочкой.

fc -e - | -s [-g] [старый=new] [префикс]
Повторно выполнить выбранную команду (предыдущая команда по умолчанию) после выполнения
необязательная замена старый new. Если -g указан, все вхождения
старый заменены на new, Значение -e - и -s идентично: повторно выполнить
выбранную команду без вызова редактора. К этой команде обычно обращаются с помощью
предопределенные: псевдоним r = 'fc -e -'

fg [работа ...]
Возобновить указанные задания на переднем плане. Если вакансии не указаны, %+ is
предполагается. Видеть работа контроль ниже для получения дополнительной информации.

Getopts строка опций имя [аргумент ...]
Используется процедурами оболочки для анализа указанных аргументов (или позиционных параметров,
если аргументы не указаны) и проверить наличие законных вариантов. строка опций содержит
варианты букв, которые Getopts это признать. Если за буквой следует двоеточие,
Ожидается, что опция будет иметь аргумент. Варианты, не требующие аргументов, могут быть
сгруппированы в один аргумент. Если опция принимает аргумент, а опция
символ - это не последний символ аргумента, в котором он находится, оставшаяся часть
аргумент считается аргументом опции; в противном случае следующий аргумент
аргумент варианта.

Каждый раз Getopts вызывается, он помещает следующую опцию в параметр оболочки имя
и индекс аргумента, который будет обработан следующим вызовом Getopts в
параметр оболочки OPTIND. Если опция была представлена ​​со знаком '+', опция помещалась
in имя имеет префикс "+". Когда опция требует аргумента, Getopts мест
это в параметре оболочки OPTARG.

Когда встречается недопустимая опция или отсутствующий аргумент опции, появляется вопросительный знак.
или двоеточие ставится в имя (указывает на недопустимую опцию или отсутствующий аргумент,
соответственно), а OPTARG устанавливается на символ опции, вызвавший проблему.
Кроме того, если строка опций не начинается с двоеточия, в
имя, OPTARG не задан, и сообщение об ошибке выводится на печать стандартной ошибки.

Когда встречается конец вариантов, Getopts выходы с ненулевым выходом
положение дел. Параметры заканчиваются первым (не аргументом параметра) аргументом, который не начинается
с '-' или когда встречается аргумент '-'.

Синтаксический анализ параметров можно сбросить, установив OPTIND в 1 (это выполняется автоматически.
всякий раз, когда вызывается оболочка или процедура оболочки).

Предупреждение: изменение значения параметра оболочки OPTIND на значение, отличное от 1, или
анализ различных наборов аргументов без сброса OPTIND может привести к неожиданному
результаты.

Глобальный ...
Читать набрана.

хэш [-r] [имя ...]
Без аргументов перечислены все пути хешированных исполняемых команд. В -r вариант
вызывает удаление всех хешированных команд из хеш-таблицы. Каждый имя ищется
как если бы это было имя команды и добавлено в хеш-таблицу, если это исполняемый файл
команда.

работе [-лнп] [работа ...]
Вывести информацию об указанной работе (ах); если вакансии не указаны, все вакансии
отображаются. В -n опция приводит к отображению информации только для заданий, которые
изменили состояние с момента последнего уведомления. Если -l используется опция,
Также указан идентификатор процесса для каждого процесса в задании. В -p опция вызывает только
группа обработки каждого задания, которое нужно напечатать. Видеть работа контроль ниже для формата работа
и отображаемое задание.

убивать [-s Signame | -сигнум | -Signame] { работа | ПИД-регулятор | пгрп } ...
Отправьте указанный сигнал указанным заданиям, идентификаторам процессов или группам процессов. Если
сигнал не указан, отправляется сигнал TERM. Если задание указано, сигнал
отправляется в группу процессов задания. Видеть работа контроль ниже для формата работа.

убивать -l [статус выхода ...]
Выведите имя сигнала, соответствующее статус выхода. Если аргументы не указаны,
печатается список всех сигналов, их номера и их краткое описание.

позволять [выражение ...]
Каждое выражение оценивается (см. Арифметический выражения выше). Если все выражения
успешно оценены, статус выхода равен 0 (1), если последнее вычисленное выражение
ненулевым (нулевым). Если ошибка возникает во время синтаксического анализа или оценки
выражение, статус выхода больше 1. Поскольку выражения могут быть
цитируется, (( выраж )) является синтаксическим сахаром для {let 'выраж'; }.

позволять] Внутренний псевдоним для позволять.

MKNOD [-m Режим] имя b|c основной небольшая
MKNOD [-m Режим] имя p
Создайте специальный файл устройства. Тип файла может быть b (устройство блочного типа), c
(устройство символьного типа) или p (именованный канал, FIFO). Созданный файл может быть изменен
в соответствии с его Режим (через -m вариант), основной (основной номер устройства) и небольшая
(младший номер устройства). Обычно это не является частью МКШ; однако дистрибьюторы могут
добавили это как встроенное средство для повышения скорости.

Распечатать [-нпрсу[n] | -R [-en]] [аргумент ...]
Распечатать выводит свои аргументы на стандартный вывод, разделенные пробелами и заканчивающиеся
с новой строкой. В -n опция подавляет перевод строки. По умолчанию некоторые C экранируют
переведены. К ним относятся упомянутые в бэкслэш расширение выше, а также
как '\ c', что эквивалентно использованию -n вариант. Расширение обратной косой черты может быть
сдерживается -r вариант. -s опция печатает в файл истории вместо
стандартный вывод; в -u опция печатает в файловый дескриптор n (n по умолчанию 1, если
опущено); и -p опция печатает для совместного процесса (см. Совместные процессы выше).

Ассоциация -R опция используется для имитации до некоторой степени BSD эхо(1) команда, которая делает
не обрабатывать последовательности '\', если -e предоставляется вариант. Как и выше, -n вариант
подавляет завершающую новую строку.

Printf формат [Аргументы ...]
Форматированный вывод. Примерно так же, как Printf(1), утилита, за исключением того, что она использует
тоже самое бэкслэш расширение и код ввода-вывода и не обрабатывает числа с плавающей запятой как
остаток МКШ. Внешняя утилита предпочтительнее встроенной. Это не
обычно часть МКШ; однако дистрибьюторы могли добавить это как встроенный в
Спидхак. Не использовать в новом коде.

PWD [-ЛП]
Распечатать текущий рабочий каталог. Если -L используется опция, или если физический
опция не установлена ​​(см. набор ниже), выводится логический путь (т. е.
путь, используемый для cd в текущий каталог). Если -P опция (физический путь) используется
или если физический установлен, путь определяется из файловой системы (
следующие каталоги '..' в корневой каталог) печатается.

читать [-A | -a] [-d x] [-N z | -n z] [-p | -u[n]] [-t n] [-рс] [p ...]
Читает строку ввода, разделяет ввод на поля с помощью параметра IFS (см.
подмена выше) и присваивает каждому полю указанные параметры p. Если нет
параметры указаны, параметр REPLY используется для сохранения результата. С
-A и -a options, допускается только один параметр или только один параметр. Если есть еще
параметры, чем поля, дополнительные параметры устанавливаются в пустую строку или 0; если
полей больше, чем параметров, последнему параметру присваивается оставшийся
поля (включая разделители слов).

Возможны следующие варианты:

-A Сохраните результат в параметре p (или ОТВЕТИТЬ) как массив слов.

-a Сохраните результат без разделения на слова в параметр p (или ОТВЕТИТЬ) как
массив символов (широкие символы, если utf8-режим опция введена в действие,
октеты в противном случае); по умолчанию кодовые точки кодируются как десятичные числа.

-d x Используйте первый байт x, NUL, если пусто, вместо символа новой строки ASCII
как разделитель входной строки.

-N z Вместо того, чтобы читать до конца строки, читайте точно z байтов. Если EOF или
истекает тайм-аут, возвращается частичное чтение со статусом выхода 1.

-n z Вместо того, чтобы читать до конца строки, прочитайте до z байтов, но возвращаются, как только
считываются любые байты, например, с медленного терминального устройства, или если EOF или тайм-аут
имеет место.

-p Прочтите из текущего активного совместного процесса, см. Совместные процессы выше для подробностей
на этом.

-u[n] Прочитать из файлового дескриптора n (по умолчанию 0, т. е. стандартный ввод). В
Аргумент должен следовать сразу за символом опции.

-t n Прервать чтение после n секунд (указывается как положительное десятичное значение с
необязательная дробная часть). Статус выхода читать равно 1, если тайм-аут
произошло, но частичные чтения все еще могут быть возвращены.

-r Обычно обратная косая черта ASCII ускользает от специального значения символа
следующий символ и удаляется из ввода; читать не останавливается, когда
встречает последовательность обратной косой черты-новой строки и не сохраняет эту новую строку в
результат. Эта опция включает необработанный режим, в котором обратная косая черта не
обработанный.

-s Строка ввода сохраняется в истории.

Если вход является терминалом, оба -N и -n опции устанавливают его в необработанный режим; Oни
читать весь файл, если -1 передается как z аргумент.

К первому параметру может быть добавлен вопросительный знак и строка, в которой
если строка используется в качестве подсказки (печатается до стандартной ошибки перед вводом
читать), если ввод терминал(4) (например, читать nfoo? 'номер of фос: ').

Если ввод не читается или истекло время ожидания, читать выходит с ненулевым статусом.

Еще один удобный набор приемов: если читать выполняется в цикле, например в то время как читать фу; do ...;
сделанный тогда начальные пробелы будут удалены (IFS) и обработаны обратные косые черты. Ты
может захотеть использовать в то время как IFS = читать -r фу; do ...; сделанный для безупречного ввода / вывода. Сходным образом,
при использовании -a вариант, использование -r вариант может быть благоразумным; то же самое относится
для:

найти . -type f -print0 | & \
в то время как IFS = читать -d '' -pr имя_файла; делать
print -r - "найдено <$ {filename #. /}>"
сделанный

Внутренний цикл будет выполняться в подоболочке, и изменения переменных не могут быть
распространяется, если выполняется в конвейере:

бар | баз | пока читал foo; делать ...; сделано

Вместо этого используйте совместные процессы:

бар | баз | &
при чтении -p foo; делать ...; сделано
exec 3> & p; exec 3> & -

только для чтения [-p] [параметр [=ценностное ] ...]
Устанавливает атрибут только для чтения названных параметров. Если указаны значения,
параметры устанавливаются для них перед установкой атрибута. После того, как параметр сделан
только для чтения, его нельзя сбросить, и его значение нельзя изменить.

Если параметры не указаны, имена всех параметров доступны только для чтения.
атрибуты печатаются по одному в строке, если только -p используется опция, и в этом случае
только для чтения команды, определяющие все параметры только для чтения, включая их значения, являются
распечатаны.

реальный путь [--] имя
Печатает разрешенный абсолютный путь, соответствующий имя. Если имя заканчивается
косая черта ('/'), также проверяется наличие и каталог;
в противном случае, реальный путь возвращает 0, если путь существует или может быть создан
немедленно, т.е. все компоненты, кроме последнего, существуют и являются каталогами.

переименовать [--] от в
Переименовывает файл от в в. Оба должны быть полными путями и находиться на одном устройстве.
Эта встроенная функция предназначена для аварийных ситуаций, когда / bin / mv становится непригодным для использования, и
напрямую звонит переименовать(2).

возвращают [статус]
Возврат из функции или . скрипт со статусом выхода статус. Если нет статус дано,
используется статус выхода последней выполненной команды. Если используется вне функции
or . скрипт имеет тот же эффект, что и выход, Обратите внимание, что МКШ относится как к профилю, так и
ENV файлы как . скрипты, в то время как исходная оболочка Korn обрабатывает профили только как .
скриптов.

набор [+ -abCefhiklmnprsUuvXx] [+ -о вариант] [+ -А имя] [--] [аргумент ...]
Ассоциация набор команда может использоваться для установки (-) или очистить (+) параметры оболочки, установите позиционный
параметры или задать параметр массива. Параметры можно изменить с помощью + -о вариант
синтаксис, где вариант - длинное имя параметра или с помощью +-письмо синтаксис,
в котором письмо - это однобуквенное имя опции (не все варианты имеют одну букву
имя). В следующей таблице перечислены как буквы параметров (если они существуют), так и длинные имена.
вместе с описанием того, что делает опция:

-A имя
Устанавливает элементы параметра массива имя в аргумент ... If -A Используется,
массив сначала сбрасывается (т.е. очищается); если +A используются первые N элементов.
(где N - количество аргументов); остальные остались нетронутыми.

Альтернативный синтаксис команды набор -A Foo -- a b c который совместим с
GNU колотить а также поддерживается AT&T UNIX кш93 это: foo = (a b в); foo + = (d e)

-a | -o аллэкспорт
Все новые параметры создаются с помощью атрибута экспорта.

-b | -o уведомлять
Печатать сообщения с уведомлением о задании асинхронно, а не непосредственно перед
незамедлительный. Используется, только если включено управление заданиями (-m).

-C | -o никчемный
Предотвратить> перенаправление перезаписи существующих файлов. Вместо этого> | должны быть использованы
для принудительной перезаписи. Обратите внимание, что это небезопасно использовать для создания
временные файлы или файлы блокировки из-за TOCTOU в проверке, позволяющей перенаправить
выход в / DEV / нуль или файлы других устройств даже в никчемный Режим.

-e | -o ошибочный выход
Выйти (после выполнения ловушки ERR), как только возникнет ошибка или команда
завершается неудачно (т.е. выходит с ненулевым статусом). Это не относится к командам
чей статус выхода явно проверяется конструкцией оболочки, такой как if, до,
в то время какили ! заявления. Для && или ||, только статус последней команды
испытания.

-f | -o ноглоб
Не расширяйте шаблоны имен файлов.

-h | -o треколл
Создавать отслеживаемые псевдонимы для всех выполняемых команд (см. Псевдонимов выше). Включено
по умолчанию для неинтерактивных оболочек.

-i | -o интерактивный
Оболочка - это интерактивная оболочка. Этот параметр можно использовать только тогда, когда оболочка
вызывается. См. Выше описание того, что это означает.

-k | -o ключевое слово
Назначение параметров распознается в любом месте команды.

-l | -o Войти
Оболочка - это оболочка входа в систему. Этот параметр можно использовать только в том случае, если оболочка
вызван. См. Выше описание того, что это означает.

-m | -o монитор
Включить управление заданиями (по умолчанию для интерактивных оболочек).

-n | -o поехес
Не выполняйте никаких команд. Полезно для проверки синтаксиса скриптов (игнорируется
если интерактивный).

-p | -o привилегированный
Оболочка - это привилегированная оболочка. Устанавливается автоматически, если оболочка
запускается, реальный UID или GID не соответствует действующему UID (EUID) или GID
(ЭГИД) соответственно. См. Выше описание того, что это означает.

-r | -o ограниченный
Оболочка - это оболочка с ограничениями. Этот параметр можно использовать только в том случае, если оболочка
вызван. См. Выше описание того, что это означает.

-s | -o STDIN
Если используется при вызове оболочки, команды читаются со стандартного ввода. Установленный
автоматически, если оболочка вызывается без аргументов.

После появления -s используется с набор команда заставляет указанные аргументы быть
сортируются перед назначением их позиционным параметрам (или массиву имя, Если
-A используется).

-U | -o utf8-режим
Включите поддержку UTF-8 в Emacs редактирование Режим и внутренняя обработка строк
функции. По умолчанию этот флаг отключен, но его можно включить, установив его.
в командной строке оболочки; автоматически включается для интерактивных оболочек, если
запрашивается во время компиляции, ваша система поддерживает установить локаль(LC_CTYPE, "") и расширение
опционально nl_langinfo(НАБОР КОДОВ) или среда LC_ALL, LC_CTYPE или LANG
переменные, и по крайней мере одна из них возвращает что-то, что соответствует «UTF-8» или
«Utf8» без учета регистра; для прямых встроенных вызовов в зависимости от
вышеупомянутые переменные среды; или для stdin или скриптов, если вход
начинается с метки порядка байтов UTF-8.

В ближайшем будущем будет реализовано отслеживание локали, а это значит, что набор - + U is
изменяется при изменении одной из переменных среды, связанных с локалью POSIX.

-u | -o существительное
Ссылка на неустановленный параметр, отличный от «$ @» или «$ *», рассматривается как
ошибка, если не используется один из модификаторов '-', '+' или '='.

-v | -o подробный
Записывать ввод оболочки в стандартную ошибку при чтении.

-X | -o маркдиры
Помечайте каталоги завершающим символом '/' во время генерации имени файла.

-x | -o xtrace
Печатайте деревья команд при их выполнении, которым предшествует значение PS4.

-o Bgnice
Фоновые задания выполняются с более низким приоритетом.

-o скобкарасширять
Включить раскрытие фигурных скобок (также известное как чередование). По умолчанию это включено. Если
отключено, тильда после знака равенства отключена как побочный эффект.

-o Emacs
Включить редактирование командной строки, подобное BRL emacs (только в интерактивных оболочках); видеть Emacs
редактирование Режим.

-o gmacs
Включите редактирование командной строки, подобное gmacs (только в интерактивных оболочках). В настоящее время
идентично редактированию emacs, за исключением того, что символы транспонирования (^ T) действуют незначительно
по-другому.

-o игнорирование
Оболочка не будет (легко) завершиться, когда будет прочитан конец файла; выход должен быть использован.
Чтобы избежать бесконечных циклов, оболочка завершит работу, если EOF будет прочитан 13 раз подряд.

-o наследование-xtrace
Не сбрасывать -o xtrace при входе в функции. По умолчанию это включено.

-o поЬир
Не завершайте запущенные задания сигналом SIGHUP при выходе из оболочки входа.
В настоящее время установлено по умолчанию, но это может измениться в будущем для совместимости
с AT&T UNIX КШ, который не имеет этой опции, но отправляет SIGHUP
сигнал.

-o нолог
Нет эффекта. В исходной оболочке Korn это предотвращает использование определений функций.
сохраняется в файле истории.

-o физический
Вызывает cd и PWD команды для использования «физического» (то есть файловой системы) '..'
каталоги вместо «логических» каталогов (т.е. оболочка обрабатывает '..', что
позволяет пользователю не обращать внимания на символические ссылки на каталоги). Очистить
дефолт. Обратите внимание, что установка этого параметра не влияет на текущее значение параметра
Параметр PWD; только cd команда изменяет PWD. Увидеть cd и PWD команды
выше для более подробной информации.

-o трубка
Сделайте статус выхода конвейера (перед логическим дополнением)
крайний правый ненулевой уровень ошибки или ноль, если все команды завершились с нулем.

-o POSIX
Ведите себя ближе к стандартам (см. POSIX Режим для подробностей). Автоматически
включен, если базовое имя вызова оболочки начинается с «sh» и это
Функция автоопределения встроена в (не в MirBSD). В качестве побочного эффекта установка
этот флаг выключается скобкарасширять режим, который можно снова включить вручную, и
sh режим (если оба не включены одновременно).

-o sh
Включите / Бен / ш (kludge) режим (см. SH Режим). Автоматически включается, если
базовое имя вызова оболочки начинается с «sh», и эта функция автоопределения
скомпилирован в (не в MirBSD). В качестве побочного эффекта установка этого флажка отключает
скобкарасширять режим, который можно снова включить вручную, и POSIX режим (если
оба активны одновременно).

-o vi
Включите vi(1) -подобное редактирование в командной строке (только интерактивные оболочки). Видеть Vi
редактирование Режим для документации и ограничений.

-o vi-esccomplete
При редактировании командной строки vi выполните завершение имени файла и команды при escape (^ [)
вводится в командном режиме.

-o vi-tabcomplete
При редактировании командной строки vi выполните завершение имени команды и имени файла, когда табуляция (^ I)
введен в режиме вставки. Это значение по умолчанию.

-o вирав
Нет эффекта. В исходной оболочке Korn, если только вирав была установлена ​​команда vi -
линейный режим позволит терминал(4) драйвер выполняет работу до тех пор, пока не будет введен ESC (^ [).
МКШ всегда в режиме viraw.

Эти параметры также можно использовать при вызове оболочки. Текущий набор
параметры (с однобуквенными именами) можно найти в параметре '$ -'. набор -o
ни одно имя опции не перечислит все опции и независимо от того, включена она или выключена; набор +o будете
напечатайте длинные имена всех включенных в данный момент опций. В будущей версии набор
+o будет вести себя в соответствии с POSIX и печатать команды для восстановления текущих параметров
.

Остальные аргументы, если таковые имеются, являются позиционными параметрами и назначаются по порядку для
позиционные параметры (например, $ 1, $ 2 и т. д.). Если варианты заканчиваются на '-' и там
нет оставшихся аргументов, все позиционные параметры очищаются. Если нет вариантов или
приводятся аргументы, печатаются значения всех имен. По неизвестным историческим
причины, единственный вариант '-' обрабатывается специально - он очищает как -v и -x
настройки.

сдвиг [номер]
Позиционные параметры номер+ 1, номер+2 и т. Д. Переименованы в «1», «2» и т. Д.
номер по умолчанию 1.

спать секунды
Приостанавливает исполнение как минимум на секунды задано как положительное десятичное значение
с необязательной дробной частью. Доставка сигнала может продолжить выполнение раньше.

источник файл [аргумент ...]
Подобно . («Точка»), за исключением того, что текущий рабочий каталог добавляется к поиску.
путь (GNU колотить расширение).

приостановить
Останавливает оболочку, как если бы она получила от терминала символ приостановки. это
невозможно приостановить оболочку входа в систему, если родительский процесс не является членом
тот же терминальный сеанс, но является членом другой группы процессов. Как генерал
правило, если оболочка была запущена другой оболочкой или через su(1), его можно приостановить.

тестXNUMX выражение
[ выражение ]
тестXNUMX оценивает выражение и возвращает нулевой статус, если истина, 1, если ложь, или больше
чем 1, если произошла ошибка. Обычно используется как команда условия для if и
в то время как заявления. Символические ссылки используются для всех файл выражения кроме -h и
-L.

Доступны следующие основные выражения:

-a файл файл существует.

-b файл файл представляет собой блочное специальное устройство.

-c файл файл - специальное устройство персонажа.

-d файл файл это каталог.

-e файл файл существует.

-f файл файл это обычный файл.

-G файл файлГруппа - это эффективный идентификатор группы оболочки.

-g файл файлВ режиме установлен бит setgid.

-H файл файл - это контекстно-зависимый каталог (используется только в HP-UX).

-h файл файл символическая ссылка.

-k файл файлрежим имеет липкий(8) бит установлен.

-L файл файл символическая ссылка.

-O файл файлВладелец - это эффективный идентификатор пользователя оболочки.

-o вариант Оболочка вариант установлен (см. набор команда выше для списка
параметры). В качестве нестандартного расширения, если опция начинается с
'!', проверка отменяется; тест всегда терпит неудачу, если вариант
не существует (поэтому [-o foo -o -o! foo] возвращает истину тогда и только тогда
если вариант Foo существуют). То же самое можно сделать с помощью [-o? Foo]
как в AT&T UNIX кш93. вариант также может быть коротким флагом во главе с
либо '-', или '+' (без логического отрицания), например, '-x' или '+ x'
вместо xtrace.

-p файл файл это именованный канал (FIFO).

-r файл файл существует и доступен для чтения.

-S файл файл - это Юникс(4) -доменный сокет.

-s файл файл не пусто.

-t fd Дескриптор файла fd - это терминал(4) устройство.

-u файл файлВ режиме установлен бит setuid.

-w файл файл существует и доступен для записи.

-x файл файл существует и является исполняемым.

file1 -нт file2 file1 новее чем file2 or file1 существует и file2 не.

file1 -от file2 file1 старше чем file2 or file2 существует и file1 не.

file1 -эф file2 file1 это тот же файл, что и file2.

string string имеет ненулевую длину.

-n string string не пусто.

-z string string пусто.

string = string Струны равны.

string == string Струны равны.

string > string Первый строковый операнд больше второго строкового операнда.

string < string Первый строковый операнд меньше второго строкового операнда.

string != string Струны не равны.

номер -экв номер Числа сравниваются равными.

номер Ne- номер Цифры сравнивать не равны.

номер -гэ номер Числа сравниваются больше или равно.

номер -GT номер Числа сравниваются больше чем.

номер -Le номер Числа сравниваются меньше или равно.

номер -lt номер Цифры меньше чем сравнивать.

Вышеупомянутые основные выражения, в которых унарные операторы имеют приоритет над двоичными
операторы, могут быть объединены со следующими операторами (перечислены в порядке возрастания
приоритета):

expr -o expr Логическое ИЛИ.
expr -a expr Логическое И.
! expr Логическое НЕ.
(expr) Группировка.

Обратите внимание, что число на самом деле может быть арифметическим выражением, например математическим
термин или имя целочисленной переменной:

х = 1; ["x" -eq 1] оценивается как истина

Обратите внимание, что применяются некоторые специальные правила (любезно предоставленные POSIX), если количество
аргументы тестXNUMX или внутри скобок [ ... ] меньше пяти: если впереди '!'
аргументы могут быть удалены так, что останется только от одного до трех аргументов, тогда
выполнено пониженное сравнение; (спасибо XSI) круглые скобки \( ... \) нижний четырех- и
формы с тремя аргументами в формы с двумя и одним аргументом соответственно; три аргумента
формы в конечном итоге предпочитают бинарные операции, за которыми следуют отрицание и скобки
понижение; формы с двумя и четырьмя аргументами предпочитают отрицание, за которым следует скобка; в
форма с одним аргументом всегда подразумевает -n.

Внимание: Распространенной ошибкой является использование «if [$ foo = bar]», которое не работает, если параметр «foo»
имеет значение NULL или не установлено, если в нем есть встроенные пробелы (например, октеты IFS), или если это унарный
оператор вроде '!' или '-n'. Вместо этого используйте такие тесты, как "if [x" $ foo "= x" bar "]" или
оператор двойных скобок «if [[$ foo = bar]]» или, чтобы избежать сопоставления с образцом (см. [[
выше): «if [[$ foo =" $ bar "]]»

Ассоциация [[ ... ]] construct не только безопаснее в использовании, но и зачастую быстрее.

время [-p] [трубопровод]
Если трубопровод дано время, использованное для выполнения конвейера. Если нет
дается конвейер, затем пользовательское и системное время, используемое самой оболочкой, и все
сообщаются команды, которые выполнялись с момента запуска. Сообщенное время
реальное время (время, прошедшее от начала до конца), время процессора пользователя (время, затраченное
работает в пользовательском режиме) и системное время ЦП (время, потраченное на работу в режиме ядра).
Время сообщается со стандартной ошибкой; формат вывода:

0m0.00s реальный 0m0.00s пользователь 0m0.00s система

Если же линия индикатора -p вариант дает вывод немного длиннее:

настоящий 0.00
пользователь 0.00
система 0.00

Ошибочно указывать -p вариант, если трубопровод это простая команда.

Простые перенаправления стандартной ошибки не влияют на вывод время команда:

$ time sleep 1 2> файл
$ {время сна 1; } 2> файл

Время для первой команды не попадает в «файл», а время для второй команды -.

раз Вывести общее пользовательское и системное время, используемое оболочкой и процессами.
что оболочка запустилась, которая вышла. Формат вывода:

0 мин. 0.00 сек. 0 мин. 0.00 сек.
0 мин. 0.00 сек. 0 мин. 0.00 сек.

ловушка n [сигнал ...]
Если первый операнд является десятичным целым числом без знака, это сбрасывает все указанные сигналы.
к действию по умолчанию, т. е. то же, что и вызов ловушка со знаком минус ('-') как
обработчик, за которым следуют аргументы (n [сигнал ...]), все из которых рассматриваются как
сигналов.

ловушка [обработчик сигнал ...]
Устанавливает обработчик прерывания, который должен выполняться, когда любой из указанных сигналS,
получено. обработчик либо пустая строка, указывающая, что сигналы должны быть
игнорируется, знак минус ('-'), указывающий, что действие по умолчанию должно быть выполнено для
сигналы (см. сигнал(3)), или строка, содержащая команды оболочки, которые должны быть выполнены в
первая возможность (то есть, когда текущая команда завершится, или перед печатью
следующее приглашение PS1) после получения одного из сигналов. сигнал это имя
сигнал (например, PIPE или ALRM) или номер сигнала (см. убивать -l команду
выше).

Есть два специальных сигнала: EXIT (также известный как 0), который выполняется, когда
оболочка собирается завершить работу, и ERR, которая выполняется после возникновения ошибки; ошибка
что-то, что заставит оболочку выйти, если набор -e or набор -o ошибочный выход вариант
Были установлены. Обработчики EXIT выполняются в среде последнего выполненного
команда.

Обратите внимание, что для неинтерактивных оболочек обработчик прерывания не может быть изменен для сигналов.
которые игнорировались при запуске оболочки.

Без аргументов текущее состояние ловушек, установленных после оболочки
начато отображается как серия ловушка команды. Обратите внимание, что вывод ловушка не могу
быть переданным по конвейеру другому процессу (артефакт того факта, что ловушки очищены
при создании подпроцессов).

Ловушка DEBUG исходной оболочки Korn и обработка прерываний ERR и EXIT в
функции еще не реализованы.

правда Команда, которая завершается с нулевым значением.

Глобальный [[+ -alpnrtUux] [-L[n]] [-R[n]] [-Z[n]] [-i[n]] | -f [-смокинг]] [имя [=ценностное ] ...]
набрана [[+ -alpnrtUux] [-ЛРЗ[n]] [-i[n]] | -f [-смокинг]] [имя [=ценностное ] ...]
Отображение или установка атрибутов параметров. Без имя аргументы, атрибуты параметров
отображаются; если никакие параметры не используются, текущие атрибуты всех параметров
напечатано как набрана команды; если указан вариант (или '-' без буквы варианта),
выводятся все параметры и их значения с указанными атрибутами; если варианты
обозначаются знаком «+», значения параметров не печатаются.

If имя заданы аргументы, установлены атрибуты названных параметров (-) Или
очищено (+). При желании могут быть указаны значения параметров. Для имя[*],
изменение влияет на весь массив, и значение не может быть указано.

If набрана используется внутри функции, любые указанные параметры локализованы. Этот
не выполняется идентичным в остальном Глобальный. Внимание: Это означает, что МКШ 's Глобальный
команда не эквивалентно другим языкам программирования, поскольку не позволяет
функция, вызываемая из другой функции для доступа к параметру в действительно глобальной области,
но только предотвращает помещение доступного в локальную область.

После появления -f используется, набрана оперирует атрибутами функций. Как и в случае с
параметры, если нет имя приведены аргументы, перечислены функции с их значениями
(т. е. определения), если опции не представлены с '+', и в этом случае только
сообщаются имена функций.

-a Атрибут индексированного массива.

-f Функциональный режим. Отображать или устанавливать функции и их атрибуты вместо
параметры.

-i[n] Целочисленный атрибут. n указывает основание для использования при отображении целого числа
(если не указано иное, используется база, указанная в первом присвоении).
Параметрам с этим атрибутом могут быть присвоены значения, содержащие арифметические операции.
выражения.

-L[n] Атрибут выравнивания по левому краю. n определяет ширину поля. Если n не указано,
текущая ширина параметра (или ширина его первого присвоенного значения)
используется. Начальные пробелы (и нули, если используются с -Z вариант)
раздели. При необходимости значения либо усекаются, либо заполняются пробелами, чтобы они соответствовали
ширина поля.

-l Атрибут нижнего регистра. Все символы верхнего регистра в значениях преобразуются в
нижний регистр. (В исходной оболочке Korn этот параметр означал «длинное целое число»
при использовании с -i опция).

-n Создайте связанную переменную (ссылка на имя): любой доступ к переменной имя
получит доступ к переменной ценностное в текущей области (это отличается от
AT&T UNIX кш93!) вместо. Также отличается от AT&T UNIX кш93 является то, что
ценностное лениво оценивается в то время имя доступен. Это может быть использовано
функции для доступа к переменным, имена которых передаются как параметры, вместо этого
использования Eval.

-p Печать завершена набрана команды, которые можно использовать для воссоздания атрибутов
и значения параметров.

-R[n] Выровнять по правому краю атрибут. n определяет ширину поля. Если n Не
указана текущая ширина параметра (или ширина его первого
присвоенное значение). Завершающие пробелы удаляются. Если необходимо,
значения либо удаляются из ведущих символов, либо заполняются пробелами, чтобы сделать их
соответствовать ширине поля.

-r Атрибут только для чтения. Параметры с этим атрибутом не могут быть присвоены
или отключено. Как только этот атрибут установлен, его нельзя отключить.

-t Атрибут тега. Не имеет значения для оболочки; предоставлен для использования в приложении.

Для функций -t это атрибут трассировки. Когда работает со следом
атрибута выполняются, xtrace (-x) опция оболочки временно отключена
о.

-U Беззнаковый целочисленный атрибут. Целые числа печатаются как беззнаковые значения (объединить
с -i вариант). Этого параметра нет в исходной оболочке Korn.

-u Атрибут верхнего регистра. Все символы нижнего регистра в значениях преобразуются в
верхний регистр. (В исходной оболочке Korn этот параметр означал «беззнаковый
целое число »при использовании с -i вариант, который означал, что заглавные буквы будут
никогда не должен использоваться для баз больше 10. См. -U опция).

Для функций -u - неопределенный атрибут. Видеть функции выше для
последствия этого.

-x Атрибут экспорта. Параметры (или функции) помещаются в окружение
любые выполненные команды. Экспортированные функции еще не реализованы.

-Z[n] Атрибут нулевого заполнения. Если не в сочетании с -L, это то же самое, что и -R, Кроме
нулевое заполнение используется вместо заполнения пробела. Для целых чисел число
вместо основы набита.

Если какой-либо из -i, -L, -l, -R, -U, -uили -Z параметры изменены, все остальные из этого
set очищаются, если они также не указаны в той же командной строке.

ограничение [-aBCcdefHilMmnOPpqrSsTtVvw] [ценностное ]
Отображение или установка пределов процесса. Если никакие параметры не используются, ограничение на размер файла (-f) является
предполагается. ценностное , если указано, может быть арифметическим выражением или словом
«Безлимитный». Ограничения влияют на оболочку и любые процессы, созданные оболочкой.
после наложения лимита. Обратите внимание, что в некоторых системах могут быть запрещены ограничения.
увеличивается после их установки. Также обратите внимание, что типы доступных лимитов являются системными.
зависимые - некоторые системы имеют только -f предел.

-a Показать все лимиты; пока не -H используются мягкие ограничения.

-B n Установите размер буфера сокета на n кибибайт.

-C n Установите количество кэшируемых потоков равным n.

-c n Установить ограничение на размер n блоки по размеру дампа ядра.

-d n Установить ограничение на размер n кибибайт от размера области данных.

-e n Установите максимальное удобство n.

-f n Установить ограничение на размер n блокирует файлы, написанные оболочкой и ее дочерними элементами
процессы (можно читать файлы любого размера).

-H Установите только жесткое ограничение (по умолчанию устанавливаются как жесткие, так и мягкие ограничения).

-i n Установите количество ожидающих сигналов на n.

-l n Установить предел n кибибайт от объема заблокированной (подключенной) физической памяти.

-M n Установите заблокированную память AIO на n кибибайт.

-m n Установить предел n kibibytes от объема используемой физической памяти.

-n n Установить предел n файловые дескрипторы, которые можно открыть сразу.

-O n Установите количество операций AIO на n.

-P n Ограничьте количество потоков на процесс до n.

-p n Установить предел n процессы, которые могут запускаться пользователем в любой момент.

-q n Ограничьте размер очередей сообщений POSIX до n байт.

-r n Установите для максимального приоритета реального времени значение n.

-S Установите только мягкий предел (по умолчанию устанавливаются как жесткие, так и мягкие ограничения).

-s n Установить ограничение на размер n кибибайт от размера области стека.

-T n Установить ограничение по времени n реальные секунды, которые будут использоваться каждым процессом.

-t n Установить ограничение по времени n Секунды ЦП, проведенные в пользовательском режиме, будут использоваться каждым
процесс.

-V n Установите количество мониторов vnode на Haiku на n.

-v n Установить предел n кибибайт от объема виртуальной памяти (адресного пространства)
используемый.

-w n Установить предел n kibibytes от количества используемого пространства подкачки.

Так далеко как ограничение Это касается блока размером 512 байт.

Umask [-S] [маска]
Отобразить или установить маску создания прав доступа к файлу или umask (см. Umask(2)). Если -S
опция используется, отображаемая или установленная маска является символической; в противном случае это восьмеричное
номер.

Символические маски похожи на те, которые используются CHMOD(1). При использовании они описывают, что
могут быть доступны разрешения (в отличие от восьмеричных масок, в которых установленный бит означает
соответствующий бит должен быть очищен). Например, «ug = rwx, o =» устанавливает маску так
файлы не будут доступны для чтения, записи или выполнения «другими», что эквивалентно
(в большинстве систем) до восьмеричной маски «007».

Unalias [-добавить] [имя ...]
Псевдонимы для данных имен удаляются. Если -a опция используется, все псевдонимы
удалены. Если -t or -d используются опции, указанные операции выполняются
на отслеживаемых псевдонимах или псевдонимах каталогов соответственно.

сброшен [-фв] параметр ...
Отмените установку названных параметров (-v, значение по умолчанию) или функции (-f). С участием параметр[*],
атрибуты сохраняются, сбрасываются только значения.

Статус выхода не равен нулю, если какой-либо из параметров имеет атрибут только для чтения.
установить, в противном случае - ноль.

ждать [работа ...]
Дождитесь завершения указанного задания. Статус выхода ждать это последний
указанная работа; если последнее задание прервано сигналом, статус выхода равен 128 +
номер сигнала (см. убивать -l статус выхода выше); если последнее указанное задание не может
быть найденным (потому что он никогда не существовал или уже завершился), статус выхода ждать
составляет 127. См. работа контроль ниже для формата работа. ждать вернется, если сигнал
для которого установлено прерывание, или если сигнал SIGHUP, SIGINT или SIGQUIT
получен.

Если вакансии не указаны, ждать ожидает, пока все запущенные в данный момент задания (если есть)
финиш и выход с нулевым статусом. Если мониторинг заданий включен, завершение
состояние заданий выводится на печать (это не тот случай, когда задания указаны явно).

откуда [-ПВ] [имя ...]
Без -v вариант, он такой же, как команду -v, кроме псевдонимов не печатаются
как псевдоним команды. С -v вариант, он точно такой же, как команду -V. В
в любом случае -p отличается: путь поиска не изменяется в откуда, Но
поиск ограничен путем.

работа контроль
Управление заданиями относится к способности оболочки отслеживать и контролировать задания, которые являются процессами или
группы процессов, созданные для команд или конвейеров. Как минимум, снаряд отслеживает
состояния существующих в настоящее время фоновых (т. е. асинхронных) заданий; это
информация может быть отображена с помощью работе команды. Если управление заданиями полностью включено
(с помощью набор -m or набор -o монитор), как и для интерактивных оболочек, процессы задания
помещаются в отдельную группу процессов. Задания переднего плана можно остановить, набрав команду приостановить.
символ из терминала (обычно ^ Z), задания могут быть перезапущены либо на переднем плане, либо
фон с использованием fg и bg команды, и состояние терминала сохраняется или восстанавливается
при остановке или перезапуске задания переднего плана соответственно.

Обратите внимание, что только команды, которые создают процессы (например, асинхронные команды, подоболочка
команды, а также не встроенные, нефункциональные команды) могут быть остановлены; такие команды, как читать не могу
быть.

Когда работа создается, ей присваивается номер работы. Для интерактивных оболочек это число
печатается внутри «[..]», за которым следуют идентификаторы процессов в задании, когда
выполняется асинхронная команда. Работа может быть упомянута в bg, fg, работе, убиватькачества ждать
команд либо по идентификатору последнего процесса в конвейере команд (как хранится в
домен $! параметр) или поставив перед номером задания знак процента ('%'). Другой процент
Последовательности также могут использоваться для обозначения заданий:

% + | %% | % Самое последнее остановленное задание или, если остановленных заданий нет, самое старое
запущенная работа.

% - Работа, которая будет %+ работа, если последней не существовало.

%n Работа с номером вакансии n.

%?string Задание с его командой, содержащей строку string (ошибка возникает, если
совпадают несколько вакансий).

%string Задание с его командой, начинающейся со строки string (ошибка возникает, если
совпадают несколько вакансий).

Когда задание меняет состояние (например, завершается фоновое задание или задание переднего плана останавливается),
оболочка выводит следующую информацию о состоянии:

[номер] флажок статус команду

где...

номер - номер задания;

флажок является символом "+" или "-", если задание является %+ or %- работа соответственно или космос
если нет ни того, ни другого;

статус указывает текущее состояние задания и может быть:

Выполнено [номер]
Работа завершена. номер это статус завершения задания, которое не указывается.
если статус нулевой.

Выполняется Задание не остановлено и не завершено (обратите внимание, что выполнение не
обязательно означает использование процессорного времени - процесс может быть заблокирован
жду какого-то события).

Остановлен [сигнал]
Работа была остановлена ​​указанным сигнал (если сигнал не поступает,
задание было остановлено SIGTSTP).

описание сигнала [«Ядро сброшено»]
Задание было прервано сигналом (например, ошибка памяти, зависание); использовать убивать -l
для списка описаний сигналов. Сообщение «core dumped» указывает
процесс создал файл ядра.

команду это команда, которая создала процесс. Если в
задание, у каждого процесса будет строка, показывающая его команду и, возможно, его статус, Если
он отличается от статуса предыдущего процесса.

Когда делается попытка выйти из оболочки, когда есть задания в остановленном состоянии,
оболочка предупреждает пользователя, что есть остановленные задания, и не завершает работу. Если еще одна попытка
немедленно вызывается для выхода из оболочки, остановленным заданиям отправляется сигнал SIGHUP, а оболочка
выходы. Аналогично, если поЬир опция не установлена, и при попытке
выполняется для выхода из оболочки входа в систему, оболочка предупреждает пользователя и не завершает работу. Если другой
немедленно предпринимается попытка выйти из оболочки, выполняющимся заданиям отправляется сигнал SIGHUP и
оболочка выходит.

POSIX Режим
входящий набор -o POSIX режим вызовет МКШ вести себя еще более совместимо с POSIX в местах
где по умолчанию или мнения расходятся. Обратите внимание, что МКШ по-прежнему будет работать с беззнаковым
32-битная арифметика; использовать лкш если арифметика на хосте длинной тип данных, в комплекте с ISO C
Неопределенное поведение обязательны; обратитесь к лкш(1) страница руководства для подробностей. Большинство других
исторический, AT&T UNIX КШ-совместимые или категоричные различия могут быть отключены с помощью этого
Режим; эти:

· GNU колотить Перенаправление ввода / вывода &>файл больше не поддерживается.

· Дескрипторы файлов, созданные перенаправлением ввода-вывода, наследуются дочерними процессами.

· Числа с нулем в начале интерпретируются как восьмеричные.

· Ассоциация эхо builtin не интерпретирует обратную косую черту и поддерживает только точную опцию «-n».

· ... (список неполный и может измениться для R53)

SH Режим
Режим совместимости; предназначен для использования с устаревшими скриптами, которые нелегко исправить; в
изменения заключаются в следующем:

· GNU колотить Перенаправление ввода / вывода &>файл больше не поддерживается.

· Дескрипторы файлов, созданные перенаправлением ввода-вывода, наследуются дочерними процессами.

· Ассоциация эхо builtin не интерпретирует обратную косую черту и поддерживает только точную опцию «-n».

· ... (список неполный и может измениться для R53)

Интерактивное вход линия редактирование
Оболочка поддерживает три режима чтения командных строк из терминал(4) в интерактивном
сессия, контролируемая Emacs, gmacsкачества vi параметры (максимум один из них может быть установлен на
однажды). По умолчанию Emacs. Режимы редактирования можно установить явно с помощью набор встроенный.
Если ни один из этих параметров не включен, оболочка просто читает строки, используя обычный терминал(4)
Водитель. Если Emacs or gmacs установлен, оболочка позволяет редактировать файл как emacs
команда; аналогично, если vi установлена ​​опция, оболочка позволяет редактировать
команда. Эти режимы подробно описаны в следующих разделах.

В этих режимах редактирования, если линия длиннее ширины экрана (см. КОЛОНКИ
параметр), в последнем столбце отображается символ '>', '+' или '<', указывающий, что
есть еще символы после, до и после или перед текущей позицией,
соответственно. При необходимости строка прокручивается по горизонтали.

Завершенные строки помещаются в историю, если они не начинаются с октета IFS или IFS
пробел или такие же, как в предыдущей строке.

Emacs редактирование Режим
Когда Emacs установлен, интерактивное редактирование строки ввода включено. Предупреждение: этот режим
немного отличается от режима emacs в исходной оболочке Korn. В этом режиме различные
команды редактирования (обычно привязанные к одному или нескольким управляющим символам) вызывают немедленные действия
не дожидаясь перевода строки. Несколько команд редактирования привязаны к конкретному элементу управления
символы при вызове оболочки; эти привязки можно изменить с помощью связывать команда.

Ниже приводится список доступных команд редактирования. Каждое описание начинается с
название команды с двоеточием; [n] (если команда может иметь префикс
считать); и любые ключи, к которым команда привязана по умолчанию, написанные с использованием обозначения курсора, например
символ ASCII ESC записывается как ^ [. В этих управляющих последовательностях регистр не учитывается.
Префикс счетчика для команды вводится с использованием последовательности ^ [n, Где n представляет собой последовательность из 1
или более цифр. Если не указано иное, если счетчик опущен, по умолчанию он равен 1.

Обратите внимание, что имена команд редактирования используются только с связывать команда. Кроме того, многие
Команды редактирования полезны только на терминалах с видимым курсором. Привязки по умолчанию
были выбраны так, чтобы они напоминали соответствующие привязки клавиш Emacs. Пользователь терминал(4) персонажи
(например, ERASE) привязаны к разумным заменам и отменяют привязки по умолчанию.

прервать: ^ C, ^ G
Отменить текущую команду, очистить линейный буфер и установить состояние выхода на
прервано.

автоматическая вставка: [n]
Просто заставляет символ отображаться как буквальный ввод. Самые обычные персонажи
связаны с этим.

обратный символ: [n] ^ B, ^ XD, ANSI-CurLeft, PC-CurLeft
Перемещает курсор назад n символы.

обратное слово: [n] ^ [b, ANSI-Ctrl-CurLeft, ANSI-Alt-CurLeft
Перемещает курсор назад к началу слова; слова состоят из
буквенно-цифровые символы, подчеркивание ('_') и знак доллара ('$').

начало истории: ^ [
Переход к началу истории.

начало строки: ^ A, ANSI-Home, PC-Home
Перемещает курсор в начало редактируемой строки ввода.

заглавные-слова: [n] ^ [C, ^ [c
Верхний регистр первого символа в следующем n слова, оставив курсор за концом
последнего слова.

чистый экран: ^ [^ L
Печать настраиваемой последовательности времени компиляции для очистки экрана и возврата курсора в исходное положение,
перерисовывает всю подсказку и текущую редактируемую строку ввода. Последовательность по умолчанию
работает практически со всеми стандартными терминалами.

комментарий: ^ [#
Если текущая строка не начинается с символа комментария, он добавляется в
начало строки и строка вводится (как если бы была нажата клавиша возврата);
в противном случае существующие символы комментария удаляются, и курсор помещается в
начало строки.

завершено: ^ [^ [
Автоматически выполняет столько, сколько уникально для имени команды или имени файла
содержащий курсор. Если вся оставшаяся команда или имя файла уникальны,
пробел печатается после его завершения, если это не имя каталога, и в этом случае
'/' добавляется. Если нет команды или имени файла с текущим частичным словом
в качестве префикса выводится символ звонка (обычно вызывающий звуковой сигнал).

полная команда: ^ X ^ [
Автоматически завершает столько, сколько уникально для имени команды, имеющей частичное
слово до курсора в качестве префикса, как в полный команда выше.

полный-файл: ^ [^ X
Автоматически завершает столько, сколько уникально для имени файла, имеющего частичное
слово до курсора в качестве префикса, как в полный команда, описанная выше.

полный список: ^ I, ^ [=
Завершите как можно больше текущего слова и перечислите возможные
доработки для него. Если возможно только одно завершение, сопоставьте, как в полный
команда выше. Обратите внимание, что ^ I обычно создается клавишей TAB (табулятор).

удалить символ назад: [n] СТЕРЕТЬ, ^ ?, ^ H
Удаления n символы перед курсором.

удалить символ вперед: [n] ANSI-Del, PC-Del
Удаления n символы после курсора.

удалить-слово-назад: [n] WERASE, ^ [^ ?, ^ [^ H, ^ [h
Удаления n слова перед курсором.

удалить-слово-вперед: [n] ^ [d
Удаляет символы после курсора до конца n слова.

вниз-история: [n] ^ N, ^ XB, ANSI-CurDown, PC-CurDown
Прокручивает буфер истории вперед n линии (позже). Каждая строка ввода изначально
начинается сразу после последней записи в буфере истории, поэтому история Не
полезно, пока либо история поиска, история поиска вверх or ап-история было
выполнено.

слово в нижнем регистре: [n] ^ [L, ^ [l
Нижний регистр следующий n слова.

строка редактирования: [n] ^ Xe
Редактировать строку n или текущая строка, если не указана, интерактивно. Настоящий
выполняемая команда fc -e $ {ВИЗУАЛЬНО: - $ {РЕДАКТОР: -vi}} n.

конец истории: ^ [>
Переход к концу истории.

конец строки: ^ E, ANSI-End, PC-End
Перемещает курсор в конец строки ввода.

eot: ^ _
Действует как конец файла; это полезно, потому что ввод в режиме редактирования отключает нормальный
канонизация ввода терминала.

удалить или удалить: [n] ^ D
Выступает в качестве СРВ если один на линии; в противном случае действует как удалить символ вперед.

ошибка: (не привязан)
Ошибка (позвоните в звонок).

обменный пункт и марка: ^ X ^ X
Помещает курсор на место метки и устанавливает метку на место, где находился курсор.

развернуть файл: ^ [*
Добавляет '*' к текущему слову и заменяет слово результатом
выполнение подстановки файлов по слову. Если ни один файл не соответствует шаблону, колокольчик
звено.

вперед-символ: [n] ^ F, ^ XC, ANSI-CurRight, PC-CurRight
Перемещает курсор вперед n символы.

форвард-слово: [n] ^ [f, ANSI-Ctrl-CurRight, ANSI-Alt-CurRight
Перемещает курсор вперед до конца nое слово.

goto-история: [n] ^ [г
Переход к номеру истории n.

линия убийства: УБИТЬ
Удаляет всю строку ввода.

область уничтожения: ^ W
Удаляет ввод между курсором и меткой.

убить-к-эол: [n] ^ K
Удаляет ввод от курсора до конца строки, если n не указано;
в противном случае удаляет символы между курсором и столбцом n.

список: ^ [?
Печатает отсортированный, столбчатый список имен команд или имен файлов (если есть), которые могут
завершить часть слова, содержащего курсор. К именам каталогов добавлен символ '/'
им.

список-команда: ^ X?
Печатает отсортированный в столбцах список имен команд (если есть), которые могут завершить
частичное слово, содержащее курсор.

список-файл: ^ X ^ Y
Печатает отсортированный список имен файлов (если есть) в столбцах, которые могут заполнить
частичное слово, содержащее курсор. Индикаторы типа файла добавляются, как описано
под список выше.

новая строка: ^ J, ^ M
Вызывает обработку текущей строки ввода оболочкой. Текущий курсор
позиция может быть где угодно на линии.

новая строка и следующий: ^ O
Заставляет текущую строку ввода обрабатывать оболочку, а следующую строку из
история становится текущей строкой. Это полезно только после того, как ап-история,
история поиска or история поиска вверх.

нет операции: ВЫЙТИ
Это ничего не делает.

префикс-1: ^ [
Вводит 2-символьную последовательность команд.

префикс-2: ^ X, ^ [[, ^ [O
Вводит 2-символьную последовательность команд.

предыдущее-слово: [n] ^ [., ^ [_
Последнее слово или, если указано, n-е слово (с нуля) предыдущего (при повторном
выполнение, предпоследняя, ​​третья и т. д.) команда вставляется в курсор. Использование
эта команда редактирования уничтожает метку.

цитата: ^^, ^ V
Следующий символ воспринимается буквально, а не как команда редактирования.

перерисовать: ^ L
Повторно печатает последнюю строку строки приглашения и текущую строку ввода на новом
линии.

поиск-символ-назад: [n] ^ [^]
Поиск назад в текущей строке для nое появление следующего символа
набрал.

поиск-символ-вперед: [n] ^]
Искать вперед в текущей строке nое появление следующего символа
набрал.

история поиска: ^ R
Войдите в режим инкрементального поиска. Список внутренней истории просматривается в обратном направлении для поиска
команды, соответствующие вводу. Начальный "^" в строке поиска привязывает
поиск. Клавиша выхода выйдет из режима поиска. Другие команды, включая последовательности
побега как префикс-1 следует префикс-1 or префикс-2 ключ будет выполнен после
выход из режима поиска. В преждевременное прекращение Команда (^ G) восстановит строку ввода до
поиск начался. Последовательный история поиска команды продолжают поиск назад к
следующее предыдущее вхождение шаблона. Буфер истории сохраняет только
конечное количество строк; самые старые отбрасываются по мере необходимости.

история поиска вверх: ANSI-PgUp, PC-PgUp
Обратный поиск в буфере истории команд, начало которых совпадает с
часть строки ввода перед курсором. При использовании в пустой строке это имеет
тот же эффект, что и ап-история.

поиск-история-вниз: ANSI-PgDn, PC-PgDn
Искать в буфере истории команды, начало которых совпадает с
часть строки ввода перед курсором. При использовании в пустой строке это имеет
тот же эффект, что и история. Это полезно только после того, как ап-история,
история поиска or история поиска вверх.

set-mark-command: ^ [
Установите отметку в позиции курсора.

транспонировать символы: ^ T
Если в конце строки, или если gmacs опция установлена, это меняет два
предыдущие персонажи; в противном случае он меняет местами предыдущие и текущие символы и
перемещает курсор на один символ вправо.

история: [n] ^ P, ^ XA, ANSI-CurUp, PC-CurUp
Прокручивает буфер истории назад n линии (ранее).

заглавное-слово: [n] ^ [U, ^ [u
Следующее заглавными буквами n слова.

версия: ^ [^ V
Показать версию МКШ. Текущий буфер редактирования восстанавливается, как только клавиша
нажата. Восстанавливающее нажатие клавиши обрабатывается, если это не пробел.

дергать: ^ Y
Вставляет последнюю уничтоженную текстовую строку в текущую позицию курсора.

янк-поп: ^ [у
Сразу после дергать, заменяет вставленную текстовую строку следующей предыдущей
убитая текстовая строка.

Vi редактирование Режим
Примечание: Режим редактирования командной строки vi отключен, но все еще работает. Это 8-битный чистый
но специально не поддерживает UTF-8 или MBCS.

Редактор командной строки vi в МКШ имеет в основном те же команды, что и vi(1) редактор с
следующие исключения:

· Вы начинаете в режиме вставки.

· Существуют команды завершения имени файла и команды: =, \, *, ^ X, ^ E, ^ F и,
по выбору, и .

· Ассоциация _ команда другая (в МКШ, это последний аргумент команды; в vi(1) идет
в начало текущей строки).

· Ассоциация / и G команды движутся в направлении, противоположном направлению j команда.

· Команды, которые не имеют смысла в однострочном редакторе, недоступны (например, screen
команды движения и ex(1) -стиль толстой кишки (:) команды).

Подобно vi(1), есть два режима: режим «вставка» и режим «команд». В режиме вставки большинство
символы просто помещаются в буфер в текущей позиции курсора по мере их ввода;
однако некоторые символы обрабатываются особым образом. В частности, следующие символы:
взято из текущего терминал(4) настройки (см. стти(1)) и имеют свое обычное значение (нормальные значения
в скобках): kill (^ U), erase (^?), werase (^ W), eof (^ D), intr (^ C) и выйти (^ \).
В дополнение к вышесказанному, следующие символы также обрабатываются специально во вставке
Режим:

^ E Перечисление команд и имен файлов (см. Ниже).

^ F Завершение команды и имени файла (см. Ниже). Если использовать дважды подряд, список
отображаются возможные доработки; при третьем использовании завершение отменяется.

^ H Удаляет предыдущий символ.

^ J | ^ M Конец строки. Текущая строка читается, анализируется и выполняется оболочкой.

^ V Буквальный следующий. Следующий набранный символ специально не обрабатывается (может использоваться для
вставьте описанные здесь символы).

^ X Команда и расширение имени файла (см. Ниже).

Переводит редактор в командный режим (см. Ниже).

Необязательное имя файла и завершение команды (см. ^F выше), включенный с набор -o
vi-tabcomplete.

В командном режиме каждый символ интерпретируется как команда. Персонажи, которые этого не делают
соответствуют командам, являются недопустимыми комбинациями команд или являются командами, которые не могут быть
проведено, все вызывают гудки. В следующих описаниях команд [n] указывает
команда может иметь префикс в виде числа (например, 10l перемещает вправо на 10 знаков); если нет числа
используется префикс, n предполагается равным 1, если не указано иное. Термин «текущий
позиция »относится к положению между курсором и символом, предшествующим курсору.
«Слово» - это последовательность букв, цифр и символов подчеркивания или последовательность не-
буквы, цифры, символы подчеркивания и пробелы (например, «ab2 * & ^» содержит два
слова), а «большое слово» - это последовательность непробельных символов.

Особый МКШ Команды vi:

Следующие команды отсутствуют в обычном редакторе файлов vi или отличаются от него:

[n] _ Вставьте пробел, за которым следует nгромкое слово из последней команды в истории
в текущей позиции и войдите в режим вставки; если n не указано, последний
слово вставлено.

# Вставить символ комментария ('#') в начало текущей строки и вернуть
строка к оболочке (эквивалентна Я # ^ J).

[n] g Нравится G, кроме случаев, когда n не указан, переходит к самому последнему из запомненных
линии.

[n] v Редактировать строку n используя vi(1) редактор; если n не указан, текущая строка
отредактировал. Фактическая выполняемая команда fc -e $ {ВИЗУАЛЬНО: - $ {РЕДАКТОР: -vi}} n.

* и ^ X Команда или расширение имени файла применяется к текущему большому слову (с
добавляется '*', если слово не содержит символов подстановки файлов) - большое слово
заменены полученными словами. Если текущее громкое слово стоит первым на
строки или следует за одним из символов ';', '|', '&', '(' или ')', и не
содержать косую черту ('/'), тогда расширение команды выполняется; в противном случае имя файла
расширение сделано. Расширение команд сопоставит громкое слово со всеми
псевдонимы, функции и встроенные команды, а также любые найденные исполняемые файлы
путем поиска в каталогах в параметре PATH. Соответствие расширения имени файла
громкое слово против файлов в текущем каталоге. После расширения
курсор помещается сразу после последнего слова, и редактор находится в режиме вставки.

[n] \, [n] ^ F, [n] , и [n]
Завершение имени команды / файла. Замените текущее громкое слово самым длинным
уникальное совпадение, полученное после выполнения команды и расширения имени файла.
распознается только в том случае, если vi-tabcomplete опция установлена, а только
признал, если vi-esccomplete опция установлена ​​(см. набор -o). если n указано,
домен nвыбрано возможное завершение (как указано в имени команды / файла
команда перечисления).

= и ^ E Перечисление имени команды / файла. Перечислите все команды или файлы, соответствующие
нынешнее громкое слово.

^ V Показать версию МКШ. Текущий буфер редактирования восстанавливается, как только
нажата клавиша. Восстановление нажатия клавиши игнорируется.

@c Макро-расширение. Выполните команды, указанные в псевдониме c.

Команды внутристрочного перемещения:

[n]рука [n] ^ H
Двигай влево n символы.

[n]земля [n]
Двигаться вправо n символы.

0 Перейти в столбец 0.

^ Перейти к первому непробельному символу.

[n] | Перейти в столбец n.

$ Перейти к последнему символу.

[n] b Вернуться n слова.

[n] B Вернуться назад n большие слова.

[n] e Перейти к концу слова, n раз.

[n] E Перейти к концу большого слова, n раз.

[n] w Двигаться вперед n слова.

[n] W Двигаться вперед n большие слова.

% Найти совпадение. Редактор ожидает ближайшую круглую скобку, скобку или скобку.
и затем перемещает курсор в соответствующую круглую скобку, скобку или фигурную скобку.

[n]fc Двигайтесь вперед к nое появление символа c.

[n]Fc Вернуться к nое появление символа c.

[n]tc Двигайтесь вперед, прямо перед nое появление символа c.

[n]Tc Двигайтесь назад, непосредственно перед nое появление символа c.

[n]; Повторяет последний f, F, tили T команда.

[n], Повторяет последнее f, F, tили T команда, но движется в противоположном направлении.

Команды межстрочного перемещения:

[n] j, [n] + и [n] ^ N
Перейдите в n-я следующая строчка в истории.

[n] k, [n]-, и [n] ^ P
Перейдите в n-я предыдущая строка в истории.

[n] G Перейти к строке n в истории; если n не указано, номер первого
запомненная линия используется.

[n] g Нравится G, кроме случаев, когда n не указан, переходит к последней запомненной строке.

[n]/string
Поиск назад в истории для n-я строка, содержащая string; если string
начинается с '^', остаток строки должен появиться в начале истории
линия для соответствия.

[n]?string
Такой же как /, за исключением того, что он просматривает историю вперед.

[n] n Искать nое вхождение последней поисковой строки; направление поиска
совпадает с последним поиском.

[n] N Искать nое вхождение последней поисковой строки; направление поиска
противоположен последнему поиску.

ANSI-CurUp, ПК-PgUp
Возьмите символы из начала строки в текущую позицию курсора как
строку поиска и выполните поиск в истории в обратном направлении для строк, начинающихся с этого
нить; сохранить позицию курсора. Это работает только в режиме вставки и сохраняет его
включен.

Редактировать команды

[n] a Добавить текст n раз; переходит в режим вставки сразу после текущей позиции. В
добавление реплицируется только при повторном входе в командный режим, т.е. используется.

[n] То же, что и a, за исключением того, что он добавляется в конец строки.

[n] i Вставить текст n раз; переходит в режим вставки в текущей позиции. Вставка
реплицируется только при повторном входе в командный режим, т.е. используется.

[n] Я такой же, как i, за исключением того, что вставка выполняется непосредственно перед первым непустым символом.

[n] s Заменить следующий n символы (т.е. удалить символы и перейти во вставку
Режим).

S Заменить всю строку. Все символы от первого непустого символа до конца
строки удаляются и входит в режим вставки.

[n]cход-команда
Переход с текущей позиции на позицию, полученную в результате n ход-командаs (т.е.
удалить указанный регион и перейти в режим вставки); если ход-команда is c, Линия
начиная с первого непустого символа изменяется.

C Переход с текущей позиции на конец строки (т.е. удаление до конца строки).
строку и перейти в режим вставки).

[n] x Удалить следующий n символы.

[n] X Удалить предыдущее n символы.

D Удалить до конца строки.

[n]dход-команда
Удалить из текущей позиции в позицию, полученную в результате n ход-командаs;
ход-команда это команда движения (см. выше) или d, и в этом случае текущая строка
удален.

[n]rc Замените следующий n персонажи с характером c.

[n] R Заменить. Войдите в режим вставки, но перезаписывайте существующие символы вместо вставки
перед существующими персонажами. Замена повторяется n раз.

[n] ~ Измените регистр следующего n символы.

[n]yход-команда
Возврат из текущей позиции в позицию, полученную в результате n ход-командас в
резервное копирование буфера; если ход-команда is y, дергается вся линия.

Доставить Доставить от текущей позиции до конца строки.

[n] p Вставить содержимое буфера восстановления сразу после текущей позиции, n раз.

[n] P То же, что и p, за исключением того, что буфер вставляется в текущую позицию.

Разные команды vi

^ J и ^ M
Текущая строка считывается, анализируется и выполняется оболочкой.

^ L и ^ R
Перерисуйте текущую строку.

[n]. Повторить последнюю команду редактирования n раз.

u Отменить последнюю команду редактирования.

U Отменить все изменения, внесенные в текущую строку.

ПК Home, End, Del и клавиши курсора
Они перемещаются должным образом как в режиме вставки, так и в командном режиме.

ВВЕДЕНИ и выход
Терминальные символы прерывания и выхода вызывают удаление текущей строки и
новое приглашение для печати.

Используйте mksh-static онлайн с помощью сервисов onworks.net


Бесплатные серверы и рабочие станции

Скачать приложения для Windows и Linux

  • 1
    глубокая очистка
    глубокая очистка
    Скрипт Kotlin, уничтожающий все сборки
    кеши из проектов Gradle/Android.
    Полезно, когда Gradle или IDE позволяют
    вниз. Скрипт протестирован на
    макОС, но...
    Скачать глубокую очистку
  • 2
    Подключаемый модуль Eclipse Checkstyle
    Подключаемый модуль Eclipse Checkstyle
    Плагин Eclipse Checkstyle
    интегрирует Java-код Checkstyle
    аудитор в Eclipse IDE. В
    плагин предоставляет обратную связь в режиме реального времени
    пользователь о нарушении ...
    Скачать подключаемый модуль Eclipse Checkstyle
  • 3
    АстрОрзПлеер
    АстрОрзПлеер
    AstrOrz Player — бесплатный медиаплеер.
    программное обеспечение, частично основанное на WMP и VLC.
    плеер выполнен в минималистическом стиле, с
    более десяти цветов темы, а также может
    б ...
    Скачать AstrOrzPlayer
  • 4
    Movistartv
    Movistartv
    Kodi Movistar+ TV является дополнением для XBMC/
    Коди, разрешенный к использованию
    decodificador de los servicios IPTV де
    Movistar интегрирован в один город
    медиацентры ма...
    Скачать киностартв
  • 5
    Code :: Blocks
    Code :: Blocks
    Code::Blocks — это бесплатная программа с открытым исходным кодом,
    кроссплатформенная C, C++ и Fortran IDE
    построен для удовлетворения самых взыскательных потребностей
    своих пользователей. Он разработан, чтобы быть очень
    расширенный ...
    Код загрузки::Блоки
  • 6
    среди
    среди
    Среда или расширенный интерфейс Minecraft
    и отслеживание данных / структуры - это инструмент для
    отобразить обзор Minecraft
    мир, фактически не создавая его. Это
    жестяная банка ...
    Скачать Среди
  • Больше »

Команды Linux

Ad