我想知道如何制作一个称为标志的文件,例如,如果我想制作一个名为的文件夹-a
,那么什么命令可以解决这个问题?
我尝试了mkdir '-a'
,mkdir \-a
但均无效果。我在Ubuntu上。
我想知道如何制作一个称为标志的文件,例如,如果我想制作一个名为的文件夹-a
,那么什么命令可以解决这个问题?
我尝试了mkdir '-a'
,mkdir \-a
但均无效果。我在Ubuntu上。
Answers:
像这样调用命令:
mkdir -- -a
这--
意味着选项在此之后结束,因此-a
get会按字面意义进行解释,而不是作为的选项mkdir
。你会发现这种语法不仅在mkdir
,但除了任何POSIX兼容的工具echo
和test
。从规格:
参数-应该作为指示选项结束的定界符被接受。以下任何自变量都应视为操作数,即使它们以'-'字符开头。-参数不能用作选项或操作数。
--
建议在几乎所有处理文件名并希望确保它们不会破坏命令的操作中都使用安全保护措施,例如,在循环移动文件时,您可能需要调用以下内容,以使名为的文件为-i
“ t(in?)正确地解析为一个选项:
mv -- "$f" new-"$f"
cc -o -myfile -Wall -myfile.c
作为一个仅略微人为的例子。-myfile.c
如果您提出要求,任何值得赞扬的编辑器都应该能够将其保存到名为的文件中,但是当给出这样的选项列表时,C编译器可能不会执行您想要的操作。
cc
命令,例如上面迈克尔给出的命令,该命令-o
可以指定输出文件。
for f in ./*; do...
而不是for f in *; do...
适用于任何合理程序的最简单方法是在前面使用相对路径名-
,例如,mkdir ./-a
将-a
在当前工作目录中创建一个名为目录的目录。
使用此“技巧”的最常见示例是当您要删除以破折号开头的文件时,可以这样做rm ./-a
。
./
总是一个好主意-想象您创建了一个文件-rf
,然后又调用了rm *
。
--
并非每个命令都了解,只有少数几种)
--
是一回事,所以它应该适用于所有程序?
除了“ slhck”的答案之外,还有另一个技巧有时会起作用:
将有问题的文件名放入2组(不同的)qout中,例如"'-a'"
或'"-a"'
。
是否可行取决于程序,但是如果程序不支持POSIX --
功能,则是不得已的方法。
始终首选POSIX方法,因为它是100%可靠的。
--
终止选项处理还假定您不需要任何选项来跟随文件名,这种情况并非总是如此。
'-a'
或的文件"-a"