Zum Inhalt springen

GNU Readline

aus Wikipedia, der freien Enzyklopädie
GNU Readline

[[Datei:Lua-Fehler in Modul:Wikidata, Zeile 1703: attempt to index field 'wikibase' (a nil value)|150px]]
Basisdaten

Maintainer Lua-Fehler in Modul:Wikidata, Zeile 1703: attempt to index field 'wikibase' (a nil value)
Entwickler Brian Fox, Chet Ramey
Erscheinungsjahr Lua-Fehler in Modul:Wikidata, Zeile 1703: attempt to index field 'wikibase' (a nil value)
Aktuelle Version Lua-Fehler in Modul:Wikidata, Zeile 1703: attempt to index field 'wikibase' (a nil value)
(Lua-Fehler in Modul:Wikidata, Zeile 1703: attempt to index field 'wikibase' (a nil value))
Aktuelle Vorabversion Lua-Fehler in Modul:Wikidata, Zeile 1703: attempt to index field 'wikibase' (a nil value)
(Lua-Fehler in Modul:Wikidata, Zeile 1703: attempt to index field 'wikibase' (a nil value))
Betriebssystem plattformübergreifend
Programmier­sprache C
Lizenz GNU General Public License
The GNU Readline Library

GNU Readline ist eine vom GNU-Projekt erstellte und gewartete Programmbibliothek mit Funktionen zum Bearbeiten von Zeilen. Sie steht unter der GPL und wird in Projekten wie zum Beispiel bash genutzt. Ab Version 6.1 unterstützt readline auch Unicode-Zeichen.

Unterstützt ein Programm readline, so bewegt beispielsweise der Druck auf Strg + B den Cursor ein Zeichen zurück, Strg + F bewegt den Cursor ein Zeichen vorwärts und Strg + R durchsucht die Befehlspuffer. Diese standardmäßigen Tastenkombinationen stammen von einem der ersten GNU-Projekte, dem Texteditor Emacs. Readline unterstützt eine Vielzahl einfacher Funktionen, wie beispielsweise einen sogenannten „{{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value)“ (eine flexiblere Variante einer Zwischenablage) und Befehlszeilenergänzung. Da es sich um eine plattformübergreifende Bibliothek handelt, erlaubt readline Anwendern das gleiche Zeilenbearbeitungsverhalten auf verschiedenen Betriebssystemen.

Readline lässt sich mit Hilfe einer Konfigurationsdatei anpassen, die für den Benutzer gilt (~/.inputrc) oder programmspezifisch sein kann. In dieser Datei ist es möglich, eigene Tastenkombinationen zu definieren und diverse andere Einstellungen zu ändern.

Beispiel in C[Bearbeiten]

<syntaxhighlight lang="cpp">

  1. include <stdlib.h>
  2. include <stdio.h>
  3. include <unistd.h>
  4. include <readline/readline.h>
  5. include <readline/history.h>

int main() {

   char* input, shell_prompt[100];
   for(;;) {
       // Configure readline to auto-complete paths when the tab key is hit.
       rl_bind_key('\t', rl_complete);
       // Create prompt string from user name and current working directory.
       snprintf(shell_prompt, sizeof(shell_prompt), "%s:%s $ ", getenv("USER"), getcwd(NULL, 1024));
       // Display prompt and read input (n.b. input must be freed after use)...
       input = readline(shell_prompt);
       // Check for EOF.
       if (!input)
           break;
       // Add input to history.
       add_history(input);
       // Do stuff...
       // Free input.
       free(input);
   }

} </syntaxhighlight>

Weblinks[Bearbeiten]

Einzelnachweise[Bearbeiten]

<references />