【问题标题】:How to remove a file beginning with a dash (in Unix like mode) [duplicate]如何删除以破折号开头的文件(在类 Unix 模式下)[重复]
【发布时间】:2015-07-18 07:14:01
【问题描述】:

我不小心在 GitBash(类似 Unix 的环境)中创建了一个名为 - -l 的文件(我完全不知道我是如何做到这一点的:)

Johnny (master #) scipy-tentative-numpy-tutorials $ ls -l
total 1
-rw-r--r--    1 Johnny   Administ      956 May  7 16:24 - -l
-rw-r--r--    1 Johnny   Administ      562 May  7 16:21 README.md

我想删除(删除)那个- -l 文件。

我尝试了几种方法,但没有运气。例如

rm "- -l"
rm "-\ \-l"
rm -\ \-l

这些都没用。

请问如何删除- -l 文件?

谢谢!

【问题讨论】:

  • 仅供参考——StackOverflow 不支持 GitHub 的 markdown 扩展;代码块的三次反引号就是其中之一。改为使用四空格缩进,或创建它们的 {} 编辑器按钮。

标签: linux unix escaping git-bash rm


【解决方案1】:

使用双连字符 (--) 停止标志解析:

rm -- -\ -l

或者,您甚至可以使用制表符完成:

rm -- \- # Then press TAB immediately after typing the final -

这假定这是目录中唯一带有前导连字符的文件。 Bash 足够聪明,可以自动转义文件名中间的空格。

【讨论】:

  • 我不确定是不是错了,但破折号前的反斜杠不是必需的。
  • 多余的反斜杠是无害的。
  • 这对我有用,谢谢!
  • 无害,但我确实倾向于同意它们会降低此答案的可读性(通过暗示实际上不必要的行为是部分答案)。考虑editing。
【解决方案2】:

试试这个:

rm ./-\ -l

或者这个:

rm -- -\ -l

第一个解决方案告诉程序您正在当前目录中查找文件,因此暗示该参数不是一个选项。

第二种解决方案使用-- 告诉程序以- 开头的后续参数不是选项。

【讨论】:

    猜你喜欢
    • 2016-10-20
    • 2017-09-27
    • 1970-01-01
    • 2012-12-12
    • 2015-02-20
    • 1970-01-01
    • 2014-03-29
    • 2018-07-30
    • 1970-01-01
    相关资源
    最近更新 更多