Eu gostaria de ignorar todas as invocações de um comando no meu histórico do bash, independentemente dos argumentos. Por exemplo, para excluir todos os ls
, ls -l
e ls SOME_DIRECTORY
, meu entendimento é que eu precisaria fazer:
HISTIGNORE='ls:ls *'
Eu não posso usar apenas HISTIGNORE='ls*'
porque isso também ignoraria outros comandos que começam com ls
, o que é indesejável. No entanto, precisar especificar ls
e ls *
é irritante e propenso a erros à medida que adiciono entradas a arquivos HISTIGNORE
.
Existe um padrão que eu possa usar para corresponder a um comando sozinho e com argumentos?
HISTIGNORE
a correspondência de padrões respeita a configuração daextglob
opção shell e, com globbing estendido, você pode usar isso para combinar comandos que começam comls
e são seguidos por um espaço e depois qualquer outra coisa ou por nada (fim da linha).O
@(foo|bar)
formato dos globs estendidos do bash corresponderá exatamente a umfoo
oubar
. Aqui, o padrão que estamos fornecendo éls@( *|)
para que ele correspondals
no início da linha e, em seguida, um espaço e 0 ou mais outros caracteres seguintes, ou nenhum caractere.Aqui está em ação: