Я хочу сделать что-то как bzr commit -m "It works!"
. Я могу отсортировать Escape восклицательный знак путем выполнения bzr commit -m "It works\!"
. Однако затем мое сообщение о фиксации включает обратную косую черту. Как я выхожу из восклицательного знака, все еще игнорируя обратную косую черту?
Так как Вы не зависите от удара для расширения переменных в сообщении о фиксации, Вы могли использовать одинарные кавычки вместо этого. Строки в одинарных кавычках не расширены ударом.
bzr commit -m 'This does work!'
Выключите расширение истории:
set +H
или
set +o histexpand
Можно добавить одну из тех команд к Вашему ~/.bashrc
если Вы обычно не используете расширение истории.
Bash 4.3 добавил особый случай:
символ расширения истории также рассматривают, как заключено в кавычки, если он сразу предшествует заключительной двойной кавычке в дважды заключенной в кавычки строке
Вот еще один метод, если вам нужны двойные кавычки, а также восклицание:
echo "It's broken"'!'
Это работает, даже если !
не находится в конце строки.
Например:
echo "hello there"'!'" and goodbye"
Бонус: Подобный метод может быть использован, чтобы избежать любого текста в Sh или Bash (с помощью sed): смотрите первый вариант в этом ответе . Далее, если у вас установлено bash-завершение
, то, скорее всего, у вас уже имеется функция quote()
.