bash 기록 검색(Ctrl-R)에 자동 완성을 적용하는 방법은 무엇입니까?

bash 기록 검색(Ctrl-R)에 자동 완성을 적용하는 방법은 무엇입니까?

문맥

Bash에 미리 입력하세요: 좋음

Bash 쉘이 사용 중일 때(초기화, 명령 실행) 다음을 수행할 수 있습니다.다음 프롬프트 앞에 입력하세요..

쉘이 프로그램을 시작하면 프로그램은 키 입력을 캡처하지만, 실행 중인 프로그램이 없거나 프로그램이 입력을 캡처하지 않으면 입력한 내용이 프롬프트 다음에 쉘에 삽입됩니다.

예를 들어 를 입력 sleep 5하고 Enter를 누른 다음 을 입력 ls하고 Enter를 누르십시오. ls절전 모드가 완료된 후 실행됩니다. 실생활에서는 다른 많은 프로그램 으로 대체 ls될 것입니다 . 이는 전형적인cprsync미리 입력하세요입력할 내용을 미리 알면 시간이 많이 절약됩니다.

여러 명령을 복사하여 붙여넣고 순서대로 실행할 수 있기 때문에 정말 좋습니다.

실제 사용 사례에는 셸을 초기화하는 데 시간이 걸리는 상황이 포함됩니다. 어떤 이유로든 컴퓨터 속도가 느려지거나 셸이 느린 네트워크 링크에 있을 수 있습니다.

Bash에서 기록 검색: 좋음

Bash 프롬프트에서 입력하여 Ctrl-R기록을 검색할 수 있습니다.

이는 일부 이전 명령줄이나 명령줄 시퀀스를 재사용할 때 귀중한 시간을 절약할 수 있습니다. 을 누르고 Ctrl-R, 검색하려는 명령의 일반적인 문자 몇 개를 입력하고, Ctrl-O거기에서 기록된 명령을 재생하는 데 필요한 만큼 누르십시오.

기록 검색에 미리 입력: 어떻게?

그러나 한계가 있습니다. 나는 위의 순서를 자주 사용하는데, 예를 들어 Ctrl-R ls쉘 프롬프트가 실제로 나타나기 전에 입력하면 해당 Ctrl-R부분은 무시되지만 ls표시됩니다.

결과적으로 를 입력하기 전에 쉘 프롬프트가 나타날 때까지 기다려야 하므로 Ctrl-R절약된 시간이 낭비됩니다.

질문

Ctrl-R미리 입력해도 크레딧을 받을 수 있는 방법이 있나요 ?

답변1

귀하의 Ctrl-은 (는) r커널 기반 터미널 쿠키 라인 처리 엔진에 의해 차단되고 있습니다.

를 실행할 때 sleep터미널은 베이킹 모드에 있으며 이는 커널 기반 tty 라인 편집기가 작동 중임을 의미합니다. tty 라인 편집기는 기본 명령줄 편집을 지원합니다. 지우기 키(보통 Ctrl- h(백스페이스) 또는 로 설정됨 Del)와 종료 키(보통 Ctrl-U)는 이 모드에서 사용할 수 있는 가장 잘 알려진 특수 편집 키입니다. 이 줄 편집기는 유용합니다. readline이나curse를 사용하지 않는 대화형 유틸리티를 사용하여 터미널에서 전체 입력 줄을 읽을 수 있으며 사용자는 입력을 수정할 수 있습니다.

하지만 이 모드에는 또 다른 특수 키가 활성화되어 있습니다. stty -a이름 아래의 다른 키 설정과 함께 출력에서 ​​볼 수 있습니다 rprnt. 기본 설정은... you 추측할 수 있습니다... Ctrl- 입니다 r. 이 키의 기능은 다른 터미널 출력으로 인해 명령줄이 손상되거나 잘못 정렬된 경우 현재 명령줄을 다시 그리는 것입니다.

이를 방지하려면 를 사용하여 기능을 비활성화할 수 있습니다 stty rprnt undef.

Ctrl개인적으로 저는 다시 그리기 명령으로 해석되는 데 익숙하며 r그렇게 하려고 할 때마다 bash뭔가 다른 일을 한다는 사실에 놀랐습니다!

관련 정보