GNU Readline

GNU readline
Typ Knihovna
Autor Brian Fox
Vývojář Chet Ramay
Zapsáno v C
Operační systém Rozličný
První vydání 1989
Nejnovější verze
Licence GNU General Public License
webová stránka www.case.edu/php/chet…

GNU readline  je bezplatná knihovna pro rozhraní příkazového řádku a zpracování řádku. Vytvořeno a spravováno projektem GNU . Knihovna je distribuována za podmínek GNU General Public License . Nejnovější verze knihovny umožňují pracovat s vícebajtovým kódováním ( Unicode ).

Například při zadávání řádku pomocí readline se stisknutím Cb ( Ctrl+ B) přesune kurzor o jednu pozici zpět, zatímco Ctrl+ Fposune kurzor o jednu pozici dopředu; stisknutí Ctrl+ Rumožňuje vyhledávat příkazy mezi dříve zadanými; použití těchto kláves pochází z jednoho z nejstarších a nejpopulárnějších programů projektu GNU, textového editoru Emacs (výchozí přiřazení kláves jsou popsána, ale toto přiřazení lze změnit tak, aby bylo podobné tomu, které se používá v editoru vi ). Readline navíc podporuje schránku a výplň názvu příkazu na prvních znacích při stisknutí klávesy Tab ↹. Readline je multiplatformní knihovna, což znamená, že umožňuje mnoha programům zachovat stejné chování, když uživatel zadá řetězec, a to i při přechodu na jinou platformu.

Konfigurace a příklady

Po instalaci readline bude užitečné upravit možnosti úprav na příkazovém řádku. Chcete-li to provést, musíte upravit jeden z konfiguračních souborů:

Mějte na paměti, že readline je knihovna, nikoli samostatný nástroj, takže programy, které používají readline, mohou mít své vlastní konfigurační soubory, které definují chování knihovny pro speciální účely.

Formát konfiguračního souboru

Klávesové zkratky

příkaz bind .

Zajímavé příklady maker

V konfiguračních souborech můžete kromě prostého přeřazení editačních funkcí novým „klávesovým zkratkám“ vytvářet docela netriviální makra pro provádění speciálních úkolů. Zde jsou nějaké příklady:

Netriviální příklady

Kromě zadávání textu a provádění funkcí úprav lze klávesám přiřadit okamžité spouštění programů nebo skriptů. Navíc můžete text vrácený během provádění programů použít k vložení do editovaného řádku. Můžete například naprogramovat readline tak, že když zadáte určitý příkaz jako jeho argumenty, můžete pomocí funkce interaktivně nahradit Tab ↹nejen názvy souborů / adresářů, ale také určité parametry specifické pro tento konkrétní příkaz. Chcete-li nastavit automatické dokončování, použijte příkaz complete .

Ukázkový kód

Následující kód je napsán v 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 ]; pro (;;) { // získání cesty aktuálního uživatele snprintf ( shell_prompt , sizeof ( shell_prompt ), "%s:%s $ " , getenv ( "USER" ), getcwd ( NULL , 1024 )); // zadávání... input = readline ( shell_prompt ); // pokud ( ! vstup ) zlomit ; // automatické dokončování cesty, když se v tabulce stiskne rl_bind_key ( '\t' , rl_complete ); // přidání předchozího vstupu do historie add_history ( input ); /* dělat věci */ // Protože volání readline() alokuje paměť, ale neuvolňuje (ale vrací), musí být tato paměť vrácena (uvolněna). zdarma ( vstup ); } }

Poznámky

  1. ↑ Vydání Ramey C. Readline-8.2 je k dispozici  (v angličtině) – 2022.

Odkazy