Como escapar! em senha?

22

Como alguém pode escapar do ponto de exclamação em uma senha:

$ mysql -umyuser -pone_@&!two
-bash: !two: event not found

Tentar a barra invertida óbvia não ajudou:

$ mysql -umyuser -pone_@&\!two
[1] 22242
-bash: !two: command not found
[email protected] [~]# ERROR 1045 (28000): Access denied for user 'myuser'@'localhost' (using password: YES)

Todas as minhas pesquisas no Google sugerem que a barra invertida ajudaria, mas isso não acontece. Não há como usar aspas conforme sugerido em esta pergunta . A linha será usada em um alias .bashrc. Não se preocupe, os nomes de usuário e senhas mostrados aqui são apenas exemplos e não são usados na produção!

    
por dotancohen 02.08.2012 / 12:30

4 respostas

33

Use aspas simples ao redor da senha assim: -p'one_@&!two'

Para colocá-lo em um alias, você faria algo como:

alias runmysql='mysql -umyuser -p'\''one_@&!two'\'''

    
por 02.08.2012 / 12:32
3
-bash: !two: command not found

Você também precisa escapar do caractere & :

$ mysql -umyuser -pone_@\&\!two
    
por 02.08.2012 / 12:36
3

Se você nunca usa o! características do histórico, pode ser mais conveniente simplesmente desativá-las (com set +H em seu bashrc).

    
por 02.08.2012 / 21:19
0

Você pode armazenar a senha em uma variável bash:

$ pass='one_@&!two'

Em seguida, substitua a variável no comando:

$ mysql -umyuser -p$pass
    
por 23.05.2018 / 10:02