回答:
二重の使用--
オプションの終わりをマークします:
cat -- -<FILENAME>
以下のような他のプログラムにはtouch
、rm
あるいはgit checkout
また、この規則に従ってください:
$ touch -- -file
$ ll
total 0
-rw-r--r-- 1 ja ja 0 Mar 10 13:13 -file
$ echo hi! >> -file
$ cat -- -file
hi!
$ rm -- -file
$ echo $?
0
警告:それは常に使うようにするとよいでしょう--
後rm
スクリプトインチ 攻撃者は置くことができ--rf
、ディレクトリ内のファイルをし、rm *
実行パラメータとしてそれを取るだろう。これを参照してください。
$ touch A
$ touch B
$ mkdir dir
$ touch dir/C
$ touch -- -rf
$ rm *
$ ll
total 0
-rw-r--r-- 1 ja ja 0 Mar 10 13:21 -rf
おっと、これは、我々はディレクトリを削除したくなかった、ことを意味するものではないです。私たちは、使用している必要があります--
:
$ touch A
$ touch B
$ mkdir dir
$ touch dir/C
$ touch -- -rf
$ rm -- *
rm: cannot remove `dir': Is a directory
$ ll
total 4.0K
drwxr-xr-x 2 ja ja 4.0K Mar 10 13:22 dir
--
:多くのプログラムがすべてではありません。
--
、そういうものをいくつか示しました。
find . -name '-file_name' -exec cat {} \;
が、実際にはあまり意味がありません。
-
ていて他に何もない場合、これは機能しませんか?これは、ウォーゲームで登場しました:overthewire.org/wargames/bandit/bandit2.html
./
プレフィックスを使用することです。最も移植性が高い(usenet時代のUnix FAQを参照)