如何创建名称以符号“-”开头的文件

如何创建名称以符号“-”开头的文件

我想touch在 Linux 终端中使用该命令来创建一个名称以 符号开头的文件-,例如-attempt.

-我怎样才能克服这个特殊角色的事实呢?

例如,如果我想创建一个名为 的文件#attempt,我不能只写touch #attempt

相反,我必须写touch \#attempt,但在这种-情况下,即使我使用\它仍然不能很好地工作)。

答案1

两种方式:

-远离第一个字符

touch ./-foo

或者使用--开关结束标记

touch -- -foo

答案2

touch \#attempt之所以有效,是因为井号对于 shell 来说是特殊的。同样,您需要类似touch \(foo\), 或touch 'this & that'的文件名带有括号或与号等。

但转义破折号并没有帮助,因为它并不特殊到外壳,而是由 shell 启动的实用程序。运行 shell 命令touch \-foo行与运行相同touch -foo,无论如何touch都会得到单个参数-foo

所以,与其逃避,还需要做点别的事情。

告诉程序停止将命令参数解释为(可能的)选项的标准方法是--在选项后面插入参数。例如,这将rm使用选项-f在名为的文件上运行-r

rm -f -- -r

(并且rm -- --会删除一个名为 的文件--。)

或者,您可以通过确保破折号不是文件名的第一个字符(通常是在前面添加./.同样,这将删除一个名为的文件-rf

rm ./-rf

相关内容