Interpretando! 12 como string e não como histórico terminal

0

Usando o comando de amostra abaixo, em curvas, não funciona como esperado:

curl -ik "http://localhost/index.php?username=parto&password=hello!23"

Espero que os parâmetros sejam passados para incluir:

username = parto
password = hello!23

Mas a parte !23 na senha é interpretada como um designador de evento histórico . Se o 23º comando for sudo apt-get update , os comandos se tornarão:

curl -ik "http://localhost/index.php?username=parto&password=hellosudo apt-get update"

Event Designators An event designator is a reference to a command line entry in the history list. Unless the reference is absolute, events are relative to the current position in the history list.

   >!      Start a history substitution, except when followed by a blank,
          newline, = or (.
   !n     Refer to command line n.
   !-n    Refer to the current command minus n.
   !!     Refer to the previous command.  This is a synonym for '!-1'.
   !string
          Refer to the most recent command preceding the current
          position in the history list starting with string.
   !?string[?]
          Refer to the most recent command preceding the current
          position in the history list containing string.  The trailing
          ? may be omitted if string is followed immediately by a
          newline.
   ^string1^string2^
          Quick substitution.  Repeat the last command, replacing
          string1 with string2.  Equivalent to ''!!:s/string1/string2/''
          (see Modifiers below).
   !#     The entire command line typed so far.

Sem usar caracteres extras, conforme descrito na man page (citada acima), como podemos dizer ao terminal que NÃO interprete o comando acima (! 23) como um designador de evento?

    
por Parto 05.02.2016 / 15:08

1 resposta

1

Não há como usar o ponto de exclamação entre aspas duplas. Use a barra invertida sem aspas ou use aspas simples em vez de aspas duplas, pois os caracteres especiais não são expandidos entre aspas simples.

curl -ik "http://localhost/index.php?username=parto&password=hello"\!"23"
curl -ik 'http://localhost/index.php?username=parto&password=hello!23'
    
por choroba 05.02.2016 / 15:15