Linux / コマンド / mkdir / ディレクトリを作成するコマンド

Linuxでは、mkdirは新しいディレクトリを作成するコマンドです。階層構造のパスを一度に作成するには、-pを使用します。これにより、既存のディレクトリはそのままに、存在しない親ディレクトリだけを作成できます。

ディレクトリの作成と確認

mkdir は英語の make directory(ディレクトリを作成する)の略です。次のコマンドは、現在のディレクトリに projects という名前のディレクトリが存在しない場合に作成し、結果を確認します。既存のデータと混同しないよう、空の練習用ディレクトリで実行してください。

pwd
mkdir projects
ls -ld projects

まず、pwd で現在の作業場所を確認し、その後 ls -ld で新しいディレクトリ情報が表示されるか確認します。mkdir は通常、成功した場合にメッセージを表示しません。同じ名前のファイルやディレクトリが既に存在する場合、既定のコマンドはエラーを表示します。

相対パスは現在の場所を基準にしており、/home/user/projectsのように/で始まる絶対パスはルートディレクトリから指定されます。実際のパスとアクセス権限は環境に応じて確認してください。

親ディレクトリとともに作成

以下のコマンドは、必要な親ディレクトリが存在しない場合に作成します。例えば、練習場所にworkが存在しない場合、work、work/reports、work/reports/2024を順番に作成します。

mkdir -p work/reports/2024
ls -ld work work/reports work/reports/2024

-pなしでmkdir work/reports/2024を実行すると、親パスが存在しない場合に失敗します。-pを追加しても、パスがすでにディレクトリとして存在しているだけでエラーは発生しません。既存の内容を削除したり、既存のディレクトリの権限を変更したりすることはありません。

ただし、パスの途中に同名の通常ファイルが存在する場合や、親ディレクトリに対する必要な権限がない場合、-pを使用しても失敗することがあります。エラーメッセージ、終了ステータス、および実際のパスを一緒に確認して、成功を確認してください。

複数のディレクトリとスペースを含む名前

名前をスペースで区切って複数のディレクトリを作成することができます。以下は、現在の場所にまだ存在しない2つの名前の例です。

mkdir documents images
ls -ld documents images

名前自体にスペースが含まれる場合、パス全体を引用符で囲んで1つの名前として渡します。引用符がない場合、シェルはスペースで分割し、それらを別々の引数として渡します。

mkdir "project files"
ls -ld "project files"

ハイフンで始まる名前はオプションと解釈される可能性があります。例えば、mkdir -- -archiveは--の後に名前を置くため、オプションとして扱われません。

作成する際には、権限と結果を確認してください

一般的に、新しいディレクトリのデフォルトの権限は、現在のシェルのumaskとファイルシステムの設定によって影響を受けます。現在のマスクをumaskで確認し、作成されたディレクトリの実際の権限をls -ldで検証してください。

GNU mkdirの-mオプションを使用して、新しく作成されたディレクトリの権限を設定することもできます。以下は、privateがまだ存在しない場合に、所有者に読み、書き、実行権限を付与し、グループとその他には権限を付与しない例です。

mkdir -m 700 private
ls -ld private

-p と -m を一緒に使用しても、-m はコマンドラインで指定された新しいディレクトリに適用され、自動的に作成された親ディレクトリには適用されません。また、すでに存在するディレクトリには新しい権限を適用しません。アクセス制御リストやファイルシステムポリシーによって実際のアクセスに影響する場合があるため、必要な環境で結果を確認してください。オプションの詳細な動作については、GNU mkdir マニュアル を参照してください。

作成に失敗した場合

  • すでに存在します: 既存の項目がファイルかディレクトリかを確認するには ls -ld name を使用してください。-p は、既存のディレクトリをそのまま使用したい場合にのみ適切です。
  • 親パスが見つかりません: パスの綴りと現在の場所を確認し、-p を使用して不足している親ディレクトリを作成できるかどうかを判断してください。
  • 許可が拒否されました: 親ディレクトリに対して必要な書き込みおよびアクセス権があるか確認し、必要であれば管理者に依頼してください。

練習中に作成された空のディレクトリは、内容がないことを確認した後、rmdir を使用して削除できます。rmdir は通常、空でないディレクトリは削除しません。