はじめに

こんにちは!今回はmkdirコマンドについて解説します。

mkdirはディレクトリ(フォルダ)を作成するコマンドです。“make directory"の略ですね。

ファイルを整理したり、プロジェクトの構造を作ったりと、毎日のように使う基本的なコマンドです。超シンプルで便利ですよ。

mkdirコマンドとは

mkdirは、新しいディレクトリを作成する外部コマンドです。Windowsの「新しいフォルダ」と同じようなもんですね。

単純にディレクトリを作成することもできますし、複数の階層を一度に作成することもできます。

基本構文

1
mkdir [オプション] ディレクトリ名

複数のディレクトリを作成する場合は、スペースで区切って指定します。

主なオプション

オプション 説明
-p 親ディレクトリも作成(パスがなくてもOK)
-m ディレクトリの権限を指定
-v 詳細表示(verbose)

使用例

例1: 基本的なディレクトリ作成

1
mkdir mydir

実行結果:

1
(成功時は何も表示されない)

mydirというディレクトリを作成します。最もシンプルな使い方です。

例2: 複数ディレクトリを一度に作成

1
mkdir dir1 dir2 dir3

実行結果:

1
(成功時は何も表示されない)

3つのディレクトリを一度に作成します。

例3: ネストされたディレクトリを作成(-p)

1
mkdir -p project/src/components

実行結果:

1
(成功時は何も表示されない)

親ディレクトリが存在しなくても、階層構造を丸ごと作成します。-p(parent)がめっちゃ便利です。

例4: 詳細表示で作成(-v)

1
mkdir -v mydir

実行結果:

1
mkdir: created directory 'mydir'

作成したディレクトリを表示してくれます。

例5: 権限を指定して作成(-m)

1
mkdir -m 755 mydir

実行結果:

1
(成功時は何も表示されない)

権限755(owner: rwx, group: rx, other: rx)で作成します。

例6: 複数階層を権限付きで作成

1
mkdir -m 700 -p private/project/data

実行結果:

1
(成功時は何も表示されない)

権限700(所有者のみアクセス可能)で複数階層を作成します。

例7: プロジェクト構造を作成

1
mkdir -p my_project/{src,tests,docs,config}

実行結果:

1
(成功時は何も表示されない)

ブレース展開を使ってプロジェクト構造を一度に作成。こういう時に便利です。

例8: 複雑なディレクトリ構造を作成

1
mkdir -p web_project/{public,src/{components,pages,utils},styles,tests}

実行結果:

1
(成功時は何も表示されない)

Webプロジェクトのようなフォルダ構造を一度に作成します。

例9: タイムスタンプ付きバックアップ用ディレクトリ

1
mkdir backup_$(date +%Y%m%d)

実行結果:

1
(成功時は何も表示されない)

backup_20251026みたいな日付付きディレクトリが作られます。

例10: 条件付きでディレクトリ作成

1
2
3
mkdir -p ~/myapp/config
mkdir -p ~/myapp/logs
mkdir -p ~/myapp/data

実行結果:

1
(成功時は何も表示されない)

アプリケーション用のディレクトリ構造を作成。

例11: 詳細表示で複数作成

1
mkdir -v -p project/{src,tests,docs}

実行結果:

1
2
3
4
mkdir: created directory 'project'
mkdir: created directory 'project/src'
mkdir: created directory 'project/tests'
mkdir: created directory 'project/docs'

作成時に詳細を表示して、何が作られたか確認できます。

例12: 既存ディレクトリでエラー回避

1
mkdir -p existing_dir  # 既に存在してもエラーにならない

実行結果:

1
(成功時は何も表示されない)

-pを使うと、ディレクトリが既に存在してもエラーになりません。

Tips・注意点

-pオプションはめっちゃ便利

1
2
3
4
5
6
# -pなしだとエラー(親ディレクトリがない)
mkdir a/b/c
# mkdir: cannot create directory 'a/b/c': No such file or directory

# -pなら親も一緒に作成
mkdir -p a/b/c

階層構造を作るなら、-pをつけるのが基本です。

ブレース展開でディレクトリ構造を一度に作成

1
2
3
4
5
# Webプロジェクト
mkdir -p web/{public,src,styles,tests}

