ハイフンで始まるファイルを作ったり消したりする。

FAQとも言えるコネタ。意外に知らない人が多いらしいので、記載。

$ touch -test
touch: invalid date format `est'

touchコマンドで、"-test" を作ろうとしたら、怒られた。

$ echo > -test
$

標準出力をリダイレクトすると怒られずに終了。作れたっぽい。

$ ls -l -test
ls: invalid option -- e
Try `ls --help' for more information.

ls -l しようとしたら、これまた怒られた。

$ ls -l | grep test
-rw-rw-r--    1 inu      inu             1 Sep  5 15:34 -test

しかしながら、確かにファイルはある。いらないから消してみよう。

$ rm -test
rm: invalid option -- t
Try `rm --help' for more information.

-testって名前のファイルなんだから消してくれよ!!

と、まぁ物を知らないと上記の通り。ハイフン(-)で始まるファイル名は、コマンドにオプションと解釈されてしまうから、特殊な扱いが必要なのです。' とか " で囲んでもダメだしね。

rm -- -test

はい、これで消えます。ハイフンを2つ重ねると、「ここから後ろはオプションありませんよ」ということになる。リダイレクトしたら作れるのは、そこにオプションという物が存在しないから。
ダラダラと長く書いたけど、コネタだね。今度はマシなこと書きます。