如何在命令行中出现时忽略bash事件指示符?

时间:2013-12-13 12:49:06

标签: bash

echo "!omg"输出-bash: !omg: event not found

  1. 如何将!omg字符串输出到控制台?
  2. 我的问题出现了,因为我需要使用命令行执行一些节点代码:

    node -e "var code = function(){ console.log('which contains a lot of !'); }; !func();"

3 个答案:

答案 0 :(得分:2)

使用单引号:

echo '!omg'

如果您的输入中有引号,例如要打印console.log('lalala'),请说:

echo $'console.log(\'lalala\')'

或者,说:

cat | command << EOF
my_string_with_crazy_characters
EOF

最后一个表单不需要你转义输入中的任何字符。

答案 1 :(得分:0)

您可以按以下方式关闭history expansion

[username@hostname ~]$ set +o histexpand
[username@hostname ~]$ echo hello!world!anything
hello!world!anything

开启

[username@hostname ~]$ set -o histexpand
[username@hostname ~]$ echo hello!world!anything
-bash: !world!anything: event not found

答案 2 :(得分:0)

我更喜欢取消设置shell变量histchars以有效禁用历史记录扩展:

$ echo !omg
bash: !omg: event not found
$ histchars=
$ echo !omg
!omg