GNU Okuma Hattı - GNU Readline
Orijinal yazar(lar) | Brian Fox |
---|---|
Geliştirici(ler) | Chet Ramey |
İlk sürüm | 1989 |
kararlı sürüm | 8.1 / 7 Aralık 2020
|
depo | |
Yazılmış | C |
Tip | Kütüphane |
Lisans | GNU Genel Kamu Lisansı |
İnternet sitesi | tiswww |
GNU Readline , Bash gibi bir komut satırı arabirimine sahip etkileşimli programlar için satır düzenleme ve geçmiş özellikleri sağlayan bir yazılım kitaplığıdır . Şu anda Chet Ramey tarafından GNU Projesinin bir parçası olarak sürdürülmektedir .
Kullanıcıların metin imlecini hareket ettirmesine, komut geçmişinde arama yapmasına , bir öldürme halkasını (kopyala/yapıştır panosunun daha esnek bir versiyonu) kontrol etmesine ve bir metin terminalinde sekme tamamlamayı kullanmasına olanak tanır . Bir platformlar arası kitaplık olarak readline, çeşitli sistemlerdeki uygulamaların aynı satır düzenleme davranışı sergilemesine izin verir.
Düzenleme modları
Readline, klavye girişinin editör komutları olarak nasıl yorumlanacağını belirleyen hem Emacs hem de vi düzenleme modlarını destekler. Bkz vi ve Emacs arasında Editör savaş # Farklar .
Emacs klavye kısayolları
Emacs düzenleme modu anahtar bağlantıları , metin düzenleyici Emacs'tan alınır .
Bazı sistemlerde, kısayol başka bir kısayolla çakıştığı için Escyerine kullanılmalıdır . Örneğin, pres + içinde XFCE terminal emülatörü penceresinde imleci bir kelime ileri hareket etmez, ama bu öykünücüsü'nın ayarlarında devre dışı bırakılmadığı sürece terminal penceresinin menüsündeki "Dosya" harekete geçirir. AltAltAltf
- Tab ↹ : İmleç konumundan itibaren otomatik tamamlama .
- Ctrl+ a : İmleci satır başlangıcına taşır (tuşuna eşdeğer Home).
- Ctrl+ b : İmleci bir karakter geri hareket ettirir (tuşuna eşdeğer ←).
- Ctrl+ c : Sinyal gönderir SIGINT ile uçbirimsiler geçerli görev, iptal eder ve onu kapatır için.
- Ctrl+d
- Ctrl+ e : ( end ) imleci satır sonuna taşır ( tuşuna eşdeğerdir End).
- Ctrl+ f : İmleci bir karakter ileri götürür (tuşuna eşdeğer →).
- Ctrl+ g : Geri aramayı iptal edin ve orijinal satırı geri yükleyin.
- Ctrl+ h : Önceki karakteri siler (geri al ile aynı).
- Ctrl+ i : Sekme tuşuna eşdeğerdir.
- Ctrl+ j : Giriş tuşuna eşdeğerdir.
- Ctrl+ k : İmleçten sonraki satır içeriğini siler ve panoya kopyalar .
-
Ctrl+ l : Ekran içeriğini temizler (komuta eşdeğer
clear
). - Ctrl+ n : ( next ) sonraki komutu geri çağırır (key ile eşdeğer ↓).
- Ctrl+ o : Geçmişten bulunan komutu yürütür ve düzenleme için geçmişten geçerli satıra göre sonraki satırı getirir.
- Ctrl+ p : ( önceki ) önceki komutu geri çağırır ( tuşuna eşdeğerdir ↑).
- Ctrl+ r : (ters arama) belirtilen karakterleri içeren son komutu geri çağırır. İkinci Ctrl+ r, aramaya karşılık gelen bir sonraki ön komutu hatırlatır
- Ctrl+ s : Geriye doğru aramanın bir sonraki daha yakın tarihli komutuna geri dönün (bu komut aynı zamanda XOFF'unu da başlattığından, onu bir terminalden çalıştırmamaya dikkat edin). Bu XOFF ayarını değiştirdiyseniz, geri dönmek için Ctrl+ qdüğmesini kullanın .
- Ctrl+ t : Önceki iki karakterin yerini değiştirin.
- Ctrl+ u : İmleçten önceki satır içeriğini temizler ve panoya kopyalar .
- Ctrl+ v : Bir sonraki giriş aynı zamanda bir kontrol dizisiyse, harfi harfine yazın (örn. * Ctrl+ v Ctrl+ h"^H", değişmez bir geri al.)
- Ctrl+ w : İmleçten önceki sözcüğü siler ve panoya kopyalar .
- Ctrl+ x Ctrl+ e : $EDITOR programındaki mevcut satırı veya tanımlanmamışsa vi'yi düzenler.
- Ctrl+ x Ctrl+ r : inputrc dosyasının içeriğini okuyun ve orada bulunan tüm bağlamaları veya değişken atamaları dahil edin.
- Ctrl+ x Ctrl+ u : Artımlı geri alma, her satır için ayrı ayrı hatırlanır.
- Ctrl+ x Ctrl+ v : Geçerli Bash örneği hakkında sürüm bilgilerini görüntüleyin.
- Ctrl+ x Ctrl+ x : İmleci eski konumuyla değiştirir. (Cx, çünkü x'in bir kesişme şekli vardır).
- Ctrl+ y : ( yank ) pano içeriğini imleç konumundan ekler .
-
Ctrl+ z : SIGTSTP sinyalini , onu askıya alan geçerli göreve gönderir . Arka planda yürütmek için bir girilebilir
bg
. Geri getirmek için arka plan veya askıya almafg ['process name or job id']
( ön plan ) verilebilir. - Ctrl+ _ : Artımlı geri alma, her satır için ayrı ayrı hatırlanır.
- Alt+ b : ( geri ) imleci bir kelime geri hareket ettirir.
- Alt+ c : İmlecin altındaki karakteri büyük harf yapar ve kelimenin sonuna gider.
- Alt+ d : İmleçten sonra sözcüğü keser.
- Alt+ f : ( ileri ) imleci bir kelime ileri taşır.
- Alt+ l : İmlecin bulunduğu konumdan geçerli kelimenin sonuna kadar her karakterin büyük/küçük harf durumunu küçültür.
- Alt+ r : Değişiklikleri iptal eder ve satırı geçmişte olduğu gibi geri getirir.
- Alt+ u : İmleç konumundan geçerli kelimenin sonuna kadar her karakteri büyük harf yapar.
- Alt+ . : Önceki komuta son argümanı ekleyin (önceki geçmiş girişinin son kelimesi).
GNU Readline'ın lisansı olarak GPL seçimi
GNU Readline, GNU Genel Kamu Lisansı (GPL) kapsamında lisanslanan ücretsiz bir yazılım kitaplığı olmasıyla dikkat çekmektedir . Özgür yazılım kitaplıkları çok daha sık olarak GNU Kısıtlı Genel Kamu Lisansı (LGPL) altında lisanslanır , örneğin GNU C Kitaplığı , GNU gettext ve FLTK . LGPL lisanslı bir kitaplığa bağlanmayı seçen bir uygulama geliştiricisi, uygulama için herhangi bir lisansı kullanabilir. Ancak Readline gibi GPL lisanslı bir kitaplığa bağlantı, elde edilen birleşik uygulamanın tamamının dağıtıldığında GPL kapsamında lisanslanmasını ve GPL'nin 5. bölümüne uymasını gerektirir.
Bu lisans, yazılımı GPL'ye geçmeye teşvik edeceği umuduyla FSF tarafından seçildi. GNU Readline'ın copyleft koşullarına uymak için lisansını değiştiren bir uygulamanın önemli bir örneği , Common Lisp'in bir uygulaması olan CLISP'dir . Aslen 1987 yılında yayımlanan bu CLISP orijinal yazarlarından biri Bruno Haible ve aralarında bir e-posta alışverişi sonra, 1992 yılında GPL lisansı değiştirildi Richard Stallman Stallman CLISP içinde taleb bağlanması Haible için gerekli anlamına geliyordu iddia ettiği, re -readline kullanan CLISP uygulamasını dağıtmak isterse, GPL kapsamında CLISP lisansı alır.
Başka bir yanıt, bunu bazı projelerde kullanmamak, metin girişinin düzenleme için ilkel Unix terminal sürücüsünü kullanmasını sağlamak olmuştur.
Alternatif kitaplıklar
Komut satırı düzenleme işlevini uygulamak isteyen ancak GPL olmayan bir lisansla yayımlanmak isteyen yazılım projeleri tarafından kullanılabilecekleri için diğer lisanslarla birlikte alternatif kitaplıklar oluşturulmuştur.
- Birçok BSD sistemi, BSD lisanslı bir libedit'e sahiptir . MariaDB ve PHP , kullanıcının derleme sırasında GNU Readline ile mi yoksa libedit ile mi bağlanacağını seçmesine izin verir. MacOS sitesindeki libreadline aslında bir takoz olarak bilinen bir düzenleme libedit fazla editline .
- linenoise , satır düzenleme işlevleri sağlayan küçük bir C kütüphanesidir.
- Haskeline , Haskell için okuma satırı benzeri bir kütüphanedir. Esas olarak Glasgow Haskell Derleyicisi için yazılmıştır , ancak satır düzenleme hizmetlerine ihtiyaç duyan diğer Haskell projelerinde de mevcuttur.
Basit kod
Aşağıdaki kod olan C ve geçirilerek taleb kütüphaneye karşı bağlı olmalıdır -lreadline derleyici bayrak:
#include <stdlib.h>
#include <stdio.h>
#include <readline/readline.h>
#include <readline/history.h>
int main()
{
// Configure readline to auto-complete paths when the tab key is hit.
rl_bind_key('\t', rl_complete);
while (1) {
// Display prompt and read input
char* input = readline("prompt> ");
// Check for EOF.
if (!input)
break;
// Add input to readline history.
add_history(input);
// Do stuff...
// Free buffer that was allocated by readline
free(input);
}
return 0;
}
bağlamalar
Readline için dil bağlamaları sağlayan C olmayan programlama dilleri şunları içerir:
- Python'un yerleşik
readline
modülü; - Node.js'nin yerleşik
readline
modülü; - Ruby'nin yerleşik
readline
modülü; - Perl'in üçüncü taraf (CPAN)
Term::ReadLine
modülü, özellikleTerm::ReadLine::Gnu
GNU ReadLine için.
Readline alternatifleri için destek, bu bağlamalar arasında farklılık gösterir.