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'

반복할 때 이전 항목을 삽입하도록 만드는 것은 독자에게 연습 문제로 남아 있습니다 ;-)

관련 정보