GNU readline — свободная библиотека для интерфейса командной строки и обработки строк. Создана и поддерживается в рамках проекта GNU. Библиотека распространяется на условиях GNU General Public License. Текущая версия библиотеки — 6.0. Последние версии библиотеки позволяют работать с многобайтовыми кодировками (Unicode).
Например, при вводе строки с использованием readline, нажатие C-b (CTRL-B) передвигает курсор на одну позицию назад, тогда как C-f передвигает курсор на одну позицию вперёд; нажатие C-r позволяет произвести поиск команд среди ранее введённых; использование этих клавиш пришло из одной из старейших и популярнейших программ проекта GNU — текстового редактора Emacs (описаны назначенные по умолчанию клавиши, но это назначение можно изменить, сделав его подобным применяемому в редакторе vi). Кроме того, readline поддерживает буфер обмена и дополнение имени команды по первым символам при нажатии клавиши TAB. Readline является кросс-платформеной библиотекой, а значит позволяет многим программам сохранить одинаковое поведение при вводе строки пользователем даже при переходе на другую платформу.
Содержание
Конфигурация и примеры
После установки readline полезно будет настроить под себя возможности редактирования в командной строке. Для этого нужно отредактировать один из конфигурационных файлов:
- /etc/inputrc — глобальный файл конфигурации для всех пользователей;
- ~/.inputrc — файл конфигурации для отдельных пользователей, хранимый в их домашнем каталоге;
Не следует забывать readline является библиотекой, а не самостоятельной утилитой, и поэтому те программы, которые используют readline могут иметь собственные файлы конфигурации, в которых определяется поведение библиотеки для решения специальных задач.
Формат файла конфигурации
- Комментарии — начинаются с символа #
- Назначения значений переменным конфигурации — пример: set meta-flag on
- Управляющие директивы — примеры: $if mode=emacs
- Назначения функций или макросов клавиатурным сочетаниям (англ. keyseq) —
Этот раздел не завершён. Вы поможете проекту, исправив и дополнив его. |
Клавиатурные сочетания
Команда bind.
Интересные примеры макросов
В файлах конфигурации помимо простого переназначения функций редактирования новым «клавиатурным сочетаниям» можно создать достаточно нетривиальные макросы для выполнения специальных задач. Вот несколько примеров.
- «e[11~»:»C-aman » — При нажатии в начало строки выводиться ;
- «ee»:»C-a/etc/init.d/ restarteOdC-b » — При одновременном нажатии ALT+E (или последовательном ESC E) в начало командной строки вводиться текст /etc/init.d/ restart, после чего курсор сдвигается на одно слово и символ назад и имитируется нажатие клавиши TAB. Это позволяет вывести список служб и выбора одной из них для перезапуска в системе Gentoo Linux.
- «ew»:»ping -c 3 -w 5 -R rbc.rueOdeOd» —
Нетривиальные примеры
Помимо ввода текста и выполнения функций редактирования клавишам можно назначить немедленное выполнение программ или сценариев. Причём можно использовать возвращаемый в ходе выполнения программ текст для вставки его в редактируемую строку. Например, можно запрограммировать readline, чтобы при вводе определённой команды в качестве её аргументов можно было интерактивно подставлять с помощью функции TAB не только имена файлов/каталогов но и определённые параметры, специфичные именно для этой команды. Для настройки автодополнения используют команду complete.
См. также
- проект GNU
- Командная оболочка bash использует библиотеку readline
Ссылки
- Домашняя страница GNU readline
- библиотека The Tecla — аналог readline, распространяется на условиях MIT-подобной лицензии.
- библиотека libedit — аналог readline, распространяется на условиях Лицензия BSD.