云服务器 ECS Linux 执行命令会导致实际执行的是历史命令,要怎么处理解决?
执行的命令中包含!字符,该字符在 shell 里面是特殊字符,指的是执行历史命令。
如果要让!等特殊字符不转义的话,需要在前面加个\ 比如:
另外,Linux 的 shell 下常用的元字符说明:
字符 说明 IFS 由或或三者之一组成(我们常用 space )。 CR 由产生。 = 设定变量。 $ 作变量或运算替换(请不要与 shell prompt 搞混了)。 > 重导向 stdout。 < 重导向 stdin。 | 命令管线。 & 重导向 file descriptor ,或将命令置于背境执行。 ( ) 将其内的命令置于 nested subshell 执行,或用于运算或命令替换。 { } 将其内的命令置于 non-named function 中执行,或用在变量替换的界定范围。 ; 在前一个命令结束时,而忽略其返回值,继续执行下一个命令。 && 在前一个命令结束时,若返回值为 true,继续执行下一个命令。 || 在前一个命令结束时,若返回值为 false,继续执行下一个命令。 ! 执行 history 列表中的命令。*版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。