bashで-(ハイフン)をエスケープする方法

こんにちは、さるまりんです。

あまりやることはないかもしれないですが、しばらくハマってしまったのでメモを残させてもらいます。

-(ハイフン)で始まる名前のファイルを作ろうと

touch -start-with-hyphen

としました。

$ touch -start-with-hyphen
touch: illegal option -- s
usage:
touch [-A [-][[hh]mm]SS] [-acfhm] [-r file] [-t [[CC]YY]MMDDhhmm[.SS]] file ...

エラーです。

-sがオプションと判断されてしまうんですね。

このような時、--を使ってエスケープします。

touch -- -start-with-hyphen

↑こんな感じです。

他のコマンドでも同じです。

lsでファイルの情報を見てみます。

$ ls -l -start-with-hyphen
ls: illegal option -- -
usage: ls [-@ABCFGHLOPRSTUWabcdefghiklmnopqrstuwx1%] [file ...]
$ ls -l -- -start-with-hyphen
-rw-r--r--  1 salumarine  staff  0  1 23 19:19 -start-with-hyphen

rmで削除します。

$ rm -start-with-hyphen 
rm: illegal option -- s
usage: rm [-f | -i] [-dPRrvW] file ...
       unlink file
$ rm -- -start-with-hyphen

冒頭にも書きましたが、あまり遭遇することはないかもですが、たまたまこんなケースに出くわしました。覚えられなくても、ここを見て思い出せれば今回みたいに長時間ハマることはないかな。書いたことを覚えていられますように。

読んでくださってありがとうございます。

それではまた!