mv foo.tmp "-foo.tmp"
上面这个命令,按照规则,已经加上双引号做转义处理了,为什么还会被当做 option 处理?
@:/mnt/d/video/Movie/Movie$ mv foo.tmp "-foo.tmp"
mv: invalid option -- 'o'
Try 'mv --help' for more information.
1
hicdn 2018-04-08 18:03:05 +08:00
mv foo.tmp "./-foo.tmp"
|
2
rrfeng 2018-04-08 18:03:42 +08:00 via Android 1
- 是没法被转义的,而且也不属于#转义#这个概念范围之内
这样写:mv -- a -b -- 可以告诉命令停止解析 options |
3
mcfog 2018-04-08 18:15:15 +08:00
正解楼上有
bash 做的事启动 mv 这个 binary,传了两个字符串`foo.tmp`和`-foo.tmp`给 mv,双引号是不会传给 mv 的 ( bash )转义的范围是对 bash 来说有特殊含义的字符,比如你要删除名字为双引号的文件,写给 bash 看的是 mv \" 或者 mv '"' 这个时候 bash 理解你的转义,启动 mv 的时候传的参数是字面上的一个双引号`"`,仍然和 mv 命令本身没有关系 |
5
msg7086 2018-04-09 01:13:36 +08:00
谁告诉你横线需要的是转译?
|