GNU 리드라인

GNU Readline
GNU 리드라인
Heckert GNU white.svg
원본 작성자브라이언 폭스
개발자쳇 레이미
초기 릴리즈1989; 33년 전 (1998년)
안정적 해제
8[1].1.2 / 2022년 1월 5일
릴리스 미리 보기
8.2-알파[2] / 2022년 1월 20일
리포지토리
기록 위치C
유형도서관
면허증2009: GPL-3.0-또는-Later[a]
1997: GPL-2.0 또는 Later[b]
1994: GPL-1.0 또는 라이터[c]
웹사이트tiswww.case.edu/php/chet/readline/rltop.html

GNU ReadlineBash와 같은 명령줄 인터페이스가 있는 인터렉티브 프로그램에 대한 회선 편집 및 기록 기능을 제공하는 소프트웨어 라이브러리다.그것은 현재 GNU 프로젝트의 일환으로 쳇 래미에 의해 유지되고 있다.

사용자가 텍스트 커서를 이동하고 명령 기록을 검색하며 킬(복사/붙여넣기 클립보드의 보다 유연한 버전)을 제어하고 텍스트 터미널에서 탭 완료를 사용할 수 있다.교차 플랫폼 라이브러리로서, 리드선은 다양한 시스템의 어플리케이션이 동일한 라인 편집 동작을 나타낼 수 있도록 한다.

편집 모드

Readline은 키보드 입력이 편집기 명령으로 해석되는 방식을 결정하는 Emacs와 vi 편집 모드를 모두 지원한다.편집자 전쟁#vi와 Emacs의 차이점을 참조하십시오.

Emacs 바로 가기 키

Emacs 편집 모드 키 바인딩텍스트 편집기 Emacs에서 가져온다.

어떤 시스템에서는Esc 바로 가기가 다른 바로 가기와 충돌하기 때문에 , 대신 사용해야 한다.예를 들어 Xfce 터미널 에뮬레이터 창에서 f+를 누르면 커서가 한 단어로 앞으로 이동하지 않고 에뮬레이터 설정에서 비활성화되지 않는 한 터미널 창의 메뉴에서 "파일"이 활성화된다.

  • Tab ↹ : 커서 위치에서 자동 완성
  • Ctrl+a : 커서를 라인 시작 부분으로 이동(키와 동일)
  • Ctrl+b : 커서를 한 문자 뒤로 이동(키와 동일)
  • Ctrl+c : 가성분자를 통해 현재 작업으로 SIGINT 신호를 전송하고, 이 작업을 중단하고 종료한다.[d]
  • Ctrl+d
    • EOF 마커를 전송하여(옵션으로 비활성화된 경우는 제외) 현재 셸(명령과 동일)을 닫음exit) (현재 줄에 텍스트가 없는 경우에만 해당)
    • 현재 줄에 텍스트가 있으면 현재 문자(키와 동일)를 삭제하십시오.
  • Ctrl+e : () 커서를 라인 엔드로 이동(키에 고정)
  • Ctrl+f : 커서를 한 문자 앞으로 이동(키와 동일)
  • Ctrl+g : 역방향 검색을 중단하고 원래 라인을 복원하십시오.
  • Ctrl+h : 이전 문자(백스페이스와 동일) 삭제
  • Ctrl+i : 탭 키와 동일함.
  • Ctrl+j : 입력 키와 동일함.
  • Ctrl+k : 커서 뒤에 줄 내용을 지우고 클립보드에 복사한다.
  • Ctrl+l : 화면 내용 지우기(명령과 동일)clear).
  • Ctrl+n : (다음) 다음 명령 호출(키에 추가됨)
  • Ctrl+o : 기록에서 found 명령을 실행하고, 편집하기 위해 기록에서 현재 행과 관련된 다음 줄을 가져오십시오.
  • Ctrl+p : (iii) 이전 명령(키에 추가됨)을 호출한다.
  • Ctrl+r : (역방향 검색) 지정된 문자를 포함한 마지막 명령을 호출한다.두 번째 r+ 검색에 해당하는 다음 선행 명령을 호출함
  • Ctrl+s : 역방향 검색의 다음 최신 명령어로 돌아가십시오(이 명령어도 XOFF를 실행하기 때문에 터미널에서 실행하지 않도록 주의하십시오).XOFF 설정을 변경한 경우 +q를 사용하여 반환하십시오.
  • Ctrl+t : 앞의 두 글자를 바꾸십시오.
  • Ctrl+u : 커서 앞의 라인 내용을 지우고 클립보드에 복사한다.
  • Ctrl+v : 다음 입력도 제어 시퀀스일 경우 문자 그대로 입력하십시오(예: * v+ h+ + 형식은 문자 그대로의 백스페이스인 "^H").
  • Ctrl+w : 커서 앞에 있는 단어를 지우고 클립보드에 복사한다.
  • Ctrl+x e+ : $EDitor 프로그램에서 현재 행을 편집하거나, 정의되지 않은 경우 vi.
  • Ctrl+x r: inputrc 파일의 내용을 읽고, 거기에 있는 바인딩이나 가변 할당을 통합한다.
  • Ctrl+x u+ : 증분 실행 취소, 각 행에 대해 별도로 기억.
  • Ctrl+x v+ : 현재 Bash 인스턴스에 대한 버전 정보 표시.
  • Ctrl++xx : 커서를 이전 위치로 교체한다. (C-x, x는 교차 모양이 있기 때문에).
  • Ctrl+y : (육크) 커서 위치에서 클립보드 내용을 추가한다.
  • Ctrl+z : 신호 SIGTSTP를 현재 태스크로 전송하고, 이 태스크는 SIGTSTP를 일시 중단한다.백그라운드에서 실행하려면 다음을 입력하십시오.bg. 백그라운드 또는 서스펜션에서 다시 가져오십시오.fg ['process name or job id'](전면) 발행 가능.
  • Ctrl+_ : 증분 실행 취소, 각 행에 대해 별도로 기억.
  • Alt+b : (iii) 커서를 한 단어 뒤로 이동시킨다.
  • Alt+c : 커서 아래의 문자를 대문자로 표시하고 단어의 끝으로 이동한다.
  • Alt+d : 커서 뒤에 단어를 자른다.
  • Alt+f : (으로) 커서를 한 단어 앞으로 이동시킨다.
  • Alt+l : 커서 위치에서 현재 단어의 끝까지 모든 문자의 대소문자를 낮추십시오.
  • Alt+r : 변경사항을 취소하고 역사에서와 같이 선을 다시 넣는다.
  • Alt+u : 커서 위치부터 현재 단어 끝까지 모든 문자를 대문자로 표시한다.
  • Alt+. : 이전 명령어(이전 기록 항목의 마지막 단어)에 마지막 인수를 삽입하십시오.

