Spec-Zone.ru › Bash

Встроенные команды оболочки Bourne

Следующие встроенные команды оболочки унаследованы от оболочки Bourne. Эти команды реализованы в соответствии со стандартом POSIX.

: (a colon)
: [arguments]

Ничего не делать, кроме расширения arguments и выполнения перенаправлений. Код возвращает ноль.

. (a period)
. filename [arguments]

Чтение и выполнение команд из аргумента filename в текущем контексте оболочки. Если filename не содержит слеш, используется переменная PATH, чтобы найти filename, но filename не обязательно должен быть исполняемым. Когда Bash не находится в режиме POSIX, он ищет в текущем каталоге, если filename не найден в $PATH. Если предоставлены какие-либо аргументы arguments, они становятся позиционными параметрами при выполнении filename. В противном случае позиционные параметры остаются неизменными. Если включен параметр -T, . наследует любой ловушку для DEBUG; если нет, любая строка ловушки DEBUG сохраняется и восстанавливается вокруг вызова ., и . отключает ловушку DEBUG во время выполнения. Если -T не установлен, и исходный файл изменяет ловушку DEBUG, новое значение сохраняется, когда . завершается. Код возвращает код выхода последней выполненной команды или ноль, если команды не выполнялись. Если filename не найден или не может быть прочитан, код возвращает ненулевое значение. Эта встроенная команда эквивалентна source.

break
break [n]

Выход из цикла for, while, until, или select. Если указано n, завершается n-й вложенный цикл. n должно быть больше или равно 1. Код возвращает ноль, если n не больше или равно 1.

