こんにちは、フルスタックエンジニアのryuです。
今回は、Linuxのmkdirコマンドについて解説します。
mkdirは、新しいディレクトリを作成するための基本的なLinuxコマンドです。この記事では、基本構文から複数ディレクトリの作成、絶対パス・相対パス、よくあるエラーまで初心者向けに解説します。
【Linux】mkdirコマンドの使い方解説¶
mkdirとは?¶
mkdirは、Make Directoryの略で、新しいディレクトリを作成するコマンドです。
基本的な書き方は次の通りです。
mkdir [ディレクトリ名]
例えば、現在いるディレクトリの中にtestdirというディレクトリを作成する場合は、次のように実行します。
mkdir testdir
作成できたか確認してみましょう。
ls
実行結果にtestdirが表示されれば成功です。
testdir
mkdirで作成される場所を確認する¶
mkdir testdirと実行した場合、どこにディレクトリが作成されるのでしょうか。
答えは、現在いるディレクトリの中です。
現在のディレクトリはpwdコマンドで確認できます。
pwd
例えば、次のように表示されたとします。
/home/ryu
この状態で、
mkdir testdir
と実行すると、作成される場所は次の通りです。
/home/ryu/testdir
pwd
mkdir testdir
ls -la
【関連記事】現在いる場所を確認する方法は、pwdコマンドの使い方解説!カレントディレクトリを表示するコマンドでも詳しく解説しています。
絶対パスを指定してディレクトリを作成する¶
mkdirでは、ディレクトリ名だけではなくパスを指定できます。
例えば、/tmpの中にpracticeというディレクトリを作成する場合は次の通りです。
mkdir /tmp/practice
/tmp/practiceのように、/から始まるパスを絶対パスと呼びます。
一方、現在地を基準に、
mkdir practice
のように指定する方法は相対パスです。
【関連記事】絶対パスと相対パスとは?ファイルパスを理解する!
mkdirコマンドの主なオプション¶
mkdirでは、オプションを付けることでさまざまな作り方ができます。
よく使うものを整理すると次の通りです。
| オプション | 説明 |
|---|---|
-p, --parents |
必要な親ディレクトリもまとめて作成する |
-m, --mode=MODE |
作成時の権限を指定する |
-v, --verbose |
作成したディレクトリを表示する |
--help |
ヘルプを表示する |
--version |
バージョンを表示する |
初心者の方は、まず-pを覚えておくと便利です。
複数のディレクトリを一度に作成する¶
mkdirでは、複数のディレクトリをまとめて作成できます。
mkdir dir1 dir2 dir3
実行後に確認します。
ls
次のように3つのディレクトリが表示されます。
dir1
dir2
dir3
mkdir -pで親ディレクトリも一緒に作成する¶
mkdirで特によく使うのが-pオプションです。
例えば、次のような階層を一度に作りたいとします。
project
└── src
└── app
まだprojectもsrcも存在しない状態で、次のコマンドを実行するとエラーになります。
mkdir project/src/app
mkdir: cannot create directory 'project/src/app': No such file or directory
途中の親ディレクトリが存在しないためです。
そこで-pを付けます。
mkdir -p project/src/app
これで、project、src、appをまとめて作成できます。
確認する場合は、環境によってtreeコマンドが利用できれば次のように確認できます。
tree project
treeが入っていない場合は、findなどでも確認できます。
find project -type d
mkdir -pは、シェルスクリプトや環境構築でもよく使うため覚えておきましょう。
すでに存在するディレクトリへmkdirするとどうなる?¶
例えば、すでにtestdirがある状態で次のコマンドを実行します。
mkdir testdir
すると、次のようなエラーになります。
mkdir: cannot create directory 'testdir': File exists
すでに同じ名前のディレクトリが存在しているためです。
一方、-pを付けて、
mkdir -p testdir
と実行した場合、既存のtestdirがディレクトリであれば通常はエラーになりません。
mkdir -mで権限を指定して作成する¶
ディレクトリを作成するときに権限も指定したい場合は、-mを利用できます。
mkdir -m 755 testdir
作成後に確認します。
ls -ld testdir
環境によって次のように表示されます。
drwxr-xr-x 2 ryu ryu 4096 Aug 28 09:00 testdir
755は、所有者に読み取り・書き込み・実行、グループとその他のユーザーに読み取り・実行を許可する設定です。
権限を指定せずにmkdirした場合は、基本となる権限からumaskの設定を反映して最終的な権限が決まります。
ディレクトリ作成後に権限を変更する場合はchmodを使います。
chmod 755 testdir
【関連記事】【初心者向け】Linuxのファイル権限について徹底解説
mkdir -vで作成したディレクトリを確認する¶
何を作成したのか画面に表示したい場合は、-vを使えます。
mkdir -v dir1 dir2
環境によって次のように表示されます。
mkdir: created directory 'dir1'
mkdir: created directory 'dir2'
-pと組み合わせることもできます。
mkdir -pv project/src/app
複数階層を作るときに、どのディレクトリが作成されたのか確認しやすくなります。
Permission deniedと表示される場合¶
mkdirを実行したときに、次のようなエラーが出ることがあります。
mkdir: cannot create directory 'testdir': Permission denied
これは、現在のユーザーにその場所へディレクトリを作成する権限がない可能性があります。
例えば、一般ユーザーで/etc配下へ作成しようとすると、通常は権限が不足します。
mkdir /etc/testdir
まず、
pwd
ls -ld .
などで現在地と権限を確認し、本当に管理者権限が必要な操作なのか判断しましょう。
自分のホームディレクトリ内で練習するだけなら、通常はsudoは必要ありません。
cd ~
mkdir practice
ディレクトリ名にスペースがある場合¶
Linuxでは、スペースを含む名前のディレクトリも作成できます。
ただし、次のように書くと、
mkdir test dir
testとdirという2つのディレクトリが作成されます。
test dirという1つのディレクトリを作りたい場合は、引用符で囲みます。
mkdir "test dir"
または、スペースをエスケープします。
mkdir test\ dir
mkdirで作成したディレクトリを削除する¶
空のディレクトリを削除する場合は、rmdirを利用できます。
rmdir testdir
ただし、rmdirで削除できるのは基本的に空のディレクトリです。
中にファイルがある場合はエラーになります。
rmdir: failed to remove 'testdir': Directory not empty
ファイルを含むディレクトリを削除する場合はrm -rを使うことがあります。
rm -r testdir
ただし、rm -rはディレクトリ内のファイルもまとめて削除するため、実行前に対象をよく確認してください。
【関連記事】Linuxでディレクトリを削除するコマンドrmdirの使い方を詳しく解説
mkdirを実際に練習してみる¶
ここまで読んだら、ホームディレクトリなど安全な場所で実際に試してみましょう。
まず練習用ディレクトリを作成します。
cd ~
mkdir mkdir-practice
cd mkdir-practice
複数のディレクトリを作ります。
mkdir dir1 dir2 dir3
次に階層をまとめて作成します。
mkdir -p project/src/app
権限を指定して作成します。
mkdir -m 755 public
最後に確認します。
find . -type d
mkdirコマンドまとめ¶
今回はmkdirコマンドについて解説しました。
基本はとてもシンプルです。
mkdir testdir
複数のディレクトリを一度に作ることもできます。
mkdir dir1 dir2 dir3
親ディレクトリを含めてまとめて作成する場合は、-pを使います。
mkdir -p project/src/app
特にLinuxを学び始めた方は、mkdirだけを暗記するのではなく、pwdで現在地を確認し、lsで作成結果を確認し、cdで移動するところまでセットで練習してみてください。
さらにLinuxのコマンドの学習をしたい人に向けて、InfraAcademyというインフラ学習サービスのご紹介です。
「Linuxの実践的な内容を学習したい」、「コマンドを打ちながらLinuxを学習したい」
そのような方は、Linux入門講座から学習できます。
↓InfraAcademyの講座の一部です。

インフラエンジニアに必要な知識が学習できます。
参考:Linuxのコマンド練習用サイトのInfraAcademyを作成しました。【Linuxのコマンドをブラウザで練習しよう】