GNU Readline 라이센스로 GPL 선택

GNU Readline은 GNU GPL(General Public License)에 따라 라이센스가 부여된 무료 소프트웨어 라이브러리라는 점이 눈에 띈다.무료 소프트웨어 라이브러리는 GNU Library, GNU gettextFLTK와 같은 GNU License(LGPL)에 따라 훨씬 더 자주 라이센스가 부여된다.LGPL 라이선스 라이브러리에 연결하기로 선택한 응용 프로그램 개발자는 응용 프로그램에 대해 어떤 사용권이라도 사용할 수 있다.[4]그러나 Readline과 같은 GPL 라이센스 라이브러리에 연결하려면 전체 결합 결과 애플리케이션이 GPL에 따라 배포될 때 GPL의 섹션 5에 따라 라이센스를 받아야 한다.[5][6]

이 라이센스는 FSF가 소프트웨어를 GPL로 전환하도록 장려할 것이라는 희망에 의해 선택되었다.[7]GNU Readline의 복사기 조건을 준수하기 위해 라이선스를 변경하는 애플리케이션의 중요한 예는 CLISP이다. Common Lisp의 구현이다.원래 1987년에 발매된 그것은 GPL허가증에 1992,[8]의 한 CLISP의 원래 저자들의, 브루노 Haible, 리처드 스톨만, 사이에 이메일을 교환은 스톨만은 readline의 CLISP에 등 그가 구현하고 싶어 한 것은 Haible은 GPL아래 CLISP re-license 한다는 것을 의미해 argued[9]o.을 바꾸었다fCLI리드라인을 사용한 SP.[10]

다른 응답은 일부 프로젝트에서 이것을 사용하지 않는 것으로, 텍스트 입력이 편집을 위해 원시 Unix 터미널 드라이버를 사용하도록 했다.

대체 라이브러리

대체 라이브러리는 다른 라이센스와 함께 생성되어 명령줄 편집 기능을 구현하고자 하는 소프트웨어 프로젝트에서 사용할 수 있지만 비 GPL 라이센스로 출시될 수 있다.

  • 많은 BSD 시스템에는 BSD 허가 리베디트가 있다.MariaDBPHP는 사용자가 빌드 시간에 GNU Readline과 연결할지 또는 libedit와 연결할지 선택할 수 있도록 허용한다.[11][12]
  • 리넨옥스는 라인 편집 기능을 제공하는 작은 C 라이브러리다.[13]
  • 하스클린은 하스켈을 위한 리딩라인 같은 도서관이다.은 주로 글래스고 하스켈 컴파일러를 위해 쓰여졌지만,[14] 라인 편집 서비스를 필요로 하는 다른 하스켈 프로젝트에도 이용 가능하다.[15]

