【 mkdir 】 ディレクトリを作成する 【 Linuxコマンドまとめ 】 | Linux Fan

【 mkdir 】 ディレクトリを作成する 【 Linuxコマンドまとめ 】

2018年7月29日

「Linuxコマンドまとめ」カテゴリでは、Linuxのコマンドについて、基本的な実行例とオプションを分かりやすくまとめます。

mkdir」は、ディレクトリの作成を行うコマンドです。

mkdirコマンドの基本的な使い方

mkdirコマンドの基本書式は、以下の通りです。

mkdir ディレクトリパス [...]

たとえば、次のように実行すればカレントディレクトリに「testdir」ディレクトリが作成されます。

mkdir testdir

絶対パスで指定することもできます。次のコマンドは、「/tmp/testdir」ディレクトリを作成します。

mkdir /tmp/testdir

複数のディレクトリパスを指定すれば、複数のディレクトリが作成されます。

mkdirコマンドの主なオプション

-p
親ディレクトリが存在しない時、自動で作成します。また、既に存在するディレクトリを指定してもエラーになりません。
-m モード
指定した「ファイルモード」でディレクトリを作成します。

-p」オプションの使用例

以下は「-p」コマンドの実行例です。「P/」「P/Q/」「P/Q/R/」といったディレクトリが存在しない場合は、自動で作成されます。「P/Q/R/S」まで、一度にディレクトリを作成できるというわけです。

mkdir -p P/Q/R/S

もし「P/Q/R/」までのディレクトリが無いのに「-p」を付けずに実行すると、次のようにエラーとなります。

