我總是想知道:大多數 GNU/Unix 工具採用「減去某些東西」形式的選項,有時後面跟著一個參數。如果你有一個名為 minus 的檔案怎麼辦?
$ 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