ディレクトリを作成する!mkdirコマンドの詳しいまとめ【Linuxコマンド集】

  • このエントリーをはてなブックマークに追加
  • Pocket

mkdirは「make directory」の略で、そのままディレクトリを新規作成するコマンドだ。

Windowsの「右クリック > 新しいフォルダを作成」に当たる。

Linuxのコマンドの中でも使用頻度が高いコマンドで、このコマンドなしでは基本的な操作もできない。使いやすいオプションも揃っているので、オプション含め動作をしっかり把握し活用してほしい。

コマンドの基本

コマンドの基本動作

ディレクトリを新規作成するには、次のコマンドで簡単だ。

$ mkdir ディレクトリ名

work01ディレクトリを作成するには、次のコマンドだ。

$ mkdir work01

mkdir ディレクトリ名

work01ディレクトリが作成された。

確認してみよう。

$ ls -ld work01

mkdirの確認

work01ディレクトリが作成されている。

上記mkdirコマンドを試すなら下のコマンドをLinux上で実行すればすぐに再現可能だ。

mkdirコマンドの便利なオプションたち

コマンドの一覧

後から詳細をご紹介するが、まずは一覧で見てみよう。

オプション-m(--modeオプション)

パーミッションを指定しディレクトリを作成する

-pオプション(--parentsオプション)

エラーを表示せず記述したディレクトリが存在しなければ作成する

-vオプション(--verboseオプション)

ディレクトリを作成した結果のメッセージを表示する

 

それでは、ひとつずつ見ていこう。

-mオプション:パーミッションを指定しディレクトリを作成する

パーミッションを指定してディレクトリを作成するオプションだ。

mkdirは指定がなければ、状況によってシステムで規定されたパーミッションが指定されるが、このオプションを使うことで任意のパーミッションを指定できる。

$ mkdir -m パーミッション指定 ディレクトリ名

パーミッションは、000から777までの3桁の8進数の形式や、u=w+といった権限を与えるユーザー=権限の形式で指定できる。

パーミッションが666(全ユーザに読み書き許可、実行許可なし)のwork02ディレクトリを作成するには、次のコマンドだ。

$ mkdir -m 666 work02

mkdir -m オプション

パーミッションが666のwork02ディレクトリが作成された。

確認してみよう。

$ ls -ld work02

mkdir -m オプションの確認

ディレクトリwork02がrw-rw-rw-で全ユーザーに読み書き許可、実行許可なしのパーミッションで作成されている。

$ mkdir -m 666 work02

--modeオプションも同じ

-mオプションと同様にパーミッションを指定してディレクトリを作成するオプションだが=でもパーミッションを指定できる。

$ mkdir --mode=パーミッション指定 ディレクトリ名

「=」がなくても動く。

パーミッションが所有者に実行権限を与えたwork03ディレクトリを作成する場合は、次のコマンドだ。

$ mkdir --mode o=w+ work03

mkdir --mode

パーミッションが所有者に実行権限を与えたwork03ディレクトリが作成された。

確認してみよう。

$ ls -ld work03

mkdir --mode確認

ディレクトリwork03が所有者に実行権限が与えられたパーミッションで作成されている。

もしくは次の半角空白ではなく=を記述した書式でも可能だ。パーミッションが所有者に実行権限を与えたwork04ディレクトリを作成する場合は、次のコマンドになる。

$ mkdir --mode=o=w+ work04

mkdir --modeコマンド

パーミッションが所有者に実行権限を与えたwork04ディレクトリが作成された。

確認してみよう。

$ ls -ld work04

mkdir --modeコマンド 3

パーミッション指定の前に空白で指定した書式と同様にディレクトリwork04が所有者に実行権限が与えられたパーミッションで作成されている。

パーミッション指定のオプションは書式が違うだけですべて同じ動作をするので、やりやすい書式のオプションを選択しよう。

-pオプション(--parentsオプション):エラーを表示せず記述したディレクトリが存在しなければ作成する

mkdirは指定がなければ、作成しようとしているディレクトリが存在していると、エラーになりディレクトリが作成されない。

実験してみよう。

すでにあるwork01ディレクトリを同じ名前で再度作成するために次のコマンドを実行する。

$ mkdir work01

mkdir -pオプション

ディレクトリwork01が存在しているというエラーメッセージが表示された。

これはwork01ディレクトリがすでにあるにもかかわらず再度作成すると、そのディレクトリ内容も削除されてしまうので作成できないようにしているためである。

また、mkdirは指定がなければ作成する親ディレクトリが存在していなくてもエラーになり子ディレクトリが作成されない。

実験してみよう。

存在しないwork05ディレクトリ内にsub02ディレクトリを作成するために次のコマンドを実行する。

$ mkdir work05/sub02

mkdir -p テスト

work05ディレクトリが存在しないというエラーメッセージが表示された。親ディレクトリであるwork05がなければ子ディレクトリを作成することができないためである。

1階層だけのディレクトリの作成であればあまり問題にならないが、ディレクトリの構成が深くなればなるほど面倒だ。

