概要
mkdir(make directory)は、新しいディレクトリ(Windowsでいうフォルダ)を作成するための基本コマンドです。
単に箱を作るだけでなく、深い階層のディレクトリを一発で作成したり、作成と同時にアクセス権限(パーミッション)を設定したりすることができます。GUIでのフォルダ作成に比べて、スクリプト内での自動化や大量のフォルダ生成において圧倒的な効率を発揮します。
仕様(引数・オプション)
構文
mkdir [オプション] [ディレクトリ名...]
主なオプション
| オプション | 説明 |
| -p | 指定したパスの途中のディレクトリが存在しない場合、それらも含めて自動的に作成します(parents)。エラー回避のため常時つけることが多いオプションです。 |
| -m [モード] | ディレクトリ作成と同時に、パーミッション(権限)を指定した数値(例: 755, 700)で設定します(mode)。 |
| -v | ディレクトリを作成した際に、その旨をメッセージとして表示します(verbose)。 |
基本の使い方
ディレクトリを作成する
最もシンプルな使い方は、作成したいディレクトリ名を指定するだけです。
mkdir workspace
実行結果イメージ:
(成功時は何も表示されません。lsコマンドで確認します)
ls -F
workspace/
実践コマンド
1. 深い階層のディレクトリを一度に作成する (-p)
通常、mkdir dir1/dir2/dir3 を実行した時、dir1 や dir2 が存在しないとエラーになります。-p オプションを付けると、親ディレクトリも含めて再帰的に作成してくれます。
# logsディレクトリも、その中のappディレクトリも自動作成
mkdir -p logs/app/2026
2. 複数のサブディレクトリを一括作成する(ブレース展開)
プロジェクト開始時に、決まった構成のフォルダをまとめて作りたい場合に便利です。シェルのブレース展開 {A,B,C} 機能を利用します。
# projectディレクトリの中に、src, bin, doc をまとめて作成
mkdir -p project/{src,bin,doc}
実行結果イメージ:
tree project
project
├── bin
├── doc
└── src
3. 自分だけがアクセスできるディレクトリを作成する (-m)
機密情報を扱うディレクトリを作る際、作成後に chmod コマンドを実行する手間を省けます。
# 所有者のみ読み書き・実行可能(700)なディレクトリを作成
mkdir -m 700 private_data
実行結果イメージ:
ls -ld private_data
drwx------ 2 user user 4096 Jan 16 10:00 private_data
※ ディレクトリの場合、中に入るために実行権限(x)が必要なため、ファイルのように 400 ではなく 700 を設定するのが一般的です。
カスタムポイント
- エラー抑止としての
-p:-pオプションは「既にディレクトリが存在する場合もエラーを出さない」という副作用があります。スクリプト内で「無ければ作る」という処理を書きたい時に最適です。
- 権限設定 (
-m):- Web公開用なら
-m 755、完全非公開なら-m 700を使い分けます。
- Web公開用なら
注意点
- ディレクトリのパーミッション:
- ファイルと異なり、ディレクトリには 実行権限(x) がないと、
cdで中に入ったりlsでファイル一覧を見たりすることができません。-m 400(読み取りのみ)で作ってしまうと、自分でも入れない「開かずのフォルダ」になります(修正にはchmodが必要)。
- ファイルと異なり、ディレクトリには 実行権限(x) がないと、
- 書き込み権限:
- ディレクトリを作成するには、その親ディレクトリに対して書き込み権限(w)を持っている必要があります。
/usr/local/以下などに作る場合はsudo mkdirとする必要があります。
- ディレクトリを作成するには、その親ディレクトリに対して書き込み権限(w)を持っている必要があります。
応用
日付入りのバックアップディレクトリを作成する
コマンド置換を利用して、現在の日付(YYYY-MM-DD形式)の名前のフォルダを作成します。
mkdir -p backup/$(date +%F)
まとめ
mkdirは単純なコマンドですが、-p オプションの有無で作業効率が大きく変わります。
- 向く場面: フォルダ作成全般、スクリプトでの階層作成。
- 変更ポイント: 階層を作るなら
-p、権限設定なら-m。 - 注意点: ディレクトリには実行権限(
x)が必要。
とりあえず迷ったら、エラーが出にくく便利な mkdir -p を使うのが現場の定石です。
