私はいつも疑問に思っています。ほとんどの 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