Como usar "rm! (* keyword) no bash 4.1.2?

2

Eu tenho bash 4.1.2 na máquina remota centos.

Ao usar meu favorito

rm !(*keyword)

Eu tenho

bash: !: event not found

Eu tentei atualizar seu bash, mas parece que a edição permanece após a atualização.

O mesmo código funciona bem no meu bash 4.3.11 na máquina local do Ubuntu.

Como usar esse comando nesta versão do Bash (4.1.2)?

    
por Zen 11.08.2014 / 15:57

1 resposta

4

Então, vou dar a resposta para a pergunta. Você precisa ativar extglob para fazer o bash reconhecer padrões estendidos além da sintaxe de expansão do histórico.

shopt -s extglob
rm !(*keyword)

shopt -s extglob também permite a correspondência de padrões estendida em case e [[ ]] , mas ele já é o comportamento padrão em [[ ]] iniciando o Bash 4.1 e padrões estendidos já são reconhecidos com ou sem a opção ativada.

Para referência, consulte a Correspondência de padrões do manual do Bash.

    
por 11.08.2014 / 16:30