Isso porque você não definiu a opção extglob , o que dá um significado especial a ! .
No seu Bash, escreva:
shopt -s extglob
Em seguida, o comando deve ser executado conforme o esperado.
Por padrão, ! expande para o ID do processo dos últimos comando executado em segundo plano (assíncrono). Com o extglob definido, ! pode ser usado para correspondência de padrões , mas somente em conjunto com parênteses após () .
Você poderia, claro, adicionar essa linha ao seu ~/.bash_profile para que ela seja definida sempre que você abrir o Terminal.app. Por padrão, o OS X executa um shell de login, portanto, essas opções devem ser definidas em ~/.bash_profile e não em ~/.bashrc , como você provavelmente está acostumado com emuladores de terminal do Linux.