mkdir、rmdir、rm によるディレクトリ構造の作成と削除
このステップでは、ディレクトリの作成と削除の方法を学びます。ファイルを階層的なディレクトリ構造に整理することは、Linux における基本的なタスクです。ディレクトリの作成には mkdir、空のディレクトリの削除には rmdir、ディレクトリとその中身すべての削除には rm コマンドを使用します。すべてのコマンドは、デフォルトのディレクトリである ~/project から実行します。
まず、シンプルなディレクトリを作成してみましょう。mkdir コマンドは「make directory」の略です。
ターミナルで次のコマンドを実行し、cars という名前のディレクトリを作成します。
mkdir cars
ディレクトリが作成されたことを確認するには、ls -ld コマンドを使用します。-l オプションは詳細なリスト形式で表示し、-d オプションはディレクトリの中身ではなく、ディレクトリ自体のエントリを表示します。
ls -ld cars
次のような出力が表示され、cars ディレクトリが作成されたことが確認できるはずです。パーミッション文字列の先頭にある d は、それがディレクトリであることを示しています。
drwxr-xr-x 2 labex labex 4096 May 20 10:30 cars
次に、このディレクトリを削除してみましょう。rmdir コマンドは、空のディレクトリを削除するために使用されます。
rmdir cars
再度 ls -ld コマンドを実行して、削除されたことを確認します。
ls -ld cars
今回は、ディレクトリがもう存在しないため、エラーメッセージが表示されます。これにより、rmdir が成功したことが確認できます。
ls: cannot access 'cars': No such file or directory
rmdir コマンドは空のディレクトリに対してのみ機能します。では、入れ子になったディレクトリ構造がある場合はどうすればよいでしょうか。pastry/pies/cakes というディレクトリ構造を作成してみましょう。必要に応じて親ディレクトリも同時に作成するには、mkdir に -p(parents)オプションを付ける必要があります。
次のコマンドを実行してください。
mkdir -p pastry/pies/cakes
作成したディレクトリ構造全体を確認するには、ls コマンドに -l(詳細形式)と -R(再帰的)オプションを付けて使用します。
ls -lR pastry
出力には、pastry ディレクトリとそのサブディレクトリである pies および cakes が表示されます。
pastry:
total 4
drwxr-xr-x 3 labex labex 4096 May 20 10:35 pies
pastry/pies:
total 4
drwxr-xr-x 2 labex labex 4096 May 20 10:35 cakes
pastry/pies/cakes:
total 0
ここで、rmdir を使って pastry ディレクトリを削除しようとしてみましょう。
rmdir pastry
なぜこのコマンドは失敗したのでしょうか?ターミナルには次のようなエラーメッセージが表示されます。
rmdir: failed to remove 'pastry': Directory not empty
これは、rmdir が空のディレクトリしか削除できず、pastry には pies というサブディレクトリが含まれているためです。
ディレクトリとその中身(サブディレクトリやファイルを含む)をすべて削除するには、rm コマンドに -r(recursive:再帰的)オプションを付けて使用する必要があります。このコマンドはデータを永久に削除する可能性があるため、実行には細心の注意を払ってください。
rm -r pastry
成功した場合、このコマンドは何も出力しません。再度 ls -ld pastry を実行して、「No such file or directory」エラーが出ることを確認すれば、pastry ディレクトリが完全に削除されたことがわかります。
ls -ld pastry