Línea de lectura GNU

línea de lectura GNU
Tipo de Biblioteca
Autor Brian zorro
Desarrollador Chet Ramay
Escrito en C
Sistema operativo Varios
Primera edición 1989
ultima versión
Licencia Licencia Pública General GNU
Sitio web www.case.edu/php/chet…

GNU readline  es una biblioteca gratuita para la interfaz de línea de comandos y el procesamiento de línea. Creado y mantenido por el Proyecto GNU . La biblioteca se distribuye bajo los términos de la Licencia Pública General GNU . Las últimas versiones de la biblioteca le permiten trabajar con codificaciones multibyte ( Unicode ).

Por ejemplo, al ingresar una línea usando readline, al presionar Cb ( Ctrl+ B) se mueve el cursor una posición hacia atrás, mientras que Ctrl+ Flo mueve una posición hacia adelante; presionando Ctrl+ Rle permite buscar comandos entre los ingresados ​​previamente; el uso de estas teclas proviene de uno de los programas más antiguos y populares del proyecto GNU, el editor de texto Emacs (se describen las asignaciones de teclas predeterminadas, pero esta asignación se puede cambiar para que sea similar a la utilizada en el editor vi ). Además, readline admite el portapapeles y el relleno del nombre del comando en los primeros caracteres cuando se presiona la tecla Tab ↹. Readline es una biblioteca multiplataforma, lo que significa que permite que muchos programas mantengan el mismo comportamiento cuando un usuario ingresa una cadena, incluso cuando cambia a otra plataforma.

Configuración y ejemplos

Después de instalar readline, será útil personalizar las capacidades de edición en la línea de comandos. Para hacer esto, necesita editar uno de los archivos de configuración:

Tenga en cuenta que readline es una biblioteca, no una utilidad independiente, por lo que los programas que usan readline pueden tener sus propios archivos de configuración que definen el comportamiento de la biblioteca para propósitos especiales.

Formato de archivo de configuración

Atajos de teclado

comando de enlace .

Interesantes ejemplos de macros

En los archivos de configuración, además de simplemente reasignar funciones de edición a nuevos "atajos de teclado", puede crear macros bastante no triviales para realizar tareas especiales. Aquí hay unos ejemplos:

Ejemplos no triviales

Además de ingresar texto y realizar funciones de edición, las teclas se pueden asignar para ejecutar programas o scripts de inmediato. Además, puede utilizar el texto devuelto durante la ejecución de los programas para insertarlo en la línea editada. Por ejemplo, puede programar readline para que cuando ingrese un determinado comando como sus argumentos, pueda sustituir interactivamente usando la función Tab ↹no solo los nombres de los archivos/directorios, sino también ciertos parámetros específicos de este comando en particular. Para configurar el autocompletado, use el comando complete .

Código de ejemplo

El siguiente código está escrito en C  :

#incluir <stdlib.h> #incluir <stdio.h> #include <unistd.h> #include <línea de lectura/línea de lectura.h> #include <línea de lectura/historial.h> int principal () { char * entrada , shell_prompt [ 100 ]; para (;;) { // obtener la ruta del usuario actual snprintf ( shell_prompt , sizeof ( shell_prompt ), "%s:%s $ " , getenv ( "USER" ), getcwd ( NULL , 1024 )); // ingresando... input = readline ( shell_prompt ); // si ( ! entrada ) romper ; // autocompletado de ruta cuando la tabulación golpea rl_bind_key ( '\t' , rl_complete ); // agregar la entrada anterior al historial add_history ( entrada ); /* hacer cosas */ // Dado que la llamada a readline() asigna memoria, pero no la libera (sino que la devuelve), esta memoria debe ser devuelta (liberada). libre ( entrada ); } }

Notas

  1. Ramey C. Readline-8.2 Versión disponible  (inglés) - 2022.

Enlaces