Unix 工具:如果一個檔案的名稱減去一些東西怎麼辦?

Unix 工具:如果一個檔案的名稱減去一些東西怎麼辦?

我總是想知道:大多數 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

相關內容