Spec-Zone.ru › Bash

Конструкции условной инициализации

Readline реализует механизм, аналогичный функциям условной компиляции в препроцессоре C, позволяющий выполнять привязку клавиш и настройки переменных в результате проверки условий. Используются четыре директивы парсера.

$if

Конструкция $if позволяет устанавливать привязки на основе режима редактирования, используемого терминала или приложения, использующего Readline. Текст проверки, после любого оператора сравнения, продолжается до конца строки; если не указано иное, для его изоляции не требуются никакие символы.

mode

Форма директивы $if mode= используется для проверки, находится ли Readline в режиме emacs или vi. Это может использоваться совместно с командой «set keymap», например, для установки привязок только в картах клавиш emacs-standard и emacs-ctlx, если Readline запускается в режиме emacs.

term

Форма term= может использоваться для включения привязок клавиш, специфичных для терминала, возможно, для привязки последовательностей клавиш, создаваемых функциями клавиш терминала. Слово справа от «=» проверяется как против полного имени терминала, так и против части имени терминала до первой «-». Это позволяет sun сопоставляться как с sun, так и с sun-cmd, например.

version

Тест version может использоваться для сравнения с конкретными версиями Readline. version представляет текущую версию Readline. Набор операторов сравнения включает «=» (и «==»), «!=», «<=», «>=», «<» и «>». Номер версии, указанный справа от оператора, состоит из номера основной версии, необязательной десятичной точки и необязательного номера дополнительной версии (например, «7.1»). Если дополнительная версия опущена, предполагается, что она равна «0». Оператор может быть отделен от строки version и от аргумента номера версии пробелами. Следующий пример устанавливает переменную, если используемая версия Readline 7.0 или более поздняя:

$if version >= 7.0
set show-mode-in-prompt on
$endif
application

Конструкция application используется для включения настроек, специфичных для приложения. Каждая программа, использующая библиотеку Readline, устанавливает имя приложения, и вы можете проверить значение на предмет соответствия. Это может использоваться для привязки последовательностей клавиш к функциям, полезным для конкретной программы. Например, следующая команда добавляет последовательность клавиш, которая заключает в кавычки текущее или предыдущее слово в Bash:

$if Bash
# Quote the current or previous word
"\C-xq": "\eb\"\ef\""
$endif
variable

Конструкция variable предоставляет простые тесты равенства для переменных и значений Readline. Разрешенные операторы сравнения — «=», «==» и «!=». Имя переменной должно быть отделено от оператора сравнения пробелом; оператор может быть отделен от значения справа пробелом. Проверяются как строковые, так и логические переменные. Логические переменные должны проверяться на соответствие значениям включено и выключено. Следующий пример эквивалентен тесту mode=emacs описанному выше:

$if editing-mode == emacs
set show-mode-in-prompt on
$endif
$endif

Эта команда, как видно в предыдущем примере, завершает команду $if.

$else

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

$include

Эта директива принимает в качестве аргумента имя файла и считывает команды и привязки из этого файла. Например, следующая директива считывает из /etc/inputrc:

$include /etc/inputrc

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

Spec-Zone.ru

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