この2通りのケースに対応できるオプションが、-pオプション(--parentsオプション)だ。

-pオプション(--parentsオプション)を指定することで、ディレクトリが存在していてもエラーメッセージを表示せず、現在あるディレクトリはそのままにして新規に作成することはなく子ディレクトリを作成する。

コマンドは次の通りだ。

$ mkdir -p ディレクトリ名

また、親ディレクトリが存在しなくてもエラーメッセージを表示せずに親ディレクトリと子ディレクトリを作成する。

現在あるwork01ディレクトリがある場合は無視し、ない場合はwork01ディレクトリを作成するためには、次のコマンドだ。

$ mkdir -p work01

mkdir -p ケース1

エラーメッセージが表示されない。

ディレクトリを確認してみよう。

$ ls -ld work01

mkdir -p ケース1 結果

この場合、work01ディレクトリは上書き作成されるのではないことに注意したい。エラー表示しないだけだ。

今度は現在ないディレクトリに対する動作を確認していこう。現在ないwork05ディレクトリ内にsub02ディレクトリを作成するためには、次のコマンドだ。

$ mkdir -p work05/sub02

mkdir -p ケース2

エラーメッセージが表示されない。

ディレクトリを確認してみよう。

$ ls -lR work05

mkdir -p ケース2 結果

work05ディレクトリは新規作成され、またwork05ディレクトリ内にsub02ディレクトリが作成されている。

-vオプション(--verboseオプション):ディレクトリを作成した結果のメッセージを表示する

親ディレクトリから子ディレクトリまでいくつもディレクトリを作成する場合、どのディレクトリが新規作成されたものか作成しながら、一度に確認できると便利だ。

-vオプション(--verboseオプション)はmkdirコマンドでディレクトリを作成した結果を表示する。

$ mkdir -v ディレクトリ名

現在あるwork01ディレクトリ内にsub01ディレクトリを作成し、その中にdata00ディレクトリを確認しながら作成するためには、次のコマンドだ。

$ mkdir -p -v work01/sub01/data00

mkdir -vオプション

sub01ディレクトリとdata00ディレクトリが新たに作成されたことがわかった。

オプションの同時指定

もちろんオプションは、同時指定をすることもできる。

work06ディレクトリ内にsub05ディレクトリを確認しながら作成するためには、次のコマンドだ。

$ mkdir -p -v work06/sub05

このコマンドは、次のようにも入力できる。

$ mkdir -pv work06/sub05

-mオプションによるパーミッションの指定を組み合わせる場合も同じように考えることができる。

work06ディレクトリ内にsub06ディレクトリを確認しながらパーミッションが666で作成するためには、次のコマンドだ。

$ mkdir -pvm 666 work06/sub05

上記のように-mオプションと-pオプションを組み合わせて、パーミッションを指定しながら親子ディレクトリを作成する場合、注意したい点がある。

-mオプションと-pオプションを組み合わせた場合は、パーミッションは指定した最下位のディレクトリにのみ反映される。

もしもディレクトリ全体に対してパーミッションを変更する場合は、一旦作成した後、chmodコマンドを-Rオプション付きで実行する。

ディレクトリのみパーミッションを反映し、ファイルにはパーミッションを指定したくない場合は、findコマンドのディレクトリのみ指定する-type dオプションと他のコマンドを実行する-execオプションを組み合わせ、次のコマンドで実行できる。

$ find ディレクトリ -type d -exec chmod パーミッション {} \;

work06ディレクトリ内のディレクトリのパーミッションを707に変更するためには、次のコマンドだ。

$ find work06 -type d -exec chmod 707 {} \;

確認してみよう。

$ ls -ld work06 work06/sub05

mkdir オプション

work06ディレクトリとその中のsub06ディレクトリのパーミッションが707に変更されている。

mkdir関連コマンド

最後にmkdirコマンドに関連して、基本的なファイルやディレクトリ操作のコマンドも紹介しておく。

rmdirコマンド

ディレクトリを削除する

cpコマンド

ファイルやディレクトリをコピーする

rmコマンド

ファイルやディレクトリを削除する

mvコマンド

ファイルやディレクトリを移動する

まとめ

mkdirコマンドはLinuxを使う上で、非常に使用頻度の高いコマンドの一つだ。

-pオプション(--parentsオプション)と-vオプションは必ず常時付与してもいい便利なオプションだ。これらのオプションとともに覚えておきたい。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できる。

短期間でエンジニアになる方法

・「まったくの初心者だけどエンジニアになりたい!」

・「プログラマーとして転職をしたい!」

という方はリナックスアカデミーの資料を見てみてください。短期間で未経験からエンジニアになることができるスクールとして15年間選ばれ続けてきた理由やノウハウが載った資料です。

エンジニアの入り口に立つために必要な勉強技術の最新動向本当に使えるIT資格学習に役立つ国からの奨励金などの情報が詰まっています。

無料で2,3日中にお手元にお届けします。


資料を見てみる

SNSでもご購読できます。

コメントを残す

*