「複数のディレクトリを一度に作成したい」
Linuxでディレクトリを作成するmkdirコマンドは、ファイル操作の基本中の基本です。
この記事では、mkdirコマンドの基本的な使い方から、-pオプションによる階層一括作成、パーミッション指定、実務で役立つテクニックまで解説します。
・-p オプションで途中のディレクトリも含めて階層ごと一括作成できる
・-m オプションで作成と同時にパーミッション(例: 755)を指定できる
・mkdir -p dir/{sub1,sub2,sub3} でブレース展開を使った一括作成が便利
・スクリプト内では mkdir -p で「存在しても失敗しない」安全な書き方が定番
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
mkdirコマンドとは?
mkdirは「make directory」の略で、新しいディレクトリ(フォルダ)を作成するコマンドです。Linuxではファイルの整理、アプリケーションの配置、ログの保存先など、あらゆる場面でディレクトリを作成します。サーバー構築や運用の最初の一歩として、必ず使いこなせるようにしておきましょう。
mkdirの基本的な使い方
1. ディレクトリを1つ作成する
最もシンプルな使い方です。# カレントディレクトリにtestdirを作成 mkdir testdir # 作成されたか確認 ls -ld testdir drwxr-xr-x 2 user user 4096 3月 18 10:00 testdir
2. 複数のディレクトリを一度に作成する
スペース区切りで複数のディレクトリ名を指定すれば、まとめて作成できます。# 3つのディレクトリを一度に作成 mkdir dir1 dir2 dir3 # 確認 ls -l drwxr-xr-x 2 user user 4096 3月 18 10:00 dir1 drwxr-xr-x 2 user user 4096 3月 18 10:00 dir2 drwxr-xr-x 2 user user 4096 3月 18 10:00 dir3
3. 絶対パスで指定して作成する
パスを指定すれば、カレントディレクトリ以外の場所にも作成できます。# /tmp配下にworkディレクトリを作成 mkdir /tmp/work
主要オプション
1. -p:親ディレクトリごと一括作成する
mkdirで最も重要なオプションが -p(parents)です。途中の階層が存在しなくても、必要な親ディレクトリをすべて自動作成します。# -pなしだと途中のディレクトリがないとエラー mkdir /home/user/project/src/main mkdir: cannot create directory '/home/user/project/src/main': No such file or directory # -pをつけると途中のディレクトリも全て作成される mkdir -p /home/user/project/src/main # 確認 ls -R /home/user/project/ /home/user/project/: src /home/user/project/src: main
# -pなしで既存ディレクトリを指定するとエラー mkdir testdir mkdir: cannot create directory 'testdir': File exists # -pなら既に存在してもエラーにならない mkdir -p testdir
2. -m:パーミッションを指定して作成する
-mオプションで、作成時のパーミッション(権限)を指定できます。# パーミッション700(所有者のみ読み書き実行可)で作成 mkdir -m 700 secret_dir # 確認 ls -ld secret_dir drwx------ 2 user user 4096 3月 18 10:00 secret_dir
3. -v:作成結果を表示する
-v(verbose)オプションで、ディレクトリが作成されたことを画面に表示します。# -vで作成経過を表示 mkdir -pv /home/user/project/{src,bin,log} mkdir: created directory '/home/user/project' mkdir: created directory '/home/user/project/src' mkdir: created directory '/home/user/project/bin' mkdir: created directory '/home/user/project/log'
実務で使えるmkdirテクニック
1. ブレース展開でプロジェクト構成を一発作成
bashのブレース展開({A,B,C})と -p を組み合わせると、プロジェクトのディレクトリ構成を1コマンドで作成できます。# Webアプリのディレクトリ構成を一発作成 mkdir -p myapp/{src,config,log,tmp,public/{css,js,images}} # 確認 find myapp -type d myapp myapp/src myapp/config myapp/log myapp/tmp myapp/public myapp/public/css myapp/public/js myapp/public/images
2. 日付ベースのログディレクトリを自動作成
dateコマンドと組み合わせて、日付ごとのディレクトリを作成する方法です。cronジョブやバックアップスクリプトでよく使います。# 今日の日付でバックアップ用ディレクトリを作成 mkdir -p /backup/$(date +%Y%m%d) # 年/月/日の階層で作成 mkdir -p /var/log/myapp/$(date +%Y)/$(date +%m)/$(date +%d)
3. シェルスクリプトでの安全なディレクトリ作成
スクリプトでは「存在チェック+作成」よりも mkdir -p の方がシンプルで安全です。# 冗長な書き方(非推奨) if [ ! -d /var/log/myapp ]; then mkdir /var/log/myapp fi # シンプルな書き方(推奨) mkdir -p /var/log/myapp
トラブルシュート・エラー対処
「Permission denied」が出た時の対処法
書き込み権限がないディレクトリに作成しようとするとこのエラーが出ます。$ mkdir /var/mydir mkdir: cannot create directory '/var/mydir': Permission denied # sudoで実行する $ sudo mkdir /var/mydir
「File exists」が出た時の対処法
同名のファイルやディレクトリが既に存在する場合のエラーです。$ mkdir testdir mkdir: cannot create directory 'testdir': File exists # -pオプションなら既存でもエラーにならない $ mkdir -p testdir
「No such file or directory」が出た時の対処法
途中の親ディレクトリが存在しない場合のエラーです。-p オプションで解決します。$ mkdir /home/user/new/subdir/work mkdir: cannot create directory '/home/user/new/subdir/work': No such file or directory # -pで親ディレクトリごと作成 $ mkdir -p /home/user/new/subdir/work
本記事のまとめ
| やりたいこと | コマンド |
|---|---|
| ディレクトリを作成する | mkdir ディレクトリ名 |
| 親ディレクトリごと一括作成する | mkdir -p 親/子/孫 |
| パーミッションを指定して作成する | mkdir -m 700 ディレクトリ名 |
| 作成結果を画面に表示する | mkdir -v ディレクトリ名 |
| 複数ディレクトリを一度に作成する | mkdir dir1 dir2 dir3 |
| ブレース展開で構成を一括作成する | mkdir -p app/{src,bin,log} |
mkdirで階層ディレクトリを一発で作成できていますか?
コマンドの使い方を一つひとつ覚えていくのは時間がかかります。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
