현재 bash 명령줄에서 전체 인수를 제거합니다.

현재 bash 명령줄에서 전체 인수를 제거합니다.

(unix-word-rubout) 을 사용하면 ^Wbash 쉘의 현재 명령에서 단일 "단어"를 쉽게 제거할 수 있습니다.

그러나 이 접근 방식은 공백이 포함된 인용된 인수(또는 백슬래시로 이스케이프된 공백이 포함된 인용되지 않은 인수)를 처리할 때 제대로 작동하지 않습니다. 전체 인수가 아닌 단어만 제거하기 때문입니다.

그래서 전체 매개변수를 제거하는 방법을 찾고 있습니다.

예(커서는 항상 끝에 있음):

$ foo --bar "foo bar" meow
[black magic]
$ foo --bar "foo bar"
[black magic]
$ foo --bar
[black magic]
$ foo

답변1

Bash에는 기본적으로 바인딩되지 않은 readline 명령이 있습니다. 다음 참조에서 찾을 수 있습니다.http://www.gnu.org/software/bash/manual/html_node/Bindable-Readline-Commands.html#Bindable-Readline-Commands

이것주문하다당신이 찾고 있는 것은 입니다 shell-backward-kill-word. 먼저 바로가기를 선택해야 합니다. Ctrlp위쪽 화살표와 같은 "이전 명령"이므로 사용하겠습니다 .

bind '"\C-p": shell-backward-kill-word'

관련 정보