Korn Shell이 ​​ctrl-r 작업을 수행할 수 없는 이유는 무엇입니까?

Korn Shell이 ​​ctrl-r 작업을 수행할 수 없는 이유는 무엇입니까?

기본 쉘(Korn)과 함께 PC-BSD를 사용하면 Ctrl+가 r작동하지 않습니다. 왜 작동하지 않나요?

Ctrl- r1970년대 후반이나 1980년대 초반에 기록을 검색하기 위해 도입되었지만 내 BSD는 여전히 이를 수행할 수 없습니다(Ubuntu는 할 수 있지만).

Ctrl- r Emacs에서 유래한 것 아닌가요? 언제? 1975년? 1983년?

답변1

Ctrl+Rkshin emacsmode ( ksh -o emacs또는 set -o emacsinside) 와 함께 사용하면 ksh이를 지원하는 최초의 셸일 가능성이 높습니다. 단지 zshOr bashtcsh위젯 i-search-back만큼 상호작용 적이지 않다는 것뿐입니다 .

ksh( ksh88및 ) 에 ksh93를 입력합니다 Ctrl+RtextReturn. Ctrl+RReturn같은 텍스트로 다시 검색해 보세요 .

모드 에서는 역방향 검색과 다음 검색을 vi사용할 수 있습니다 .?n

저것emacs 증분 검색다음 기능이 추가되었습니다.

  • bash/ readline이 기능은 적어도 1989년 7월부터당시 유즈넷에서 이미 언급됨readlinezsh-1.0그러나 포함된 버전에는 해당 기능이 없기 때문에 아마도 처음부터 그렇지는 않을 것입니다 .
  • zsh줄 편집기는 다시 작성되었으며 1991년 버전 2.0 이후로 더 이상 사용되지 않습니다 readline.
  • tcshV6.00.03, 10/21/91에서는 기본적으로 바인딩되지 않습니다( tcsh그 전에 다른 검색 메커니즘이 한동안 활성화되었지만).Meta-P
  • ksh: 1982년 AT&T의 Mike Veach가 작성한 편집 모드를 갖춘 ksh최초의 Unix 쉘일 가능성이 높습니다 ( Pat Sullivan의 모드와 함께 Bourne 쉘에 독립적으로 적용된 코드를 재사용함). ksh는 AT&T 외부에서 최초로 출시되었습니다.emacsvi1983년 USENIX 컨퍼런스어디이러한 기능이 설명되어 있습니다., 그러나 얼마 후까지 상업적으로 이용 가능하지 않았습니다(1,2). 당시에 이미 있었는지 말하기는 어렵습니다 ^R(어쨌든 이미 있었음)1986년및 1985( usr/man/man1/ksh.1ksh85 매뉴얼 페이지 참조)Unix Heritage Society의 Unix V8 타르볼)) 그러나 그것이 기본 기능, 특히 셸의 경우이기 때문에 그렇지 않았다고 상상하기는 어렵습니다. 그때쯤이면 vi모드도 있었을 것으로 예상합니다.?

답변2

CtrlRKorn 쉘은 적어도 그 당시부터 ksh93(아마도 ) 기록 검색 사용을 지원 ksh88하지만 그렇게 작동하지는 않습니다 bash. 먼저 Emacs 모드를 활성화해야 합니다:

set -o emacs

(이렇게 하면 기본적으로 화살표 키를 사용하는 등의 기타 세부 정보가 활성화됩니다.)

이제 를 누르면 CtrlR셸이 인쇄됩니다 ^R. 검색어를 입력하고 을 클릭하면 Enter셸이 가장 일치하는 기록 항목을 표시합니다. Enter다시 클릭하여 그대로 실행하거나 편집 할 수 있습니다.

답변3

1970년대에는 쉘에 커서 편집 기록이 없었습니다.

커서 편집 가능 내역이 통합된 최초의 쉘은 bsh1984년에 제가 개발했습니다(1982년 프로토타입을 기반으로 함). 이 기록 구현은 crontrol -r을 사용하여 현재 명령줄을 다시 표시합니다.

1986년에 Korn Shell은 완전히 통합된 커서 편집 가능 기록을 구현하는 쉘 그룹의 일부가 되었습니다.

통합 편집기가 포함된 tcsh 버전은 1987년에 처음 등장했습니다.

Bash는 1989년에 등장했습니다.

emacs기본적으로 Ksh는 모드에서 실행 되지 않습니다 gmacs.

ksh93은 기본 모드에서도 control-r을 사용한 검색을 지원하지만 해당 모드에 있다는 것을 알려주지는 않습니다. 다음을 입력하면:

^R

에코를 다시 받은 다음 검색 문자열을 입력할 수 있습니다.

^Rali
alias a=b

기록에서 alias 명령을 찾습니다.

관련 정보