Встроенные команды оболочки 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 аргумента
-
Применяются следующие условия в указанном порядке.
- Если второй аргумент является одним из бинарных условных операторов (см. Условные выражения Bash), результат выражения — результат бинарной проверки с использованием первого и третьего аргументов в качестве операндов. Операторы ‘-a’ и ‘-o’ считаются бинарными операторами, когда есть три аргумента.
- Если первый аргумент ‘!’, значение — отрицание двухаргументной проверки, используя второй и третий аргументы.
- Если первый аргумент точно ‘(’ и третий аргумент точно ‘)’, результатом является проверка с одним аргументом второго аргумента.
- В противном случае выражение ложно.
- 4 аргумента
-
Применяются следующие условия в указанном порядке.
- Если первый аргумент ‘!’, результат — отрицание трехэлементного выражения, составленного из оставшихся аргументов.
- Если первый аргумент точно ‘(’ и четвертый аргумент точно ‘)’, результатом является проверка с двумя аргументами второго и третьего аргументов.
- В противном случае выражение анализируется и оценивается в соответствии с приоритетом, используя правила, указанные выше.
- 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. Таким образом, umask022приводит к разрешениям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