$ mkdir P/Q/R/S
mkdir: ディレクトリ `P/Q/R/S' を作成できません: そのようなファイルやディレクトリはありません

なお、「-p」オプションには「作ろうとしているディレクトリが存在していてもエラーにしない」という役割もあります。シェルスクリプトでmkdirコマンドを記述する場合などによく使われます。

-m」オプションの使用例

-m」オプションで「ファイルモード」を指定してディレクトリを作成できます。ファイルモードは「chmod」コマンドと同じ形式で指定します。

以下は、数字(8進数)でモードを指定する例です。

$ mkdir -m 700 modetest1
$ ls -ld modetest1
drwx------ 2 lintaro lintaro 4096  7月 28 23:26 modetest1

以下は、文字列でモードを指定する例です。

$ mkdir -m u=rwx,g=rx,o= modetest2
$ ls -ld modetest2
drwxr-x--- 2 lintaro lintaro 4096  7月 28 23:30 modetest2

-p」と「-m」を同時に使用する場合の注意

これは細かい話になりますが、「-m」オプションで指定するモードは、「-p」オプションにより自動で作成された親ディレクトリには適用されません。

$ umask
0022
$ mkdir -p -m 750 P2/Q2/R2/S2
$ ls -ld P2/Q2/R2/S2
drwxr-x--- 2 lintaro lintaro 4096  7月 28 23:52 P2/Q2/R2/S2
$ ls -ld P2/Q2/R2
drwxr-xr-x 3 lintaro lintaro 4096  7月 28 23:52 P2/Q2/R2
$ ls -ld P2/Q2
drwxr-xr-x 3 lintaro lintaro 4096  7月 28 23:52 P2/Q2
$ ls -ld P2
drwxr-xr-x 3 lintaro lintaro 4096  7月 28 23:52 P2

この例では、「P2/Q2/R2/S2」だけが「-m 750」の指定どおり「drwxr-x---」となっています。
しかし、「P2/Q2/R2」「P2/Q2」「P2」は「drwxr-xr-x」つまり「755」であり、umask値「0022」の指定どおりとなっています。

-p」オプションにより自動で作成される親ディレクトリのモードも同じものに指定したい場合、次のように「( )」でサブシェルを使用し、その中でumask値を設定してから「mkdir」を実行します。

$ (umask 0027; mkdir -p P3/Q3/R3/S3)
$ ls -ld P3/Q3/R3/S3
drwxr-x--- 2 lintaro lintaro 4096  7月 29 00:05 P3/Q3/R3/S3
$ ls -ld P3/Q3/R3
drwxr-x--- 3 lintaro lintaro 4096  7月 29 00:05 P3/Q3/R3
$ ls -ld P3/Q3
drwxr-x--- 3 lintaro lintaro 4096  7月 29 00:05 P3/Q3
$ ls -ld P3
drwxr-x--- 3 lintaro lintaro 4096  7月 29 00:05 P3

この例では、「umask 0027」を指定することで、すべてのディレクトリが「drwxr-x---」つまり「0750」で作成されました。

他の実行例

mkdirの引数に複数のディレクトリを指定すれば、複数のディレクトリをまとめて作成できます。以下の例では、Bashのブレース展開を使用して複数のディレクトリを作成しています。

$ mkdir testdir{01..10}
$ ls -d testdir[0-9][0-9]
testdir01  testdir02  testdir03  testdir04  testdir05  
testdir06  testdir07  testdir08  testdir09  testdir10

以下の例は、Bashのコマンド展開を使って、作成するディレクトリ名に日付を付けています。

$ mkdir tmp$(date +%Y%m%d)
$ ls -d tmp*
tmp20180729

mkdirのヘルプ

使用法: mkdir [OPTION]... DIRECTORY...
Create the DIRECTORY(ies), if they do not already exist.

Mandatory arguments to long options are mandatory for short options too.
  -m, --mode=MODE   set file mode (as in chmod), not a=rwx - umask
  -p, --parents     no error if existing, make parent directories as needed
  -v, --verbose     print a message for each created directory
  -Z                   set SELinux security context of each created directory
                         to the default type
      --context[=CTX]  like -Z, or if CTX is specified then set the SELinux
                         or SMACK security context to CTX
      --help     この使い方を表示して終了する
      --version  バージョン情報を表示して終了する

GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
mkdir の翻訳に関するバグは <http://translationproject.org/team/ja.html> に連絡してください。
Full documentation at: <http://www.gnu.org/software/coreutils/mkdir>
or available locally via: info '(coreutils) mkdir invocation'

mkdirのマニュアル

MKDIR(1)                       ユーザーコマンド                       MKDIR(1)

名前
       mkdir - ディレクトリを作成する

書式
       mkdir [OPTION]... DIRECTORY...

説明
       ディレクトリが存在しない場合に、ディレクトリを作成します。

       長いオプションで必須となっている引数は短いオプションでも必須です。

       -m, --mode=MODE
              ファイルのパーミッションを a=rwx - umask ではなく、(chmod のよう
              に) MODE に設定する

       -p, --parents
              ディレクトリが存在していてもエラーを返さない。必要に応じて親ディ
              レクトリを作成する

       -v, --verbose
              ディレクトリを作成するごとにメッセージを表示する

       -Z, --context=CTX 作成した各ディレクトリに SELinux セキュリティコンテキ
       スト CTX
              を設定する

       -Z     作成した各ディレクトリに SELinux  セキュリティコンテキストを  デ
              フォルトタイプに設定する

       --context[=CTX]  -Z と同様だが、 CTX が指定された場合は、
              SELinux や SMACK のセキュリティコンテキストを CTX に設定する

       --help この使い方を表示して終了する

       --version
              バージョン情報を表示して終了する

       GNU                    coreutils                    のオンラインヘルプ:
       <http://www.gnu.org/software/coreutils/>   mkdir   の翻訳に関するバグは
       <http://translationproject.org/team/ja.html>  に連絡してください。 完全
       な文書は   <http://www.gnu.org/software/coreutils/mkdir>   にあります。
       ローカルでは info '(coreutils) mkdir invocation' で参照できます。

作者
       作者 David MacKenzie。

著作権
       Copyright © 2016 Free Software Foundation, Inc.  ライセンス GPLv3+: GNU
       GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
       This is free software: you are free  to  change  and  redistribute  it.
       There is NO WARRANTY, to the extent permitted by law.

関連項目
       mkdir(2)

       mkdir  の完全なマニュアルは  Texinfo マニュアルとして整備されている。も
       し、 info および  mkdir  のプログラムが正しくインストールされているなら
       ば、コマンド

              info mkdir

       を使用すると完全なマニュアルを読むことができるはずだ。

GNU coreutils                      2016年2月                          MKDIR(1)