Spec-Zone.ru › Bash

Условные конструкции инициализации

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 и от аргумента с номером версии. В следующем примере задаётся переменная, если используемая версия 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 и их значений. Допустимые операторы сравнения: «=», «==» и «!=». Имя переменной должно отделяться от оператора сравнения пробелами; оператор может отделяться пробелами от значения справа. Можно проверять строковые и логические переменные. Логические переменные необходимо сравнивать со значениями on и off. Следующий пример эквивалентен проверке mode=emacs, описанной выше:

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

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

$endif

Эта команда, как видно из предыдущего примера, завершает команду $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