我总是在想:大多数 GNU/Unix 工具都以“减去某物”的形式接受选项,有时后面会跟一个参数。如果你有一个名为“减去某物”的文件会怎么样?
$ ls
-f
$ rm -f
$ ls
-f
$ mv -f abc
mv: missing destination file operand after `abc'
Try `mv --help' for more information.
$ cat -f
cat: invalid option -- 'f'
Try `cat --help' for more information.
或者
$ ls
-ohello.c
$ gcc -ohello -ohello.c
gcc: fatal error: no input files
compilation terminated.
这只是出于好奇;我没有这方面的用例。
答案1
要删除名为 的文件-x
,请使用rm -- -x
(--
表示选项结束)或rm ./-x
。
答案2
在面试中问这种问题是相当常见的。处理带破折号的文件的常用方法是:
$ rm -- -f
$ rm ./-f
答案3
这是 Unix 中的一个常见问题。主要方法是给出文件的完整路径名,这样它前面就不会有破折号:
$ rm -file.txt
unknown option -l
$ rm ./-file.txt #No problem!
$ rm $PWD/-file.txt #Same thing
一些命令,您可以单独使用破折号(或双破折号)来结束选项。但是,这不一定适用于所有命令,甚至不同系统上的同一命令也不一定适用。
$ rm -- -file.txt #Works on Linux but not on some Unix systems
答案4
你必须使用
rm -- <filename>
前任:
rm -- -f