如何创建一个命名为命令行参数的文件?

MYV*_*MYV 29 linux ubuntu command-line-arguments

我想知道如何制作一个名为标志的文件,例如,如果我想制作一个名为 的文件夹-a,什么命令可以做到这一点?

我试过mkdir '-a', mkdir \-a,但都没有奏效。我在 Ubuntu 上。

slh*_*hck 49

像这样调用命令:

mkdir -- -a
Run Code Online (Sandbox Code Playgroud)

--意味着选项在那之后结束,因此-a被逐字解释而不是作为mkdir. 您不仅可以在 中找到此语法mkdir,而且可以在除echo和之外的任何符合 POSIX 的实用程序中找到此语法test从规范

参数 -- 应该被接受为指示选项结束的分隔符。任何后面的参数都应该被视为操作数,即使它们以“-”字符开头。-- 参数不应用作选项或操作数。

--对于几乎所有处理文件名并希望确保它们不会破坏命令的操作,建议使用作为保护措施,例如,在循环中移动文件时,您可能需要调用以下命令,以便调用的文件-i不是' t (in?) 正确解析为一个选项:

mv -- "$f" new-"$f"
Run Code Online (Sandbox Code Playgroud)


Amo*_*ira 21

应该与任何合理的程序一起工作的最简单的方法是在 前面使用相对路径名-,例如mkdir ./-a将创建一个-a在当前工作目录中调用的目录。

使用此“技巧”的最常见示例是当您想要删除以破折号开头的文件时,您可以执行rm ./-a.

  • 这当然只有在您使用文件路径时才有效,而不是任何解析为字符串的任意命令行选项。但除此之外,给 `./` 加上前缀总是一个好主意——假设你创建了一个名为 `-rf` 的文件,然后你调用了 `rm *`。 (3认同)