Bash - командный интерпретатор GNU Bourne


Управляющие конструкции readline


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

$if

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

mode

Форма mode= директивы $if используется для проверки того, работает ли библиотека readline в режиме emacs или vi. Ее можно использовать совместно с командой set keymap, например, для установки горячих клавиш стандарта emacs и раскладки emacs-ctlx только если readline запускается в режиме emacs.

term

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

приложение

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

$if Bash

# Взять в кавычки текущее или предыдущее слово

"\C-xq": "\eb\"\ef\""

$endif

$endif

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

$else

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

$include

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

$include /etc/inputrc



Содержание раздела