Exclui todo o argumento na linha de comando atual do bash

13

Usando ^W (unix-word-rubout) eu posso facilmente deletar uma única "palavra" do comando atual no meu bash shell.

No entanto, ao lidar com argumentos entre aspas que contenham espaços (ou argumentos sem aspas contendo espaços com escapes invertidos), isso não funciona muito bem, pois exclui apenas uma palavra e não o argumento inteiro.

Estou procurando uma maneira de excluir um argumento inteiro.

Exemplo (o cursor está sempre no final):

$ foo --bar "foo bar" meow
[black magic]
$ foo --bar "foo bar"
[black magic]
$ foo --bar
[black magic]
$ foo
    
por ThiefMaster 05.04.2013 / 17:58

1 resposta

14

O Bash tem comandos de linha de leitura que não são vinculados por padrão. Você pode encontrá-los na referência: link

O comando que você está procurando é chamado de "shell-backward-kill-word". Você precisa selecionar o atalho primeiro. Vamos usar o Crtl + p, já que é "comando anterior" - igual à seta para cima.

bind '"\C-p": shell-backward-kill-word'
    
por 09.04.2013 / 14:41