[小ネタ][bash] ハイフンで始まる名前のファイルをmvする
皆さんこんにちは。よくコマンドの引数として「–hogehoge」なんてつけることがあるかと思いますが、知らない間にこの引数をファイルとしてブチまけてしまうことがたまにあります。なので私はホームディレクトリを汚さないよう、 ${HOME}/tmp みたいなブチまけてもよいディレクトリにcdして作業するクセをつけています。
さて、そんなある日、ブチマケを発見してしまいまして・・・
$ ls --hoge
こんな風に、ハイフンで始まるファイルがあって名前を変更したくても・・・
$ mv --hoge HOGE mv: オプション '--hoge' を認識できません Try 'mv --help' for more information.
そんな時は慌てず騒がず
$ mv ./--hoge HOGE $ ls HOGE
mvコマンドの後に続くハイフンがコマンドラインオプションとして解釈されてしまうようです。なので、「./」をつけて絶対パスで指定してあげればファイル名だと解釈してくれます。
ね、簡単でしょう?
[amazonjs asin=”4873112540″ locale=”JP” title=”入門bash 第3版”]
なるほど、カレントディレクトリから指定すればええですね。
私がいつもやってたのは、下記のように–でオプション打止め指定です。
$ mv — –hoge HOGE
引数に–を使うと、オプションはここで終了の意味になるようです。C言語のgetopt関数を使ってオプションを処理してる場合は、–でオプション打ち止めが使えるんじゃないですかね。