bash에서 명령의 일부를 입력 한 후 ctrl-r을 사용하는 방법이 있습니까?


13

bash에서 Ctrl+ r명령은 매우 유용합니다. Ctrl+를 입력 r whatever하면 단어를 포함하는 명령에 대한 내 기록을 검색합니다 whatever. 그러나 내가 타이핑 whatever하고 단어를 검색하고 Ctrl+를 누르면 r아무 일도 일어나지 않는다는 것을 알게 되면.

방법 키를 타격 내가 입력 한 것처럼 행동을 가지고 거기에 Ctrl+ r whatever대신 whatever Ctrl+는 r?

내 안에 다음이 있습니다 .inputrc.

"\C-p": history-search-backward

그러나 이것은 줄의 시작이 같은 경우에만 작동합니다.

답변:


12

이미 쉽게 입력 한 내용을 사용하여 bash 기록을 검색 할 수 있습니다.

방금 입력 curl -I http://superuser.com하고 Ctrl+를 r먼저 타는 것을 잊었다 고 가정하십시오 .

$ curl -I http://superuser.com

히스토리에서 i- 검색을 수행하려면 먼저 행 시작 ( Ctrl+ a)으로 이동하여 i- 검색 ( Ctrl+ r)을 입력하고 Ctrl+를 입력하십시오 y. 이미 입력 한 전체 텍스트의 내용을 사용하여 검색해야합니다.

(reverse-i-search)`curl -I http://superuser.com': curl -I http://superuser.com/faq

또는 Ctrl+ w대신 Ctrl+ y를 사용하여 방금 입력 한 텍스트의 첫 단어 만 사용하여 검색 할 수 있습니다 .

(reverse-i-search)`curl': curl -I http://superuser.com/faq

단일 키에 모두 바인딩

한 번의 키 입력으로이 모든 작업을 수행하려면 단일 키를 키보드 매크로에 바인딩 할 수 있습니다. 사용 F12하려면 다음을 실행하십시오.

$ bind '"\e[24~":"\C-a\C-r\C-y"'

그것은 세션 동안 지속될 것입니다.

영구적으로 만들기

에 매크로를 정의하십시오 ~/.inputrc.

"\e[24~":"\C-a\C-r\C-y"

여기서는 작은 따옴표를 생략 했습니다.

이 답변이 도움 될 수 있습니다 .


1
구성에 문제가 있는지 확실 하지 않지만 c-r입력 후 타이핑 c-y해도 아무것도 붙여 넣지 않습니다. 직접 입력 c-y하면 텍스트 만 붙여
넣어

먼저 줄의 시작으로 가나 요? (Ca)
hso

1
네 말이 맞아, 나는 줄의 시작에 가지 않았다. 이제 내 .inputrc에 "\C-xr": "\C-a\C-r\C-y"있으며 매우 잘 작동합니다! 이 답변에 감사드립니다.
스킵

내가 이것을 구글 검색 한 control+a control+r control+y것은 세 번째라고 생각합니다 ! 감사합니다이 답변은 항상 여기에 있습니다! :)
Dr Beco

2

경고를 4 회 저장하십시오.

두 번째 피 Ctrl-R에 추가하여 .bashrc(또는를 .inputrc원하는 경우) :

bind '"\er":"\C-a\C-r\C-y\C-r"' # alt-r = ctr-a ctr-r ctr-y ctr-r

ALT-RCTR-A에 매핑합니다 . CTR-R CTR-Y CTR-R

기술:

  • ALT-R : 바인딩 키. 또 다른 좋은 옵션은 \C-xr( CTR-X CTR-R )
  • CTR-A : 줄의 시작 부분으로 이동
  • CTR-R : 역 검색 시작
  • CTR-Y : 붙여 넣기 검색의 일부로 CTR-A가 기억 한
  • CTR-R : 지금까지 문자로 역방향 검색을 트리거합니다

Cy가 왜 검색 필드에 명령을 붙여 넣는 지 (Ca가 "복사"명령이 아니어야합니까?) 왜 Cw가 첫 단어 만 붙여 넣는 지에 대해서는 아직 명확하지 않습니다.
marcus

예, C-a이동뿐만 아니라 컨텐츠가 이동 한 것을 암기 (복사)합니다.
Dr Beco

나는 그 행동을 확인할 수 없으며 (Ca Cy를 시도해보십시오) Cr에 특별한 경우가 내장되어있을 가능성이 더 높다고 생각하지만 어디에 기록되어 있는지 알 수 없습니다.
marcus
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.