GNU readline | это... Что такое GNU readline? (original) (raw)

GNU readline

Тип Библиотека
Автор Брайан Фокс
Разработчик Чет Рамэй
Написана на C
Операционная система Различные
Первый выпуск 1989
Последняя версия 6.2 (14 февраля 2011)
Лицензия GNU General Public License
Сайт Официальный вебсайт

GNU readlineсвободная библиотека для интерфейса командной строки и обработки строк. Создана и поддерживается в рамках проекта GNU. Библиотека распространяется на условиях GNU General Public License. Текущая версия библиотеки — 6.1. Последние версии библиотеки позволяют работать с многобайтовыми кодировками (Unicode).

Например, при вводе строки с использованием readline, нажатие C-b ( Ctrl + B ) передвигает курсор на одну позицию назад, тогда как Ctrl + F передвигает курсор на одну позицию вперёд; нажатие Ctrl + R позволяет произвести поиск команд среди ранее введённых; использование этих клавиш пришло из одной из старейших и популярнейших программ проекта GNU — текстового редактора Emacs (описаны назначенные по умолчанию клавиши, но это назначение можно изменить, сделав его подобным применяемому в редакторе vi). Кроме того, readline поддерживает буфер обмена и дополнение имени команды по первым символам при нажатии клавиши Tab ⇆ . Readline является кросс-платформеной библиотекой, а значит позволяет многим программам сохранить одинаковое поведение при вводе строки пользователем даже при переходе на другую платформу.

Содержание

Конфигурация и примеры

После установки readline полезно будет настроить под себя возможности редактирования в командной строке. Для этого нужно отредактировать один из конфигурационных файлов:

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

Формат файла конфигурации

Клавиатурные сочетания

Команда bind.

Интересные примеры макросов

В файлах конфигурации помимо простого переназначения функций редактирования новым «клавиатурным сочетаниям» можно создать достаточно нетривиальные макросы для выполнения специальных задач. Вот несколько примеров:

Нетривиальные примеры

Помимо ввода текста и выполнения функций редактирования клавишам можно назначить немедленное выполнение программ или сценариев. Причём можно использовать возвращаемый в ходе выполнения программ текст для вставки его в редактируемую строку. Например, можно запрограммировать readline, чтобы при вводе определённой команды в качестве её аргументов можно было интерактивно подставлять с помощью функции Tab ⇆ не только имена файлов/каталогов, но и определённые параметры, специфичные именно для этой команды. Для настройки автодополнения используют команду complete.

Пример кода

Следующий код написан на C :

#include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <readline/readline.h> #include <readline/history.h>

int main() { char* input, shell_prompt[100];

for(;;)
{
    // getting the current user 'n path
    snprintf(shell_prompt, sizeof(shell_prompt), "%s:%s $ ", getenv("USER"), getcwd(NULL, 1024));
    // inputing...
    input = readline(shell_prompt);
    // eof
    if (input==NULL)
        break;
    // path autocompletion when tabulation hit
    rl_bind_key('\t', rl_complete);
    // adding the previous input into history
    add_history(input);

    /* do stuff */

    // Т.к. вызов readline() выделяет память, но не освобождает(а возвращает), то эту память нужно вернуть(освободить).
    free(input);
}

}

Ссылки

Просмотр этого шаблона Проект GNU
История Манифест GNUПроект GNUФонд свободного программного обеспечения (история) Heckert GNU white.svg
Лицензии GNU GPLGNU LGPLAffero GPLGNU FDL • GPL linking exception
Программноеобеспечение GNU (варианты) • HurdGNOMEBashGCC • GNU EmacsglibcGNU CoreutilsAutotoolsGNUnetGNUzilla (IceCat) • Gnashдругие пакеты
Персоналии Александре Олива • Бенджамин Хилл • Брэдли Кун • Эбен Моглен • Федерико Хейнц • Джордж Грив • Георг Греве • Джошуа Гэй • Лоис Дечэри • Мэтт Ли • Рикардо Галли • Ричард Столлман • Роберт Часселл • Вильям Джон Салливан
Другие темы Спор об именовании GNU/LinuxRevolution OSBadVistaDefective by Design