初心者向けの Linux rmdir コマンドの例


Linux ユーザーとして、私たちは定期的にファイルとディレクトリを操作します。ユーザーが実行する一般的な操作の 1 つは、ファイル システムからディレクトリを削除することです。ただし、ディレクトリを削除するときは特に注意する必要があります。不注意に削除操作を実行すると、データが失われる可能性があるためです。

この初心者向けの記事では、rmdir コマンドについて学びます。また、日常的に使用できるいくつかの実用的な例についても説明します。

rmdir コマンドの構文は、他の Linux コマンドと似ています。大まかに言えば、オプションと引数の 2 つの部分に分かれています。

$ rmdir [OPTIONS] ... <DIRECTORY1> <DIRECTORY2> ...

ここで、角括弧 ([]) はオプションの引数を表し、角括弧 (<>) は必須の引数を表します。

Linux での rmdir コマンドの基本的な使い方

名前が示すように、rmdir コマンドを使用してディレクトリを削除します。ただし、空のディレクトリしか削除できないことに注意してください。このセクションでは、rmdir コマンドの基本的な使用方法について説明します。

まず、空のディレクトリをいくつか作成します。

$ mkdir dir1 dir2 dir3 dir4

必要なディレクトリが作成されたことを確認しましょう。

$ ls -l

次に、dir1 ディレクトリを削除して、削除されたことを確認します。

$ rmdir dir1
$ ls -l

同様に、rmdir コマンドを使用して、複数の空のディレクトリを一度に削除できます。

残りのディレクトリを削除しましょう。

$ rmdir dir2 dir3 dir4

最後に、すべてのディレクトリが削除されたことを確認します。

$ ls -l

ここで、ls コマンドがディレクトリを表示していないことがわかります。

前のセクションでは、ls コマンドを使用してディレクトリの削除を確認しました。ただし、前のコマンドの動作を確認するためだけにもう 1 つのコマンドを実行しても意味がありません。

このような場合、-v オプションを使用して冗長モードを有効にすることができます。これにより、処理されたすべてのディレクトリの診断が提供されます。

以前に作成したのと同じディレクトリ構造を作成しましょう。

$ mkdir dir1 dir2 dir3 dir4

それでは、冗長モードを有効にしてディレクトリを削除しましょう。

$ rmdir -v dir1 dir2 dir3 dir4
$ ls -l

上記の出力から、すべてのディレクトリが削除されたと結論付けることができます。

ファイル システムにサブディレクトリを作成することがよくあります。これにより、データを適切な方法で整理できます。空のサブディレクトリを操作する方法を見てみましょう。

最初の例で説明したように、rmdir コマンドを使用して複数のディレクトリを削除できます。ただし、サブディレクトリの数が多い場合、状況は複雑になります。

そのような場合、ディレクトリとそのすべての祖先を削除する -p オプションを使用できます。例でこれを理解しましょう。

まず、サブディレクトリ構造を作成します。

$ mkdir -p dir1/dir2/dir3/dir4/dir5

この例では、サブディレクトリ構造を作成するために mkdir コマンドで -p オプションを使用しました。

これらすべてのディレクトリを一度に削除しましょう。

$ rmdir -p -v dir1/dir2/dir3/dir4/dir5

rmdir: removing directory, 'dir1/dir2/dir3/dir4/dir5'
rmdir: removing directory, 'dir1/dir2/dir3/dir4'
rmdir: removing directory, 'dir1/dir2/dir3'
rmdir: removing directory, 'dir1/dir2'
rmdir: removing directory, 'dir1'

ここでは、冗長モードにより、dir5 ディレクトリとそのすべての上位ディレクトリが削除されます。

rmdir が空のディレクトリのみを削除できることは既にわかっています。空でないディレクトリを削除しようとすると、エラーが発生します。これによりデータ損失を防ぐことができますが、まれに問題が発生することがあります。

たとえば、Jenkins によって実行されるスクリプトから空でないディレクトリを削除しようとすると、ジョブは失敗を報告します。

これをシミュレートするために、空でないディレクトリを削除してみましょう。

$ mkdir -p dir1/dir2/dir3/dir4/dir5
$ rmdir dir1

rmdir: failed to remove 'dir1': Directory not empty

このようなエラーの場合、 --ignore-fail-on-non-empty オプションを使用できます。これは、空でないディレクトリが原因で発生したすべての失敗を無視します。

このオプションをコマンドで使用して、戻り値を確認してみましょう。

$ rmdir --ignore-fail-on-non-empty dir1
$ echo $?

0

この例では、コマンドがエラーを報告しておらず、ゼロの戻り値はコマンドの実行が成功したことを示していることがわかります。ただし、このオプションはエラーを抑制するだけで、空でないディレクトリは削除しないことに注意してください。

他の Linux コマンドと同様に、rmdir コマンドで正規表現を使用できます。次の 2 つの正規表現の使用法を見てみましょう。

  • ? – 正確に 1 文字に一致します。
  • * – 前の文字の 0 回以上の出現に一致します。

まず、空のディレクトリをいくつか作成します。

$ mkdir dir1 dir2 dir-01 dir-02

では、? 正規表現に文字列「dir」を使用して、dir1 および dir2 ディレクトリを削除してみましょう。

$ rmdir -v dir?

rmdir: removing directory, 'dir1'
rmdir: removing directory, 'dir2'

ここで、コマンドが正しいディレクトリを削除したことがわかります。

次に、 * 正規表現を使用して、他の 2 つのディレクトリを削除します。

$ rmdir -v dir-*

rmdir: removing directory, 'dir-01'
rmdir: removing directory, 'dir-02'

この例では、他の 2 つのディレクトリが削除されていることがわかります。

このセクションでは、正規表現を 2 つだけ使用する方法について説明しました。ただし、rmdir コマンドで他の高度な正規表現を使用することもできます。

この記事では、最初に rmdir コマンドの基本的な使い方を見てきました。次に、冗長モードとサブディレクトリの削除について説明しました。次に、ディレクトリが空でない場合の失敗を処理する方法を見てきました。最後に、正規表現の使用方法について説明しました。