GNU readline

GNU readline
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 полезно будет настроить под себя возможности редактирования в командной строке. Для этого нужно отредактировать один из конфигурационных файлов:

  • /etc/inputrc — глобальный файл конфигурации для всех пользователей;
  • ~/.inputrc — файл конфигурации для отдельных пользователей, хранимый в их домашнем каталоге;

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

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

  • Комментарии — начинаются с символа #
  • Назначения значений переменным конфигурации — пример: set meta-flag on
  • Управляющие директивы — примеры: $if mode=emacs
  • Назначения функций или макросов клавиатурным сочетаниям (англ. keyseq) —

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

Команда bind.

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

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

  • "\e[A~":"\C-aman " — При нажатии  F1  в начало строки добавляется "man "
  • "\ee":"\C-a/etc/init.d/ restart\e[5D\C-b" — При нажатии  Alt  +  E  (или последовательном  Esc   E ) в начало командной строки вводится текст /etc/init.d/ restart, после чего курсор сдвигается на одно слово и символ назад.
  • "\ew":"ping -c 3 -w 5 -R rbc.ru\e[5D\e[5D" — При нажатии  Alt  +  W , выводит ping -c 3 -w 5 -R rbc.ru и переводит курсор к rbc.ru.

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

Помимо ввода текста и выполнения функций редактирования клавишам можно назначить немедленное выполнение программ или сценариев. Причём можно использовать возвращаемый в ходе выполнения программ текст для вставки его в редактируемую строку. Например, можно запрограммировать 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);
    }
}

Ссылки



Wikimedia Foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Полезное


Смотреть что такое "GNU readline" в других словарях:

  • GNU readline — Entwickler Brian Fox, Chet Ramey Aktuelle Version 6.1 (1. Januar 2010) Betriebssystem plattformunabhängig Programmier­sprache C …   Deutsch Wikipedia

  • GNU Readline — Développeur Projet GNU Dernière version …   Wikipédia en Français

  • GNU readline — Infobox Software name = GNU readline developer = Brian Fox, Chet Ramey latest release version = 5.2 latest release date = October 11 2006 operating system = Various programming language = C license = GNU General Public License website =… …   Wikipedia

  • GNU Octave — У этого термина существуют и другие значения, см. Octave. GNU Octave …   Википедия

  • GNU Bash — Bourne Again shell  Ne doit pas être confondu avec batch ou bâche. Bourne Again shell …   Wikipédia en Français

  • Liste des paquets GNU — Article principal : GNU. GNU N est pas Unix Cet article liste les paquets logiciels du système GNU maintenus par le projet GNU et soutenus par la Free Software Foundation. Sommaire …   Wikipédia en Français

  • Liste Des Paquets GNU — GNU N est pas Unix Ceci est une liste des paquets logiciel développés par ou maintenus par la Free Software Foundation pour GNU, un système d exploitation libre, compatible UNIX, dont le développement a débuté en 1984. Un grand nombre de ces… …   Wikipédia en Français

  • Liste des paquets gnu — GNU N est pas Unix Ceci est une liste des paquets logiciel développés par ou maintenus par la Free Software Foundation pour GNU, un système d exploitation libre, compatible UNIX, dont le développement a débuté en 1984. Un grand nombre de ces… …   Wikipédia en Français

  • Список пакетов GNU — Это список программного обеспечения, разрабатываемого Free Software Foundation как часть проекта GNU  UNIX подобной операционной системы состоящей целиком из свободного программного обеспечения. Большая часть из этих пакетов также… …   Википедия

  • CLISP — GNU CLISP Pantalla CLISP Desarrollador …   Wikipedia Español


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»