Linuxのmkdir -pオプションを完全解説!初心者でもわかる親ディレクトリまとめ作成の基本
生徒
「Linuxでフォルダを作るときに、途中の親フォルダがないとエラーになってしまいました。どうすればいいですか?」
先生
「それはmkdirコマンドの-pオプションを使うと解決できますよ。親ディレクトリをまとめて作成できるんです。」
生徒
「普通のmkdirとの違いは何ですか?」
先生
「普通のmkdirは、親フォルダが存在しないとエラーになりますが、-pを付けると途中の親フォルダも自動で作成してくれます。」
生徒
「なるほど!それなら複雑な階層を一気に作れるんですね。」
先生
「そうです。では、具体的な使い方を一緒に見ていきましょう。」
1. mkdir -pオプションとは?
mkdir -pは、Linuxで親ディレクトリを含めてまとめて作成するためのオプションです。「make directory」の略であるmkdirに「-p(parentsの略)」を付けることで、存在しない親ディレクトリを自動的に作ってくれます。
例えば「projects/java/spring」という階層を一気に作りたいとき、普通のmkdirでは「projects」や「java」が存在しないとエラーになりますが、-pを付ければすべてまとめて作成できます。
2. 普通のmkdirでエラーになる例
まずは通常のmkdirコマンドで親ディレクトリがない場合を確認してみましょう。
mkdir projects/java/spring
mkdir: ディレクトリ `projects/java/spring' を作成できません: そのようなファイルやディレクトリはありません
このように、途中の「projects」や「java」が存在しないとエラーになってしまいます。これは初心者が最初に戸惑いやすいポイントです。
3. mkdir -pを使った正しい使い方
そこで活躍するのが-pオプションです。次のように入力すれば、階層ごとまとめて作成してくれます。
mkdir -p projects/java/spring
作成できたか確認するには、ls -Rで階層を表示すると分かりやすいです。
ls -R projects
projects:
java
projects/java:
spring
projects/java/spring:
このように、「projects」「java」「spring」が一気に作成されました。
4. 既に存在するディレクトリでもエラーにならない
-pオプションを使うと、もし親ディレクトリが既に存在していてもエラーになりません。例えば「projects」というフォルダがある状態で再度同じコマンドを実行しても問題なくスルーしてくれます。
mkdir -p projects/java/spring
この挙動は「冪等性(べきとうせい)」と呼ばれ、同じ操作を繰り返しても結果が変わらない性質を意味します。初心者でも安心して使える理由の一つです。
5. mkdir -pで複数階層を同時に作成する例
一度に複数の階層を作ることも可能です。例えば次のように入力すると、「python」「golang」という別の階層も同時に作成できます。
mkdir -p projects/python projects/golang
確認すると、それぞれの階層が作成されているのが分かります。
ls projects
golang java python
6. 実務や学習での活用例
プログラミングの学習や開発現場では、言語やフレームワークごとにディレクトリを分けることがよくあります。例えば「projects/java/spring」「projects/python/django」といった形で階層を整理すると、後から探しやすくなります。
また、ログファイルやバックアップデータを日付ごとに整理する場合にも便利です。
mkdir -p backup/2025/09/16
このようにすれば、「2025年9月16日」という日付階層が一気に作られ、ファイル管理がスムーズになります。
7. 注意点と補足
便利な-pですが、無意識に深い階層を作りすぎると逆に管理が難しくなることがあります。階層はできるだけシンプルにしておくのがおすすめです。
また、システムの大事な場所(例えば/etcや/var)に不用意にmkdirを実行すると、システムが正しく動作しなくなる恐れがあるため、初心者はホームディレクトリ内(/home/ユーザー名)で練習するのが安全です。