Linuxコマンド mkdir(ディレクトリを作成する)

指定したディレクトリ名でディレクトリを作成するmkdirコマンドの解説

RHEL Fedora CentOS Vine Deblan Ubuntu Plamo

参考サイト:Man page of INSTALL

使用方法

mkdirの後にディレクトリ名を指定することでディレクトリを作成することができる。ディレクトリ名(引数)にしたディレクトリがすでに存在する場合は、ディレクトリは作成されません。

デフォルトで作成されたディレクトリのパーミッションは、0777(rwxrwxrwx)から設定されたumask値(許可しないビット値)を引いたものが付けられる。デフォルトは、022(umask)が設定されているので、0755(rwx-rx-rx)がセットされる。実際のumaskの設定は、umaskコマンドで調べることができる。

ディストリビューション管理者一般ユーザ
RHEL00220022
CentOS00220002
Vine Linux00220022
Ubuntu00220002
Debian GNU/Linux00220022
Plamo Linux00220022
ディストリビューションの初期値表

ただし、ディストリビューションごとにパーミッションの初期値は異なるため、必ずしも上記のような結果にはならない。

書式

$ mkdir [オプション] ディレクトリ名・・・
-m モード,
–mode=権限
指定したディレクトリを作成する
-p,
–parents
親ディレクトリが無ければ作成する
-v,
-verbose
ディレクトリ作成時にメッセージを表示する
オプション一覧

サンプル

$ mkdir tmp

実行結果

[testuser@ ~]$ ls -lF
total 8
-rw-rw-r-- 1 testuser testuser 6 Apr  7 19:34 sample1.txt
-rw-rw-r-- 1 testuser testuser 6 Apr  7 19:35 sample2.txt
[testuser@ ~]$ mkdir tmp
[testuser@ ~]$ ls -lF
total 12
-rw-rw-r-- 1 testuser testuser    6 Apr  7 19:34 sample1.txt
-rw-rw-r-- 1 testuser testuser    6 Apr  7 19:35 sample2.txt
drwxrwxr-x 2 testuser testuser 4096 Apr 14 20:56 tmp/
[testuser@ ~]$ 

1回のコマンドで複数ディレクトリを作成する。

2個、3個・・・スペース(半角空白)で区切って、ディレクトリ名を連記することで、1回のmkdirコマンドで複数のディレクトリを一度に作成することができる。

サンプル

$ mkdir tmp1 tmp2

実行結果


[testuser@ sample]$ ls -lF
total 0
[testuser@ sample]$ mkdir tmp1 tmp2
[testuser@ sample]$ ls -lF
total 8
drwxrwxr-x 2 testuser testuser 4096 Apr 15 06:37 tmp1/
drwxrwxr-x 2 testuser testuser 4096 Apr 15 06:37 tmp2/
[testuser@ sample]$ 

ディレクトリ作成時にパーミッションを付加する

tmpディレクトリ作成と同時に500(r-x—-)のパーミッションを付加する。

サンプル

$ mkdir -m 500 tmp

実行結果

[testuser@engraku ~]$ ls -lF
total 0
[testuser@engraku ~]$ mkdir -m 500 tmp
[testuser@engraku ~]$ ls -lF
total 4
dr-x------ 2 testuser testuser 4096 Apr 15 06:51 tmp/
[testuser@engraku ~]$ 

カレントディレクトリ内に階層ディレクトリを作成する。

カレントディレクトリ内に、work/installという階層ディレクトリを作成する。この段階でworkディレクトリは存在しない。

サンプル

$ mkdir -p work/install

実行結果

[testuser@ ~]$ ls -lF
total 0
[testuser@ ~]$ mkdir -p work/install
[testuser@ ~]$ tree
.
└── work
    └── install

2 directories, 0 files
[testuser@ ~]$ 

連番のディレクトリを作成する

01~12までの連番のディレクトリを1コマンドで作成する。{}のまでに西暦を付加することで、西暦+月のディレクトリを1回のコマンドで作成できる。

サンプル

$ mkdir {01..12}
$ mkdir 2020{01..12} #年月ディレクトリを一括で作成できる。

実行結果

[testuser@ work]$ mkdir {01..12}
[testuser@ work]$ tree
.
├── 01
├── 02
├── 03
├── 04
├── 05
├── 06
├── 07
├── 08
├── 09
├── 10
├── 11
└── 12

12 directories, 0 files
[testuser@ work]$ ls -lF
total 48
drwxrwxr-x 2 testuser testuser 4096 Apr 14 20:44 01/
drwxrwxr-x 2 testuser testuser 4096 Apr 14 20:44 02/
drwxrwxr-x 2 testuser testuser 4096 Apr 14 20:44 03/
drwxrwxr-x 2 testuser testuser 4096 Apr 14 20:44 04/
drwxrwxr-x 2 testuser testuser 4096 Apr 14 20:44 05/
drwxrwxr-x 2 testuser testuser 4096 Apr 14 20:44 06/
drwxrwxr-x 2 testuser testuser 4096 Apr 14 20:44 07/
drwxrwxr-x 2 testuser testuser 4096 Apr 14 20:44 08/
drwxrwxr-x 2 testuser testuser 4096 Apr 14 20:44 09/
drwxrwxr-x 2 testuser testuser 4096 Apr 14 20:44 10/
drwxrwxr-x 2 testuser testuser 4096 Apr 14 20:44 11/
drwxrwxr-x 2 testuser testuser 4096 Apr 14 20:44 12/
[testuser@ work]$