ハイフンで始まるディレクトリ(ファイル含む)の削除方法

NO IMAGE

コマンド操作をしていた時に、
ハイフンで始まるディレクトリが作成されてしまって、
削除に困ったので、削除方法を残しておきます。

時系列に書いてみます。

< 複数階層のディレクトリを作ろ。

$ mkdir conf.d/hosts -p
mkdir: conf.d: No such file or directory

< なんかエラーがでた。
          mkdir -p conf.d/hosts と書かないといけなかった。

$ mkdir -p conf.d/hosts

< 作成できたはず。
          見てみよう。

$ ls -l
total 0
drwxr-xr-x  2 nonichi  staff  64  3 30 11:12 -p
drwxr-xr-x  3 nonichi  staff  96  3 30 11:12 conf.d

< あれ?
          -p ってディレクトリができてる・・・

          最初のmkdirコマンドでできちゃったんだな。。
          削除しておこう。

$ rm -rf "-p"
rm: illegal option -- p
usage: rm [-f | -i] [-dPRrvW] file ...
unlink file

< 削除できない・・・
          manコマンドで、削除する方法をしらべよう。。。

$ man rm
NOTE
The rm command uses getopt(3) to parse its arguments, which allows it to accept the `--' option which will cause it to stop processing flag options at that
point.  This will allow the removal of file names that begin with a dash (`-').  For example:
rm -- -filename
The same behavior can be obtained by using an absolute or relative path reference.  For example:
rm /home/user/-filename
rm ./-filename

< ここかな。直訳すると・・・

rmコマンドは、引数をパースするために、getopt(3) をつかう
「–」オプションは許可する、このポイントで実行フラグオプションを止めることを
ダッシュで始まるファイル名を削除することを許可する
例: rm — -filename
同じ振る舞いを絶対パス相対パスを使っても得られる
例: rm /home/user/-filename, rm ./-filename

うん、これっぽい。「–」をつけてやってみよう。

$ rm -r -- -p

< 削除できた!
          よかった。よかった。

以上です。

ツールカテゴリの最新記事