[ Linux ] 指令的参数开头要是"-"号怎么办?如何转义?

2018-05-19 18:50:53 +08:00
 1010011010

例如

rename -bar '' foo-bar

-bar 被当成选项了

试过

'-bar'
'\-bar'

都不行

1619 次点击
所在节点    问与答
6 条回复
hanxiV2EX
2018-05-19 18:52:15 +08:00
试试 -- -bar
1010011010
2018-05-19 18:54:25 +08:00
@hanxiV2EX #1
可以了
guog
2018-05-19 19:07:13 +08:00
一楼是一种解决方案,还可以用./
比如 touch ./--test
这样就不用抑制语法分析了
ho121
2018-05-19 19:51:44 +08:00
@guog 如果不是文件就不行了
Arnie97
2018-05-20 00:58:39 +08:00
注意分清哪些是 Shell 解析的,哪些是程序自行解析的。\x 和 'y' 这些是用于在 Shell 中转义的,程序实际收到的命令行参数里没有 \ 和 ' 的字符(当然这也跟 Shell 的实现有关,bash 会展开 * 之类的通配符,而 cmd 就不会)
guog
2018-05-20 08:28:06 +08:00
@ho121 非文件可以用反斜杠转义

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/456173

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX