【2026年7月最新】Linuxコマンド「mkdir」完全ガイド|ディレクトリ作成・-pオプション・パーミッション・業務活用まで徹底解説
この記事の内容
「Linuxでフォルダを作りたいが、コマンドの正しい書き方が分からない」「-pオプションと-mオプションの違いが混乱する」——こういった疑問をお持ちの方に向けて、この記事では Linuxの「mkdir」コマンドを完全解説します。
mkdirは Make Directory(ディレクトリを作る) の略で、Linuxの最も基本的なコマンドの一つです。シンプルなコマンドですが、-p(親ディレクトリを同時作成)・-m(パーミッション指定)・ブレース展開との組み合わせなど、知っておくべきテクニックが多くあります。特にAIプロジェクトや自動化スクリプトでサーバー環境を素早く構築したい場合に、このコマンドの使いこなしが作業効率を大きく変えます。
この記事では、基本的な使い方から全オプション・ブレース展開・シェルスクリプトでの活用・よくあるエラーの対処法まで、一記事で完全にマスターできるよう解説します。後半では、Claude Codeを使ってディレクトリ構成の作成を自動化する方法もご紹介します。
この記事を読むと、次のことが分かります。
01 WHAT IS MKDIR mkdirコマンドとは――ディレクトリ作成の基礎知識 Make Directoryの概念とファイルシステムにおける役割を整理する
mkdirコマンドは 「Make Directory(ディレクトリを作成する)」 の略です。LinuxやmacOS(Unix系OS)に標準搭載されており、ターミナル(コマンドライン)からディレクトリ(Windowsで言う「フォルダ」)を作成するときに使います。1970年代のUNIXから存在する、ファイル操作の最も基本的なコマンドの一つです。
📚 用語解説
ディレクトリ:Linuxにおけるフォルダのこと。ファイルシステム上でファイルを整理・分類するための「入れ物」。Windowsの「フォルダ」とほぼ同じ概念ですが、LinuxではWindowsより厳格な階層構造で管理されています。
1-1. ディレクトリとファイルの違い
ディレクトリとファイルはどちらもファイルシステムの「ノード」ですが、役割がまったく異なります。ファイルはデータを格納する最小単位(テキスト、画像、プログラムなど)で、ディレクトリはファイルや他のディレクトリを格納する「容器」です。mkdirはこの「容器(ディレクトリ)」を作成するコマンドで、ファイルを作成する `touch` コマンドとは対になる存在です。
| コマンド | 作成するもの | 主な用途 |
|---|---|---|
| mkdir | ディレクトリ(フォルダ) | ファイルを整理するための容器を作る |
| touch | 空のファイル | テキスト・設定ファイルの雛形を作る |
| cp -r | ディレクトリのコピー | 既存のディレクトリ構造を複製する |
| mv | ディレクトリの移動・リネーム | 既存のディレクトリを移動または名前変更する |
| rmdir / rm -r | ディレクトリの削除 | 空のディレクトリ(または中身ごと)を削除する |
1-2. mkdirが必要になる典型シナリオ
日常のLinux作業でmkdirを使う場面は多岐にわたります。開発者であれば新しいプロジェクトのフォルダ構成を整備するとき、サーバー管理者であれば各アプリケーションのログやデータ保存先を作成するとき、AIエンジニアであればデータセット・モデル・ログ・設定ファイルを分類するフォルダを一括構築するときに必須です。
📚 用語解説
ファイルシステム:OS(オペレーティングシステム)がディスク上のデータを管理するための仕組み。ディレクトリとファイルを階層構造(ツリー構造)で管理し、それぞれにパーミッション(読み書き実行の権限)を設定できます。Linuxで一般的なのはext4やxfsといったファイルシステムです。
1-3. Windowsとの概念比較
Windowsを主に使ってきた方にとって、Linuxのディレクトリは「フォルダ」と思って問題ありません。ただし、いくつかの重要な違いがあります。特にパスの書き方(バックスラッシュかスラッシュか)と、大文字・小文字の区別(Linuxは区別あり、Windowsは区別なし)は混乱しやすいポイントです。
| 項目 | Linux | Windows |
|---|---|---|
| 呼称 | ディレクトリ(Directory) | フォルダ(Folder) |
| パス区切り | スラッシュ /(例: /home/user/docs) | バックスラッシュ \(例: C:\Users\user\docs) |
| 大文字小文字 | 区別あり(Documents と documents は別物) | 区別なし |
| ルートディレクトリ | / (スラッシュ1つ) | C:\ など ドライブレター付き |
| 隠しファイル・ディレクトリ | 名前が . から始まるもの(例: .git) | 属性フラグで設定 |
02 BASIC USAGE mkdirコマンドの基本構文と使い方 ゼロから始めてすぐ使えるようになる最小限の知識
まず、mkdirコマンドの基本的な使い方を押さえましょう。構文はシンプルで、コマンド名の後にスペースを空けてディレクトリ名を入力するだけです。
2-1. 基本構文
mkdir [オプション] ディレクトリ名 [ディレクトリ名2 ...]
最も基本的な使い方は、1つのディレクトリ名を指定するだけです。実行するとカレントディレクトリ(現在いるディレクトリ)の中に新しいディレクトリが作成されます。
# カレントディレクトリに「myproject」というディレクトリを作成 $ mkdir myproject # 作成されたか確認する $ ls -la drwxr-xr-x 2 user user 4096 Jul 18 10:00 myproject # 絶対パスを指定してどこにでも作れる $ mkdir /home/user/workspace/myproject
2-2. 複数のディレクトリを同時に作成する
mkdirは一度のコマンドで複数のディレクトリを同時に作成できます。スペースで区切って並べるだけです。いちいち1つずつ実行する必要がなく、プロジェクトの初期フォルダ構成を一発で整備できます。
# 複数のディレクトリを一度に作成 $ mkdir src docs tests logs # 作成されたか確認 $ ls docs logs src tests # パス指定でも複数同時作成できる $ mkdir /home/user/project/src /home/user/project/docs /home/user/project/tests
Linuxでは半角スペースはコマンドの区切り文字として解釈されるため、ディレクトリ名に半角スペースを含めると意図しない動作になります。スペースを含めたい場合は「"」(ダブルクォート)で囲むか、スペースの代わりに「-」(ハイフン)か「_」(アンダースコア)を使いましょう。例: mkdir "my project" または mkdir my-project
2-3. 作成したディレクトリへ移動する
ディレクトリを作成したら、次に `cd` コマンドでそのディレクトリに移動するのが典型的な流れです。`mkdir` と `cd` を1行にまとめることもできます。
# ディレクトリを作って、そのまま移動する(2コマンド) $ mkdir myproject $ cd myproject # 1行で書く場合(&& でつなぐ) $ mkdir myproject && cd myproject # 作成と移動を1行で書く便利な構文(bash 専用) $ mkdir -p myproject && cd "$_" # "$_" は直前のコマンドの最後の引数を参照する変数
03 ALL OPTIONS mkdirの全オプション一覧と実践的な使い方 主要3オプションを実例付きで完全解説
mkdirのオプションはduコマンドなどと比べて少なく、覚えるべきものは3〜4個に絞られます。しかし、この少ないオプションの中に、実務で絶対に必要になる重要なものが含まれています。全体像を表で確認してから、各オプションを詳しく見ていきましょう。
| オプション | 長いオプション名 | 機能 | 重要度 |
|---|---|---|---|
| -p | --parents | 中間ディレクトリを含めて作成。既存でもエラーにならない | ★★★ 必須 |
| -m | --mode=MODE | パーミッション(権限)を指定して作成 | ★★★ 必須 |
| -v | --verbose | 作成されたディレクトリを出力(確認用) | ★★ 推奨 |
| -Z | (SELinux) | SELinuxセキュリティコンテキストをデフォルトに設定 | ★ 上級者向け |
| --help | ヘルプを表示 | - | |
| --version | バージョン情報を表示 | - |
3-1. -vオプション:作成ディレクトリを表示する
-v(--verbose)オプションを付けると、作成されたディレクトリ名が標準出力に表示されます。特に複数ディレクトリを一括作成するときや、-pで深い階層を作成するときに「本当に作られたか」をその場で確認できて便利です。
# -v で作成確認 $ mkdir -v project mkdir: created directory 'project' # 複数 + -v で全部確認 $ mkdir -v src docs tests logs mkdir: created directory 'src' mkdir: created directory 'docs' mkdir: created directory 'tests' mkdir: created directory 'logs' # -p -v の組み合わせで中間ディレクトリも確認 $ mkdir -pv project/backend/api mkdir: created directory 'project' mkdir: created directory 'project/backend' mkdir: created directory 'project/backend/api'
📚 用語解説
-v / --verbose オプション:コマンドの動作を詳細に出力するフラグ。mkdir以外にも多くのコマンド(cp, mv, rm など)に共通して存在します。スクリプトのデバッグ時や、大量ファイルの処理を確認したいときに役立ちます。
04 -P OPTION DEEP DIVE -pオプション詳解――親ディレクトリを同時作成する 最も実用的なオプション -p の動作原理と使いどころを完全網羅
-p(--parents)オプションは、mkdirの中で最もよく使われる重要なオプションです。「途中の親ディレクトリが存在しない場合でも、必要な全ての中間ディレクトリを自動的に作成する」という機能で、これを知らないと深い階層のディレクトリを作る際に何度もmkdirを繰り返さなければなりません。
4-1. -pなしの場合の問題
まず、-pオプションなしで深いパスを指定するとどうなるかを確認しましょう。親ディレクトリが存在しない場合、エラーになってしまいます。
# -p なし: 親ディレクトリが存在しないとエラーになる $ mkdir project/backend/api/v1 mkdir: cannot create directory 'project/backend/api/v1': No such file or directory # この場合、ディレクトリを1つずつ作らないといけない(面倒) $ mkdir project $ mkdir project/backend $ mkdir project/backend/api $ mkdir project/backend/api/v1 # -p オプションがあれば1コマンドで解決 $ mkdir -p project/backend/api/v1
4-2. -pの基本的な使い方
-p オプションは「parents(親)」の略で、指定したパスに必要な全ての中間ディレクトリを自動作成します。さらに重要な特性として、途中のディレクトリが既に存在してもエラーにならないという点があります。これにより、シェルスクリプトで「ディレクトリが存在するか確認してから作成する」という冗長なチェックが不要になります。
# project と project/backend が存在しない状態から一発で作成 $ mkdir -p project/backend/api/v1 $ ls project/backend/api/ v1 # 既存のディレクトリを指定してもエラーにならない $ mkdir -p project/backend/api/v1 # 2回目も正常終了(エラーなし) # -p と -v を組み合わせると何が作られたか一目で分かる $ mkdir -pv project/frontend/components/ui mkdir: created directory 'project/frontend' mkdir: created directory 'project/frontend/components' mkdir: created directory 'project/frontend/components/ui'
シェルスクリプトの中でmkdirを使う場合は、ほぼ常に -p を付けることが推奨されます。理由は「ディレクトリがすでに存在する場合のエラー」を防げること、「中間ディレクトリが存在しない場合のエラー」も同時に防げること。スクリプトが途中で止まる原因を一つ減らせます。
4-3. -pで複数の深い階層を一度に作成する
実務でよく使うパターンとして、プロジェクトの複数の深い階層を一度に作成する方法があります。スペースで区切って複数のパスを指定できます。
# AIプロジェクトの全ディレクトリ構成を一発作成
$ mkdir -p myai/{datasets/{train,val,test},models/{checkpoints,exports},logs,src,notebooks}
# 展開後のイメージ(ブレース展開との組み合わせは次のセクションで詳述)
myai/
├── datasets/
│ ├── train/
│ ├── val/
│ └── test/
├── models/
│ ├── checkpoints/
│ └── exports/
├── logs/
├── src/
└── notebooks/
# Webサービスのディレクトリ構成例
$ mkdir -p webapp/{public/{css,js,images},src/{components,pages,utils},tests,docs}
05 -M OPTION PERMISSIONS -mオプション詳解――パーミッションを指定して作成する Linuxのパーミッション体系を理解し、セキュアなディレクトリを作る
-m(--mode)オプションは、ディレクトリを作成する際にパーミッション(アクセス権限)を同時に設定するオプションです。通常のmkdirで作成されたディレクトリのパーミッションは、システムの umask 設定に従いますが、-m を使うと意図通りのパーミッションで作れます。特にセキュリティが重要なサーバー環境では必須知識です。
📚 用語解説
パーミッション(アクセス権限):Linuxで各ファイル・ディレクトリに設定される「誰が何をできるか」の権限情報。「読み取り(r)」「書き込み(w)」「実行(x)」の3種類の権限を、「所有者(owner)」「グループ(group)」「その他(other)」の3者に対して個別に設定できます。
5-1. パーミッションの8進数表記を理解する
パーミッションは8進数(0〜7)の3桁の数字で表します。各桁が「所有者」「グループ」「その他」の権限に対応し、各桁の数字は「読み取り=4・書き込み=2・実行=1」の合計値です。ディレクトリの場合、「実行(x)権限」が「ディレクトリに入れる(cd できる)」権限になります。
| 8進数値 | 権限の組み合わせ | 意味 |
|---|---|---|
| 7 | rwx (4+2+1) | 読み取り・書き込み・実行 すべて可 |
| 6 | rw- (4+2) | 読み取り・書き込み可、実行不可 |
| 5 | r-x (4+1) | 読み取り・実行可、書き込み不可 |
| 4 | r-- (4) | 読み取りのみ可 |
| 0 | --- (0) | アクセス不可 |
よく使われるディレクトリのパーミッション設定は以下の通りです。
| パーミッション | 所有者 | グループ | その他 | 典型的な用途 |
|---|---|---|---|---|
| 755 | rwx | r-x | r-x | Webサーバーの公開ディレクトリ(デフォルト) |
| 700 | rwx | --- | --- | 個人の秘密ディレクトリ(SSHキーなど) |
| 750 | rwx | r-x | --- | グループ内で共有するが外部には非公開 |
| 770 | rwx | rwx | --- | チームで共同作業するディレクトリ |
| 777 | rwx | rwx | rwx | 全員が読み書き可(セキュリティリスク高) |
5-2. -mオプションの使い方
# パーミッション755で作成(Webサーバー向け標準設定) $ mkdir -m 755 public_html # パーミッション700で作成(個人専用の秘密ディレクトリ) $ mkdir -m 700 private_keys # パーミッション750でグループ共有ディレクトリを作成 $ mkdir -m 750 team_workspace # -p と組み合わせて深い階層のパーミッションも指定 $ mkdir -pm 750 project/config/secrets
パーミッション 777 はすべてのユーザーが読み書き実行できる設定で、サーバー環境では深刻なセキュリティリスクになります。特にWebサーバー上のディレクトリに 777 を設定すると、Webから悪意あるファイルを配置されてしまうインジェクション攻撃の足がかりになる可能性があります。公開ディレクトリは 755、設定・秘密ファイルは 700 が基本です。
5-3. umaskとの関係を理解する
mkdirを-mオプションなしで実行したときの実際のパーミッションは、システムの umask(ユーマスク) 設定によって変わります。umaskは「デフォルトの権限から引き算する値」で、多くのLinuxシステムでは 022 に設定されています。この場合、ディレクトリのデフォルト(777)から 022 を引いた 755 が適用されます。
# 現在のumask値を確認 $ umask 0022 ← 一般的なLinuxのデフォルト値 # umask 022 の場合のディレクトリデフォルトパーミッション # 777(ディレクトリの最大値)- 022(umask)= 755 # -m オプションで明示的にパーミッションを指定すれば umask を無視できる $ mkdir -m 700 secure_dir # umaskに関係なく 700 になる
📚 用語解説
umask(ユーマスク):ファイルやディレクトリを作成するときのデフォルトのパーミッションを制限するマスク値。「777 - umask = ディレクトリのデフォルトパーミッション」のように機能します。umask 022 ならデフォルトのディレクトリパーミッションは 755 になります。
06 BRACE EXPANSION ブレース展開で複数ディレクトリを一括作成する {}構文で複雑なディレクトリ構成を1行で作り上げるテクニック
bashやzshには ブレース展開(Brace Expansion) という機能があります。`{dir1,dir2,dir3}` という構文を使うと、コマンドを展開して複数の引数として解釈させることができます。mkdirとブレース展開を組み合わせると、複雑なディレクトリ構成をたった1行で作り上げることができます。
📚 用語解説
ブレース展開(Brace Expansion):bash/zshのシェル機能の一つ。{a,b,c} と書くと、前後の文字列と組み合わせてa・b・cを個別の引数として展開します。mkdir {src,docs,tests} は mkdir src docs tests と同等です。カンマで区切るだけでなく、{1..5}のような数値範囲展開も使えます。
6-1. 基本的なブレース展開
# ブレース展開の基本 - 以下の2つは同じ意味
$ mkdir src docs tests logs
$ mkdir {src,docs,tests,logs}
# プレフィックス付き展開
$ mkdir -p project/{src,docs,tests,logs}
# 展開後: mkdir -p project/src project/docs project/tests project/logs
# サフィックス付き展開
$ mkdir -p {frontend,backend}-{dev,prod}
# 展開後: mkdir -p frontend-dev frontend-prod backend-dev backend-prod
6-2. 入れ子のブレース展開(ネスト)
ブレース展開は入れ子にすることができます。これを使うと、複雑な階層構造のディレクトリを1行で作成することができます。ただし可読性が下がるため、複雑すぎる場合はシェルスクリプトに書き出すことを検討してください。
# 入れ子ブレース展開でAIプロジェクト構成を1行で作成
$ mkdir -p myai/{datasets/{train,validation,test},models/{weights,exports},logs/{train,eval},notebooks,src/{data,model,utils},configs}
# 展開されるディレクトリ(確認用に -v を付けて実行)
$ mkdir -pv myai/{datasets/{train,validation,test},models/{weights,exports},logs/{train,eval},notebooks,src/{data,model,utils},configs}
mkdir: created directory 'myai'
mkdir: created directory 'myai/datasets'
mkdir: created directory 'myai/datasets/train'
mkdir: created directory 'myai/datasets/validation'
mkdir: created directory 'myai/datasets/test'
mkdir: created directory 'myai/models'
mkdir: created directory 'myai/models/weights'
mkdir: created directory 'myai/models/exports'
... (以下続く)
6-3. 連番ディレクトリの一括作成
ブレース展開では `{1..10}` のような数値範囲も使えます。バックアップを日別や月別に管理するディレクトリを一括作成する場合に便利です。
# 01から12まで月別ディレクトリを作成
$ mkdir -pv 2026/{01,02,03,04,05,06,07,08,09,10,11,12}
mkdir: created directory '2026'
mkdir: created directory '2026/01'
... (中略)
mkdir: created directory '2026/12'
# 数値範囲展開版(同じ結果)
$ mkdir -p 2026/{01..12}
# 連番テストデータディレクトリを100個作成
$ mkdir -p test-{001..100}
07 SHELL SCRIPTS シェルスクリプトでの活用――条件付き作成・ループ処理 繰り返し使う環境構築スクリプトにmkdirを組み込む実践的な方法
mkdirをシェルスクリプトに組み込むことで、環境構築の自動化が実現できます。「新しいプロジェクトを開始するたびに同じフォルダ構成を手動で作る」という繰り返し作業を、スクリプト1本で完全自動化できます。
7-1. ディレクトリが存在する場合の条件付き作成
スクリプトで最もよく使うパターンの一つが「ディレクトリが存在しない場合のみ作成する」条件付き処理です。-pオプションを使えばほぼ同じことができますが、明示的に条件チェックをしてログを出したい場合もあります。
#!/bin/bash
# ディレクトリが存在しない場合のみ作成する例
TARGET_DIR="/home/user/workspace/myproject"
if [ ! -d "$TARGET_DIR" ]; then
mkdir -p "$TARGET_DIR"
echo "作成しました: $TARGET_DIR"
else
echo "既に存在します: $TARGET_DIR"
fi
# -p を使えば同じことを1行で(エラーなし)
mkdir -p "$TARGET_DIR" # 存在しても存在しなくてもOK
7-2. プロジェクト初期化スクリプト
実務でよく作るのが「新プロジェクトの初期ディレクトリ構成を一発で作るスクリプト」です。新しいAIプロジェクトやWebアプリを始めるたびに、このスクリプトを実行するだけで統一された構成が整います。
#!/bin/bash
# init_ai_project.sh - AIプロジェクトの初期化スクリプト
PROJECT_NAME="${1:-myai_project}"
BASE_DIR="/home/user/projects/${PROJECT_NAME}"
echo "=== AIプロジェクト初期化: ${PROJECT_NAME} ==="
# 主要ディレクトリを一括作成
mkdir -pv "${BASE_DIR}"/{
datasets/{raw,processed,train,validation,test},
models/{weights,exports,archived},
logs/{training,evaluation,inference},
src/{data,models,training,evaluation,utils},
notebooks,
configs,
tests,
docs
}
# .gitignore を自動作成
cat > "${BASE_DIR}/.gitignore" << 'GITIGNORE'
datasets/raw/
models/weights/*.pt
models/weights/*.pth
logs/
*.pyc
__pycache__/
.env
GITIGNORE
echo ""
echo "=== 初期化完了 ==="
echo "プロジェクトパス: ${BASE_DIR}"
echo "ディレクトリ構成を確認:"
ls -la "${BASE_DIR}"
7-3. ループを使った一括作成
配列やリストからディレクトリ名を読み込んでループで作成するパターンも便利です。特にCSVファイルや設定ファイルからディレクトリ名を動的に生成する場合に活用できます。
#!/bin/bash
# client_list.txt に記載された顧客名ごとのディレクトリを作成
BASE_DIR="/home/user/clients"
CLIENT_LIST="client_list.txt"
while IFS= read -r client; do
client_dir="${BASE_DIR}/${client}"
mkdir -p "${client_dir}"/{contracts,reports,meetings,deliverables}
echo "作成: ${client_dir}"
done < "$CLIENT_LIST"
echo "全クライアントディレクトリの作成完了"
# 日付ベースのバックアップディレクトリを自動作成(cronに登録して毎日実行)
TODAY=$(date +%Y/%m/%d)
mkdir -p "/backup/${TODAY}"
echo "バックアップ先: /backup/${TODAY}"
ファイル作成
init_project.sh
chmod +x init_project.sh
./init_project.sh myai
構成完成
すぐに開発開始
08 TROUBLESHOOTING よくあるエラーと対処法 mkdirで遭遇する典型的なエラーと、その原因・解決方法を整理
mkdirはシンプルなコマンドですが、いくつかの典型的なエラーがあります。エラーメッセージを読めるようになると、原因特定と対処が格段に速くなります。
| エラーメッセージ | 原因 | 対処法 |
|---|---|---|
| mkdir: cannot create directory 'xxx': File exists | 同名のファイル(またはディレクトリ)が既存 | -p を付ける(ディレクトリの場合)または別名を使う |
| mkdir: cannot create directory 'xxx/yyy': No such file or directory | 親ディレクトリが存在しない | -p オプションを付ける |
| mkdir: cannot create directory 'xxx': Permission denied | 作成先ディレクトリへの書き込み権限がない | 自分が書き込める場所に作成する(管理者権限が必要な場合はsudoを使う) |
| mkdir: cannot create directory 'xxx': Read-only file system | ファイルシステムが読み取り専用でマウントされている | 別のファイルシステムに作成するかマウントを解除して再マウント |
| bash: mkdir: command not found | mkdirがインストールされていない | coreutilsをインストールする |
8-1. 「File exists」エラーへの対処
最もよく遭遇するエラーは「File exists(ファイルが既存)」です。同じ名前のファイル(ディレクトリではなくファイル)が既に存在する場合は、-pオプションを付けてもエラーになります。同名のディレクトリが既存の場合は-pを付ければエラーなく通過します。
# ディレクトリが既存の場合: -p なしはエラー $ mkdir myproject mkdir: cannot create directory 'myproject': File exists # -p を付ければエラーにならない(既存ディレクトリはそのまま) $ mkdir -p myproject # エラーなし # 同名のファイル(ディレクトリではない)が既存の場合: -p でもエラー $ touch myfile $ mkdir myfile mkdir: cannot create directory 'myfile': File exists # この場合は先にファイルを削除するか、別の名前を使う
8-2. 「Permission denied」エラーへの対処
「Permission denied(権限なし)」エラーは、作成先のディレクトリに対して書き込み権限がない場合に発生します。自分のホームディレクトリ以下や、適切な権限が付与されたディレクトリ以下にのみディレクトリを作成できます。
# 自分に権限のない場所への作成は拒否される $ mkdir /app/newdir mkdir: cannot create directory '/app/newdir': Permission denied # 解決法1: 権限のある場所(ホームディレクトリなど)に作成する $ mkdir ~/app/newdir # これは成功 # 解決法2: 管理者権限で実行(必要な場合のみ) $ sudo mkdir /app/newdir # sudoは本当に必要な場合のみ使う # 解決法3: 作成後にオーナーを変更 $ sudo mkdir /app/newdir $ sudo chown $USER:$USER /app/newdir
Permission deniedが出たとき、即座に sudo を使うのは良くないプラクティスです。本当に管理者権限が必要な場所なのか、それとも自分のホームディレクトリ以下の別の場所に作成すべきなのかをまず検討しましょう。不用意に sudo mkdir をすると、意図しない場所に管理者所有のディレクトリが作成されることがあります。
09 PRACTICAL SCENARIOS AIプロジェクト・サーバー環境構築での実務シナリオ 現場でよく使うmkdirの活用パターンを実例で解説
ここからは、実際の業務でmkdirをどう活用するかを具体的なシナリオで解説します。Linuxコマンドの理解を「使える」状態まで引き上げるには、実際の業務文脈で考えることが重要です。
9-1. AIプロジェクトの標準ディレクトリ構成
機械学習・生成AIプロジェクトでは、データセット・モデル・ログ・ソースコードなどを整理した標準的なフォルダ構成が重要です。プロジェクトごとに構成がバラバラだと、後からコードを読んだときに「どこに何があるか」が分からなくなります。以下のような標準構成をシェルスクリプト化しておくと再利用性が高まります。
# AIプロジェクトの推奨ディレクトリ構成(1コマンドで作成)
$ mkdir -pv myai_project/{
data/{raw,processed,interim,external},
models/{experiments,production,archived},
src/{features,models,visualization,utils},
notebooks/{exploratory,reporting},
reports/{figures,tables},
logs,
configs,
tests,
docs
}
# 生成される構成
myai_project/
├── data/ ← データ管理
│ ├── raw/ ← 生データ(変更禁止)
│ ├── processed/ ← 前処理済みデータ
│ ├── interim/ ← 中間処理データ
│ └── external/ ← 外部データセット
├── models/ ← モデル管理
│ ├── experiments/ ← 実験中のモデル
│ ├── production/ ← 本番用モデル
│ └── archived/ ← アーカイブ
├── src/ ← ソースコード
├── notebooks/ ← Jupyter Notebook
├── reports/ ← レポート・可視化
├── logs/ ← 学習ログ
├── configs/ ← 設定ファイル
├── tests/ ← テストコード
└── docs/ ← ドキュメント
9-2. Webサーバーの環境構築
Nginxなどを使ったWebサーバーのバーチャルホスト設定では、ドキュメントルートやログ保存先など、複数のディレクトリを一括で作成する必要があります。以下のようなスクリプトを用意しておくと、新しいサイトを追加するたびに迷いなくセットアップできます。
#!/bin/bash
# Webサイトの基本ディレクトリ構成を作成
SITE_NAME="${1}"
BASE="/var/www/${SITE_NAME}"
mkdir -p "${BASE}"/{public_html,logs,backups,configs}
echo "サイトディレクトリ作成完了: ${BASE}"
# 所有者・パーミッション設定
# (実際の設定は環境に応じて調整)
echo "ディレクトリ構成:"
ls -la "${BASE}"
サーバー準備
VPS・クラウド
構成作成
スクリプト実行
ファイル作成
バーチャルホスト
起動・確認
サイト公開
10 CLAUDE CODE AUTOMATION Claude Codeにディレクトリ構成を自動化させる 「このプロジェクトの構成を作って」と話しかけるだけで完了する
ここまでmkdirコマンドを詳しく解説しましたが、実を言うと弊社(株式会社GENAI)では複雑なディレクトリ構成の作成を毎回手で書いているわけではありません。Claude Code(Anthropicのターミナル上で動くAIエージェント)に「このプロジェクトのディレクトリ構成を作って」と話しかけるだけで、適切なmkdirコマンドを生成・実行してくれるからです。
📚 用語解説
Claude Code:Anthropicが提供するターミナル上で動くAIエージェント。日本語で指示するだけで、ファイル操作・コマンド実行・スクリプト生成まで自律的に行える。Claude ProプランまたはMaxプランに追加料金なしで含まれます。
10-1. Claude Codeへの指示例
Claude Codeはターミナルから起動し、自然な日本語でディレクトリ構成の要件を伝えるだけで、適切なmkdirコマンドを考えて実行してくれます。mkdirの文法を覚える必要がなく、「何を作りたいか」を日本語で説明するだけで済みます。
# Claude Code への指示例(ターミナルで "claude" 起動後) 「PythonのFlask APIプロジェクトの標準的なディレクトリ構成を作って」 「機械学習プロジェクト用のフォルダ構成を作って。 データセット・モデル・ログ・ソースコード・テストが整理されるように」 「Webアプリのフロントエンドとバックエンドを分けた モノレポ構成のフォルダを作って」 「次のフォルダ構成を作ってほしい: - 顧客別フォルダ(東京電機、大阪産業、名古屋商事) - 各フォルダに 見積書・契約書・報告書・議事録 のサブフォルダ」
Claude Codeはこれらの指示を受け取り、適切なmkdir -p コマンドとブレース展開を使ってディレクトリを作成し、ls コマンドで確認結果まで返してくれます。さらに、READMEや.gitignoreなどの基本ファイルも一緒に作成することを提案してくれます。
日本語で依頼
「〇〇プロジェクトの構成を作って」
mkdir構文を生成
-p・ブレース展開を自動選択
ls で構成を表示
連続実行
README・設定ファイルも
10-2. mkdirを学ぶ価値とClaude Codeの関係
「Claude Codeに任せればmkdirを覚える必要はないのでは?」という疑問もあるかもしれません。しかし、mkdirの基本を理解しておくことはClaude Codeをより効果的に使うためにも重要です。Claude Codeが提案したディレクトリ構成が正しいかを判断したり、「-m 750で作って」と具体的な要件を伝えたりするには、コマンドの知識が背景にある必要があります。
| 作業 | Claude Codeなし(手動) | Claude Codeあり | 削減時間 |
|---|---|---|---|
| 標準プロジェクト構成作成 | mkdir を10回以上入力(5〜10分) | 「構成を作って」と一言(1分) | 約85%削減 |
| 複数クライアント向けフォルダ一括作成 | ループスクリプト作成(30分〜) | 「20社分のフォルダを」と指示(3分) | 約90%削減 |
| パーミッション付き環境構築 | コマンド調査しながら実行(20分) | 「750でチームフォルダを」(2分) | 約90%削減 |
Linux・AI業務自動化の導入支援をAI鬼管理が担います
mkdirのようなLinuxコマンドの活用から、Claude Codeを使ったサーバー環境の自動化まで、AI鬼管理では経営者・管理職の方でもすぐ始められる形で業務自動化の導入をサポートします。
NEXT STEP
この記事の内容を、あなたのビジネスで
実践してみませんか?
AI活用を自社で回せるようになりたい方へ
AI鬼管理
Claude Code・Cowork導入支援から業務設計・社内浸透まで実践ベースで伴走。「自社で回せる組織」を90日で作る経営者向けトレーニング。
よくある質問
Q. mkdirコマンドでディレクトリを作成できましたが、cdで入れません。なぜですか?
A. ディレクトリに「実行(x)」権限がない可能性があります。Linuxではディレクトリへのcd(移動)には実行権限が必要です。ls -la で確認し、drwx------ のようにd(ディレクトリ)の後に権限が表示されます。chmod u+x ディレクトリ名 で実行権限を追加できます。
Q. mkdir -p と mkdir の違いは何ですか?
A. 主な違いは2点です。1点目:-p を付けると中間の親ディレクトリが存在しなくても、必要なすべての中間ディレクトリを自動作成します。-p なしでは親ディレクトリが存在しないとエラーになります。2点目:-p を付けると作成先のディレクトリが既に存在してもエラーになりません。シェルスクリプトでは常に -p を付けることを推奨します。
Q. mkdirで一度に作れるディレクトリの数に制限はありますか?
A. システムの引数リストの長さ制限(ARG_MAX)に依存しますが、通常の用途では気にする必要がない十分な数です。ただし、数千〜数万のディレクトリを一括作成する場合はシェルスクリプトのループ処理か、xargs を組み合わせて分割実行することを推奨します。
Q. Dockerfileの中でmkdirを使う場合、注意点はありますか?
A. DockerfileではRUNコマンドでmkdirを使います。-p オプションを付けることと、パーミッション設定を必要に応じて行うことが重要です。また、Dockerfile内での複数のRUNコマンドはレイヤーが増えてイメージが大きくなるため、mkdir と chmod などは && でつないで1つのRUN命令にまとめることが推奨されます。
Q. Macのターミナルでもmkdirの使い方はLinuxと同じですか?
A. ほぼ同じです。macOSのmkdirはBSD版ですが、-p・-m・-v などの主要オプションは同じように使えます。ただし一部のGNUオプション(--parents のような長いオプション名)が使えない場合があります。完全にLinuxと同じ動作にしたい場合は、Homebrewで GNU coreutils をインストールしてgmkdirコマンドを使う方法もあります。
Q. Claude Codeを使えばmkdirを覚えなくてもいいですか?
A. 基本的な使い方はClaude Codeが代替できます。ただし、-mオプションでパーミッションを適切に設定するためのLinux権限体系の理解や、「なぜこのディレクトリ構成が適切なのか」を判断するためには、mkdirとディレクトリ管理の基礎知識が必要です。Claude Codeをより賢く使うためにも、基礎コマンドの理解は有効です。
Claude Codeで業務自動化を90日で叩き込む
経営者向けの伴走型パーソナルトレーニング
Claude Code を業務に落とし込む
専門研修コース一覧
受講者本人の業務を題材に、「使いこなせる」状態になるまで伴走する研修プログラム。1対1特化型・ハンズオン・法人講座の3コースを展開中。業務特化・実装まで踏み込むタイプのClaude Code研修です。
研修コース一覧を見る →AI鬼管理へのお問い合わせ
この記事を読んで気になった方へ。
AI鬼管理の専門スタッフが、御社に最適な
業務自動化プランを無料でご提案します。




