mkdir オプション一覧|-p・-m・-vの使い方と実行例

コマンドリファレンス

mkdir コマンドで新しいディレクトリを作成するとき、複数階層を一度に作る作成時に権限を指定する既存ディレクトリでもエラーにしないなど、目的に応じてオプションを使い分けると作業がぐっと効率化します。この記事では「mkdir オプション」で知りたいことに直接答える形で、基本構文・主要オプション・実行例・注意点を整理します。すべてのコマンド例は実環境で動作確認済みです。

mkdirコマンドとは

mkdir(make directory)は、指定した名前の新しいディレクトリを作成するコマンドです。システム管理やスクリプト作成、作業用フォルダの作成など、日常的に利用されます。

基本構文(Syntax)

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

ディレクトリ名はスペース区切りで複数指定でき、一度のコマンドでまとめて作成できます。

mkdirの主なオプション一覧

オプション説明使用例
(なし)単一または複数のディレクトリを作成mkdir project
-p, --parents存在しない親ディレクトリも同時に作成し、既存ディレクトリを指定してもエラーにしないmkdir -p project/src/include
-v, --verbose作成したディレクトリ名を1件ずつ表示(verbose)mkdir -v project
-m MODE, --mode=MODE作成と同時にパーミッション(アクセス権)を指定。umaskの影響を受けないmkdir -m 755 project
-Z, --contextSELinuxのセキュリティコンテキストを設定mkdir -Z project
--helpヘルプを表示mkdir --help
--versionバージョン情報を表示mkdir --version

オプション別の実行例

オプションなし:単一・複数のディレクトリを作成

mkdir work
mkdir dir1 dir2 dir3

スペース区切りで複数指定すると、まとめて作成されます。

-p:親ディレクトリごと一括作成

mkdir -p project/src/include

projectsrcinclude の順に、存在しない階層をまとめて作成します。ブレース展開と組み合わせると、複数の子ディレクトリも1コマンドで作れます。

mkdir -p project/{src,bin,doc}

project/srcproject/binproject/doc の3ディレクトリが一度に作成されます。シェルスクリプトの初期化処理でよく使われる書き方です。

-p:既存ディレクトリを指定してもエラーにしない

mkdir -p work
echo $?

すでに work が存在していてもエラーにならず、終了ステータスも 0(成功)になります。-p なしで既存ディレクトリを指定すると File exists エラーで終了ステータスが 1 になるため、スクリプト内で「なければ作る」処理をエラーなく書きたいときは -p が必須です。

-m:パーミッションを指定して作成

mkdir -m 700 private_dir
ls -ld private_dir
drwx------ 2 user user 4096  7月 20 00:00 private_dir

-m を指定しない場合、パーミッションは umask(既定では多くの環境で 022002)の影響を受けて自動的に絞り込まれます。-m を使うと umask に関係なく指定したモードがそのまま設定される点が特徴です。詳しいパーミッションの仕組みはパーミッションとは?Linuxの権限の仕組みとchmodによる変更方法で解説しています。

-v:作成したディレクトリを表示

mkdir -v newdir
mkdir: created directory 'newdir'

-p -v のように組み合わせると、途中で作成された親ディレクトリもすべて表示されます。

よくあるエラーと対処法

エラー内容原因対処法
mkdir: cannot create directory 'work': File exists同名のディレクトリ(またはファイル)がすでに存在する-p を付けるか、別名にする
mkdir: cannot create directory 'no_parent/child': No such file or directory親ディレクトリ no_parent が存在しない-p を付けて親ディレクトリごと作成する
mkdir: cannot create directory '/root/xxx': Permission denied対象パスへの書き込み権限がない権限のあるディレクトリに作成するか、sudo を使う

よくある質問

mkdir -pとは何をするオプションですか?

存在しない親ディレクトリを自動的に作成し、さらに指定したディレクトリがすでに存在してもエラーにしないオプションです。mkdir -p a/b/c のように使うと、abc をまとめて作成できます。

複数のディレクトリを一度に作成するには?

mkdir dir1 dir2 dir3 のようにスペース区切りで並べるか、mkdir -p project/{src,bin,doc} のようにブレース展開と組み合わせます。

作成したディレクトリの権限を指定するには?

-m MODE オプションで指定します。例えば mkdir -m 700 secret とすると、所有者のみ読み書き・実行できるディレクトリになります。作成後に権限を変更したい場合は chmod コマンドを使います。

既存ディレクトリを指定するとどうなりますか?

-p なしの場合は File exists エラーになり作成に失敗します。-p を付けた場合はエラーにならず、そのまま処理が続行されます。

関連コマンド

備考

  • ディレクトリ作成には、作成先の親ディレクトリへの書き込み権限が必要です。
  • -p オプションを使えばエラーを避けつつ階層をまとめて作れるため、シェルスクリプトの初期化処理でよく利用されます。
  • -m を省略した場合の権限は umask の値によって決まります。明示的に権限を固定したい場合は -m を指定してください。

参考

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント