Subscribed unsubscribe Subscribe Subscribe

'-'で始まるファイル名、ディレクトリ名を操作する

Bash

'-Tmp-'という名前のディレクトリに移動しようとしてcdコマンド叩いてみたら、

$ ls -l
total 0
drwxr-xr-x  2 sugyan  staff  68  2 16 14:09 -Tmp-
$ cd -Tmp-/
-bash: cd: -T: invalid option
cd: usage: cd [-L|-P] [dir]

となって困ったので、同じことで悩まぬようメモしとく。
touch, cd, mkdir などのコマンドで指定するファイル名、ディレクトリ名が'-'で始まる場合、オプション指定と解釈されてしまう。これはクォートしても意味が無いらしい。

$ cd '-Tmp-'
-bash: cd: -T: invalid option
cd: usage: cd [-L|-P] [dir]

じゃあどうすればいいんだろう、と本気でしばらく悩んだ。調べようにも調べ方が分からない。
色々やっているうちに簡単な解決策があることに気付いた。

$ cd ./-Tmp-

こうすりゃいいだけだった…
フルパス指定で操作しようとすればすぐに気付くことだったんだろうけど。

$ mkdir ./-hoge
$ touch ./-fuga
$ rm -rf ./-*

こうすれば普通のファイル名、ディレクトリ名を扱うのと同じように扱える。