솔직히 말해서 이 단축키는 !:0
Shift 키도 필요하다는 점을 고려할 때 충분히 짧다고 생각하지 않습니다.
별칭이나 함수를 만드는 것이 가능한지 궁금합니다. 뭔가 빠졌다는 것을 알고 있습니다. 나는 분명한 일을 했다:
pr() {
!:0
}
그리고:
alias pr="!:0"
아니면 Alt + .
비슷한 것이 있지만 명령 부분($0)에만 해당됩니까? 나는 아무것도 찾지 못했습니다.
답변1
다음을 사용하여 이 작업을 수행할 수 있습니다 fc
.
alias pr='fc -e "sed -i s/\ .*//"'
이를 위해서는 fc
마지막 명령을 입력하여 편집기를 시작하고 편집기가 종료될 때까지 기다린 다음 (수정될 수 있는) 명령을 실행해야 합니다. 일반 편집기를 사용하는 대신 별칭은 sed
명령의 첫 번째 단어만 유지합니다.
답변2
!:0
먼저, 이것은 기록의 마지막 줄에 있는 명령이 아니라는 점에 유의하십시오 . 이것이 첫 번째 단어입니다. A=B some-command arg1
따라서 실행하면 !:0
그렇게 됩니다 A=B
.
이제 언급하셨으니 Alt.다음과 같습니다.
yank-last-arg (M-. or M-_)
이전 명령(이전 기록 항목의 마지막 단어)에 마지막 인수를 삽입합니다. 숫자 인수의 경우 동작은 .
yank-nth-arg
[...]와 정확히 동일합니다.
앞서도 언급한yank-nth-arg
:
이전 명령 지점에 첫 번째 인수를 삽입합니다(일반적으로 이전 줄의 두 번째 단어). 논란이 있다N,끼워 넣다 N이전 명령의 첫 번째 단어(이전 명령의 단어는 단어 0으로 시작함)
따라서 이를 수행할 수 있습니다 . 또는 Alt0 AltCtrly매개변수를 사용하여 yank-last-arg
"정확하게" 작동하므로 .yank-nth-arg
Alt0 Alt.
이를 위해 바인딩을 수행할 수 있지만 이는 약간 우회적입니다.확실히readline에는 인수가 지정될 때 명령에 바인딩하는 메커니즘이 없습니다. 당신은해야합니다키 시퀀스에 바인딩먼저 매개변수 순서를 모방한 다음 기존 바인딩 순서를 모방하므로 다음과 같이 할 수 있습니다.
bind '"\e,": "\e0\e."'
그런 다음 을 Alt,눌러 첫 번째 단어를 가져옵니다.