はじめに#
こんにちは!今回はmkdirコマンドについて解説します。
mkdirはディレクトリ(フォルダ)を作成するコマンドです。“make directory"の略ですね。
ファイルを整理したり、プロジェクトの構造を作ったりと、毎日のように使う基本的なコマンドです。超シンプルで便利ですよ。
mkdirコマンドとは#
mkdirは、新しいディレクトリを作成する外部コマンドです。Windowsの「新しいフォルダ」と同じようなもんですね。
単純にディレクトリを作成することもできますし、複数の階層を一度に作成することもできます。
基本構文#
複数のディレクトリを作成する場合は、スペースで区切って指定します。
主なオプション#
| オプション |
説明 |
-p |
親ディレクトリも作成(パスがなくてもOK) |
-m |
ディレクトリの権限を指定 |
-v |
詳細表示(verbose) |
使用例#
例1: 基本的なディレクトリ作成#
実行結果:
mydirというディレクトリを作成します。最もシンプルな使い方です。
例2: 複数ディレクトリを一度に作成#
実行結果:
3つのディレクトリを一度に作成します。
例3: ネストされたディレクトリを作成(-p)#
1
|
mkdir -p project/src/components
|
実行結果:
親ディレクトリが存在しなくても、階層構造を丸ごと作成します。-p(parent)がめっちゃ便利です。
例4: 詳細表示で作成(-v)#
実行結果:
1
|
mkdir: created directory 'mydir'
|
作成したディレクトリを表示してくれます。
例5: 権限を指定して作成(-m)#
実行結果:
権限755(owner: rwx, group: rx, other: rx)で作成します。
例6: 複数階層を権限付きで作成#
1
|
mkdir -m 700 -p private/project/data
|
実行結果:
権限700(所有者のみアクセス可能)で複数階層を作成します。
例7: プロジェクト構造を作成#
1
|
mkdir -p my_project/{src,tests,docs,config}
|
実行結果:
ブレース展開を使ってプロジェクト構造を一度に作成。こういう時に便利です。
例8: 複雑なディレクトリ構造を作成#
1
|
mkdir -p web_project/{public,src/{components,pages,utils},styles,tests}
|
実行結果:
Webプロジェクトのようなフォルダ構造を一度に作成します。
例9: タイムスタンプ付きバックアップ用ディレクトリ#
1
|
mkdir backup_$(date +%Y%m%d)
|
実行結果:
backup_20251026みたいな日付付きディレクトリが作られます。
例10: 条件付きでディレクトリ作成#
1
2
3
|
mkdir -p ~/myapp/config
mkdir -p ~/myapp/logs
mkdir -p ~/myapp/data
|
実行結果:
アプリケーション用のディレクトリ構造を作成。
例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 # 既に存在してもエラーにならない
|
実行結果:
-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を習慣にしておくと、スクリプトで他との互換性が高まりますよ!