Интерпретация! 12 как строка и не как терминальная история

Используя демонстрационную команду ниже в завихрении, это не работает как ожидалось:

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

Я ожидаю, что параметры будут переданы для включения:

username = parto
password = hello!23

Но часть !23 в пароле интерпретируется как указатель события истории. Если 23-я команда sudo apt-get update, команды становятся:

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

Указатели события указатель события являются ссылкой на запись командной строки в списке предыстории. Если ссылка не является абсолютной, события относительно текущей позиции в списке предыстории.

   >!      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.

Не используя дополнительные символы, как изображено в странице справочника (заключенный в кавычки выше), как может, мы 'говорим' терминалу НЕ интерпретировать команду выше (! 23) как указатель события?

0
задан 5 February 2016 в 17:08

1 ответ

Нет никакого пути, как использовать восклицательный знак в двойных кавычках. Обратная косая черта это закрыло кавычки, или одинарные кавычки использования вместо двойных кавычек, как специальные символы, не расширена в одинарных кавычках.

curl -ik "http://localhost/index.php?username=parto&password=hello"\!"23"
curl -ik 'http://localhost/index.php?username=parto&password=hello!23'
1
ответ дан 29 September 2019 в 12:54

Другие вопросы по тегам:

Похожие вопросы: