rmdirコマンドは、
Unix系OS、
MS-DOS、およびそれらと互換性のあるOS(OS/2、Windowsなどを含む)において、
ディレクトリを削除するために用いられるコマンドです。名称は"remove directory"の略称であり、
MS-DOS系では`rd`というエイリアス(別名)が一般的に使用されます。また、
POSIX(Portable Operating System Interface)の
システムコールの一つとしても定義されています。
使用法
rmdirコマンドは、削除したい
ディレクトリの名前(パス)を引数として指定します。基本的な構文は以下の通りです。
bash
rmdir name_of_directory
ここで`name_of_directory`は削除対象となる
ディレクトリのパスを表します。重要な点として、rmdirコマンドで削除できるのは
中身が空のディレクトリのみです。
ディレクトリ内にファイルやサブ
ディレクトリが存在する場合、rmdirコマンドは失敗します。
Unix系のシステムでは、`-p`オプションを利用することで、
ディレクトリを削除した結果、親
ディレクトリも空になった場合に、親
ディレクトリまで自動的に削除することが可能です。
例えば、以下のコマンドを実行した場合:
bash
rmdir -p foo/bar/baz
最初に`baz/`
ディレクトリが削除され、次に`bar/`
ディレクトリ、そして最後に`foo/`
ディレクトリが削除されます。このように、`-p`オプションを用いることで、指定した
ディレクトリツリー全体を、末端の
ディレクトリから順に削除できます。
もし、空ではない
ディレクトリを、その内容物ごと再帰的に削除したい場合は、`rm`コマンドに`-r`オプションを指定します。例を挙げると、以下のようになります。
bash
rm -r foo/bar/baz
このコマンドは`foo/bar/baz`
ディレクトリとその内部のすべてのファイルおよびサブ
ディレクトリを削除します。
MS-DOS環境において、`rmdir`コマンドと同等の再帰的な
ディレクトリ削除を行うには、`deltree`コマンドを使用します。Windows環境では、`rd`コマンドに`/s`オプションを指定することで、同様の動作を実現できます。
bash
rd /s directory_name
POSIX標準における`rmdir`
システムコールの
関数プロトタイプは、一般的に以下のような形式で宣言されます。
c
int rmdir(const char *pathname);
ここで、`pathname`は削除対象
ディレクトリのパスを表します。この関数は、成功した場合は0を、失敗した場合は-1を返します。失敗の際には、`errno`グローバル変数にエラーコードがセットされます。
Microsoft Visual C++のCランタイムライブラリには、
Windows APIを利用して実装された、類似のインターフェースを持つ関数`_rmdir()`が定義されています。この関数はグローバルスコープを持ち、
アンダースコアで始まる命名規則が使われています。これは、処理系のために予約された名前であることを示しています。
POSIXと同名のシンボルとして`rmdir`マクロも定義されていますが、ISO標準ではないため、利用は非推奨とされています。
注釈
`rmdir`コマンドは、
ディレクトリを削除する際に、誤って重要な
ディレクトリを削除してしまうリスクがあるため、慎重に使用する必要があります。特に、再帰的な削除を行う場合は、削除対象の
ディレクトリが正しいことを十分に確認することが重要です。
関連項目
外部リンク