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