Кіріспе

GNU Readline – бұл бағдарламалық кітапхана, ол Bash сияқты командалық жол интерфейсі бар интерактивті бағдарламалар үшін жол бойынша өңдеу және тарих мүмкіндіктерін ұсынады. Қазіргі уақытта оны Чет Рами GNU жобасының бір бөлігі ретінде қолдайды. Ол пайдаланушыларға мәтіндік курсорды жылжытуға, командалар тарихында іздеуге, «өлтіру сақинасын» (көшіру/жапсыру буферінің кеңейтілген нұсқасы) басқаруға және мәтін терминалында табулысты аяқтауды пайдалануға мүмкіндік береді. Readline платформааралық кітапхана ретінде әртүрлі жүйелердегі қолданбаларға бірдей жол өңдеу әрекеттерін көрсетуге мүмкіндік береді.

Өңдеу режімдері

Readline Emacs және vi өңдеу режимдерін қолдайды, олар пернетақтадан енгізілген мәліметтердің редактор командалары ретінде қалай қарастырылатынын анықтайды. Толығырақ қараңыз.

Emacs пернетақтасының перне тіркесімдері

Emacs редакциялау режиміндегі түйіндемелер Emacs мәтіндік редакторынан алынған. Кейбір жүйелерде , орнына , қолданылуы керек, себебі түйіндеме басқа түйіндемемен қақтығысады. Мысалы, Xfce терминалының эмуляторының терезесінде басу курсорды бір сөз алға жылжытпай, терминал терезесінің мәзіріндегі "Файл" дегенді белсендіреді, егер бұл эмулятор параметрлерінде өшірілмесе. : Курсор орнынан автоматты толықтыру. : Курсорды жол басына жылжытады ( кілтімен тең). : Курсорды бір таңбаға артқа жылжытады ( кілтімен тең). : Ағымдағы тапсырмаға псевдотерминал арқылы SIGINT сигналын жібереді, ол оны тоқтатып жабады. EOF белгісін жібереді, ол (опциямен өшірілмесе) ағымдағы қабықты жабады (exit командасына тең). (Егер ағымдағы жолда мәтін болмаса ғана) Егер ағымдағы жолда мәтін болса, ағымдағы таңбаны жояды (сонда кілтке тең). : (end) курсорды жол соңына жылжытады ( кілтімен тең). : Курсорды бір таңбаға жылжытады ( кілтімен тең). : Кері іздеуді тоқтатып, бастапқы жолға қайта оралады. : Алдыңғы таңбаны жояды (артқа жою сияқты). : Tab кілтіне тең. : Enter кілтіне тең. : Курсордан кейінгі жол мазмұнын тазалап, алмасу буферіне көшіреді. : Экран мазмұнын тазалайды (clear командасына тең). : (next) келесі команданы еске түсіреді (кілтпен бірдей). : Тарихтан табылған команданы орындайды және өңдеу үшін тарихтан ағымдағы жолға қатысты келесі жолды алады. : (previous) алдыңғы команданы еске түсіреді (кілтке тең). : (reverse search) іздеу үшін берілген таңбаларды қоса соңғы команданы еске түсіреді. Екіншісі іздеуге сәйкес келетін келесі бұрынғы команданы еске түсіреді. : Кері іздеудің келесі, соңғы командасына қайта оралу (терминалдан орындамауға сақтаныңыз, себебі бұл команда XOFF-ты да іске қосады). Егер XOFF параметрін өзгерткен болсаңыз, қайтару үшін қолданыңыз. : Алдыңғы екі таңбаны ауыстырады. : Курсордың алдындағы жол мазмұнын тазалап, алмасу буферіне көшіреді. : Егер келесі кіріс де басқару тізбегі болса, оны сөзсіз келтіреді (мысалы, * "^H" деп, сөзсіз артқа жоюды келтіреді). : Курсордың алдындағы сөзді жойып, алмасу буферіне көшіреді. : $EDITOR бағдарламасында ағымдағы жолды өңдеу, немесе анықталмаған болса vi. : Inputrc файлының мазмұнын оқып, онда табылған түйіндемелерді немесе айнымалыларды қосады. : Өңдеуді кері қайтару, әр жол үшін бөлек сақталады. : Bash-тің ағымдағы нұсқасы туралы ақпаратты көрсетеді. : Курсорды бұрынғы орнына ауыстырады. (C x, себебі x қиылысқан пішінде). : (yank) - курсор орнынан алмасу буферінің мазмұнын қосады. : Ағымдағы тапсырмаға SIGTSTP сигналын жібереді, ол оны тоқтатады. Фонда орындау үшін bg енгізуге болады. Оны фоннан немесе тоқтатудан қайтару үшін fg ['процесс аты немесе жұмыс ID'] (алдыңғы планға) енгізілуі мүмкін. : Өңдеуді кері қайтару, әр жол үшін бөлек сақталады. : (backward) курсорды бір сөзбен артқа жылжытады. : Курсор астындағы таңбаны үлкен әріпке ауыстырып, сөз соңына жылжытады. : Курсордан кейінгі сөзді кесіп алады. : (forward) курсорды бір сөзбен алға жылжытады. : Курсор орнынан бастап ағымдағы сөздің соңына дейін әрбір таңбаны кішкентай әріпке ауыстырады. : Өзгерістерді жояды және жолды тарихтан алған күйіне қайтарады. : Курсор орнынан бастап ағымдағы сөздің соңына дейін әрбір таңбаны үлкен әріпке ауыстырады. : Алдыңғы команданың соңғы аргументін (өткен команданың соңғы сөзін) енгізеді.

GNU Readline лицензиясы ретінде GPL таңдау

GNU Readline – GNU General Public License (GPL) лицензиясы бойынша лицензияланған еркін бағдарламалық кітапхана болып ерекшеленеді. Еркін бағдарламалық қамтамасыз ету кітапханалары көбінесе GNU Lesser General Public License (LGPL) лицензиясы бойынша лицензияланады, мысалы, GNU C Library, GNU gettext және FLTK. LGPL лицензиясы бар кітапханаға сілтеме жасауды таңдаған қолданба жасаушы, қолданба үшін кез келген лицензияны пайдалана алады. Бірақ GPL лицензиясы бар кітапханаға сілтеме жасау, мысалы Readline, тарату кезінде бүкіл біріктірілген қолданбаның GPL лицензиясы бойынша лицензиялануын талап етеді, бұл GPL-дің 5-тармағына сәйкес келеді. FSF осы лицензияны бағдарламалық жасақтаманы GPL-ге көшіруге ынталандыру ниетімен таңдады. GNU Readline-нің copyleft шарттарына сәйкес лицензиясын өзгертуге мәжбүр болған қолданбаның маңызды мысалы – Common Lisp-тің іске асырылымы CLISP. 1987 жылы алғаш рет шығарылған, ол 1992 жылы CLISP-тің бастапқы авторларының бірі Бруно Хайбл мен Ричард Столлман арасындағы электрондық хат алмасудан кейін GPL лицензиясына көшті. Столлман CLISP-те readline-ді пайдалану Хайблдің CLISP-ті GPL-ге қайта лицензиялауын талап ететінін, егер ол readline-ді қолданатын CLISP-ті таратуды қаласа, атап көрсетті. Тағы бір жауап – кейбір жобаларда оны пайдаланбау, мәтіндік енгізуді өңдеу үшін қарапайым Unix терминал драйверін қолдану.