Linux 执行命令会导致实际执行的是历史命令

赞赏 2016-07-14

Linux 执行命令会导致实际执行的是历史命令


问题描述


具体现象是。比如,执行如下指令:

  1. curl "http://xxxx.com/bao/uploaded/i3/2245429602/TB24JupcFXXXXaAXXXXXXXXXXXX_!!2245429602.jpg"

但实际执行的却是::

  1. curl "http://xxxx.com/bao/uploaded/i3/2245429602/TB24JupcFXXXXaAXXXXXXXXXXXX_wget "http://xxxx.com/bao/uploaded/i3/2245429602/TB24JupcFXXXXaAXXXXXXXXXXXX_ls2245429602.jpg"2245429602.jpg"

问题原因


执行的命令中包含字符,该字符在 shell 里面是特殊字符,指的是执行历史命令。

处理办法


如果要让等特殊字符不转义的话,需要在前面加个\ 比如:

  1. curl "http://xxxx.com/bao/uploaded/i3/2245429602/TB24JupcFXXXXaAXXXXXXXXXXXX_\!\!2245429602.jpg"  #这个样就不会转义了。

 

另外,Linux 的 shell 下常用的元字符说明:

字符说明
IFS三者之一组成(我们常用 space )。
CR产生。
=设定变量。
$作变量或运算替换(请不要与 shell prompt 搞混了)。
>重导向 stdout。
<重导向 stdin。
|命令管线。
&重导向 file descriptor ,或将命令置于背境执行。
( )将其内的命令置于 nested subshell 执行,或用于运算或命令替换。
{ }将其内的命令置于 non-named function 中执行,或用在变量替换的界定范围。
;在前一个命令结束时,而忽略其返回值,继续执行下一个命令。
&&在前一个命令结束时,若返回值为 true,继续执行下一个命令。
||在前一个命令结束时,若返回值为 false,继续执行下一个命令。
!执行 history 列表中的命令。*

登陆后阅读全文
阅读 1160 赞赏 0 有用 0 没用 0 收藏 0 分享

   



0 条留言

linux分享的头像

linux分享

每个软件都有确定的用途

相关文章

阿里云·业务运营团队内部的前端构建和工程化工具 Dawn开源

阿里云云盾扫描服务器的的IP段有哪些?

阿里云云盾扫描服务器的的IP段有哪些?

有料推荐

这世界欠我一个这样的老公!

高校学生模仿“世界名画”摆拍,可以说是戏精本精了

iPhone X 跌破发行价,苏宁200亿入股恒大 | 财经日日评

果然是高手!这次在日本,特朗普竹杠敲得不是一般狠

资深黄牛现身说法:iPhone X价格秒变不停,就像炒股一样

长一样的双胞胎也能识别?蚂蚁金服发布「眼纹识别」技术

苏联是怎么被阿富汗拖垮的?

美团或入局「分时租赁」共享汽车,王兴要大笔投入「泛出行」领域了? | 36氪独家

你或许被“一盘番茄炒蛋”刷屏了,但有人辛酸,有人质疑

iPhone X发售前夜,黄牛与苹果公司的不安

他的文章

我是如何执行 "rm -rf ~" 的

正态分布为什么常见?(财富的分布却不符合正态分布)

Linux下窗口管理器 xmonad 的使用教程

用披萨做比喻来解释 IaaS,PaaS,SaaS 的区别

如何制作CSR(证书私钥和证书请求文件)文件?

php RedisException with message read error on connection

Windows环境下ping丢包或不通时链路测试工具推荐

Linux下ping丢包或不通时链路测试工具推荐

链路测试结果分析说明及常见链路异常场景和测试报告

SSH 登录时出现如下错误:login: Module is unknown

手机扫一扫
分享文章