cd
cd [-L|[-P [-e]] [-@] [directory]

Изменение текущей рабочей директории на directory. Если directory не указан, используется значение переменной HOME оболочки. Если переменная оболочки CDPATH существует, она используется как путь поиска: каждый каталог в CDPATH ищется на directory, с альтернативными именами каталогов в CDPATH разделенными двоеточием (‘:’). Если directory начинается со слеша, CDPATH не используется.

Параметр -P означает, что символьные ссылки не будут следовать: символьные ссылки разрешаются во время перемещения cd по directory и перед обработкой экземпляра ‘..’ в directory.

По умолчанию, или когда указан параметр -L, символьные ссылки в directory разрешаются после того, как cd обработает экземпляр ‘..’ в directory.

Если в directory появляется ‘..’, оно обрабатывается путем удаления непосредственно предшествующей компоненты пути, возвращаясь к слешу или началу directory.

Если с -P указан параметр -e и текущая рабочая директория не может быть успешно определена после успешного изменения директории, cd вернет неуспешный код.

На системах, которые поддерживают это, параметр -@ отображает расширенные атрибуты, связанные с файлом, как каталог.

Если directory — ‘-’, она преобразуется в $OLDPWD перед попыткой изменения директории.

Если используется непустое имя каталога из CDPATH, или если ‘-’ является первым аргументом, и изменение каталога успешно, абсолютный путь к новой рабочей директории записывается в стандартный вывод.

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

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

continue
continue [n]

Продолжить следующую итерацию вложенного цикла for, while, until, или select. Если указано n, выполнение n-го вложенного цикла возобновляется. n должно быть больше или равно 1. Код возвращает ноль, если n не больше или равно 1.

eval
eval [arguments]

Аргументы объединяются в одну команду, которая затем читается и выполняется, а ее код возврата используется как код возврата eval. Если нет аргументов или только пустые аргументы, код возврата равен нулю.

exec
exec [-cl] [-a name] [command [arguments]]

Если указана command, она заменяет оболочку без создания нового процесса. Если указан параметр -l, оболочка помещает тире в начале нулевого аргумента, переданного command. Это то, что делает программа login. Параметр -c приводит к выполнению command с пустой средой. Если указан параметр -a, оболочка передает name как нулевой аргумент command. Если command по какой-то причине не может быть выполнена, интерактивная оболочка завершается неудачно, если включен параметр оболочки execfail. В противном случае она возвращает код ошибки. Интерактивная оболочка возвращает код ошибки, если файл не может быть выполнен. Подоболочка завершается безусловно, если exec завершается неудачно. Если command не указана, перенаправления могут быть использованы для изменения текущей среды оболочки. Если нет ошибок перенаправления, код возврата равен нулю; в противном случае код возврата ненулевой.

exit
exit [n]

Завершение работы оболочки с возвратом кода n родительской оболочке. Если n опущено, код возврата — это код последней выполненной команды. Любая ловушка для EXIT выполняется перед завершением работы оболочки.

export
export [-fn] [-p] [name[=value]]

Помечает каждый name для передачи дочерним процессам в среде. Если указан параметр -f, name ссылается на функции оболочки; в противном случае имена ссылаются на переменные оболочки. Параметр -n означает, что каждый name больше не отмечается для экспорта. Если name не указан или указан параметр -p, отображается список имён всех экспортированных переменных. Параметр -p отображает вывод в формате, который может быть повторно использован как вход. Если за именем переменной следует =value, значение переменной устанавливается в value.

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

getopts
getopts optstring name [arg …]

getopts используется скриптами оболочки для разбора позиционных параметров. optstring содержит символы параметров, которые будут распознаны; если символ следует за двоеточием, ожидается, что параметр будет иметь аргумент, который должен быть отделён от него пробелом. Двоеточие (‘:’) и знак вопроса (‘?’) не могут быть использованы как символы параметров. Каждый раз при вызове getopts помещает следующий параметр в переменную оболочки name, инициализирует name, если она не существует, и индекс следующего обрабатываемого аргумента в переменную OPTIND. OPTIND инициализируется значением 1 каждый раз при вызове оболочки или скрипта оболочки. Когда параметр требует аргумент, getopts помещает этот аргумент в переменную OPTARG. Оболочка не сбрасывает OPTIND автоматически; её нужно вручную сбрасывать между многократными вызовами getopts в рамках одного вызова оболочки, если необходимо использовать новый набор параметров.

Когда обнаруживается конец параметров, getopts завершается с кодом возврата больше нуля. OPTIND устанавливается в индекс первого непараметрического аргумента, и name устанавливается в ‘?’.

getopts обычно анализирует позиционные параметры, но если предоставлено больше аргументов в качестве значений arg, getopts анализирует их вместо этого.

getopts может сообщать об ошибках двумя способами. Если первый символ optstring является двоеточием, используется отчёт об ошибках без сообщений. В обычном режиме диагностические сообщения выводятся при обнаружении недопустимых параметров или отсутствующих аргументов параметров. Если переменная OPTERR установлена в 0, сообщения об ошибках не будут отображаться, даже если первый символ optstring не является двоеточием.

Если обнаружен недопустимый параметр, getopts помещает ‘?’ в name и, если не без сообщений, выводит сообщение об ошибке и сбрасывает OPTARG. Если getopts без сообщений, символ параметра, который был найден, помещается в OPTARG, и диагностическое сообщение не выводится.

Если требуемый аргумент не найден, и getopts не без сообщений, то знак вопроса (‘?’) помещается в name, OPTARG сбрасывается, и выводится диагностическое сообщение. Если getopts без сообщений, то двоеточие (‘:’) помещается в name и OPTARG устанавливается в найденный символ параметра.

hash
hash [-r] [-p filename] [-dt] [name]

Каждый раз при вызове hash запоминает полные пути команд, указанных как аргументы name, так что их не нужно искать при последующих вызовах. Команды находятся путём поиска в каталогах, указанных в $PATH. Любой ранее запомненный путь удаляется. Параметр -p отключает поиск по пути, и filename используется как местоположение name. Параметр -r заставляет оболочку забыть все запомненные местоположения. Параметр -d заставляет оболочку забыть запомненное местоположение каждого name. Если указан параметр -t, выводится полный путь, соответствующий каждому name. Если несколько аргументов name указаны с -t, name выводится перед запомненным полным путём. Параметр -l приводит к отображению вывода в формате, который может быть повторно использован как вход. Если не указано никаких аргументов, или если указан только -l, выводится информация о запомненных командах. Код возврата равен нулю, если name не найден или указан недопустимый параметр.

pwd
pwd [-LP]

Вывести абсолютный путь текущей рабочей директории. Если используется опция -P, путь не будет содержать символические ссылки. Если используется опция -L, путь может содержать символические ссылки. Код возврата равен нулю, если не возникло ошибки при определении имени текущей директории или указана недопустимая опция.

readonly
readonly [-aAf] [-p] [name[=value]] …

Отметить каждый name как только для чтения. Значения этих имён не могут быть изменены последующими присваиваниями. Если опция -f указана, каждый name относится к функции оболочки. Опция -a означает, что каждый name относится к индексированной переменной массива; опция -A означает, что каждый name относится к переменной массива с ассоциативными ключами. Если обе опции указаны, -A имеет приоритет. Если аргументы name не указаны или опция -p указана, выводится список всех имен, помеченных только для чтения. Другие опции могут использоваться для ограничения вывода подмножеством имен, помеченных только для чтения. Опция -p приводит к выводу в формате, который может быть повторно использован в качестве входных данных. Если имя переменной следует за =value, значение переменной устанавливается в value. Код возврата равен нулю, если не указана недопустимая опция, один из аргументов name не является допустимым именем переменной или функции оболочки, или опция -f указана с именем, которое не является функцией оболочки.

return
return [n]

Принудительно останавливает выполнение функции оболочки и возвращает значение n вызывающей стороне. Если n не указано, возвращаемое значение — это код завершения последней команды, выполненной в функции. Если return выполняется обработчиком ловушки, последняя команда, используемая для определения состояния, — это последняя команда, выполненная перед обработчиком ловушки. Если return выполняется во время ловушки DEBUG, последняя команда, используемая для определения состояния, — это последняя команда, выполненная обработчиком ловушки перед вызовом return. return также может использоваться для завершения выполнения скрипта, выполняемого с помощью встроенной команды . (source), возвращая либо n, либо код завершения последней команды, выполненной в скрипте, как код завершения скрипта. Если n указано, возвращаемое значение — это его 8 младших битов. Любая команда, связанная с ловушкой RETURN, выполняется перед возобновлением выполнения после функции или скрипта. Код возврата не равен нулю, если return получает нечисловой аргумент или используется вне функции и не во время выполнения скрипта с помощью . или source.

shift
shift [n]

Сдвинуть позиционные параметры влево на n позиций. Позиционные параметры с n+1 по $# переименовываются в $1 … $#-n. Параметры, представленные числами $# до $#-n+1, удаляются. n должно быть неотрицательным числом, меньшим или равным $#. Если n равно нулю или больше $#, позиционные параметры не изменяются. Если n не указано, оно предполагается равным 1. Код возврата равен нулю, если n больше $# или меньше нуля, иначе не равен нулю.

test
[
test expr

Оценить условное выражение expr и вернуть код возврата 0 (истина) или 1 (ложь). Каждый оператор и операнд должны быть отдельным аргументом. Выражения состоят из основных элементов, описанных ниже в Условных выражениях Bash. test не принимает никаких опций, а также не принимает и игнорирует аргумент -- как обозначение конца опций.

Когда используется форма [, последний аргумент команды должен быть ].

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

! expr

Истина, если expr ложно.

( expr )

Возвращает значение expr. Это может быть использовано для переопределения обычного приоритета операторов.

expr1 -a expr2

Истина, если оба expr1 и expr2 истинны.

expr1 -o expr2

Истина, если либо expr1, либо expr2 истинны.

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

0 аргументов

Выражение ложно.

1 аргумент

Выражение истинно, если и только если аргумент не пустой.

2 аргумента

Если первый аргумент ‘!’, выражение истинно, если и только если второй аргумент пустой. Если первый аргумент является одним из унарных условных операторов (см. Условные выражения Bash), выражение истинно, если унарная проверка истинна. Если первый аргумент не является допустимым унарным оператором, выражение ложно.

3 аргумента

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

  1. Если второй аргумент является одним из бинарных условных операторов (см. Условные выражения Bash), результат выражения — результат бинарной проверки с использованием первого и третьего аргументов в качестве операндов. Операторы ‘-a’ и ‘-o’ считаются бинарными операторами, когда есть три аргумента.
  2. Если первый аргумент ‘!’, значение — отрицание двухаргументной проверки, используя второй и третий аргументы.
  3. Если первый аргумент точно ‘(’ и третий аргумент точно ‘)’, результатом является проверка с одним аргументом второго аргумента.
  4. В противном случае выражение ложно.
4 аргумента

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

  1. Если первый аргумент ‘!’, результат — отрицание трехэлементного выражения, составленного из оставшихся аргументов.
  2. Если первый аргумент точно ‘(’ и четвертый аргумент точно ‘)’, результатом является проверка с двумя аргументами второго и третьего аргументов.
  3. В противном случае выражение анализируется и оценивается в соответствии с приоритетом, используя правила, указанные выше.
5 или более аргументов

Выражение анализируется и оценивается в соответствии с приоритетом, используя правила, указанные выше.

При использовании с test или ‘[’ операторы ‘<’ и ‘>’ сортируют лексикографически, используя ASCII-кодирование.

times
times

Вывести время, затраченное пользователем и системой оболочкой и её дочерними процессами. Код возврата равен нулю.

trap
trap [-lp] [arg] [sigspec …]

Команды в arg будут прочитаны и выполнены, когда оболочка получит сигнал sigspec. Если arg отсутствует (и есть один sigspec) или равен ‘-’, обработка каждого указанного сигнала сбрасывается до значения, которое у неё было при запуске оболочки. Если arg является пустой строкой, тогда оболочка игнорирует сигнал, указанный каждым sigspec и командами, которые она вызывает. Если arg отсутствует и -p указано, оболочка выводит команды ловушек, связанные с каждым sigspec. Если не указано никаких аргументов или указана только -p, trap выводит список команд, связанных с каждым номером сигнала в формате, который может быть повторно использован в качестве входных данных оболочки. Опция -l заставляет оболочку вывести список имён сигналов и их соответствующих номеров. Каждый sigspec — это либо имя сигнала, либо номер сигнала. Имена сигналов не чувствительны к регистру, и префикс SIG необязателен.

Если sigspec — это 0 или EXIT, arg выполняется при выходе оболочки. Если sigspec — это DEBUG, команда arg выполняется перед каждой простой командой, командой for, командой case, командой select, каждой арифметической командой for и перед выполнением первой команды в функции оболочки. Обратитесь к описанию опции extdebug встроенной команды shopt (см. Встроенная команда Shopt) для получения подробностей о её влиянии на ловушку DEBUG. Если sigspec — это RETURN, команда arg выполняется каждый раз, когда функция оболочки или скрипт, выполняемый с помощью встроенных команд . или source, завершает выполнение.

Если sigspec — это ERR, команда arg выполняется всякий раз, когда конвейер (который может состоять из одной простой команды), список или составная команда возвращает ненулевой код завершения, с учетом следующих условий. Ловушка ERR не выполняется, если неисправленная команда является частью списка команд, непосредственно следующего за ключевыми словами until или while, частью теста, следующего за зарезервированными словами if или elif, частью команды, выполненной в списке && или ||, за исключением команды, следующей за последним && или ||, любой командой в конвейере, кроме последней, или если код завершения команды инвертируется с помощью !. Это те же условия, которые соблюдаются опцией errexit (-e).

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

Код возврата равен нулю, если sigspec не указывает допустимый сигнал.

umask
umask [-p] [-S] [mode]

Установите маску создания файла для процесса оболочки на mode. Если mode начинается с цифры, он интерпретируется как восьмеричное число; в противном случае он интерпретируется как маска символического режима, аналогичная той, которая принимается командой chmod. Если mode опущен, выводится текущее значение маски. Если опция -S задана без аргумента mode, маска выводится в символическом формате. Если опция -p задана, и mode опущен, вывод находится в форме, которая может быть повторно использована в качестве входных данных. Код возврата равен нулю, если режим успешно изменён или если аргумент mode не задан, и ненулевой в противном случае.

Обратите внимание, что при интерпретации режима как восьмеричного числа каждое число umask вычитается из 7. Таким образом, umask 022 приводит к разрешениям 755.

unset
unset [-fnv] [name]

Удалите каждую переменную или функцию name. Если задана опция -v, каждая name относится к переменной оболочки, и эта переменная удаляется. Если задана опция -f, names относятся к функциям оболочки, и определение функции удаляется. Если задана опция -n, и name является переменной с атрибутом nameref, name будет снята с отслеживания, а не переменная, на которую она ссылается. -n не имеет эффекта, если задана опция -f. Если опции не заданы, каждая name относится к переменной; если переменной с таким именем нет, функция с таким именем, если она есть, снимается с отслеживания. Нельзя снимать с отслеживания постоянные переменные и функции. Некоторые переменные оболочки теряют своё специальное поведение при снятии с отслеживания; такое поведение указано в описании отдельных переменных. Код возврата равен нулю, если name не является постоянной или не может быть снята с отслеживания.

Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
Licensed under the GNU Free Documentation License.
https://www.gnu.org/software/bash/manual/html_node/Bourne-Shell-Builtins.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API