# Pythonプロジェクト
mkdir -p python_project/{src,tests,docs,data}

こういう使い方をするとめっちゃ効率的ですね。

権限設定のポイント

1
2
3
4
5
6
7
8
# 所有者のみアクセス可能
mkdir -m 700 private_dir

# 全員読み取り可能
mkdir -m 755 public_dir

# グループのみ書き込み可能
mkdir -m 770 shared_dir

プロジェクトの性質に応じて権限を設定しましょう。

存在確認してから作成

1
2
3
4
5
6
7
# ディレクトリが存在しなければ作成
if [ ! -d "mydir" ]; then
    mkdir mydir
fi

# または -pで簡潔に
mkdir -p mydir

スクリプト内では-pを使うのがおすすめです。

日付付きディレクトリ

1
2
3
4
5
# バックアップを日付ごとに整理
mkdir backup_$(date +%Y-%m-%d)

# より詳細(時刻まで含む)
mkdir backup_$(date +%Y%m%d_%H%M%S)

バージョン管理やバックアップに便利です。

実践的な使い方

プロジェクト初期化スクリプト

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#!/bin/bash
# init_project.sh

PROJECT_NAME=${1:-"my_project"}

mkdir -p "$PROJECT_NAME"/{src,tests,docs,config}

echo "プロジェクト構造を作成しました:"
tree "$PROJECT_NAME"

# または
ls -R "$PROJECT_NAME"

Webアプリケーション構造

1
2
3
4
mkdir -p web_app/{public/{css,js,images},src/{components,pages,utils},styles,tests}

# src/components以下をさらに細分化
mkdir -p web_app/src/components/{common,layout,sections}

バックアップディレクトリの作成と管理

1
2
3
4
5
6
7
8
9
# 日付別のバックアップディレクトリを作成
BACKUP_BASE="$HOME/backups"
mkdir -p "$BACKUP_BASE"

DATE=$(date +%Y%m%d)
mkdir -p "$BACKUP_BASE/$DATE/documents"
mkdir -p "$BACKUP_BASE/$DATE/projects"

echo "バックアップディレクトリを作成: $BACKUP_BASE/$DATE"

Docker用ディレクトリ構造

1
2
3
4
# Dockerプロジェクト用
mkdir -p docker_project/{app,nginx,database,docker-compose}
mkdir -p docker_project/app/{src,config,logs}
mkdir -p docker_project/nginx/{conf,html}

ログディレクトリの自動作成

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#!/bin/bash

APP_DIR="/opt/myapp"
LOG_DIR="$APP_DIR/logs"

# ログディレクトリがなければ作成
mkdir -p "$LOG_DIR"

# ログレベル別にディレクトリを作成
mkdir -p "$LOG_DIR"/{info,warning,error}

echo "$(date '+%Y-%m-%d %H:%M:%S') - Application started" >> "$LOG_DIR/info/app.log"

一時ディレクトリの作成

1
2
3
4
5
6
7
8
# 一時作業用ディレクトリを作成
TEMP_DIR="/tmp/work_$(date +%s)"
mkdir -p "$TEMP_DIR"

echo "作業ディレクトリ: $TEMP_DIR"

# 作業完了後に削除
# rm -rf "$TEMP_DIR"

ユーザーごとのディレクトリ構造作成

1
2
3
4
5
6
7
8
#!/bin/bash
# ユーザー用ディレクトリを一括作成

for user in alice bob charlie; do
    mkdir -p "/home/$user"/{documents,downloads,pictures,videos}
    chown "$user:$user" "/home/$user"/*
    chmod 755 "/home/$user"/*
done

まとめ

mkdirコマンドのポイント:

  • ディレクトリを作成する基本コマンド
  • -p: 親ディレクトリも一緒に作成(超便利!)
  • -m: 権限を指定して作成
  • -v: 詳細表示
  • ブレース展開で複数階層を一度に作成
  • スクリプト内では-p必須
  • 日付を付けてディレクトリを管理すると便利
  • よく使う組み合わせ: mkdir -p, mkdir -m

ディレクトリ作成は基本中の基本。-pを習慣にしておくと、スクリプトで他との互換性が高まりますよ!