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