ОБЗОР
bash [options] [command_string | file]
АВТОРСКИЕ
ПРАВА
Bash is Copyright (C) 1989-2025 by the Free Software Foundation,
Inc.
ОПИСАНИЕ
Bash - это
интерпретатор
командного
языка,
который
выполняет
команды,
считываемые
из
стандартного
ввода, из
командной
строки или
из файла.
Это
повторная
и
дополненная
реализация
оболочки Bourne,
исторического
интерпретатора
командного
языка Unix. Bash
также
включает в
себя
полезные
функциональные
возможности
оболочек Korn
и C (ksh и csh).
POSIX - это
название
семейства
компьютерных
стандартов,
основанных
на Unix. Bash
предназначена
для того,
чтобы быть
соответствующей
реализацией
части
оболочки и
утилит
спецификации
IEEE POSIX
(стандарт IEEE
1003.1). Режим Bash
POSIX (далее
именуемый
как posix mode)
изменяет
поведение
оболочки,
когда ее
работа по
умолчанию
отличается
от
стандартной,
чтобы
строго
соответствовать
стандарту.
Смотрите
раздел
СМОТРИТЕ
ТАКЖЕ
ниже для
получения
ссылки на
документ, в
котором
подробно
описывается,
как режим posix mode
влияет на
поведение
bash.
Оболочка Bash
может быть
настроена
на
соответствие
POSIX по
умолчанию.
ПАРАМЕТРЫ
Все
односимвольные
опции
оболочки,
описанные
в описании
встроенной
команды set,
включая -o,
могут
использоваться
в качестве
опций при
вызове
оболочки.
Кроме того,
bash
интерпретирует
следующие
опции при
вызове:
- -c
- Если
присутствует
опция -c, то
команды
считываются
из первого,
не
содержащего
опции,
аргумента
командной
строки command_string.
Если после
command_string есть
аргументы,
то первому
аргументу
присваивается
значение
$0, а
значения
остальных
аргументов
присваиваются
позиционным
параметрам.
Присвоение
значения $0
определяет
название
оболочки,
которое
используется
в
предупреждениях
и
сообщениях
об
ошибках.
- -i
- Если
присутствует
опция -i, то
оболочка
является
интерактивной.
- -l
- Эта опция
заставляет
оболочку
bash
действовать
так, как
если бы это
был вход в
оболочку
(смотрите
раздел
ВЫЗОВ
ниже).
- -r
- Если
присутствует
опция -r, то
оболочка
становится
restricted,т.е.
ограниченной
оболочкой
(смотрите
раздел
ОГРАНИЧЕННАЯ
ОБОЛОЧКА
ниже).
- -s
- Если
присутствует
опция -s
или если
после
обработки
опции не
осталось
аргументов,
то
оболочка
считывает
команды из
стандартного
ввода. Эта
опция
позволяет
устанавливать
позиционные
параметры
при вызове
интерактивной
оболочки
или при
чтении
входных
данных
через
конвейер.
- -v
- Выводить
строки
ввода
оболочки
по мере их
считывания.
- -x
- Команды и
их
аргументы
выводятся
по мере их
выполнения.
- -D
- Выводить
список
всех строк,
заключенных
в двойные
кавычки,
перед
которыми в
стандартном
выводе
стоит $.
Это строки,
которые
подлежат
переводу
на другой
язык, если
текущая
локаль не
является C
или POSIX. Это
подразумевает
опцию -n;
никакие
команды
выполняться
не будут.
- [-+]O [shopt_option]
- Опция shopt_option -
это одна из
опций
оболочки,
используемых
встроенной
командой
shopt
(смотрите
раздел
ВСТРОЕННЫЕ
КОМАНДЫ
ОБОЛОЧКИ
ниже). Если
опция shopt_option
определена,
то -O
устанавливает
значение
этой опции;
+O отменяет
его. Если
опция shopt_option
не
определена,
то bash
выводит
названия и
значение
опций
оболочки,
принятых
shop, на
стандартный
вывод. Если
опция
вывода
равна +O, то
выходные
данные
отображаются
в формате,
который
может быть
повторно
использован
в качестве
входных
данных.
- --
- Символ --
сигнализирует
об
окончании
выбора
опций и
отключает
дальнейшую
обработку
опций.
Любые
аргументы
после --
рассматриваются
как
название
файла
сценария
оболочки
(см. ниже) и
передаются
этому
сценарию.
Аргумент -
эквивалентен
--.
Оболочка
Bash также
интерпретирует
ряд опций,
состоящих
из
нескольких
символов.
Эти опции
должны
появиться
в
командной
строке до
того, как
будут
распознаны
опции,
состоящие
из одного
символа.
- --debugger
- Сделать
так, чтобы
профиль
отладчика
был
выполнен
до запуска
оболочки.
Включает
расширенный
режим
отладки
(смотрите
описание
опции extdebug
для
встроенной
команды shopt
ниже).
- --dump-po-strings
- Эквивалентно
-D, но
выходные
данные
находятся
в формате GNU
gettext “po”
(переносимый
объект).
- --dump-strings
- Эквивалентно
-D.
- --help
- Вывести
сообщение
об
использовании
на
стандартный
вывод и
завершить
работу.
- --init-file file
- --rcfile
file
- Execute commands from file instead of the system wide
initialization file /etc/bash.bashrc and the standard personal
initialization file ~/.bashrc если
оболочка
является
интерактивной
(смотрите
раздел
ВЫЗОВ
ниже).
- --login
- Эквивалентно
-l.
- --noediting
- Не
использовать
библиотеку
GNU readline для
чтения
командных
строк,
когда
оболочка
является
интерактивной.
- --noprofile
- Также не
читать
общесистемный
файл
запуска
/etc/profile или
любой из
личных
файлов
инициализации
~/.bash_profile, ~/.bash_login, или
~/.profile. По
умолчанию
bash
считывает
эти файлы,
когда она
вызывается
для входа в
оболочку
(смотрите
раздел
ВЫЗОВ
ниже).
- --norc
- Do not read and execute the system wide initialization file
/etc/bash.bashrc and the personal initialization file
~/.bashrc если
оболочка
является
интерактивной.
Эта опция
включена
по
умолчанию,
если
оболочка
вызывается
как sh.
- --posix
- Включить
режим posix;
изменить
поведение
bash, в
котором
операции
по
умолчанию
отличаются
от
требований
стандарта
POSIX так,
чтобы они
соответствовали
стандарту.
- --restricted
- Оболочка
становится
ограниченной
(смотрите
раздел
ОГРАНИЧЕННАЯ
ОБОЛОЧКА
ниже).
- --verbose
- Эквивалентно
-v.
- --version
- Вывести
сведения
об этой
версии
оболочки
bash на
стандартный
вывод и
завершить
работу.
АРГУМЕНТЫ
Если
после
обработки
опции
остаются
аргументы,
а опция -c и
опция -s не
были
указаны, то
первый
аргумент
обрабатывается
как
название
файла,
содержащего
команды
оболочки (shell
script). Когда bash
вызывается
таким
образом, то
$0
присваивается
название
файла, а
позиционным
параметрам
присваиваются
остальные
аргументы.
Bash
считывает
и
выполняет
команды из
этого
файла, а
затем
завершает
работу.
Статус
завершения
Bash - это
статус
завершения
последней
команды,
выполненной
в скрипте.
Если
команды не
выполняются,
то статус
завершения
равен 0. Bash
сначала
пытается
открыть
файл в
текущем
каталоге и,
если файл
не найден,
то
выполняет
поиск
скрипта в
каталогах,
указанных
в
переменной
PATH.
ВЫЗОВ
Вход в
оболочку (login
shell) это - тот, у
которого
первым
символом
нулевого
аргумента
является -
или тот,
который
начинается
с опции --login.
Интерактивная
оболочка
interactive shell - это
оболочка,
запускаемая
без
аргументов
опций (если
только не
указано -s) и
без опции -c,
а
стандартный
ввод и
стандартный
вывод
ошибок
которой
подключены
к
терминалам
(как
определено
isatty(3)) или
когда она
запускается
с опцией -i.
Если
оболочка
интерактивна,
то Bash
устанавливает
PS1, а $-
включает i,
и поэтому
сценарий
оболочки
или файл
запуска
могут
проверить
это
состояние.
В
следующих
разделах
описывается,
как bash
выполняет
свои файлы
запуска.
Если
какой-либо
из файлов
существует,
но не может
быть
прочитан,
то bash
сообщает
об ошибке.
Тильды в
названиях
файлов
расширяются
так, как это
описано
ниже в
подразделе
Расширение
тильды
раздела
РАСШИРЕНИЕ.
Когда bash
вызывается
как
интерактивная
оболочка
входа или
как
неинтерактивная
оболочка с
опцией --login,
то она
сначала
считывает
и
выполняет
команды из
файла /etc/profile,
если этот
файл
существует.
После
прочтения
этого
файла она
выполняет
поиск ~/.bash_profile,
~/.bash_login, и ~/.profile, в
этом
порядке и
считывает
и
выполняет
команды из
первого
существующего
и
доступного
для чтения
файла. Для
предотвращения
такого
поведения
при
запуске
оболочки
может
использоваться
опция --noprofile.
Когда
интерактивная
оболочка
завершает
работу или
неинтерактивная
оболочка
выполняет
встроенную
команду exit,
то bash
считывает
и
выполняет
команды из
файла ~/.bash_logout,
если он
существует.
Когда
запускается
интерактивная
оболочка,
которая не
является
оболочкой
входа в
систему, то
bash
считывает
и
выполняет
команды из
файла, etc/bash.bashrc и
~/.bashrc, если
файл
существует.
Опция --norc
запрещает
такое
поведение.
Опция --rcfile file
заставляет
bash
использовать
file вместо
etc/bash.bashrc и ~/.bashrc.
Когда bash
запускается
неинтерактивно,
например,
для
запуска
сценария
оболочки,
она ищет
переменную
BASH_ENV в среде
окружения,
расширяет
ее
значение,
если она
там есть и
использует
расширенное
значение в
качестве
названия
файла для
чтения и
выполнения.
Bash ведет
себя так,
как если бы
была
выполнена
следующая
команда:
if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
но не
использует
значение
переменной
PATH для
поиска
названия
файла.
Если bash
вызывается
с
названием
sh, то она
пытается
максимально
точно
имитировать
поведение
при
запуске
предыдущих
версий sh, в
то же время
соответствуя
стандарту
POSIX
оболочки
входа в
систему
или
неинтерактивной
оболочки с
опцией --login
она
сначала
пытается
считывать
и
выполнять
команды /etc/profile
и ~/.profile, в
таком
порядке.
Опция --noprofile
запрещает
такое
поведение.
При вызове
в качестве
интерактивной
оболочки с
названием
sh, bash ищет
переменную
ENV,
расширяет
ее
значение,
если оно
определено
и
использует
расширенное
значение в
качестве
названия
файла для
чтения и
выполнения.
Поскольку
оболочка,
вызываемая
как sh, не
пытается
считывать
и
выполнять
команды из
каких-либо
других
файлов
запуска, то
опция --rcfile не
действует.
Неинтерактивная
оболочка,
вызываемая
с
названием
sh, не
пытается
считывать
какие-либо
другие
файлы
запуска.
При
вызове как
sh, bash
переходит
в режим posix
после
чтения
файлов
запуска.
Когда bash
запускается
в режиме posix,
как в
случае с
опцией
командной
строки --posix,
тогда она
соответствует
стандарту
POSIX для
файлов
запуска. В
этом
режиме
интерактивные
оболочки
расширяют
переменную
ENV,
считывают
и
выполняют
команды из
файла,
название
которого
является
расширенным
значением.
Другие
файлы, при
запуске, не
считываются.
Bash
пытается
определить,
когда она
запускается
со
стандартным
входом,
подключенным
к сетевому
соединению,
например,
когда она
выполняется
устаревшим
и редко
встречающимся
демоном
удаленной
оболочки,
обычно rshd,
или
демоном
защищенной
оболочки
sshd. Если bash
определяет,
что она
запускается
таким
образом в
неинтерактивном
режиме, то
она
считывает
и
выполняет
команды из
файла, etc/bash.bashrc и
~/.bashrc, if these files exist and are readable. Bash does
not read this file if invoked as sh. The --norc option
inhibits this behavior, and the --rcfile option makes bash use
a different file instead of ~/.bashrc, но
ни rshd, ни sshd
обычно не
вызывают
оболочку с
этими
опциями и
не
позволяют
их
указывать.
Если
оболочка
запущена с
эффективным
идентификатором
пользователя
(группы),
который не
совпадает
с реальным
идентификатором
пользователя
(группы), и
опция -p не
указана, то
файлы
запуска не
считываются,
функции
оболочки
не
наследуются
из
окружающей
среды, а
переменные
SHELLOPTS, BASHOPTS,
CDPATH и GLOBIGNORE,
если они
появляются
в
окружающей
среде,
игнорируются,
также
эффективный
идентификатор
пользователя
устанавливается
равным
реальному
идентификатору
пользователя.
Если при
вызове
указана
опция -p, то
поведение
при
запуске
будет
таким же, но
эффективный
идентификатор
пользователя
не будет
сброшен.
ОПРЕДЕЛЕНИЯ
В
остальной
части
этого
документа
используются
следующие
определения.
- blank
- Пробел или
символ
табуляции.
- whitespace
- Символ,
принадлежащий
классу
символов
пробел space в
текущей
локали или
для
которого
isspace(3)
возвращает
значение
true.
- word
- Последовательность
символов,
рассматриваемая
оболочкой
как единое
целое.
Также
известная
как токен
token.
- name
- Слово word,
состоящее
только из
буквенно-цифровых
символов и
знаков
подчеркивания
и
начинающееся
с
буквенного
символа
или знака
подчеркивания.
Также
именуемое
как
идентификатор
identifier.
- metacharacter
- Метасимвол
metacharacter - символ,
который,
если он не
заключен в
кавычки,
разделяет
слова. Это
может быть
один из
следующих
символов:
| & ; ( ) < > space tab newline
- Оператор
управления
control operator
- Токен token,
выполняющий
функцию
управления.
Это один из
следующих
символов:
|| & && ; ;; ;& ;;& ( ) | |&
<newline>
ЗАРЕЗЕРВИРОВАННЫЕ
СЛОВА
Зарезервированные
слова Reserved words -
это слова,
которые
имеют
специальное
значение
для
оболочки.
Следующие
слова
распознаются
как
зарезервированные,
если они не
заключены
в кавычки и
являются
либо
первым
словом
команды
(смотрите
ниже
раздел
ГРАММАТИКА
ОБОЛОЧКИ),
либо
третьим
словом
команды case
или select
(допустимо
только in),
либо
третьим
словом
словом
команды for
(допустимы
только in и
do):
! case coproc do done elif else esac fi for function if in
select then until while { } time [[ ]]
ГРАММАТИКА
ОБОЛОЧКИ
В этом
разделе
описывается
синтаксис
различных
форматов
команд
оболочки.
Простая
команда simple
command - это
последовательность
необязательных
переменных,
за
которыми
следуют
слова
(разделенные
пробелом
blank) и
перенаправления,
которые
завершаются
управляющим
оператором
control operator. Первое
слово
определяет
команду,
которая
должна
быть
выполнена.
Это слово
передается
в качестве
нулевого
аргумента.
Остальные
слова
передаются
в качестве
аргументов
вызываемой
команды.
Возвращаемое
значение
простой
команды simple
command - это
статус её
завершения
или 128+n, если
команда
завершается
по сигналу
n.
Конвейер
(канал) pipeline
представляет
собой
последовательность
из одной
или
нескольких
команд,
разделенных
одним из
управляющих
операторов
| или |&.
Формат
конвейера
следующий:
[time [-p]] [ ! ] command1 [
[|⎪|&] command2 ... ]
Стандартный
вывод
команды command1
подключен
через
канал к
стандартному
вводу
команды command2.
Это
подключение
выполняется
перед
любыми
перенаправлениями,
указанными
в
command1(смотрите
раздел
ПЕРЕНАПРАВЛЕНИЕ
ниже). Если
|&
является
оператором
конвейера,
то
стандартная
ошибка
команд command1, в
дополнение
к ее
стандартному
выходу,
связана со
стандартным
входом
команд command2
через
конвейер.
Это
сокращение
от 2>&1 |. Это
неявное
перенаправление
стандартной
ошибки на
стандартный
выход
выполняется
после
любых
перенаправлений,
указанных
в command1.
Возвращаемый
статус
конвейера -
это статус
завершения
последней
команды,
если
только не
включена
опция pipefail.
Если опция
pipefail
включена,
то статус
возврата
конвейера
равен
значению
последней
(самой
правой)
команды,
которая
завершается
с
ненулевым
статусом
или нулю,
если все
команды
завершаются
успешно.
Если
зарезервированное
слово !
предшествует
конвейеру,
то статус
завершения
этого
конвейера
является
логическим
отрицанием
статуса
завершения,
как
описано
выше. Если
конвейер
выполняется
синхронно,
то
оболочка
ожидает
завершения
всех
команд в
конвейере,
прежде чем
возвратить
значение.
Если
зарезервированное
слово time
предшествует
конвейеру,
то
оболочка
сообщает о
прошедшем
времени, а
также о
пользовательском
и
системном
времени,
затраченном
на его
выполнение,
когда
конвейер
завершается.
Опция -p
изменяет
формат
вывода на
указанное
POSIX . Когда
оболочка
находится
в режиме posix,
то она не
распознает
time как
зарезервированное
слово, если
следующий
токен
начинается
с “-”.
Значение
переменной
TIMEFORMAT
представляет
собой
строку
формата,
которая
определяет,
как должна
отображаться
информация
о времени.
Смотрите
описание
переменной
TIMEFORMAT ниже в
подразделе
Переменные
оболочки.
Когда
оболочка
находится
в режиме posix, time
может
отображаться
само по
себе как
единственное
слово в
простой
команде. В
этом
случае
оболочка
отображает
общее
пользовательское
и
системное
время,
затраченное
оболочкой
и ее
дочерними
элементами.
Переменная
TIMEFORMAT
определяет
формат
информации
о времени.
Каждая
команда в
конвейере
с
несколькими
командами,
где
создаются
конвейеры,
выполняется
в
подоболочке
subshell, которая
является
отдельным
процессом.
Описание
подоболочек
и среды
подоболочек
приведено
в разделе
СРЕДА
ВЫПОЛНЕНИЯ
КОМАНД.
Если опция
lastpipe
включена
с помощью
встроенной
команды shopt
(смотрите
описание
shopt ниже), а
управление
заданиями
не
активировано,
то
последний
элемент
конвейера
может быть
запущен
процессом
оболочки.
Списки
Список list -
это
последовательность
из одного
или
нескольких
конвейеров,
разделенных
одним из
операторов
;, &, && или ||
и
необязательно
завершающихся
одним из ;,
& или <newline>.
В этом
списке
операторы
&& и ||
имеют
одинаковый
приоритет,
а за ними
следуют
операторы
; и &,
которые
также
имеют
одинаковый
приоритет.
Вместо
точки с
запятой
для
разделения
команд в
списке list
может
присутствовать
последовательность
из одной
или
нескольких
новых
строк.
Если
команда
завершается
управляющим
оператором
&, то
оболочка
выполняет
команду в
фоновом
режиме background в
подоболочке.
Оболочка
не ожидает
завершения
команды и
возвращаемый
статус
равен 0. Они
называются
асинхронными
asynchronous
командами.
Команды,
разделенные
символом ;,
выполняются
последовательно;
оболочка
ожидает
завершения
выполнения
каждой
команды по
очереди.
Статус
возврата -
это статус
завершения
последней
выполненной
команды.
Списки И и
ИЛИ
представляют
собой
последовательности
из одного
или
нескольких
конвейеров,
разделенных
управляющими
операторами
&& и ||,
соответственно.
Списки И и
ИЛИ
выполняются
с левой
ассоциативностью.
Список И
имеет вид
command2
выполняется
тогда и
только
тогда,
когда command1
возвращает
нулевой
статус
завершения
(успех).
Список
ИЛИ имеет
вид
Команда
command2
выполняется
тогда и
только
тогда,
когда
команда command1
возвращает
ненулевой
статус
завершения.
Возвращаемый
статус
списков И и
ИЛИ - это
статус
завершения
последней
команды,
выполненной
в списке.
Составная
команда compound
command - это одна
из
следующих
команд. В
большинстве
случаев
список list в
описании
команды
может быть
отделен от
остальной
части
команды
одной или
несколькими
символами
новой
строки, за
которыми
может
следовать
новая
строка
вместо
точки с
запятой.
- (list)
- Список list
выполняется
в
подоболочке
(описание
окружающей
среды
подоболочки
приведено
в разделе
СРЕДА
ВЫПОЛНЕНИЯ
КОМАНД
ниже).
Назначение
переменных
и
встроенные
команды,
влияющие
на
окружающую
среду
команды,
перестают
действовать
после
завершения
выполнения
команды.
Статус
возврата -
это статус
выхода из
списка list.
- { list; }
- Список list
выполняется
в текущей
среде
командной
строки. list
должен
завершаться
новой
строкой
или точкой
с запятой.
Это
называется
групповая
команда group
command. Статус
возврата -
это статус
завершения
списка list.
- Обратите
внимание,
что в
отличие от
метасимволов
( и ),
метасимволы
{ и }
являются
зарезервированными
словами reserved
words и должны
встречаться
там, где
разрешено
распознавание
зарезервированных
слов.
Поскольку
они не
приводят к
разрыву
слов, то
они должны
быть
отделены
от списка
listпробелом
или другим
метасимволом
оболочки.
- ((expression))
- Арифметическое
выражение
expression
вычисляется
в
соответствии
с
правилами,
описанными
ниже в
разделе
АРИФМЕТИЧЕСКИЕ
ВЫЧИСЛЕНИЯ.
Если
значение
выражения
не равно
нулю, то
статус
возврата
равен 0; в
противном
случае
статус
возврата
равен 1.
Выражение
expression
расширяется
так же, как
если бы оно
было
заключено
в двойные
кавычки, но
неэкранированные
символы
двойных
кавычек в
expression не
обрабатываются
специальным
образом и
удаляются.
Поскольку
это
потенциально
может
привести к
появлению
пустых
строк, эта
команда
обрабатывает
их как
выражения,
значение
которых
равно 0.
- [[ expression ]]
- Вычислить
условное
выражение
expression и
вернуть
нулевой (true)
или
ненулевой
(false) статус.
Выражения
состоят из
основных
элементов,
описанных
ниже в
разделе
УСЛОВНЫЕ
ВЫРАЖЕНИЯ.
Слова
между [[ и
]] не
разделяются
на слова и
не
расширяются
названием
пути.
Оболочка
выполняет
расширение
тильдой,
расширение
параметров
и
переменных,
арифметическое
расширение,
замену
команд,
замену
процессов
и удаление
кавычек в
этих
словах.
Условные
операторы,
такие как
-f, должны
быть без
кавычек,
чтобы их
можно было
распознать
как
основные.
- При
использовании
совместно
с [[
операторы
< и >
выполняют
лексикографическую
сортировку
с
использованием
текущей
локали.
Смотрите
описание
встроенной
команды test
(в разделе
ВСТРОЕННЫЕ
КОМАНДЫ
ОБОЛОЧКИ)
при
обработке
параметров
(т.е.
отсутствующих
параметров).
- Когда
используются
операторы
== и !=,
строка
справа от
оператора
считается
шаблоном и
сопоставляется
в
соответствии
с
правилами,
описанными
ниже в
подразделе
Сопоставление
с
шаблоном,
как если бы
была
включена
опция
оболочки
extglob.
Оператор =
эквивалентен
==. Если
включена
опция
оболочки
nocasematch, то
сопоставление
выполняется
без учета
регистра
буквенных
символов.
Возвращаемое
значение
равно 0,
если
строка
соответствует
(==) или не
соответствует
(!=) шаблону,
и 1 в
противном
случае.
Если
какая-либо
часть
шаблона
заключена
в кавычки,
заключенная
в кавычки
часть
сопоставляется
как строка:
каждый
символ в
заключенной
в кавычки
части
соответствует
сам себе,
вместо
того чтобы
иметь
какое-либо
специальное
значение
для
сопоставления
с
шаблоном.
- Доступен
дополнительный
двоичный
оператор
=~, имеющий
тот же
приоритет,
что и == и !=.
При его
использовании
строка
справа от
оператора
считается
POSIX
расширением
регулярного
выражения
и
соответствующим
образом
согласованным
(используя
интерфейсы
POSIX regcomp и regexec,
обычно
описываемым
в regex(3)).
Возвращаемое
значение
равно 0,
если
строка
соответствует
шаблону, и 1
в
противном
случае.
Если
регулярное
выражение
синтаксически
некорректно,
возвращаемое
значение
условного
выражения
равно 2.
Если
включена
опция
оболочки
nocasematch,
сопоставление
выполняется
без учета
регистра
буквенных
символов.
- Если
какая-либо
часть
шаблона
заключена
в кавычки,
то часть,
заключенная
в кавычки,
сопоставляется
буквально,
как
указано
выше. Если
шаблон
хранится в
переменной
оболочки,
то при
расширении
переменной,
заключенной
в кавычки,
весь
шаблон
должен
быть
сопоставлен
буквально.
Внимательно
относитесь
к
выражениям
в
квадратных
скобках в
регулярных
выражениях,
поскольку
обычные
кавычки и
шаблонные
символы
теряют
свое
значение
между
квадратными
скобками.
- Совпадение
завершается
успешно,
если
шаблон
соответствует
какой-либо
части
строки.
Закрепите
шаблон с
помощью
операторов
регулярных
выражений
^ и $, чтобы
заставить
его
соответствовать
всей
строке.
- Переменная
массива
BASH_REMATCH
записывает,
какие
части
строки
соответствуют
шаблону.
Элемент
BASH_REMATCH с
индексом 0
содержит
часть
строки,
соответствующую
всему
регулярному
выражению.
Подстроки,
соответствующие
вложенным
в скобки
выражениям
в
регулярном
выражении,
сохраняются
в
остальных
индексах
BASH_REMATCH.
Элемент
BASH_REMATCH с
индексом n
- это часть
строки,
соответствующая
n-му
подвыражению,
заключенному
в круглые
скобки. Bash
устанавливает
значение
BASH_REMATCH в
глобальной
области
видимости;
объявление
его как
локальной
переменной
приведет к
неожиданным
результатам.
- Выражения
могут быть
объединены
с помощью
следующих
операторов,
перечисленных
в порядке
убывания
приоритета:
- ( expression )
- Возвращает
значение
expression. Это
может
использоваться
для
переопределения
обычного
приоритета
операторов.
- ! expression
- Истинно
если expression
ложно.
- expression1
&& expression2
- Истинно,
если оба
expression1 и expression2
истинно.
- expression1
|| expression2
- Истинно,
если или
expression1 или expression2
истинно.
Операторы
&& и || не
вычисляют
значение
expression2, если
значение
expression1
достаточно
для
определения
возвращаемого
значения
всего
условного
выражения.
- for name [ [
in word ... ] ; ] do list ; done
- Сначала
расширяется
список
слов,
следующих
за in,
генерируя
список
элементов.
Затем
переменная
name
присваивается
каждому
элементу
этого
списка по
очереди, и
list
выполняется
каждый раз.
Если in word
опущены, то
команда for
выполняет
list один раз
для
каждого
установленного
позиционного
параметра
(смотрите
раздел
ПАРАМЕТРЫ
ниже).
Статус
возврата -
это статус
завершения
последней
выполненной
команды.
Если при
расширении
списка
элементов,
следующих
за in,
список (list)
пуст, то
команды не
выполняются,
и статус
возврата
равен 0.
- for (( expr1 ;
expr2 ; expr3 )) [;] do list ;
done
- Сначала
вычислить
арифметическое
выражение
expr1 в
соответствии
с
правилами,
описанными
ниже в
разделе
АРИФМЕТИЧЕСКИЕ
ВЫЧИСЛЕНИЯ.
Затем
повторно
вычислить
арифметическое
выражение
expr2, пока оно
не станет
равным
нулю.
Каждый раз,
когда
значение
expr2
принимает
ненулевое
значение,
выполнить
list и
вычислить
арифметическое
выражение
expr3. Если
какое-либо
выражение
опущено, то
оно ведет
себя так,
как будто
его
значение
равно 1.
Возвращаемое
значение -
это статус
завершения
последней
выполненной
команды в
списке list
или
ненулевое
значение,
если
какое-либо
из
выражений
является
недопустимым.
- Использовать
встроенные
команды break
и continue
(смотрите
раздел
ВСТРОЕННЫЕ
КОМАНДЫ
ОБОЛОЧКИ
ниже) для
управления
выполнением
цикла.
- select name
[ in word ] ; do list ; done
- Сначала
раскрыть
список
слов,
следующих
за in,
создав
список
элементов,
и вывести
набор
развернутых
слов в
стандартную
ошибку, при
этом
каждому из
набора
предшествует
номер. Если
in word
пропущено,
то вывести
позиционные
параметры
(смотрите
раздел
ПАРАМЕТРЫ
ниже).
Затем select
отобразит
запрос PS3
и считает
строку из
стандартного
ввода. Если
строка
содержит
число,
соответствующее
одному из
отображаемых
слов, то select
устанавливает
значение
name для
этого
слова. Если
строка
пуста, то select
снова
отображает
слова и
запрашивает
запрос.
Если EOF
считан, то
select
завершает
работу и
возвращает
значение 1.
Для любого
другого
значения
name
устанавливается
значение
нольl.
Прочитанная
строка
сохраняется
в
переменной
REPLY.
Команда
list
выполняется
после
каждого
выбора,
пока не
будет
выполнена
команда break.
Статус
завершения
команды select -
это статус
завершения
последней
команды,
выполненной
в list, или
нулевой,
если
команды не
были
выполнены.
- case word
in [ [(] pattern [ | pattern ] ... ) list
;; ] ... esac
- Команда case
сначала
разворачивает
слово word и
пытается
сопоставить
его с
каждым
шаблоном
pattern по
очереди,
начиная с
первого к
последнему,
используя
правила
сопоставления,
описанные
в
подразделе
Сопоставление
с
шаблоном
ниже.
Список
шаблонов -
это набор
из одного
или
нескольких
шаблонов,
разделенных
символами ,
а оператор
) завершает
список
шаблонов.
Слово word
расширяется
с помощью
тильды,
параметров
и
переменных,
арифметического
расширения,
подстановки
команд,
подстановки
процессов
и удаления
кавычек.
Каждый
шаблон pattern
расширяется
с помощью
тильды,
параметров
и
переменных,
арифметического
расширения,
подстановки
команд,
подстановки
процессов
и удаления
кавычек.
Если
включена
опция
оболочки
nocasematch, то
сопоставление
выполняется
без учета
регистра
буквенных
символов.
Предложение
clause - это
список
шаблонов и
связанный
с ним
список list.
- Когда
найдено
совпадение,
команда case
выполняет
соответствующую
команду из
списка list.
Если
оператор ;;
завершает
предложение
case, то
команда case
завершается
после
первого
совпадения.
Использование
;& вместо ;;
приводит к
продолжению
выполнения
list,
связанного
списком
шаблонов.
Использование
;;& вместо ;;
приводит к
тому, что
оболочка
проверяет
следующий
список
шаблонов,
если
таковой
имеется, и
выполняет
любой
связанный
с list, если
совпадение
завершается
успешно,
продолжая
выполнение
команды case,
как если бы
список
шаблонов
не
совпадал.
Статус
выхода
равен нулю,
если ни
один
шаблон не
совпадает.
- В
противном
случае это
статус
завершения
последней
команды,
выполненной
в
последнем
списке list.
- if list; then
list; [ elif list; then list; ] ... [
else list; ] fi
- Выполняется
if list. Если ее
статус
завершения
равен нулю,
то
выполняется
then list. В
противном
случае
каждый elif list
выполняется
по очереди,
и если его
статус
завершения
равен нулю,
то
выполняется
then list и
команда
завершается.
В
противном
случае
выполняется
else list, если
это
присутствует.
Статус
завершения
- это
статус
завершения
последней
выполненной
команды
или ноль,
если ни
одно из
условий не
является
истинным.
- while list-1;
do list-2; done
- until list-1;
do list-2; done
- Команда while
непрерывно
выполняет
список list-2
до тех пор,
пока
последняя
команда в
списке list-1
не вернет
нулевой
статус
завершения.
Команда until
идентична
команде while,
за
исключением
того, что
проверка
отменяется:
list-2
выполняется
до тех пор,
пока
последняя
команда в
list-1 не
вернет
ненулевой
статус
завершения.
Статус
завершения
команд while и
until - это
статус
завершения
последней
команды,
выполненной
в list-2, или
ноль, если
ни одна из
них не была
выполнена.
Сопроцесс
coprocess - это
команда
оболочки,
перед
которой
стоит
зарезервированное
слово coproc.
Сопроцесс
выполняется
асинхронно
в
подоболочке,
как если бы
команда
была
завершена
с помощью
управляющего
оператора
&, при этом
между
исполняющей
оболочкой
и
сопроцессом
устанавливается
двусторонняя
связь.
Синтаксис
для
сопроцесса
следующий:
coproc [NAME] command
[redirections]
При этом
создается
сопроцесс
с
названием
NAME. Команда
command может
быть как
простой,
так и
составной
командой
(смотрите
выше). NAME - это
наименование
переменной
оболочки.
Если NAME не
указано, то
по
умолчанию
используется
наименование
COPROC.
Рекомендуемая
форма для
использования
в
сопроцессе
- это
coproc NAME { command [redirections];
}
Эта форма
предпочтительнее,
поскольку
простые
команды
приводят к
тому, что
сопроцесс
всегда
называется
COPROC, и она
проще в
использовании
и более
полная, чем
другие
составные
команды.
Если command
является
составной
командой,
то NAME
является
необязательным.
Слово,
следующее
за coproc,
определяет,
интерпретируется
ли это
слово как
название
переменной:
оно
интерпретируется
как NAME, если
это не
зарезервированное
слово,
которое
вводит
составную
команду.
Если command
является
простой
командой,
то NAME не
допускается;
это
делается
для того,
чтобы
избежать
путаницы
между NAME и
первым
словом
простой
команды.
Когда
выполняется
сопроцесс,
оболочка
создает
переменную
массива
(смотрите
подраздел
Массивы
ниже) с
названием
NAME в
контексте
исполняющей
оболочкой.
Стандартный
вывод command
подключается
по
конвейеру
к
файловому
дескриптору
в
исполняющей
оболочке, и
этому
файловому
дескриптору
присваивается
значение
NAME[0].
Стандартный
ввод command
подключается
по
конвейеру
к
файловому
дескриптору
в
исполняющей
оболочке, и
этот
файловый
дескриптор
присваивается
NAME[1]. Этот
конвейер
устанавливается
перед
любыми
перенаправлениями,
указанными
командой
(смотрите
раздел
ПЕРЕНАПРАВЛЕНИЕ
ниже).
Файловые
дескрипторы
могут
использоваться
в
качестве
аргументов
для команд
оболочки и
перенаправлений
с
использованием
стандартных
расширений
слов.
Файловые
дескрипторы,
кроме тех,
которые
созданы
для
выполнения
команд и
обработки
подстановок,
недоступны
в
подоболочках.
Идентификатор
процесса
оболочки ID,
созданный
для
выполнения
сопроцесса,
доступен в
виде
значения
переменной
NAME_PID.
Встроенная
команда wait
может
использоваться
для
ожидания
завершения
сопроцесса.
Поскольку
сопроцесс
создается
как
асинхронная
команда, то
команда coproc
всегда
возвращает
результат
успешно.
Возвращаемый
статус
сопроцесса
- это статус
завершения
command.
Определения
функций
оболочки
Функция
оболочки -
это объект,
который
вызывается
как
простая
команда и
выполняет
сложную
команду с
новым
набором
позиционных
параметров.
Функции
оболочки
объявляются
следующим
образом:
- fname ()
compound-command [redirection]
- function
fname [()] compound-command [redirection]
- Это
определяет
функцию с
названием
fname.
Зарезервированное
слово function
необязательно.
Если
указано
зарезервированное
слово function, то
скобки
необязательны.
Тело
функции body -
это
составная
команда
compound-command
(смотрите
подраздел
Составные
команды
выше). Эта
команда
обычно
представляет
собой
список
команд list
между { и }, но
может быть
любой
командой,
указанной
в
подразделе
Составные
команды
выше. Если
используется
зарезервированное
слово function, но
скобки не
указаны, то
рекомендуется
использовать
фигурные
скобки.
Составная
команда
compound-command
выполняется
всякий раз,
когда fname
указано в
качестве
названия
простой
команды. В
режиме posix name
должно
быть
допустимым
названием
для
оболочки и
не может
быть
названием
одного из
POSIX special builtins. В
режиме по
умолчанию
названием
функции
может быть
любое
слово без
кавычек,
которое не
содержит
$.
Любые
перенаправления
(смотрите
раздел
ПЕРЕНАПРАВЛЕНИЕ
ниже),
указанные
при
определении
функции,
выполняются
при ее
выполнении.
Статус
завершения
определения
функции
равен нулю,
если
только не
возникает
синтаксическая
ошибка или
функция с
таким же
названием,
доступная
только для
чтения, уже
не
существует.
При
выполнении
статус
завершения
функции
равен
статусу
завершения
последней
команды,
выполненной
в её еле
(смотрите
раздел
ФУНКЦИИ
ниже).
КОММЕНТАРИИ
В
неинтерактивной
оболочке
или в
интерактивной
оболочке, в
которой
включена
опция interactive_comments
для
встроенной
команды shopt
(смотрите
раздел
ВСТРОЕННЫЕ
КОМАНДЫ
ОБОЛОЧКИ
ниже), слово,
начинающееся
с #,
содержит
комментарий.
Слово
начинается
в начале
строки,
после
пробела
без
кавычек
или после
оператора.
Комментарий
приводит к
тому, что
это слово и
все
остальные
символы в
этой
строке
игнорируются.
Интерактивная
оболочка
без
включенной
опции interactive_comments
не
допускает
комментариев.
Опция interactive_comments
включена
по
умолчанию
в
интерактивных
оболочках.
КАВЫЧКИ
Кавычки
Quoting
используется
для
удаления
специального
значения
определенных
символов
или слов из
командной
строки.
Кавычки
могут
использоваться
для
отключения
специальной
обработки
специальных
символов,
для
предотвращения
распознавания
зарезервированных
слов как
таковых и
для
предотвращения
расширения
параметров.
Каждый из
метасимволов
metacharacters,
перечисленных
выше в
разделе
ОПРЕДЕЛЕНИЯ,
имеет
особое
значение
для
оболочки и
должен
быть
заключен в
кавычки,
если он
должен
только
представлять
сам себя.
Когда
используются
средства
расширения
истории
команд
(смотрите
раздел
РАСШИРЕНИЕ
ИСТОРИИ
ниже), тогда
символ,
(обычно !)
для
предотвращения
расширения
истории history
expansion, должен
быть
заключен в
кавычки.
Существует
четыре
механизма
кавычек:
символы escape escape
character,
одинарные
кавычки,
двойные
кавычки и
одинарные
кавычки в
знаках
доллара.
Обратная
косая
черта без
кавычек (\) -
это escape character -
экранирующий
символ. Он
сохраняет
буквальное
значение
следующего
за ним
символа,
удаляя
любое его
специальное
значение,
за
исключением
<newline>. Если
появляется
пара \<newline>, а
обратная
косая
черта сама
по себе не
заключена
в кавычки,
то \<newline>
рассматривается
как
продолжение
строки (то
есть
удаляется
из
входного
потока и
фактически
игнорируется).
При
заключении
символов в
одинарные
кавычки
сохраняется
буквальное
значение
каждого
символа
внутри
кавычек.
Одинарная
кавычка
может не
заключаться
в
одинарные
кавычки,
даже если
перед ней
стоит
обратная
косая
черта.
При
заключении
символов в
двойные
кавычки
сохраняется
буквальное
значение
всех
символов в
кавычках,
за
исключением
$, `, \ и, если
включено
расширение
истории, !.
Когда
оболочка
находится
в режиме posix,
символ ! не
имеет
особого
значения в
двойных
кавычках,
даже если
включено
расширение
истории.
Символы $ и
`
сохраняют
свое
особое
значение в
двойных
кавычках.
Обратная
косая
черта
сохраняет
свое
особое
значение
только в
том случае,
если за ней
следует
один из
следующих
символов: $,
`, ", \ или
<newline>.
Обратные
косые
черты,
предшествующие
символам
без
специального
значения,
остаются
без
изменений.
Двойная
кавычка
может быть
заключена
в двойные
кавычки,
если перед
ней
поставить
обратную
косую
черту. Если
эта опция
включена,
то будет
выполнено
расширение
истории,
если
только !,
заключенный
в двойные
кавычки, не
будет
экранирован
с помощью
обратной
косой
черты.
Обратная
косая
черта,
предшествующая
!, не
удаляется.
Специальные
параметры
* и @ имеют
специальное
значение,
когда они
заключены
в двойные
кавычки
(смотрите
раздел
ПАРАМЕТРЫ
ниже).
Последовательности
символов
вида $'string'
рассматриваются
как особый
вариант
одинарных
кавычек.
Последовательность
расширяется
до string, при
этом
символы,
экранированные
обратной
косой
чертой, в string
заменяются
в
соответствии
со
стандартом
ANSI C.
Управляющие
последовательности
с обратной
косой
чертой,
если они
присутствуют,
декодируются
следующим
образом:
- \a
- сигнал
тревоги
(сирена)
- \b
- возврат на
один
символ
- \e
- \E
- экранирующий
символ
- \f
- новая
страница
- \n
- новая
строка
- \r
- возврат
каретки
- \t
- горизонтальная
табуляция
- \v
- вертикальная
табуляция
- \\
- обратная
косая
черта
- \'
- одиночная
кавычка
- \"
- двойная
кавычка
- \?
- вопросительный
знак
- \nnn
- Восьмибитный
символ,
значением
которого
является
восьмеричное
значение
nnn (от одной
до трех
восьмеричных
цифр).
- \xHH
- Восьмибитный
символ,
значением
которого
является
шестнадцатеричное
значение HH
(одна или
две
шестнадцатеричные
цифры).
- \uHHHH
- Символ в
кодировке
Unicode (ISO/IEC 10646),
значением
которого
является
шестнадцатеричное
значение
HHHH (от одной
до четырех
шестнадцатеричных
цифр).
- \UHHHHHHHH
- Символ в
кодировке
Unicode (ISO/IEC 10646),
значением
которого
является
шестнадцатеричное
значение
HHHHHHHH (от одной
до восьми
шестнадцатеричных
цифр).
- \cx
- Управляющий
символ-x.
Расширенный
результат
заключен в
одинарные
кавычки,
как если бы
знак
доллара
отсутствовал.
Перевод
строк
Строка,
заключенная
в двойные
кавычки,
перед
которой
стоит знак
доллара
($"string"),
переводится
в
соответствии
с текущей
локалью.
Инфраструктура
gettext
выполняет
поиск и
преобразование,
используя
переменные
оболочки
LC_MESSAGES, TEXTDOMAINDIR и TEXTDOMAIN.
Если
текущей
локалью
является C
или POSIX, и
если
перевод
недоступен
или если
строка не
переведена,
то знак
доллара
игнорируется,
а строка
обрабатывается
как
заключенная
в двойные
кавычки,
как
описано
выше. Это
форма
двойных
кавычек,
поэтому
строка по
умолчанию
остается
заключенной
в двойные
кавычки
независимо
от того,
переведена
она и
заменена
или нет.
Если опция
noexpand_translation
включена с
помощью
встроенной
функции shopt,
то
переведенные
строки
заключаются
в
одинарные,
а не в
двойные
кавычки.
Смотрите
описание
команды shopt
ниже в
разделе
ВСТРОЕННЫЕ
КОМАНДЫ
ОБОЛОЧКИ.
ПАРАМЕТРЫ
Параметр
parameter - это
объект, в
котором
хранятся
значения.
Это может
быть
название
name, число
или один из
специальных
символов,
перечисленных
ниже в
подразделе
Специальные
параметры.
Переменная
variable - это
параметр,
обозначающий
name.
Переменная
имеет
значение
value и ноль
или более
атрибутов
attributes.
Атрибуты
присваиваются
с помощью
встроенной
команды declare
(смотрите
описание
команды declare
ниже в
разделе
ВСТРОЕННЫЕ
КОМАНДЫ
ОБОЛОЧКИ).
Встроенные
команды
export и readonly
назначают
специальные
атрибуты.
Параметр
считается
установленным,
если ему
было
присвоено
значение.
Строка
ноль
является
допустимым
значением.
После того,
как
переменная
установлена,
ее можно
отменить
только с
помощью
встроенной
команды unset
(смотрите
раздел
ВСТРОЕННЫЕ
КОМАНДЫ
ОБОЛОЧКИ
ниже).
Значение
variable
присваивается
с помощью
инструкции
вида
Если value не
задано, то
переменной
присваивается
нулевая
строка. Все
value
расширяются
тильдой,
параметрами
и
переменными,
заменой
команд,
арифметическим
расширением
и
удалением
кавычек
(смотрите
раздел
РАСШИРЕНИЕ
ниже). Если
для
переменной
задан
атрибут
целое
число integer,
то value
вычисляется
как
арифметическое
выражение,
даже если
расширение
$((...)) не
используется
(смотрите
подраздел
Арифметическое
расширение
ниже).
Разделение
слов и
расширение
названия
пути не
выполняются.
Операторы
присваивания
могут
также
использоваться
в качестве
аргументов
для
встроенных
команд alias,
declare, typeset, export, readonly и
local (команды
declaration). В
режиме posix
эти
встроенные
элементы
могут
появляться
в команде
после
одного или
нескольких
экземпляров
встроенного
элемента
command и
сохранять
свойства
выражения
присваивания.
В
контексте,
когда
оператор
присваивания
присваивает
значение
переменной
оболочки
или
индексу
массива,
оператор
присваивания
присваивает
значение
переменной
оболочки
или
индексу
массива “+=”
оператор
добавляет
к
предыдущему
значению
переменной.
Это
включает
аргументы
для команд
declaration, таких
как declare,
которые
принимают
выражение
присваивания.
Когда “+=”
применяется
к
переменной,
для
которой
задан
атрибут integer,
текущее
значение
переменной
и значение
valueвычисляются
как
арифметические
выражения,
а сумма
результатов
присваивается
в качестве
значения
переменной.
Текущее
значение
обычно
является
целочисленной
константой,
но может
быть и
выражением.
Когда “+=”
применяется
к
переменной
массива с
помощью
составного
присваивания
(смотрите
подраздел
Массивы
ниже),
значение
переменной
не
является
неустановленным
(как это
происходит
при
использовании
“=”), и новые
значения
добавляются
к массиву,
начиная с
значения,
на единицу
превышающего
максимальный
индекс
массива
(для
индексированных
массивов),
или
добавляются
в качестве
дополнительных
пар
ключ-значение
в
ассоциативном
массиве.
При
применении
к
переменной,
имеющей
строковое
значение,
value
расширяется
и
добавляется
к значению
переменной.
Переменной
можно
присвоить
атрибут nameref,
используя
опцию -n для
встроенных
команд declare
или local
(смотрите
описания
declare и local ниже),
чтобы
создать nameref
или ссылку
на еще одну
переменную.
Это
позволяет
косвенно
манипулировать
переменными.
Всякий раз,
когда
ссылаются
на
переменную
nameref, то ей
присваивают
значение,
сбрасывают
значение
или
изменяют
ее
атрибуты
(кроме
использования
или
изменения
самого
атрибута
nameref),
операция
фактически
выполняется
над
переменной,
указанной
значением
переменной
nameref.
Переменная
nameref обычно
используется
в функциях
оболочки
для ссылки
на
переменную,
название
которой
передается
в качестве
аргумента
функции.
Например,
если
название
переменной
передается
в функцию
оболочки в
качестве
первого
аргумента,
то
командой
внутри
функции
создается
локальная
переменная
nameref,
значением
которой
является
название
переменной
ref,
передаваемое
в качестве
первого
аргумента.
Ссылки и
присвоения
переменной
ref, а также
изменения
ее
атрибутов
рассматриваются
как ссылки,
присвоения
и
модификации
атрибутов
переменной,
название
которой
было
передано
как $1. Если
управляющая
переменная
в цикле for
имеет
атрибут nameref,
список
слов может
быть
списком
переменных
оболочки, и
при
выполнении
цикла для
каждого
слова в
списке, в
свою
очередь,
устанавливается
ссылка на
название.
Переменным
массива не
может быть
присвоен
атрибут nameref.
Однако
переменные
nameref могут
ссылаться
на
переменные
массива и
переменные
массива с
индексом.
Значения nameref
можно
отменить,
используя
опцию -n для
встроенной
команды unset.
В
противном
случае,
если unset
выполняется
с
названием
переменной
nameref в
качестве
аргумента,
то
переменная,
на которую
ссылается
переменная
nameref, не
установлена.
Когда
оболочка
запускается,
она
считывает
свою
окружающую
среду и
создает
переменную
оболочки
из каждой
переменной
окружающей
среды,
которая
имеет
допустимое
название,
как
описано
ниже
(смотрите
раздел
ОКРУЖАЮЩАЯ
СРЕДА).
Позиционные
параметры
Позиционный
параметр
positional parameter - это
параметр,
обозначаемый
одной или
несколькими
цифрами,
отличными
от цифры 0.
Позиционные
параметры
назначаются
из
аргументов
командной
строки при
ее вызове и
могут быть
переназначены
с помощью
встроенной
команды set.
Позиционные
параметры
не могут
быть
назначены
с помощью
команды
присваивания.
Позиционные
параметры
временно
заменяются
при
выполнении
функции
оболочки
(смотрите
раздел
ФУНКЦИИ
ниже).
Если
позиционный
параметр,
состоящий
более чем
из одной
цифры,
раскрывается,
то он
должен
быть
заключен в
фигурные
скобки
(смотрите
раздел
РАСШИРЕНИЕ
ниже). Без
фигурных
скобок
цифра,
следующая
за $, может
относиться
только к
одному из
первых
девяти
позиционных
параметров
($1-$9) или к
специальному
параметру
$0 (смотрите
следующий
раздел).
Специальные
параметры
Оболочка
обрабатывает
несколько
параметров
особым
образом. На
эти
параметры
можно
только
ссылаться;
присвоение
им
значений
запрещено.
Специальные
параметры
обозначаются
одним из
следующих
символов.
- *
- ($*)
Расширяется
до
позиционных
параметров,
начиная с
единицы.
Если
расширение
не
заключено
в двойные
кавычки,
каждый
позиционный
параметр
расширяется
до
отдельного
слова. В
контекстах,
где
выполняется
расширение
слов, эти
слова
подлежат
дальнейшему
разбиению
на слова и
расширению
названия
пути. Когда
расширение
происходит
в двойных
кавычках,
оно
расширяется
до одного
слова со
значением
каждого
параметра,
разделенного
первым
символом
переменной
IFS. То есть,
"$*"
эквивалентно
"$1c$2c...",
где c - это
первый
символ
значения
переменной
IFS. Если
значение
IFS не
задано, то
параметры
разделяются
пробелами.
Если
значение
IFS равно
ноль, то
параметры
объединяются
без
промежуточных
разделителей.
- @
- ($@)
Расширяется
до
позиционных
параметров,
начиная с
единицы. В
контекстах,
где
выполняется
разбиение
слов, это
расширяет
каждый
позиционный
параметр
до
отдельного
слова; если
они не
заключены
в двойные
кавычки,
эти слова
подлежат
разбиению
на слова. В
контекстах,
где
разделение
слов не
выполняется,
например, в
части
значений
оператора
присваивания,
оно
расширяется
до одного
слова, при
этом
каждый
позиционный
параметр
разделяется
пробелом.
Когда
расширение
происходит
в двойных
кавычках и
выполняется
разделение
слов,
каждый
параметр
расширяется
до
отдельного
слова.
Таким
образом,
"$@"
эквивалентно
"$1" "$2" ...
Если в
слове
используется
расширение
в двойных
кавычках в
пределах
слова
расширение
первого
параметра
соединяется
с
расширением
начальной
части
исходного
слова, а
расширение
последнего
параметра
соединяется
с
расширением
последней
части
исходного
слова.
Когда
позиционных
параметров
нет, "$@" и $@
расширяются
до нуля (т.е.
удаляются).
- #
- ($#)
Расширяется
до
количества
позиционных
параметров
в
десятичной
системе
счисления.
- ?
- ($?)
Расширяется
до статуса
завершения
последней
выполненной
команды.
- -
- ($-)
Расширяется
до флагов
текущей
опции,
указанных
при вызове
встроенной
командой
set или
установленных
самой
оболочкой
(например,
опцией -i).
- $
- ($$)
Расширяется
до
идентификатора
процесса ID
оболочки. В
подоболочке
он
расширяется
до
идентификатора
процесса
родительской
оболочки, а
не
подоболочки.
- !
- ($!)
Расширяется
до
идентификатора
процесса
задания,
которое
последним
было
переведено
в фоновый
режим,
независимо
от того,
выполняется
ли оно как
асинхронная
команда
или с
использованием
встроенной
команды bg
(смотрите
раздел
УПРАВЛЕНИЕ
ЗАДАНИЕМ
ниже).
- 0
- ($0)
Расширяется
до
названия
оболочки
или
сценария
оболочки.
Это
значение
задается
при
инициализации
оболочки.
Если bash
вызывается
файлом
команд, то
$0
присваивается
название
этого
файла. Если
bash
запускается
с опцией -c,
то $0
присваивается
значение
первого
аргумента
после
строки,
которая
должна
быть
выполнена,
если
таковая
присутствует.
В
противном
случае ей
присваивается
значение
названия
файла,
используемого
для вызова
bash, как
указано в
нулевом
аргументе.
Переменные
оболочки
Оболочка
устанавливает
следующие
переменные:
- _
- ($_, символ
подчеркивания)
Это слово
имеет
несколько
значений в
зависимости
от
контекста.
При
запуске
оболочки _
задается
как путь,
используемый
для вызова
оболочки
или
исполняемого
сценария
оболочки,
который
передается
в
окружающей
среде или в
списке
аргументов.
Впоследствии,
после
расширения,
он
расширяется
до
последнего
аргумента
предыдущей
простой
команды,
выполненной
на
переднем
плане.
Также
устанавливается
полный
путь,
используемый
для вызова
каждой
команды,
которая
выполняется
и
помещается
в
окружающую
среду,
экспортируемую
для этой
команды.
При
проверке
почты $_
расширяется
до
названия
проверяемого
в данный
момент
почтового
файла.
- BASH
- Расширяется
до полного
названия
файла,
используемого
для вызова
этого
экземпляра
bash.
- BASHOPTS
- Список
включенных
опций
оболочки,
разделенных
двоеточием.
Каждое
слово в
списке
является
допустимым
аргументом
для опции
-s для
встроенной
команды shopt
(смотрите
раздел
ВСТРОЕННЫЕ
КОМАНДЫ
ОБОЛОЧКИ
ниже).
Опции,
отображаемые
в BASHOPTS, - это
те, о
которых
shopt
сообщает
как о on.
Если эта
переменная
присутствует
в
окружающей
среде при
запуске bash,
то
оболочка
включает
каждую
опцию в
списке
перед
чтением
любых
файлов
запуска.
Если эта
переменная
экспортирована,
то
дочерние
оболочки
будут
включать
каждую
опцию в
списке. Эта
переменная
доступна
только для
чтения.
- BASHPID
- Расширяется
до
идентификатора
ID текущего
процесса
bash. Это
отличается
от $$ при
определенных
обстоятельствах,
например,
для
подоболочек,
которые не
требуют
повторной
инициализации
bash.
Присвоение
BASHPID не
имеет
никакого
эффекта.
Если
значение
BASHPID не
задано, то
оно теряет
свои
специальные
свойства,
даже если
впоследствии
оно будет
сброшено.
- BASH_ALIASES
- Переменная
ассоциативного
массива,
элементы
которой
соответствуют
внутреннему
списку
псевдонимов,
поддерживаемому
встроенной
командой
alias.
Элементы,
добавленные
в этот
массив,
отображаются
в списке
псевдонимов;
однако
сброс
настроек
элементов
массива в
настоящее
время не
приводит к
удалению
псевдонимов
из списка
псевдонимов.
Если
значение
BASH_ALIASES не
задано, то
оно теряет
свои
специальные
свойства,
даже если
впоследствии
будет
сброшено.
- BASH_ARGC
- Переменная
массива,
значения
которой
представляют
собой
количество
параметров
в каждом
кадре
текущего
стека
вызовов
для
выполнения
bash.
Количество
параметров
текущей
подпрограммы
(функции
оболочки
или
сценария,
выполняемого
с помощью
команд .
или source)
находится
в верхней
части
стека.
Когда
выполняется
подпрограмма,
количество
переданных
параметров
записывается
в BASH_ARGC.
Оболочка
устанавливает
значение
BASH_ARGC только
в режиме
расширенной
отладки
(смотрите
описание
опции extdebug
для
встроенной
команды shopt
ниже).
Установка
extdebug после
того, как
оболочка
начала
выполнять
сценарий,
или
обращение
к этой
переменной,
когда
значение
extdebug не
задано,
может
привести к
несогласованным
значениям.
Присвоения
BASH_ARGC не
имеют
никакого
эффекта и
оно не
может быть
отменено.
- BASH_ARGV
- Переменная
массива,
содержащая
все
параметры
текущего
стека
вызовов
для
выполнения
bash.
Последний
параметр
последнего
вызова
подпрограммы
находится
в верхней
части
стека;
первый
параметр
начального
вызова
находится
в нижней
части
стека.
Когда
выполняется
подпрограмма,
оболочка
помещает
предоставленные
параметры
в BASH_ARGV.
Оболочка
устанавливает
значение
BASH_ARGV только
в режиме
расширенной
отладки
(смотрите
описание
параметра
extdebug для
встроенной
команды shopt
ниже).
Установка
extdebug после
того, как
оболочка
начала
выполнять
сценарий,
или
обращение
к этой
переменной,
когда
значение
extdebug не
задано,
может
привести к
несогласованным
значениям.
Присвоения
BASH_ARGV не
имеют
никакого
эффекта и
оно не
может быть
отменено.
- BASH_ARGV0
- При
обращении
к этой
переменной
она
расширяется
до
названия
оболочки
или
сценария
оболочки
(идентично
$0;
смотрите
описание
специального
параметра 0
выше).
Присвоение
значения
BASH_ARGV0
присваивает
$0 то же
значение.
Если
значение
BASH_ARGV0 не
задано, то
оно теряет
свои
специальные
свойства,
даже если
впоследствии
будет
сброшено.
- BASH_CMDS
- Переменная
ассоциативного
массива,
элементы
которой
соответствуют
внутренней
хэш-таблице
команд,
поддерживаемой
встроенной
командой
hash.
Добавление
элементов
в этот
массив
приводит к
их
отображению
в
хэш-таблице;
однако
удаление
элементов
массива в
настоящее
время не
приводит к
удалению
названий
команд из
хэш-таблицы.
Если
значение
BASH_CMDS не
задано, то
оно
теряет
свои
специальные
свойства,
даже если
впоследствии
будет
сброшено.
- BASH_COMMAND
- Расширяется
до команды,
которая
выполняется
в данный
момент или
вот-вот
будет
выполнена,
если
только
оболочка
не
выполняет
команду в
результате
перехвата,
и в этом
случае это
команда,
выполняющаяся
во время
перехвата.
Если
значение
BASH_COMMAND не
задано, то
оно теряет
свои
специальные
свойства,
даже если
впоследствии
будет
сброшено.
- BASH_EXECUTION_STRING
- Аргумент
команды
для опции
вызова -c.
- BASH_LINENO
- Переменная
массива,
элементами
которой
являются
номера
строк в
исходных
файлах, в
которых
был вызван
каждый
соответствующий
элемент
FUNCNAME. ${BASH_LINENO[$i]} -
это номер
строки в
исходном
файле
(${BASH_SOURCE[$i+1]}), где
${FUNCNAME[$i]} был
вызван (или
${BASH_LINENO[$i-1]},
если на
него
ссылаются
в другой
функции
оболочки).
Используйте
LINENO, чтобы
получить
текущий
номер
строки.
Присвоение
BASH_LINENO не
имеет
никакого
эффекта и
не может
быть
отменено.
- BASH_LOADABLES_PATH
- Список
каталогов,
разделенных
двоеточием,
в которых
команда enable
выполняет
поиск
динамически
загружаемых
встроенных
команд.
- BASH_MONOSECONDS
- При каждом
обращении
к этой
переменной
она
расширяется
до
значения,
возвращаемого
системными
монотонными
часами,
если
таковые
имеются.
Если
монотонных
часов нет,
это
эквивалентно
EPOCHSECONDS. Если
значение
BASH_MONOSECONDS не
задано, то
оно теряет
свои
специальные
свойства,
даже если
впоследствии
будет
сброшено.
- BASH_REMATCH
- Переменная
массива,
элементы
которой
присваиваются
двоичным
оператором
=~ условной
команде [[.
Элемент с
индексом 0 -
это часть
строки,
соответствующая
всему
регулярному
выражению.
Элемент с
индексом n
- это часть
строки,
соответствующая
n-му
подвыражению,
заключенному
в круглые
скобки.
- BASH_SOURCE
- Переменная
массива,
элементами
которой
являются
названия
исходных
файлов, в
которых
определены
соответствующие
названия
функций
оболочки в
переменной
массива
FUNCNAME.
Функция
оболочки
${FUNCNAME[$i]}
определена
в файле
${BASH_SOURCE[$i]} и
вызывается
из ${BASH_SOURCE[$i+1]}.
Присвоения
BASH_SOURCE не
имеют
никакого
эффекта и
не могут
быть
отменены.
- BASH_SUBSHELL
- Увеличивается
на единицу
в каждой
подоболочке
или
окружающей
среде
подоболочек,
когда
оболочка
начинает
выполняться
в этой
среде.
Начальное
значение
равно 0.
Если
значение
BASH_SUBSHELL не
задано, то
оно
теряет
свои
специальные
свойства,
даже если
впоследствии
будет
сброшено.
- BASH_TRAPSIG
- Присваивается
номер
сигнала,
соответствующий
выполняемому
действию
перехватчика
во время
его
выполнения.
Смотрите
описание
trap в
разделе
ВСТРОЕННЫЕ
КОМАНДЫ
ОБОЛОЧКИ
ниже для
получения
информации
о номерах
сигналов и
выполнении
перехватчика
trap.
- BASH_VERSINFO
- Переменная
массива,
доступная
только для
чтения,
элементы
которой
содержат
информацию
о версии
для
данного
экземпляра
bash.
Элементам
массива
присваиваются
следующие
значения:
- BASH_VERSION
- Расширяется
до строки,
описывающей
версию
этого
экземпляра
bash
(например,
реализация
5.2.37(3)).
- COMP_CWORD
- Индекс
слова в ${COMP_WORDS},
содержащего
текущее
положение
курсора.
Эта
переменная
доступна
только в
функциях
оболочки,
вызываемых
средствами
завершения
программы
(смотрите
подраздел
Завершение
программы
ниже).
- COMP_KEY
- Клавиша
(или
последняя
клавиша в
последовательности
клавиш),
используемая
для вызова
текущей
функции
завершения.
Эта
переменная
доступна
только в
функциях
командной
строки и
внешних
командах,
вызываемых
средствами
программируемого
завершения
(смотрите
подраздел
Программируемое
завершение
ниже).
- COMP_LINE
- Текущая
командная
строка. Эта
переменная
доступна
только в
функциях
оболочки и
внешних
командах,
вызываемых
средствами
завершения
программы
(смотрите
подраздел
Завершение
программы
ниже).
- COMP_POINT
- Индекс
текущей
позиции
курсора
относительно
начала
текущей
команды.
Если
текущая
позиция
курсора
находится
в конце
текущей
команды, то
значение
этой
переменной
равно ${#COMP_LINE}.
Эта
переменная
доступна
только в
функциях
оболочки и
внешних
командах,
вызываемых
средствами
завершения
программ
(смотрите
подраздел
Завершение
программы
ниже).
- COMP_TYPE
- Присваивается
целочисленное
значение,
соответствующее
типу
попытки
завершения,
вызвавшей
вызов
функции
завершения:
TAB, для
обычного
завершения
- ?, для
перечисления
завершений
после
последовательных
табуляций -
!, для
перечисления
альтернатив
при
частичном
завершении
слова - @,
вывод
списка
дополнений,
если слово
не
изменено,
или % для
завершения
меню. Эта
переменная
доступна
только в
функциях
оболочки и
внешних
командах,
вызываемых
средствами
программируемого
завершения
(смотрите
Программируемое
завершение
ниже).
- COMP_WORDBREAKS
- Набор
символов,
которые
библиотека
readline
обрабатывает
как
разделители
слов при
выполнении
завершения
слова. Если
значение
COMP_WORDBREAKS не
задано, то
оно теряет
свои
специальные
свойства,
даже если
впоследствии
оно будет
сброшено.
- COMP_WORDS
- Переменная
типа
массива
(смотрите
Массивы
ниже),
состоящая
из
отдельных
слов в
текущей
командной
строке.
Строка
разбивается
на слова
так, как ее
разбила бы
readline,
используя
COMP_WORDBREAKS, как
описано
выше. Эта
переменная
доступна
только в
функциях
оболочки,
вызываемых
средствами
программируемого
завершения
(см.
подраздел
Завершение
программ
ниже).
- COPROC
- Переменная
массива
(смотрите
подраздел
Массивы
ниже),
созданная
для
хранения
дескрипторов
файлов для
вывода и
ввода в не
именованный
сопроцесс
(смотрите
подраздел
Сопроцессы
выше).
- DIRSTACK
- Переменная
массива
(смотрите
подраздел
Массивы
ниже),
содержащая
текущее
содержимое
стека
каталогов.
Каталоги
отображаются
в стеке в
том
порядке, в
котором
они
отображаются
встроенной
командой
dirs.
Присвоение
элементам
этого
массива
переменной
может
использоваться
для
изменения
каталогов,
уже
находящихся
в стеке, но
для
добавления
и удаления
каталогов
необходимо
использовать
встроенные
команды pushd
и popd.
Присвоение
этой
переменной
не
изменяет
текущий
каталог.
Если DIRSTACK
не
установлено,
то это
теряет
свои
специальные
свойства,
даже если
впоследствии
будет
сброшено.
- EPOCHREALTIME
- При каждом
обращении
к этому
параметру
он
увеличивается
до
количества
секунд,
прошедших
с начала
эпохи Unix
(смотрите
time(3)), в виде
значения с
плавающей
запятой с
микросекундной
детализацией.
Присвоения
EPOCHREALTIME
игнорируются.
Если EPOCHREALTIME
не
установлено,
то оно
теряет
свои
специальные
свойства,
даже если
впоследствии
будет
сброшено.
- EPOCHSECONDS
- Каждый раз,
когда этот
параметр
ссылается,
он
расширяется
до
количества
секунд с
момента
начала
эпохи Unix
(смотрите
time(3)).
Установка
EPOCHSECONDS
игнорируется.
Если EPOCHSECONDS
не задан,
то он
теряет
свои
специальные
свойства,
даже если
впоследствии
будет
сброшен.
- EUID
- Расширяется
до
эффективного
пользовательского
идентификатора
для
текущего
пользователя,
инициализированного
при
запуске
оболочки.
Эта
переменная
доступна
только для
чтения.
- FUNCNAME
- Переменная
массива,
содержащая
названия
всех
функций
оболочки, в
настоящее
время в
стеке
вызовов
выполнения.Элемент
с индексом
0-это
название
любой в
настоящее
время
выполняющейся
функцию
оболочки.Самый
нижний
элемент
(тот,
который с
самым
большим
индексом)
“main”. Эта
переменная
существует
только при
выполнении
функции
оболочки.
Установка
FUNCNAME не
действует.Если
FUNCNAME не
установлена,
то она
теряет
свои
специальные
свойства,
даже если
впоследствии
будет
сброшена.
- Эта
переменная
может
использоваться
с BASH_LINENO и
BASH_SOURCE.
Каждому
элементу
FUNCNAME
соответствуют
элементы в
BASH_LINENO и BASH_SOURCE
для
описания
стека
вызовов.
Например,
${FUNCNAME[$i]} была
вызвана из
файла
${BASH_SOURCE[$i+1]} с
номером
строки
${BASH_LINENO[$i]}.
Встроенная
команда caller
отображает
текущий
стек
вызовов,
используя
эту
информацию.
- GROUPS
- Переменная
массива,
содержащая
список
групп,
членом
которых
является
текущий
пользователь.
Присвоения
GROUPS не
имеют
значения.
Если
значение
GROUPS не
задано, то
оно теряет
свои
специальные
свойства,
даже если
впоследствии
оно будет
сброшено.
- HISTCMD
- Номер
истории
или индекс
в списке
истории
текущей
команды.
Присвоения
HISTCMD не
имеют
никакого
эффекта.
Если
значение
HISTCMD не
задано, то
оно теряет
свои
специальные
свойства,
даже если
впоследствии
будет
сброшено.
- HOSTNAME
- Автоматически
устанавливается
на
название
текущего
хоста.
- HOSTTYPE
- Автоматически
устанавливает
строку,
однозначно
описывающую
тип
завершения,
на котором
выполняется
bash.
Значение
по
умолчанию
зависит от
системы.
- LINENO
- При каждом
обращении
к этому
параметру
оболочка
подставляет
десятичное
число,
представляющее
текущий
порядковый
номер
строки
(начинающийся
с 1) в
скрипте
или
функции.
Если его
нет в
скрипте
или
функции, то
не
гарантируется,
что
подставленное
значение
будет
значимым.
Если
параметр
LINENO не
установлен,
то он
теряет
свои
специальные
свойства,
даже если
впоследствии
будет
сброшен.
- MACHTYPE
- Автоматически
устанавливает
строку,
полностью
описывающую
тип
системы, на
которой
выполняется
bash, в
стандартном
формате GNU
cpu-company-system.
Значение
по
умолчанию
зависит от
системы.
- MAPFILE
- Переменная
массива
(смотрите
подраздел
Массивы
ниже),
созданная
для
хранения
текста,
считываемого
из
встроенного
файла mapfile,
когда
название
переменной
не
указано.
- OLDPWD
- Предыдущий
рабочий
каталог,
заданный
командой
cd.
- OPTARG
- Значение
последнего
аргумента
опции,
обработанного
встроенной
командой
getopts
(смотрите
раздел
ВСТРОЕННЫЕ
КОМАНДЫ
ОБОЛОЧКИ
ниже).
- OPTIND
- Индекс
следующего
аргумента,
который
будет
обработан
встроенной
командой
getopts
(смотрите
раздел
ВСТРОЕННЫЕ
КОМАНДЫ
ОБОЛОЧКИ
ниже).
- OSTYPE
- Автоматически
устанавливает
строку,
описывающую
операционную
систему, в
которой
выполняется
bash.
Значение
по
умолчанию
зависит от
системы.
- PIPESTATUS
- Переменная
массива
(смотрите
подраздел
Массивы
ниже),
содержащая
список
значений
статуса
завершения
команд в
конвейере
переднего
плана,
который
может
состоять
только из
простой
команды
(смотрите
раздел
ГРАММАТИКА
ОБОЛОЧКИ
выше). Bash
устанавливает
PIPESTATUS после
выполнения
многоэлементных
конвейеров,
конвейеров
с
синхронизацией
и отменой,
простых
команд,
вложенных
оболочек,
созданных
с помощью
оператора,
составных
команд [[ и
((, а также
после
возникновения
ошибок,
которые
приводят к
появлению
прерываний
оболочки
при
выполнения
команды.
- PPID
- Идентификатор
процесса
родительской
оболочки.
Эта
переменная
доступна
только для
чтения.
- PWD
- Текущий
рабочий
каталог,
заданный
командой
cd.
- RANDOM
- При каждом
обращении
к этому
параметру
он
расширяется
до
случайного
целого
числа в
диапазоне
от 0 до 32767.
Присвоение
значения
RANDOM
инициализирует
(определяет)
последовательность
случайных
чисел. При
вводе в
генератор
случайных
чисел того
же
постоянного
значения
получается
та же
последовательность
значений.
Если
значение
RANDOM не
задано, то
оно теряет
свои
специальные
свойства,
даже если
впоследствии
будет
сброшено.
- READLINE_ARGUMENT
- Любой
числовой
аргумент,
переданный
команде readline,
которая
была
определена
с помощью
“bind -x”
(смотрите
раздел
ВСТРОЕННЫЕ
КОМАНДЫ
ОБОЛОЧКИ
ниже),
когда он
был
вызван.
- READLINE_LINE
- Содержимое
буфера
строк readline,
предназначенного
для
использования
с “bind -x”
(смотрите
ВСТРОЕННЫЕ
КОМАНДЫ
ОБОЛОЧКИ
ниже).
- READLINE_MARK
- Положение
метки
(сохраненной
точки
вставки) в
буфере
строк readline
для
использования
с “bind -x”
(смотрите
ниже
раздел
ВСТРОЕННЫЕ
КОМАНДЫ
ОБОЛОЧКИ).
Символы
между
точкой
вставки и
меткой
часто
называются
region.
- READLINE_POINT
- Положение
точки
вставки в
буфере
строк readline
для
использования
с “bind -x”
(смотрите
ВСТРОЕННЫЕ
КОМАНДЫ
ОБОЛОЧКИ
ниже).
- REPLY
- Устанавливается
в строку
ввода,
считываемую
встроенной
командой
read, когда
аргументы
не
указаны.
- SECONDS
- При каждом
обращении
к этому
параметру
он
увеличивается
до
количества
секунд с
момента
вызова
оболочки.
Если
значение
переменной
SECONDS
задано, то
при
последующих
обращениях
к ней
возвращается
значение,
равное
количеству
секунд с
момента
присвоения
плюс
присвоенное
значение.
Количество
секунд при
вызове
оболочки и
текущее
время
всегда
определяются
путем
запроса
системных
часов с
разрешением
в одну
секунду.
Если
значение
SECONDS не
задано, оно
теряет
свои
специальные
свойства,
даже если
впоследствии
оно будет
сброшено.
- SHELLOPTS
- Список
включенных
опций
оболочки,
разделенных
двоеточием.
Каждое
слово в
списке
является
допустимым
аргументом
для опции
-o для
встроенной
команды set
(смотрите
раздел
ВСТРОЕННЫЕ
КОМАНДЫ
ОБОЛОЧКИ
ниже).
Опции,
отображаемые
в SHELLOPTS,
указаны
как on в set -o.
Если эта
переменная
присутствует
в
окружающей
среде при
запуске bash,
то
оболочка
включает
каждую
опцию в
списке
перед
чтением
любых
файлов
запуска.
Если эта
переменная
экспортирована,
то
дочерние
оболочки
будут
включать
каждую
опцию в
списке. Эта
переменная
доступна
только для
чтения.
- SHLVL
- Увеличивается
на единицу
при каждом
запуске
экземпляра
bash.
- SRANDOM
- При каждом
обращении
к этой
переменной
она
преобразуется
в
32-разрядное
псевдослучайное
число.
Генератор
случайных
чисел не
является
линейным в
системах,
поддерживающих
/dev/urandom или arc4random(3),
поэтому
каждое
возвращаемое
число не
имеет
отношения
к числам,
предшествующим
ему. Когда
генератор
случайных
чисел не
может быть
запущен,
тогда
присвоения
этой
переменной
значений
не имеют
эффекта.
Если SRANDOM
сброшено,
оно теряет
свои
специальные
свойства,
даже если
впоследствии
будет
сброшено.
- UID
- Расширяется
до
идентификатора
текущего
пользователя,
инициализируемого
при
запуске
командной
строки. Эта
переменная
доступна
только для
чтения.
Оболочка
использует
следующие
переменные.
В
некоторых
случаях bash
присваивает
переменной
значение
по
умолчанию;
эти случаи
описаны
ниже.
- BASH_COMPAT
- Это
значение
используется
для
настройки
уровня
совместимости
оболочки.
Описание
различных
уровней
совместимости
и их
последствий
смотрите в
разделе
РЕЖИМ
СОВМЕСТИМОСТИ
ОБОЛОЧКИ
ниже.
Значением
может
быть
десятичное
число
(например, 4,2)
или целое
число
(например, 42),
соответствующее
желаемому
уровню
совместимости.
Если
значение
для BASH_COMPAT не
задано или
имеет
значение
пустой
строки, то
уровень
совместимости
устанавливается
по
умолчанию
для
текущей
версии.
Если для
BASH_COMPAT задано
значение,
которое не
соответствует
ни одному
из
допустимых
уровней
совместимости,
то
оболочка
выводит
сообщение
об ошибке и
устанавливает
уровень
совместимости
по
умолчанию
для
текущей
версии.
Подмножество
допустимых
значений
соответствует
уровням
совместимости,
описанным
ниже в
разделе
РЕЖИМ
СОВМЕСТИМОСТИ
ОБОЛОЧКИ.
Например,
4.2 и 42
являются
допустимыми
значениями,
которые
соответствуют
опции compat42
команды shopt
и
устанавливают
уровень
совместимости
равным 42.
Текущая
версия
также
является
допустимым
значением.
- BASH_ENV
- Если этот
параметр
задан,
когда bash
выполняет
сценарий
оболочки,
то его
расширенное
значение
интерпретируется
как
название
файла,
содержащее
команды
для
инициализации
оболочки
перед
чтением и
выполнением
команд из
сценария.
Значение
BASH_ENV
подвергается
расширению
параметров,
замене
командами
и
арифметическому
расширению,
прежде чем
оно будет
интерпретировано
как
название
файла. PATH
не
используется
для
поиска
результирующего
названия
файла.
- BASH_XTRACEFD
- Если
задано
целое
число,
соответствующее
допустимому
файловому
дескриптору,
то bash
записывает
выходные
данные
трассировки,
сгенерированные
при “set -x”
включении
для этого
файлового
дескриптора,
вместо
стандартной
ошибки.
Файловый
дескриптор
закрывается,
если BASH_XTRACEFD
сброшено
или ему
присвоено
новое
значение.
Сброс
значения
BASH_XTRACEFD или
присвоение
ему пустой
строки
приводит к
отправке
выходных
данных
трассировки
со
стандартной
ошибкой.
Обратите
внимание,
что
установка
значения
BASH_XTRACEFD
равным 2
(файловый
дескриптор
стандартной
ошибки), а
затем
сброс
этого
значения
приведет к
закрытию
стандартной
ошибки.
- CDPATH
- Путь
поиска для
команды cd.
Это
разделенный
двоеточием
список
каталогов,
в котором
оболочка
выполняет
поиск
каталогов,
указанных
в качестве
аргументов
команды cd.
Примерным
значением
является
“.:~:/usr”.
- CHILD_MAX
- Задайте
количество
завершенных
дочерних
значений
статуса,
которые
должна
запомнить
оболочка.
Bash не
позволит
уменьшить
это
значение
ниже POSIX -
требуемый
минимум, и
существует
максимальное
значение (в
настоящее
время 8192),
которое не
может быть
превышено.
Минимальное
значение
зависит от
системы.
- COLUMNS
- Используется
командой
select для
определения
ширины
терминала
при печати
списков.
Устанавливается
автоматически,
если
включена
опция checkwinsize
или в
интерактивной
командной
строке при
получении
команды
SIGWINCH.
- COMPREPLY
- Переменная
массива, из
которой bash
считывает
возможные
завершения,
сгенерированные
функцией
оболочки,
вызываемой
программируемым
средством
завершения
(смотрите
подраздел
Программируемое
завершение
ниже).
Каждый
элемент
массива
содержит
одно
возможное
завершение.
- EMACS
- Если bash
найдет эту
переменную
в
окружающей
среде,
когда
оболочка
запускается
со
значением
“t”,
предполагающем,
что
оболочка
запущена в
буфере
оболочки Emacs,
и
отключено
редактирование
строк.
- ENV
- Расширяется
и
выполняется
аналогично
BASH_ENV
(смотрите
раздел
ВЫЗОВ
выше) при
вызове
интерактивной
оболочки в
режиме posix.
- EXECIGNORE
- Список
шаблонов
оболочки,
разделенных
двоеточием
(смотрите
подраздел
Сопоставление
с
шаблоном),
определяющий
набор
названий
файлов,
которые
будут
игнорироваться
при поиске
команд с
использованием
PATH. Файлы,
полные
пути к
которым
соответствуют
одному из
этих
шаблонов,
не
считаются
исполняемыми
файлами
для целей
завершения
и
выполнения
команд с
помощью
поиска PATH.
Это не
влияет на
поведение
команд [,
test и [[.
Полные
пути в
хэш-таблице
команд не
зависят от
EXECIGNORE.
Используйте
эту
переменную,
чтобы
игнорировать
файлы
общей
библиотеки,
которые
имеют
установленный
бит
исполняемого
файла, но
не
являются
исполняемыми
файлами.
При
сопоставлении
с шаблоном
учитывается
настройка
опции
оболочки
extglob.
- FCEDIT
- Редактор
по
умолчанию
для
встроенной
команды fc.
- FIGNORE
- Разделенный
двоеточием
список
суффиксов,
которые
следует
игнорировать
при
заполнении
названия
файла
(смотрите
БИБЛИОТЕКА
READLINE ниже).
Название
файла,
суффикс
которого
совпадает
с одной из
записей в
FIGNORE,
исключается
из списка
совпадающих
названий
файлов.
Примерным
значением
является
“.o:~” (При
присвоении
значения
этой
переменной,
содержащего
тильду,
необходимо
заключать
значение в
кавычки).
- FUNCNEST
- Если
задано
числовое
значение,
большее 0,
то это
определяет
максимальный
уровень
вложенности
функции.
Вызовы
функций,
превышающие
этот
уровень
вложенности,
приводят к
прерыванию
текущей
команды.
- GLOBIGNORE
- Список
шаблонов,
разделенных
двоеточием,
определяющий
набор
названий
файлов,
которые
будут
игнорироваться
при
расширении
названия
пути. Если
название
файла,
соответствующее
шаблону
расширения
названия
пути, также
соответствует
одному из
шаблонов в
GLOBIGNORE, то оно
удаляется
из списка
совпадений.
Сопоставление
с наблоном
выполняется
с учетом
настройки
опции
оболочки
extglob.
- GLOBSORT
- Управляет
тем, как
сортируются
результаты
расширения
названия
пути.
Значение
этой
переменной
определяет
критерии
сортировки
и порядок
сортировки
результатов
расширения
названия
пути. Если
эта
переменная
не задана
или имеет
значение
нулевой
строки, то
при
расширении
названия
пути
используется
историческое
поведение
сортировки
по
названию в
лексикографическом
порядке
возрастания,
как
определено
переменной
оболочки
LC_COLLATE.
- Если
задано,
допустимое
значение
начинается
с
необязательного
+, которое
игнорируется,
или -,
которое
меняет
порядок
сортировки
с
восходящего
на
нисходящий,
за которым
следует
спецификатор
сортировки.
Допустимыми
спецификаторами
сортировки
являются
name, numeric, size, mtime, atime,
ctime и blocks,
которые
сортируют
файлы по
названию,
названию в
числовом, а
не
лексикографическом
порядке,
т.е.
размеру
файла,
времяни
модификации,
времяни
доступа,
времяни
изменения
индекса и
количеству
блоков,
соответственно.
Если
какой-либо
из ключей,
отличных
от
названия,
сравнивается
как равный
(например,
если два
файла
имеют
одинаковый
размер), то
при
сортировке
название
используется
в качестве
вторичного
ключа
сортировки.
- Например,
значение
-mtime
сортирует
результаты
в порядке
убывания
по времени
изменения
(сначала
самое
новое).
- Спецификатор
numeric
рассматривает
названия,
состоящие
исключительно
из цифр, т.е.
как числа и
сортирует
их по их
числовому
значению
(таким
образом “2”
сортирует
до “10”,
например).
При
использовании
numeric
названия,
не
содержащие
цифр,
сортируются
после всех
названий,
состоящих
из цифр, и
сортируются
по
названию
традиционным
способом.
- Спецификатор
сортировки
nosort
полностью
отключает
сортировку;
bash
возвращает
результаты
в том
порядке, в
котором
они
считываются
из
файловой
системы,
игнорируя
любые
начальные
значения
-.
- Если
спецификатор
сортировки
отсутствует,
то по
умолчанию
используется
значение
name, поэтому
значение +
эквивалентно
нулевой
строке, а
значение -
выполняет
сортировку
по
названию в
порядке
убывания.
Любое
недопустимое
значение
восстанавливает
историческое
поведение
сортировки.
- HISTCONTROL
- Разделенный
двоеточием
список
значений,
определяющий
порядок
сохранения
команд в
списке
истории.
Если
список
значений
содержит
ignorespace, то
строки,
начинающиеся
с символа
space, не
сохраняются
в списке
истории.
Значение
ignoredups
приводит к
тому, что
строки,
соответствующие
предыдущей
записи в
истории, не
сохраняются.
Значение
ignoreboth
является
сокращением
для ignorespace и ignoredups.
Значение
erasedups
приводит к
удалению
всех
предыдущих
строк,
соответствующих
текущей
строке, из
списка
истории,
прежде чем
эта строка
будет
сохранена.
Любое
значение,
отсутствующее
в
приведенном
выше
списке,
игнорируется.
Если
значение
HISTCONTROL не
задано или
не
содержит
допустимого
значения,
то bash
сохраняет
все строки,
прочитанные
синтаксическим
анализатором
оболочки, в
списке
истории, в
зависимости
от
значения
HISTIGNORE. Если
первая
строка
многострочной
составной
команды
была
сохранена,
то вторая и
последующие
строки не
проверяются
и
добавляются
в историю
независимо
от
значения
HISTCONTROL. Если
первая
строка не
была
сохранена,
то вторая и
последующие
строки
команды
также не
будут
сохранены.
- HISTFILE
- Название
файла, в
котором
сохраняется
история
команд
(смотрите
раздел
ИСТОРИЯ
ниже). Bash
присваивает
значение
по
умолчанию,
равное
~/.bash_history. Если
значение
HISTFILE не
задано или
равно нулю,
то
оболочка
не
сохраняет
историю
команд при
завершении
работы.
- HISTFILESIZE
- Максимальное
количество
строк,
содержащихся
в файле
истории.
Когда этой
переменной
присваивается
значение,
файл
истории
при
необходимости
сокращается,
чтобы
содержать
не более
количества
записей
истории,
общее
количество
которых не
превышает
этого
количества
строк,
путем
удаления
самых
старых
записей.
Если
список
истории
содержит
многострочные
записи,
файл
истории
может
содержать
больше
строк, чем
это
максимальное
значение,
чтобы
избежать
частичных
записей
истории.
Файл
истории
также
сокращается
до этого
размера
после его
записи при
выходе из
оболочки
или с
помощью
встроенной
команды history.
Если
значение
равно 0, то
файл
истории
сокращается
до
нулевого
размера.
Нечисловые
значения и
числовые
значения,
меньшие
нуля,
запрещают
усечение.
Оболочка
устанавливает
значение
по
умолчанию
в HISTSIZE после
чтения
любых
файлов
запуска.
- HISTIGNORE
- Разделенный
двоеточием
список
шаблонов,
используемых
для
определения
того, какие
командные
строки
следует
сохранить
в списке
истории.
Если
командная
строка
соответствует
одному из
шаблонов в
значении
HISTIGNORE, то
она не
сохраняется
в списке
истории.
Каждый
шаблон
привязывается
к началу
строки и
должен
соответствовать
всей
строке (bash
неявно
добавляет
“*”).
Каждый
шаблон
проверяется
на
соответствие
строке
после
применения
проверок,
указанных
в HISTCONTROL. В
дополнение
к обычным
символам,
соответствующим
шаблону
оболочки,
“&”
совпадающим
с
предыдущей
строкой
журнала.
Обратная
косая
черта
закрывает
строку
“&”;
обратная
косая
черта
удаляется
перед
попыткой
сопоставления.
Если
первая
строка
многострочной
составной
команды
была
сохранена,
вторая и
последующие
строки не
проверяются
и
добавляются
в журнал
независимо
от
значения
HISTIGNORE. Если
первая
строка не
была
сохранена,
то вторая
и
последующие
строки
команды
также не
будут
сохранены.
Сопоставление
с шаблоном
выполняется
с учетом
настройки
опции
оболочки
extglob.
- HISTIGNORE
выполняет
часть
функций
HISTCONTROL.
Шаблон из
“&”
идентичен
“ignoredups”, и
шаблон “[ ]*”
идентичен
“ignorespace”.
Объединение
этих двух
шаблонов,
разделенных
двоеточием,
обеспечивает
функциональность
“ignoreboth”.
- HISTSIZE
- Количество
команд,
которые
необходимо
запомнить
в истории
команд
(смотрите
раздел
ИСТОРИЯ.
Если
значение
равно 0, то
команды не
сохраняются
в списке
истории.
Числовые
значения,
меньшие
нуля,
приводят к
тому, что
каждая
команда
сохраняется
в списке
истории
(ограничений
нет). После
прочтения
любых
файлов
запуска
оболочка
устанавливает
значение
по
умолчанию
равным 500.
- HISTTIMEFORMAT
- Если эта
переменная
установлена,
а не равна
нулю, то ее
значение
используется
в качестве
строки
формата
strftime(3) для
печати
отметки
времени,
связанной
с каждой
записью
истории,
отображаемой
встроенной
командой
history. Если эта
переменная
установлена,
то
оболочка
записывает
временные
метки в
файл
истории,
чтобы их
можно было
сохранять
во время
сеансов
оболочки.
При этом
используется
символ
комментария
к истории,
чтобы
отличать
временные
метки от
других
строк
истории.
- HOME
- Домашний
каталог
текущего
пользователя;
аргумент
по
умолчанию
для
встроенной
команды cd.
Значение
этой
переменной
также
используется
при
расширении
тильды.
- HOSTFILE
- Содержит
название
файла в том
же формате,
/etc/hosts который
может
прочитать
оболочка,
когда ей
потребуется
ввести
название
хоста.
Список
возможных
дополнений
названия
хоста
может быть
изменен во
время
работы
оболочки;
при
следующей
попытке
завершения
названия
хоста
после
изменения
значения
bash
добавляет
содержимое
нового
файла в
существующий
список.
Если
переменная
HOSTFILE задана,
но не имеет
значения
или не
содержит
названия
файла,
доступного
для чтения,
то
оболочка
bash
попытается
прочитать
/etc/hosts чтобы
получить
список
возможных
дополнений
к названию
хоста. Если
значение
HOSTFILE не
задано, то
bash очищает
список
названий
хостов.
- IFS
- Внутренний
разделитель
полей Internal Field Separator,
который
используется
для
разделения
слов после
расширения
и для
разделения
строк на
слова с
помощью
встроенной
команды read.
Разделение
слов
описано
ниже в
разделе
РАСШИРЕНИЕ.
Значение
по
умолчанию
равно
“<space><tab><newline>”.
- IGNOREEOF
- Управляет
действием
интерактивной
оболочки
при
получении
символа EOF
в качестве
единственного
входного
сигнала.
Если
задано, то
это
значение
равно
количеству
последовательных
символов
EOF,
которые
должны
быть
введены в
качестве
первых
символов в
строке
ввода
перед
завершением
работы bash.
Если
переменная
задана, но
не имеет
числового
значения
или
значение
равно нулю,
то
значение
по
умолчанию
равно 10.
Если
значение
не задано,
то EOF
означает
окончание
ввода в
оболочку.
- INPUTRC
- Название
файла для
файла
запуска readline,
которое
переопределяет
значение
по
умолчанию
~/.inputrc
(смотрите
раздел
БИБЛИОТЕКА
READLINE ниже).
- INSIDE_EMACS
- Если эта
переменная
появляется
в
окружающей
среде при
запуске
оболочки,
то bash
предполагает,
что она
выполняется
внутри
буфера
оболочки Emacs
и может
отключить
редактирование
строк, в
зависимости
от
значения
TERM.
- LANG
- Используется
для
определения
локали для
любой
категории,
не
выбранной
специально,
с помощью
переменной,
начинающейся
с LC_.
- LC_ALL
- Эта
переменная
переопределяет
значение
LANG и любой
другой
переменной
LC_,
определяющей
локаль.
- LC_COLLATE
- Эта
переменная
определяет
порядок
сопоставления,
используемый
при
сортировке
результатов
расширения
названия
пути, и
определяет
диапазон
выражений ,
классов
эквивалентности
и
сопоставляющих
последовательностей
при
расширении
названия
пути и
сопоставлении
с
образцом.
- LC_CTYPE
- Эта
переменная
определяет
интерпретацию
символов и
поведение
классов
символов
при
расширении
названия
пути и
сопоставлении
с
шаблоном.
- LC_MESSAGES
- Эта
переменная
определяет
локаль,
используемую
для
перевода
строк,
заключенных
в двойные
кавычки,
перед
которыми
стоит
символ $.
- LC_NUMERIC
- Эта
переменная
определяет
категорию
локали,
используемой
для
форматирования
чисел.
- LC_TIME
- Эта
переменная
определяет
категорию
локали,
используемой
для
форматирования
данных и
времени.
- LINES
- Используется
командой
select для
определения
длины
столбца
при печати
списков
выбора.
Устанавливается
автоматически,
если
включена
опция checkwinsize,
или в
интерактивной
оболочке
при
получении
SIGWINCH.
- MAIL
- Если в
качестве
значения
задано
название
файла или
каталога, а
переменная
MAILPATH не
задана, то
bash
информирует
пользователя
о
поступлении
почты в
указанный
файл или
каталог в
формате Maildir.
- MAILCHECK
- Указывает,
как часто
(в
секундах)
bash
проверяет
почту.
Значение
по
умолчанию
равно 60
секундам.
Когда
приходит
время
проверять
почту,
оболочка
выполняет
это перед
отображением
основного
запроса.
Если эта
переменная
не задана
или ей
присвоено
значение,
которое не
является
числом,
большим
или равным
нулю, то
оболочка
отключает
проверку
почты.
- MAILPATH
- Разделенный
двоеточием
список
названий
файлов,
которые
необходимо
проверить
на наличие
почты.
Сообщение,
которое
будет
распечатываться
при
поступлении
почты в
определенный
файл, можно
указать,
отделив
название
файла от
сообщения
символом
“?”. При
использовании
в тексте
сообщения,
$_
расширяется
до
названия
текущего
почтового
файла.
Например:
MAILPATH='/var/mail/bfox?"You have mail":~/shell-mail?"$_ has mail!"'
Оболочку
Bash можно
настроить
так, чтобы
для этой
переменной
указывалось
значение
по
умолчанию
(по
умолчанию
значения
нет), но
расположение
используемых
ею файлов
пользовательской
почты
зависит от
системы
(например,
/var/mail/$USER).
- OPTERR
- Если
установлено
значение 1,
то bash
отображает
сообщения
об ошибках,
сгенерированные
встроенной
командой
getopts
(смотрите
раздел
ВСТРОЕННЫЕ
КОМАНДЫ
ОБОЛОЧКИ
ниже). OPTERR
инициализируется
значением 1
при каждом
вызове
оболочки
или
выполнении
сценария
оболочки.
- PATH
- Путь
поиска
команд. Это
разделенный
двоеточием
список
каталогов,
в которых
оболочка
выполняет
поиск
команд
(смотрите
раздел
ВЫПОЛНЕНИЕ
КОМАНДЫ
ниже).
Название
каталога
нулевой
длины (null) в
значении
PATH
указывает
на текущий
каталог.
Название
каталога с
нулевым
значением
может быть
представлено
в виде двух
смежных
двоеточий
или в виде
начального
или
конечного
двоеточия.
Путь по
умолчанию
зависит от
системы и
устанавливается
администратором,
устанавливающим
bash. Обычно
используется
следующее
значение
/usr/local/bin:/usr/local/sbin:.if 0<78n .br
/usr/bin:/usr/sbin:/bin:/sbin
- POSIXLY_CORRECT
- Если эта
переменная
находится
в
окружающей
среде при
запуске bash,
то
оболочка
переходит
в режим posix
перед
чтением
файлов
запуска,
как если бы
была
указана
опция
вызова --posix.
Если она
установлена
во время
работы
оболочки,
то bash
включает
режим posix, как
если бы
команда “set -o
posix” была
выполнена.
Когда
оболочка
переходит
в режим posix,
она
устанавливает
эту
переменную,
если она
еще не была
установлена.
- PROMPT_COMMAND
- Если эта
переменная
задана и
является
массивом,
то
значение
каждого
заданного
элемента
выполняется
как
команда
перед
выдачей
каждого
основного
запроса.
Если эта
переменная
задана, но
не
является
массивом,
то ее
значение
используется
в качестве
команды
для
выполнения.
- PROMPT_DIRTRIM
- Если
задано
значение,
большее
нуля, то
это
значение
используется
в качестве
количества
завершающих
компонентов
каталога,
которые
будут
сохранены
при
расширении
командной
строки \w и
\W
(смотрите
раздел
ПОДСКАЗКИ
ниже).
Удаленные
символы
заменяются
многоточием.
- PS0
- Значение
этого
параметра
раскрывается
(смотрите
ПОДСКАЗКА
ниже) и
отображается
интерактивной
оболочкой
после
считывания
команды и
перед ее
выполнением.
- PS1
- Значение
этого
параметра
раскрывается
(смотрите
ниже
раздел "
ПОДСКАЗКИ")
и
используется
в качестве
основной
строки
запроса.
Значение
по
умолчанию -
“\s-\v\$ ”.
- PS2
- Значение
этого
параметра
расширяется,
как и в
случае с
PS1 и
используется
в качестве
дополнительной
строки
запроса. По
умолчанию
используется
“> ”.
- PS3
- Значение
этого
параметра
используется
в качестве
запроса
для
команды select
(смотрите
раздел
ГРАММАТИКА
ОБОЛОЧКИ
выше).
- PS4
- Значение
этого
параметра
расширяется,
как и в
случае с
PS1 и
значение
выводится
перед
отображением
каждой
команды bash
во время
трассировки
выполнения.
Первый
символ
расширенного
значения
PS4 при
необходимости
повторяется
несколько
раз, чтобы
указать
несколько
косвенных
уровней. По
умолчанию
используется
“+ ”.
- SHELL
- Эта
переменная
расширяется
до полного
пути к
оболочке.
Если она не
задана при
запуске
оболочки,
то bash
присваивает
ей полный
путь к
оболочке
входа
текущего
пользователя.
- TIMEFORMAT
- Значение
этого
параметра
используется
в качестве
строки
формата,
указывающей,
как должна
отображаться
информация
о времени
для
конвейеров
с
префиксом
зарезервированного
слова time.
Символ %
вводит
управляющую
последовательность,
которая
расширяется
до
значения
времени
или другой
информации.
Ниже
приведены
управляющие
последовательности
и их
значения;
квадратные
скобки
обозначают
необязательные
части.
- %%
- Буква %.
- %[p][l]R
- Прошедшее
время в
секундах.
- %[p][l]U
- Количество
процессорных
секунд,
затраченных
процессором
в
пользовательском
режиме.
- %[p][l]S
- Количество
процессорных
секунд,
затраченных
процессором
в
системном
режиме.
- %P
- Процент
использования
процессора,
вычисляемый
как (%U + %S) / %R.
- Необязательно
p - это
цифра,
определяющая
точность
precision, т. е.
количество
дробных
разрядов
после
десятичной
точки.
Значение 0
не
приводит к
выводу
десятичной
точки или
дроби. time
выводит не
более
шести цифр
после
запятой;
значения p,
превышающие
6,
изменяются
на 6. Если p
не указано,
то time
выводит
три цифры
после
десятичной
точки.
- Необязательная
величина l
задает
более
длинный
формат,
включая
минуты, для
формы MMmSS.FFs.
Значение p
определяет,
будет ли
включена
дробная
часть или
нет.
- Если эта
переменная
не задана,
то bash
действует
так, как
если бы она
имела
значение
$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS'.
Если
значение
равно нулю,
то bash не
отображает
никакой
временной
информации.
При
отображении
строки
формата
добавляется
завершающая
новая
строка.
- TMOUT
- Если
задано
значение,
большее
нуля, то
встроенная
команда read
использует
это
значение в
качестве
тайм-аута
по
умолчанию.
Команда select
завершается,
если
входные
данные не
поступают
по
истечении
TMOUT
секунд,
когда
входные
данные
поступают
с
терминала.
В
интерактивной
оболочке
это
значение
интерпретируется
как
количество
секунд, в
течение
которых
требуется
дождаться
ввода
строки
после
выдачи
основного
запроса. Bash
завершает
работу
после
ожидания
этого
количества
секунд,
если
полная
строка
ввода не
поступает.
- TMPDIR
- Если
задано, то
bash
использует
его
значение в
качестве
названия
каталога, в
котором bash
создает
временные
файлы для
использования
оболочкой.
- auto_resume
- Эта
переменная
управляет
взаимодействием
консоли с
пользователем
и
управлением
заданиями.
Если эта
переменная
установлена,
то простые
команды,
состоящие
всего из
одного
слова, без
перенаправлений,
рассматриваются
как
кандидаты
на
возобновление
существующего
остановленного
задания.
Здесь не
допускается
двусмысленность;
если есть
несколько
заданий,
начинающихся
со слова
или
содержащих
его, то
выбирается
задание, к
которому
был
последний
доступ. В
данном
контексте
название
name
остановленного
задания -
это
командная
строка,
используемая
для его
запуска,
как
показано в
jobs. Если
задано
значение
exact, то слово
должно
точно
соответствовать
названию
остановленного
задания;
если
задано
значение
substring, то
слово
должно
соответствовать
подстроке
названия
остановленного
задания.
Значение
substring
обеспечивает
функциональность,
аналогичную
идентификатору
задания %?
(смотрите
раздел
УПРАВЛЕНИЕ
ЗАДАНИЕМ
ниже).
Если
задано
любое
другое
значение
(например,
prefix), то слово
должно
быть
префиксом
названия
остановленного
задания;
это
обеспечивает
функциональность,
аналогичную
идентификатору
задания
%string.
- histchars
- Два или три
символа,
которые
управляют
расширением
истории,
быстрой
заменой и
токенизацией
(смотрите
раздел
РАСШИРЕНИЕ
ИСТОРИИ
ниже).
Первый
символ -
это символ
history expansion, с
которого
обычно
начинается
с
расширения
истории
“!”. Второй
символ -
это символ
quick substitution
(быстрая
замена),
обычно “^”.
если он
появляется
в качестве
первого
символа в
строке, то
подстановка
в историю
повторяет
предыдущую
команду,
заменяя
одну
строку
другой.
Необязательный
третий
символ -
это символ
комментария
к истории
history comment, обычно
“#”,
который
указывает
на то, что
оставшаяся
часть
строки
является
комментарием,
когда она
появляется
в качестве
первого
символа
слова.
Символ
комментария
к истории
отключает
подстановку
в историю
оставшихся
слов в
строке. Это
не
обязательно
приводит к
тому, что
синтаксический
анализатор
оболочки
обрабатывает
оставшуюся
часть
строки как
комментарий.
Массивы
Bash
предоставляет
одномерные
индексированные
и
ассоциативные
массивы
переменных.
В качестве
индексированного
массива
может
использоваться
любая
переменная;
встроенная
команда declare
явно
определяет
массив. Нет
ни
максимального
ограничения
на размер
массива, ни
каких-либо
требований
к тому,
чтобы
элементы
индексировались
или
назначались
последовательно.
Ссылки на
индексированные
массивы
выполняются
с
использованием
арифметических
выражений,
которые
должны
быть
расширены
до целого
числа
(смотрите
ниже
раздел
АРИФМЕТИЧЕСКИЕ
ВЫЧИСЛЕНИЯ)
и основаны
на нуле;
ссылки на
ассоциативные
массивы
выполняются
с
использованием
произвольных
строк. Если
не указано
иное, то
индексы
индексированных
массивов
должны
быть
неотрицательными
целыми
числами.
Оболочка
выполняет
расширение
параметров
и
переменных,
арифметическое
расширение,
подстановку
команд и
удаление
кавычек из
индексов
массива.
Поскольку
это
потенциально
может
привести к
появлению
пустых
строк, то
индексация
по нижнему
индексу
рассматривает
их как
выражения,
значение
которых
равно 0.
Оболочка
выполняет
расширение
тильдой,
расширение
параметрами
и
переменными,
арифметическое
расширение,
подстановку
команд и
удаление
кавычек в
индексах
ассоциативного
массива.
Пустые
строки не
могут
использоваться
в качестве
ключей
ассоциативного
массива.
Bash
автоматически
создает
индексированный
массив,
если
какой-либо
переменной
присваивается
значение с
использованием
синтаксиса
name[subscript]=value .
Индекс subscript
рассматривается
как
арифметическое
выражение,
значение
которого
должно
быть
больше или
равно нулю.
Чтобы явно
определить
(объявить)
индексированный
массив,
следует
использовать
declare -a name
(смотрите
ВСТРОЕННЫЕ
КОМАНДЫ
ОБОЛОЧКИ
ниже).
declare -a name[subscript]
также
принимается;
subscript
игнорируется.
Ассоциативные
массивы
создаются
с помощью
declare -A name
.
Атрибуты
могут быть
заданы для
переменной
массива с
помощью
встроенных
команд declare и
readonly. Каждый
атрибут
применяется
ко всем
элементам
массива.
Массивы
присваиваются
с помощью
значений
вида name=(value1 ...
valuen), где
каждое
значение
valueможет
иметь вид
[subscript]=string. Для
присвоения
индексированных
массивов
не
требуется
ничего,
кроме
строки string.
Каждое
значение
value в списке
расширяется
с помощью
расширений
оболочки,
описанных
ниже в
разделе
РАСШИРЕНИЕ,
но
значения
value, которые
являются
допустимыми
значениями
переменных,
включая
скобки и
подстрочный
индекс, не
подвергаются
расширению
скобок и
разделению
слов, как
для
значений
отдельных
переменных.
При
присвоении
индексов
индексированным
массивам,
если
указаны
необязательные
скобки и
нижний
индекс, то
присваивается
этот
индекс; в
противном
случае
индекс
присваиваемого
элемента
является
последним
индексом,
плюс
единица.
Индексация
начинается
с нуля.
При
присвоении
значений
ассоциативному
массиву
слова в
составном
присваивании
могут быть
либо
выражениями
присваивания,
для
которых
требуется
нижний
индекс,
либо
списком
слов,
который
интерпретируется
как
последовательность
чередующихся
ключей и
значений:
name=( key1 value1 key2 value2 ...).
Они
обрабатываются
аналогично
name=( [key1]=value1 [key2]=value2
...). Первое
слово в
списке
определяет,
как будут
интерпретироваться
остальные
слова; все
значения в
списке
должны
быть
одного
типа. При
использовании
пар
ключ/значение
ключи не
должны
отсутствовать
или быть
пустыми;
последнее
пропущенное
значение
обрабатывается
как пустая
строка.
Этот
синтаксис
также
поддерживается
встроенной
командой
declare.
Отдельные
элементы
массива
могут быть
назначены
с
использованием
синтаксиса
name[subscript]=value,
представленного
выше.
При
присвоении
индексов
индексированному
массиву,
если name
содержит
отрицательное
число, то
это число
интерпретируется
как
относительное
к единице,
превышающей
максимальный
индекс name,
поэтому
отрицательные
индексы
отсчитываются
от конца
массива, а
индекс,
равный -1,
ссылается
на
последний
элемент
массива.
Этот “+=”
оператор
присваивается
переменной
массива
при
присваивании
с
использованием
синтаксиса
составного
присваивания;
смотрите
раздел
ПАРАМЕТРЫ
выше.
Ссылка на
элемент
массива
выполняется
с помощью
${name[subscript]}.
Фигурные
скобки
необходимы,
чтобы
избежать
конфликтов
при
расширении
названия
пути. Если
subscript равен @
или *, то
слово
расширяется
до всех
элементов
name, если
только это
не указано
в описании
встроенного
кода или
расширения
слова. Эти
индексы
различаются
только в
том случае,
если слово
заключено
в двойные
кавычки.
Если слово
заключено
в двойные
кавычки, то
{name[*]}
расширяется
до одного
слова со
значением
каждого
элемента
массива,
разделенного
первым
символом
специальной
переменной
IFS, а ${name[@]}
расширяет
каждый
элемент name
до
отдельного
слова.
Когда
элементов
массива
нет, ${name[@]}
расширяется
до нуля.
Если
расширение
в двойных
кавычках
происходит
внутри
слова, то
расширение
первого
параметра
соединяется
с
начальной
частью
расширения
исходного
слова, а
расширение
последнего
параметра
соединяется
с
последней
частью
расширения
исходного
слова. Это
аналогично
расширению
специальных
параметров
* и @
(смотрите
подраздел
Специальные
параметры
выше).
${#name[subscript]}
расширяется
до длины
${name[subscript]}. Если
индекс subscript
равен * или
@, то
расширение
равно
количеству
элементов
в массиве.
Если
значение
subscript,
используемое
для ссылки
на элемент
индексированного
массива,
равно
числу,
меньшему
нуля, то оно
интерпретируется
относительное
к единице,
превышающей
максимальный
индекс
массива,
поэтому
отрицательные
индексы
отсчитываются
от конца
массива, а
индекс,
равный -1,
ссылается
на
последний
элемент.
Ссылка на
переменную
массива
без
нижнего
индекса
эквивалентна
ссылке на
массив с
нижним
индексом,
равным 0.
Любая
ссылка на
переменную
с
использованием
допустимого
нижнего
индекса
является
допустимой;
bash при
необходимости
создает
массив.
Переменная
массива
считается
заданной,
если
индексу
присвоено
значение.
Строка
ноль
является
допустимым
значением.
Можно
получить
ключи
(индексы)
массива, а
также
значения.
Выражения
${!name[@]} и ${!name[*]}
расширяются
до
индексов,
присвоенных
переменной
массива name.
Обработка
при
использовании
двойных
кавычек
аналогична
расширению
специальных
параметров
@ и * в
двойных
кавычках.
Встроенная
команда unset
используется
для
уничтожения
массивов.
Команда unset
name[subscript]
удаляет
элемент
массива с
индексом
subscript как для
индексированных,
так и для
ассоциативных
массивов.
Отрицательные
индексы
индексированных
массивов
интерпретируются
так, как
описано
выше. Сброс
последнего
элемента
переменной
массива не
приводит к
сбросу
значения
переменной.
Команда unset
name, где name
приводит к
удалению
всего
массива.
Команда unset
name[subscript] ведет
себя
по-разному
в
зависимости
от того,
является
ли name
индексированным
или
ассоциативным
массивом,
когда subscript
равен * или
@. Если name
является
ассоциативным
массивом,
то элемент
с индексом
* или @
сбрасывается.
Если name
является
индексированным
массивом,
то команда
unset удаляет
все
элементы,
но не
удаляет
сам
массив.
При
использовании
названия
переменной
с индексом
в качестве
аргумента
команды,
например, с
помощью
команды unset,
без
использования
синтаксиса
расширения
слов,
описанного
выше
(например, unset
a[4]), аргумент
подлежит
расширению
названия
пути.
Заключите
аргумент в
кавычки,
если
расширение
названия
пути
нежелательно
(например, unset
'a[4]').
Встроенные
команды declare,
local и readonly
поддерживают
опцию -a для
указания
индексированного
массива и
опцию -A для
указания
ассоциативного
массива.
Если
указаны
обе опции,
то
приоритет
имеет
опция -A.
Встроенная
команда read
поддерживает
опцию -a,
чтобы
преобразовать
список
слов,
считываемых
из
стандартного
ввода, в
массив.
Встроенные
команды set и
declare
отображают
значения
массива
таким
образом,
чтобы их
можно было
повторно
использовать
в качестве
значений.
Другие
встроенные
команды
также
принимают
аргументы
типа "array name"
(например,
mapfile);
подробности
смотрите в
описаниях
отдельных
встроенных
команд
ниже.
Оболочка
предоставляет
ряд
встроенных
переменных
массива.
РАСШИРЕНИЕ
Расширение
выполняется
в
командной
строке
после того,
как оно
было
разбито на
слова. Эти
расширения
выполняет
оболочка: brace
expansion, tilde expansion, parameter and variable
expansion, command substitution, arithmetic expansion,
word splitting, pathname expansion и quote
removal.
Порядок
раскрытия
следующий:
раскрытие
фигурными
скобками;
раскрытие
тильдой,
раскрытие
параметрами
и
переменными,
арифметическое
раскрытие
и
подстановка
команд
(выполняется
слева
направо);
разделение
слов;
расширение
названия
пути;
удаление
кавычек.
В
системах,
которые
могут это
поддерживать,
доступно
дополнительное
расширение:
подстановка
процессов
process substitution. Это
выполняется
одновременно
с
расширением
тильды,
параметра,
переменной,
арифметическим
расширением
и
подстановкой
команд.
Удаление
кавычек Quote
removal всегда
выполняется
последним.
При этом
удаляются
символы
кавычек,
присутствующие
в исходном
слове, а не
те, которые
являются
результатом
какого-либо
другого
расширения,
если
только они
сами не
были
заключены
в кавычки.
Только
расширение
скобками,
разделение
слов и
расширение
названия
пути могут
увеличить
количество
слов в
расширении;
другие
расширения
расширяют
одно слово
до одного
слова.
Единственными
исключениями
из этого
правила
являются
расширения
"$@" и
"${name[@]}", а
также, в
большинстве
случаев, $* и
${name[*]}, как
описано
выше
(смотрите
раздел
ПАРАМЕТРЫ).
Расширение
скобок
Расширение
в скобках Brace
expansion - это
механизм
генерации
произвольных
строк с
общим
префиксом
и
суффиксом,
каждый из
которых
может быть
пустым.
Этот
механизм
аналогичен
расширению
названия
пути pathname expansion, но
генерируемые
названия
файлов
необязательно
должны
существовать.
Шаблоны,
которые
будут
раскрываться
фигурными
скобками,
формируются
из
необязательной
преамбулы
preamble, за
которым
следует
либо
последовательность
строк,
разделенная
запятыми,
либо
выражение
последовательности
между
парой
фигурных
скобок, за
которым
следует
необязательный
постскриптум
postscript. К каждой
строке,
заключенной
в фигурные
скобки,
добавляется
преамбула,
а затем к
каждой
результирующей
строке
добавляется
постскриптум,
расширяющийся
слева
направо.
Раскрытие
в фигурных
скобках
может быть
вложенным.
Результаты
каждой
развернутой
строки не
сортируются;
раскрытие
в фигурных
скобках
сохраняет
порядок
слева
направо.
Например,
a{d,c,b}e
расширяется
в “ade ace abe”.
Выражение
последовательности
принимает
форму
x..y[..incr],
где x и y
являются
либо
целыми
числами,
либо
отдельными
буквами, а
incr,
необязательное
приращение,
равное
целому
числу.
Когда
вводятся
целые
числа, то
выражение
расширяется
до каждого
числа от x
до y,
включительно.
Если x или y
начинаются
с нуля, то
каждый
созданный
член будет
содержать
одинаковое
количество
цифр, при
необходимости
заменяя их
нулями.
Когда
вводятся
буквы, то
выражение
расширяется
до каждого
символа
лексикографически
от x до y,
включительно,
используя
локаль C.
Обратите
внимание,
что и x, и y
должны
быть
одного
типа (целые
или
буквенные).
При
указании
приращения
оно
используется
как
разница
между
каждым
членом.
Приращение
по
умолчанию
равно 1 или -1,
соответственно.
Раскрытие
скобок
выполняется
перед
любыми
другими
расширениями,
и в
результате
сохраняются
все
символы,
характерные
для других
расширений.
Это строго
текстовое
дополнение.
Оболочка Bash
не
применяет
никакой
синтаксической
интерпретации
к
контексту
расширения
или к
тексту
между
фигурными
скобками.
Корректно
оформленное
расширение
в виде
фигурных
скобок
должно
содержать
открывающие
и
закрывающие
скобки без
кавычек и,
по крайней
мере, одну
запятую
без
кавычек
или
корректное
выражение
последовательности.
Любое
неправильно
оформленное
расширение
в виде
фигурных
скобок
останется
без
изменений.
A “{” или Q ,
может быть
заключено
в кавычки с
обратной
косой
чертой,
чтобы оно
не
считалось
частью
выражения
в фигурных
скобках.
Чтобы
избежать
конфликтов
с
расширением
параметра
“${”
например,
считается,
что в
строке
скобка не
может быть
расширена
и
запрещено
расширение
скобки до
её
закрытия
“}”.
Эта
конструкция
обычно
используется
в качестве
сокращения,
когда
общий
префикс
генерируемых
строк
длиннее,
чем в
приведенном
ниже
примере:
mkdir /usr/local/src/bash/{old,new,dist,bugs}
или
chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}
Расширение
фигурной
скобки
приводит к
небольшой
несовместимости
с
предыдущими
версиями sh.
sh не
обрабатывает
открывающие
или
закрывающие
фигурные
скобки
специально,
когда они
появляются
как часть
слова, и
сохраняет
их в
выходных
данных. Bash
удаляет
фигурные
скобки из
слов в
результате
расширения
фигурной
скобки.
Например,
слово,
введенное
в sh как “file{1,2}”
в выходных
данных
отображается
идентично.
Bash выводит
это слово
как “file1 file2”
после
раскрытия
фигурной
скобки.
Запустите
bash с
помощью
опции +B или
отключите
раскрытие
фигурной
скобки с
помощью
опции +B для
команды set
(смотрите
раздел
ВСТРОЕННЫЕ
КОМАНДЫ
ОБОЛОЧКИ
ниже) для
обеспечения
строгой
совместимости
с sh.
Расширение
тильды
Если
слово
начинается
с символа
тильды без
кавычек (
“~”), все
символы,
предшествующие
первой
косой
черте без
кавычек
(или все
символы,
если косая
черта без
кавычек
отсутствует),
считаются
префиксом
тильды tilde-prefix.
Если ни
один из
символов в
префиксе
тильды не
заключен в
кавычки, то
символы в
префиксе
тильды,
следующие
за тильдой,
рассматриваются
как
возможные
названия
входа login name.
Если это
имя
пользователя
является
пустой
строкой, то
тильда
заменяется
значением
параметра
оболочки
HOME. Если
значение
HOME не
задано, то
тильда
расширяется
до
домашнего
каталога
пользователя,
выполняющего
оболочку. В
противном
случае
префикс
тильды
заменяется
на
домашний
каталог,
связанный
с
указанным
названием
входа.
Если
префикс
тильды
является
“~+”,
значением
переменной
оболочки
PWD, то он
заменяет
префикс
тильды.
Если
префикс
тильды
является
“~-”,
оболочка
заменяет
значение
переменной
оболочки
OLDPWD, если
оно
задано.
Если
символы,
следующие
за тильдой
в префиксе
тильды,
состоят из
числа N,
необязательно
с
префиксом a
“+” или “-”,
префикс
тильды
заменяется
соответствующим
элементом
из стека
каталогов,
поскольку
он
отображался
бы при
вызове
встроенной
команды dirs
с
символами,
следующими
за тильдой
в префиксе
тильды, в
качестве
аргумента.
Если
символы,
следующие
за тильдой
в префиксе
тильды,
состоят из
числа без
начальной
буквы “+”
или “-”,
расширение
тильды
предполагает
“+”.
Результаты
расширения
тильдой
обрабатываются
так, как
если бы они
были
заключены
в кавычки,
поэтому
замена не
требует
разделения
слов и
расширения
пути к ним.
Если
введено
неверное
название
для входа в
оболочку
или
произошел
сбой при
расширении
тильды, то
префикс
тильды
остается
неизменным.
Bash
проверяет
каждое
присвоение
переменной
на наличие
префиксов
тильды без
кавычек,
следующих
непосредственно
за : или
первым = и
выполняет
расширение
тильды в
этих
случаях.
Следовательно,
можно
использовать
названия
файлов с
тильдами
при
присвоении
PATH, MAILPATH и
CDPATH и
оболочка
присвоит
расширенное
значение.
Bash также
выполняет
расширение
тильдой
слов,
удовлетворяющих
условиям
присвоения
переменных
(как
описано
выше в
разделе
ПАРАМЕТРЫ),
когда они
появляются
в качестве
аргументов
для
простых
команд. Bash
не
выполняет
этого, за
исключением
команд declaration ,
перечисленных
выше, в
режиме posix.
Расширение
параметра
Этот “$”
символ
указывает
на
расширение
параметра,
замену
команды
или
арифметическое
расширение.
Название
параметра
или
расширяемый
символ
могут быть
заключены
в фигурные
скобки,
которые
необязательны,
но служат
для защиты
расширяемой
переменной
от
следующих
непосредственно
за ней
символов,
которые
могут быть
интерпретированы
как часть
названия.
При
использовании
фигурных
скобок
соответствующая
конечная
фигурная
скобка
является
первой “}”
не
экранируется
обратной
косой
чертой или
строкой,
заключенной
в кавычки, и
не
используется
во
встроенном
арифметическом
расширении,
замене
команд или
расширении
параметров.
Основной
формой
расширения
параметров
является
${parameter}
который
заменяет
значение
parameter.
Фигурные
скобки
обязательны,
если parameter
является
позиционным
параметром,
содержащим
более
одной
цифры, или
если за parameter
следует
символ,
который не
следует
интерпретировать
как часть
его
названия.
Параметр
parameter
является
параметром
оболочки,
как
описано
выше
(ПАРАМЕТРЫ)
или
ссылкой на
массив
(Массивы).
Если
первый
символ parameter
является
восклицательным
знаком (!), а
parameter не
является
nameref, то это
вводит
определенный
уровень
косвенности.
Bash
использует
значение,
сформированное
путем
расширения
остальной
части parameter, в
качестве
нового
параметра
parameter; затем
этот новый
параметр
расширяется,
и это
значение
используется
в
остальной
части
расширения,
а не в
расширении
исходного
параметра
parameter. Это
называется
косвенным
расширением
indirect expansion.
Значение
может быть
расширено
с помощью
тильды,
параметра,
подстановки
команд и
арифметического
расширения.
Если parameter
является
значением
nameref, то оно
расширяется
до
названия
параметра,
на который
ссылается
parameter, вместо
выполнения
полного
косвенного
расширения
для
обеспечения
совместимости.
Исключением
из этого
правила
являются
расширения
${!prefix*} и ${!name[@]},
описанные
ниже.
Восклицательный
знак
должен
стоять
непосредственно
за левой
фигурной
скобкой,
чтобы
ввести
косвенность.
В каждом
из
приведенных
ниже
случаев
слово word
может быть
расширено
тильдой,
расширено
параметром,
подменено
командой и
расширено
арифметически.
Если не
выполняется
расширение
подстроки,
используя
описанные
ниже формы
(например,
:-), bash
проверяет
наличие
параметра,
который не
задан или
равен нулю.
Без
двоеточия
выполняется
проверка
только для
параметра,
который не
задан.
- ${parameter:-word}
- Использовать
значения
по
умолчанию
Use Default Values. Если
значение
parameter не
задано или
равно нулю,
то оно
заменяется
расширением
слова word. В
противном
случае
подставляется
значение
parameter.
- ${parameter:=word}
- Присвоение
значения
по
умолчанию
Assign Default Values. Если
значение
parameter не
задано или
равно нулю,
расширение
слова word
присваивается
параметру
parameter и
расширение
является
окончательным
значением
параметра
parameter.
Позиционные
параметры
и
специальные
параметры
не могут
быть
назначены
таким
образом.
- ${parameter:?word}
- Ошибка
отображения,
если
значение
равно нулю
или не
задано Display Error if Null
or Unset. Если
параметр
parameter равен
нулю или не
задан, то
оболочка
записывает
расширение
слова word
(или
соответствующее
сообщение,
если слово
word
отсутствует)
в
стандартную
ошибку и,
если
оболочка
не
является
интерактивной,
то она
завершает
работу с
ненулевым
статусом.
Интерактивная
оболочка
не
существует,
но она не
выполняет
команду,
связанную
с
расширением.
В
противном
случае
подставляется
значение
parameter.
- ${parameter:+word}
- Использование
альтернативного
значения Use
Alternate Value. Если
значение
parameter равно
нулю или не
задано,
ничего не
заменяется,
в
противном
случае
заменяется
расширение
слова word.
Значение
parameter не
используется.
- ${parameter:offset}
- ${parameter:offset:length}
- Расширение
подстроки
Substring Expansion.
Расширяется
до
символов
length
значения
parameter, начиная
с символа,
указанного
в смещении
offset. Если parameter
равен @ или
*, то
индексированный
массив,
подписанный
@ или * или
ассоциативное
название
массива, то
результаты
будут
отличаться,
как
описано
ниже. Если
значение
:length
опущено
(первая
форма,
приведенная
выше), то
оно
расширяется
до
подстроки
значения
offset,
начинающегося
с символа,
указанного
в parameter и
продолжающегося
до конца
значения.
Если
значение
offset опущено,
то оно
рассматривается
как 0. Если
значение
length опущено,
но
двоеточие
после offset
присутствует,
то оно
рассматривается
как 0.
Значения
length и offset
являются
арифметическими
выражениями
(смотрите
раздел
АРИФМЕТИЧЕСКИЕ
ВЫЧИСЛЕНИЯ
ниже).
- Если
значение
offset равно
числу,
меньшему
нуля, то
это
значение
используется
в качестве
смещения в
символах
от конца
значения
parameter. Если
значение
длины length
равно
числу,
меньшему
нуля, это
интерпретируется
как
смещение в
символах
от конца
значения
parameter, а не на
количество
символов, а
расширением
являются
символы
между offset и
этим
результатом.
Примечание.
Отрицательное
смещение
должно
быть
отделено
от
двоеточия
по крайней
мере одним
пробелом,
чтобы его
не
перепутать
с
расширением
:-.
- Если
параметр
parameter равен @
или *, то
результатом
будет
длина length
позиционных
параметров,
начинающихся
со
смещения
offset. При
отрицательном
значении
offset берется
значение
относительно
значения,
превышающего
наибольший
позиционный
параметр,
поэтому
значение
смещения,
равное -1,
вычисляется
как
значение
последнего
позиционного
параметра
(или 0, если
позиционных
параметров
нет). Это
ошибка
расширения,
если
значение
length равно
числу,
меньшему
нуля.
- Если parameter -
это
название
индексированного
массива,
подписанное
символом @
или *, то
результатом
будет length
элементов
массива,
начинающихся
с ${parameter[offset]}.
Значение
offset берется
отрицательным
относительно
значения,
на единицу
превышающего
максимальный
индекс
указанного
массива.
Если
значение
length меньше
нуля, то
это
является
ошибкой
расширения.
- Расширение
подстроки,
примененное
к
ассоциативному
массиву,
приводит к
неопределенным
результатам.
- Индексация
подстрок
выполняется
на основе
нуля, если
не
используются
позиционные
параметры,
и в этом
случае
индексация
начинается
с 1 по
умолчанию.
Если
значение
offset равно 0 и
используются
позиционные
параметры,
то
префиксу
списка
присваивается
значение
$0.
- ${!prefix*}
- ${!prefix@}
- Названия,
соответствующие
префиксу Names
matching prefix.
Расширяется
до
названий
переменных,
названия
которых
начинаются
с prefix,
отделенных
первым
символом
специальной
переменной
IFS. Когда
используется
@ и
расширение
отображается
в двойных
кавычках,
то каждое
название
переменной
расширяется
до
отдельного
слова.
- ${!name[@]}
- ${!name[*]}
- Список
ключей
массива List of array
keys. Если name
является
переменной
массива, то
расширяется
до списка
индексов
массива
(ключей),
назначенных
в name. Если name
не
является
массивом,
то
расширяется
до 0, если
задано
значение
name, и ноль в
противном
случае.
Когда
используется
@ и
расширение
приведено
в двойных
кавычках,
то каждый
ключ
расширяется
до
отдельного
слова.
- ${#parameter}
- Длина
параметра
Parameter length.
Заменяет
длину в
символах
расширенного
значения
параметра
parameter. Если parameter
равен * или
@, то
заменяемое
значение
представляет
собой
количество
позиционных
параметров.
Если parameter -
это
название
массива,
подписанное
символом *
или @, то
подставляемое
значение -
это -
количество
элементов
в массиве.
Если parameter -
это
название
индексированного
массива,
подписанное
отрицательным
числом, то
это число
интерпретируется
как число
отнесенное
к единице,
превышающей
максимальный
индекс parameter,
поэтому
отрицательные
индексы
отсчитываются
от конца
массива, а
индекс,
равный -1,
ссылается
на
последний
элемент.
- ${parameter#word}
- ${parameter##word}
- Удаление
шаблона
совпадающего
префикса Remove
matching prefix pattern. Слово
wordрасширяется
для
получения
шаблона,
как и при
расширении
названия
пути, и
сопоставляется
с
расширенным
значением
параметра
parameter с
использованием
правил,
описанных
в
подразделе
Сопоставление
с
шаблоном
ниже. Если
шаблон
совпадает
с началом
значения
parameter, то
результатом
расширения
является
расширенное
значение
parameter с
кратчайшим
совпадающим
шаблоном
(это “#”
регистр)
или
удаляется
самый
длинный
совпадающий
шаблон (это
“##”
регистр).
Если
параметр
parameter равен @
или *, то
операция
удаления
шаблона
применяется
к каждому
позиционному
параметру
по очереди,
и в
результате
получается
расширенный
список.
Если parameter
является
переменной
массива с
индексом @
или *, то
операция
удаления
шаблона
применяется
к каждому
элементу
массива по
очереди, а
расширение
- это
результирующий
список.
- ${parameter%word}
- ${parameter%%word}
- Удаление
шаблона
совпадающего
суффикса Remove
matching suffix pattern. Слово
word
расширяется
для
получения
шаблона
точно так
же, как при
расширении
названия
пути, и
сопоставляется
с
расширенным
значением
параметра
parameter с
использованием
правил,
описанных
в
подразделе
Сопоставление
с
шаблоном
ниже. Если
шаблон
соответствует
конечной
части
расширенного
значения
parameter, то
результатом
расширения
является
расширенное
значение
parameter с
кратчайшим
совпадающим
шаблоном
(это “%”
регистр)
или
удаляется
самый
длинный
совпадающий
шаблон (это
“%%”
регистр).
Если
параметр
parameter равен @
или *, то
операция
удаления
шаблона
применяется
к каждому
позиционному
параметру
по очереди,
и в
результате
получается
расширенный
список.
Если parameter
является
переменной
массива с
индексом @
или *, то
операция
удаления
шаблона
применяется
к каждому
элементу
массива по
очереди, а
расширение
- это
результирующий
список.
- ${parameter/pattern/string}
- ${parameter//pattern/string}
- ${parameter/#pattern/string}
- ${parameter/%pattern/string}
- Подстановка
шаблона Pattern
substitution. Шаблон
pattern
расширяется
для
получения
шаблона и
сопоставляется
с
расширенным
значением
parameter, как
описано в
подразделе
Сопоставление
с
шаблоном
ниже. Самое
длинное
совпадение
с pattern в
расширенном
значении
заменяется
на string.
Строка string
подвергается
расширению
тильдой,
расширению
параметрами
и
переменными,
арифметическому
расширению,
замене
команд и
процессов,
а также
удалению
кавычек.
- В первой
приведенной
выше форме
заменяется
только
первое
совпадение.
Если есть
две косые
черты,
разделяющие
параметр
parameter и шаблон
pattern (вторая
приведенная
выше
форма), то
все
совпадения
pattern
заменяются
на строку
string. Если
шаблону
patternпредшествует
# (третья
форма
выше), то
это должно
совпадать
с началом
расширенного
значения
parameter. Если pattern
предшествует
%
(четвертая
форма
выше), то
это должно
совпадать
с
расширенным
значением
parameter.
- Если
расширение
string равно
нулю, то
совпадения
с pattern
удаляются,
а символ /,
следующий
за pattern, может
быть
опущен.
- Если опция
оболочки
patsub_replacement
включена с
помощью shopt,
то все
экземпляры
& без
кавычек в
строке string
заменяются
соответствующей
частью pattern.
- Заключение
в кавычки
любой
части
строки string
препятствует
замене при
расширении
заключенной
в кавычки
части,
включая
строки для
замены,
хранящиеся
в
переменных
оболочки.
Обратная
косая
черта
заменяет
& в string ;
обратная
косая
черта
удаляется,
чтобы
разрешить
использование
литерала
& в
заменяющей
строке.
Обратная
косая
черта
также
может
использоваться
для
экранирования
обратной
косой
черты; \\
приводит к
буквальной
обратной
косой
черте при
замене.
Пользователи
должны
быть
осторожны,
если string
заключена
в двойные
кавычки,
чтобы
избежать
нежелательного
взаимодействия
между
обратной
косой
чертой и
двойными
кавычками,
поскольку
обратная
косая
черта
имеет
особое
значение в
двойных
кавычках.
Замена
шаблона
выполняет
проверку
на наличие
& без
кавычек
после
расширения
string;
программисты
оболочки
должны
указывать
в кавычках
все
вхождения
&, которые
они хотят
понимать
буквально
при замене,
и
убедиться,
что все
вхождения
&, которые
они хотят
заменить,
не
заключены
в кавычки.
- Подобно
операторам
удаления
шаблонов,
двойные
кавычки,
окружающие
строку
замены,
заключают
расширенные
символы в
кавычки, в
то время
как
двойные
кавычки,
заключающие
всю замену
параметра,
этого не
делают,
поскольку
расширение
выполняется
в
контексте,
который не
учитывает
никакие
заключающие
двойные
кавычки.
- Если
включена
опция
оболочки
nocasematch, то
сопоставление
выполняется
без учета
регистра
буквенных
символов.
- Если
параметр
parameter равен @
или *, то
операция
подстановки
применяется
к каждому
позиционному
параметру
по очереди
и в
результате
получается
расширенный
список.
Если parameter
является
переменной
массива с
индексом @
или *, то
операция
подстановки
применяется
к каждому
элементу
массива по
очереди, а
расширение
является
результирующим
списком.
- ${parameter^pattern}
- ${parameter^^pattern}
- ${parameter,pattern}
- ${parameter,,pattern}
- Изменение
регистра Case
modification. Это
расширение
изменяет
регистр
буквенных
символов в
параметре
parameter. Сначала
шаблон pattern
расширяется
для
создания
шаблона,
как
описано
ниже в
подразделе
Сопоставление
с
шаблоном.
Затем Bash
проверяет
символы в
расширенном
значении
parameter на
соответствие
с pattern, как
описано
ниже. Если
символ
соответствует
шаблону, то
его
регистр
изменяется.
Шаблон не
должен
пытаться
соответствовать
более чем
одному
символу.
- Используется
“^” для
преобразования
строчных
букв,
соответствующих
шаблону pattern ,
в
заглавные;
“,”
преобразует
соответствующие
заглавные
буквы в
строчные.
Варианты ^
и ,
проверяют
первый
символ в
расширенном
значении и
преобразуют
его
регистр,
если он
соответствует
шаблону pattern;
варианты ^^
и ,,
проверяют
все
символы в
расширенном
значении и
преобразуют
каждый из
них,
который
соответствует
pattern. Если pattern
опущен, то
он
обрабатывается
как ?,
который
соответствует
каждому
символу.
- Если
параметр
parameter равен @
или *, то
операция
изменения
регистра
применяется
к каждому
позиционному
параметру
по очереди,
и в
результате
получается
расширенный
список.
Если parameter
является
переменной
массива с
индексом @
или *, то
операция
изменения
регистра
применяется
к каждому
элементу
массива по
очереди, а
расширение
является
результирующим
списком.
- ${parameter@operator}
- Преобразование
параметра
Parameter transformation.
Расширение
представляет
собой либо
преобразование
значения
параметр
parameter, либо
информации
о самом parameter,
в
зависимости
от
значения
оператора
operator. Каждый
operator состоит
из одной
буквы:
- U
- Расширение
представляет
собой
строку,
представляющую
собой
значение
параметра
parameter, со
строчными
буквенными
символами,
преобразованными
в верхний
регистр.
- u
- Расширение
представляет
собой
строку,
представляющую
собой
значение
параметра
parameter, причем
первый
символ
преобразуется
в верхний
регистр,
если он
алфавитный.
- L
- Расширение
представляет
собой
строку,
представляющую
собой
значение
параметра
parameter, с
заглавными
буквами,
преобразованными
в
строчные.
- Q
- Расширение
представляет
собой
строку,
представляющую
собой
значение
parameter,
заключенное
в кавычки,
в формате,
который
можно
повторно
использовать
в качестве
входных
данных.
- E
- Расширением
является
строка,
представляющая
собой
значение
параметра
parameter с
расширенными
управляющими
последовательностями
с обратной
косой
чертой, как
при
использовании
механизма
кавычек
$'...'.
- P
- Расширение
представляет
собой
строку,
которая
является
результатом
расширения
значения
parameter, как
если бы это
была
строка
запроса
(смотрите
раздел
ПОДСКАЗКА
ниже).
- A
- Расширение
представляет
собой
строку в
виде
выражения
присваивания
или
команды declare,
которая
при
вычислении
воссоздает
parameter с его
атрибутами
и
значением.
- K
- Выдает,
возможно,
заключенную
в кавычки
версию
значения
parameter, за
исключением
того, что
она
выводит
значения
индексированных
и
ассоциативных
массивов в
виде
последовательности
пар
ключ-значение,
заключенных
в кавычки
(смотрите
подраздел
Массивы
выше).
Ключи и
значения
заключены
в кавычки в
формате,
который
можно
повторно
использовать
в качестве
входных
данных.
- a
- Расширение
представляет
собой
строку,
состоящую
из
значений
флагов,
представляющих
атрибуты
parameter.
- k
- Аналогично
преобразованию
K, но
расширяет
ключи и
значения
индексированных
и
ассоциативных
массивов
до
отдельных
слов после
разделения
слов.
Если parameter
равен @ или
*, то
операция
применяется
к каждому
позиционному
параметру
по очереди
и в
результате
получается
расширенный
список.
Если parameter
является
переменной
массива с
индексом @
или *, то
операция
применяется
к каждому
элементу
массива по
очереди и
результатом
расширения
является
результирующий
список.
Результат
расширения
зависит от
разделения
слов и
расширения
названия
пути, как
описано
ниже.
Подстановка
команд
Подстановка
команды Command
substitution
позволяет
при выводе
команды
заменить
саму
команду.
Существует
две
стандартные
формы:
или
(устарело)
`command`.
Bash
протизводит
расширение,
выполняя
command в
окружающей
среде
подоболочки
и заменяя
подстановку
команды
стандартным
выводом
команды,
при этом
удаляются
все
завершающие
новые
строки.
Встроенные
новые
строки не
удаляются,
но они
могут быть
удалены
при
разделении
слов.
Команда
подстановки
$(cat file) может
быть
заменена
эквивалентной,
но более
быстрой
командой $(<
file).
При
замене
обратной
кавычки в
старом
стиле
обратная
косая
черта
сохраняет
свое
буквальное
значение,
за
исключением
тех
случаев,
когда за
ней
следует $, `
или \.
Первая
обратная
кавычка,
перед
которой не
стоит
обратная
косая
черта,
завершает
замену
команды.
При
использовании
формы $(command)
все
символы,
заключенные
в круглые
скобки,
составляют
команду; ни
один из них
не
обрабатывается
специально.
Существует
альтернативная
форма
замены
команд:
которая
выполняет
команду command
в текущей
окружающей
среде и
записывает
свои
выходные
данные,
опять же с
удалением
завершающих
новых
строк.
Символ c,
следующий
за
открывающей
фигурной
скобкой,
должен
быть
пробелом,
знаком
табуляции,
новой
строкой
или |, а
закрывающая
фигурная
скобка
должна
находиться
в позиции, в
которой
может
отображаться
зарезервированное
слово (т.е.
перед ним
должен
стоять
символ
завершения
команды:
точка с
запятой). Bash
позволяет
соединять
закрывающую
фигурную
скобку с
остальными
символами
без
добавления
метасимвола
оболочки,
как это
обычно
требуется
для
зарезервированного
слова.
Любые
побочные
эффекты command
вступают в
силу
немедленно
в текущей
окружающей
среде и
сохраняются
в текущей
среде
после
завершения
выполнения
команды
(например,
встроенная
команда exit
завершает
работу
оболочки).
Этот тип
подстановки
команд
внешне
напоминает
выполнение
не
именованной
функции
оболочки:
локальные
переменные
создаются
так же, как
при
выполнении
функции
оболочки, а
встроенная
команда return
принудительно
завершает
выполнение
команды command;
однако
остальная
окружающая
среда,
включая
позиционные
параметры,
совместно
используется
вызывающей
стороной.
Если
первым
символом,
следующим
за
открытой
фигурной
скобкой,
является |,
то
конструкция
расширяется
до
значения
переменной
команды REPLY
после
выполнения
command, без
удаления
завершающих
символов
новой
строки, а
стандартный
вывод command
остается
таким же,
как и в
вызывающей
оболочке.
Bash создает
REPLY как
изначально
не
установленную
локальную
переменную
при
выполнении
command и
восстанавливает
REPLY до
значения,
которое
оно имело
до замены
команды,
после
завершение
command, как и в
случае с
любой
локальной
переменной.
Замены
команд
могут быть
вложенными.
Для
вложения
при
использовании
формы с
обратными
кавычками,
закройте
внутренние
кавычки
обратной
косой
чертой.
Если
замена
выполняется
в двойных
кавычках,
то bash не
выполняет
разбиение
слов и
результаты
расширения
пути.
Арифметическое
расширение
Арифметическое
расширение
вычисляет
арифметическое
выражение
и
подставляет
результат.
Формат
арифметического
расширения
следующий:
Старый
формат
$[expression]
устарел и
будет
удален в
следующих
версиях bash.
Это
расширение
expression
расширяется
так же, как
если бы оно
было
заключено
в двойные
кавычки, но
неэкранированные
символы
двойных
кавычек в
expression не
обрабатываются
специальным
образом и
удаляются.
Все токены
в
выражении
расширяются
с помощью
параметров
и
переменных,
заменяются
командой и
удаляются
кавычки.
Результат
обрабатывается
как
вычисляемое
арифметическое
выражение.
Поскольку
способ,
которым Bash
обрабатывает
двойные
кавычки,
потенциально
может
привести к
появлению
пустых
строк,
арифметическое
расширение
рассматривает
их как
выражения,
значение
которых
равно 0.
Арифметические
расширения
могут быть
вложенными.
Вычисление
выполняется
в
соответствии
с
правилами,
перечисленными
ниже в
разделе
АРИФМЕТИЧЕСКИЕ
ВЫЧИСЛЕНИЯ.
Если
значение
expression
неверно, то
bash выводит
сообщение
о
стандартной
ошибке и не
выполняет
подстановку,
а также не
выполняет
команду,
связанную
с
расширением.
Подстановка
процесса
Подстановка
процесса Process
substitution
позволяет
ссылаться
на входные
или
выходные
данные
процесса,
используя
название
файла. Она
принимает
форму <(list)
или >(list).
Процесс
список list
выполняется
асинхронно,
а его
входные
или
выходные
данные
отображаются
в виде
названия
файла. Это,
полученное
в
результате
расширения,
название
файла
передается
в качестве
аргумента
текущей
команде.
Если
используется
форма >(list),
то запись в
файл
обеспечивает
ввод
данных для
list. Если
используется
форма <(list),
то при
чтении
файла
выводится
list. Между <
или > и
левой
круглой
скобкой не
должно
быть
пробела,
иначе
конструкция
будет
интерпретирована
как
перенаправление.
Замена
процессов
поддерживается
в системах,
поддерживающих
именованные
каналы (FIFOs)
или метод
именования
открытых
файлов /dev/fd.
При
наличии
возможности
подстановка
процесса
выполняется
одновременно
с
расширением
параметров
и
переменных,
подстановкой
команд и
арифметическим
расширением.
Разделение
слов
Оболочка
проверяет
результаты
расширения
параметров,
подстановки
команд и
арифметического
расширения,
которые не
были
заключены
в двойные
кавычки, на
предмет word
splitting. Слова,
которые не
были
расширены,
не
разбиваются.
Оболочка
обрабатывает
каждый
символ IFS
как
разделитель
и
разбивает
результаты
других
расширений
на слова,
используя
эти
символы в
качестве
разделителей
полей.
Символ IFS
whitespace - это
пробел,
определенный
выше
(смотрите
подраздел
Определения),
который
появляется
в значении
IFS. Пробел,
табуляция
и новая
строка
всегда
считаются
пробелами,
даже если
они не
входят в
категорию
пробел space в
локали.
Если
значение
IFS не
задано, то
разделение
поля
выполняется
так, как
если бы его
значением
было
<space><tab><newline>, а
эти
символы
рассматриваются
как
пробелы IFS.
Если
значение
IFS равно
нулю, то
разбиение
слов не
происходит,
но неявные
нулевые
аргументы
(см. ниже)
все равно
удаляются.
Разделение
слов
начинается
с удаления
последовательностей
пробельных
символов IFS
из начала и
конца
результатов
предыдущих
расширений,
затем
происходит
разделение
оставшихся
слов.
Если
значение
IFS состоит
исключительно
из
пробелов IFS,
то любая
последовательность
символов IFS
разделяет
поле,
поэтому
поле
состоит из
символов,
которые не
являются
пробелами IFS
без
кавычек, а
пустые
поля
являются
результатом
только
заключения
в кавычки.
Если IFS
содержит
символ, не
являющийся
пробельным,
то любой
символ в
значении
IFS, который
не
является
пробельным,
вместе с
любыми
соседними
символами
IFS, отделяют
поле. Это
означает,
что
соседние
разделители,
отличные
от
пробелов IFS,
создают
пустое
поле.
Последовательность
символов
пробелов IFS
также
ограничивает
поле.
Явные
нулевые
аргументы
("" или '')
сохраняются
и
передаются
командам в
виде
пустых
строк.
Неявные
нулевые
аргументы
без
кавычек,
возникающие
в
результате
расширения
параметров,
и не
имеющие
значений,
удаляются.
При
расширении
параметра
без
значения,
заключенного
в двойные
кавычки,
создается
поле ноль,
которое
сохраняется
и
передается
команде в
виде
пустой
строки.
Когда
аргумент
ноль,
заключенный
в кавычки,
появляется
как часть
слова,
расширение
которого
не равно
нулю, то при
разделении
слов
удаляется
нулевая
часть
аргумента,
оставляя
ненулевое
расширение.
То есть
становится
“-d''” словом
“-d” после
разделения
слов и
удаления
нулевого
аргумента.
Расширение
названия
пути
После
разделения
слов, если
не
установлена
опция -f, bash
проверяет
каждое
слово на
наличие
символов *,
? и [. Если
один из
этих
символов
обнаружен
и не
заключен в
кавычки, то
слово
рассматривается
как шаблон
pattern и
заменяется
отсортированным
списком
названий
файлов,
соответствующих
шаблону
(смотрите
подраздел
Сопоставление
с
шаблоном
ниже), в
зависимости
от
значения
переменной
оболочки
GLOBSORT.
If no matching filenames are found, and the shell option
nullglob is not enabled, the word is left unchanged. If the
nullglob option is set, and no matches are found, the word is
removed. If the failglob shell option is set, and no matches are
found, bash prints an error message and does not execute the command.
If the shell option nocaseglob is enabled, the match is performed
without regard to the case of alphabetic characters. Note that when using
range expressions like [a-z] (see below), letters of the other case may be
included, depending on the setting of LC_COLLATE.
Когда для
расширения
названия
пути
используется
шаблон, то
символ “.” в
начале
названия
или сразу
после него
должна
быть явно
указана
косая
черта, если
только не
задана
опция
оболочки
dotglob. Для
соответствия
названий
файлов . и
.., шаблон
должен
начинаться
“.”
(например,
“.?”), даже
если
задана
опция dotglob.
Если опция
оболочки
globskipdots
включена,
то
названия
файлов . и ..
никогда не
будут
совпадает,
даже если
шаблон
начинается
с “.”. Если
названия
путей не
совпадают,
то “.”
символ не
обрабатывается
особым
образом.
При
сопоставлении
названия
пути
символ
косой
черты
всегда
должен
быть явно
сопоставлен
с косой
чертой в
шаблоне, но
в других
контекстах
сопоставлений
он может
быть
сопоставлен
со
специальным
символом
шаблона,
как
описано
ниже в
подразделе
Сопоставление
с
шаблоном.
Смотрите
описание
команды shopt
ниже в
разделе
ВСТРОЕННЫЕ
КОМАНДЫ
ОБОЛОЧКИ
для
получения
описаний
опций
оболочки
nocaseglob, nullglob, globskipdots,
failglob и dotglob.
Переменная
оболочки
GLOBIGNORE может
использоваться
для
ограничения
набора
названий
файлов,
соответствующих
шаблону pattern.
Если
задано
значение
GLOBIGNORE, т все
совпадающие
названия
файлов,
которые
также
соответствуют
одному из
шаблонов в
GLOBIGNORE,
удаляются
из списка
совпадений.
Если
установлена
опция nocaseglob,
то
сопоставление
с
шаблонами
в GLOBIGNORE
выполняется
без учета
регистра.
Названия
файлов . и ..
всегда
игнорируется,
если
задано не
нулевое
значение
GLOBIGNORE.
Однако
установка
для GLOBIGNORE
ненулевого
значения
приводит
к
включению
опции
оболочки
dotglob, поэтому
все
остальные
названия
файлов,
начинающиеся
с “.”
совпадение.
Чтобы
вернуть
прежнее
поведение
при
игнорировании
названий
файлов,
начинающихся
с “.”,
создает “.*”
один из
шаблонов в
GLOBIGNORE. Опция
dotglob
отключена,
если
параметр
GLOBIGNORE не
установлен.
При
сопоставлении
с
шаблоном
GLOBIGNORE
учитывается
настройка
опции
оболочки
extglob.
Значение
переменной
оболочки
GLOBSORT
определяет
порядок
сортировки
результатов
расширения
названия
пути, как
описано
выше в
подразделе
Переменные
оболочки.
Сопоставление
с
шаблоном
Любой
символ,
который
появляется
в шаблоне,
за
исключением
специальных
символов
шаблона,
описанных
ниже,
соответствует
самому
себе.
Символ NUL
может не
встречаться
в шаблоне.
Обратная
косая
черта
заменяет
следующий
символ; при
сопоставлении
экранирующая
обратная
косая
черта
отбрасывается.
Специальные
символы
шаблона
должны
быть
заключены
в кавычки,
если они
должны
быть
подобраны
буквально.
Специальные
символы
шаблона
имеют
следующие
значения:
- *
- Соответствует
любой
строке,
включая
нулевую
строку.
Когда
опция
оболочки
globstar
включена и
*
используется
в
контексте
расширения
названия
пути, то
два
соседних *,
используемых
в качестве
единого
шаблона,
соответствуют
всем
файлам и
нулю или
более
каталогам
и
подкаталогам.
Если за ним
следует /,
то две
соседние
буквы *
соответствуют
только
каталогам
и
подкаталогам.
- ?
- Соответстветствие
любому
отдельному
символу.
- [...]
- Соответствует
любому из
символов,
заключенных
в
квадратные
скобки. Это
называется
выражением
в
квадратных
скобках bracket
expression и
соответствует
одному
символу.
Пара
символов,
разделенных
дефисом,
обозначает
выражение
диапазона
range expression; любой
символ,
который
находится
между
этими
двумя
символами
включительно,
использует
последовательность
сопоставлений
и набор
символов,
соответствующих
текущей
локали.
Если
первым
символом,
следующим
за [,
является !
или ^, то
соответствует
любой
символ, не
входящий в
диапазон.
Чтобы
соответствовать
-, включите
его в
качестве
первого
или
последнего
символа в
наборе.
Чтобы
соответствовать
символу ],
включите
его в
качестве
первого
символа в
наборе.
- Порядок
сортировки
символов в
выражениях
диапазона
и символы,
включенные
в диапазон,
определяются
текущей
локалью и
значениями,
если они
установлены,
переменных
оболочки
LC_COLLATE или
LC_ALL. Чтобы
получить
традиционную
интерпретацию
выражений
диапазона,
где [a-d]
эквивалентно
[abcd],
установите
значение
переменных
оболочки
LC_COLLATE или LC_ALL
равным C
или
включите
опцию
оболочки
globasciiranges.
- В
выражении,
заключенном
в
квадратные
скобки,
классы
символов
character classes могут
быть
указаны с
использованием
синтаксиса
[:class:], где class -
это один из
следующих
классов,
определенных
в
стандарте
POSIX
alnum alpha ascii blank cntrl digit graph lower print
punct space upper word xdigit
- Класс
символов
соответствует
любому
символу,
принадлежащему
к этому
классу.
Класс
символов
слова word
соответствует
буквам,
цифрам и
символу _.
- В
выражении,
заключенном
в
квадратные
скобки,
класс
эквивалентности
equivalence class может
быть
указан с
использованием
синтаксиса
[=c=],
который
сопоставляет
все
символы с
тем же
значением
сортировки
(как
определено
текущей
локалью),
что и
символ c.
- В
выражении,
заключенном
в
квадратные
скобки,
синтаксис
[.symbol.]
соответствует
сопоставляющему
символу
symbol.
Если
включена
опция
оболочки
extglob с
помощью
встроенной
команды shopt,
то
оболочка
распознает
несколько
расширенных
операторов
сопоставления
с шаблоном.
В
следующем
описании
список
шаблонов
pattern-list - это
список из
одного или
нескольких
шаблонов,
разделенных
символом |.
Составные
части
могут быть
сформированы
с
использованием
одного или
нескольких
следующих
подшаблонов:
- ?(pattern-list)
- Соответствует
нулю или
одному
появлению
в заданных
шаблонах.
- *(pattern-list)
- Соответствует
нулю или
одному
появлению
в заданных
шаблонах.
- +(pattern-list)
- Соответствует
нулю или
одному
появлению
в заданных
шаблонах.
- @(pattern-list)
- Соответствует
одному
появлению
в заданных
шаблонах.
- !(pattern-list)
- Соответствует
всему,
кроме
одного из
заданных
шаблонов.
Опция extglob
изменяет
поведение
синтаксического
анализатора,
поскольку
круглые
скобки
обычно
рассматриваются
как
операторы
с
синтаксическим
значением.
Чтобы
обеспечить
корректный
анализ
расширенных
шаблонов
сопоставления,
убедитесь,
что extglob
включено
перед
анализом
конструкций,
содержащих
шаблоны,
включая
функции
оболочки и
замены
команд.
При
сопоставлении
названий
файлов
опция
оболочки
dotglob
определяет
набор
проверяемых
названий
файлов:
когда
включено
dotglob, набор
названий
файлов
включает
все файлы,
начинающиеся
с “.”, but . и ..
должен
соответствовать
шаблону
или
вложенному
шаблону,
начинающемуся
с точки;
если он
отключен,
то в набор
не
включаются
названия
файлов,
начинающиеся
с “.” если
только
шаблон или
субшаблон
не
начинается
с “.”. Если
опция
оболочки
globskipdots
включена,
то
названия
файлов . и ..
никогда не
появляется
в наборе.
Как
указано
выше, “.”
имеет
особое
значение
только при
совпадениях
названий
файлов.
Сложное
расширенное
сопоставления
с шаблоном
с длинными
строками
выполняется
медленно,
особенно
если
шаблоны
содержат
чередования,
а строки
содержат
множество
совпадений.
Используйте
отдельные
совпадения
с более
короткими
строками
или
используйте
массивы
строк
вместо
одной
длинной
строки.
Удаление
кавычки
После
предыдущих
расширений
все не
заключенные
в кавычки
символы \, '
и ",
которые не
были
получены в
результате
одного из
вышеуказанных
расширений,
будут
удалены.
ПЕРЕНАПРАВЛЕНИЕ
Перед
выполнением
команды ее
ввод и
вывод
могут быть
перенаправлены
с
использованием
специальной
нотации,
интерпретируемой
оболочкой.
Перенаправление
redirected
позволяет
дублировать
файловые
дескрипторы
команд,
открывать,
закрывать
их,
указывать
на разные
файлы и
изменять
файлы, из
которых
команда
считывает
и в которые
записывает
данные. При
использовании
со
встроенной
команды exec
перенаправления
изменяют
файловые
дескрипторы
в текущей
среде
выполнения
оболочки.
Следующие
операторы
перенаправления
могут
предшествовать
или
отображаться
в любом
месте
простой
команд simple command
или могут
следовать
за
командой
command.
Перенаправления
обрабатываются
в том
порядке, в
котором
они
отображаются,
слева
направо.
Каждому
перенаправлению,
которому
может
предшествовать
номер
файлового
дескриптора,
вместо
этого
может
предшествовать
слово вида
название
файла varname. В
этом
случае для
каждого
оператора
перенаправления,
за
исключением
>&- и <&-,
оболочка
выделяет
файловый
дескриптор,
который
больше или
равен 10 и
присваивает
ему
значение
varname. Если varname
предшествует
>&- или <&-,
то
значение
varname
определяет
дескриптор
файла,
который
необходимо
закрыть.Если
указано
значение
{varname}, то
перенаправление
сохраняется
за
пределами
действия
команды,
что
позволяет
программисту
оболочки
вручную
управлять
временем
жизни
файлового
дескриптора
без
использования
встроенной
команды exec.
Опция
оболочки
varredir_close
управляет
этим
поведением.
В
следующих
описаниях,
если номер
файлового
дескриптора
опущен, а
первый
символ
оператора
перенаправления
равен “<”,
перенаправление
ссылается
на
стандартный
ввод
(файловый
дескриптор
0). Если
первый
символ
оператора
перенаправления
равен “>”,
перенаправление
ссылается
на
стандартный
вывод
(файловый
дескриптор
1).
Слово,
wordследующее
за
оператором
перенаправления
в
приведенных
ниже
описаниях,
если не
указано
иное, может
быть
расширено
фигурными
скобками,
тильдой,
параметрами
и
переменными,
заменой
команд,
арифметическим
расширением,
удалением
кавычек,
расширением
названия
пути и
разделением
слов. Если
оно
расширяется
более чем
на одно
слово, то bash
сообщает
об ошибке.
Порядок
перенаправлений
имеет
значение.
Например,
команда
перенаправляет
как
стандартный
вывод, так и
в
стандартную
ошибку в
файл dirlist, в то
время как
команда
перенаправляет
только
стандартный
вывод в
файл dirlist,
поскольку
стандартная
ошибка
была
перенаправлена
в
стандартный
вывод до
того, как
стандартный
вывод был
перенаправлен
в dirlist.
Bash
специально
обрабатывает
несколько
названий
файлов,
когда они
используются
в
перенаправлениях,
как
описано в
следующей
таблице.
Если
операционная
система, на
которой
запущена
bash,
предоставляет
эти
специальные
файлы, то bash
использует
их; в
противном
случае она
эмулирует
их
внутренне
с помощью
поведения,
описанного
ниже.
- /dev/fd/fd
- Если fd
является
допустимым
целым
числом, то
дублировать
файловый
дескриптор
fd.
- /dev/stdin
- Файловый
дескриптор
0
дублируется.
- /dev/stdout
- Файловый
дескриптор
1
дублируется.
- /dev/stderr
- Файловый
дескриптор
2
дублируется.
- /dev/tcp/host/port
- Если host -
допустимое
название
хоста или
адрес
интернет, а
port -
целочисленный
номер
порта или
название
службы, то
bash
попытается
открыть
соответствующий
сокет TCP.
- /dev/udp/host/port
- Если host -
допустимое
название
хоста или
адрес
интернет, а
port -
целочисленный
номер
порта или
название
службы, то
bash
попытается
открыть
соответствующий
сокет UDP.
Сбой при
открытии
или
создании
файла
приводит к
сбою
перенаправления.
Перенаправления
с
использованием
файловых
дескрипторов,
превышающих
9, следует
используйте
с
осторожностью,
так как они
могут
конфликтовать
с
файловыми
дескрипторами,
используемыми
оболочкой
внутри
системы.
Обратите
внимание,
что
встроенная
команда exec
может
заставить
вступить в
силу
перенаправления
в текущей
оболочке.
Перенаправление
ввода
При
перенаправлении
ввода
открывается
файл,
название
которого
является
результатом
расширения
слова word
для чтения
по
файловому
дескриптору
n или
стандартный
ввод
(файловый
дескриптор
0), если n не
указано.
Общий
формат для
перенаправления
входных
данных
следующий:
Перенаправление
вывода
При
перенаправлении
выходных
данных
открывается
файл,
название
которого
является
результатом
расширения
слова word
для записи
в файловом
дескрипторе
n или
стандартный
вывод
(файловый
дескриптор
1), если n не
указано.
Если файл
не
существует,
то он
создается;
если он
существует,
то он
обрезается
до
нулевого
размера.
Общий
формат для
перенаправления
выходных
данных
следующий:
Если
оператором
перенаправления
является >
и включена
опция noclobber
для
встроенной
команды set,
то
перенаправление
завершается
ошибкой,
если файл,
название
которого
является
результатом
расширения
слова word,
существует
и является
обычным
файлом.
Если
оператором
перенаправления
является
>| или
оператором
перенаправления
является
>, а опция
noclobber для
встроенной
команды set
не
включена,
то bash
попытается
перенаправить,
даже если
файл,
названный
word
существует.
Добавление
перенаправленных
выходных
данных
При
перенаправлении
вывода
таким
образом
открывается
файл,
название
которого
является
результатом
расширения
слова word
для
добавления
к
файловому
дескриптору
n, или
стандартный
вывод
(файловый
дескриптор
1), если n не
указано.
Если файл
не
существует,
то он
создается.
Общий
формат для
добавления
выходных
данных
следующий:
Перенаправление
стандартного
вывода и
стандартной
ошибки
Эта
конструкция
перенаправляет
как
стандартный
вывод
(файловый
дескриптор
1), так и
стандартный
вывод об
ошибке
(файловый
дескриптор
2) в файл,
название
которого
является
расширением
слова word.
Существует
два
формата
для
перенаправления
стандартного
вывода и
стандартной
ошибки:
и
>&word
Из двух
форматов
предпочтительнее
первый.
Семантически
это
эквивалентно
При
использовании
второго
формата
слово word
может не
расширяться
до числа
или -. Если
это так, то,
по
соображениям
совместимости,
применяются
другие
операторы
перенаправления
(смотрите
подраздел
Дублирование
файловых
дескрипторов
ниже).
Добавление
стандартного
вывода и
стандартной
ошибки
Эта
конструкция
добавляет
как
стандартный
вывод
(файловый
дескриптор
1), так и
стандартный
вывод об
ошибке
(файловый
дескриптор
2) к файлу,
название
которого
является
расширением
слова word.
Формат
для
добавления
стандартного
вывода и
стандартной
ошибки
следующий:
Это
семантически
эквивалентно
(смотрите
подраздел
Дублирование
файловых
дескрипторов
ниже).
Здесь
документы
Перенаправление
"Здесь
документы"
(Here Documents)
предписывает
оболочке
считывать
входные
данные из
текущего
источника
до тех пор,
пока она не
прочитает
строку,
содержащую
только
разделитель
delimiter (без
завершающих
пробелов).
Все строки,
прочитанные
до этого
момента,
затем
становятся
стандартными
входными
данными
(или
файловым
дескриптором
n, если
указано n)
для
команды.
Формат
документов
here-documents
следующий:
[n]<<[-]word
here-document
delimiter
Оболочка
не
выполняет
расширение
параметров
и
переменных,
подстановку
команд,
арифметическое
расширение
или
расширение
названия
пути для
слова word.
Если
какая-либо
часть
слова word
заключена
в кавычки,
то
разделитель
delimiter
является
результатом
удаления
кавычек в
слове word и
строки в
документе
here-document не
расширяются.
Если word не
заключено
в кавычки,
то delimiter - это
само слово
word и текст
документа
here-document
обрабатывается
аналогично
строке,
заключенной
в двойные
кавычки:
все строки
документа
here-document
подвергаются
расширению
параметров,
замене
командами
и
арифметическому
расширению,
последовательность
символов
\<newline>
трактуется
буквально,
а \
необходимо
использовать
для
заключения
в кавычки
символов \,
$ и `; однако
символы
двойных
кавычек не
имеют
специального
значения.
Если
оператором
перенаправления
является
<<-, то
оболочка
удаляет
все
начальные
символы
табуляции
из строк
ввода и
строки,
содержащей
delimiter. Это
позволяет
естественным
образом
использовать
отступы в
текстовых
документах
в
сценариях
оболочки.
Если
разделитель
не
заключен в
кавычки, то
последовательность
\<newline>
рассматривается
как
продолжение
строки: две
строки
соединяются,
а обратная
косая
черта-новая
строка
удаляется.
Это
происходит
при чтении
документа
here-document, перед
проверкой
наличия
конечного
разделителя,
поэтому
соединенные
строки
могут
образовывать
конечный
разделитель.
Здесь
строки
Вариант
документов
"Здесь
строки" (Here Strings)
имеет
следующий
формат:
Слово word
расширяется
с помощью
тильды,
параметров
и
переменных,
подстановки
команд,
арифметического
расширения
и удаления
кавычек.
Расширение
названия
пути и
разделение
слов не
выполняются.
Результат
передается
в виде
отдельной
строки с
добавлением
новой
строки к
команде
при ее
стандартном
вводе (или
файловому
дескриптору
n, если
указано n).
Дублирование
файловых
дескрипторов
Оператор
перенаправления
используется
для
дублирования
входных
файловых
дескрипторов.
Если слово
word
расширяется
до одной
или
нескольких
цифр, то
файловый
дескриптор
n
становится
копией
этого
файлового
дескриптора.
Ошибка
перенаправления
возникает,
если цифры
в word не
указывают
на
файловый
дескриптор,
открытый
для ввода.
Если
значение word
равно -, то
файловый
дескриптор
n закрыт.
Если n не
указано, то
используется
стандартный
ввод
(файловый
дескриптор
0).
Оператор
перенаправления
используется
аналогично
для
дублирования
выходных
файловых
дескрипторов.
Если n не
указано, то
используется
стандартный
вывод
(файловый
дескриптор
1). Если
цифры в word
не
указывают
файловый
дескриптор,
открытый
для вывода,
то это
означает
ошибку
перенаправления.
Если
значение word
равно -, то
файловый
дескриптор
n
закрывается.
В качестве
особого
случая,
если n
опущено, а
word не
расширяется
до одной
или
нескольких
цифр или -,
это
перенаправляет
стандартный
вывод и
стандартную
ошибку, как
описано
ранее.
Перемещение
файловых
дескрипторов
Оператор
перенаправления
перемещает
файловый
дескриптор
со
значением
digit в
файловый
дескриптор
со
значением
n или в
стандартный
ввод
(файловый
дескриптор
0), если n не
указано.
Дескриптор
со
значением
digit
закрывается
после
дублирования
в n.
Аналогично,
оператор
перенаправления
перемещает
файловый
дескриптор
со
значением
digit в
файловый
дескриптор
со
значением
n или в
стандартный
вывод
(файловый
дескриптор
1), если n не
указано.
Открытие
файловых
дескрипторов
для чтения
и записи
Оператор
перенаправления
открывает
файл,
название
которого
является
расширением
слова word,
как для
чтения, так
и для
записи по
файловому
дескриптору
n или по
файловому
дескриптору
0, если n не
указано.
Если файл
не
существует,
то он
создается.
ПСЕВДОНИМЫ
Псевдонимы
Aliases
позволяют
подставлять
строку
вместо
слова,
которое
находится
в позиции
во входных
данных, где
оно может
быть
первым
словом
простой
команды.
Псевдонимы
имеют
названия и
соответствующие
значения,
которые
устанавливаются
и
отменяются
с помощью
встроенных
команд alias и
unalias
(смотрите
раздел
ВСТРОЕННЫЕ
КОМАНДЫ
ОБОЛОЧКИ
ниже).
Если
оболочка
считывает
слово без
кавычек в
правильной
позиции, то
она
проверяет,
соответствует
ли оно
псевдониму.
Если оно
соответствует,
то
оболочка
заменяет
слово
значением
псевдонима
и
считывает
это
значение,
как если бы
оно было
прочитано
вместо
слова.
Оболочка
не
просматривает
символы,
следующие
за словом,
перед
попыткой
замены
псевдонима.
Символы /,
$, ` и =, а
также
любые из
перечисленных
выше
метасимволов
metacharacters
оболочки
или
кавычек
могут
отсутствовать
в
псевдониме.
Заменяющий
текст
может
содержать
любые
допустимые
входные
данные
оболочки,
включая
метасимволы
оболочки.
Первое
слово
заменяющего
текста
проверяется
на наличие
псевдонимов,
но слово,
идентичное
раскрываемому
псевдониму,
не
раскрывается
во второй
раз. Это
означает,
что можно,
например,
заменить ls
на ls -F и bash не
будет
пытаться
рекурсивно
расширять
заменяющий
текст.
Если
последним
символом
значения
псевдонима
является
пробел blank,
то
оболочка
проверяет
следующее
за
псевдонимом
командное
слово на
предмет
расширения
псевдонима.
Псевдонимы
создаются
и
выводятся
с помощью
команды alias,
а
удаляются
с помощью
команды unalias.
В
заменяющем
тексте нет
механизма
для
использования
аргументов.
Если
аргументы
необходимы,
то
используйте
функцию
оболочки
(смотрите
раздел
ФУНКЦИИ
ниже).
Псевдонимы
не
раскрываются,
когда
оболочка
не
является
интерактивной,
если
только
опция
оболочки
expand_aliases не
задана с
помощью
команды shopt
(смотрите
описание
shopt в
разделе
ВСТРОЕННЫЕ
КОМАНДЫ
ОБОЛОЧКИ
ниже).
Правила,
касающиеся
определения
и
использования
псевдонимов,
несколько
запутанны.
Bash всегда
считывает
по крайней
мере одну
полную
строку
ввода и все
строки,
которые
составляют
составную
команду,
перед
выполнением
любой из
команд в
этой
строке или
составной
команды.
Псевдонимы
раскрываются
при чтении
команды, а
не при ее
выполнении.
Следовательно,
определение
псевдонима,
появляющееся
в той же
строке, как
и другая
команда, и
не вступит
в силу до
тех пор,
пока
оболочка
не
прочитает
следующую
строку
ввода, а
определение
псевдонима
в
составной
команде не
вступит в
силу до тех
пор, пока
оболочка
не
проанализирует
и не
выполнит
всю
составную
команду
целиком.
Новый
псевдоним
не влияет
на команды,
следующие
за
определением
псевдонима
в этой
строке или
в
остальной
части
составной
команды.
Такое
поведение
также
является
проблемой
при
выполнении
функций.
Псевдонимы
раскрываются
при чтении
определения
функции, а
не при
выполнении
функции,
поскольку
определение
функции
само по
себе
является
командой.
Как
следствие,
псевдонимы,
определенные
в функции,
недоступны
до тех пор,
пока эта
функция не
будет
выполнена.
На всякий
случай
всегда
выносите
определения
псевдонимов
в
отдельную
строку и не
используйте
псевдоним
alias в
составных
командах.
Почти для
всех целей
функции
оболочки
предпочтительнее
псевдонимов.
ФУНКЦИИ
Функция
оболочки,
определенная,
как
описано
выше, в
разделе
ГРАММАТИКА
ОБОЛОЧКИ,
хранит
последовательность
команд для
последующего
выполнения.
Когда
название
функции
оболочки
используется
в качестве
простого
названия
команды,
тогда
оболочка
выполняет
список
команд,
связанных
с этим
названием
функции.
Функции
выполняются
в
контексте
вызывающей
оболочки;
для их
интерпретации
не
создается
новый
процесс
(сравните
это с
выполнением
сценария
оболочки).
Когда
функция
выполняется,
аргументы
функции
становятся
позиционными
параметрами
во время ее
выполнения.
Специальный
параметр #
обновляется,
чтобы
отразить
новые
позиционные
параметры.
Специальный
параметр 0
остается
неизменным.
Первому
элементу
переменной
FUNCNAME
присваивается
значение
названия
функции во
время ее
выполнения.
Все
остальные
аспекты
окружающей
среды
выполнения
оболочки
идентичны
для
функции и
её вызова,
со
следующими
исключениями:
ловушки DEBUG
и RETURN не
наследуются
(смотрите
описание
встроенной
ловушки в
разделе
ВСТРОЕННЫЕ
КОМАНДЫ
ОБОЛОЧКИ
ниже), если
функции не
присвоен
атрибут trace
(смотрите
описание
встроенной
команды
declare ниже)
или, если не
включена
опция
оболочки -o
functrace с
помощью
встроенной
команды set
(в этом
случае все
функции
наследуют
ловушки DEBUG
и RETURN), но
ловушка ERR
не
наследуется,
если не
включена
опция
оболочки -o
errtrace.
Переменные,
локальные
для
функции,
объявляются
с помощью
встроенной
команды local
(локальные
переменные
local variables). Обычно
переменные
и их
значения
совместно
используются
функцией и
её вызовом.
Если
переменная
local
объявлена
как
локальная,
то область
видимости
переменной
ограничивается
этой
функцией и
ее
дочерними
процессами
(включая
функции,
которые
она
вызывает).
В
следующем
описании
текущая
область current
scope - это
выполняемая
в данный
момент
функция.
Предыдущие
области
состоят из
вызывающего
объекта
этой
функции и
так далее,
вплоть до
“global”
область
видимости,
в которой
оболочка
не
выполняет
никаких
функций
оболочки.
Локальная
переменная
в текущей
области
видимости -
это
переменная,
объявленная
с
использованием
встроенных
команд local
или declare в
выполняемой
в данный
момент
функции.
Локальные
переменные
“shadow” это
переменные
с
одинаковыми
названиями,
объявленные
в
предыдущих
областях.
Например,
локальная
переменная,
объявленная
в функции,
скрывает
переменные
с
одинаковыми
названиями,
объявленные
в
предыдущих
областях,
включая
глобальные
переменные:
ссылки и
присвоения
ссылаются
на
локальную
переменную,
оставляя
переменные
в
предыдущих
областях
неизмененными.
Когда
функция
возвращается,
глобальная
переменная
снова
становится
видимой.
Оболочка
использует
динамическую
область
видимости
dynamic scoping для
управления
видимостью
переменной
в функциях.
При
динамической
области
видимости
видимые
переменные
и их
значения
являются
результатом
последовательности
вызовов
функций,
которые
привели к
выполнению
текущей
функции.
Значение
переменной,
которое
видит
функция,
зависит от
ее
значения в
вызывающем
объекте,
если
таковое
имеется,
независимо
от того,
является
ли
вызывающий
объект
глобальной
областью
видимости
или другой
функцией
оболочки.
Это также
значение,
которое
скрывается
в
объявлении
локальной
переменной
и значение,
которое
восстанавливается
при
возврате
функции.
Например,
если
переменная
var
объявлена
как
локальная
в функции
func1, а func1
вызывает
другую
функцию func2,
то ссылки
на var,
сделанные
из func2,
преобразуются
в
локальную
переменную
var из func1,
заменяющую
любую
глобальную
переменную
с
названием
var.
Встроенная
команда unset
также
работает с
использованием
той же
динамической
области:
если
переменная
является
локальной
для
текущей
области, то
unset
сбрасывает
ее; в
противном
случае
команда unset
будет
ссылаться
на
переменную,
найденную
в любой
вызывающей
области,
как
описано
выше. Если
переменная
в текущей
локальной
области не
установлена,
то она
остается
неизменной
(отображается
как unset) до тех
пор, пока
она не
будет
сброшена в
этой
области
или пока
функция не
вернется.
Как только
функция
вернется,
любой
экземпляр
переменной
в
предыдущей
области
становится
видимым.
Если unset
воздействует
на
переменную
в
предыдущей
области
видимости,
то любой
экземпляр
переменной
с таким
названием,
который
был скрыт,
становится
видимым
(смотрите
ниже, как
опция
оболочки
localvar_unset
изменяет
это
поведение).
Переменная
FUNCNEST, если
для нее
задано
числовое
значение,
превышающее
0,
определяет
максимальный
уровень
вложенности
функции.
Вызовы
функций,
превышающие
этот
предел,
приводят к
прерыванию
выполнения
всей
команды.
Если в
функции
выполняется
встроенная
команда return,
то функция
завершает
работу и
выполнение
возобновляется
следующей
командой
после
вызова
функции.
Если в return
задан
числовой
аргумент,
то это -
статус
возврата
функции; в
противном
случае
статус
возврата
функции
это - статус
завершения
последней
команды,
выполненной
перед return.
Любая
команда,
связанная
с ловушкой
RETURN,
выполняется
до
продолжения
выполнения.
Когда
функция
завершается,
значения
позиционных
параметров
и
специального
параметра
#
возвращаются
к
значениям,
которые
они имели
до
выполнения
функции.
Опция -f
для
встроенных
команд declare
или typeset
содержит
список
названий и
определений
функций.
При выборе
опции -F для
declare или typeset
перечисляются
только
названия
функций (и,
при
необходимости,
исходный
файл и
номер
строки,
если
включена
опция
оболочки
extdebug). Функции
могут быть
экспортированы
таким
образом,
чтобы
дочерние
процессы
оболочки
(т.е. те,
которые
создаются
при
выполнении
отдельного
вызова
оболочки)
автоматически
определяли
их с
помощью
опции -f для
встроенной
функции export.
Опция -f для
встроенной
команды unset
удаляет
определение
функции.
Функции
могут быть
рекурсивными.
Переменная
FUNCNEST может
использоваться
для
ограничения
глубины
стека
вызовов
функций и
количества
вызовов
функций. По
умолчанию
bash не
накладывает
ограничений
на
количество
рекурсивных
вызовов.
АРИФМЕТИЧЕСКИЕ
ВЫЧИСЛЕНИЯ
Оболочка
позволяет
вычислять
арифметические
выражения
при
определенных
обстоятельствах
(смотрите
подраздел
Встроенные
команды let и
declare,
составную
команду ((,
арифметическую
команду for,
условную
команду [[ и
подраздел
Арифметическое
расширение).
Вычисление
выполняется
с
использованием
максимально
возможных
целых
чисел
фиксированной
длины, без
проверки
на
переполнение,
хотя
деление на 0
перехватывается
и
помечается
как ошибка.
Операторы,
их
приоритет,
ассоциативность
и значения
такие же,
как в языке
Си.
Следующий
список
операторов
сгруппирован
по уровням
с
одинаковым
приоритетом.
Уровни
перечислены
в порядке
убывания
приоритета.
- id++
id--
- переменные
значения
инкремент
и
декремент
- ++id --id
- переменный
прединкремент
и
преддекремент
- - +
- унарный
минус и
плюс
- ! ~
- логическая
и
побитовая
инверсия
- **
- возведение
в степень
- * / %
- умножение,
деление,
остаток
- + -
- сложение,
вычитание
- << >>
- побитовые
сдвиги
влево и
вправо
- <= >= < >
- сравнение
- == !=
- равенство
и
неравенство
- &
- побитовое
логическое
И
- ^
- побитовое
логическое
исключающее
ИЛИ
- |
- побитовое
логическое
ИЛИ
- &&
- логическое
И
- ||
- логическое
ИЛИ
- expr?expr:expr
- оператор
ветвления
(условие)
- = *= /= %= += -= <<= >>= &= ^= |=
- назначение,
распределение
- expr1 ,
expr2
- запятая
Переменные
оболочки
допустимы
в качестве
операндов;
расширение
параметров
выполняется
до
вычисления
выражения.
Внутри
выражения
на
переменные
оболочки
также
можно
ссылаться
по
названию,
не
используя
синтаксис
расширения
параметров.
Это
означает,
что вы
можете
использовать
"x", где x - это
название
переменной
оболочки, в
арифметическом
выражении
и оболочка
вычислит
ее
значение
как
выражение
и
использует
результат.
Переменная
оболочки,
которая
имеет
значение
нуль или не
определена,
принимает
значение 0,
если на нее
ссылается
название в
выражении.
Значение
переменной
вычисляется
как
арифметическое
выражение,
когда на
нее
ссылаются
или когда
переменной,
которой
присвоен
атрибут
целое
число integer с
помощью
команды declare -i
в качестве
значения.
Значение
ноль (null)
равно 0. Для
использования
в
выражении
переменной
оболочки
необязательно,
чтобы ее
атрибут integer
был
включен.
Целочисленные
константы
соответствуют
определению
языка Си,
без
суффиксов
или
символьных
констант.
Константы,
начинающиеся
с 0,
интерпретируются
как
восьмеричные
числа. 0x или 0XX
обозначают
шестнадцатеричные
числа. В
противном
случае
числа
принимают
форму [base#]n,
где
необязательное
base - это
десятичное
число от 2 до
64,
представляющее
арифметическое
основание
системы
счисления,
а n -
значение
основания
системы
счисления.
Если
основание
base# опущено,
то
используется
основание 10.
При
указании n,
если не
требуется
указывать
цифру,
цифры
больше 9
обозначаются
строчными
буквами,
прописными
буквами @ и _
в
указанном
порядке.
Если
значение base
меньше или
равно 36, то
строчные и
прописные
буквы
могут
использоваться
взаимозаменяемо
для
обозначения
чисел от 10
до 35.
Операторы
вычисляются
в порядке
приоритета.
Подвыражения
в круглых
скобках
вычисляются
первыми и
могут
переопределять
правила
приоритета,
приведенные
выше.
УСЛОВНЫЕ
ВЫРАЖЕНИЯ
Условные
выражения
используются
составной
командой [[
и
встроенными
командами
test и [ для
проверки
атрибутов
файла и
выполнения
строковых
и
арифметических
сравнений.
Команды test
и [
определяют
свое
поведение
на основе
количества
аргументов;
смотрите
описания
этих
команд для
любых
других
действий,
связанных
с
командами.
Выражения
формируются
из унарных
или
двоичных
первичных
элементов,
перечисленных
ниже.
Унарные
выражения
часто
используются
для
проверки
состояния
файла или
переменной
оболочки.
Бинарные
операторы
используются
для
сравнения
строк,
чисел и
атрибутов
файлов.
Bash
специально
обрабатывает
несколько
названий
файлов,
когда они
используются
в
выражениях.
Если
операционная
система, на
которой
запущена
bash,
предоставляет
эти
специальные
файлы, то bash
будет
использовать
их; в
противном
случае она
будет
эмулировать
их
внутренне
следующим
образом:
Если
какой-либо
аргумент
файла file
для одного
из
основных
параметров
имеет вид
/dev/fd/n, затем bash
проверяет
файловый
дескриптор
n. Если
аргумент file
для одного
из
основных
параметров
является
одним из /dev/stdin,
/dev/stdout, или /dev/stderr, bash
проверяет
файловый
дескриптор
0, 1 или 2
соответственно.
Если не
указано
иное, то в
первую
очередь
обрабатываются
файлы
символических
ссылок , при
этом
обрабатываются
адресат
ссылки, а не
сама
ссылка.
При
использовании
с [[ или
когда
оболочка
находится
в режиме posix,
операторы
< и >
выполняют
лексикографическую
сортировку
с
использованием
текущей
локали.
Когда
оболочка
не
находится
в режиме posix,
команда test
выполняет
сортировку
с
использованием
порядка ASCII.
- -a file
- Истинно,
если файл
file
существует.
- -b file
- Истинно,
если file
существует
и является
блочным
специальным
файлом.
- -c file
- Истинно,
если файл
file
существует
и является
специальным
символическим
файлом.
- -d file
- Истинно,
если файл
file
существует
и является
каталогом.
- -e file
- Истинно,
если файл
file
существует.
- -f file
- Истинно,
если файл
file
существует
и является
обычным
файлом.
- -g file
- Истинно,
если файл
file
существует
и имеет
значение
set-group-id.
- -h file
- Истинно,
если файл
file
существует
и является
символической
ссылкой.
- -k file
- Истинно,
если файл
file
существует
и его “sticky”
бит
установлен.
- -p file
- Истинно,
если файл
file
существует
и является
именованным
каналом (FIFO).
- -r file
- Истинно,
если файл
file
существует
и доступен
для
чтения.
- -s file
- Истинно,
если файл
file
существует
и имеет
размер
больше
нуля.
- -t fd
- Истинно,
если
файловый
дескриптор
fd открыт и
ссылается
на
терминал.
- -u file
- Истинно,
если файл
file
существует
и
установлен
его бит set-user-id.
- -w file
- Истинно,
если файл
file
существует
и доступен
для
записи.
- -x file
- Истинно,
если файл
file
существует
и является
исполняемым.
- -G file
- Истинно,
если файл
file
существует
и имеет
эффективный
идентификатор
группы.
- -L file
- Истинно,
если файл
file
существует
и является
символической
ссылкой.
- -N file
- Истинно,
если файл
file
существует
и был
изменен с
момента
последнего
обращения
к нему.
- -O file
- Истинно,
если файл
file
существует
и имеет
эффективный
идентификатор
пользователя.
- -S file
- Истинно,
если файл
file
существует
и является
сокетом.
- -o optname
- Истинно,
если
включена
опция
оболочки
optname.
Смотрите
список
опций в
описании
опции -o
для
встроенной
команды set
ниже.
- -v
varname
- Истинно (true),
если
задана
переменная
оболочки
varname (ей
присвоено
значение).
Если varname - это
название
переменной
индексированного
массива с
подписью @
или *, то
возвращается
значение true,
если в
массиве
есть
какие-либо
заданные
элементы.
Если varname - это
название
переменной
ассоциативного
массива с
подписью @
или *, то
возвращается
значение true,
если задан
элемент с
таким
ключом.
- -R varname
- Истинно,
если
установлена
переменная
оболочки
varname, которая
является
ссылкой на
название.
- -z string
- Истинно,
если длина
строки string
равна
нулю.
- string
- -n string
- Истинно,
если длина
string отлична
от нуля.
- string1 ==
string2
- string1
= string2
- Истинно (true),
если
строки
равны. =
следует
использовать
с командой
test для
проверки
соответствия
POSIX
командой [[
выполняется
сопоставление
с шаблоном,
как
описано
выше
(подраздел
Составные
команды).
- string1
!= string2
- Истинно,
если
строки не
равны.
- string1
< string2
- Истинно,
если
строка string1
лексикографически
сортируется
перед
строкой
string2.
- string1
> string2
- Истинно,
если
строка string1
сортируется
лексикографически
после
строки string2.
- file1 -ef file2
- Истинно,
если файлы
file1 и file2
ссылаются
на одно и
то же
устройство
и инод.
- file1 -nt
file2
- Истинно,
если файл
file1 более
новый (в
соответствии
с датой
изменения),
чем файл file2
или если
файл file1
существует,
а файл file2 не
существует.
- file1 -ot
file2
- Истинно,
если файл
file1 старше,
чем файл file2
или если
файл file2
существует,
а файл file1 не
существует.
- arg1 OP
arg2
- OP
является
одним из -eq,
-ne, -lt, -le, -gt
или -ge. Эти
арифметические
двоичные
операторы
возвращают
значение true,
если
значение
arg1 равно, не
равно,
меньше,
меньше или
равно,
больше или
больше, чем
значение
arg2,
соответственно.
arg1 и arg2 могут
быть
положительными
или
отрицательными
целыми
числами.
При
использовании
с командой
[[ arg1 и arg2
вычисляются
как
арифметические
выражения
(смотрите
раздел
АРИФМЕТИЧЕСКИЕ
ВЫЧИСЛЕНИЯ
выше).
Поскольку
расширения,
выполняемые
командой [[
для arg1 и arg2,
потенциально
могут
привести к
пустым
строкам,
вычисление
арифметических
выражений
обрабатывает
их как
выражения,
значение
которых
равно 0.
ПРОСТОЕ
РАСШИРЕНИЕ
КОМАНДЫ
Когда
оболочка
выполняет
простую
команду,
она
выполняет
следующие
расширения,
назначения
и
перенаправления
слева
направо в
следующем
порядке.
- 1.
- Слова,
которые
синтаксический
анализатор
пометил
как
присвоения
переменным
(т.е. то, что
предшествуют
названию
команды) и
перенаправления,
сохраняются
для
последующей
обработки.
- 2.
- Слова,
которые не
являются
назначениями
переменных
или
перенаправлениями,
раскрываются.
Если после
расширения
остаются
какие-либо
слова, то
первое
слово
принимается
за
название
команды, а
остальные
слова - за
аргументы.
- 3.
- Перенаправления
выполняются
так, как
описано
выше, в
разделе
ПЕРЕНАПРАВЛЕНИЕ.
- 4.
- Текст
после
символа = в
каждом
присвоении
переменной
подвергается
расширению
тильдой,
расширению
параметров,
подстановке
команд,
арифметическому
расширению
и удалению
кавычек,
прежде чем
быть
присвоенным
переменной.
Если в
результат
команды по
присвоению
переменных
не
оказывает
влияния на
окружающую
среду
оболочки. В
случае
такой
команды
(которая
состоит
только из
присваиваний
и
перенаправлений)
присваивания
выполняются
перед
перенаправлениями.
В
противном
случае
переменные
добавляются
в
окружающую
среду
команды и
не влияют
на текущую
среду
оболочки.
Если при
любом
назначении
будет
предпринята
попытка
присвоить
значение
переменной,
доступной
только для
чтения, то
возникает
ошибка и
команда
завершает
работу с
ненулевым
статусом.
Если в
результате
данной
команды
выполняется
перенаправление,
то оно не
влияет на
текущую
окружающую
среду
оболочки.
Ошибка
перенаправления
приводит к
завершению
выполнения
команды с
ненулевым
статусом.
Если
после
расширения
осталось
название
команды, то
выполнение
продолжается,
как
описано
ниже. В
противном
случае
команда
завершается.
Если одно
из
расширений
содержало
замену
команды, то
статус
завершения
команды
соответствует
статусу
завершения
последней
выполненной
замены
команды.
Если
замены
команд не
было, то
команда
завершает
работу с
нулевым
статусом.
ВЫПОЛНЕНИЕ
КОМАНДЫ
После
разбиения
команды на
слова, если
в
результате
получается
простая
команда и
необязательный
список
аргументов,
то
оболочка
выполняет
следующие
действия.
Если
команда не
содержит
косых черт,
то
оболочка
пытается
найти их.
Если
существует
функция
оболочки с
таким
названием,
то эта
функция
вызывается,
как
описано
выше в
разделе
ФУНКЦИИ.
Если
название
функции
не
совпадает,
то
оболочка
выполняет
поиск
функции в
списке
встроенных
функций
оболочки.
Если
найдено
совпадение,
то
вызывается
эта
встроенная
функция.
Если
название
не
является
ни
функцией
оболочки,
ни
встроенной
командой и
не
содержит
косых черт,
то bash
выполняет
поиск в
каждом
элементе
PATH
каталога,
содержащего
исполняемый
файл с
таким
названием.
Оболочка
Bash
использует
хэш-таблицу
для
запоминания
полных
путей к
исполняемым
файлам
(смотрите
hash в
разделе
ВСТРОЕННЫЕ
КОМАНДЫ
ОБОЛОЧКИ
ниже).
Оболочка Bash
выполняет
полный
поиск по
каталогам
в PATH
только в
том случае,
если
команда не
найдена в
хэш-таблице.
Если поиск
не
увенчался
успехом, то
оболочка
выполняет
поиск
определенной
функции
оболочки с
названием
command_not_found_handle. Если
эта
функция
существует,
то она
вызывается
в
отдельной
среде
выполнения
с исходной
командой и
аргументами
исходной
команды в
качестве
аргументов
и статус
завершения
функции
становится
статусом
завершения
этой
подоболочки.
Если эта
функция не
определена,
то
оболочка
выводит
сообщение
об ошибке и
возвращает
статус
завершения,
равный 127.
Если
поиск
завершен
успешно
или если
название
команды
содержит
одну или
несколько
косых черт,
то
оболочка
запускает
названную
программу
в
отдельной
окружающей
среде
выполнения.
В качестве
аргумента 0
присваивается
данное
название, а
остальные
аргументы
команды
присваиваются
заданным
аргументам,
если
таковые
имеются.
Если это
выполнение
завершается
неудачей
из-за того,
что файл не
имеет
исполняемого
формата и
не
является
каталогом,
предполагается,
что это -
файл
сценария
оболочки shell
script, т.е. файл,
содержащий
команды
оболочки и
оболочка
создает
новый
экземпляр
самой себя
для его
выполнения.
Bash пытается
определить,
является
ли файл
текстовым
или
двоичным и
не будет
выполнять
файлы,
которые
она
определяет
как
двоичные.
Эта
подоболочка
повторно
инициализирует
саму себя
так, как
если бы для
обработки
сценария
была
вызвана
новая
оболочка,
за
исключением
того, что
расположение
команд,
запомненных
родительской
оболочкой,
сохраняются
дочерней
оболочкой
(смотрите
хэш ниже в
разделе
ВСТРОЕННЫЕ
КОМАНДЫ
ОБОЛОЧКИ.
Если
программа
представляет
собой файл,
начинающийся
с #!, то в
оставшейся
части
первой
строки
указывает
интерпретатор
для
программы.
Оболочка
выполняет
указанный
интерпретатор
в
операционных
системах,
которые
сами не
обрабатывают
этот
исполняемый
формат.
Аргументы
интерпретатора
состоят из
одного
необязательного
аргумента,
следующего
за
названием
интерпретатора
в первой
строке
программы,
за которым
следует
название
программы,
а затем
аргументы
команды,
если
таковые
имеются.
ОКРУЖАЮЩАЯ
СРЕДА
ВЫПОЛНЕНИЯ
КОМАНД
Оболочка
имеет
окружающую
среду execution environment,
которая
сдержит
следующее:
- Открытие
файлов,
унаследованных
оболочкой
при вызове,
измененных
с помощью
перенаправлений
и
переданных
во
встроенную
команду exec.
- Текущий
рабочий
каталог,
заданный
командами
cd, pushd или popd
или
каталог
унаследованный
оболочкой
при
вызове.
- Маску
режима
создания
файла
задаваемую
командой
umask или
наследуемую
от
родительской
оболочки.
- Текущие
ловушки,
установленные
trap.
- Параметры
оболочки,
которые
задаются с
помощью
присваивания
переменной
или с
помощью
команды set
или
наследуются
от
родительской
оболочки в
окружающей
среде.
- Функции
оболочки,
определенные
во время
выполнения
или
унаследованные
от
родительской
оболочки в
окружающей
среде.
- Опции
включаются
при вызове
(либо по
умолчанию,
либо с
помощью
аргументов
командной
строки),
либо с
помощью
команды set.
- Опции,
включаемые
с помощью
команды
shopt.
- Псевдонимы
оболочки,
определенные
с помощью
команды
alias.
- Различные
идентификаторы
процессов
ID, включая
идентификаторы
фоновых
заданий,
значение $$
и значение
PPID.
Когда
требуется
выполнить
простую
команду,
отличную
от
встроенной
или
функции
оболочки,
то она
вызывается
в
отдельной
окружающей
среде,
которая
состоит из
следующего.
Если не
указано
иное, то
значения
наследуются
из
оболочки.
- Открытые
файлы
оболочки, а
также
любые
изменения
и
дополнения,
указанные
в
перенаправлениях
на
команду.
- Текущий
рабочий
каталог.
- Маска
режима
создания
файла.
- Переменные
и функции
оболочки,
помеченные
для
экспорта, а
также
переменные,
экспортированные
для
команды,
передаются
в
окружающей
среде.
- Ловушки,
обнаруженные
оболочкой,
сбрасываются
до
значений,
унаследованных
от
родительской
оболочки, а
ловушки,
проигнорированные
оболочкой,
игнорируются.
Команда,
вызванная
в этой
отдельной
окружающей
среде, не
может
повлиять
на среду
выполнения
оболочки.
Подоболочка
subshell - это
копия
процесса
оболочки.
Подстановка
команд,
команды,
сгруппированные
в круглые
скобки и
асинхронные
команды
вызываются
в среде
подоболочки,
которая
является
дубликатом
окружающей
среды
оболочки,
за
исключением
того, что
ловушки,
перехваченные
оболочкой,
сбрасываются
до
значений,
которые
оболочка
унаследовала
от своего
родительского
элемента
при вызове.
Встроенные
команды,
которые
вызываются
как часть
конвейера,
за
исключением,
возможно,
последнего
элемента в
зависимости
от
значения
опции
оболочки
lastpipe, также
выполняются
в
окружающей
среде
подоболочки.
Изменения,
внесенные
в
окружающую
среду
подоболочки,
не могут
повлиять
на
окружающую
среду
выполнения
оболочки.
Когда
оболочка
находится
в режиме posix,
вложенные
подоболочки,
созданные
для
выполнения
подстановок
команд,
наследуют
значение
опции -e от
своей
родительской
оболочки.
Когда
оболочка
не
находится
в режиме posix,
то bash
удаляет
опцию -e в
таких
подоболочках.
Смотрите
описание
опции
оболочки
inherit_errexit ниже,
чтобы
узнать, как
управлять
этим
поведением,
когда
оболочка
не
находится
в режиме posix.
Если за
командой
следует
символ & и
управление
заданием
не
активировано,
то
стандартным
вводом по
умолчанию
для
команды
является
пустой
файл /dev/null. В
противном
случае
вызываемая
команда
наследует
файловые
дескрипторы
вызывающей
оболочки,
измененные
при
перенаправлении.
СРЕДА
ОКРУЖЕНИЯ
При
вызове
программы
ей
выдается
массив
строк,
называемый
окружающей
средой environment.
Это список
пар name-value в
формате
name=value.
Оболочка
предоставляет
несколько
способов
управления
средой. При
вызове
оболочка
сканирует
свою
собственную
окружающую
среду и
создает
параметр
для
каждого
найденного
названия,
автоматически
помечая
его для
использования
в дочерних
процессах.
Выполняемые
команды
наследуют
окружающую
среду.
Команды export,
declare -x и unset
изменяют
окружающая
среду,
добавляя
или удаляя
параметры
и функции.
Если
значение
параметра
в
окружающей
среде
изменяется,
то новое
значение
автоматически
становится
частью
окружающей
среды,
заменяя
старое.
Окружающая
среда,
наследуемая
любой
выполняемой
командой,
состоит из
начальной
окружающей
среды
оболочки,
значения
которой
могут быть
изменены в
оболочке,
за вычетом
любых пар,
удаленных
командами
unset или export -n, а
также
любых
дополнений,
сделанных
с помощью
команд export и
declare -x.
Если
какие-либо
присвоения
параметров,
как
описано
выше в
разделе
ПАРАМЕТРЫ,
отображаются
перед
простой
командой simple
command, то
присвоения
переменных
являются
частью
окружающей
среды этой
команды до
тех пор,
пока она
выполняется.
Эти
команды
присваивания
влияют
только на
окружающую
среду,
которую
видит эта
команда.
Если эти
назначения
предшествуют
вызову
функции
оболочки,
то
переменные
являются
локальными
для этой
функции и
экспортируются
в дочерние
элементы
этой
функции.
Если
задана
опция -k
(смотрите
встроенную
команду set
ниже), то в
окружающую
среду для
команды
помещаются
все
параметры,
а не только
те, которые
предшествуют
названию
команды.
Когда bash
вызывает
внешнюю
команду,
тогда
переменной
_
присваивается
значение
полного
пути к
команде и
передается
этой
команде в
ее
окружающей
среде.
КОД
ЗАВЕРШЕНИЯ
Статус
выхода
выполняемой
команды -
это
значение,
возвращаемое
системным
вызовом waitpid
или
эквивалентной
функцией.
Статусы
выхода
(завершения)
находятся
в
диапазоне
от 0 до 255, хотя,
как
объясняется
ниже,
оболочка
может
специально
использовать
значения
выше 125.
Статусы
завершения
работы
встроенных
команд
оболочки и
составных
команд
также
ограничены
этим
диапазоном.
При
определенных
обстоятельствах
оболочка
будет
использовать
специальные
значения
для
указания
конкретных
режимов
ошибок.
Для целей
оболочки,
команда,
которая
завершается
с нулевым
статусом
завершения,
была
выполнена
успешно.
Таким
образом,
когда
нулевой
статус
выхода
указывает
на успех,
ненулевой
статус
выхода
указывает
на
неудачу.
Когда
команда
завершается
по
фатальному
сигналу N,
то bash
использует
значение
128+N в
качестве
статуса
завершения.
Если
команда не
найдена, то
дочерний
процесс,
созданный
для ее
выполнения,
возвращает
статус 127.
Если
команда
найдена, но
не может
быть
выполнена,
возвращается
статус 126.
Если
команда не
выполняется
из-за
ошибки во
время
расширения
или
перенаправления,
то статус
завершения
больше
нуля.
Встроенные
команды
оболочки
возвращают
статус 0 (true) в
случае
успешного
выполнения
и
ненулевое
значение
(false), если во
время их
выполнения
возникает
ошибка. Все
встроенные
команды
возвращают
статус
завершения,
равный 2, что
указывает
на
неправильное
использование,
как
правило,
недопустимые
опции или
отсутствующие
аргументы.
Статус
завершения
последней
команды
доступен
(может быть
прочитан) в
специальном
параметре
$?.
Сама Bash
возвращает
статус
завершения
последней
выполненной
команды,
если
только не
возникает
синтаксическая
ошибка, и в
этом
случае, она
завершается
с
ненулевым
значением.
Смотрите
также
встроенную
команду exit
ниже.
СИГНАЛЫ
Когда bash
является
интерактивной,
в
отсутствие
каких-либо
ловушек,
тогда она
игнорирует
SIGTERM (чтобы
команда kill 0
не
уничтожала
интерактивную
оболочку) и
перехватывает
и
обрабатывает
SIGINT (чтобы
встроенная
команда wait
могла быть
прервана).
Когда bash
получает
SIGINT, тогда
она
выходит из
любых
выполняющихся
циклов. Во
всех
случаях bash
игнорирует
SIGQUIT. Если
управление
заданиями
запущено,
то bash
игнорирует
сигналы
SIGTTIN, SIGTTOU и
SIGTSTP.
Встроенная
команда trap
изменяет
обработку
сигналов
оболочки,
как
описано
ниже.
Для
команд, не
являющихся
встроенными,
которые
выполняет
bash,
обработчики
сигналов
имеют
значения,
унаследованные
оболочкой
от
родительской
оболочки,
если
только trap
не
настроит
их на
игнорирование
и в этом
случае
дочерний
процесс
также
проигнорирует
их. Когда
управление
заданием
не
выполняется,
асинхронные
команды
игнорируют
SIGINT и SIGQUIT в
дополнение
к этим,
унаследованным
обработчикам.
Команды,
выполняемые
в
результате
подстановки
команд,
игнорируют
генерируемые
клавиатурой
сигналы
управления
заданием
SIGTTIN, SIGTTOU и
SIGTSTP.
По
умолчанию
оболочка
завершает
работу
после
получения
команды
SIGHUP. Перед
выходом
интерактивная
оболочка
повторно
отправляет
команду
SIGHUP всем
заданиям,
запущенным
или
остановленным.
Оболочка
отправляет
SIGCONT
остановленным
заданиям,
чтобы
гарантировать,
что они
получат
SIGHUP
(смотрите
раздел
УПРАВЛЕНИЕ
ЗАДАНИЯМИ
ниже для
получения
дополнительной
информации
о
запущенных
и
остановленных
заданиях).
Чтобы
оболочка
не
отправляла
сигнал
конкретному
заданию,
удалите
его из
таблицы
заданий с
помощью
встроенной
команды disown
(смотрите
ниже
раздел
ВСТРОЕННЫЕ
КОМАНДЫ
ОБОЛОЧКИ)
или
отметьте
его так,
чтобы он не
получал
SIGHUP с
помощью disown
-h.
Если
опция
оболочки
huponexit была
установлена
с помощью
команды shopt,
то bash
отправляет
сообщение
SIGHUP всем
заданиям
при
завершении
входа
интерактивной
оболочки.
Если bash
ожидает
завершения
команды и
получает
сигнал, для
которого
был
установлена
ловушка, то
она не
будет
выполнять
ловушку до
тех пор,
пока
команда не
завершится.
Если bash
ожидает
асинхронной
команды с
помощью
встроенной
команды wait
и получает
сигнал, для
которого
была
установлена
ловушка, то
встроенная
команда wait
немедленно
вернется
со
статусом
завершения,
превышающим
128, сразу
после чего
оболочка
выполнит
ловушку.
Когда
управление
заданиями
не
включено и
bash ожидает
завершения
команды
переднего
плана,
тогда
оболочка
получает
сигналы,
генерируемые
клавиатурой,
такие как
SIGINT (обычно
генерируемые
^C), которые
пользователи
обычно
намереваются
отправить
этой
команде.
Это
происходит
потому, что
оболочка и
команда
находятся
в той же
группе
процессов,
что и
терминал и
^C
отправляет
SIGINT всем
процессам
в этой
группе
процессов.
Поскольку
bash по
умолчанию
не
включает
управление
заданиями,
когда
оболочка
не
является
интерактивной,
то этот
сценарий
наиболее
распространен
в
неинтерактивных
оболочках.
Когда
управление
заданиями
включено и
bash ожидает
завершения
команды
переднего
плана, то
оболочка
не
получает
сигналы,
генерируемые
клавиатурой,
поскольку
она не
находится
в той же
группе
процессов,
что и
терминал.
Этот
сценарий
наиболее
распространен
в
интерактивных
оболочках,
где bash
пытается
включить
управление
заданиями
по
умолчанию.
Смотрите
раздел
УПРАВЛЕНИЕ
ЗАДАНИЯМИ
ниже для
получения
дополнительной
информации
о группах
процессов.
Когда
управление
заданиями
не
включено и
bash получает
сигнал SIGINT
во время
ожидания
команды
переднего
плана, то
она
ожидает
завершения
выполнения
этой
команды
переднего
плана, а
затем
решает, что
делать с
сигналом
SIGINT:
- 1.
- Если
команда
завершается
из-за
сигнала
SIGINT, то bash
делает
вывод, что
пользователь
намеревался
также
отправить
SIGINT в
оболочку и
выполняет
действия с
SIGINT
(например,
запустив
ловушку
SIGINT, выйдя
из
неинтерактивной
оболочки
или
вернувшись
на
верхний
уровень
для чтения
новой
команды).
- 2.
- Если
команда не
завершается
по сигналу
SIGINT, то
программа
сама
обрабатывает
сигнал SIGINT
и не
рассматривает
этот
сигнал
как
фатальный.
В этом
случае bash
также не
рассматривает
сигнал SIGINT
как
фатальный,
а вместо
этого
предполагает,
что
сигнал
SIGINT
использовался
как часть
нормальной
работы
программы
(например,
редактор emacs
использует
его для
отмены
команд
редактирования)
или
отвергнутый
намеренно.
Однако, bash,
для
обеспечения
совместимости,
запустит
любой
перехватчик,
установленный
для
сигнала
SIGINT, как
это
осуществляется
применительно
к любому
другому
перехватываемому
сигналу,
который
она
получает,
ожидая
завершения
команды
интерактивного
режима.
Когда
включено
управление
заданиями,
тогда bash не
получает
сигналы,
генерируемые
клавиатурой,
такие как
SIGINT, пока
она
ожидает
команды
переднего
плана.
Интерактивная
оболочка
не
обращает
внимания
на сигнал
SIGINT, даже
если в
результате
команда
переднего
плана
завершается,
за
исключением
указания
её статуса
завершения.
Если
оболочка
не
является
интерактивной,
а команда
переднего
плана
завершается
из-за
сигнала
SIGINT, то bash
делает вид,
что она
сама
получила
SIGINT
(сценарий 1
выше), для
обеспечения
совместимости.
УПРАВЛЕНИЕ
ЗАДАНИЯМИ
Управление
заданиями
Job control
означает
возможность
выборочно
останавливать
(приостанавливать,
suspend)
выполнение
процессов
и
продолжать
(resume) их
выполнение
позже.
Пользователь
обычно
использует
это
средство с
помощью
интерактивного
интерфейса,
предоставляемого,
совместно,
драйвером
терминала
ядра
операционной
системы и
bash.
Оболочка
связывает
задание job с
каждым
конвейером.
В ней
хранится
таблица
выполняемых
в данный
момент
заданий,
которую
будет
отображать
команда jobs.
Каждое
задание
имеет
номер
задания job number,
который в
заданиях jobs
отображается
в
квадратных
скобках.
Номера
заданий
начинаются
с 1. Когда bash
запускает
задание
асинхронно
(в background), она
выводит
строку,
которая
выглядит
следующим
образом:
это
указывает,
что данное
задание
имеет
номер
задания 1 и
что
идентификатор
последнего
процесса в
конвейере,
связанного
с этим
заданием,
равен 25647. Все
процессы в
одном
конвейере
являются
участниками
одного
задания. Bash
использует
абстракцию
job в
качестве
основы для
управления
заданиями.
Чтобы
упростить
реализацию
пользовательского
интерфейса
для
управления
заданиями,
у каждого
процесса
есть
идентификатор
группы
процессов
process group ID и
операционная
система
поддерживает
понятие
текущего
идентификатора
группы
терминальных
процессов
current terminal process group ID. Этот
идентификатор
группы
терминальных
процессов
связан с
управляющим
терминалом
controlling terminal.
Процессы,
имеющие
одинаковый
идентификатор
группы
процессов,
считаются
частью
одной и той
же группы
процессов
process group. Члены
группы
процессов
переднего
плана foreground
(процессы,
идентификатор
группы
процессов
которых
равен
текущему
идентификатору
группы
процессов
терминала)
получают
сигналы,
генерируемые
клавиатурой,
такие как
SIGINT.
Процессы в
группе
процессов
переднего
плана
называются
процессами
переднего
плана foreground .
Процессами
фонового
Backgroundуровня
являются
процессы,
идентификатор
группы
процессов
которых
отличается
от
идентификатора
управляющего
терминала;
такие
процессы
невосприимчивы
к сигналам,
генерируемым
клавиатурой.
Только
процессам
переднего
плана
разрешено
считывать
данные
из/или, если
пользователь
укажет это
с помощью
“stty tostop”,
записи на
управляющий
терминал.
Система
отправляет
сигнал SIGTTIN
(SIGTTOU) фоновым
процессам,
которые
пытаются
выполнить
чтение или
запись
“tostop” с
терминала,
который,
если его не
перехватят,
приостанавливает
процесс.
Если
операционная
система, в
которой
запущена
bash,
поддерживает
управление
заданиями,
то bash
содержит
средства
для его
использования.
Ввод
символа
приостановить
suspend (обычно ^Z,
Control-Z) во время
выполнения
процесса
останавливает
этот
процесс и
возвращает
управление
bash. Ввод
символа
отложенная
приостановка
delayed suspend (обычно
^Y, Control-Y)
приводит к
остановке
процесса
при
попытке
считывания
входных
данных с
терминала
и
возвращает
управление
bash. Затем
пользователь
управляет
состоянием
этого
задания,
используя
команду bg,
чтобы
продолжить
его в
фоновом
режиме,
команду fg,
чтобы
продолжить
его на
переднем
плане, или
команду kill,
чтобы
завершить
его. Символ
приостановки
вступает в
силу
немедленно
и имеет
дополнительный
побочный
эффект,
заключающийся
в
отбрасывании
всех
ожидающих
вывода
данных и
изображений
текста.
Чтобы
принудительно
остановить
фоновый
процесс
или
остановить
процесс, не
связанный
с текущей
сессией
терминала,
отправьте
ему сигнал
SIGSTOP с
помощью
команды
kill.
Существует
несколько
способов
указать
задание
оболочке.
Символ %
указывает
на
спецификацию
задания (jobspec).
Номер
задания n
может быть
обозначено
как %n. Для
обозначения
задания
также
может
использоваться
префикс
названия,
используемого
для его
запуска,
или
подстрока,
которая
отображается
в его
командной
строке.
Например, %ce
относится
к заданию,
название
команды
которого
начинается
с ce. С
другой
стороны,
использование
%?ce
относится
к любому
заданию,
содержащему
строку ce в
командной
строке.
Если
префикс
или
подстрока
совпадают
с
несколькими
заданиями,
то bash
сообщает
об ошибке.
Символы %%
и %+
указывают
на то, как
оболочка
определяет
текущее
задание current job.
Один
символ % (без
дополнительных
других
символов)
относится
к текущему
заданию.
Символы %-
относится
к
предыдущему
заданию previous
job. Когда
задание
запускается
в фоновом
режиме, оно
останавливается,
находясь
на
переднем
плане, или
возобновляется
в фоновом
режиме, то
оно
становится
текущим
заданием.
Задание,
которое
было
текущим,
становится
предыдущим
заданием.
Когда
текущее
задание
завершается,
то текущим
заданием
становится
предыдущее
задание.
Если
существует
только
одно
задание,
для
обозначения
этого
задания
можно
использовать
как %+, так и
%-. В
выходных
данных,
относящихся
к заданиям
(например, в
выходных
данных
команды jobs),
текущее
задание
всегда
помечается
символом +,
а
предыдущее
задание -
символом
-.
Простое
присвоение
названия
заданию
может быть
использовано
для того,
чтобы
вывести
его на
передний
план: %1 - это
синоним “fg
%1”,
перемещения
задание 1 с
заднего
плана на
передний.
Аналогично,
“%1 &”
возобновляет
работу
задания 1 в
фоновом
режиме, что
эквивалентно
“bg %1”.
Оболочка
немедленно
узнает об
этом
всякий раз,
когда
задание
меняет
свое
состояние.
Обычно bash
ожидает,
пока не
появится
запрос на
вывод,
прежде чем
уведомлять
пользователя
об
изменениях
в статусе
задания,
чтобы не
прерывать
другие
выходные
данные,
хотя
оболочка
будет
уведомлять
об
изменениях
в статусе
задания
после
завершения
команды
переднего
плана в
списке,
перед
выполнением
следующей
команды в
списке.
Если опция
-b для
встроенной
команды set
включена,
то bash
немедленно
сообщает
об
изменениях
статуса
задания. Bash
выполняет
любую
проверку
на SIGCHLD для
каждого
дочернего
элемента,
который
завершается.
Когда
задание
завершается
и bash
уведомляет
пользователя
об этом, то
bash удаляет
задание из
таблицы.
Оно не
появится в
выходных
данных
задания jobs,
но в
ожидании wait
оболочка
сообщит о
своем
статусе
завершения,
если в
качестве
аргумента
будет
указан
идентификатор
процесса,
связанный
с заданием.
Когда
таблица
пуста,
номера
заданий
начинаются
с 1.
Если
пользователь
попытается
выйти из bash
во время
остановки
заданий
(или, если
опция
оболочки
checkjobs была
включена с
помощью
встроенной
выполняющейся
команды shopt,
то
оболочка
выведет
предупреждающее
сообщение
и, если
опция checkjobs
включена,
то выведет
список
заданий и
их статусы.
Затем
можно
использовать
команду jobs
для
проверки
их статуса.
Если
пользователь
немедленно
снова
попытается
выйти, без
промежуточной
команды, то
bash не
выводит
другое
предупреждение
и
завершает
все
остановленные
задания.
Когда
оболочка
ожидает
задание
или
процесс,
используя
встроенную
команду wait
и
управление
заданием
включено,
то команда
wait
возвращается
при
изменении
состояния
задания.
Опция -f
заставляет
команду wait
ожидать
завершения
задания
или
процесса
перед
возвратом.
ПОДСКАЗКИ
При
выполнении
в
интерактивном
режиме bash
отображает
основное
приглашение
PS1, когда
она готова
прочитать
команду и
дополнительное
приглашение
PS2, когда
требуется
дополнительный
ввод для
завершения
команды.
Bash
проверяет
значение
переменной
массива
PROMPT_COMMAND
непосредственно
перед
выводом
каждого
основного
запроса.
Если
какие-либо
элементы в
PROMPT_COMMAND заданы
и не равны
нулю, то Bash
выполняет
каждое
значение в
таком
порядке,
как если бы
оно было
введено в
командной
строке. Bash
отображает
PS0 после
считывания
команды, но
перед ее
выполнением.
Оболочка
Bash
отображает
PS4, как
описано
выше,
перед
отслеживанием
каждой
команды,
когда
включена
опция -x.
Оболочка
Bash
позволяет
настраивать
строки PS0, PS1,
PS2 и PS4,
вставляя
несколько
специальных
символов,
экранированных
обратной
косой
чертой,
которые
декодируются
следующим
образом:
- \a
- Символ
звонка в
формате ASCII (07).
- \d
- Дата в “Weekday Month
Date” формате
(например,
“Tue May 26”).
- \D{format}
- Формат format
передается
как strftime(3), а
результат
вставляется
в строку
запроса;
пустое
значение
format
приводит к
представлению
времени,
зависящему
от локали.
Фигурные
скобки
обязательны.
- \e
- Экранирующий
символ ASCII (033).
- \h
- Название
хоста
вплоть до
первого
“.”.
- \H
- Названия
хоста.
- \j
- Количество
заданий,
которыми в
данный
момент
управляет
оболочка.
- \l
- Основное
название
терминального
устройства
оболочки
(например,
“ttys0”).
- \n
- Новая
строка.
- \r
- Возврат
каретки.
- \s
- Название
оболочки:
основное
название $0
(часть,
следующая
за
последней
косой
чертой).
- \t
- Текущее
время в
24-часовом
формате
ЧЧ:ММ:СС.
- \T
- Текущее
время в
12-часовом
формате
ЧЧ:ММ:СС.
- \@
- Текущее
время в
12-часовом
формате до
полудня/после
полудня.
- \A
- Текущее
время в
24-часовом
формате
ЧЧ:ММ.
- \u
- Имя
текущего
пользователя.
- \v
- Версия bash
(например,
2.00).
- \V
- Выпуск bash,
версия +
уровень
исправления
(например,
2.00.0)
- \w
- Значение
переменной
оболочки
PWD ($PWD), где
$HOME
обозначается
тильдой
(используется
значение
переменной
PROMPT_DIRTRIM).
- \W
- Основное
название
$PWD, а $HOME
сокращается
тильдой.
- \!
- Исторический
номер этой
команды.
- \#
- Номер этой
команды.
- \$
- Если
эффективный
идентификатор
пользователя
UID равен 0, то A
#, в
противном
случае $.
- \nnn
- Символ,
соответствующий
восьмеричному
числу nnn.
- \\
- Обратная
косая
черта.
- \[
- Начало
последовательности
непечатаемых
символов,
которая
может быть
использована
для
встраивания
последовательности
управления
терминалом
в
приглашение.
- \]
- Окончание
последовательности
непечатаемых
символов.
Номер
команды и
номер
истории
команды
обычно
различаются:
номер
истории
команды -
это ее
позиция в
списке
истории,
который
может
включать
команды,
восстановленные
из файла
истории
(смотрите
раздел
ИСТОРИЯ
ниже), в то
время как
номер
команды -
это
позиция в
последовательности
команд
выполняемых
во время
текущего
сеанса
оболочки.
После того,
как строка
расшифрована,
она
расширяется
с помощью
расширения
параметров,
подстановки
команд,
арифметического
расширения
и удаления
кавычек, в
зависимости
от
значения
опции
оболочки
promptvars
(смотрите
описание
команды shopt
в разделе
ВСТРОЕННЫЕ
КОМАНДЫ
ОБОЛОЧКИ
ниже).. Это
может
иметь
нежелательные
побочные
эффекты,
если
экранированные
части
строки
представляются
внутри
командной
строки или
содержат
символы,
специальные
для
расширения
слова.
БИБЛИОТЕКА
READLINE
Это
библиотека,
которая
обрабатывает
вводимые
данные при
использовании
интерактивной
оболочки,
если
только при
вызове
оболочки
не указана
опция --noediting.
Редактирование
строк
также
используется
при
использовании
опции -e для
встроенной
команды read.
По
умолчанию
команды
редактирования
строк
аналогичны
командам emacs;
также
доступен
интерфейс
редактирования
строк в
стиле vi.
Редактирование
строк
можно
включить в
любое
время,
используя
опции -o emacs
или -o vi для
встроенной
команды set
(смотрите
раздел
ВСТРОЕННЫЕ
КОМАНДЫ
ОБОЛОЧКИ
ниже).
Чтобы
отключить
редактирование
строк
после
запуска
оболочки,
используйте
опции +o emacs
или +o vi для
встроенной
команды set.
Формат
библиотеки
Readline
В этом
подразделе
используются
концепции
редактирования
в стиле
редактора
Emacs и его
обозначения
для
нажатия
клавиш.
Управляющие
клавиши
обозначаются
C-key,
например, C-n
означает Control-N.
Аналогично,
клавиша meta
обозначаются
M-key, поэтому M-x
означает
Мета-X.
Мета-клавиша
часто
обозначается
“Alt” или “Option”.
На
клавиатурах
без
клавиши Meta
M-x означает
ESC x, т.е.
нажать и
отпустить
клавишу Escape,
затем
последовательно
нажать и
отпустить
клавишу x.
Таким
образом, ESC
становится
префиксом
meta prefix.
Комбинация
M-C-x
означает ESC
Control-x: нажать и
отпустить
клавишу Escape,
затем
нажать и
удерживать
клавишу Control,
одновременно
нажимая
клавишу x,
затем
отпустить
обе
клавиши.
На
некоторых
клавиатурах
модификатор
мета-клавиши
выдает
символы с
установленным
восьмым
разрядом (0200).
Вы можете
использовать
переменную
enable-meta-key, чтобы
контролировать,
будет ли
это
выполняться,
если
клавиатура
это
позволяет.
На многих
других
устройствах
терминал
или
эмулятор
терминала
преобразует
мета-клавишу
в
последовательность
клавиш,
начинающуюся
с ESC, как
описано в
предыдущем
параграфе.
Если ваша
клавиша Meta
создает
последовательность
клавиш с
мета-префиксом
ESC, то вы
можете
настроить
привязки
клавиш M-key,
которые вы
указываете
(смотрите
подраздел
Привязки
клавиш
библиотеки
Readline ниже),
аналогично,
установив
переменную
force-meta-prefix.
Командам
библиотеки
Readline могут
присваиваться
числовые
значения
аргументов
arguments, которые
обычно
используются
для
подсчета
повторений.
Однако
иногда
значение
имеет знак
аргумента.
Передача
отрицательного
аргумента
команде,
которая
действует
в прямом
направлении
(например,
kill-line)
заставляет
эту
команду
действовать
в обратном
направлении.
Ниже
приведены
команды,
поведение
которых с
аргументами
отличается
от этого.
Точка point -
это
текущее
положение
курсора, а
метка mark
относится
к
сохраненному
положению
курсора.
Текст
между
точкой и
меткой
называется
область region.
В
библиотеке
Readline есть
концепция
активной
области active
region: когда
область
активна,
тогда readline
повторно
отображает
область,
используя
значение
переменной
active-region-start-color.
Переменная
enable-active-region это
включает и
выключает.
Несколько
команд
делают
область
активной;
они
приведены
ниже.
Когда
команда
описывается
как
удаляющая
текст killing, то
удаленный
текст
сохраняется
для
возможного
использования
в будущем
(при
"выдергивании"
yanking).
Уничтоженный
(удалённый)
текст
сохраняется
в кольце
удаления kill
ring. При
последовательном
удалении
удаленный
текст
объединяется
в один блок,
который
можно
удалить за
один раз.
Команды,
которые не
удаляют
текст,
разделяют
фрагменты
текста в
кольце
удаления.
Инициализация
библиотеки
Readline
Библиотека
Readline
настраивается
путем
ввода
команд в
файл
инициализации
(файл inputrc).
Название
этого
файла
берется из
значения
переменной
оболочки
INPUTRC. Если
эта
переменная
не задана,
то по
умолчанию
используется
~/.inputrc. Если
этот файл
не
существует
или не
может быть
прочитан,
то readline
выполняет
поиск /etc/inputrc.
Когда
запускается
программа,
использующая
библиотеку
readline, тогда readline
считывает
файл
инициализации
и
устанавливает
найденные
в нем
привязки
клавиш и
переменные,
прежде чем
считывать
любой
пользовательский
ввод.
В файле inputrc
разрешено
использовать
только
несколько
основных
конструкций.
Пустые
строки
игнорируются.
Строки,
начинающиеся
с #,
являются
комментариями.
Строки,
начинающиеся
с $,
обозначают
условные
конструкции.
Остальные
строки
обозначают
привязки
клавиш и
настройки
переменных.
Привязки
клавиш по
умолчанию
в этом
разделе
могут быть
изменены с
помощью
команд
привязки
клавиш в
файле inputrc.
Программы,
использующие
библиотеку
readline, включая
bash, могут
добавлять
свои
собственные
команды и
привязки.
Например,
размещение
M-Control-u:
универсальный
аргумент
или
C-Meta-u:
универсальный
аргумент
ввод в inputrc
заставил
бы M-C-u
выполнить
команду readline
универсальный
аргумент
universal-argument.
Привязки
клавиш
могут
содержать
следующие
символические
названия:
DEL, ESC, ESCAPE, LFD, NEWLINE,
RET, RETURN, RUBOUT
(деструктивный
обратный
пробел), SPACE, SPC
и TAB.
В
дополнение
к
названиям
команд, readline
позволяет
привязывать
клавиши к
строке,
которая
вставляется
при
нажатии
клавиши (macro).
Различие
между
макросом и
командой
заключается
в том, что
макрос
заключен в
одинарные
или
двойные
кавычки.
Привязки
клавиш
библиотеки
Readline
Синтаксис
для
управления
привязками
клавиш в
файле inputrc
прост. Все,
что
требуется, -
это
название
команды
или текст
макроса и
последовательность
клавиш, к
которой он
должен
быть
привязан.
Последовательность
клавиш
может быть
указана
одним из
двух
способов: 1)
в виде
символического
названия
клавиши,
возможно, с
префиксами
Meta- или Control- 2)
или в виде
последовательности
клавиш,
состоящей
из одного
или
нескольких
символов,
заключенных
в двойные
кавычки.
Последовательность
клавиш и
название
разделяются
двоеточием.
Между
названием
и
двоеточием
не должно
быть
пробелов.
При
использовании
формы keyname:function-name
или macro, keyname -
это
название
клавиши на
английском
языке.
Например:
Control-u: universal-argument
Meta-Rubout: backward-kill-word
Control-o: "> output"
В
приведенном
выше
примере C-u
привязана
к функции
universal-argument, M-DEL
привязана
к функции
backward-kill-word, а C-o
привязана
к запуску
макроса,
выраженного
с правой
стороны (то
есть для
вставки
текста “> output”
в строку).
Во второй
форме,
"keyseq":function-name или
macro, keyseq
отличается
от
приведенной
выше keyname тем,
что строки,
обозначающие
всю
последовательность
клавиш,
могут быть
указаны
путем
заключения
последовательности
в двойные
кавычки.
Можно
использовать
некоторые
экранирующие
клавиши в
стиле GNU Emacs, как
в
следующем
примере, но
ни одно из
символических
названий
не
распознается.
"\C-u": universal-argument
"\C-x\C-r": re-read-init-file
"\e[11~": "Function Key 1"
В этом
примере
клавиша C-u
снова
привязана
к функции
universal-argument.
Клавиша C-x C-r
привязана
к функции
re-read-init-file, а ESC [ 1 1 ~
привязана
к вставке
текста “Function Key
1”.
Полный
набор
escape-последовательностей
в стиле GNU Emacs,
доступных
при
указании
клавишных
последовательностей,
представлен
следующим
образом
- \C-
- Управляющий
префикс.
- \M-
- Добавление
мета-префикса
или
преобразование
следующего
символа в
мета-символ,
как
описано
ниже в
подразделе
Принудительный
мета-префикс.
- \e
- Экранирующий
символ.
- \\
- Обратная
косая
черта.
- \"
- Буква ",
двойная
кавычка.
- \'
- Буква ',
одиночная
кавычка.
В
дополнение
к
экранирующим
последовательностям
в стиле GNU Emacs
доступен
второй
набор
экранирующих
символов с
обратной
косой
чертой:
- \a
- сигнал
тревоги
(сирена)
- \b
- возврат на
один
символ
- \d
- delete
- \f
- новая
страница
- \n
- newline
- \r
- возврат
каретки
- \t
- горизонтальная
табуляция
- \v
- вертикальная
табуляция
- \nnn
- Восьмиразрядный
символ,
значением
которого
является
восьмеричное
значение
nnn (от одной
до трех
цифр).
- \xHH
- Восьмибитный
символ,
значением
которого
является
шестнадцатеричное
значение HH
(одна или
две
шестнадцатеричные
цифры).
При вводе
текста
макроса
необходимо
использовать
одинарные
или
двойные
кавычки
для
указания
определения
макроса.
Предполагается,
что текст
без
кавычек
является
названием
функции.
Описанные
выше
экранирующие
обратные
косые
черты
раскрываются
в теле
макроса.
Обратная
косая
черта
заключает
в кавычки
любой
другой
символ в
тексте
макроса,
включая " и
'.
Bash
отобразит
или
изменит
текущие
привязки
клавиш readline с
помощью
встроенной
команды bind.
Опции -o emacs
или -o vi для
встроенной
команды set
(смотрите
ниже
раздел
ВСТРОЕННЫЕ
КОМАНДЫ
ОБОЛОЧКИ)
изменяют
режим
редактирования
во время
интерактивного
использования.
Переменные
Readline
В Readline есть
переменные,
которые
можно
использовать
для
дальнейшей
настройки
её
поведения.
Переменная
может быть
задана в
файле inputrc с
помощью
инструкции
вида
или с
помощью
встроенной
команды bind
(смотрите
раздел
ВСТРОЕННЫЕ
КОМАНДЫ
ОБОЛОЧКИ
ниже).
За
исключением
случаев,
когда это
указано,
переменные
readline могут
принимать
значения
"Включено"
On или
"Выключено"
Off (без
учета
регистра).
Нераспознанные
названия
переменных
игнорируются.
Когда readline
считывает
значение
переменной,
пустые или
нулевые
значения,
“on” (без
учета
регистра) и
“1”
эквивалентны
On. Все
остальные
значения
эквивалентны
Off.
Команда bind
-V выводит
список
текущих
названий и
значений
переменных
readline
(смотрите
раздел
ВСТРОЕННЫЕ
КОМАНДЫ
ОБОЛОЧКИ
ниже).
Переменными
и их
значениями
по
умолчанию
являются:
- active-region-start-color
- Строковая
переменная,
которая
управляет
цветом
текста и
фоном при
отображении
текста в
активной
области
(смотрите
описание
функции
enable-active-region ниже).
Эта строка
не должна
занимать
никаких
физических
позиций
символов
на дисплее,
поэтому
она должна
состоять
только из
терминальных
escape-последовательностей.
Она
выводится
на
терминал
перед
отображением
текста в
активной
области.
Значение
этой
переменной
возвращается
к значению
по
умолчанию
при каждом
изменении
типа
терминала.
Значение
по
умолчанию -
это строка,
которая
переводит
терминал в
режим
ожидания,
как
указано в
описании
терминала
terminfo.
Примерное
значение
может быть
следующим
“\e[01;33m”.
- active-region-end-color
- Строковая
переменная,
которая
“undoes”
эффекты
"активная
область-начальный
цвет" active-region-start-color
и
восстанавливает
“normal”
отображение
на дисплее
терминала
после
отображения
текста в
активной
области.
Эта строка
не должна
занимать
никаких
физических
позиций
символов
на дисплее,
поэтому
она должна
состоять
только из
управляющих
последовательностей
терминала.
Она
выводится
на
терминал
после
отображения
текста в
активной
области.
Эта
переменная
возвращается
к значению
по
умолчанию
при каждом
изменении
типа
терминала.
Значением
по
умолчанию
является
строка,
которая
выводит
терминал
из режима
ожидания,
как
указано в
описании
терминала
terminfo.
Примерным
значением
может быть
“\e[0m”.
- bell-style
(audible)
- Управляет
тем, что
происходит,
когда readline
хочет
вызвать
звонок
терминала.
Если
задано
значение
none, то readline
никогда не
вызовет
звонок.
Если
задано
значение
visible, то readline
использует
видимый
звонок,
если он
доступен.
Если
установлено
значение
audible, то readline
попытается
вызвать
звуковой
звонок
терминала.
- bind-tty-special-chars
(On)
- Если
задано
значение
On, то readline
пытается
привязать
управляющие
символы,
которые
специально
обрабатываются
драйвером
терминала
ядра, к их
эквивалентам
readline. Они
переопределяют
описанные
здесь
привязки
readline по
умолчанию.
Тип “stty -a” в
приглашении
bash, чтобы
просмотреть
текущие
настройки
вашего
терминала,
включая
специальные
управляющие
символы
(обычно cchars).
- blink-matching-paren
(Off)
- Если
установлено
значение
On, то readline
пытается
на
короткое
время
переместить
курсор на
открывающую
скобку при
вставке
закрывающей
скобки.
- colored-completion-prefix
(Off)
- Если
задано
значение
On, то при
выводе
списка
завершений
readline
отображает
общий
префикс
набора
возможных
завершений,
используя
другой
цвет.
Определения
цвета
взяты из
значения
переменной
окружения
LS_COLORS. Если
имеется
определение
цвета $LS_COLORS
для
обычного
суффикса
“.readline-colored-completion-prefix”, readline
использует
этот цвет
для общего
префикса
вместо его
значения
по
умолчанию.
- colored-stats
(Off)
- Если
задано
значение
On, то readline
отображает
возможные
завершения,
используя
разные
цвета,
чтобы
указать
тип файла.
Определения
цвета
берутся из
значения
переменной
среды
окружения
LS_COLORS.
- “#”)
Строка,
которую
вставляет
команда readline
insert-comment. Эта
команда
привязана
к M-# в
режиме emacs и к
# в режиме
vi.
- completion-display-width
(-1)
- Количество
столбцов
экрана,
используемых
для
отображения
возможных
совпадений
при
выполнении
завершения.
Значение
игнорируется,
если оно
меньше 0
или больше
ширины
экрана
терминала.
При
значении 0
совпадения
отображаются
по одному в
строке.
Значение
по
умолчанию
равно -1.
- completion-ignore-case
(Off)
- Если
задано
значение
On, то readline
выполняет
сопоставление
названий
файлов и
завершение
без учета
регистра.
- completion-map-case
(Off)
- Если
задано
значение On
и включено
значение
"Завершение-игнорирования
регистра",
то readline
обрабатывает
дефисы (-) и
подчеркивания
(_) как
эквивалентные
при
сопоставлении
названий
файлов и
завершений
без учета
регистра.
- completion-prefix-display-length
(0)
- Максимальная
длина в
символах
общего
префикса в
списке
возможных
дополнений,
который
отображается
без
изменений.
Если
задано
значение,
большее
нуля, то readline
заменяет
общие
префиксы,
длина
которых
превышает
это
значение,
многоточием
при
отображении
возможных
дополнений.
Если
завершение
начинается
с точки, а
начальная
строка readline
завершает
названия
файлов, то
вместо
многоточия
используются
три
символа
подчеркивания.
- completion-query-items
(100)
- Это
определяет,
когда
пользователя
запрашивают
о
просмотре
количества
возможных
завершений,
сгенерированных
командой
возможные
завершения
possible-completions. Может
быть
установлено
любое
целое
значение,
большее
или равное
нулю. Если
количество
возможных
завершений
больше или
равно
значению
этой
переменной,
то readline
запрашивает,
желает ли
пользователь
просмотреть
их; в
противном
случае readline
просто
выводит их
список в
терминале.
Нулевое
значение
означает,
что readline
никогда не
должна
задавать
запрос;
отрицательные
значения
рассматриваются
как
нулевые.
- convert-meta
(On)
- Если
задано
значение
On, то readline
преобразует
считываемые
символы,
для
которых
установлен
восьмой
бит, в
последовательность
клавиш ASCII,
очищая
восьмой
бит и
добавляя к
нему
escape-символ
(преобразуя
символ в
мета-префикс).
Значение
по
умолчанию -
On, но readline
устанавливает
значение
Off, если
локаль
содержит
символы,
кодировки
которых
могут
включать
байты с
установленным
восьмым
разрядом.
Эта
переменная
зависит от
категории
локали LC_CTYPE и
может
изменяться
при
изменении
локали. Эта
переменная
также
влияет на
привязку
клавиш;
смотрите
описание
Принудительный
мета-префикс
ниже.
- disable-completion
(Off)
- Если
задано
значение
On, то readline
запрещает
завершение
слова.
Символы
завершения
вставляются
в строку
так, как
если бы они
были
сопоставлены
с self-insert.
- echo-control-characters
(On)
- Если
установлено
значение
On, в
операционных
системах,
которые
указывают,
что они его
поддерживают,
то readline
отображает
символ,
соответствующий
сигналу,
генерируемому
с
клавиатуры.
- editing-mode
(emacs)
- Определяет,
будет ли readline
использовать
набор
привязок
клавиш,
аналогичный
Emacs или vi.
Режим
редактирования
editing-mode может
быть
установлен
либо в emacs,
либо в vi.
- emacs-mode-string
(@)
- Если
включена
переменная
show-mode-in-prompt, то эта
строка
отображается
непосредственно
перед
последней
строкой
основного
приглашения,
когда
включен
режим
редактирования
emacs. Значение
раскрывается
как
привязка к
клавише,
поэтому
доступен
стандартный
набор мета-
и
управляющих
префиксов,
а также
escape-последовательностей
с обратной
косой
чертой.
Символы \1 и \2
являются
начальными
и
конечными
последовательностями
непечатаемых
символов,
которые
могут быть
использованы
для
встраивания
последовательности
управления
терминалом
в строку
режима.
- enable-active-region
(On)
- Когда для
этой
переменной
задано
значение
On, тогда readline
позволяет
определенным
командам
обозначать
область
как active.
Когда
область
активна,
тогда readline
выделяет
текст в
области,
используя
значение
переменной
active-region-start-color,
значение
которой по
умолчанию
равно
строке,
включающей
режим
выделения
терминала.
В активной
области
отображается
текст,
вставленный
с помощью
вставки в
квадратных
скобках и
любой
соответствующий
текст,
найденный
с помощью
инкрементального
и не
инкрементального
поиска по
истории.
- enable-bracketed-paste
(On)
- Если
установлено
значение
On, то readline
настраивает
терминал
на вставку
каждой
вставки в
буфер
редактирования
в виде
отдельной
строки
символов,
вместо
того чтобы
обрабатывать
каждый
символ так,
как если бы
он был
прочитан с
клавиатуры.
Это
называется
"режим
вставки в
квадратных
скобках"
bracketed-paste mode; он
предотвращает
выполнение
readline любых
команд
редактирования,
связанных
с
последовательностями
клавиш,
появляющимися
во
вставленном
тексте.
- enable-keypad
(Off)
- Если
установлено
значение
On, то readline
пытается
включить
клавиатуру
приложения
при его
вызове. В
некоторых
системах
это
необходимо
для
включения
клавиш со
стрелками.
- enable-meta-key
(On)
- Если
установлено
значение
On, то readline
пытается
включить
любую
клавишу
мета-модификатор,
которая,
как
утверждается,
поддерживается
терминалом.
На многих
терминалах
мета-клавиша
используется
для
отправки
восьмибитных
символов;
эта
переменная
проверяет
возможности
терминала,
что
указывает
на то, что
терминал
может
включать и
отключать
режим,
который
устанавливает
восьмой
бит
символа (0200),
если
мета-клавиша
удерживается
нажатой
при вводе
символа
(метасимвол).
- expand-tilde
(Off)
- Если
задано
значение
On, то readline
выполняет
расширение
тильды при
попытке
завершения
слова.
- force-meta-prefix
(Off)
- Если
установлено
значение
On, то readline
изменяет
свое
поведение
при
привязке
клавишных
последовательностей,
содержащих
\M- или Meta-
(смотрите
подраздел
Привязки
клавиш
выше),
преобразуя
клавишную
последовательность
вида \M-C или
Meta-C в две
последовательность
символов
ESC C
(добавление
префикса meta).
Если для
force-meta-prefix задано
значение
Off (по
умолчанию),
то readline
использует
значение
переменной
convert-meta для
того, чтобы
определить,
следует ли
выполнять
это
преобразование:
если для
convert-meta задано
значение
On, то readline
выполняет
преобразование,
описанное
выше; если
это Off, то readline
преобразует
C в
метасимвол,
устанавливая
восьмой
бит (0200).
- history-preserve-point
(Off)
- Если
установлено
значение
On, то код
истории
пытается
поместить
точку в
одно и то
же место в
каждой
строке
истории,
полученной
с помощью
previous-history или next-history.
- history-size
(unset)
- Задаёт
максимальное
количество
записей
истории,
сохраняемых
в списке
истории.
Если
задано
нулевое
значение,
то все
существующие
записи
истории
удаляются,
а новые
записи не
сохраняются.
Если
задано
значение
меньше
нуля, то
количество
записей
истории не
ограничено.
По
умолчанию
bash
устанавливает
максимальное
количество
записей
истории в
значение
переменной
оболочки
HISTSIZE. Если
присвоить
history-size
нечисловое
значение,
то
максимальное
количество
записей
истории
будет
равно 500.
- horizontal-scroll-mode
(Off)
- Установка
для этой
переменной
значения On
заставляет
readline
использовать
для
отображения
одну
строку,
прокручивая
вводимые
данные по
горизонтали
на одной
строке
экрана,
когда их
длина
становится
больше
ширины
экрана не
переходя
на новую
строку. Эта
настройка
автоматически
включается
для
терминалов
высотой 1.
- input-meta
(Off)
- Если
установлено
значение
On, то readline
разрешает
восьмибитный
ввод (то
есть не
очищает
восьмой
бит в
считываемых
символах),
независимо
от того,
что, по
утверждению
терминала,
он может
поддерживать.
Значение
по
умолчанию -
Off, но readline
устанавливает
значение
On, если
локаль
содержит
символы,
кодировки
которых
могут
включать
байты с
установленным
восьмым
разрядом.
Эта
переменная
зависит от
категории
локали LC_CTYPE и
ее
значение
может
меняться
при
изменении
локали.
Название
meta-flag
является
синонимом
input-meta.
- isearch-terminators (
- “C-[C-j”)
Строка
символов,
которая
должна
завершать
инкрементальный
поиск без
последующего
выполнения
символа в
качестве
команды.
Если этой
переменной
не было
присвоено
значение,
то символы
ESC и C-j
завершают
инкрементальный
поиск.
- keymap
(emacs)
- Устанавливает
текущую
комбинацию
клавиш readline.
Допустимыми
названиями
комбинаций
клавиш
могут быть
emacs, emacs-standard, emacs-meta, emacs-ctlx, vi, vi-command
и vi-insert; emacs
эквивалентно
emacs-standard.
Значение
по
умолчанию -
emacs;
значение
"Режим
редактирования"
editing-modeтакже
влияет на
раскладку
клавиш по
умолчанию.
- keyseq-timeout
(500)
- Указывает
время, в
течение
которого
readline будет
ожидать
символ при
считывании
неоднозначной
последовательности
клавиш
(которая
может
сформировать
полную
последовательность
клавиш,
используя
уже
прочитанные
входные
данные или
может
потребовать
дополнительного
ввода для
завершения
более
длинной
последовательности
клавиш).
Если readline не
получает
никаких
входных
данных в
течение
тайм-аута,
то она
использует
более
короткую,
но полную
последовательность
клавиш.
Значение
указывается
в
миллисекундах,
поэтому
значение 1000
означает,
что readline
будет
ждать
дополнительного
ввода в
течение
одной
секунды.
Если для
этой
переменной
задано
значение,
меньшее
или равное
нулю или
нечисловое
значение,
то readline
ожидает
нажатия
другой
клавиши,
чтобы
решить,
какую
последовательность
клавиш
следует
выполнить.
- mark-directories
(On)
- Если
задано
значение
On, то к
окончанию
названий
каталогов
добавляется
косая
черта.
- mark-modified-lines
(Off)
- Если
установлено
значение
On, то readline
отображает
строки
журнала,
которые
были
изменены, с
предшествующей
звездочкой
(*).
- mark-symlinked-directories
(Off)
- Если
задано
значение
On, то к
завершенным
названиям,
которые
являются
символическими
ссылками
на
каталоги,
добавляется
косая
черта, в
зависимости
от
значения
mark-directories.
- match-hidden-files
(On)
- Эта
переменная,
если ей
присвоено
значение
On,
заставляет
readline
сопоставлять
файлы,
названия
которых
начинаются
с “.”
(скрытые
файлы) при
заполнении
названия
файла. Если
установлено
значение
Off, то
пользователь
должен
указать
начальную
“.” в
названии
файла,
которое
должно
быть
заполнено.
- Если
установлено
значение
On, то при
завершении
в меню
отображается
общий
префикс
списка
возможных
завершений
(который
может быть
пустым)
перед
циклическим
просмотром
списка.
- output-meta
(Off)
- Если
задано
значение
On, то readline
отображает
символы с
установленным
восьмым
разрядом
напрямую, а
не в виде
escape-последовательности
с
мета-префиксом.
Значение
по
умолчанию -
Off, но readline
устанавливает
значение
On, если
локаль
содержит
символы,
кодировки
которых
могут
включать
байты с
установленным
восьмым
разрядом.
Эта
переменная
зависит от
категории
локали LC_CTYPE и
ее
значение
может
измениться
при
изменении
локали.
- page-completions
(On)
- Если
установлено
значение
On, то readline
использует
внутренний
пейджер,
похожий на
more(1), для
одновременного
отображения
экрана,
полного
возможных
завершений.
- prefer-visible-bell
- Смотрите
bell-style.
- print-completions-horizontally
(Off)
- Если
установлено
значение
On, то readline
отображает
завершения
с
совпадениями,
отсортированными
по
горизонтали
в
алфавитном
порядке, а
не вниз по
экрану.
- revert-all-at-newline
(Off)
- Если
установлено
значение
On, то readline
отменит
все
изменения
в строках
истории,
прежде чем
вернуться
при
выполнении
accept-line. По
умолчанию
строки
истории
могут быть
изменены и
сохранены
в
отдельных
списках
отмены при
вызовах
readline.
- search-ignore-case
(Off)
- Если
установлено
значение
On, то readline
выполняет
инкрементный
и
неинкрементный
поиски по
списку
истории
без учета
регистра.
- show-all-if-ambiguous
(Off)
- Это
изменяет
поведение
функций
завершения
по
умолчанию.
Если
задано
значение
On, то слова,
которые
имеют
более
одного
возможного
завершения,
сразу же
отображаются
в списке
совпадений,
а не
выдается
звонок
колокольчика.
- show-all-if-unmodified
(Off)
- Это
изменяет
поведение
функций
завершения
по
умолчанию
аналогично
show-all-if-ambiguous. Если
задано
значение
On, то слова,
которые
имеют
более
одного
возможного
завершения
без
какого-либо
возможного
частичного
завершения
(возможные
завершения
не имеют
общего
префикса),
то они
сразу же
отображаются
в списке
совпадений,
а не
вызывают
звонок
колокольчика.
- show-mode-in-prompt
(Off)
- Если
задано
значение
On, то
добавляется
в начало
запроса
строка,
указывающая
режим
редактирования:
emacs, команда
или
вставка vi.
Строки
режима
могут быть
заданы
пользователем
(например,
emacs-mode-string).
- skip-completed-text
(Off)
- Если
задано
значение
On, то это
изменяет
поведение
завершения
по
умолчанию
при
вставке
одного
совпадения
в строку.
Оно
активно
только при
выполнении
завершения
в середине
слова. Если
включено,
то readline не
вставляет
символы
завершения,
которые
соответствуют
символам
после
точки в
завершаемом
слове,
поэтому
части
слова,
следующие
за
курсором,
не
дублируются.
- vi-cmd-mode-string
((cmd))
- Если
включена
переменная
show-mode-in-prompt, то эта
строка
отображается
непосредственно
перед
последней
строкой
основного
приглашения,
когда
включен
режим
редактирования
vi и в
командном
режиме.
Значение
раскрывается
как
привязка к
клавише,
поэтому
доступен
стандартный
набор мета-
и
управляющих
префиксов,
а также
escape-последовательностей
с обратной
косой
чертой.
Символы \1 и \2
являются
начальными
и
конечными
последовательностями
непечатаемых
символов,
которые
могут быть
использованы
для
встраивания
последовательности
управления
терминалом
в строку
режима.
- vi-ins-mode-string
((ins))
- Если
включена
переменная
show-mode-in-prompt, то эта
строка
отображается
непосредственно
перед
последней
строкой
основного
приглашения,
когда
включен
режим
редактирования
vi в режиме
вставки.
Значение
раскрывается
как
привязка к
клавише,
поэтому
доступен
стандартный
набор мета-
и
управляющих
префиксов,
а также
escape-последовательностей
с обратной
косой
чертой.
Символы \1 и \2
являются
начальными
и
конечными
последовательностями
непечатаемых
символов,
которые
могут быть
использованы
для
встраивания
последовательности
управления
терминалом
в строку
режима.
- visible-stats
(Off)
- Если
задано
значение
On, то при
выводе
возможных
дополнений
к названию
файла
добавляется
символ,
обозначающий
тип файла,
как
указано в
stat(2).
Конструкции
условий Readline
В
библиотеке
Readline
реализована
функция,
схожая по
смыслу с
функциями
условной
компиляции
препроцессора
Cи, которая
позволяет
выполнять
привязку
клавиш и
настройки
переменных
в
результате
тестов.
Доступны
четыре
директивы
синтаксического
анализа.
- $if
- Конструкция
$if
позволяет
создавать
привязки в
зависимости
от режима
редактирования,
используемого
терминала
или
приложения,
использующего
readline. Текст
теста
после
любого
оператора
сравнения
продолжается
до конца
строки;
если не
указано
иное, для
его
выделения
не
требуется
никаких
символов.
- mode
- Формат mode=
директивы
$if
используется
для
проверки
того,
находится
ли readline в
режиме emacs
или vi. Это
можно
использовать
в
сочетании
с командой
set keymap,
например,
для
установки
привязок в
раскладках
emacs-standard и emacs-ctlx,
только
если readline
запускается
в режиме emacs.
- term
- Формат term=
может
использоваться
для
включения
привязок
клавиш,
специфичных
для
терминала,
возможно,
для
привязки
последовательностей
клавиш,
выводимых
функциональными
клавишами
терминала.
Слово,
указанное
справа от
буквы =,
проверяется
как на
соответствие
полному
названию
терминала,
так и на
соответствие
части
названия
терминала
перед
первой
буквой -.
Это
позволяет,
например,
xterm
сопоставлять
как xterm, так и
xterm-256color.
- version
- Тест version
может
использоваться
для
сравнения
с
конкретными
версиями
readline. version
расширяется
до текущей
версии readline.
Набор
операторов
сравнения
включает в
себя =, (и ==),
!=, <=, >=, < и >.
Номер
версии,
указанный
справа от
оператора,
состоит из
основного
номера
версии,
необязательной
десятичной
точки и
необязательной
дополнительной
версии
(например,
7.1). Если
дополнительная
версия не
указана, то
по
умолчанию
используется
значение 0.
Оператор
может быть
отделен от
строки version и
от
аргумента
номера
версии
пробелом.
- application
- Конструкция
application
используется
для
включения
настроек,
относящихся
к
конкретному
приложению.
Каждая
программа,
использующая
библиотеку
readline,
устанавливает
application name и в
файле
инициализации
можно
проверять
наличие
определенного
значения.
Это может
быть
использовано
для
привязки
последовательности
клавиш к
функциям,
используемым
конкретной
программой.
Например,
следующая
команда
добавляет
последовательность
клавиш,
которая
заключает
текущее
или
предыдущее
слово в
кавычки в
bash:
$if Bash
# Процитировать текущее или предыдущее слово
"\C-xq": "\eb\"\ef\""
$endif
- variable
- Конструкция
variable
предоставляет
простые
тесты на
равенство
для
переменных
и значений
для
библиотеки
readline.
Допустимыми
операторами
сравнения
являются =,
== и !=.
Название
переменной
должно
быть
отделено
от
оператора
сравнения
пробелом;
оператор
может быть
отделен от
значения
справа
пробелом.
Могут быть
проверены
строковые
и
логические
переменные.
Логические
переменные
должны
быть
проверены
на
соответствие
значениям
"да" on и
"нет" off.
- $else
- Команды в
этой ветви
директивы
$if
выполняются
в случае
сбоя
теста.
- $endif
- Эта
команда,
как видно
из
предыдущего
примера,
завершает
выполнение
команды $if.
- $include
- Эта
директива
принимает
в качестве
аргумента
одно
название
файла и
считывает
команды и
привязки
клавиш из
этого
файла.
Например,
следующая
директива
будет
выглядеть
следующим
образом
/etc/inputrc:
Поиск
Библиотека
Readline
предоставляет
команды
для поиска
строк,
содержащих
указанную
строку, в
истории
команд
(смотрите
ниже
раздел
ИСТОРИЯ).
Существует
два режима
поиска:
инкрементальный
incremental и не
инкрементальный
non-incremental.
Инкрементальный
поиск
начинается
до того, как
пользователь
закончит
вводить
строку
поиска. По
мере ввода
каждого
символа в
строке
поиска readline
отображает
следующую
запись из
истории,
соответствующую
введенной
строке. Для
инкрементального
поиска
требуется
ровно
столько
символов,
сколько
необходимо
для поиска
нужной
записи в
истории.
При
использовании
режима
редактирования
emacs введите C-r,
чтобы
выполнить
поиск в
истории в
обратном
направлении
в поисках
определенной
строки. При
вводе C-s
выполняется
поиск в
истории в
прямом
(вперёд)
направлении.
Символы,
присутствующие
в значении
переменной
isearch-terminators,
используются
для
завершения
инкрементального
поиска.
Если этой
переменной
не было
присвоено
значение,
то ESC и C-j
завершают
инкрементальный
поиск. C-g
прерывает
инкрементальный
поиск и
восстанавливает
исходную
строку.
Когда
поиск
завершается,
запись
журнала,
содержащая
строку
поиска,
становится
текущей
строкой.
Чтобы
найти
другие
совпадающие
записи в
списке
истории,
введите C-r
или C-s,
соответственно.
При этом
выполняется
поиск в
истории в
обратном
или прямом
направлениях
в поисках
следующей
записи,
соответствующей
введенной
строке
поиска.
Любая
другая
последовательность
клавиш,
связанная
с командой
терминала
readline,
завершает
поиск и
выполняет
эту
команду.
Например,
новая
строка
завершает
поиск и
принимает
строку, тем
самым
выполняя
команду из
списка
истории.
Команда
перемещения
завершит
поиск,
сделает
последнюю
найденную
строку
текущей и
начнет
редактирование.
Readline
запоминает
последнюю
строку
инкрементального
поиска.
Если две
строки C-r
вводятся
без
каких-либо
промежуточных
символов,
определяющих
новую
строку
поиска, то
readline
использует
любую
запомненную
строку
поиска.
При не
инкрементальном
поиске
строка
поиска
считывается
целиком,
прежде чем
начать
поиск
совпадающих
записей в
истории.
Строка
поиска
может быть
введена
пользователем
или быть
частью
содержимого
текущей
строки.
Названия
команд Readline
Ниже
приведен
список
названий
команд и
последовательности
клавиш по
умолчанию,
к которым
они
привязаны.
Названия
команд без
соответствующей
последовательности
клавиш по
умолчанию
не
привязаны.
В
следующих
описаниях
"точка" point
обозначает
текущее
положение
курсора, а
"метка" mark -
положение
курсора,
сохраненное
командой
set-mark. Текст
между
точкой и
меткой
называется
областью
region. В Readline есть
концепция
активной
области active
region: когда
область
активна,
тогда readline
повторно
отображает
область,
используя
значение
переменной
active-region-start-color.
Переменная
readline enable-active-region
включает и
выключает
эту
переменную.
Несколько
команд
устанавливают
область в
активное
состояние;
они
описаны
ниже.
Команды
перемещения
- beginning-of-line
(C-a)
- Перейти к
началу
текущей
строки. На
некоторых
клавиатурах
это также
может быть
связано с
клавишей
Home.
- end-of-line
(C-e)
- Перейти к
концу
строки. На
некоторых
клавиатурах
это также
может быть
связано с
клавишей End.
- forward-char
(C-f)
- Переместить
символ
вперед. На
некоторых
клавиатурах
это также
может быть
связано с
клавишей
со
стрелкой
вправо.
- backward-char
(C-b)
- Переместить
символ
назад. На
некоторых
клавиатурах
это также
может быть
связано с
клавишей
со
стрелкой
влево.
- forward-word
(M-f)
- Перейти к
концу
следующего
слова.
Слова
состоят из
буквенно-цифровых
символов
(букв и
цифр).
- backward-word
(M-b)
- Вернуться
к началу
текущего
или
предыдущего
слова.
Слова
состоят из
буквенно-цифровых
символов
(букв и
цифр).
- shell-forward-word
(M-C-f)
- Перейти к
концу
следующего
слова.
Слова
разделяются
метасимволами,
не
заключенными
в кавычки.
- shell-backward-word
(M-C-b)
- Вернуться
к началу
текущего
или
предыдущего
слова.
Слова
разделяются
метасимволами
оболочки,
не
заключенными
в кавычки.
- previous-screen-line
- Попытаться
переместить
точку в тот
же столбец
физического
экрана в
предыдущей
строке
физического
экрана. Это
не даст
желаемого
эффекта,
если
текущая
строка readline
занимает
не более
одной
физической
строки или
если точка
не
превышает
длину
приглашения
плюс
ширину
экрана.
- next-screen-line
- Попытаться
переместить
точку в тот
же столбец
физического
экрана в
следующей
строке
физического
экрана. Это
не даст
желаемого
эффекта,
если
текущая
строка readline
занимает
не более
одной
физической
строки или
если длина
текущей
строки readline
не
превышает
длину
приглашения
плюс
ширина
экрана.
- clear-display
(M-C-l)
- Очистить
экран и,
если
возможно,
буфер
обратной
прокрутки
терминала,
затем
перечертить
текущую
строку,
оставив
текущую
строку в
верхней
части
экрана.
- clear-screen
(C-l)
- Очистить
экран,
затем
переместить
текущую
строку,
оставив ее
в верхней
части
экрана.
Используя
числовой
аргумент,
обновить
текущую
строку, не
очищая
экран.
- redraw-current-line
- Обновить
текущую
строку.
Команды
управления
историей
- accept-line (Newline,
Return)
- Принимать
строку
независимо
от того,
где
находится
курсор.
Если эта
строка
непустая,
то
добавить
ее в список
истории в
соответствии
с
состоянием
переменных
HISTCONTROL и HISTIGNORE.
Если
строка
является
измененной
строкой
истории, то
восстановить
ее в
исходном
состоянии.
- previous-history
(C-p)
- Извлекать
предыдущую
команду из
списка
истории,
перемещаясь
назад по
списку. Это
также
может быть
связано с
клавишей
со
стрелкой
вверх на
некоторых
клавиатурах.
- next-history
(C-n)
- Извлечь
следующую
команду из
списка
истории,
продвигаясь
по списку
вперед. Это
также
может быть
связано с
клавишей
со
стрелкой
вниз на
некоторых
клавиатурах.
- beginning-of-history
(M-<)
- Перейти на
первую
строку в
истории.
- end-of-history
(M->)
- Перейти к
концу
истории
ввода, т.е. к
строке,
которая
вводится в
данный
момент.
- operate-and-get-next
(C-o)
- Принимать
текущую
строку для
выполнения,
как если бы
была
введена
новая
строка и
извлекать
следующую
строку
относительно
текущей
строки из
журнала
для
редактирования.
Числовой
аргумент,
если он
указан,
указывает,
какую
запись
журнала
следует
использовать
вместо
текущей
строки.
- fetch-history
- Используя
числовой
аргумент,
извлечь
эту запись
из списка
истории и
сделать ее
текущей
строкой.
Когда
аргумент
не
определён,
тогда
вернуться
к первой
записи в
списке
истории.
- reverse-search-history
(C-r)
- Искать в
обратном
направлении,
начиная с
текущей
строки и
двигаясь
“up” по
списку
истории по
мере
необходимости.
Это
пошаговый
поиск. Эта
команда
устанавливает
область в
соответствии
с
соответствующим
текстом и
активирует
область.
- forward-search-history
(C-s)
- Искать
вперед,
начиная с
текущей
строки и
двигаясь
“down” по
списку
истории по
мере
необходимости.
Это
пошаговый
поиск. Эта
команда
устанавливает
область в
соответствии
с
соответствующим
текстом и
активирует
область.
- non-incremental-reverse-search-history
(M-p)
- Искать
назад по
списку
истории,
начиная с
текущей
строки,
используя
неинкрементный
поиск по
строке,
предоставленной
пользователем.
Строка
поиска
может
совпадать
с любым
местом в
строке
истории.
- non-incremental-forward-search-history
(M-n)
- Искать
вперёд по
списку
истории,
используя
не
инкрементальный
поиск по
строке,
предоставленной
пользователем.
Строка
поиска
может
совпадать
с любым
местом в
строке
истории.
- history-search-backward
- Искать
назад по
списку
истории в
поисках
последовательности
символов
между
началом
текущей
строки и
точкой.
Строка
поиска
должна
совпадать
с началом
строки
истории.
Это не
инкрементальный
поиск. Это
может быть
связано с
нажатием
клавиши Page Up key
("Открыть
страницу")
на
некоторых
клавиатурах.
- history-search-forward
- Искать по
списку
истории в
поисках
последовательности
символов
между
началом
текущей
строки и
точкой.
Строка
поиска
должна
совпадать
с началом
строки
истории.
Это не
инкрементальный
поиск. На
некоторых
клавиатурах
это может
быть
связано с
нажатием
клавиши Page Down
("Перелистывание
страницы
вниз").
- history-substring-search-backward
- Искать в
списке
истории
назад в
поисках
последовательности
символов
между
началом
текущей
строки и
точкой.
Строка
поиска
может
совпадать
с любым
местом в
строке
истории.
Это не
инкрементальный
поиск.
- history-substring-search-forward
- Выполнить
поиск
вперед по
истории в
поисках
последовательности
символов
между
началом
текущей
строки и
точкой.
Строка
поиска
может
совпадать
с любым
местом в
строке
истории.
Это не
инкрементальный
поиск.
- yank-nth-arg
(M-C-y)
- Вставить
первый
аргумент
предыдущей
команды
(обычно
второе
слово в
предыдущей
строке) в
точку. С
аргументом
n вставьте
n-е слово
из
предыдущей
команды
(слова в
предыдущей
команде
начинаются
со слова 0).
Отрицательный
аргумент
вставляет
n-е слово
из конца
предыдущей
команды.
Как только
аргумент n
вычислен,
для
извлечения
n-го слова
используются
средства
расширения
истории,
как если бы
“!n”
расширение
истории
было
задано
заранее.
- yank-last-arg (M-.,
M-_)
- Вставить
последний
аргумент в
предыдущую
команду
(последнее
слово
предыдущей
записи в
истории). С
числовым
аргументом
ведёт себя
точно так
же, как с yank-nth-arg.
Последовательные
вызовы yank-last-arg
перемещают
назад по
списку
истории, по
очереди
вставляя
последнее
слово (или
слово,
указанное
аргументом
для
первого
вызова) из
каждой
строки.
Любой
числовой
аргумент,
передаваемый
этим
последовательным
вызовам,
определяет
направление
перемещения
по истории.
Отрицательный
аргумент
переключает
направление
перемещения
по истории
(назад или
вперед).
При этом
используются
средства
расширения
истории
для
извлечения
последнего
слова, как
если бы “!$”
расширение
истории
было
задано
заранее.
- shell-expand-line
(M-C-e)
- Расширение
слов
выполнялось
в оболочке.
При этом
выполняется
расширение
псевдонима
и истории,
используются
кавычки
$'string' и $"string",
расширение
тильды,
расширение
параметров
и
переменных,
арифметическое
расширение,
замена
команд и
процессов,
разделение
слов и
удаление
кавычек.
Явный
аргумент
запрещает
замену
команд и
процессов.
Описание
расширения
истории
смотрите в
разделе
РАСШИРЕНИЕ
ИСТОРИИ
ниже.
- history-expand-line
(M-^)
- Выполнить
расширение
истории в
текущей
строке.
Описание
расширения
истории
смотрите в
разделе
РАСШИРЕНИЕ
ИСТОРИИ
ниже.
- magic-space
- Выполнить
расширение
истории в
текущей
строке и
вставить
пробел.
Описание
расширения
истории
смотрите в
разделе
РАСШИРЕНИЕ
ИСТОРИИ
ниже.
- alias-expand-line
- Выполнить
расширение
псевдонима
в текущей
строке.
Описание
расширения
псевдонима
приведено
в разделе
ПСЕВДОНИМЫ
выше.
- history-and-alias-expand-line
- Выполнить
расширение
истории и
псевдонима
в текущей
строке.
- insert-last-argument
(M-., M-_)
- Синоним
для yank-last-arg.
- edit-and-execute-command
(C-x C-e)
- Вызвать
редактор в
текущей
командной
строке и
выполнить
результат
в виде
команд
оболочки.
Bash
пытается
вызвать
$VISUAL, $EDITOR и emacs
в качестве
редактора
в
указанном
порядке.
Команды
изменения
текста
- end-of-file
(usually C-d)
- Символ,
обозначающий
конец
файла,
заданный,
например, с
помощью stty(1).
Если этот
символ
считывается,
когда в
строке нет
символов, а
точка
находится
в начале
строки, то
readline
интерпретирует
его как
конец
ввода и
возвращает
EOF.
- delete-char
(C-d)
- Удалить
символ в
точке. Если
эта
функция
привязана
к тому же
символу,
что и
символ tty EOF,
как это
обычно
бывает с C-d,
то
смотрите
выше, чтобы
узнать об
эффектах.
Это также
может быть
связано с
клавишей Delete
на
некоторых
клавиатурах.
- backward-delete-char
(Rubout)
- Удалить
символ,
находящийся
за
курсором.
Если задан
числовой
аргумент,
то
сохранить
удаленный
текст в
кольце
удаления.
- forward-backward-delete-char
- Удалить
символ под
курсором,
если
только
курсор не
находится
в конце
строки, в
этом
случае
символ,
расположенный
за
курсором,
будет
удален.
- quoted-insert (C-q,
C-v)
- Добавить
следующий
введенный
символ в
строку
буквально.
Вот как,
например,
вставлять
такие
символы,
как C-q.
- tab-insert (C-v
TAB)
- Вставить
символ
табуляции.
- self-insert (a, b, A, 1, !,
...)
- Вставить
введенный
символ.
- bracketed-paste-begin
- Эта
функция
предназначена
для
привязки к
“bracketed paste”
escape-последовательности,
отправляемой
некоторыми
терминалами
и такая
привязка
назначается
по
умолчанию.
Это
позволяет
readline
вставлять
текст как
единое
целое, не
обрабатывая
каждый
символ так,
как если бы
он был
прочитан с
клавиатуры.
Вставленные
символы
вставляются
так, как
если бы
каждый из
них был
привязан к
самостоятельной
вставке
self-insert вместо
выполнения
каких-либо
команд
редактирования.
- Вставка в
квадратных
скобках
устанавливает
область в
соответствии
со
вставленным
текстом и
активирует
эту
область.
- transpose-chars
(C-t)
- Перетащить
символ
перед
точкой
вперед по
символу в
точке,
также
перемещая
точку
вперед.
Если точка
находится
в конце
строки, то
это
перемещает
два
символа
перед
точкой.
Отрицательные
аргументы
не
действуют.
- transpose-words
(M-t)
- Перетащить
слово
перед
точкой за
слово
после
точки,
перемещая
точку
также за
это слово.
Если точка
находится
в конце
строки, то
это
перемещает
последние
два слова в
строке.
- shell-transpose-words
(M-C-t)
- Перетащить
слово
перед
точкой за
слово
после
точки,
перемещая
точку
также и за
это слово.
Если точка
вставки
находится
в конце
строки, это
перемещает
последние
два слова в
строке.
Границы
слов такие
же, как у
shell-forward-word и shell-backward-word.
- upcase-word
(M-u)
- Ввести
текущее
(или
следующее)
слово в
верхнем
регистре.
Если
аргумент
отрицательный,
то ввести
предыдущее
слово в
верхнем
регистре,
но не
перемещать
точку.
- downcase-word
(M-l)
- Ввести
текущее
(или
следующее)
слово в
нижнем
регистре.
Если
аргумент
отрицательный,
то ввести
предыдущее
слово в
нижнем
регистре,
но не
перемещать
точку.
- capitalize-word
(M-c)
- Указать
текущее
(или
следующее)
слово с
заглавной
буквы. При
отрицательном
аргументе
указать
предыдущее
слово с
заглавной
буквы, но
не
перемещать
точку.
- overwrite-mode
- Переключить
режим
перезаписи.
При явном
положительном
числовом
аргументе
переключится
в режим
перезаписи.
При явном
отрицательном
числовом
аргументе
переключится
в режим
вставки.
Эта
команда
влияет
только на
режим emacs; В
режиме vi
перезапись
выполняется
по-другому.
Каждый
вызов readline()
начинается
в режиме
вставки.
- В режиме
перезаписи
символы,
связанные
с self-insert,
заменяют
текст в
точке, а не
сдвигают
текст
вправо.
Символы,
связанные
с backward-delete-char,
заменяют
символ
перед
точкой на
пробел. По
умолчанию
эта
команда не
привязана,
но может
быть
привязана
к клавише
"Insert" на
некоторых
клавиатурах.
Уничтожение
и
выдёргивание
- kill-line
(C-k)
- Уничтожить
текст от
точки до
конца
текущей
строки.
Используя
числовой
аргумент с
отрицательным
значением,
уничтожить
текст в
обратном
направлении
от курсора
к началу
строки.
- backward-kill-line
(C-x Rubout)
- Уничтожить
в обратном
порядке, с
самого
начала
текущей
строки. С
отрицательным
числовым
аргументом
уничтожить
вперед от
курсора к
концу
строки.
- unix-line-discard
(C-u)
- Уничтожить
в обратном
порядке от
точки к
началу
строки,
сохраняя
уничтоженный
текст в
кольце
удаления.
- kill-whole-line
- Уничтожить
все
символы в
текущей
строке,
независимо
от того,
где
находится
точка.
- kill-word
(M-d)
- Удалить от
точки до
конца
текущего
слова или,
если между
словами, то
до конца
следующего
слова.
Границы
слов
совпадают
с теми,
которые
используются
в forward-word.
- backward-kill-word
(M-Rubout)
- Удалить
слово,
стоящее за
точкой.
Границы
слов
совпадают
с теми,
которые
используются
в backward-word.
- shell-kill-word
(M-C-d)
- Удалить от
точки до
конца
текущего
слова или,
если между
словами, то
до конца
следующего
слова.
Границы
слов
совпадают
с теми,
которые
используются
в shell-forward-word.
- shell-backward-kill-word
- Удалить
слово,
стоящее за
точкой.
Границы
слов
совпадают
с теми,
которые
используются
в shell-backward-word.
- unix-word-rubout
(C-w)
- Уничтожить
слово за
точкой,
используя
пробел в
качестве
границы
слова,
сохранив
уничтоженный
текст в
кольце
удаления.
- unix-filename-rubout
- Удалить
слово за
точкой,
используя
пробел и
символ
косой
черты в
качестве
границ
слова,
сохранив
уничтоженный
текст в
кольце
удаления.
- delete-horizontal-space
(M-\)
- Удалить
все
пробелы и
знаки
табуляции
вокруг
точки.
- kill-region
- Удалить
текст в
текущей
области.
- copy-region-as-kill
- Скопировать
текст из
этой
области в
буфер
удаления,
чтобы его
можно было
немедленно
извлечь.
- copy-backward-word
- Скопировать
слово
перед
точкой в
буфер
удаления.
Границы
слов
совпадают
с backward-word.
- copy-forward-word
- Скопировать
слово,
следующее
за точкой,
в буфер
удаления.
Границы
слов такие
же, как и в
forward-word.
- yank (C-y)
- Извлечь
верхнюю
часть из
кольца
удалённых
в буфере
около
точки.
- yank-pop
(M-y)
- Повернуть
кольцо
удалённых
и извлечь
новый верх.
Работает
только
после yank
или yank-pop.
Числовые
аргументы
- digit-argument (M-0, M-1,
..., M--)
- Добавить
эту цифру к
уже
имеющемуся
аргументу
или
определить
новый
аргумент. M -
определяет
отрицательный
аргумент.
- universal-argument
- Это еще
один
способ
указать
аргумент.
Если за
командой
universal-argument
следует
одна или
несколько
цифр, с
необязательным
начальным
знаком
минус, то
эти цифры
определяют
аргумент.
Если за
командой
universal-argument
следуют
цифры, то
выполнение
снова
заканчивается
числовым
аргументом,
иначе
игнорируется.
В качестве
специального
случая,
если за
этой
командой
сразу
следует
символ,
который не
является
ни цифрой,
ни знаком
минус, то
количество
аргументов
для
следующей
команды
умножается
на четыре.
Изначально
количество
аргументов
равно
единице,
поэтому
при
выполнении
этой
функции в
первый раз
количество
аргументов
увеличивается
на четыре,
во второй
раз
количество
аргументов
увеличивается
до
шестнадцати
и так
далее.
Завершение
- complete
(TAB)
- Попытаться
выполнить
заполнение
текста
перед
точкой. Bash
пытается
завершить,
сначала
проверяя
наличие
каких-либо
программируемых
завершений
для
командного
слова
(смотрите
подраздел
Программируемое
завершение
ниже), в
противном
случае
обрабатывает
текст как
переменную
(если текст
начинается
с $),
название
пользователя
(если текст
начинается
с ~).,
названия
хоста (если
текст
начинается
с @) или
команды
(включая
псевдонимы,
функции и
встроенные
команды) по
очереди.
Если ни
один из них
не
приводит к
совпадению,
то
выполняется
возврат к
завершению
названия
файла.
- possible-completions
(M-?)
- Вывести
список
возможные
дополнения
к тексту
перед
точкой. При
отображении
завершений
readline
устанавливает
количество
столбцов,
используемых
для
отображения,
равным
значению
completion-display-width,
значению
переменной
оболочки
COLUMNS или
ширине
экрана, в
указанном
порядке.
- insert-completions
(M-*)
- Вставить
все
дополнения
к тексту
перед
точкой,
которые
были бы
сгенерированы
с помощью
possible-completions,
разделив
их
пробелом.
- Аналогично
complete, но
заменяет
слово,
которое
необходимо
завершить,
одним
совпадением
из списка
возможных
завершений.
Повторное
выполнение
шагов menu-complete
по списку
возможных
завершений,
вставляя
каждое
совпадение
по очереди.
В конце
списка
завершений
клавиша
menu-complete
нажимает
клавишу
звонка (в
зависимости
от
настройки
bell-style) и
восстанавливает
исходный
текст.
Аргумент n
перемещает
на n
позиций в
списке
совпадений
вперед;
отрицательный
аргумент
перемещает
их назад по
списку. Эта
команда
предназначена
для
привязки к
клавише TAB,
но по
умолчанию
не
привязана.
- Идентична
menu-complete, но
перемещает
назад по
списку
возможных
вариантов
завершения,
как если бы
для menu-complete был
задан
отрицательный
аргумент.
По
умолчанию
эта
команда не
привязана.
- export-completions
- Выполнить
заполнение
слова
перед
точкой, как
описано
выше и
записать
список
возможных
завершений
в выходной
поток readline,
используя
следующий
формат и
записывая
информацию
в
отдельных
строках:
- количество
совпадений
N;
- завершаемое
слово;
- S:E, когда S
и E
являются
начальным
и конечным
смещениями
слова в
буфере
строк readline;
затем
- каждое
совпадение,
по одному
на строку
- Если
совпадений
нет, то
первая
строка
будет
выглядеть
следующим
образом
“0”, и эта
команда не
выводит
никаких
выходных
данных
после S:E.
Если есть
только
одно
совпадение,
то
выводится
единственная
строка,
содержащая
его. Если
имеется
более
одного
совпадения,
то в первой
строке
после S
выводится
общий
префикс
совпадений,
который
может быть
пустым :E,
затем
совпадения
в
последующих
строках. В
этом
случае N
будет
содержать
первую
строку с
общим
префиксом.
- Пользователь
или
приложение
должны
иметь
возможность
использовать
пустую
строку.
Цель
состоит в
том, чтобы
пользователь
или
приложение
считывали
N строк
после
строки,
содержащей
S:E, чтобы
получить
список
совпадений.
По
умолчанию
эта
команда не
привязана.
- delete-char-or-list
- Удалить
символ под
курсором,
если он не
находится
в начале
или конце
строки
(например,
delete-char). В конце
строки она
ведет себя
аналогично
possible-completions. По
умолчанию
эта
команда не
привязана.
- complete-filename
(M-/)
- Попробывать
ввести
название
файла в
текст
перед
точкой.
- possible-filename-completions
(C-x /)
- Вывести
возможные
варианты
завершения
текста
перед
точкой,
рассматривая
его как
название
файла.
- complete-username
(M-~)
- Попытаться
закончить
текст
перед
точкой,
рассматривая
его как
название
пользователя.
- possible-username-completions
(C-x ~)
- Показать
возможные
варианты
окончания
текста
перед
точкой,
рассматривая
его как
название
пользователя.
- complete-variable
(M-$)
- Попытаться
завершить
работу над
текстом
перед
точкой,
рассматривая
его как
переменную
оболочки.
- possible-variable-completions
(C-x $)
- Показать
возможные
варианты
завершения
текста
перед
точкой,
рассматривая
его как
переменную
оболочки.
- complete-hostname
(M-@)
- Показать
возможные
варианты
завершения
текста
перед
точкой,
рассматривая
его как
название
хоста.
- possible-hostname-completions
(C-x @)
- Показать
возможные
варианты
завершения
текста
перед
точкой,
рассматривая
его как
название
хоста.
- complete-command
(M-!)
- Попытаться
завершить
текст
перед
точкой,
рассматривая
его как
название
команды.
При
завершении
команды
выполняется
попытка
сопоставления
текста с
псевдонимами,
зарезервированными
словами,
функциями
оболочки,
встроенными
элементами
оболочки и,
наконец, с
названиями
исполняемых
файлов в
указанном
порядке.
- possible-command-completions
(C-x !)
- Показать
возможные
варианты
завершения
текста
перед
точкой,
рассматривая
его как
название
команды.
- dynamic-complete-history
(M-TAB)
- Попытаться
завершить
текст
перед
точкой,
сравнив
текст с
записями в
списке
истории на
предмет
возможных
совпадений
по
завершению.
- dabbrev-expand
- Попробовать
завершить
меню с
текстом
перед
точкой,
сравнив
текст со
строками
из списка
истории на
предмет
возможного
совпадения
завершений.
- complete-into-braces
(M-{)
- Выполнить
заполнение
названия
файла и
вставить
список
возможных
вариантов,
заключенный
в фигурные
скобки,
чтобы
список был
доступен
командной
строке
(смотрите
подраздел
Расширение
фигурных
скобок
выше).
Макросы
клавиатуры
- start-kbd-macro (C-x
()
- Начать
сохранять
символы,
введенные
в текущий
макрос
клавиатуры.
- end-kbd-macro (C-x
))
- Прекратить
сохранять
символы,
введенные
в текущий
макрос
клавиатуры
и
сохранить
определение.
- call-last-kbd-macro (C-x
e)
- Повторно
выполнить
последний
определенный
макрос
клавиатуры,
сделав так,
чтобы
символы в
макросе
отображались
так, как
если бы они
были
набраны с
клавиатуры.
- print-last-kbd-macro
()
- Вывести
последний
определенный
макрос
клавиатуры
в формате,
подходящем
для файла
inputrc.
Разное
- re-read-init-file (C-x
C-r)
- Прочитать
содержимое
файла inputrc и
включить в
него все
найденные
там
привязки
или
назначения
переменных.
- abort (C-g)
- Прервать
текущую
команду
редактирования
и выдать
сигнал
звонка на
терминал (в
соответствии
с
настройкой
bell-style).
- do-lowercase-version (M-A, M-B,
M-x, ...)
- Если
измененный
символ x
имеет
верхний
регистр, то
выполнить
команду,
привязанную
к
соответствующему
измененному
символу
нижнего
регистра.
Поведение
не
определено,
если x уже
имеет
нижний
регистр.
- prefix-meta
(ESC)
- Преобразовать
следующий
введенный
символ. ESC
f,
эквивалентно
Meta-f.
- undo (C-_, C-x
C-u)
- Пошаговая
отмена,
запомненного
отдельно
для каждой
строки.
- revert-line
(M-r)
- Отменить
все
изменения,
внесенные
в эту
строку. Это
похоже на
выполнение
команды undo
необходимое
количество
раз, чтобы
вернуть
строку в
исходное
состояние.
- tilde-expand
(M-&)
- Выполнить
расширение
тильдой
текущего
слова.
- set-mark (C-@,
M-<space>)
- Установить
метку в
точку. Если
указан
числовой
аргумент,
то
установить
метку в это
положение.
- exchange-point-and-mark
(C-x C-x)
- Заменить
точку на
метку.
Установить
текущее
положение
курсора на
сохраненное,
затем
установить
метку на
прежнее
положение
курсора.
- character-search
(C-])
- Прочитать
символ и
переместите
указатель
на
следующее
его
появление.
Отрицательный
аргумент
выполняет
поиск
предыдущих
появлений.
- character-search-backward
(M-C-])
- Прочитать
символ и
переместить
указатель
на
предыдущее
его
использование.
Отрицательный
аргумент
выполняет
поиск
последующих
появлений.
- skip-csi-sequence
- Прочитать
достаточное
количество
символов,
чтобы
использовать
последовательность
из
нескольких
клавиш,
например,
определенную
для таких
клавиш, как
Home и End.
Последовательности
CSI
начинаются
с
индикатора
контрольной
последовательности
(CSI), обычно ESC [.
Если эта
последовательность
привязана
к “\e[”,
клавишам,
создающим
последовательности
CSI, то не
действуют,
если они
явно не
привязаны
к команде
readline, вместо
того чтобы
вставлять
случайные
символы в
буфер
редактирования.
По
умолчанию
это не
привязано,
но обычно
привязывается
к ESC [.
- insert-comment
(M-#)
- Если без
числового
аргумента,
то
вставить
значение
переменной
readline comment-begin в
начало
текущей
строки.
Если
указан
числовой
аргумент,
то эта
команда
действует
как
переключатель:
если
символы в
начале
строки не
соответствуют
значению
comment-begin, то
вставить
значение; в
противном
случае
удалить
символы в
comment-begin из
начала
строки. В
любом
случае
строка
принимается
так, как
если бы
была
введена
новая
строка.
Значение
по
умолчанию
для comment-begin
приводит к
тому, что
эта
команда
преобразует
текущую
строку в
комментарий
оболочки.
Если
числовой
аргумент
приводит к
удалению
символа
комментария,
то строка
будет
выполнена
оболочкой.
- spell-correct-word (C-x
s)
- Выполнить
исправление
орфографии
в текущем
слове,
указав его
в качестве
каталога
или
названия
файла,
таким же
образом,
как опции
cdspell
оболочки.
Границы
слов
совпадают
с
границами,
используемыми
в опции
shell-forward-word.
- glob-complete-word
(M-g)
- Рассматривать
слово
перед
точкой как
шаблон для
расширения
названия
пути с
неявным
добавлением
звездочки,
затем
использовать
этот
шаблон для
создания
списка
совпадающих
названий
файлов для
возможных
завершений.
- glob-expand-word (C-x
*)
- Использовать
слово
перед
точкой как
шаблон для
расширения
названия
пути и
вставить
список
совпадающих
названий
файлов,
заменив
это слово.
Если
указан
числовой
аргумент,
то
добавить
символ *
перед
расширением
названия
пути.
- glob-list-expansions
(C-x g)
- Отобразить
список
расширений,
которые
были бы
сгенерированы
с помощью
glob-expand-word и
повторно
отобразить
строку.
Если
указан
числовой
аргумент,
то
добавить *
перед
расширением
названия
пути.
- dump-functions
- Вывести
все
функции и
их
привязки к
клавишам в
поток
вывода readline.
Если
указан
числовой
аргумент,
то
выходные
данные
форматируются
таким
образом,
чтобы их
можно
сделать
частью
файла inputrc.
- dump-variables
- Вывести
все
настраиваемые
переменные
readline и их
значения в
поток
вывода readline.
Если
указан
числовой
аргумент,
то
выходные
данные
форматируются
таким
образом,
чтобы их
можно
сделать
частью
файла inputrc.
- dump-macros
- Вывести
все
последовательности
клавиш readline,
привязанные
к макросам
и строки, в
которые
они
выводят в
выходной
поток readline.
Если
указан
числовой
аргумент,
то
выходные
данные
форматируются
таким
образом,
чтобы их
можно
сделать
частью
файла inputrc.
- execute-named-command
(M-x)
- Прочитать
название
команды с
возможностью
привязки
readline из
входных
данных и
выполнить
функцию, к
которой
она
привязана,
как если бы
последовательность
клавиш, к
которой
она была
привязана,
была
указана во
входных
данных.
Если эта
функция
снабжена
числовым
аргументом,
то этот
аргумент
будет
передан
функции,
которая
выполняется.
- display-shell-version
(C-x C-v)
- Вывести
информацию
о данной
версии
оболочки
bash.
Завершение
программ
Когда
пользователь
пытается
выполнить
ввод слова
для
команды
или
аргумента
команды,
для
которой
была
определена
спецификация
завершения
compspec с
использованием
встроенной
команды complete
(смотрите
раздел
ВСТРОЕННЫЕ
КОМАНДЫ
ОБОЛОЧКИ
ниже), то readline
вызывает
программируемые
средства
завершения.
Во-первых,
bash
определяет
название
команды.
Если для
этой
команды
была
определена
спецификация
завершения,
то
спецификация
завершения
используется
для
создания
списка
возможных
завершений
для слова.
Если
командным
словом
является
пустая
строка
(попытка
завершения
в начале
пустой
строки), то
bash
использует
любую
спецификацию
завершения,
определенную
опцией -E
для complete.
Опция -I для
complete
указывает
на то, что
командное
слово
является
первым в
строке
словом, не
подлежащим
присвоению
или словом
после
разделителя
команд,
такого как
; или |.
Обычно это
указывает
на
завершение
названия
команды.
Если
командным
словом
является
полное
название
пути, то bash
сначала
выполняет
поиск
спецификации
завершения
для
полного
названия
пути. Если
для
полного
названия
пути нет
спецификации
завершения,
то bash
пытается
найти
спецификацию
завершения
для части,
следующей
за
последней
косой
чертой.
Если эти
поиски не
приводят к
получению
спецификации
завершения
или если
для
командного
слова нет
спецификации
завершения,
то bash
использует
любую
спецификацию
завершения,
определенную
опцией -D
для complete по
умолчанию.
Если
спецификация
завершения
по
умолчанию
отсутствует,
то bash
выполняет
расширение
псевдонима
для
командного
слова в
качестве
последнего
средства и
пытается
найти
спецификацию
завершения
для
командного
слова,
полученного
в
результате
любого
успешного
расширения.
Если
спецификация
завершения
не найдена,
то bash
выполняет
завершение
по
умолчанию,
как
описано
выше в
подразделе
Завершение.
В
противном
случае, как
только
спецификация
завершения
найдена, bash
использует
её для
создания
списка
совпадающих
слов.
Сначала
bash
выполняет
действия
actions,
указанные
в
спецификации
завершения.
Это
возвращает
только
совпадения,
которые
являются
префиксами
завершаемого
слова.
Когда для
заполнения
названия
файла или
каталога
используется
опция -f или
-d, то bash
использует
переменную
оболочки
FIGNORE для
фильтрации
совпадений.
Далее,
программируемое
завершение
генерирует
совпадения,
указанные
с помощью
шаблона
расширения
названия
пути,
предоставленного
в качестве
аргумента
опции -G.
Слова,
сгенерированные
с помощью
шаблона, не
обязательно
должны
совпадать
с
завершаемым
словом. Bash
использует
переменную
FIGNORE для
фильтрации
совпадений,
но не
использует
переменную
оболочки
GLOBIGNORE.
Далее при
завершении
используется
строка,
указанная
в качестве
аргумента
опции -W.
Сначала
строка
разделяется
с
использованием
символов в
специальной
переменной
IFS в
качестве
разделителей.
Это
позволяет
использовать
кавычки
оболочки
внутри
строки,
чтобы
обеспечить
механизм
для слов,
содержащих
метасимволы
оболочки
или
символы в
значении
IFS. Затем
каждое
слово
расширяется
с помощью
фигурных
скобок,
тильды,
параметров
и
переменных,
подстановки
команд и
арифметического
расширения,
как
описано
выше в
разделе
РАСШИРЕНИЯ.
Результаты
разбиваются
по
правилам,
описанным
выше в
подразделе
Разделение
слов.
Результаты
расширения
сопоставляются
по
префиксу с
завершаемым
словом, а
совпадающие
слова
становятся
возможными
завершениями.
После
того, как
эти
совпадения
были
сгенерированы,
bash
выполняет
любую
функцию
оболочки
или
команду,
указанную
с помощью
опций -F и -C.
Когда
вызывается
команда
или
функция,
тогда bash
присваивает
значения
переменным
COMP_LINE, COMP_POINT,
COMP_KEY и COMP_TYPE,
как
описано
выше в
подразделе
Переменные
оболочки.
Если
вызывается
функция, то
bash также
устанавливает
переменные
COMP_WORDS и COMP_CWORD.
Когда
вызывается
функция
или
команда,
тогда
первый
аргумент ($1)
- это
название
команды,
аргументы
которой
завершаются,
второй
аргумент ($2)
- это
завершаемое
слово, а
третий
аргумент ($3)
- это слово
предшествующее
завершаемому
слову в
текущей
командной
строке. Нет
никакой
фильтрации
сгенерированных
завершений
по
завершаемому
слову;
функция
или
команда
имеют
полную
свободу в
генерации
совпадений
и им не
нужно
соответствовать
префиксу
слова.
Сначала
вызывается
любая
функция,
указанная
с помощью -F.
Функция
может
использовать
любые
средства
оболочки,
включая
описанные
ниже
встроенные
команды compgen
и compopt, для
генерации
совпадений.
Она должна
поместить
возможные
завершения
в
переменную
массива
COMPREPLY, по
одному для
каждого
элемента
массива.
Далее,
любая
команда,
указанная
с опцией -C,
вызывается
в среде,
эквивалентной
подстановке
команд. В
стандартном
выводе
должен
быть
список
завершений,
по одному
на строку.
При
необходимости
символ
новой
строки
будет
заменен
обратной
косой
чертой. Они
добавляются
к набору
возможных
завершений.
После
генерации
всех
возможных
завершений,
bash
применяет
любой
фильтр,
указанный
с помощью
опции -X, к
заверениям
в списке.
Фильтр
представляет
собой
шаблон,
используемый
для
расширения
названием
пути; буква
& в
шаблоне
заменяется
текстом
завершаемого
слова.
Букву &
можно
экранировать
обратной
косой
чертой;
обратная
косая
черта
удаляется
перед
попыткой
сопоставления.
Любое
завершение,
соответствующее
шаблону,
удаляется
из списка.
Начальная
буква !
отменяет
соответствие
шаблону; в
этом
случае bash
удаляет
любое
завершение,
которое не
соответствует
шаблону.
Если
включена
опция
оболочки
nocasematch, то bash
выполняет
сопоставление
без учета
регистра
буквенных
символов.
Наконец,
программируемое
завершение
добавляет
любой
префикс и
суффикс,
указанные
с помощью
опций -P и -S,
соответственно,
к каждому
завершению
и
возвращает
результат
в readline в виде
списка
возможных
завершений.
Если
ранее
примененные
действия
не привели
к
каким-либо
совпадениям,
а опция -o dirnames
была
указана в
complete при
определении
спецификации
завершения,
то bash
попытается
заполнить
название
каталога.
Если
опция -o plusdirs
была
указана в
complete при
определении
спецификации
завершения,
то bash
попытается
заполнить
название
каталога и
добавит
любые
совпадения
к набору
возможных
завершений.
По
умолчанию,
если
найдена
спецификация
завершения,
то всё, что
она
генерирует,
возвращается
в коде
завершения
в качестве
полного
набора
возможных
завершений.
Завершения
bash по
умолчанию
и readline по
умолчанию
для
завершения
названия
файла
отключены.
Если опция
-o bashdefault была
указана в
complete при
определении
спецификации
завершения
и
спецификация
завершения
не
генерирует
совпадений,
то bash
выполняет
попытку
завершения
по
умолчанию.
Если при
выполнении
спецификации
завершения
и, при
попытке,
при
выполнении
bash
завершений
по
умолчанию
не будет
получено
совпадений,
а опция -o default
была
указана в
complete при
определении
спецификации
завершения,
то
программируемое
завершение
выполняет
завершение
readline по
умолчанию.
Опции,
указанные
в complete и compopt,
могут
управлять
тем, как readline
обрабатывает
завершения.
Например,
опция -o fullquote
указывает
readline
заключать
совпадения
в кавычки,
как если бы
они были
названиями
файлов.
Смотрите
описание
complete ниже для
получения
более
подробной
информации.
Когда
спецификация
завершения
указывает,
что она
хочет
завершить
название
каталога,
тогда
программируемые
функции
завершения
заставляют
readline
добавлять
косую
черту к
завершенным
названиям,
которые
являются
символическими
ссылками
на
каталоги, в
зависимости
от
значения
переменной
mark-directories readline,
независимо
от
установки
переменной
mark-symlinked-directories readline.
Существует
некоторая
поддержка
динамического
изменения
завершений.
Это
наиболее
полезно
при
использовании
в
сочетании
с
завершением
по
умолчанию,
указанным
с помощью
complete -D. Функции
оболочки,
выполняемые
как
функции
завершения,
могут
указывать,
что
завершение
следует
повторить,
возвращая
статус
завершения,
равный 124.
Если
функция
оболочки
возвращает
значение 124
и изменяет
спецификацию
завершения,
связанную
с командой,
для
которой
выполняется
попытка
завершения
(указывается
в качестве
первого
аргумента
при
выполнении
функции), то
программируемое
завершение
перезапускается
с самого
начала с
попыткой
найти
новую
спецификацию
завершения
для этой
команды.
Это может
быть
использовано
для
динамического
создания
набора
завершений
по мере
попытки
завершения,
вместо
того чтобы
загружать
их все
сразу.
Например,
предполагая,
что
существует
библиотека
спецификаций
завершения,
каждая из
которых
хранится в
файле,
соответствующем
названию
команды,
следующая
функция
завершения
по
умолчанию
будет
загружать
завершения
динамически:
_completion_loader()
{
. "/etc/bash_completion.d/$1.sh".if 0<80n \
>/dev/null 2>&1 && return 124
}
complete -D -F _completion_loader.if 0<80n \
-o bashdefault -o default
ИСТОРИЯ
Когда
включена
опция -o history
для
встроенной
команды set,
тогда
оболочка
предоставляет
доступ к command
history, т. е. к
списку
ранее
введенных
команд.
Значение
переменной
HISTSIZE
используется
в
качестве
количества
команд для
сохранения
в списке
истории:
оболочка
сохраняет
текст
последних
команд HISTSIZE
(по
умолчанию
500).
Оболочка
сохраняет
каждую
команду в
списке
истории до
расширения
параметров
и
переменных
(смотрите
раздел
РАСШИРЕНИЯ
выше), но
после того,
как
выполняется
расширение
истории, в
зависимости
от
значений
переменных
оболочки
HISTIGNORE и
HISTCONTROL.
При
запуске bash
инициализирует
список
истории,
считывая
записи
истории из
файла,
название
которого
задается
переменной
HISTFILE (по
умолчанию
~/.bash_history). этот
файл
называется
history file. При
необходимости
файл
истории
обрезается,
чтобы
содержать
не
большего
числа
записей
истории,
указанного
значением
переменной
HISTFILESIZE. Если
значение
HISTFILESIZE не
задано или
равно нулю,
нечисловому
значению
или
числовому
значению,
меньшему
нуля, то
файл
истории не
усекается.
При
чтении
файла
истории
строки,
начинающиеся
с символа
комментария
истории, за
которым
сразу
следует
цифра,
интерпретируются
как
временные
метки для
следующей
строки
истории.
Эти
временные
метки
отображаются
необязательно
в
зависимости
от
значения
переменной
HISTTIMEFORMAT.
Временные
метки
истории,
если они
присутствуют,то
разделяют
записи
истории,
делая
возможными
многострочные
записи.
Когда
оболочка с
включенной
историей
завершает
работу,
тогда bash
копирует
последние
записи $HISTSIZE
из списка
истории в
$HISTFILE. Если
опция
оболочки
histappend
включена
(смотрите
описание
shopt в
разделе
ВСТРОЕННЫЕ
КОМАНДЫ
ОБОЛОЧКИ
ниже), то bash
добавляет
записи в
файл
истории, в
противном
случае она
перезаписывает
файл
истории.
Если
значение
HISTFILE не
задано или
равно нулю,
или если
файл
истории
недоступен
для записи,
то история
не
сохраняется.
После
сохранения
истории, bash
обрезает
файл
истории,
чтобы он
содержал
не более
HISTFILESIZE строк,
как
описано
выше.
Если
задана
переменная
HISTTIMEFORMAT, то
оболочка
записывает
информацию
о
временных
метках,
связанную
с каждой
записью
истории, в
файл
истории,
помечая их
символом
комментария
истории,
таким
образом,
временные
метки
сохраняются
во всех
сеансах
оболочки.
При этом
используется
символ
комментария
к истории,
чтобы
отличать
временные
метки от
других
строк
истории.
Как
указано
выше, при
использовании
HISTTIMEFORMAT
временные
метки
разделяют
многострочные
записи
истории.
Встроенная
команда fc
(смотрите
раздел
ВСТРОЕННЫЕ
КОМАНДЫ
ОБОЛОЧКИ
ниже)
выведет на
экран или
отредактирует
и повторно
выполнит
часть
списка
истории.
Встроенная
команда history
может
отображать
или
изменять
список
истории и
управлять
файлом
истории.
При
использовании
редактирования
из
командной
строки в
каждом
режиме
редактирования
доступны
команды
поиска,
которые
предоставляют
доступ к
списку
истории.
Оболочка
позволяет
управлять
тем, какие
команды
сохраняются
в списке
истории.
Переменные
HISTCONTROL и HISTIGNORE
используются
для
сохранения
только
подмножеств
введенных
команд.
Если опция
оболочки
cmdhist
включена,
то
оболочка
пытается
сохранить
каждую
строку
многострочной
команды в
одной и той
же записи
истории,
добавляя
точки с
запятой,
где это
необходимо,
для
сохранения
синтаксической
корректности.
Опция
оболочки
lithist
изменяет
cmdhist,
сохраняя
команду со
встроенными
символами
новой
строки
вместо
точек с
запятой.
Смотрите
описание
встроенной
команды shopt
ниже в
разделе
ВСТРОЕННЫЕ
КОМАНДЫ
ОБОЛОЧКИ
для
получения
информации
о
настройке
и
отключении
опций
оболочки.
РАСШИРЕНИЕ
ИСТОРИИ
Оболочка
поддерживает
функциональную
возможность
расширения
истории,
аналогичную
возможности
расширения
истории в
csh. В этом
разделе
описываются
доступный
синтаксис
этой
функциональной
возможности.
Расширение
истории
включено
по
умолчанию
для
интерактивных
оболочек и
может быть
отключено
с помощью
опции +H
встроенной
команды set
(смотрите
раздел
ВСТРОЕННЫЕ
КОМАНДЫ
ОБОЛОЧКИ
ниже). Не
интерактивные
оболочки
по
умолчанию
не
выполняют
расширение
истории, но
это можно
включить с
помощью “set
-H”.
Расширения
истории
вводят
слова из
списка
истории во
входной
поток,
упрощая
повторение
команд,
вставляя
аргументы
предыдущей
команды в
текущую
строку
ввода или
быстро
исправляя
ошибки в
предыдущих
командах.
Расширение
истории
выполняется
сразу
после
прочтения
всей
строки, до
того, как
оболочка
разбивает
ее на слова,
и
выполняется
для каждой
строки в
отдельности.
Оболочка
пытается
сообщить
функциям
расширения
истории о
том, что
кавычки из
предыдущих
строк все
еще
действуют.
Она
состоит из
двух
частей.
Первая
заключается
в
определении
того, какую
запись в
списке
истории
использовать
при замене.
Вторая - в
выборе
частей
этой
записи для
включения
в текущую.
Запись,
выбранная
из истории,
называется
событием
event, а части
этой
записи, на
которые
воздействуют,
называются
словами words.
Для
манипулирования
выбранными
словами
доступны
различные
модификаторы
modifiers. Запись
разбивается
на слова
таким же
образом,
как и при
чтении
входных
данных, так,
что
несколько
слов,
разделенных
метасимволами
metacharacterи
заключенные
в кавычки,
считаются
одним
словом.
Обозначение
события event
designator
выбирает
событие, а
дополнительное
обозначение
слова word designator
выбирает
слова из
события,
при этом
также
доступны
различные
дополнительные
модификаторы
modifiers для
управления
выбранными
словами.
Расширения
истории
вводятся с
помощью
символа
расширения
истории,
который по
умолчанию
равен !.
Расширения
истории
могут
отображаться
в любом
месте
входных
данных, но
не
являются
вложенными.
Только
обратная
косая
черта (\) и
одинарные
кавычки
могут
заключать
символ
расширения
истории, но
символ
расширения
истории
также
рассматривается
как
заключенный
в кавычки,
если он
непосредственно
предшествует
закрывающей
двойной
кавычке в
строке,
заключенной
в двойные
кавычки.
Некоторые
символы
запрещают
расширение
истории,
если они
находятся
сразу
после
символа
расширения
истории,
даже если
он не
заключен в
кавычки;
это - пробел,
табуляция,
новая
строка,
возврат
каретки, = и
другие
метасимволы
оболочки,
определенные
выше.
Существует
специальная
аббревиатура
для
обозначения
подстановки,
действующая,
когда
символ
быстрой
подстановки
quick substitution
(описанный
выше как histchars)
является
первым
символом в
строке. Она
выбирает
предыдущую
запись в
списке
истории,
используя
обозначение
события,
эквивалентное
!! и
заменяет в
этой
записи
одну
строку на
другую. Это
описано
ниже в
подразделе
Обозначения
событий.
Это
единственное
расширение
истории,
которое не
начинается
с символа
расширения
истории.
Несколько
опций
оболочки,
настраиваемых
с помощью
встроенной
команды shopt,
изменяют
поведение
расширения
истории
(смотрите
описание
встроенной
команды shopt
ниже). Если
включена
опция
оболочки
histverify и
используется
библиотека
readline, то
подстановки
в истории
не
передаются
немедленно
в
синтаксический
анализатор
оболочки.
Вместо
этого
развернутая
строка
загружается
в буфер
редактирования
readline для
дальнейшей
модификации.
Если
используется
readline и
включена
опция
оболочки
histreedit, то
неудачная
подстановка
истории
перезагружается
в буфер
редактирования
readline для
исправления.
Опция -p
для
встроенной
команды history
показывает,
что будет
делать
расширение
истории
перед её
использованием.
Опция -s для
встроенной
команды history
добавит
команды в
конец
списка
истории
без их
фактического
выполнения,
чтобы они
были
доступны
для
последующего
вызова.
Оболочка
позволяет
управлять
различными
символами,
используемыми
механизмом
расширения
истории
(смотрите
описание
histchars выше в
подразделе
Переменные
оболочки).
Оболочка
использует
символ
комментария
к истории
для
обозначения
временных
меток
истории
при записи
файла
истории.
Указатели
событий
Указатель
события -
это ссылка
на запись в
списке
истории.
Указатель
события
состоит из
части
слова,
начинающейся
с символа
расширения
истории и
заканчивающейся
указателем
слова, если
оно
присутствует,
или
окончанием
слова. Если
ссылка не
является
абсолютной,
то события
отображаются
относительно
текущего
положения
в списке
истории.
- !
- Запустить
подстановку
в истории,
за
исключением
случаев,
когда за
ней
следуют
пробел blank,
новая
строка,
возврат
каретки, =
или, когда
опция
оболочки
extglob
включена с
помощью
встроенной
команды shopt,
(.
- !n
- Обратиться
к записи
списка
истории n.
- !-n
- Обратиться
к текущей
записи за
вычетом n.
- !!
- Обратиться
к
предыдущей
записи. Это
синоним
слова “!-1”.
- !string
- Обратится
к самой
последней
команде,
предшествующей
текущей
позиции в
списке
истории,
начинающейся
со строки
string.
- !?string[?]
- Обратиться
к самой
последней
команде,
предшествующей
текущей
позиции в
списке
истории,
содержащей
строку string.
Конечная
буква ?
может быть
опущена,
если за string
сразу
следует
новая
строка.
Если string
отсутствует,
то
используется
строка из
самого
последнего
поиска;
если
предыдущей
строки
поиска нет,
то это
ошибка.
- ^string1^string2^
- Быстрая
замена.
Повторить
предыдущую
команду,
заменив
строку string1
на строку
string2.
Эквивалентно
“!!:s^string1^string2^”
(смотрите
подраздел
Модификаторы
ниже).
- !#
- На данный
момент
введена
вся
командная
строка
целиком.
Указатели
слова
Указатели
слов
используются
для выбора
нужных
слов из
события.
Они
необязательны;
если
указатель
слова не
указан, то в
расширении
истории
используется
всё
событие
целиком.
Символ :
отделяет
спецификацию
события от
обозначения
слова. Он
может быть
опущен,
если
укзатель
слова
начинается
с ^, $, *, - или
%. Слова
нумеруются
с начала
строки,
причем
первое
слово
обозначается
0 (ноль).
Слова
вставляются
в текущую
строку
через
одинарные
пробелы.
- 0 (zero)
- Нулевое
слово. Для
оболочки
это
командное
слово.
- n
- Слово n.
- ^
- Первый
аргумент:
слово word 1.
- $
- Последнее
слово.
Обычно это
последний
аргумент,
но он
расширяется
до
нулевого
слова, если
в строке
есть
только
одно
слово.
- %
- Первое
слово,
совпадающее
с самым
последним
“?string?”
выполнять
поиск, если
строка
поиска
начинается
с символа,
который
является
частью
слова. По
умолчанию
поиск
начинается
с конца
каждой
строки и
продолжается
до начала,
поэтому
первое
найденное
слово
находится
ближе
всего к
концу
строки.
- x-y
- Диапазон
слов; “-y”
сократить
“0-y”.
- *
- Все слова,
кроме
нулевого.
Это
синоним
слова “1-$”.
Использовать
*, если в
событии
есть
только
одно слово,
то это не
является
ошибкой; в
этом
случае оно
расширяется
до пустой
строки.
- x*
- Сокращение
x-$.
- x-
- Сокращает
x-$ как x*, но
опускает
последнее
слово. Если
x
отсутствует,
то по
умолчанию
оно равно 0.
Если
обозначение
слова
указано
без
указания
события, то
в качестве
события
используется
предыдущая
команда,
эквивалентно
!!.
Модификаторы
После
необязательного
указателя
слова,
расширение
может
включать
последовательность
из одного
или
нескольких
следующих
модификаторов,
каждому из
которых
предшествует
“:”. Они
изменяют
или
редактируют
слово или
фразы,
выбранные
из истории
событий.
- h
- Удалить
завершающий
компонент
названия
пути,
оставив
только
заголовок.
- t
- Удалить
все
начальные
компоненты
названия
пути,
оставив
только
концевые.
- r
- Удалить
завершающий
суффикс
формы .xxx,
оставив
основное
название.
- e
- Удалить
все, кроме
завершающего
суффикса.
- p
- Вывести
новую
команду, но
не
выполнять
ее.
- q
- Закавычивать
замененные
слова, но
избегать
дальнейших
замен.
- x
- Замененные
слова
заключить
в кавычки,
как в q, но
разбить на
слова в
пробелах
blanksи в новой
строке.
Модификаторы
q и x
являются
взаимоисключающими;
при
расширении
используется
последний
из них.
- s/old/new/
- Заменить
старое old
на новое new
вместо
первого
символа в
строке
событий. В
качестве
разделителя
вместо /
может
использоваться
любой
символ.
Последний
разделитель
необязателен,
если он
является
последним
символом в
строке
событий.
Разделители
в old и new
заключены
в
одиночную
обратную
косую
черту. Если
в new
появляется
символ &, то
он
заменяется
на old.
Одиночная
обратная
косая
черта
заключает
& в кавычки.
Если
значение
old равно
нолю, то
оно
устанавливается
равным
последней
замене old
или, если
предыдущие
замены в
истории не
выполнялись,
то
последней
замене string в
поиске
!?string[?]. Если
значение
new равно
нолю, то
все
совпадающие
значения
old
удаляются.
- &
- Повторить
предыдущую
замену.
- g
- Вызывает
применение
изменений
ко всей
строке
событий.
Используется
в
сочетании
с “:s”
(например,
“:gs/old/new/”)
или “:&”.
При
использовании
с “:s”,
вместо /
можно
использовать
любой
разделитель,
а
последний
разделитель
необязателен,
если он
является
последним
символом
строки
события.
Символ a
может
использоваться
как
синоним
символа g.
- G
- Применить
следующие
“s” или
“&”
изменить
один раз
каждое
слово в
строке
событий.
ВСТРОЕННЫЕ
КОМАНДЫ
ОБОЛОЧКИ
Если не
указано
иное,
каждая
встроенная
команда,
описанная
в этом
разделе
как
принимающая
опции,
перед
которыми
стоит -,
принимает
-- для
обозначения
конца
опций.
Встроенные
команды :
true, false и test/[ не
принимают
опции и не
обрабатывают
-- особым
образом.
Встроенные
команды exit,
logout, return, break, continue, let
и shift
принимают
и
обрабатывают
аргументы,
начинающиеся
с -, не
требуя --.
Другие
встроенные
команды,
которые
принимают
аргументы,
но не
указаны
как
принимающие
опции,
интерпретируют
аргументы,
начинающиеся
с -, как
недопустимые
опции и
требуют --
для
предотвращения
такой
интерпретации.
- : [arguments]
- Никакого
действия;
команда не
выполняет
ничего,
кроме
расширения
аргументов
arguments и
выполнения
любых
указанных
перенаправлений.
Статус
возврата
равен
нулю.
- . [-p path] filename [arguments]
- source [-p
path] filename [arguments]
- Команда .
(source)
считывает
и
выполняет
команды из
файла с
названием
filename в
текущей
среде
оболочки и
возвращает
статус
завершения
последней
команды,
выполненной
из filename.
- Если файл
filename не
содержит
косой
черты, то .
выполняет
поиск для
него. Если
указана
опция -p, то
.
рассматривает
path как
список
каталогов,
разделенных
двоеточием,
в которых
можно
найти файл
filename; в
противном
случае .
использует
записи в
PATH, чтобы
найти
каталог,
содержащий
filename. Файл filename
не
обязательно
должен
быть
исполняемым.
Когда bash не
находится
в режиме posix,
тогда она
выполняет
поиск в
текущем
каталоге,
если filename не
найден в
PATH, то она
не
выполняет
поиск в
текущем
каталоге,
если
указана
опция -p.
Если опция
sourcepath для
встроенной
команды shopt
отключена,
то . не
выполняет
поиск в
PATH.
- Если
указаны
какие-либо
аргументы
arguments, то они
становятся
позиционными
параметрами
при
выполнении
файла с
названием
filename. В
противном
случае
позиционные
параметры
остаются
неизменными.
- Если опция
-T
включена,
то .
наследует
любую
ловушку в
DEBUG; если это
не так, то
любая
строка
ловушки DEBUG
сохраняется
и
восстанавливается
при вызове
., а .
отключает
ловушку DEBUG
во время ее
выполнения.
Если
значение -T
не задано,
а исходный
файл
изменяет
ловушку DEBUG,
то новое
значение
сохраняется
после
завершения
..
Возвращаемый
статус -
это статус
последней
команды,
выполненной
из файла filename
(0, если
команды не
выполняются)
и
ненулевое
значение,
если файл
filename не
найден или
он не может
быть
прочитан.
- alias [-p]
[name[=value] ...]
- Без
аргументов
или с
опцией -p,
команда alias
выводит на
стандартный
вывод
список
псевдонимов
в виде alias
name=value . Когда
будут
предоставлены
аргументы,
то
определяет
псевдоним
для
каждого
названия
name, для
которого
задано
значение
value. Пробел в
конце value
приводит к
проверке
следующего
слова на
подстановку
псевдонима,
когда
псевдоним
раскрывается
во время
синтаксического
анализа
команды.
Для
каждого name
в списке
аргументов,
для
которого
не указано
value, выводит
название и
значение
псевдонима
для name.
Команда
aliasвозвращает
значение true,
если не
задано
значение
name (без
соответствующего
=value), для
которого
не был
определен
псевдоним.
- bg [jobspec
...]
- Возобновлять
каждое
приостановленное
задание jobspec
в фоновом
режиме, как
если бы оно
было
запущено с
помощью &.
Если jobspec
отсутствует,
то
оболочка
использует
свое
представление
о текущем
задании current
job. bg jobspec
возвращает
0, если не
выполняется
(когда
управление
заданиями
отключено)
или при
запуске с
включенным
управлением
заданиями,
когда
любое
указанное
в jobspec не было
найдено
или было
запущено
без
управления
заданиями.
- bind [-m
keymap] [-lsvSVX]
- bind [-m
keymap] [-q function] [-u function]
[-r keyseq]
- bind [-m
keymap] -f filename
- bind [-m
keymap] -x keyseq[:] shell-command
- bind [-m
keymap] keyseq:function-name
- bind [-m
keymap] -p|-P [readline-command]
- bind [-m
keymap] keyseq:readline-command
- bind
readline-command-line
- Отображать
текущие
привязки
клавиш и
функций readline,
привязывать
последовательность
клавиш к
функции
или
макросу readline
или к
команде
оболочки
или
устанавливать
переменную
readline. Каждый
аргумент,
не
являющийся
опцией,
является
привязкой
клавиши
или
командой,
как это
было бы
показано в
файле
инициализации
readline .inputrc, но
каждая
привязка
или
команда
должны
передаваться
как
отдельный
аргумент;
например,
*'"\C-x\C-r": re-read-init-file'. В
следующих
описаниях
выходные
данные,
доступные
для
повторного
чтения,
форматируются
в виде
команд,
которые
отображаются
в файле
инициализации
readline или
которые
предоставляются
в качестве
отдельных
аргументов
для
команды bind.
Параметры,
если они
указаны,
имеют
следующие
значения:
- -m keymap
- Использовать
keymap в
качестве
плана
расположения
клавиш, на
который
будут
влиять
последующие
привязки.
Допустимыми
названиями
для keymap
являются emacs,
emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move, vi-command
и вставка
vi-insert. vi
эквивалентно
vi-command (vi-move также
является
синонимом);
emacs
эквивалентно
emacs-standard.
- -l
- Список
всех
функций
readline.
- -p
- Отображать
названия
функций и
привязки
readline таким
образом,
чтобы их
можно было
использовать
в качестве
аргумента
для
последующей
команды bind
или в файле
инициализации
readline. Если
аргументы
остаются
после
обработки
опций, то bind
обрабатывает
их как
названия
команд readline и
ограничивает
вывод
этими
названиями.
- -P
- Вывести
список
текущих
названий
функций и
привязок
readline. Если
после
обработки
опций
остаются
аргументы,
то bind
обрабатывает
их как
названия
команд readline и
ограничивает
вывод
этими
названиями.
- -s
- Вывести на
дисплей
последовательности
клавиш readline,
привязанные
к макросам
и строки,
которые
они
выводят,
таким
образом,
чтобы их
можно было
использовать
в качестве
аргумента
для
последующей
команды bind
или в файле
инициализации
readline.
- -S
- Вывести на
дисплей
последовательности
клавиш readline,
привязанные
к макросам,
и строки,
которые
они
выводят.
- -v
- Вывести на
дисплей
названия и
значения
переменных
readline таким
образом,
чтобы их
можно было
использовать
в качестве
аргумента
для
последующей
команды bind
или в файле
инициализации
readline.
- -V
- Показать
текущие
названия и
значения
переменных
readline.
- -f
filename
- Прочитать
привязки
клавиш из
файла filename.
- -q
function
- Вывести на
дисплей
последовательности
клавиш,
которые
вызывают
наименования
функций readline
function.
- -u
function
- Отменить
привязку
всех
клавишных
последовательностей,
привязанных
к
именованным
функциям
readline function.
- -r keyseq
- Удалить
все
текущие
привязки
для keyseq.
- -x keyseq[:
]shell-command
- Приводит к
тому, что
команда
оболочки
shell-command будет
выполняться
всякий раз,
когда
вводится
набор
клавиш keyseq.
Разделителем
между keyseq и
shell-command
является
либо
пробел,
либо
двоеточие,
за которым
при
необходимости
следует
пробел.
Если
разделителем
является
пробел, то
команда
shell-command должна
быть
заключена
в двойные
кавычки, а
readline
расширяет
любой из
своих
специальных
вариантов
обратной
косой
чертой в
shell-command перед
сохранением.
Если
разделителем
является
двоеточие,
то любые
заключающие
двойные
кавычки
необязательны,
а readline не
раскрывает
командную
строку
перед ее
сохранением.
Поскольку
все
выражение
привязки
клавиши
должно
быть одним
аргументом,
то оно
должно
быть
заключено
в
одинарные
кавычки.
Когда
выполняется
shell-command,
командная
строка
устанавливает
для
переменной
READLINE_LINE
значение
содержимого
буфера
строк readline, а
для
переменных
READLINE_POINT и READLINE_MARK
- текущее
значение.
местоположения
точки
вставки и
сохраненной
точки
вставки
(метки),
соответственно.
Оболочка
присваивает
любой
числовой
аргумент,
указанный
пользователем,
в
переменной
READLINE_ARGUMENT. Если
аргумент
отсутствует,
то эта
переменная
не задана.
Если
выполненная
команда
изменит
значение
любого из
значений
READLINE_LINE, READLINE_POINT
или READLINE_MARK,
то эти
новые
значения
будут
отражены в
состоянии
редактирования.
- -X
- Вывести
все
последовательности
клавиш,
привязанные
к командам
оболочки, и
связанные
с ними
команды в
формате,
который
можно
повторно
использовать
в качестве
аргумента
для
последующей
команды bind.
Возвращаемое
значение
равно 0, если
только не
указана
нераспознанная
опция или
не
произошла
ошибка.
- break
[n]
- Выход из
циклов for, while,
until или select.
Если
указано
значение n,
то break
завершает
цикл,
указанный
n. n должно
быть ≥ 1.
Если n
больше, чем
количество
замкнутых
циклов, все
замкнутые
циклы
завершаются.
Возвращаемое
значение
равно 0,
если
только n не
больше или
не равно 1.
- builtin
shell-builtin [arguments]
- Выполнить
указанную
встроенную
команду
оболочки
shell-builtin,
передав ей
аргументы
arguments и
вернуть
статус
завершения.
Это
полезно
при
определении
функции,
название
которой
совпадает
с
названием
встроенной
команды
оболочки,
сохраняя
функциональность
встроенной
команды
оболочки
внутри
функции.
Встроенная
команда cd
обычно
переопределяется
таким
образом.
Возвращаемое
значение
равно false,
если
команда
shell-builtin не
является
встроенной
командой
оболочки.
- caller
[expr]
- Возвращает
контекст
любого
активного
вызова
подпрограммы
(функции
оболочки
или
сценария,
выполняемого
с помощью
встроенных
команд .
или source).
- Без expr,
вызов caller
отображает
номер
строки и
название
исходного
файла
текущего
вызова
подпрограммы.
Если в
качестве
expr указано
неотрицательное
целое
число, то caller
отображает
номер
строки,
название
подпрограммы
и исходный
файл,
соответствующие
этой
позиции в
текущем
стеке
выполняемых
вызовов.
Эта
дополнительная
информация
может быть
использована,
например,
для вывода
трассировки
стека.
Текущим
кадром
является
кадр 0.
- Возвращаемое
значение
равно 0,
если
только
оболочка
не
выполняет
вызов
подпрограммы
или
выражение
expr не
соответствует
допустимой
позиции в
стеке
вызовов.
- cd [-L] [-@] [dir]
- cd -P [-e]
[-@] [dir]
- Изменить
текущий
каталог на
каталог dir.
Если
каталог dir
не указан,
то
значение
переменной
оболочки
HOME
используется
как dir.
Если
существует
переменная
CDPATH и dir не
начинается
с косой
черты (/), то cd
использует
ее в
качестве
пути
поиска:
оболочка
выполняет
поиск по
каждому
названию
каталога в
CDPATH в
поисках
dir.
Альтернативные
названия
каталогов
в CDPATH
разделяются
двоеточием
(:). Пустое
название
каталога в
CDPATH
совпадает
с текущим
каталогом,
т.е., “.”.
- Опция -P
заставляет
cd
использовать
физическую
структуру
каталогов,
разрешая
символьные
ссылки при
обходе dir и
перед
обработкой
экземпляров
.. в dir
(смотрите
также
опцию -P
для
встроенной
команды set).
- Опция -L
заставляет
cd
переходить
по
символическим
ссылкам,
разрешая
ссылку
после
обработки
экземпляров
.. в dir. Если ..
появляется
в dir, то cd
обрабатывает
его, удаляя
непосредственно
предшествующий
компонент
названия
пути из dir,
возвращая
косую
черту или
начало dir и
проверяя,
что часть
dir, которую
она
обработала
до этого
момента,
все еще
является
допустимым
названием
каталога
после
удаления
компонента
названия
пути. Если
это
неверное
название
каталога,
то cd
возвращает
ненулевой
статус.
Если не
указано ни
-L, ни -P, то cd
ведет себя
так, как
если бы
было
указано -L.
- Если для
опции -e
задано -P, и
cd не
удается
успешно
определить
текущий
рабочий
каталог
после
успешной
смены
каталога,
то она
возвращает
ненулевой
статус.
- В системах,
которые
это
поддерживают,
опция -@
представляет
расширенные
атрибуты,
связанные
с файлом, в
виде
каталога.
- Аргумент -
преобразуется
в $OLDPWD перед
попыткой
изменения
каталога.
- Если cd
использует
непустое
название
каталога
из CDPATH или
если -
является
первым
аргументом,
а
изменение
каталога
прошло
успешно, то
cd
записывает
абсолютный
путь к
новому
рабочему
каталогу в
стандартный
вывод.
- Если
изменение
каталога
прошло
успешно, то
cd
присваивает
переменной
среды PWD
значение
нового
названия
каталога, а
переменной
среды OLDPWD
присваивает
значение
текущего
рабочего
каталога
перед
изменением.
- Возвращаемое
значение
равно true,
если
каталог
был
успешно
изменен; в
противном
случае - false.
- command
[-pVv] command [arg ...]
- Встроенная
команда command
запускает
command с
аргументом
args,
подавляя
обычный
поиск
функции
оболочки
для command.
Выполняются
только
встроенные
команды
или
команды,
найденные
в PATH с
названием
command. Если
указана
опция -p, то
поиск command
выполняется
с
использованием
значения
по
умолчанию
для PATH,
которое
гарантированно
позволяет
найти все
стандартные
утилиты.
- Если
указана
опция -V
или -v, то
команда command
выводит
описание
command. Опция -v
отображает
одно слово,
обозначающее
команду
или
название
файла,
используемые
для вызова
command; опция -V
предоставляет
более
подробное
описание.
- Если
указана
опция -V
или -v, то
статус
завершения
равен нулю,
если command
была
найдена и
отличен от
нуля, если
нет. Если
ни одна из
опций не
указана и
произошла
ошибка или
command не может
быть
найдена, то
статус
завершения
равен 127. В
противном
случае
статус
завершения
встроенной
команды command
совпадает
со
статусом
завершения
command.
- compgen
[-V varname] [option] [word]
- Создавать
возможные
совпадения
по
завершению
для слова
word в
соответствии
с опциями
option, которые
могут быть
любыми
опциями,
принятыми
для
встроенной
команды complete,
за
исключением
опций -p, -r, -D,
-E и -I и
вывести
совпадения
на
стандартный
вывод.
- Если
указана
опция -V, то
команда compgen
сохраняет
созданные
завершения
в
переменной
индексированного
массива varname
вместо
того, чтобы
выводить
их на
стандартный
вывод.
- При
использовании
опций -F
или -C
различные
переменные
оболочки,
заданные
программируемыми
средствами
завершения,
хотя и
доступны,
но не будут
иметь
полезных
значений.
- Совпадения
будут
созданы
также, как
если бы
программируемый
код
завершения
создал их
непосредственно
из
спецификации
завершения
с теми же
флагами.
Если
указано
значение
слова word, то
будут
выведены
или
сохранены
только те
завершения,
которые
соответствуют
слову word.
- Возвращаемое
значение
равно true,
если
только не
была
указана
недопустимая
опция или
не было
сгенерировано
никаких
критериев.
- complete
[-abcdefgjksuv] [-o comp-option] [-DEI]
[-A action]
-
[-G globpat] [-W wordlist] [-F
function] [-C command]
[-X filterpat] [-P prefix] [-S
suffix] name [name ...]
- complete
-pr [-DEI] [name ...]
- Указать,
как должны
быть
заполнены
аргументы
для
каждого
именования
name.
- Если
указана
опция -p
или если не
указаны
никакие
опции, или
слова name, то
распечатать
существующие
спецификации
завершения
таким
образом,
чтобы их
можно было
повторно
использовать
в качестве
входных
данных.
Опция -r
удаляет
спецификацию
завершения
для
каждого
именования
name или, если
name не
указаны, то
все
спецификации
завершения.
- Опция -D
указывает
на то, что
другие
предоставленные
опции и
действия
должны
применяться
к “default”
завершению
команды; то
есть к
попытке
завершения
команды,
для
которой
ранее не
было
определено
завершение.
Опция -E
указывает,
что другие
предоставленные
опции и
действия
должны
применяться
к “empty”
завершению
команды; то
есть
попытке
завершения
пустой
строки.
Опция -I
указывает
на то, что
другие
предоставленные
опции и
действия
должны
применяться
к
завершению
начального
слова в
строке, не
связанного
с
назначением,
или после
разделителя
команд,
такого как
; или |,
которое
обычно
является
завершением
названия
команды.
Если
указано
несколько
опций, то
опция -D
имеет
приоритет
перед
опцией -E, а
обе опции
имеют
приоритет
перед
опцией -I.
Если
указан
какой-либо
из
аргументов
-D, -E или -I, то
любые
другие
аргументы
name
игнорируются;
эти
завершения
применяются
только к
регистру,
указанному
опцией.
- Описан
процесс
применения
этих
спецификаций
завершения
при
попытке
завершения
слова above under Programmable
Completion.
- Другие
опции, если
они
указаны, то
имеют
следующие
значения.
Аргументы
опций -G, -W и
-X (и, при
необходимости,
опций -P и -S)
должны
быть
заключены
в кавычки,
чтобы
защитить
их от
расширения
до вызова
встроенной
команды
complete.
- -o
comp-option
- Опция comp-option
управляет
несколькими
аспектами
поведения
compspec, помимо
простого
создания
дополнений.
Опция comp-option
может быть
одной из:
- bashdefault
- Выполните
остальные
действия
по
умолчанию
для
оболочки
bash, если compspec не
генерирует
совпадений.
- default
- Используйте
заполнение
названия
файла по
умолчанию
readline, если
спецификация
завершения
не
генерирует
совпадений.
- dirnames
- Выполнить
заполнение
названия
каталога,
если
спецификация
завершения
(compspec) не
генерирует
критериев
соответствия.
- filenames
- Сообщить
readline, что
спецификация
завершения
генерирует
названия
файлов,
поэтому
она может
выполнять
любую
обработку,
связанную
с
названиями
файлов
(например,
добавить
косую
черту к
названиям
каталогов,
заключить
специальные
символы в
кавычки
или
подавитьь
пробелы в
конце). Это
предназначено
для
использования
с
функциями
оболочки.
- fullquote
- Сообщить
readline
заключать
в кавычки
все
завершенные
слова, даже
если они не
являются
названиями
файлов.
- noquote
- Сообщить
readline, чтобы
она не
заключала
завершенные
слова в
кавычки,
если они
являются
названиями
файлов (по
умолчанию
названия
файлов
заключаются
в кавычки).
- nosort
- Сообщить
readline, чтобы
она не
сортировала
список
возможных
дополнений
в
алфавитном
порядке.
- nospace
- Сообщить
readline, чтобы
она не
добавляла
пробел (по
умолчанию)
к словам,
завершенным
в конце
строки.
- plusdirs
- После
генерации
всех
совпадений,
определенных
спецификацией
завершения,
попробовать
заполнить
название
каталога и
добавить
все
совпадения
к
результатам
других
действий.
- -A action
- Это
действие
action может
быть одним
из
следующих
при
создании
списка
возможных
завершений:
- alias
- Псевдонимы.
Они также
могут быть
определены
с помощью
-a.
- arrayvar
- Названия
переменных
массива.
- binding
- Названия
привязанных
клавиш Readline.
- builtin
- Названия
встроенных
команд
оболочки.
Они также
могут быть
определены
с помощью
-b.
- command
- Названия
команд. Они
также
могут быть
определены
с помощью
-c.
- directory
- Названия
каталогов.
Они также
могут быть
определены
с помощью
-d.
- disabled
- Названия
отключенных
встроенных
компонентов
оболочки.
- enabled
- Названия
включённых
встроенных
компонентов
оболочки.
- export
- Названия
экспортируемых
переменных
оболочки.
Они также
могут быть
определены
с помощью
-e.
- file
- Названия
файлов и
каталогов,
аналогичные
завершению
названия
файла readline.
Также
может быть
указано
как -f.
- function
- Названия
функций
оболочки.
- group
- Названия
групп. Для
этого
также
может
использоваться
-g.
- helptopic
- Разделы
справки,
принятые
во
встроенной
команде help.
- hostname
- Названия
хостов,
взятые из
файла,
указанного
в
переменной
оболочки
HOSTFILE.
- job
- Названия
заданий,
если
управление
заданиями
активно.
Также
может
использоваться
-j.
- keyword
- Зарезервированные
слова
оболочки.
Также
может
использоваться
-k.
- running
- Названия
запущенных
заданий,
если
управление
заданиями
активно.
- service
- Названия
служб.
Также
может
использоваться
-s.
- setopt
- Допустимые
аргументы
для опции
-o для
встроенной
командыset.
- shopt
- Названия
опций
оболочки,
принятые
во
встроенной
команде
shopt.
- signal
- Названия
сигналов.
- stopped
- Названия
остановленных
заданий.
Если
управление
заданиями
активно.
- user
- Имена
пользователей.
Может
также
использоваться
-u.
- variable
- Названия
переменных
оболочки.
Может
также
использоваться
-v.
- -C
command
- Команда command
выполняется
в
окружающей
среде
подоболочки,
а ее
выходные
данные
используются
в качестве
возможных
завершений.
Аргументы
передаются
также, как
с помощью
опции -F.
- -F function
- Функция
оболочки
function
выполняется
в текущей
среде
оболочки.
Когда
функция
выполняется,
тогда
первый
аргумент
($1) - это
название
команды,
аргументы
которой
завершаются,
второй
аргумент
($2) - это
завершаемое
слово, а
третий
аргумент
($3) - это
слово,
предшествующее
завершению
слова в
текущей
командной
строке.
Когда
функция function
завершается,
тогда
программируемое
завершение
извлекает
возможные
завершения
из
значения
переменной
массива
COMPREPLY.
- -G
globpat
- Развернуть
шаблон
расширения
названия
пути globpat,
чтобы
создать
возможные
завершения.
- -P prefix
- Добавить
префикс prefix
в начало
каждого
возможного
завершения
после того,
как будут
применены
все
остальные
опции.
- -S suffix
- Добавить
суффикс suffix
к каждому
возможному
завершению
после того,
как были
применены
все
остальные
опции.
- -W
wordlist
- Разделить
список
слов wordlist,
используя
символы в
специальной
переменной
IFS в
качестве
разделителей
и
расширить
каждое
получившееся
слово. В
списке
слов В wordlist
используются
кавычки
оболочки,
чтобы
обеспечить
механизм,
позволяющий
словам
содержать
метасимволы
оболочки
или
символы в
значении
IFS.
Возможными
завершениями
являются
элементы
результирующего
списка,
которые
соответствуют
префиксу
завершаемого
слова.
- -X
filterpat
- Шаблон filterpat -
это шаблон,
используемый
для
расширения
имени пути.
Он
применяется
к списку
возможных
дополнений,
сгенерированному
предыдущими
опциями и
аргументами,
и каждое
завершение,
соответствующее
filterpat,
удаляется
из списка.
Начальный
символ ! в
filterpat
отменяет
шаблон; в
этом
случае
любое
завершение,
не
соответствующее
filterpat,
удаляется.
Возвращаемое
значение
равно true,
если не
указана
недопустимая
опция или
опция,
отличная
от -p, -r, -D, -E,
или -I, не
указанная
без
аргумента
name,
выполняется
попытка
чтобы
удалить
спецификацию
завершения
для name, для
которой не
существует
спецификации,
или при
добавлении
спецификации
завершения
возникает
ошибка.
- compopt
[-o option] [-DEI] [+o option]
[name]
- Изменить
опции
завершения
для
каждого name
в
соответствии
с опциями
option или для
выполняемого
в данный
момент
завершения,
если не
указаны
именования
name. Если не
указаны
опции option, то
отобразить
опции
завершения
для
каждого name
или
текущего
завершения.
Возможные
значения
опции option
являются
действительными
для
встроенной
команды complete,
описанной
выше.
- Опция -D
указывает
на то, что
другие
предоставленные
опции
должны
применяться
к “default”
команде
завершения;
опция -E
указывает,
что другие
предоставленные
опции
должны
применяться
к “empty”
команде
завершения;
а опция -I
указывает,
что для
завершения
начального
слова в
строке
должны
применяться
другие
предоставленные
опции. Они
определяются
таким же
образом,
как и для
встроенной
команды
complete.
- Если
указано
несколько
опций, то
опция -D
имеет
приоритет
перед
опцией -E, а
обе опции
имеют
приоритет
перед
опцией -I.
- Возвращаемое
значение
равно true,
если
только не
указана
недопустимая
опция, не
предпринята
попытка
изменить
опции для
name, для
которого
не
существует
спецификации
завершения,
или не
произошла
ошибка
вывода.
- continue
[n]
- Команда continue
возобновляет
следующую
итерацию
замкнутого
цикла for, while,
until или select.
Если
указано
значение n,
то bash
возобновляет
n-й
замкнутый
цикл.
Значение n
должно
быть ≥ 1.
Если n
больше, чем
количество
замкнутых
циклов, то
оболочка
возобновляет
последний
замкнутый
цикл
(следующий
“top-level” цикл).
Возвращаемое
значение
равно 0,
если
только
значение n
не больше
или не
равно 1.
- declare
[-aAfFgiIlnrtux] [-p] [name[=value]
...]
- typeset
[-aAfFgiIlnrtux] [-p] [name[=value]
...]
- Объявить
переменные
и/или
присвоить
им
атрибуты.
Если
именования
name не
заданы, то
отобразить
значения
переменных
или
функций.
Опция -p
отобразит
атрибуты и
значения
каждого
именования
name. Когда -p
используется
с
аргументами
name, тогда
дополнительные
опции,
отличные
от -f и -F,
игнорируются.
- Если опция
-p указана
без
аргументов
name, то declare
отобразит
атрибуты и
значения
всех
переменных,
имеющих
атрибуты,
указанные
в
дополнительных
опциях.
Если в -p не
указано
никаких
других
опций, то в
declare будет
отображаться
атрибуты и
значения
всех
переменных
оболочки.
Опция -f
ограничивает
отображение
функциями
оболочки.
- Опция -F
запрещает
отображение
определений
функций;
выводятся
только
название
функции и
атрибуты.
Если опция
оболочки
extdebug
включена с
помощью shopt,
то также
отображаются
название
исходного
файла и
номер
строки, в
которых
определено
каждое name.
Опция -F
подразумевает
-f.
- Опция -g
заставляет
создавать
или
изменять
переменные
в
глобальной
области
видимости,
даже если
команда declare
выполняется
в функции
оболочки.
Она
игнорируется,
если declare не
выполняется
в функции
оболочки.
- Опция -I
приводит к
тому, что
локальные
переменные
наследуют
атрибуты
(за
исключением
атрибута
nameref) и
значение
любой
существующей
переменной
с таким же
name в
окружающей
области
видимости.
Если
существующей
переменной
нет, то
локальная
переменная
изначально
не задана.
- Чтобы
ограничить
вывод
переменными
с
указанным
атрибутом
или
присвоить
переменным
атрибуты,
можно
использовать
следующие
опции:
- -a
- Каждая
переменная
name
является
индексированной
переменной
массива
(смотрите
подраздел
Массивы
above).
- -A
- Каждая name
является
переменной
ассоциативного
массива
(смотрите
Массивы
above).
- -f
- Каждое
именование
name
относится
к функции
оболочки.
- -i
- Переменная
обрабатывается
как целое
число;
арифметическое
значение
(смотрите в
разделе
АРИФМЕТИЧЕСКИЕ
ВЫЧИСЛЕНИЯ
above)
выполняется,
когда
переменной
присваивается
значение.
- -l
- Когда
переменной
присваивается
значение,
все
символы
верхнего
регистра
преобразуются
в строчные.
Атрибут
верхнего
регистра
отключен.
- -n
- Присвоить
каждой
переменной
name атрибут
nameref, сделав
его
ссылкой на
другую
переменную.
Эта другая
переменная
определяется
значением
name. Все
ссылки,
присвоения
и
модификации
атрибутов
name, за
исключением
тех,
которые
используют
или
изменяют
сам
атрибут -n,
выполняются
для
переменной,
на которую
ссылается
значение
name. Атрибут
nameref не может
быть
применен к
переменным
массива.
- -r
- Сделать
названия
name
доступными
только для
чтения. В
этом
случае
этим
названиям
нельзя
будет
присвоить
значения с
помощью
последующих
инструкций
присваивания
или
отменить
их.
- -t
- Присвоить
каждому name
атрибут trace.
Отслеживаемые
функции
наследуют
ловушки DEBUG
и RETURN от
вызывающей
оболочки.
Атрибут trace
не имеет
специального
значения
для
переменных.
- -u
- Когда
переменной
присваивается
значение,
все
строчные
символы
преобразуются
в
прописные.
Атрибут
нижнего
регистра
отключен.
- -x
- Отметить
каждое name
для
экспорта в
последующие
команды
через
окружающую
среду.
Используется
“+” вместо
“-” вместо
этого
отключить
указанный
атрибут, за
исключением
того, чтобы
+a и +A не
могли
использоваться
для
уничтожения
переменных
массива, а +r
не удалять
атрибут
только для
чтения.
При
использовании
в функции,
команды declare
и typeset делают
каждое
значение name
локальным,
как в
случае с
командой
local, если
только не
указана
опция -g.
Если за
именованием
переменной
следует =value,
то
значение
переменной
устанавливается
равным
значению
value. При
использовании
-a или -A и
синтаксиса
составного
присваивания
для
создания
переменных
массива,
дополнительные
атрибуты
вступают в
силу
только
после их
присвоения.
Возвращаемое
значение
равно 0, если
не
обнаружена
недопустимая
опция,
тогда
предпринимается
попытка
определить
функцию с
помощью “-f
foo=bar”, попытки
присвоить
значение
переменной,
доступной
только для
чтения,
предпринимается
попытка
присвоить
значение
переменной
массива
без
использования
синтаксиса
составного
присвоения
(смотрите
Массивы above),
одно из names
не
является
допустимым
названием
переменной
оболочки,
предпринимается
попытка
отключить
статус
только для
чтения для
переменной
только для
чтения,
предпринимается
попытка
отключить
статус
массива
для
переменной
массива
или
предпринимается
попытка
отобразить
несуществующую
функцию с
помощью -f.
- dirs [-clpv]
[+n] [-n]
- При
отсутствии
опций
отображается
список
сохраненных
в данный
момент
каталогов.
По
умолчанию
отображается
одна
строка с
наименованиями
каталогов,
разделенными
пробелами.
Каталоги
добавляются
в список с
помощью
команды pushd;
команда popd
удаляет
записи из
списка.
Текущий
каталог
всегда
является
первым
каталогом
в стеке.
- Опции, если
они
указаны,
имеют
следующие
значения:
- -c
- Очищает
стек
каталогов,
удаляя все
записи.
- -l
- Создается
список с
использованием
полных
путей;
формат
списка по
умолчанию
использует
тильду для
обозначения
домашнего
каталога.
- -p
- Вывести
стек
каталогов
с одной
записью в
строке.
- -v
- Вывести
стек
каталогов
с одной
записью в
строке,
добавляя к
каждой
записи ее
индекс в
стеке.
- +n
- Вывести на
дисплей n-ю
запись,
начиная с
левой
части
списка,
отображаемого
с помощью
dirs при
вызове без
опций,
начиная с
нуля.
- -n
- Отобразить
n-ю запись,
начиная с
правой
части
списка,
отображаемого
с помощью
dirs при
вызове без
опций,
начинает с
нуля.
Возвращаемое
значение
равно 0, если
только не
указана
недопустимая
опция или
если n не
индексирует
за пределы
окончания
стека
каталогов.
- disown [-ar]
[-h] [id ...]
- Если нет
опций, то
удалить
все
идентификаторы
id из
таблицы
активных
заданий.
Каждый id
может быть
спецификацией
задания jobspec
или
идентификатором
процесса
pid; если id
является
pid, то disown
использует
задание,
содержащее
pid, как jobspec.
- Если
указана
опция -h, то
disown не
удаляет
задания,
соответствующие
каждому id,
из таблицы
заданий, а
помечает
их, чтобы
оболочка
не
отправляла
SIGHUP
заданию,
если
оболочка
получит
SIGHUP.
- Если опция
id не
указана, то
-a означает
удаление
или
пометку
всех
заданий;
опция -r
без
аргумента
id удаляет
или
помечает
запущенные
задания.
Если id не
указан и не
указаны ни
опция -a, ни
опция -r, то
disown удаляет
или
помечает
текущее
задание.
- Возвращаемое
значение
равно 0,
если
только в id
не указано
допустимое
задание.
- echo [-neE]
[arg ...]
- Ввести
аргументы
arg,
разделенные
пробелами,
за
которыми
следует
новая
строка.
Статус
возврата
равен 0,
если не
возникает
ошибка
записи.
Если
указано
значение
-n, то
завершающая
новая
строка не
выводится.
- Если
задана
опция -e, то
echo
интерпретирует
следующие
символы,
экранируемые
обратной
косой
чертой.
Опция -E
отключает
интерпретацию
этих
экранирующих
символов
даже в
системах,
где они
интерпретируются
по
умолчанию.
Опция
оболочки
xpg_echo
определяет,
интерпретировать
ли
какие-либо
опции echo и
расширять
ли эти
символы escape.
Команда echo
не
интерпретирует
-- как
окончание
опций.
- Команда echo
интерпретирует
следующие
последовательности
escape:
- \a
- сигнал
тревоги
(сирена)
- \b
- возврат на
один
символ
- \c
- подавлять
дальнейший
вывод
- \e
- \E
- экранирующий
символ
- \f
- новая
страница
- \n
- новая
строка
- \r
- возврат
каретки
- \t
- горизонтальная
табуляция
- \v
- вертикальная
табуляция
- \\
- обратная
косая
черта
- \0nnn
- Восьмиразрядный
символ,
значением
которого
является
восьмеричное
значение
nnn (от нуля
до трех
восьмеричных
цифр).
- \xHH
- Восьмибитный
символ,
значением
которого
является
шестнадцатеричное
значение HH
(одна или
две
шестнадцатеричные
цифры).
- \uHHHH
- Символ в
кодировке
Unicode (ISO/IEC 10646),
значением
которого
является
шестнадцатеричное
значение
HHHH (от одной
до четырех
шестнадцатеричных
цифр).
- \UHHHHHHHH
- Символ в
кодировке
Unicode (ISO/IEC 10646),
значением
которого
является
шестнадцатеричное
значение
HHHHHHHH (от одной
до восьми
шестнадцатеричных
цифр).
echo
записывает
все не
распознанные
символы,
экранированные
обратной
косой
чертой, без
изменений.
- enable
[-a] [-dnps] [-f filename] [name
...]
- Включение
и
отключение
встроенных
команд
оболочки.
Отключение
встроенной
команды
позволяет
запускать
исполняемый
файл с тем
же
названием,
что и у
встроенной
команды
оболочки,
без
указания
полного
пути, хотя
оболочка
обычно
выполняет
поиск
встроенных
команд
перед
файлами.
- Если
указано
значение
-n, каждое
значение
name
отключено;
в
противном
случае
значения
name
включены.
Например,
чтобы
использовать
двоичный
файл test,
найденный
с помощью
PATH, вместо
встроенной
версии
оболочки,
запустите
“enable -n test”.
- Если
аргументы
name не
указаны
или если
указана
опция -p, то
вывести
список
встроенных
команд
оболочки.
При
отсутствии
других
опций
список
будет
состоять
из всех
включенных
встроенных
команд
оболочки.
Если
указано
значение
-n, то
выводятся
только
отключенные
встроенные
команды.
Если
указано
значение
-a, то
выводимый
список
включает
все
встроенные
команды с
указанием
того,
включены
они или
нет. Опция
-s означает
ограничение
вывода на
POSIX special
встроенных
команд.
- Опция -f
означает
загрузку
новой
встроенной
команды с
названием
name из
общего
объекта filename
в системах,
поддерживающих
динамическую
загрузку.
Если filename не
содержит
косой
черты, то Bash
будет
использовать
значение
переменной
BASH_LOADABLES_PATH в
качестве
списка
каталогов,
разделенных
двоеточием,
в которых
будет
выполнен
поиск filename.
Значение
по
умолчанию
для BASH_LOADABLES_PATH
зависит от
системы и
может
включать
“.”
принудительный
поиск в
текущем
каталоге.
Опция -d
приведет к
удалению
встроенной
команды,
ранее
загруженной
с помощью
-f. Если -s
используется
с -f, то
новая
встроенная
команда
становится
POSIX
специальной
встроенной
командой.
- Если опции
не указаны
и name не
является
встроенной
командой
оболочки,
то enable
попытается
загрузить
name из
общего
объекта с
названием
name, как если
бы команда
была “enable -f name
name”.
- Возвращаемое
значение
равно 0,
если
только name
не
является
встроенным
в оболочку
или не
произошла
ошибка при
загрузке
нового
встроенного
файла из
общего
объекта.
- eval [arg
...]
- Объединить
аргументы
arg в одну
команду,
разделив
их
пробелами.
Затем Bash
считывает
и
выполняет
эту
команду и
возвращает
ее статус
завершения
как статус
возврата
eval. Если нет
аргументов
argsили есть
только
нулевые
аргументы,
то eval
возвращает
0.
- exec [-cl]
[-a name] [command [arguments]]
- Если
указана
команда command,
то она
заменяет
оболочку
без
создания
нового
процесса.
Команда command
не может
быть
встроенной
командой
оболочки
или
функцией.
Аргументы
arguments
становятся
аргументами
команды command.
Если
указана
опция -l, то
оболочка
ставит
тире в
начале
нулевого
аргумента,
передаваемого
в command. Это то,
что делает
login(1). Опция -c
приводит к
тому, что command
выполняется
с пустым
окружением.
Если
указано
значение
-a, то
оболочка
передает
именование
name в
качестве
нулевого
аргумента
выполняемой
команде.
- Если по
какой-либо
причине
команда command
не может
быть
выполнена,
то
завершается
работа
неинтерактивной
оболочки,
если
только не
включена
опция execfail. В
этом
случае она
возвращает
ненулевой
статус.
Интерактивная
оболочка
возвращает
ненулевой
статус,
если файл
не может
быть
выполнен.
Подоболочка
завершает
работу
безоговорочно,
если exec
завершается
ошибкой.
- Если
команда command
не
определена,
то в
текущей
оболочке
вступают в
силу любые
перенаправления,
а статус
возврата
равен 0.
Если
возникает
ошибка
перенаправления,
то статус
возврата
равен 1.
- exit
[n]
- Приводит к
завершению
работы
оболочки
со
статусом n.
Если n
опущено, то
статус
завершения
соответствует
последней
выполненной
команде.
Любая
ошибка в
EXIT
выполняется
до
завершения
работы
оболочки.
- export
[-fn] [name[=value]] ...
- export -p
[-f]
- Введенные
названия
names
помечаются
для
автоматического
экспорта в
среду
последующих
выполняемых
команд.
Если
задана
опция -f, то
названия
names
относятся
к
функциям.
- Опция -n
отменяет
экспорт
или
удаляет
атрибут export
из каждого
названия
name. Если
названия
names не
заданы или
указана
только
опция -p, то
export
отображает
список
названий
всех
экспортируемых
переменных
в
стандартном
выводе. При
совместном
использовании
-p и -f
отображаются
экспортированные
функции.
Опция -p
отображает
выходные
данные в
форме,
которая
может быть
повторно
использована
в качестве
входных
данных.
- Команда export
позволяет
задать
значение
переменной
при ее
экспорте
или не
экспорте,
указав
после
именования
переменной
значение
=value. При этом
значение
переменной
устанавливается
равным value, а
атрибут
"export"
изменяется.
Команда export
возвращает
статус
завершения,
равный 0,
если не
обнаружена
недопустимая
опция, одно
из
наименований
names не
является
допустимым
наименованием
переменной
оболочки
или если -f
содержит
название
name, которое
не
является
функцией.
- false
- Ничего не
делает;
возвращает
ненулевой
статус.
- fc [-e ename]
[-lnr] [first] [last]
- fc -s
[pat=rep] [cmd]
- Первая
форма
выбирает
диапазон
команд от
первой first
до
последней
last из
списка
истории и
отображает
или
редактирует
и повторно
выполняет
их. First и last
могут быть
указаны в
виде
строки
(чтобы
найти
последнюю
команду,
начинающуюся
с этой
строки) или
в виде
числа
(индекс в
списке
истории,
где
отрицательное
число
используется
как
смещение
от номера
текущей
команды).
- При выводе
списка
значение
first или last,
равное 0,
эквивалентно
-1, а
значение -0
эквивалентно
текущей
команде
(обычно
команде fc);
в
противном
случае
значение 0
эквивалентно
-1, а
значение -0
недопустимо.
Если
значение
last не
указано,
оно
устанавливается
в текущую
команду
для вывода
списка
(чтобы “fc -l -10”
вывести
последние
10 команд), а в
противном
случае,
вывести first.
Если first не
указано, то
для
редактирования
используется
предыдущая
команда, а
для вывода
-16.
- Если
указана
опция -l, то
команды
отображаются
в
стандартном
выводе.
Опция -n не
указывает
номера
команд при
выводе.
Опция -r
изменяет
порядок
следования
команд на
противоположный.
- В
противном
случае fc
вызывает
редактор с
названием
ename для
файла,
содержащего
эти
команды.
Если ename не
указано, то
fc
использует
значение
переменной
FCEDIT и
значение
EDITOR, если
FCEDIT не
задано.
Если ни
одна из
переменных
не задана,
то fc
использует
vi. Когда
редактирование
завершено,
fc
считывает
файл,
содержащий
отредактированные
команды и
эхо-сигналы,
и
выполняет
их.
- Во второй
форме fc
повторно
выполняет
команду command
после
замены
каждого
экземпляра
pat на rep.
Команда Command
интерпретируется
так же, как
first выше.
- Полезным
псевдонимом
для
использования
с fc
является
“r=fc”-s(dq" чтобы
при вводе
“r cc”
запускать
последнюю
команду,
начинающуюся
с “cc” и
выводить
“r”
повторно
для
выполнения
команду.
- Если
используется
первая
форма, то
возвращаемое
значение
равно нулю,
если
только не
встречается
недопустимая
опция или
если first или
last не
указывают
строки
истории
вне
диапазона.
При
редактировании
и
повторном
выполнении
файла
команды
возвращаемым
значением
является
значение
последней
выполненной
командой
или ошибка
(failure), если во
временном
файле
возникает
ошибка.
Если
используется
вторая
форма, то
возвращаемый
статус
соответствует
повторно
выполненной
команде,
если
только cmd
не
указывает
допустимую
запись в
истории, и
в этом
случае fc
возвращает
ненулевой
статус.
- fg
[jobspec]
- Вывести
задание jobspec
на
передний
план и
сделать
его
текущим
заданием.
Если jobspec
отсутствует,
то fg
использует
представление
оболочки о
текущем
задании current
job.
Возвращаемое
значение
соответствует
команде,
помещенной
на
передний
план или
ошибке при
запуске,
когда
управление
заданиями
отключено,
или при
запуске с
включенным
управлением
заданиями,
если jobspec не
указывает
допустимое
задание,
или jobspec
указывает
задание,
которое
было
запущено
без
управления
заданием.
- getopts
optstring name [arg ...]
- Команда getopts
используется
скриптами
и
функциями
оболочки
для
анализа
позиционных
параметров
и
получения
опций и их
аргументов.
optstring
содержит
символы
опции,
которые
необходимо
распознать;
если за
символом
следует
двоеточие,
то
ожидается,
что опция
будет
иметь
аргумент,
который
должен
быть
отделен от
неё
пробелом.
Двоеточие
и
вопросительный
знак не
могут
использоваться
в качестве
символов
опции.
- Каждый раз,
когда она
вызывается,
getopts
помещает
следующую
опцию в
переменную
оболочки
name,
инициализируя
name, если она
не
существует
и индекс
следующего
обрабатываемого
аргумента
в
переменную
OPTIND. OPTIND
инициализируется
значением 1
при каждом
вызове
оболочки
или
сценария
оболочки.
Когда для
опции
требуется
аргумент,
то getopts
помещает
этот
аргумент в
переменную
OPTARG.
- Оболочка
не
сбрасываетпеременную
OPTIND
автоматически;
она
должна
быть
сброшена
вручную
между
несколькими
вызовами
getopts в рамках
одного и
того же
вызова
оболочки,
чтобы
использовать
новый
набор
параметров.
- Когда она
достигает
конца
опций, getopts
завершает
работу с
возвращаемым
значением,
превышающим
ноль.
Значение
OPTIND равно
индексу
первого
аргумента,
не
включающего
опцию, а
значение
name равно ?.
- Команда getopts
обычно
анализирует
позиционные
параметры,
но если в
качестве
значений
arg указано
больше
аргументов,
то вместо
этого getopts
анализирует
их.
- Команда getopts
может
сообщать
об ошибках
двумя
способами.
Если
первый
символ optstring
является
двоеточием,то
getopts
использует
"тихий" silent
отчет об
ошибках.
При
нормальной
работе getopts
выводит
диагностические
сообщения
при
обнаружении
недопустимых
опций или
отсутствующих
аргументов
опций. Если
переменной
OPTERR
присвоено
значение 0,
то getopts не
выводит
никаких
сообщений
об ошибках,
даже если
первый
символ optstring
не
является
двоеточием.
- Если
команда getopts
обнаруживает
недопустимую
опцию, то
она
помещает ?
в название
name и, если
"тихо" (silent) не
определено,
то выводит
сообщение
об ошибке и
сбрасывает
значение
OPTARG. Если же
"тихо"
определено,
то getopts
присваивает
найденному
символу
опции
значение
OPTARG и не
выводит
диагностическое
сообщение.
- Если
требуемый
аргумент
не найден,
а команда
getopts не
"тихая" , то
getopts
присваивает
значению
name знак
вопроса (?),
сбрасывает
OPTARG и
выводит
диагностическое
сообщение.
Если же getopts
"тихая", то
она
заменяет
значение
name
двоеточием
(:), а
значение
OPTARG -
найденным
символом
опции.
- getopts
возвращает
значение true,
если
найдена
указанная
или
неуказанная
опция.
Возвращает
значение false,
если
обнаружен
конец
списка
опций или
возникает
ошибка.
- hash [-lr]
[-p filename] [-dt] [name]
- Каждый раз,
когда
вызывается
hash, он
запоминает
полный
путь к
команде name,
определенный
путем
поиска в
каталогах
в $PATH. Все
ранее
запомненные
пути,
связанные
с name,
отбрасываются.
Если
указана
опция -p, то
hash
использует
название
filename в
качестве
полного
пути к
команде.
- Опция -r
приводит к
тому, что
оболочка
забывает
все
сохраненные
местоположения.
Присвоение
переменной
PATH также
очищает
все
хэшированные
названия
файлов.
Опция -d
приводит к
тому, что
оболочка
"забывает"
сохраненное
местоположение
каждого
файла name.
- Если
указана
опция -t, то
hash выводит
полный
путь,
соответствующий
каждому name.
Если
несколько
аргументов
name указаны
с помощью
-t, то hash
выводит name
перед
соответствующим
хэшированным
полным
путем.
Опция -l
отображает
выходные
данные в
формате,
который
может быть
повторно
использован
в качестве
входных
данных.
- Если
аргументы
не указаны
или указан
только -l,
то hash
выводит
информацию
о
запомненных
командах.
Опции -t, -d и
-p (опции,
которые
действуют
на
аргументы
name)
являются
взаимоисключающими.
Только
одна из них
будет
действующей.
Если
указано
более
одной
опции, то
опция -t
имеет
более
высокий
приоритет,
чем опция
-p и обе
опции
имеют
более
высокий
приоритет,
чем -d.
- Статус
возврата
равен нулю,
если
только name
не найдено
или не
определена
недопустимая
опция.
- help [-dms]
[pattern]
- Отображать
справочную
информацию
о
встроенных
командах.
Если
указано
значение
шаблон pattern ,
то команда
help
предоставляет
подробную
справку по
всем
командам,
соответствующим
шаблону,
как
описано
ниже; в
противном
случае
выводится
список
всех
встроенных
команд и
составных
команд
оболочки.
- Опции, если
они
определены,
имеют
следующие
значения:
- -d
- Вывести на
дисплей
описание
каждого
шаблона
pattern
- -m
- Вывести на
дисплей
описание
каждого
шаблона pattern
в формате,
подобном
странице
руководства
(manpage)
- -s
- Вывести на
дисплей
только
обзор об
использовании
для
каждого
шаблона
pattern
- Если
шаблон pattern
содержит
символы,
соответствующие
шаблону
(смотрите
подраздел
Соответствие
шаблону
выше), то
это
рассматривается
как
шаблон
оболочки и
команда help
выводит
описание
каждого
раздела
справки,
соответствующего
pattern.
- Если это не
так, но
шаблон pattern
точно
соответствует
названию
раздела
справки, то
команда help
выводит
описание,
связанное
с этим
разделом. В
противном
случае
команда help
выполняет
сопоставление
префиксов
и выводит
описания
всех
соответствующих
разделов
справки.
- Возвращаемый
статус
равен 0,
если
только ни
одна
команда не
соответствует
шаблону
pattern.
- history
[n]
- history
-c
- history -d
offset
- history -d
start-end
- history
-anrw [filename]
- history
-p arg [arg ...]
- history
-s arg [arg ...]
- Если опции
отсутствуют,
то
выводится
список
истории
команд с
номерами.
Записи,
начинающиеся
с *, были
изменены. В
аргументе
n
указываются
только
последние
n записей.
Если
переменная
оболочки
HISTTIMEFORMAT
задана и не
равна нулю,
то она
используется
в
качестве
строки
формата
для strftime(3) для
вывода
временной
метки,
связанной
с каждой
выводимой
записью
истории.
Если в history
используется
HISTTIMEFORMAT, то не
будет
выведен
промежуточный
пробел
между
отформатированной
меткой
времени и
записью
истории.
- Если
указано
значение
filename, то history
использует
его в
качестве
названия
файла
истории;
если нет,
то
используется
значение
HISTFILE. Если
значение
filename не
указано, а
значение
HISTFILE не
задано или
равно нулю,
то опции -a, -n,
-r и -w не
действуют.
- Опции, если
они
указаны,
имеют
следующие
значения:
- -c
- Очистить
список
истории,
удалив все
записи. Это
можно
использовать
вместе с
другими
опциями
для замены
списка
истории.
- -d offset
- Удалить
запись
истории в
позиции offset.
Если
значение
offset
отрицательное,
то оно
интерпретируется
как
относительное
значение,
на единицу
превышающее
последнюю
позицию в
истории,
поэтому
отрицательные
индексы
отсчитываются
от конца
истории, а
индекс,
равный -1,
относится
к текущей
команде history
-d.
- -d
start-end
- Удалите
диапазон
записей
истории
между
позициями
start и end
включительно.
Положительные
и
отрицательные
значения
для start и end
интерпретируются
так, как
описано
выше.
- -a
- Добавить
следующие
“new” строки
истории в
файл
истории.
Это строки
истории,
введенные
с начала
текущего
сеанса bash,
но еще не
добавленные
в файл
истории.
- -n
- Прочитать
строки
истории,
которые
еще не были
прочитаны
из файла
истории и
добавить
их в
текущий
список
истории.
Это строки,
добавленные
в файл
истории с
начала
текущего
сеанса
оболочки
bash.
- -r
- Прочитать
файл
истории и
добавить
его
содержимое
в текущий
список
истории.
- -w
- Записать
текущий
список
истории в
файл
истории,
перезаписав
файл
истории.
- -p
- Выполнить
подстановку
истории в
следующих
аргументах
args и
отобразить
результат
в
стандартном
выводе, не
сохраняя
результаты
в списке
истории.
Каждый
аргумент
arg должен
быть
заключен в
кавычки,
чтобы
отключить
обычное
расширение
истории.
- -s
- Сохранить
аргументы
args в списке
истории
как
отдельную
запись.
Последняя
команда в
списке
истории
удаляется
перед
добавлением
аргументов
args.
- Если
задана
переменная
HISTTIMEFORMAT,то
команда
history
записывает
информацию
о метке
времени,
связанной
с каждой
записью
истории, в
файл
истории,
помеченный
символом
комментария
к истории,
как
описано
выше. При
чтении
файла
истории
строки,
начинающиеся
с символа
комментария
к истории,
за которым
сразу
следует
цифра,
интерпретируются
как
временные
метки для
следующей
записи
истории.
- Возвращаемое
значение
равно 0,
если
только не
задана
недопустимая
опция, не
произошла
ошибка при
чтении или
записи
файла
истории, в
качестве
аргумента
для -d
указано
недопустимое
значение
смещения
offset или
диапазон
или не
завершилось
ошибкой
расширение
истории,
указанное
в качестве
аргумента
для -p.
- jobs [-lnprs] [
jobspec ... ]
- jobs -x
command [ args ... ]
- В первой
форме
перечислены
активные
задания.
Параметры
имеют
следующие
значения:
- -l
- Список
идентификаторов
процессов
в
дополнение
к обычной
информации.
- -n
- Выводить
на дисплей
информацию
только о
заданиях,
статус
которых
изменился
с момента
последнего
уведомления
пользователя
об их
статусе.
- -p
- Указать
только
идентификатор
главного
процесса
заданий
группы
процессов.
- -r
- Выводить
на дисплей
только
запущенные
задания.
- -s
- Выводить
на дисплей
только
остановленные
задания.
- Если
указано jobspec,
то команда
jobs
ограничивает
вывод
информацией
об этом
задании.
Возвращаемый
статус
равен 0,
если
только не
обнаружена
недопустимая
опция или
не указано
недопустимое
значение
jobspec.
- Если
указана
опция -x, то
команда jobs
заменяет
любое jobspec,
найденное
в command или args,
на
соответствующий
идентификатор
группы
процессов
и
выполняет
command,
передавая
её
аргументы
args и
возвращает
статус
завершения.
- kill [-s
sigspec | -n signum | -sigspec] id
[ ... ]
- kill
-l|-L [sigspec | exit_status]
- Команда
посылает
сигнал,
указанный
sigspec или signum,
процессам,
именуемым
каждым id.
Каждый id
может быть
спецификацией
задания jobspec
или
идентификатором
процесса
pid. Сигнал
sigspec - это либо
название
сигнала
без учета
регистра,
такое как
SIGKILL (с
префиксом
SIG или без
него), либо
номер
сигнала; signum -
это номер
сигнала.
Если sigspec не
указано, то
kill
посылает
SIGTERM.
- Опция -l
выводит
список
названий
сигналов.
Если при
вводе
опции -l
указываются
какие-либо
аргументы,
то kill
выводит
названия
сигналов,
соответствующих
аргументам,
а
возвращаемый
статус
равен 0.
Аргумент
exit_status для -l -
это число,
указывающее
либо номер
сигнала,
либо
статус
завершения
процесса,
завершенного
сигналом;
если он
указан, то
kill выводит
название
сигнала,
который
вызвал
завершение
процесса.
kill
предполагает,
что все
статусы
завершения
процесса
больше 128;
всё, что
меньше
этого
значения,
является
номером
сигнала.
Опция -L
эквивалентна
опции -l.
- Команда kill
возвращает
значение true,
если хотя
бы один
сигнал был
успешно
отправлен,
или
значение false,
если
произошла
ошибка или
обнаружена
недопустимая
опция.
- let arg
[arg ...]
- Каждый
аргумент
arg
вычисляется
как
арифметическое
выражение
(смотрите
раздел
АРИФМЕТИЧЕСКИЕ
ВЫЧИСЛЕНИЯ
above). Если
последнее
значение
arg равно 0, то
let
возвращает
1; в
противном
случае let
возвращает
0.
- local [option]
[name[=value] ... | - ]
- Для
каждого
аргумента
создать
локальную
переменную
с
названием
name и
присвойте
ей
значение
value. Опция option
может быть
любой из
опций,
принятых в
declare. Когда
команда local
используется
внутри
функции, то
это
приводит к
тому, что
переменная
name имеет
видимую
область
действия,
ограниченную
этой
функцией и
ее
дочерними
элементами.
Использование
команды local
вне
функции
является
ошибкой.
- Если name
определено,
то это
делает
набор
опций
оболочки
локальным
для
функции, в
которой
вызывается
команда local:
все опции
оболочки,
измененные
с помощью
set,
встроенной
в функцию,
после
вызова local
восстанавливаются
к их
исходным
значениям,
когда
функция
возвращает
значение.
Восстановление
выполняется
так, как
если бы
была
выполнена
серия
команд set
для
восстановления
значений,
которые
были на
месте до
запуска
функции.
- Без
операндов
local выводит
список
локальных
переменных
на
стандартный
вывод.
- Возвращаемый
статус
равен 0,
если
только local
не
используется
вне
функции, не
указано
недопустимое
name или name не
является
переменной,
доступной
только для
чтения.
- logout
[n]
- Выйти из
оболочки,
вернув
родительской
оболочке
статус n.
- mapfile
[-d delim] [-n count] [-O origin]
[-s count] [-t] [-u fd] [-C
callback] [-c quantum] [array]
- readarray
[-d delim] [-n count] [-O origin]
[-s count] [-t] [-u fd] [-C
callback] [-c quantum] [array]
- Считать
строки из
стандартного
ввода или
из
файлового
дескриптора
fd, если
указана
опция -u, в
переменную
индексированного
массива Iarray.
Переменная
MAPFILE по
умолчанию
является
array. Опции,
если они
указаны,
имеют
следующие
значения:
- -d
- Использовать
первый
символ delim
для
завершения
каждой
строки
ввода, а не
символ
новой
строки.
Если delim
является
пустой
строкой, то
mapfile
завершит
строку,
когда
будет
считан
символ NUL.
- -n
- Скопировать
не более
строк count.
Если
значение
count равно 0, то
скопировать
все
строки.
- -O
- Начать
присвоение
массиву array
с индексом
origin. Индекс
по
умолчанию
равен 0.
- -s
- Отбросить
первые
прочитанные
строки count.
- -t
- Удалить
завершающий
символ delim
(новая
строка по
умолчанию)
из каждой
прочитанной
строки.
- -u
- Считывать
строки из
файлового
дескриптора
fd вместо
стандартного
ввода.
- -C
- Вычислять
callback при
каждом
чтении
строк quantum.
Опция -c
указывает
quantum.
- -c
- Указывать
количество
строк,
прочитанных
между
каждым
вызовом
callback.
- Если -C
указано
без -c, то
значение
по
умолчанию
равно 5000. При
вычислении
значения
"обратный
вызов" callback в
качестве
дополнительных
аргументов
указывается
индекс
следующего
элемента
массива,
который
должен
быть
назначен, и
строка,
которая
должна
быть
назначена
этому
элементу.
callback
вычисляется
после
чтения
строки, но
до
назначения
элемента
массива.
- Если не
указано
явное
происхождение,
то mapfile
очистит
массив array
перед
назначением
ему.
- mapfile
возвращает
ноль, если
не указана
недопустимая
опция или
аргумент
опции array
недопустим
или не
может быть
назначен,
или если array
не
является
индексированным
массивом.
- popd [-n]
[+n] [-n]
- Удалить
записи из
стека
каталогов.
Элементы
нумеруются
от 0,
начиная с
первого
каталога,
указанного
в dirs,
поэтому popd
эквивалентно
“popd +0.” При
отсутствии
аргументов
popd удаляет
верхний
каталог из
стека и
изменяет
его на
новый
верхний
каталог.
Аргументы,
если они
указаны,
имеют
следующие
значения:
- -n
- Подавлять
обычное
изменение
каталога
при
удалении
каталогов
из стека и
манипулировать
только
стеком.
- +n
- Удалить из
стека n-ю
запись,
отсчитываемую
слева от
списка,
показанного
dirs, начиная
с нуля.
Например:
“popd +0”
удаляет
первый
каталог, “popd
+1” затем
второй.
- -n
- Удалить n-ю
запись,
отсчитываемую
справа от
списка,
показанного
с помощью
dirs, начиная
с нуля.
Например:
“popd -0”
удаляет
последний
каталог, “popd
-1” затем,
предпоследний.
- Если
верхний
элемент
стека
каталогов
изменен, а
значение -n
не было
указано, то
popd
использует
встроенную
команду cd
для
перехода к
каталогу,
расположенному
в верхней
части
стека. Если
cd
завершается
ошибкой, то
popd
возвращает
ненулевое
значение.
- В
противном
случае, popd
возвращает
значение false,
если
указана
недопустимая
опция, стек
каталогов
пуст или n
указывает
несуществующую
запись в
стеке
каталогов.
- Если
команда popd
выполнена
успешно, то
bash
запускает
dirs, чтобы
отобразить
окончательное
содержимое
стека
каталогов,
а
возвращаемый
статус
равен 0.
- printf [-v
var] format [arguments]
- Записать
отформатированные
аргументы
arguments в
стандартный
вывод под
управлением
format. Опция -v
присваивает
выходные
данные
переменной
var вместо
того, чтобы
выводить
их на
стандартный
вывод.
- Формат format -
это
символьная
строка,
содержащая
объекты
трех типов:
обычные
символы,
которые
просто
копируются
в
стандартный
вывод,
управляющие
последовательности
символов,
которые
преобразуются
и
копируются
в
стандартный
вывод и
спецификации
формата,
каждая из
которых
приводит к
выводу
следующего
за ней
аргумента
argument. В
дополнение
к
стандартным
символам
формата printf(3)
и cCsSndiouxXeEfFgGaA,
команда printf
интерпретирует
следующие
дополнительные
спецификаторы
формата:
- %b
- приводит к
тому, что printf
расширяет
управляющие
последовательности
с обратной
косой
чертой в
соответствующем
аргументе
argument таким же
образом,
как и echo -e.
- %q
- приводит к
тому, что
команда printf
выводит
соответствующий
аргумент
argument в
формате,
который
может быть
повторно
использован
в качестве
входных
данных
оболочки.
%q и %Q
используют
стиль
кавычек $'',
если этого
требуют
какие-либо
символы в
строке
аргумента
и кавычки с
обратной
косой
чертой в
противном
случае.
Если в
строке
формата
используется
альтернативная
форма
команды printf,
то эти два
формата
заключают
строку
аргумента
в
одинарные
кавычки.
- %Q
- тоже, что и
%q, но
применяет
любую
указанную
точность к
аргументу
argument, прежде
чем
заключать
его в
кавычки.
- %(datefmt)T
- приводит к
тому, что
команда printf
выводит
строку
даты и
времени,
полученную
в
результате
использования
datefmt в
качестве
строки
формата
для strftime(3).
Соответствующий
аргумент
argument - это
целое
число,
представляющее
количество
секунд,
прошедших
с начала
эпохи. Этот
спецификатор
формата
распознает
два
специальных
значения
аргумента:
-1
представляет
текущее
время, а -2 -
время
вызова
оболочки.
Если
аргумент
не указан,
то
преобразование
выполняется
так, как
если бы
было
указано
значение -1.
Это
исключение
из
обычного
поведения
printf.
- Все
спецификаторы
формата %b, %q и
%T
используют
аргументы
ширины
поля и
точности
из
спецификации
формата и
записывают
это
количество
байт (или
используют
поле такой
ширины) в
расширенный
аргумент,
который
обычно
содержит
больше
символов,
чем
исходный.
- Спецификатор
формата %n
принимает
соответствующий
аргумент,
который
обрабатывается
как
название
переменной
оболочки.
- Спецификаторы
формата %s и %c
принимают
модификатор
l (длинный),
который
заставляет
их
преобразовывать
строку
аргумента
в строку с
широким
символом и
применять
любую
указанную
ширину
поля и
точность в
символах, а
не в
байтах.
Спецификаторы
формата %S и %C
эквивалентны
%ls и %lc,
соответственно.
- Аргументы
для
спецификаторов
нестрокового
формата
обрабатываются
как
константы
языка Си,
за
исключением
того, что
допускается
использование
начального
знака плюс
или минус,
а если
начальный
символ
представляет
собой
одинарную
или
двойную
кавычку, то
значением
является
числовое
значение
следующего
символа с
использованием
текущей
локали.
- Формат format
используется
повторно
по мере
необходимости
для
использования
всех
аргументов
arguments. Если
для format
требуется
больше arguments,
чем
указано, то
дополнительные
спецификации
формата
ведут себя
так, как
если бы
было
указано
нулевое
значение
или
нулевая
строка, в
зависимости
от
обстоятельств.
Возвращаемое
значение
равно нулю
в случае
успешного
выполнения
и не равно
нулю, если
указан
недопустимая
опция или
произошла
ошибка
записи или
присвоения.
- pushd [-n]
[+n] [-n]
- pushd [-n]
[dir]
- Добавить
каталог в
верхнюю
часть
стека
каталогов
или
повернуть
стек,
сделав
новую
верхнюю
часть
стека
текущей
рабочей
директорией.
При
отсутствии
аргументов
pushd
заменяет
два
верхних
элемента
стека
каталогов.
Аргументы,
если они
указаны,
имеют
следующие
значения:
- -n
- Подавлять
обычную
смену
каталогов
при
ротации
или
добавлении
каталогов
в стек,
манипулировать
только
стеком.
- +n
- Повернуть
стек так,
чтобы n-й
каталог
(считая
слева от
списка,
показанного
dirs, начиная
с нуля)
находился
вверху.
- -n
- Поворачивает
стек так,
чтобы n-й
каталог
(считая
справа от
списка,
показанного
dirs, начиная
с нуля)
находился
вверху.
- dir
- Добавить
каталог dir
в стек
каталогов
вверху.
- После
изменения
стека, если
опция -n не
была
указана, то
pushd
использует
встроенную
команду cd
для
перехода в
каталог,
расположенный
в верхней
части
стека. Если
cd
завершается
ошибкой, то
pushd
возвращает
ненулевое
значение.
- В
противном
случае,
если
аргументы
не указаны,
то pushd
возвращает
ноль, если
только
стек
каталогов
не пуст.
При смене
стека
каталогов
pushd
возвращает
ноль, если
только
стек
каталогов
не пуст или
если n не
указывает
несуществующий
элемент
стека
каталогов.
- Если
команда pushd
выполнена
успешно, то
bash
запускает
dirs, чтобы
показать
окончательное
содержимое
стека
каталогов.
- pwd [-LP]
- Вывести
абсолютный
путь к
текущему
рабочему
каталогу.
Выведенное
название
пути не
содержит
символических
ссылок,
если
указана
опция -P
или
включена
опция -o physical
для
встроенной
команды set.
Если
используется
опция -L, то
выводимый
путь может
содержать
символьные
ссылки.
Возвращаемый
статус
равен 0,
если
только при
чтении
названия
текущего
каталога
не
возникает
ошибка или
не указана
недопустимая
опция.
- read [-Eers]
[-a aname] [-d delim] [-i text]
[-n nchars] [-N nchars] [-p
prompt] [-t timeout] [-u fd] [name
...]
- Прочитать
одну
строку из
стандартного
ввода или
из
файлового
дескриптора,
который fd
предоставил
в качестве
аргумента
опции -u,
разделить
ее на
слова, как
описано above в
подразделе
Разделение
слов и
присвоить
первое
слово
первому name,
второе
слово
второму name
и так
далее. Если
слов
больше, чем
названий,
то
оставшиеся
слова и
разделители
между ними
присваиваются
последнему
name. Если из
входного
потока
считывается
меньше
слов, чем
наименований,
то
оставшимся
именованиям
присваиваются
пустые
значения.
Символы в
значении
переменной
IFS
используются
для
разбиения
строки на
слова с
использованием
тех же
правил,
которые
оболочка
использует
для
расширения
(описано above в
подразделе
Разделение
слов).
Символ
обратной
косой
черты (\)
устраняет
любое
специальное
значение
для
следующего
считываемого
символа и
используется
для
продолжения
строки.
- Опции, если
они
указаны,
имеют
следующие
значения:
- -a aname
- Слова
присваиваются
последовательным
индексам
переменной
массива aname,
начиная с 0.
Значение
aname не
задается
до
присвоения
каких-либо
новых
значений.
Другие
аргументы
name
игнорируются.
- -d delim
- Первый
символ delim
завершает
строку
ввода, а не
символ
новой
строки.
Если delim
является
пустой
строкой, то
команда read
завершит
строку,
когда
будет
считан
символ NUL.
- -e
- Если
стандартный
ввод
поступает
с
терминала,
то read
использует
readline
(смотрите
раздел
БИБЛИОТЕКА
READLINE above) чтобы
получить
строку. В
библиотеке
Readline
используются
текущие
настройки
редактирования
(или
настройки
по
умолчанию,
если
редактирование
строки
ранее не
было
активным),
но
используется
заполнение
названия
файла Readline по
умолчанию.
- -E
- Если
стандартный
ввод
поступает
с
терминала,
то read
использует
readline
(смотрите
раздел
БИБЛИОТЕКА
READLINE above) чтобы
получить
строку. В
библиотеке
Readline
использует
текущие
настройки
редактирования
(или
настройки
по
умолчанию,
если
редактирование
строки
ранее не
было
активным),
но она
использует
завершение
по
умолчанию
в bash, включая
программируемое
завершение.
- -i text
- Если для
чтения
строки
используется
библиотека
readline, то read
помещает
текст text в
буфер
редактирования
перед
началом
редактирования.
- -n
nchars
- read
возвращает
значение
после
прочтения
символов
nchars, не
дожидаясь
полной
строки
ввода, если
только не
встречается
задержка EOF
или read, но
учитывает
разделитель,
если перед
разделителем
прочитано
меньше
символов
nchars.
- -N nchars
- read
возвращает
значение
после
прочтения
ровно nchars
символов, а
не после
ожидания
полной
строки
ввода, если
только она
не
столкнется
с EOF или
истечением
времени
ожидания
read. Любые
символы-разделители
во входных
данных не
обрабатываются
специальным
образом и
не
вызывают
возврата
read до тех
пор, пока
не будут
прочитаны
символы nchars.
Результат
не
разбивается
на символы
в IFS; цель
состоит в
том, чтобы
переменной
присваивались
именно те
символы,
которые
считываются
(за
исключением
обратной
косой
черты;
смотрите
опцию -r
ниже).
- -p prompt
- Выводите
запрос prompt
при
стандартной
ошибке без
перевода
строки в
конце,
прежде чем
пытаться
прочитать
какие-либо
входные
данные, но
только
если
входные
данные
поступают
с
терминала.
- -r
- Обратная
косая
черта не
используется
в качестве
экранирующего
символа.
Обратная
косая
черта
считается
частью
строки. В
частности,
пара
обратная
косая
черта-новая
строка не
может
использоваться
в качестве
продолжения
строки.
- -s
- "Тихий"
режим. Если
ввод
данных
осуществляется
с
терминала,
символы не
отображаются.
- -t
timeout
- Переводит
команду read
в режим
ожидания и
возвращает
ошибку,
если она не
считывает
всю строку
ввода (или
указанное
количество
символов) в
течение
секунд
тайм-аута
timeout. Тайм-аут
timeout может
быть
десятичным
числом с
дробной
частью,
следующей
за запятой.
Эта опция
эффективна
только в
том случае,
если read
считывает
входные
данные с
терминала,
канала или
другого
специального
файла; при
чтении из
обычных
файлов она
не
действует.
Если время
ожидания
read истекло,
то все
частичные
входные
данные,
считанные
в
указанную
переменную
name,
сохраняются,
а статус
завершения
превышает
128. Если
значение
timeout равно 0,
то команда
read
немедленно
возвращается,
не пытаясь
прочитать
какие-либо
данные. В
этом
случае
статус
завершения
равен 0,
если для
указанного
файлового
дескриптора
доступны
входные
данные или,
в
противном
случае,
команда read
вернет
значение EOF,
отличное
от нуля.
- -u fd
- Команда read
считывает
входные
данные из
файлового
дескриптора
fd вместо
стандартного
ввода.
- За
исключением
случая,
когда delim
является
пустой
строкой,
тогда
команда read
игнорирует
любые
символы NUL
во входных
данных.
- Если
названия
names не
указаны, то
команда read
присваивает
строку
чтения без
конечного
разделителя,
но в
остальном
без
изменений,
переменной
REPLY.
- Статус
завершения
равен нулю,
если
только не
обнаружен
конец
файла или
не окончен
тайм-аут read
(в этом
случае
значение
состояния
превышает
128), ошибка
назначения
переменной
(например,
присвоение
переменной,
доступной
только для
чтения) или
неверный
файловый
дескриптор
указан в
качестве
аргумента
для -u.
- readonly
[-aAf] [-p] [name[=word] ...]
- Указанные
именования
names
помечены
как
доступные
только для
чтения;
значения
этих names не
могут быть
изменены
при
последующем
присвоении
или отмене.
Если
указана
опция -f, то
каждое names
ссылается
на функцию
оболочки.
Опция -a
ограничивает
переменные
индексированными
массивами;
опция -A
ограничивает
переменные
ассоциативными
массивами.
Если
указаны
обе опции,
то
приоритет
имеет
опция -A.
Если
аргументы
name не
указаны
или если
указана
опция -p, то
выводится
список
всех
названий,
доступных
только для
чтения.
Другие
опции
могут
использоваться
для
ограничения
вывода
подмножеством
набора
названий,
доступных
только для
чтения.
Опция -p
выводит
выходные
данные в
формате,
который
может быть
повторно
использован
в качестве
входных
данных.
- Библиотека
readonly
позволяет
устанавливать
значение
переменной
одновременно
с
изменением
атрибута readonly
только для
чтения ,
если после
названия
переменной
ввести =value.
При этом
значение
переменной
будет
равно value, а
атрибут readonly
только для
чтения
будет
изменен.
- Возвращаемый
статус
равен 0,
если
только не
обнаружена
недопустимая
опция или
одно из names
не
является
допустимым
наименованием
переменной
оболочки
или -f не
содержит
name , которое
не
является
функцией.
- return
[n]
- Остановить
выполнение
функции
оболочки
или
исполняемого
файла и
вернуть
вызывающей
стороне
значение,
указанное
в n. Если n
опущено, то
возвращаемый
статус
соответствует
статусу
последней
выполненной
команды.
Если return
выполняется
обработчиком
перехвата,
то
последняя
команда,
используемая
для
определения
статуса,
является
последней
командой,
выполненной
перед
обработчиком
перехвата.
Если return
выполняется
во время
перехвата
DEBUG,то
последняя
команда,
используемая
для
определения
статуса,
является
последней
командой,
выполненной
обработчиком
перехвата
перед
вызовом
return.
- Когда return
используется
для
завершения
выполнения
скрипта,
выполняемого
командой .
(source), то это
приводит к
тому, что
оболочка
прекращает
выполнение
этого
скрипта и
возвращает
либо n,
либо
статус
завершения
последней
команды,
выполненной
в скрипте,
в качестве
выхода
статус
скрипта.
Если
указано
значение n,
то
возвращаемое
значение
равно его
младшим 8
битам.
- Любая
команда,
связанная
с ловушкой
RETURN,
выполняется
до того,
как
выполнение
возобновится
после
выполнения
функции
или
скрипта.
- Статус
возврата
отличен от
нуля, если
return
задается в
качестве
нечислового
аргумента
или
используется
вне
функции, а
не во время
выполнения
скрипта с
помощью .
или source.
- set
[-abefhkmnptuvxBCEHPT] [-o option-name] [--]
[-] [arg ...]
- set
[+abefhkmnptuvxBCEHPT] [+o option-name] [--]
[-] [arg ...]
- set -o
- set +o
- Без опций
отображать
название и
значение
каждой
переменной
оболочки в
формате,
который
можно
повторно
использовать
в качестве
входных
данных для
установки
или сброса
текущих
переменных.
Переменные,
доступные
только для
чтения, не
могут быть
сброшены. В
режиме posix
отображаются
только
переменные
оболочки.
Выходные
данные
сортируются
в
соответствии
с текущей
локалью.
Если
заданы
опции, то
они
устанавливают
или
отменяют
установку
атрибутов
оболочки.
Все
аргументы,
оставшиеся
после
обработки
опций,
рассматриваются
как
значения
позиционных
параметров
и
присваиваются
по порядку
$1, $2, ..., $n.
Опции, если
они
указаны,
имеют
следующие
значения:
- -a
- Каждой
создаваемой
или
изменяемой
переменной
или
функции
присваивается
атрибут export,
который
помечается
для
экспорта в
окружающую
среду
последующих
команд.
- -b
- Сообщать о
состоянии
завершенных
фоновых
заданий
немедленно,
а не до
появления
следующего
основного
запроса
или после
завершения
выполнения
команды
переднего
плана. Это
действует
только при
включенном
управлении
заданиями.
- -e
- Немедленно
завершить
работу,
если
используется
конвейер
pipeline (который
может
состоять
из одной
простой
команды simple
command), списка
listили
составной
команды compound
command
(смотрите
раздел
ГРАММАТИКА
ОБОЛОЧКИ
above),
завершает
работу с
ненулевым
статусом.
Оболочка
не
завершает
работу,
если
команда,
которая
завершилась
ошибкой,
является
частью
списка
команд,
следующего
непосредственно
за
зарезервированным
словом while
или until,
частью
теста,
следующего
за
зарезервированными
словами if
или elif,
частью
любой
команды,
выполняемой
в && или
перечислении
||, за
исключением
команды,
следующей
за
последней
&& или ||,
любую
команду в
конвейере,
кроме
последней
(в
зависимости
от
состояния
опции
оболочки
pipefail) или если
возвращаемое
значение
команды
инвертируется
с помощью
!. Если
составная
команда,
отличная
от
подоболочки,
возвращает
ненулевой
статус
из-за сбоя
команды, в
то время
как -e
игнорировалась,
то
оболочка
не
завершает
работу.
Если
задана
ошибка в ERR,
то она
выполняется
до
завершения
работы
оболочки.
Эта опция
применяется
к среде
оболочки и
каждой
среде
подоболочки
в
отдельности
(смотрите
раздел
СРЕДА
ВЫПОЛНЕНИЯ
КОМАНД above),
и может
привести к
завершению
работы
подоболочек
перед
выполнением
всех
команд в
подоболочке.
- Если
составная
команда
или
функция
оболочки
выполняется
в
контексте,
где -e
игнорируется,
ни на одну
из команд,
выполняемых
в теле
составной
команды
или
функции, не
повлияет
-e, даже
если -e
установлено
и команда
возвращает
статус
ошибки.
Если
составная
команда
или
функция
оболочки
устанавливает
значение -e
при
выполнении
в
контексте,
где
значение -e
игнорируется,
то эта
настройка
не будет
иметь
никакого
эффекта до
завершения
выполнения
составной
команды
или
команды,
содержащей
вызов
функции.
- -f
- Отключение
расширения
названия
пути.
- -h
- Запоминать
расположение
команд при
их поиске
для
выполнения.
По
умолчанию
эта
функция
включена.
- -k
- Все
аргументы
в виде
операторов
присваивания
поместить
в
окружающую
среду
команды, а
не только
те, которые
предшествуют
названию
команды.
- -m
- Режим
мониторинга.
Включено
управление
заданиями.
Эта опция
включена
по
умолчанию
для
интерактивных
оболочек в
системах,
которые ее
поддерживают
(смотрите
раздел
УПРАВЛЕНИЕ
ЗАДАНИЯМИ
above). Все
процессы
выполняются
в
отдельной
группе
процессов.
Когда
фоновое
задание
завершается,
тогда
оболочка
выводит
строку,
содержащую
статус
завершения.
- -n
- Считывать
команды, но
не
выполнять
их. Это
может
использоваться
для
проверки
сценария
оболочки
на наличие
синтаксических
ошибок.
Интерактивные
оболочки
это
игнорируют.
- -o
option-name
- Значение
option-name может
быть одним
из
следующих:
- allexport
- То же, что
-a.
- braceexpand
- То же, что
-B.
- emacs
- Использовать
интерфейс
редактирования
командной
строки в
стиле emacs. Это
включено
по
умолчанию,
когда
оболочка
является
интерактивной,
если
только
оболочка
не
запускается
с опцией
--noediting. Это
также
влияет на
интерфейс
редактирования,
используемый
для read -e.
- errexit
- То же, что
-e.
- errtrace
- То же, что
-E.
- functrace
- То же, что
-T.
- hashall
- То же,что -h.
- histexpand
- То же, что
-H.
- history
- Включить
журнал
истории
команд, как
описано
выше above в
разделе
ИСТОРИЯ.
Эта опция
включена
по
умолчанию
при
работе
оболочки в
интерактивном
режиме.
- ignoreeof
- Эффект
такой, как
если бы
команда
оболочки
“IGNOREEOF=10” была
выполнена
(смотрите
подраздел
Переменные
оболочки
above).
- keyword
- То же, что
-k.
- monitor
- То же, что
-m.
- noclobber
- То же, что
-C.
- noexec
- То же, что
-n.
- noglob
- То же, что
-f.
- nolog
- В
настоящее
время
игнорируется.
- notify
- То же, что
-b.
- nounset
- То же, что
-u.
- onecmd
- То же, что
-t.
- physical
- То же, что
-P.
- pipefail
- Если
задано,
возвращаемое
значение
конвейера
равно
значению
последней
(самой
правой)
команды,
которая
завершается
с
ненулевым
статусом,
или равно
нулю, если
все
команды в
конвейере
завершаются
успешно. По
умолчанию
эта опция
отключена.
- posix
- Включить
режим posix;
изменить
поведение
bash, в
котором
операции
по
умолчанию
отличаются
от
стандартных
операций
для POSIX ,
чтобы они
соответствовали
стандарту.
Смотрите
раздел
СМОТРИТЕ
ТАКЖЕ below
для
получения
ссылки на
документ, в
котором
подробно
описывается,
как режим posix
влияет на
поведение
bash.
- privileged
- То же, что
-p.
- verbose
- То же, что
-v.
- vi
- Использовать
интерфейс
редактирования
командной
строки в
стиле vi. Это
также
влияет на
интерфейс
редактирования,
используемый
для read -e.
- xtrace
- То же, что
-x.
Если -o
указано
без option-name, то
команда set
выводит
текущие
настройки
опций
оболочки.
Если +o не
содержит
option-name, то set
выводит
серию
команд set,
чтобы
воссоздать
текущие
настройки
опций в
стандартном
выводе.
- -p
- Включить
привилегированный
режим privileged. В
этом
режиме
оболочка
не
считывает
файлы $ENV
и $BASH_ENV,
функции
оболочки
не
наследуются
от
окружающей
среды, а
переменные
SHELLOPTS, BASHOPTS,
CDPATH и GLOBIGNORE,
если они
появляются
в среде,
игнорируются.
Если
оболочка
запущена с
идентификатором
эффективного
пользователя
(группы),
который не
равен
реальному
идентификатору
пользователя
(группы), а
опция -p не
указана, то
выполняются
эти
действия и
в качестве
эффективного
идентификатора
пользователя
устанавливается
реальный
идентификатор
пользователя.
Если при
запуске
указана
опция -p, то
действующий
идентификатор
пользователя
не
сбрасывается.
При
отключении
этой опции
для
эффективных
идентификаторов
пользователя
и группы
будут
установлены
реальные
идентификаторы
пользователя
и группы.
- -r
- Включить
режим
ограниченного
доступа
оболочки.
Если эта
опция была
установлена,
её нельзя
отменить.
- -t
- Завершить
работу
после
прочтения
и
выполнения
одной
команды.
- -u
- Обрабатывать
неустановленные
переменные
и
параметры,
отличные
от
специальных
параметров
“@” и “*”, или
переменные
массива,
подписанные
“@” или “*”,
как ошибка
при
выполнении
расширения
параметра.
Если
выполняется
попытка
расширения
для
неустановленной
переменной
или
параметра,
то
оболочка
выводит
сообщение
об ошибке
и, если она
не
является
интерактивной,
то
завершает
работу с
ненулевым
статусом.
- -v
- Выводить
строки
ввода
оболочки
по мере их
считывания.
- -x
- После
раскрытия
каждой
команды simple
command, команды
for, команды
case, команды
select или
арифметической
команды for
вывести на
дисплей
расширенное
значение
PS4, за
которым
следует
команда и
ее
расширенные
аргументы
или
связанный
с ними
список
слов,
приводящий
к
стандартной
ошибке.
- -B
- Оболочка
выполняет
расширение
скобок
(смотрите
подраздел
Расширение
скобок above).
Это
включено
по
умолчанию.
- -C
- Если
задано, то
bash не
перезаписывает
существующий
файл с
помощью
операторов
перенаправления
>, >& и <>.
Использование
оператора
перенаправления
>| вместо >
переопределит
это и
принудительно
создаст
выходной
файл.
- -E
- Если это
установлено,
то любая
ошибка в ERR
наследуется
функциями
оболочки,
заменами
команд и
командами,
выполняемыми
в
окружающей
среде
подоболочки.
В таких
случаях
ошибка ERR
обычно не
наследуется.
- -H
- Включить
подстановку
истории
стилей !.
Эта опция
включена
по
умолчанию,
когда
оболочка
является
интерактивной.
- -P
- Если это
установлено,
то
оболочка
не
разрешает
символьные
ссылки при
выполнении
таких
команд, как
cd, которые
изменяют
текущий
рабочий
каталог.
Вместо
этого она
использует
физическую
структуру
каталогов.
По
умолчанию
bash следует
логической
цепочке
каталогов
при
выполнении
команд,
которые
изменяют
текущий
каталог.
- -T
- Если
задано, то
любые
ловушки в
DEBUG и RETURN
наследуются
функциями
оболочки,
заменами
команд и
командами,
выполняемыми
в
окружающей
среде
подоболочки.
Ловушки DEBUG
и RETURN в таких
случаях
обычно не
наследуются.
- --
- Если за
этой
опцией не
следует
никаких
аргументов,
то
отменить
установку
позиционных
параметров.
В
противном
случае
установить
для
позиционных
параметров
значение
аргументов
argдаже
если
некоторые
из них
начинаются
с -.
- -
- Сообщить
об
окончании
выбора
опций и
назначить
все
оставшиеся
аргументы
arg
позиционным
параметрам.
Опции -x и -v
отключить.
Если нет
аргументов
arg, то
позиционные
параметры
остаются
неизменными.
По
умолчанию
опции
отключены,
если не
указано
иное.
Использование
+ вместо -
приводит к
отключению
этих опций.
Опции
также
могут быть
указаны в
качестве
аргументов
при вызове
оболочки.
Текущий
набор
опций
можно
найти в $-.
Статус
возврата
всегда
равен нулю,
если
только не
встречается
недопустимая
опция.
- shift
[n]
- Переименовать
позиционные
параметры
из n+1 ... в $1 ....
Параметры,
представленные
числами от
$# до $#-n+1, не
заданы.
Значение n
должно
быть
неотрицательным
числом,
меньшим
или равным
$#. Если n
равно 0, то
параметры
не
изменяются.
Если n не
задано, то
предполагается,
что оно
равно 1.
Если n
больше, чем
$#, то
позиционные
параметры
не
изменяются.
Статус
возврата
больше
нуля, если
n больше,
чем $# или
меньше
нуля; в
противном
случае
статус
возврата 0.
- shopt
[-pqsu] [-o] [optname ...]
- Изменить
значения
настроек,
управляющих
необязательным
поведением
оболочки.
Это могут
быть либо
те
настройки,
которые
перечислены
ниже, либо,
если
используется
опция -o, то
те, которые
доступны с
помощью
опции -o
для
встроенной
команды set.
- При
отсутствии
опций или
при
использовании
опции -p
вывести на
дисплей
список
всех
настраиваемых
опций с
указанием
того,
установлена
ли каждая
из них;
если
указаны
какие-либо
опции optnames, то
вывод
будет
ограничен
этими
опциями.
Опция -p
отображает
выходные
данные в
формате,
которая
может быть
повторно
использован
в качестве
входных
данных.
- Другие
опции
имеют
следующие
значения:
- -s
- Включить
(установить)
каждое optname.
- -u
- Выключить
(сбросить)
каждое optname.
- -q
- Отключает
обычный
вывод
(тихий
режим);
состояние
возврата
указывает,
установлено
или не
установлено
значение
optname. Если
несколько
аргументов
optname заданы с
помощью -q,
то статус
возврата
равен нулю,
если
включены
все
аргументы
optname; в
противном
случае
значение
не равно
нулю.
- -o
- Ограничивает
значения
optname теми
значениями,
которые
определены
для опции
-o,
встроенной
командой
set.
Если либо
-s, либо -u
используется
без
аргументов
optname, то shopt
отображает
только те
опции,
которые
установлены
или не
установлены
соответственно.
Если не
указано
иное, опции
shopt по
умолчанию
отключены
(unset).
Статус
возврата в
списке
опций
равен нулю,
если
включены
все optnames, в
противном
случае он
не равен
нулю. При
установке
или отмене
настроек
статус
возврата
равен нулю,
если
только optnames
не
является
допустимой
опцией
оболочки.
Список
опций shopt
выглядит
следующим
образом:
- array_expand_once
- Если
задано, то
оболочка
подавляет
многократное
вычисление
ассоциативных
и
индексированных
индексов
массива во
время
вычисления
арифметического
выражения,
при
выполнении
встроенных
команд,
которые
могут
выполнять
присвоение
переменным,
а также при
выполнении
встроенных
команд,
которые
выполняют
разыменование
массива.
- assoc_expand_once
- Устаревший;
синоним
для array_expand_once.
- autocd
- Если
задано,
название
команды,
являющееся
названием
каталога,
то
выполняется
так, как
если бы оно
было
аргументом
команды cd.
Эта опция
используется
только
интерактивными
оболочками.
- bash_source_fullpath
- Если
задано, то
названия
файлов,
добавленные
в
переменную
массива
BASH_SOURCE,
преобразуются
в полные
пути
(смотрите
подраздел
Переменные
оболочки
выше).
- cdable_vars
- Если
задано, то
предполагается,
что
аргументом
встроенной
команды cd,
который не
является
каталогом,
является
название
переменной,
значение
которой
является
каталогом
для
перехода.
- cdspell
- Если
задано, то
команда cd
пытается
исправить
незначительные
ошибки в
написании
компонента
каталога.
Незначительные
ошибки
включают в
себя
перенесенные
символы,
пропущенный
символ и
один
дополнительный
символ.
Если cd
исправляет
название
каталога,
то она
выводит
исправленное
название
файла и
команда
выполняется.
Эта опция
используется
только
интерактивными
оболочками.
- checkhash
- Если
задано, то
bash
проверяет,
существует
ли команда,
найденная
в
хэш-таблице,
прежде чем
пытаться
ее
выполнить.
Если в
хэш-таблице
команда
больше не
существует,
то bash
выполняет
обычный
поиск по
пути.
- checkjobs
- Если
задано, то
bash
отображает
статус
всех
остановленных
и
запущенных
заданий
перед
выходом из
интерактивной
оболочки.
Если
выполняются
какие-либо
задания, то
bash
откладывает
выход до
тех пор,
пока не
будет
предпринята
попытка
второго
выхода без
промежуточной
команды
(смотрите
раздел
УПРАВЛЕНИЕ
ЗАДАНИЯМИ
above). Оболочка
всегда
откладывает
выход из
системы,
если
какие-либо
задания
остановлены.
- checkwinsize
- Если
задано, то
bash
проверяет
размер
окна после
каждой
внешней (не
встроенной)
команды и,
при
необходимости,
обновляет
значения
LINES и COLUMNS,
используя
файловый
дескриптор,
связанный
со
стандартной
ошибкой,
если это
терминал.
Эта опция
включена
по
умолчанию.
- cmdhist
- Если это
установлено,
то bash
попытается
сохранить
все строки
многострочной
команды в
одной и той
же записи
истории.
Это
позволяет
легко
повторно
редактировать
многострочные
команды.
Эта опция
включена
по
умолчанию,
но
действует
только в
том случае,
если
включена
история
команд, как
описано
выше above
согласно
HISTORY.
- compat31
- compat32
- compat40
- compat41
- compat42
- compat43
- compat44
- Эти
значения
определяют
режим
совместимости
оболочки
(смотрите
раздел
РЕЖИМ
СОВМЕСТИМОСТИ
ОБОЛОЧКИ)
below).
- complete_fullquote
- Если
задано, то
bash
заключает
в кавычки
все
метасимволы
оболочки в
названиях
файлов и
каталогов
при
выполнении
завершения.
Если
значение
не задано,
то bash
удаляет
метасимволы,
такие как
знак
доллара, из
набора
символов,
которые
будут
заключены
в кавычки в
завершенных
названиях
файлов,
когда эти
метасимволы
появятся в
ссылках на
переменные
оболочки в
словах,
которые
должны
быть
завершены.
Это
означает,
что знаки
доллара в
названиях
переменных,
которые
расширяются
до
каталогов,
не будут
заключаться
в кавычки;
однако
любые
знаки
доллара,
появляющиеся
в
названиях
файлов,
также не
будут
заключаться
в кавычки.
Это
дейсиует
только
тогда,
когда bash
использует
обратную
косую
черту для
указания
завершенных
названий
файлов. Эта
переменная
установлена
по
умолчанию,
что
является
стандартным
поведением
bash в версиях
до 4.2.
- direxpand
- Если
задано, то
bash
заменяет
названия
каталогов
результатами
расширения
слова при
заполнении
названия
файла. Это
изменяет
содержимое
буфера
редактирования
readline. Если не
задано, то
bash
пытается
сохранить
то, что
ввел
пользователь.
- dirspell
- Если это
установлено,
то bash
попытается
исправить
орфографию
в
названиях
каталогов
во время
ввода
текста,
если
изначально
указанное
название
каталога
не
существует.
- dotglob
- Если
задано, то
bash
включает
названия
файлов,
начинающиеся
с “.”
результата
расширения
названия
пути. В
названии
файлов . и
.. всегда
должно
быть
задано
явное
соответствие,
даже если
задано
значение
dotglob.
- execfail
- Если
задано, то
неинтерактивная
оболочка
не
завершит
работу,
если она не
сможет
выполнить
файл,
указанный
в качестве
аргумента
для
встроенной
команды exec.
Интерактивная
оболочка
не
завершит
работу,
если exec
завершится
неудачно.
- expand_aliases
- Если
задано, то
псевдонимы
будут
расширены,
как
описано
выше above в
разделе
ПСЕВДОНИМЫ.
Эта опция
включена
по
умолчанию
для
интерактивных
оболочек.
- extdebug
- Если
задано при
вызове
оболочки
или в файле
запуска
оболочки,
то
настройте
выполнение
профиля
отладчика
перед
запуском
оболочки,
аналогично
опции --debugger.
Если
задано
после
вызова, то
будет
включено
поведение,
предназначенное
для
использования
отладчиками:
- 1.
- Опция -F
для
встроенной
команды declare
отображает
название
исходного
файла и
номер
строки,
соответствующие
каждому
названию
функции,
указанному
в качестве
аргумента.
- 2.
- Если
команда,
запущенная
с помощью
ловушки DEBUG,
то
возвращается
ненулевое
значение,
следующая
команда
пропускается
и не
выполняется.
- 3.
- Если
команда,
запущенная
с помощью
ловушки DEBUG,
то
возвращает
значение 2,
а оболочка
выполняет
подпрограмму
(функцию
оболочки
или
сценарий
оболочки,
выполняемый
встроенными
командами
. или source), то
оболочка
имитирует
вызов return.
- 4.
- BASH_ARGC и BASH_ARGV
обновляются
в
соответствии
с их
описаниями
above).
- 5.
- Включена
трассировка
функций:
подстановка
команд,
функции
оболочки и
подоболочки,
вызываемые
с помощью (
command ),
наследуют
ловушки DEBUG
и RETURN.
- 6.
- Включено
отслеживание
ошибок:
подстановка
команд,
функции
оболочки и
подоболочки,
вызываемые
с помощью (
command ),
наследуют
ловушку ERR.
- extglob
- Если
задано, то
включить
описанные
расширенные
свойства
сопоставления
с шаблоном
above
подраздел
Расширение
названия
пути.
- extquote
- Если
задано, то
$'string' и $"string"
заключаются
в кавычки
внутри
расширений
${parameter},
заключенных
в двойные
кавычки.
Эта опция
включена
по
умолчанию.
- failglob
- Если
заданы эти
шаблоны, то
названия
файлов,
которые не
совпадают
с
шаблонами
при
расширении
пути,
приводят к
ошибке
расширения.
- force_fignore
- Если
значение
задано, то
суффиксы,
заданные
переменной
оболочки
FIGNORE,
приводят к
тому, что
слова
игнорируются
при
выполнении
завершения,
даже если
игнорируемые
слова
являются
единственно
возможными
завершениями.
Смотрите
подраздел
Переменные
оболочки above
описание
FIGNORE. Эта
опция
включена
по
умолчанию.
- globasciiranges
- Если
задано, то
выражения
диапазона,
используемые
в
выражениях
в скобках
для
сопоставления
с шаблоном
(смотрите
Сопоставление
с
шаблоном
above) при
выполнении
сравнений
вести себя
так, как
если бы
использовался
традиционный
язык Си. То
есть при
сопоставлении
с шаблоном
не
учитывать
последовательность
сопоставления
в текущей
локали,
поэтому b
не будет
сопоставляться
между A и B,
а символы ASCII
в верхнем и
нижнем
регистре
будут
сопоставляться
вместе.
- globskipdots
- Если это
установлено,
то
расширение
названия
пути
никогда не
будет
совпадать
с
названиями
файлов . и
.., даже
если
шаблон
начинается
с “.”. Эта
опция
включена
по
умолчанию.
- globstar
- Если
задано, то
шаблон **,
используемый
в
контексте
расширения
названия
пути, будет
соответствовать
всем
файлам и
нулю или
множеству
каталогов
и
подкаталогов.
Если за
шаблоном
следует /,
то
соответствуют
только
каталоги и
подкаталоги.
- gnu_errfmt
- Если это
установлено,
то
сообщения
об ошибках
оболочки
записываются
в
стандартном
формате
сообщений
об ошибках
GNU.
- histappend
- Если это
установлено,
то список
истории
добавляется
к файлу,
названному
по
значению
переменной
HISTFILE, при
выходе из
оболочки, а
не
перезаписывает
файл.
- histreedit
- Если
задано и
используется
библиотека
readline, то
пользователю
предоставляется
возможность
повторно
отредактировать
неудачную
подстановку
истории.
- histverify
- Если
задано и
используется
библиотека
readline, то
результаты
подстановки
истории не
передаются
немедленно
в
синтаксический
анализатор
командной
строки.
Вместо
этого
результирующая
строка
загружается
в буфер
редактирования
readline, что
позволяет
вносить
дальнейшие
изменения.
- hostcomplete
- Если
задано и
используется
библиотека
readline, то bash
попытается
выполнить
завершение
названия
хоста при
завершении
слова,
содержащего
@ (смотрите
подраздел
Завершение
в разделе
БИБЛИОТЕКА
READLINE above).
Включено
по
умолчанию.
- huponexit
- Если это
установлено,
то bash будет
отправлять
SIGHUP всем
заданиям
при выходе
из
интерактивной
оболочки.
- inherit_errexit
- Если
задано, то
при замене
команд
наследуется
значение
опции errexit, а
не
отменяется
её
установка
в среде
подоболочки.
Эта опция
включена,
когда
включен
режим posix.
- В
интерактивной
оболочке
слово,
начинающееся
с #,
приводит к
игнорированию
этого
слова и
всех
остальных
символов в
этой
строке, как
и в
неинтерактивной
оболочке
(смотрите
раздел
КОММЕНТАРИИ
above). Эта опция
включена
по
умолчанию.
- lastpipe
- Если
установлено,
а
управление
заданиями
не
активировано,
то
оболочка
запускает
последнюю
команду
конвейера,
которая не
выполняется
в фоновом
режиме в
текущей
окружающей
среде
оболочки.
- lithist
- Если это
установлено
и включена
опция cmdhist, то
многострочные
команды
сохраняются
в журнале
со
встроенными
символами
новой
строки, а
не с
использованием
разделителей
в виде
точки с
запятой,
где это
возможно.
- localvar_inherit
- Если
задано, то
локальные
переменные
наследуют
значение и
атрибуты
переменной
с таким же
названием,
которое
существовало
в
предыдущей
области
видимости,
до
присвоения
какого-либо
нового
значения.
Атрибут nameref
не
наследуется.
- localvar_unset
- Если
задано, то
вызов unset
для
локальных
переменных
в
предыдущих
областях
действия
функции
помечает
их, чтобы
при
последующем
поиске они
не были
заданы,
пока
функция не
вернется.
Это
аналогично
сбросу
настроек
локальных
переменных
в текущей
области
видимости
функции.
- login_shell
- Оболочка
устанавливает
эту опцию,
если она
запущена
как
оболочка
входа в
систему
(смотрите
раздел
ВЫЗОВ above).
Это
значение
не может
быть
изменено.
- mailwarn
- Если
задано и к
файлу,
который bash
проверяет
на наличие
почты, был
получен
доступ с
момента
последней
проверки,
то bash
выведет
сообщение
на дисплей
“The mail in mailfile has been read”.
- no_empty_cmd_completion
- Если
задано и
используется
readline, то bash не
выполняет
поиск PATH
для
возможных
завершений
при
попытке
завершения
в пустой
строке.
- nocaseglob
- Если
задано, то
bash
сопоставляет
названия
файлов без
учета
регистра
при
расширении
названия
пути
(смотрите
подраздел
Расширение
названия
пути above).
- nocasematch
- Если
задано, то
bash
сопоставляет
шаблоны
без учета
регистра
при
выполнении
сопоставления
во время
выполнения
команд
проверки
условий case
или [[, при
выполнении
расширений
слов для
замены
шаблонов
или при
фильтрации
возможных
завершений
в рамках
программируемого
завершения.
- noexpand_translation
- Если
задано, то
bash
заключает
транслируемые
результаты
$"... " и
заключает
их в
одинарные
кавычки
вместо
двойных.
Если
строка не
транслируется,
то это не
имеет
никакого
эффекта.
- nullglob
- Если
задано, то
шаблоны
расширения
названия
пути,
которые не
соответствуют
ни одному
файлу
(смотрите
Расширение
названия
пути above)
никак не
расширяются
и
удаляются,
вместо
того чтобы
расширяться
сами по
себе.
- patsub_replacement
- Если
задано, то
bash
расширяет
вхождения
& в строке
замены
шаблона до
текста,
соответствующего
шаблону,
как
описано в
подразделе
Расширение
параметра
above. Эта опция
включена
по
умолчанию.
- progcomp
- Если
задано, то
включить
программируемое
завершение
(смотрите
подраздел
Программируемое
завершение
above). Эта опция
включена
по
умолчанию.
- progcomp_alias
- Если
задано и
включено
программируемое
завершение,
то bash
рассматривает
название
команды,
которое не
имеет
завершений,
как
возможный
псевдоним
и пытается
расширить
псевдоним.
Если у
команды
есть
псевдоним,
то bash
пытается
программно
завершить,
используемое
командное
слово,
словом
полученным
из
расширенного
псевдонима.
- promptvars
- Если это
установлено,
то строки
запроса
после
расширения
подвергаются
расширению
параметров,
замене
команд,
арифметическому
расширению
и удалению
кавычек,
как
описано в
разделе
ЗАПРОС
above. Эта опция
включена
по
умолчанию.
- restricted_shell
- Оболочка
устанавливает
эту опцию,
если она
запущена в
режиме с
ограниченным
доступом
(смотрите
раздел
ОБОЛОЧКА
С
ОГРАНИЧЕННЫМ
ДОСТУПОМ
below). Это
значение
не может
быть
изменено.
Оно не
сбрасывается
при
запуске
файлов
автозагрузки,
позволяя
файлам
автозагрузки
определять,
имеет ли
оболочка
ограничения
или нет.
- shift_verbose
- Если это
установлено,
то
встроенная
команда shift
выводит
сообщение
об ошибке,
когда
количество
сдвигов
превышает
количество
позиционных
параметров.
- sourcepath
- Если
задано, то
встроенная
команда .
(source
использует
значение
PATH для
поиска
каталога,
содержащего
файл,
указанный
в
качестве
аргумента,
если опция
-p не
указана. По
умолчанию
эта опция
включена.
- varredir_close
- Если это
установлено,
то
оболочка
автоматически
закрывает
файловые
дескрипторы,
назначенные
с
использованием
синтаксиса
перенаправления
{varname}
(смотрите
раздел
ПЕРЕНАПРАВЛЕНИЕ
above) вместо
того, чтобы
оставлять
их
открытыми
после
завершения
команды.
- xpg_echo
- Если
задано, то
встроенная
команда echo,
по
умолчанию,
расширяет
escape-последовательности
с обратной
косой
чертой.
Если также
включена
опция
оболочки
posix , то
команда echo
не
интерпретирует
никакие
опции.
- suspend
[-f]
- Приостановить
выполнение
этой
оболочки
до тех пор,
пока она не
получит
сигнал SIGCONT.
Оболочка
при входе
или
оболочка
без
включенного
управления
заданиями
не могут
быть
приостановлены;
опция -f
переопределит
это и
принудительно
приостановит
их
выполнение.
Возвращаемый
статус
равен 0,
если
только
оболочка
не
является
оболочкой
входа или
если -f не
указано, а
управление
заданиями
не
включено.
- test
expr
- [ expr ]
- Возвращает
значение 0 (true))
или 1 (false) в
зависимости
от
вычисления
условного
выражения
expr. Каждый
оператор и
операнд
должен
быть
отдельным
аргументом.
Выражения
состоят из
основных
компонентов,
описанных
above в разделе
УСЛОВНЫЕ
ВЫРАЖЕНИЯ.
test не
принимает
никаких
опций, а
также не
принимает
и не
игнорирует
аргумент --
как
обозначающий
окончание
опций.
- Выражения
могут быть
объединены
с помощью
следующих
операторов,
перечисленных
в порядке
убывания
приоритета.
Вычисление
зависит от
количества
аргументов;
смотрите
ниже. В
команде test
используется
приоритет
операторов
при
наличии
пяти или
более
аргументов.
- ! expr
- Истинно
если expr
ложно.
- ( expr )
- Возвращает
значение
expr. Это
может
использоваться
для
переопределения
обычного
приоритета
оператора.
- expr1 -a
expr2
- Истинно,
если оба
значения
expr1 и expr2
являются
истинными.
- expr1 -o
expr2
- Истинно,
если одно
из expr1 или expr2
является
истинным.
test и [
вычисляют
условные
выражения,
используя
набор
правил,
основанный
на
количестве
аргументов.
- 0
аргументов
- Выражение
ложно.
- 1 argument
- Выражение
истинно
тогда и
только
тогда,
когда
аргумент
не равен
нулю.
- 2
аргумента
- Если
первый
аргумент
равен !, то
выражение
истинно
тогда и
только
тогда,
когда
второй
аргумент
равен нулю.
Если
первым
аргументом
является
одним из
унарных
условных
операторов,
перечисленных
above в разделе
УСЛОВНЫЕ
ВЫРАЖЕНИЯ,
то
выражение
истинно,
если
выполняется
унарный
тест. Если
первый
аргумент
не
является
допустимым
унарным
условным
оператором,
то
выражение
ложно.
- 3
аргумента
- Следующие
условия
применяются
в
указанном
порядке.
Если
вторым
аргументом
является
один из
перечисленных
бинарных
условных
операторов
above в
соответствии
с разделом
УСЛОВНЫЕ
ВЫРАЖЕНИЯ,
то
результатом
выражения
является
результат
двоичного
теста с
использованием
первого и
третьего
аргументов
в качестве
операндов.
Операторы
-a и -o
считаются
двоичными
операторами
при
наличии
трех
аргументов.
Если
первым
аргументом
является !,
то
значение
является
инверсией
двух
аргументного
теста с
использованием
второго и
третьего
аргументов.
Если
первый
аргумент в
точности
равен (, а
третий
аргумент в
точности
равен ), то
результатом
будет
проверка
второго
аргумента
с помощью
одного
аргумента.
В
противном
случае
выражение
будет
ложным.
- 4
аргумента
- Следующие
условия
применяются
в
указанном
порядке.
Если
первым
аргументом
является !,
то
результатом
является
инверсия
выражения
из трех
аргументов,
составленного
из
остальных
аргументов.
Если
первый
аргумент в
точности
равен (, а
четвертый
аргумент в
точности
равен ), то
результатом
является
проверка
второго и
третьего
аргументов
с помощью
двух
аргументов.
В
противном
случае
выражение
анализируется
и
вычисляется
в
соответствии
с
приоритетом
и с
использованием
правил,
перечисленных
выше.
- 5 или более
аргументов
- Выражение
анализируется
и
вычисляется
в
соответствии
с
приоритетом
с
использованием
правил,
перечисленных
выше.
Когда
оболочка
находится
в режиме posix
или если
выражение
является
частью
команды [[,
то
операторы
< и >
выполняют
сортировку
с
использованием
текущей
локали.
Если
оболочка
не
находится
в режиме posix,
то команды
test и [
выполняют
лексикографическую
сортировку
с
использованием
порядка ASCII.
Синтаксический
анализ по
историческому
приоритету
оператора
с 4-мя или
более
аргументами
может
привести к
неоднозначностям
при
обнаружении
строк,
которые
выглядят
как
основные. В
стандарте
POSIX
устарели
основные
символы -a и
-o и
выражения,
заключенные
в круглые
скобки.
Скрипты
больше не
должны их
использовать.
Гораздо
надежнее
ограничить
тестовые
вызовы
одним
основным и
заменить
использование
-a и -o
операторами
оболочки
&& и ||.
- times
- Вывести
суммарное
пользовательское
и
системное
время для
оболочки и
для
процессов,
запускаемых
из
оболочки.
Возвращаемый
статус
равен 0.
- trap [-lpP]
[[action] sigspec ...]
- Команда action -
это
команда,
которая
считывается
и
выполняется,
когда
оболочка
получает
любой из
сигналов
sigspec. Если action
отсутствует
(и есть sigspec)
или -, то
каждый
указанный
sigspec
сбрасывается
до
значения,
которое он
имел при
запуске
оболочки.
Если action
является
пустой
строкой, то
сигнал,
указанный
каждым sigspec,
игнорируется
оболочкой
и
вызываемыми
ею
командами.
- Если
аргументы
не указаны,
то trap
отображает
действия,
связанные
с каждым
перехваченным
сигналом, в
виде
набора
команд trap,
которые
могут быть
повторно
использованы
в качестве
входных
данных
оболочки
для
восстановления
текущего
расположения
сигналов.
Если
задана
опция -p, а action
отсутствует,
то trap
отображает
действия,
связанные
с каждым
сигналом
sigspec или, если
они не
заданы, то
для всех
перехваченных
сигналов в
виде
набора
команд trap,
которые
могут быть
повторно
использованы
в качестве
входа
оболочки
для
восстановления
текущего
расположения
сигналов.
Опция -P
ведет себя
аналогично,
но
отображает
только
действия,
связанные
с каждым
аргументом
sigspec. Для
опции -P
требуется
как
минимум
один
аргумент
sigspec. Опции -P
или -p
могут
использоваться
в среде
подоболочек
(например,
для
подстановки
команд) и,
если они
использовались
до того,
как trap
стала
использоваться
для
изменения
обработки
сигнала, то
они будут
отображать
состояние
родительских
ловушек.
- Опция -l
выводит
список
названий
сигналов и
соответствующих
им номеров.
Каждый sigspec
является
либо
названием
сигнала,
определенным
в <signal.h>, либо
номером
сигнала. В
названиях
сигналов
регистр не
учитывается,
а префикс
SIG
является
необязательным.
Если -l
указано
без
аргументов
sigspec, то
выводится
список
допустимых
названий
сигналов.
- Если
значение
sigspec равно EXIT
(0), то action
выполняется
при выходе
из
оболочки.
Если sigspec
равно DEBUG,
то action
выполняется
перед
каждой
простой
командой simple
command,
командой
for,
командой
case,
командой
select,
арифметической
командой ((,
командой
проверки
условия [[,
арифметической
командой
for и перед
выполнением
первой
команды в
функции
оболочки
(смотрите
раздел
ГРАММАТИКА
ОБОЛОЧКИ
above).
Обратитесь
к описанию
опции
оболочки
extdebug
(смотрите
shopt above) для
получения
подробной
информации
о её
влиянии на
ловушку DEBUG.
Если
значение
sigspec равно
RETURN, то action
выполняется
каждый
раз, когда
завершается
выполнение
функции
оболочки
или
скрипта,
выполняемых
встроенными
командами
. или source.
- Если
значение
sigspec равно ERR,
то action
выполняется
всякий раз,
когда
конвейер
(который
может
состоять
из одной
простой
команды),
списка или
составной
команды,
возвращают
ненулевой
статус
завершения
при
соблюдении
следующих
условий.
Ошибка ERR
не
выполняется,
если
неудачная
команда
является
частью
списка
команд,
следующего
непосредственно
за
зарезервированным
словом while
или until,
частью
теста в if,
частью
команды,
выполняемой
в списке
&& или ||
или
списком, за
исключением
команды,
следующей
за
последней
&& или ||,
любой
команды в
конвейере,
кроме
последней
(в
зависимости
от
состояния
опции
оболочки
pipefail) или если
возвращаемое
значение
команды
выполняется
с
использованием
инверсии !.
Это те же
условия,
которые
соответствует
опции errexit (-e).
- Когда
оболочка
не
интерактивна,
то сигналы,
игнорируемые
при входе в
оболочку,
не могут
быть
перехвачены
или
сброшены.
Интерактивные
оболочки
позволяют
перехватывать
сигналы,
игнорируемые
при входе.
Перехваченные
сигналы,
которые не
игнорируются,
восстанавливаются
до их
первоначальных
значений в
подоболочке
или среде
подоболочек,
когда она
создается.
Возвращаемый
статус
равен false,
если
какой-либо
сигнал sigspec
является
недопустимым;
в
противном
случае trap
возвращает
true.
- true
- Ничего не
делает,
возвращает
статус 0.
- type [-aftpP]
name [name ...]
- Указывает
как будет
интерпретироваться
каждое name,
если оно
будет
использоваться
в качестве
названия
команды.
- Если
используется
опция -t, то
команда type
выводит
строку,
которая
является
одной из alias,
keyword, function, builtin или
file, если name
является
псевдонимом,
зарезервированным
в оболочке
словом,
функцией,
встроенным
или
исполняемым
файлом,
соответственно.
Если name не
найдено, то
команда type
ничего не
выводит и
возвращает
ненулевой
статус
завершения.
- Если
используется
опция -p, type
либо
возвращает
путь к
исполняемому
файлу,
который
можно было
бы найти,
выполнив
поиск в $PATH
для name, либо
ничего,
если “type -t name”
не
возвращает
file. Опция -P
заставляет
выполнять
поиск в PATH
для
каждого name,
даже если
“type -t name” не
будет
возвращать
file. Если name
присутствует
в таблице
хэшированных
команд, то
-p и -P
выводят
хэшированное
значение,
которое не
обязательно
является
файлом,
который
появляется
первым в
PATH.
- Если
используется
опция -a, то
команда type
выводит
все места,
содержащие
команду с
названием
name. Сюда
входят
псевдонимы,
зарезервированные
слова,
функции и
встроенные
команды, но
можно
указать
опции
поиска по
пути (-p и -P),
чтобы
ограничить
вывод
исполняемыми
файлами. type
не
обращается
к таблице
хэшированных
команд при
использовании
-a с -p, а
выполняет
только
поиск в PATH
для name.
- Опция -f
подавляет
поиск
функции
оболочки,
как и в
случае со
встроенной
командой
command. Команда
type
возвращает
значение true,
если
найдены
все
аргументы
и значение
false, если ни
один из
аргументов
не найден.
- ulimit [-HS]
-a
- ulimit
[-HS] [-bcdefiklmnpqrstuvxPRT [limit]]
- Обеспечивает
контроль
над
ресурсами,
доступными
оболочке и
запускаемым
ею
процессам,
в системах,
которые
допускают
такой
контроль.
- Опции -H и -S
определяют,
будет ли
для
данного
ресурса
установлен
жесткий
или мягкий
лимит.
Пользователь,
не имеющий
прав
администратора
root, не может
увеличить
жесткий
лимит
после его
установки;
мягкий
лимит
может быть
увеличен
до
значения
жесткого
лимита.
Если не
указаны ни
-H, ни -S, то ulimit
устанавливает
как мягкие,
так и
жесткие
лимиты.
- Значением
limit может
быть число
в единицах
измерения,
указанных
для
ресурса
или одно из
специальных
значений
hard, soft или unlimited,
которые
обозначают
текущий
жесткий
лимит,
текущий
мягкий
лимит и
отсутствие
лимитов,
соответственно.
Если
значение
limit опущено,
то ulimit
выводит
текущее
значение
мягкого
лимита
ресурса,
если
только не
задана
опция -H.
Если
указано
более
одного
ресурса, то
перед
значением
выводятся
название
лимита и
единица
измерения,
если это
необходимо.
Другие
варианты
интерпретируются
следующим
образом:
- -a
- Сообщать
обо всех
текущих
лимитах;
никакие
лимиты не
установлены.
- -b
- Максимальный
размер
буфера
сокета.
- -c
- Максимальный
размер
создаваемых
основных
файлов.
- -d
- Максимальный
размер
сегмента
данных
процесса.
- -e
- Максимальный
приоритет
планирования
( “nice”).
- -f
- Максимальный
размер
файлов,
записываемых
оболочкой
и ее
дочерними
элементами.
- -i
- Максимальное
количество
ожидающих
сигналов.
- -k
- Максимальное
количество
k-очередей,
которое
может быть
выделено.
- -l
- Максимальный
размер,
который
может быть
сохранен в
памяти.
- -m
- Максимальный
размер
резидентного
набора
(многие
системы не
соблюдают
этот
лимит).
- -n
- Максимальное
количество
открытых
файловых
дескрипторов
(большинство
систем не
позволяют
устанавливать
это
значение).
- -p
- Размер
канала в
512-байтовых
блоках (это
может быть
не задано).
- -q
- Максимальное
количество
байт в
очередях
сообщений
POSIX
- -r
- Максимальный
приоритет
планирования
в режиме
реального
времени.
- -s
- Максимальный
размер
стека.
- -t
- Максимальное
количество
процессорного
времени в
секундах.
- -u
- Максимальное
количество
процессов,
доступных
одному
пользователю.
- -v
- Максимальный
объем
виртуальной
памяти,
доступный
оболочке и,
в
некоторых
системах,
ее
дочерним
элементам.
- -x
- Максимальное
количество
блокировок
файлов.
- -P
- Максимальное
количество
псевдотерминалов.
- -R
- Максимальное
время, в
течение
которого
процесс
реального
времени
может
выполняться
до
блокировки,
в
микросекундах.
- -T
- Максимальное
количество
потоков.
Если
указан limit, а
опция -a не
используется,
то новым
значением
указанного
ресурса
будет limit.
Если опция
не указана,
то
предполагается
значение
-f.
Значения
указаны с
шагом в 1024
байта, за
исключением
-t, которое
измеряется
в секундах;
-R, которое
измеряется
в
микросекундах;
-p, которое
измеряется
в блоках по
512 байт; -P, -T, -b,
-k, -n и -u,
которые
являются
немасштабированными
значениями;
а в режиме posix,
также -c и -f,
которые
имеют шаг в
512 байт.
Возвращаемый
статус
равен 0, если
только не
указана
недопустимая
опция или
аргумент
или не
произошла
ошибка при
установке
нового
лимита.
- umask [-p]
[-S] [mode]
- Установить
для маски
создания
пользовательского
файла
значение
режима mode.
Если mode
начинается
с цифры, то
это
интерпретируется
как
восьмеричное
число; в
противном
случае это
интерпретируется
как
символьная
маска
режима,
аналогичная
той,
которая
принята в
chmod(1). Если
опция mode
опущена, то
umask выводит
текущее
значение
маски.
Опция -S
без
аргумента
mode выводит
маску в
символьном
формате; по
умолчанию
выводится
восьмеричное
число. Если
указана
опция -p, а
опция mode
опущена, то
выходные
данные
будут
представлены
в формате,
который
может быть
повторно
использован
в качестве
входных
данных.
Возвращаемый
статус
равен нулю,
если режим
был
успешно
изменен
или если
аргумент
mode не был
указан и
отличен от
нуля в
противном
случае.
- unalias
[-a] [name ...]
- Удалить
все
названия
name из
списка
определенных
псевдонимов.
Если
указано
значение
-a, то
удалить
все
определения
псевдонимов.
Возвращаемое
значение
равно true, за
исключением
того
случая,
когда
указанное
name не
является
определением
псевдонима.
- unset [-fv]
[-n] [name ...]
- Для
каждого
названия
name удалить
соответствующую
переменную
или
функцию.
Если
задана
опция -v, то
каждое name
ссылается
на
переменную
оболочки и
эта
переменная
удаляется.
Если
указано
значение
-f, то
каждое
значение
name
ссылается
на функцию
оболочки и
определение
функции
удаляется.
Если
указана
опция -n, а name
является
переменной
с
атрибутом
nameref, то
значение
name будет
отменено,
но не
значение
переменной,
на которую
оно
ссылается.
Опция -n не
действует,
если
указана
опция -f.
Переменные
и функции,
доступные
только для
чтения, не
могут быть
отключены.
Когда
переменные
или
функции
удаляются,
то они
также
удаляются
из среды,
передаваемой
последующим
командам.
Если опции
не указаны,
то каждое
name
ссылается
на
переменную;
если
переменной
с таким
наименованием
нет, то
функция с
таким
наименованием,
если
таковая
имеется, не
задана.
Некоторые
переменные
оболочки
могут быть
не заданы.
Если
какая-либо
переменная
из BASH_ALIASES,
BASH_ARGV0, BASH_CMDS,
BASH_COMMAND, BASH_SUBSHELL,
BASHPID, COMP_WORDBREAKS,
DIRSTACK, EPOCHREALTIME,
EPOCHSECONDS, FUNCNAME,
GROUPS, HISTCMD,
LINENO, RANDOM,
SECONDS или
SRANDOM не
заданы, то
они теряют
свои
особые
свойства,
даже если
впоследствии
они будут
сброшены.
Статус
выхода
равен true, за
исключением
того
случая,
когда
указанное
name не
доступно
только для
чтения или
не может
быть
сброшено.
- wait [-fn]
[-p varname] [id ...]
- Ожидать
завершения
каждого
указанного
дочернего
процесса id
и вернуть
статус
завершения
последнего
идентификатора
id. Каждый id
может быть
идентификатором
процесса
pid или
спецификацией
задания jobspec;
если
указана
спецификация
задания, то
wait ожидает
завершения
всех
процессов
в задании.
- Если опции
или
идентификаторы
id не
указаны, то
команда wait
ожидает
выполнения
всех
запущенных
фоновых
заданий и
замены
последнего
выполненного
процесса,
если его
идентификатор
процесса
совпадает
с $!, а
статус
возврата
равен
нулю.
- Если
задана
опция -n, то
wait ожидает
завершения
любого из
заданных
идентификаторов
id или, если
id не
заданы, то
любой
отмены
задания
или
процесса и
возвращает
статус
завершения.
Если ни
один из
предоставленных
идентификаторов
id не
является
дочерним
для
оболочки
или если id
не указаны
и в
оболочке
нет не
ожидаемых
дочерних
элементов,
то статус
выхода
равен 127.
- Если
указана
опция -p, то
wait
присваивает
идентификатор
процесса
или
задания,
для
которого
возвращается
статус
завершения,
переменной
varname,
указанной
в
аргументе
опции.
Переменная,
которая не
может быть
доступна
только для
чтения,
будет
отключена
изначально,
перед
любым
назначением.
Это
полезно
только при
использовании
с опцией -n.
- Установка
опции -f,
когда
включено
управление
заданиями,
заставляет
wait ожидать
завершения
каждого id,
прежде чем
возвращать
его статус,
вместо
возврата
при
изменении
статуса.
- Если ни
один из
идентификаторов
id не
указывает
ни на один
из
активных
дочерних
процессов
оболочки,
то
возвращаемый
статус
равен 127.
Если wait
прерывается
сигналом,
то любое varname
останется
неустановленным,
а статус
возврата
будет
больше 128,
как
описано в
разделе
СИГНАЛЫ above.
В
противном
случае
возвращаемым
статусом
будет
статус
выхода
последнего
id.
РЕЖИМ
СОВМЕСТИМОСТИ
ОБОЛОЧКИ
В Bash-4.0
введена
концепция
"уровня
совместимости
с
оболочкой"
shell compatibility level,
заданная
как набор
опций для
встроенной
команды shopt
(compat31, compat32, compat40, compat41 и
так далее).
Существует
только
единственный
текущий
уровень
совместимости,
каждый из
которых
является
взаимоисключающим.
Уровень
совместимости
предназначен
для того,
чтобы
позволить
пользователям
выбирать
поведение
из
предыдущих
версий,
несовместимое
с новыми
версиями,
при
переносе
сценариев
для
использования
текущих
функций и
поведения.
Это
временное
решение.
В этом
разделе не
упоминается
поведение,
которое
является
стандартным
для
конкретной
версии
(например,
установка
compat32
означает,
что в
кавычки в
правой
части
оператора
сопоставления
регулярных
выражений,
заключаются
специальные
символы
регулярных
выражений
в слове, что
является
поведением
по
умолчанию
в bash-3.2 и
последующих
версиях).
Если
пользователь
активирует,
скажем,
уровень compat32,
это может
повлиять
на
поведение
других
уровней
совместимости
вплоть до
текущего
уровня
совместимости,
включительно.
Идея
заключается
в том, чтобы
каждый
уровень
совместимости
управлял
поведением,
которое
изменилось
в данной
версии bash,
но это
поведение
могло
присутствовать
и в более
ранних
версиях.
Например,
изменение
на
использование
сравнений
на основе
локалей с
помощью
команды [[
появилось
в bash-4.1, а в
более
ранних
версиях
использовались
сравнения
на основе ASCII,
поэтому
включение
compat32 также
позволит
проводить
сравнения
на основе ASCII.
Такой
степени
детализации
может быть
недостаточно
для всех
применений
и в
результате
пользователям
следует
внимательно
относиться
к уровням
совместимости.
Ознакомьтесь
с
документацией
по
конкретной
функциональной
возможности,
чтобы
узнать о
текущем
поведении
оболочки.
В Bash-4.3
появилась
новая
переменная
оболочки:
BASH_COMPAT.
Значение,
присвоенное
этой
переменной
(десятичный
номер
версии,
например, 4.2,
или целое
число,
соответствующее
опции compatNN,
например, 42),
определяет
уровень
совместимости.
Начиная с
версии bash-4.4,
оболочка bash
начала
использовать
устаревшие
уровни
совместимости.
В конечном
итоге эти
опции
будут
удалены в
пользу
BASH_COMPAT.
Bash-5.0 была
последней
версией, в
которой
для
предыдущей
версии
была
предусмотрена
отдельная
опция shopt. BASH_COMPAT -
это
единственный
механизм
управления
уровнем
совместимости
в версиях,
более
новых, чем
bash-5.0.
В
следующей
таблице
описаны
изменения
в
поведении,
которые
зависят от
каждого
уровня
совместимости.
Тег compatNN
используется
в качестве
обозначения
для
установки
уровня
совместимости
равным NN с
помощью
одного из
следующих
механизмов.
Для версий,
предшествующих
bash-5.0, уровень
совместимости
может быть
установлен
с помощью
соответствующей
опции compatNN
команды shopt.
Для bash-4.3 и
более
поздних
версий
предпочтительна
переменная
BASH_COMPAT и она
обязательна
для
версии bash-5.1 и
более
поздних
версий.
- compat31
- Кавычки rhs
оператора
сопоставления
регулярных
выражений
команды [[ (=~)
не имеет
особого
эффекта.
- compat32
- Операторы
< и > для
команды [[
не
учитывают
текущую
локаль при
сравнении
строк; они
используют
порядок в
формате ASCII.
- compat40
- Операторы
< и > для
команды [[
не
учитывают
текущую
локаль при
сравнении
строк; они
используют
порядок в
формате ASCII. В
версиях Bash,
предшествующих
bash-4.1,
используется
сортировка
на основе ASCII
и strcmp(3). В bash-4.1 и
более
поздних
версиях
используется
последовательность
сортировки
на основе
текущей
локали и
strcoll(3).
- compat41
- В режиме posix
за
командой
time могут
следовать
опции, но
они все
равно
будет
распознаваться
как
зарезервированные
слова (это
интерпретация
POSIX 267).
- В режиме posix
синтаксический
анализатор
требует,
чтобы
слово word в
части
расширения
параметра,
заключенного
в двойные
кавычки,
было
четным
количеством
одинарных
кавычек и
они
обрабатываются
синтаксическим
анализатором
особым
образом:
символы
внутри
одинарных
кавычек
считаются
заключенными
в кавычки
(это
интерпретация
POSIX 221).
- compat42
- Строка
замены при
замене
шаблона с
двойными
кавычками
не
подвергается
удалению
кавычек,
как это
происходит
в версиях
после bash-4.2.
- В режиме posix
одинарные
кавычки
считаются
специальными
при
расширении
части
слова word
параметра,
заключенного
в двойные
кавычки и
могут
использоваться
для
заключения
в кавычки
закрывающей
фигурной
скобки или
другого
специального
символа
(это часть
POSIX
интерпретация
221). В более
поздних
версиях
одинарные
кавычки не
являются
чем-то
особенным
в
расширениях
слов,
заключенных
в двойные
кавычки.
- compat43
- Ошибки
расширения
слова
считаются
неустранимыми
ошибками,
которые
приводят к
ошибке
текущей
команды
даже в
режиме posix (по
умолчанию
они
являются
неустранимыми
ошибками,
которые
приводят к
завершению
работы
оболочки).
- При
выполнении
функции
оболочки
состояние
цикла (while/until/и
т.д.) не
сбрасывается,
поэтому break
или continue в
этой
функции
будут
прерывать
или
продолжать
циклы в
контексте
вызова. Bash-4.4 и
более
поздние
версии,
чтобы это
предотвратить,
сбрасывают
состояние
цикла.
- compat44
- Оболочка
устанавливает
значения,
используемые
переменными
BASH_ARGV и BASH_ARGC,
чтобы они
могли
расширяться
до
позиционных
параметров
оболочки,
даже если
расширенный
режим
отладки не
включен.
- Подоболочка
наследует
циклы от
своего
родительского
контекста,
поэтому break
или continue
приведут к
завершению
работы
подоболочки.
В Bash-5.0 и более
поздних
версиях
состояние
цикла
сбрасывается,
чтобы
предотвратить
выход
- Присвоения
переменных,
предшествующие
встроенным
функциям,
таким как
export и readonly,
которые
устанавливают
атрибуты,
продолжают
влиять на
переменные
с тем же
именованием
в
вызывающей
среде, даже
если
оболочка
не
находится
в режиме posix.
- compat50
- Bash-5.1 изменила
способ
генерации
$RANDOM, чтобы
привнести
несколько
больше
случайности.
Если
уровень
совместимости
оболочки
установлен
на 50 или
ниже, то
она
возвращается
к методу из
bash-5.0 и
предыдущих
версий,
поэтому
при
запуске
генератора
случайных
чисел
путем
присвоения
значения
RANDOM будет
получена
та же
последовательность,
что и в bash-5.0.
- Если
хэш-таблица
команд
пуста, то
версии bash,
предшествующие
версии bash-5.1,
выводили
соответствующее
информационное
сообщение,
даже при
выводе
выходных
данных,
которые
могут быть
повторно
использованы
в качестве
входных
данных. Bash-5.1
подавляет
это
сообщение,
когда
указана
опция -l.
- compat51
- Встроенная
команда unset
обрабатывает
попытки
отмены
индексов
массива @ и
*
по-разному
в
зависимости
от того,
является
ли массив
индексированным
или
ассоциативным
и этим
отличается
от
предыдущих
версий.
- Арифметические
команды (
((...)) ) и
арифметические
выражения
могут быть
расширены
более
одного
раза.
- Выражения,
используемые
в качестве
аргументов
для
арифметических
операторов
в условной
команде [[,
могут быть
расширены
более
одного
раза.
- Выражения
в
параметре
подстроки,
заключенные
в скобки,
могут быть
расширены
более
одного
раза.
- Выражения
в
расширении
слова $((...))
могут быть
расширены
более
одного
раза.
- Арифметические
выражения,
используемые
в качестве
индексированных
нижних
индексов
массива,
могут быть
расширены
более
одного
раза.
- Команд test -v,
при
задании
аргумента
A[@], где A -
существующий
ассоциативный
массив,
возвращает
значение true,
если в
массиве
существуют
какие-либо
заданные
элементы. Bash-5.2
будет
искать
ключ с
именованием
@ и
сообщать о
нем в
отчете.
- Расширение
слова
${parameter[:]=value}
вернет
значение
value до того,
как будут
выполнены
какие-либо
преобразования,
относящиеся
к
конкретной
переменной
(например,
преобразование
в нижний
регистр). Bash-5.2
вернет
окончательное
значение,
присвоенное
переменной.
- Синтаксический
анализ
подстановок
команд
будет
работать
так, как
если бы
была
включена
расширенная
глобализация
(смотрите
описание
встроенной
команды shopt
выше), так
что
синтаксический
анализ
подстановки
команд,
содержащей
шаблон
внешнего
слоя
(например,
как части
функции
оболочки),
не
приведет к
ощибке.
Предполагаемая
цель
заключается
в том,
чтобы
включить
внешний
слой (extglob)
перед
выполнением
команды и
расширением
слова. Во
время
расширения
слова
произойдет
ошибка,
если
внешний
слой не был
включен к
моменту
выполнения
команды.
- compat52
- Встроенная
команда test
использует
свой
исторический
алгоритм
для
анализа
подвыражений,
заключенных
в круглые
скобки, при
задании
пяти или
более
аргументов.
- Если опции
-p или -P
указаны во
встроенной
команде bind,
то bind
обрабатывает
все
аргументы,
оставшиеся
после
обработки
опции, как
именования
команд,
которые
можно
привязать
и
отображает
любые
последовательности
клавиш,
привязанные
к этим
командам,
вместо
того, чтобы
обрабатывать
аргументы
как
последовательности
клавиш для
привязки.
ОГРАНИЧЕННАЯ
ОБОЛОЧКА
Если bash
запускается
с
названием
rbash или при
вызове
указывается
опция -r, то
оболочка
становится
ограниченной
restricted.
Оболочка с
ограниченным
доступом
используется
для
настройки
окружающей
среды,
более
контролируемой,
чем в
стандартной
оболочке.
Она ведет
себя
аналогично
bash, за
исключением
того, что
следующие
действия
запрещены
или не
выполняются:
- Изменение
каталогов
с помощью
cd.
- Задание
или отмена
значений
SHELL, PATH,
HISTFILE, ENV
или BASH_ENV.
- Указание
названий
команд,
содержащих
/.
- Указание
названия
файла,
содержащего
/ в
качестве
аргумента
встроенной
команды ..
- Использование
опции -p
для
встроенной
команды .,
чтобы
указать
путь
поиска.
- Указание
названия
файла,
содержащего
косую
черту, в
качестве
аргумента
встроенной
команды
history.
- Указание
названия
файла,
содержащего
косую
черту, в
качестве
аргумента
опции -p
для
встроенной
команды hash.
- Импорт
определений
функций из
окружающей
среды
оболочки
при
запуске.
- Анализ
значений
BASHOPTS и SHELLOPTS
из
окружающей
среды
оболочки
при
запуске.
- Перенаправление
вывода с
использованием
операторов
перенаправления
>, >|, <>, >&, &> и >>.
- Использование
встроенной
команды
оболочки
exec для
замены
другой
командой.
- Добавление
или
удаление
встроенных
команд с
опциями -f
и -d для
встроенной
команды
enable.
- Использование
встроенной
команды enable
для
включения
или
отключения
встроенных
команд
оболочки.
- Указание
опции -p
для
встроенной
команды
command.
- Отключение
ограниченного
режима с
помощью
команды set +r
или shopt -u restricted_shell.
Эти
ограничения
вступают в
силу после
чтения
любых
файлов
запуска.
When a command that is found to be a shell script is executed (see
COMMAND EXECUTION above), rbash
отключает
все
ограничения
в оболочке,
созданной
для
выполнения
скрипта.
СМОТРИТЕ
ТАКЖЕ
ФАЙЛЫ
- /bin/bash
- Исполняемый
файл bash
- /etc/profile
- Общесистемный
файл
инициализации,
выполняемый
для входа в
оболочку
- /etc/bash.bashrc
- Общесистемный
файл
запуска
для каждой
интерактивной
оболочки
- /etc/bash.bash.logout
- При входе в
оболочку
общесистемный
файл,
выполняемый
при выходе
из
оболочки,
очищается
- ~/.bash_profile
- Файл
персональной
инициализации,
выполняемый
для входа в
оболочку
- ~/.bashrc
- Отдельный
файл
запуска
для каждой
интерактивной
оболочки
- ~/.bash_logout
- Отдельный
файл
очистки
оболочки,
выполняемый
при выходе
из
оболочки
- ~/.bash_history
- Значение
по
умолчанию
для HISTFILE,
файла, в
котором bash
сохраняет
историю
команд
- ~/.inputrc
- Отдельный
файл
инициализации
readline
АВТОРЫ
Брайан
Фокс (Brian Fox).
Фонд
свободного
программного
обеспечения
bfox@gnu.org
Чет Рейми
(Chet Ramey).
Университет
Case Western Reserve
chet.ramey@case.edu
СООБЩЕНИЯ
ОБ ОШИБКАХ
Если вы
обнаружите
ошибку в bash,
то просим
сообщить
нам об этом.
Но сначала
просим вас
убедиться,
что это
действительно
ошибка и
что она
присутствует
в
последней
версии bash.
Последняя
версия
всегда
доступна
на сайтах
ftp://ftp.gnu.org/pub/gnu/bash/ и
http://git.savannah.gnu.org/cgit/bash.git/snapshot/bash-master.tar.gz.
Как
только вы
определите,
что ошибка
действительно
существует,
то
используйте
команду bashbug,
чтобы
отправить
отчет об
ошибке.
Если у вас
есть
исправление,
то просим
вас также
отправить
его по
электронной
почте! Вы
можете
присылать
предложения
и “philosophical”
сообщения
об ошибках
в bug-bash@gnu.org или
опубликовывать
их в группе
новостей Usenet
gnu.bash.bug.
ВСЕ
сообщения
об ошибках
должны
содержать:
- Номер
версии bash
- Аппаратурные
средства и
операционную
систему
- Компилятор,
используемый
для
компиляции
- Описание
поведения
ошибки
- Скрипт short
или
- “recipe”
существующее
исправление
ошибки
bashbug
автоматически
вставляет
первые три
элемента в
шаблон,
который
она
предоставляет
для
отправки
отчета об
ошибке.
Комментарии
и
сообщения
об ошибках,
касающиеся
этой
страницы
руководства,
следует
направлять
chet.ramey@case.edu.
ОШИБКИ
Она
слишком
большая и
слишком
медленная.
Существуют
некоторые
небольшие
различия
между bash и
традиционными
версиями sh,
в основном,
это - из-за
спецификации
POSIX
В
некоторых
случаях
использование
псевдонимов
приводит к
путанице.
Встроенные
в оболочку
команды и
функции не
подлежат
останову
или
перезапуску.
Составные
команды и
списки
команд
вида “a ; b ; c” не
обрабатываются
корректно
в
сочетании
с
приостановкой
процесса.
Когда
процесс
останавливается,
оболочка
немедленно
выполняет
следующую
команду в
списке или
прерывает
все
существующие
циклы.
Достаточно
заключить
команду в
круглые
скобки и
поместить
ее в
подоболочку,
которая
может быть
остановлена
как единое
целое или
запустить
команду в
фоновом
режиме и
немедленно
вывести ее
на
передний
план.
Переменные
массива
могут быть
(пока) не
экспортированы.
ПЕРЕВОД
Русский
перевод
этой
страницы
руководства
разработал(и)
Aleksandr Felda <isk8da@gmail.com>
Этот
перевод
является
свободной
программной
документацией;
он
распространяется
на
условиях
общедоступной
лицензии GNU (GNU
General Public License - GPL,
https://www.gnu.org/licenses/gpl-3.0.html
версии 3 или
более
поздней) в
отношении
авторского
права, но
БЕЗ
КАКИХ-ЛИБО
ГАРАНТИЙ.
Если вы
обнаружите
какие-либо
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
сообщите
об этом
разработчику(ам)
по его(их)
адресу(ам)
электронной
почты или
по адресу
списка
рассылки
русских
переводчиков.