Bash의 현재 명령에 기록의 전체 명령을 삽입하는 방법은 무엇입니까?

Bash의 현재 명령에 기록의 전체 명령을 삽입하는 방법은 무엇입니까?

Bash의 현재 명령에 기록의 전체 명령을 삽입하는 방법은 무엇입니까?

저는 몇 가지 조사를 통해 이전 명령의 첫 번째 단어와 마지막 단어를 삽입하는 두 개의 GNU Readline 키 바인딩을 식별했습니다. 안타깝게도 이러한 키 바인딩에 매개 변수를 제공하는 방법(어떻게?)을 모르고 n, 제공하더라도 기록에서 긴 명령을 삽입하는 것은 불가능합니다.

Ctrl-Alt-y

이전 명령에 첫 번째 매개변수를 삽입합니다. 매개변수 n을 사용하여 이전 명령의 n번째 단어를 삽입합니다.

Alt-.
Alt-_

이전 명령에 마지막 매개변수를 삽입합니다. 매개변수 n을 사용하여 이전 명령의 n번째 단어를 삽입합니다.

GNU Readline은 기록의 전체 명령을 현재 명령에 삽입하는 것을 지원합니까?

부인 성명:Bash 명령 대체를 찾고 있지 않습니다.

답변1

원하는 기록 확장자(예: !foo또는 !39) 를 입력하고확장하다:

history-expand-line (M-^)
현재 줄에서 히스토리 확장을 수행합니다.

위안은 IIRC가 될 것입니다 Alt.

답변2

바인딩을 직접 만들 수 있습니다. 바인딩할 키를 결정하기만 하면 됩니다. 예는 다음과 같습니다Ctrl-T

insert_last_line(){
     local l=$READLINE_LINE p=READLINE_POINT h=$(fc -nl -0)
     READLINE_LINE=${l:0:p}${h#* }${l:p}
}
bind -x '"\C-T": insert_last_line'

반복할 때 이전 항목을 삽입하는 것은 독자에게 연습 문제로 남겨집니다 ;-)

관련 정보