GNU Readline

GNU läslinje
Sorts Bibliotek
Författare Brian Fox
Utvecklaren Chet Ramay
Skrivet i C
Operativ system Olika
Första upplagan 1989
senaste versionen
Licens GNU General Public License
Hemsida www.case.edu/php/chet…

GNU readline  är ett gratis bibliotek för kommandoradsgränssnitt och radbehandling. Skapad och underhålls av GNU-projektet . Biblioteket distribueras under villkoren i GNU General Public License . De senaste versionerna av biblioteket låter dig arbeta med multibyte-kodningar ( Unicode ).

Till exempel, när du anger en rad med hjälp av readline, trycker du på Cb ( Ctrl+ B) för att flytta markören en position bakåt, medan Ctrl+ Fflyttar markören en position framåt; genom att trycka på Ctrl+ Rkan du söka efter kommandon bland tidigare inmatade; användningen av dessa nycklar kommer från ett av GNU-projektets äldsta och mest populära program, Emacs textredigerare (standardnyckeltilldelningar beskrivs, men denna tilldelning kan ändras till att likna den som används i vi- redigeraren ). Readline stöder dessutom urklipp och utfyllnad av kommandonamnet vid de första tecknen när tangenten trycks ned . Readline är ett plattformsoberoende bibliotek, vilket innebär att det tillåter många program att behålla samma beteende när en användare skriver in en sträng, även när de byter till en annan plattform. Tab ↹

Konfiguration och exempel

Efter installation av readline kommer det att vara användbart att anpassa redigeringsmöjligheterna på kommandoraden. För att göra detta måste du redigera en av konfigurationsfilerna:

Tänk på att readline är ett bibliotek, inte ett fristående verktyg, så program som använder readline kan ha sina egna konfigurationsfiler som definierar bibliotekets beteende för speciella ändamål.

Konfigurationsfilformat

Kortkommandon

bind kommando .

Intressanta exempel på makron

I konfigurationsfiler kan du, förutom att helt enkelt omfördela redigeringsfunktioner till nya "tangentbordsgenvägar", skapa ganska icke-triviala makron för att utföra speciella uppgifter. Här är några exempel:

Icke-triviala exempel

Förutom att skriva in text och utföra redigeringsfunktioner kan nycklar tilldelas för att exekvera program eller skript direkt. Dessutom kan du använda texten som returneras under körningen av program för att infoga den i den redigerade raden. Till exempel kan du programmera readline så att när du anger ett visst kommando som dess argument, kan du interaktivt ersätta med funktionen Tab ↹inte bara namnen på filer/kataloger, utan även vissa parametrar som är specifika för just detta kommando. För att ställa in autokomplettering, använd kommandot complete .

Exempelkod

Följande kod är skriven i 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 ]; för (;;) { // hämtar den aktuella användarens sökväg snprintf ( shell_prompt , sizeof ( shell_prompt ), "%s:%s $ " , getenv ( "USER" ), getcwd ( NULL , 1024 )); // matar in... input = readline ( shell_prompt ); // om ( ! input ) bryta ; // sökväg autokomplettering när tabulering slog rl_bind_key ( '\t' , rl_complete ); // lägga till den tidigare inmatningen i historiken add_history ( input ); /* göra saker */ // Eftersom anropet till readline() allokerar minne, men inte frigör (men returnerar), måste detta minne returneras (frigörs). gratis ( ingång ); } }

Anteckningar

  1. Ramey C. Readline-8.2 Release tillgänglig  (engelska) - 2022.

Länkar