샘플코드

다음 코드는 C에 있으며, 다음 코드를 전달하여 리드라인 라이브러리에 대해 연결해야 한다.컴파일러에 대한 -lreadline 플래그:

#include <stdlib.h> #include <stdio.h> #include <읽기라인/읽기라인.h> #include <리딩라인/역사>h>  인트로 본래의() {     // 탭 키를 누를 때 자동 완료 경로로 리드선을 구성하십시오.     rl_limit_key('\t', rl_complet);      하는 동안에 (1) {         // 프롬프트 표시 및 입력 읽기         마를 뜨다* 입력하다 = 글을 읽다("prompt");          // EOF를 확인하십시오.         만일 (!입력하다)             부숴뜨리다;          // 리딩라인 기록에 입력을 추가한다.         add_history(입력하다);          // 작업 수행...          // 리드라인으로 할당된 사용 가능한 버퍼         무료의(입력하다);     }     돌아오다 0; } 

바인딩

읽기 줄에 대한 언어 바인딩을 제공하는 비-C 프로그래밍 언어에는 다음이 포함된다.

  • 파이썬 내장readline모듈;
  • 루비 내장readline모듈;[16]
  • Perl의 타사(CPAN)Term::ReadLine특히 모듈Term::ReadLine::GnuGNU ReadLine용.

리드라인 대안에 대한 지원은 이러한 바인딩에 따라 다르다.

메모들

  1. ^ 버전 6.0(2009-02-20) 이후 GPL-3.0-or-later.
  2. ^ GPL-2.0-or-later 버전 2.1(1997-06-05)부터 버전 5.2(2006-10-11)까지.
  3. ^ GPL-1.0-or-later ~ 버전 2.0(1994-08-04)
  4. ^ stty와 같은 터미널 구성 도구에서 명백한 유사 사용자 정의 또는 PTY(Linux의 경우)의 일부. 일반적인 Linux 배포에서 PTY 마스터 엔드포인트는 특수 문자를 슬레이브에 보낼 신호로 취급한다.SIGINT[3]

참조

  1. ^ https://ftp.gnu.org/gnu/readline/; 회수: 2022년 2월 2일.
  2. ^ https://git.savannah.gnu.org/cgit/readline.git/tag/?h=readline-8.2-170.
  3. ^ "pty(7) - Linux manual page". man7.org. Retrieved 2021-09-30.
  4. ^ "GNU Lesser General Public License". The GNU Lesser General Public License v3.0 - GNU Project. Free Software Foundation. 2007. Retrieved 2011-09-03.
  5. ^ "GNU General Public License". The GNU General Public License v3.0 - GNU Project. Free Software Foundation. 2007. Retrieved 2011-09-03.
  6. ^ "Frequently Asked Questions about the GNU licenses". Frequently Asked Questions about the GNU Licenses - GNU Project. Free Software Foundation. 2010. Retrieved 2011-09-03.
  7. ^ "Why you shouldn't use the Lesser GPL for your next library". Why you shouldn't use the Lesser GPL for your next library - GNU Project - Free Software Foundation. Free Software Foundation. 2016. Retrieved 2019-10-15.
  8. ^ "CLISP copyright notice". CLISP repository. 1992. Retrieved 2011-09-03.
  9. ^ "Why CLISP is under GPL". CLISP repository. 1992. Retrieved 2011-09-03.
  10. ^ "License - why GNU GPL?". Frequently Asked Questions (With Answers) about CLISP. CLISP team. Retrieved 2011-09-03.
  11. ^ "MariaDB/server/blob/10.2/BUILD/SETUP.sh". MariaDB repository. MariaDB Foundation. Retrieved 2017-10-24.
  12. ^ "php/php-src/tree/master/ext/readline". PHP repository. The PHP Group. Retrieved 2017-10-24.
  13. ^ Sanfilippo, Salvatore (10 May 2020). "antirez/linenoise".
  14. ^ "Applications and libraries". Haskell wiki. haskell.org. Retrieved 2017-10-24.
  15. ^ Judah Jacobson. "judah/haskeline: A Haskell library for line input in command-line programs". Haskeline repository. Retrieved 2017-10-24.
  16. ^ "Module: Readline (Ruby 3.0.2)".

외부 링크