Linux の mkdir コマンドとその例

Linux の mkdir コマンドは、ディレクトリを作成するために使用されます。これは、ファイルとディレクトリの管理で重要な役割を果たすため、すべての Linux ユーザーが知っておくべき基本的なコマンドです。mkdir コマンドの基本構文を使用すると、一度に 1 つ以上のディレクトリを作成したり、権限を設定したり、親ディレクトリが存在しない場合は作成したりすることができます。mkdir のさまざまなオプションと構文を理解することで、コマンド ラインでファイルとディレクトリを管理する際の効率が大幅に向上します。

このガイドでは、mkdir コマンドの構文を説明し、そのオプションを検討し、Linux システム上のさまざまなシナリオで mkdir を使用する方法の実用的な例を示します。

mkdir コマンドの構文

最も単純な形式では、mkdir コマンドは次の構文に従います。

mkdir [OPTION]... DIRECTORY...
  • mkdir は、システムに新しいディレクトリを作成するように指示するコマンドです。
  • [OPTION] は、コマンドの動作を変更するオプションの引数です。
  • DIRECTORY は、作成するディレクトリの名前です。

mkdir コマンドで使用できるオプション

mkdir コマンドでは、機能をカスタマイズするためにいくつかのオプションを使用できます。

  • -m, –mode=MODE: 新しいディレクトリのファイル モード (権限) を設定します。通常は「755」や「644」などの数値文字列で表されます。
  • -p, –parents: 指定されたディレクトリがすでに存在する場合、このオプションによりエラーが報告されません。また、必要に応じて親ディレクトリを作成することもできます。
  • -v、–verbose: mkdir コマンドが何を実行しているかを説明する詳細な出力を提供します。
  • –help: ヘルプメッセージを表示して終了します。
  • –version: バージョン情報を出力して終了します。

mkdir コマンドの例

mkdir で簡単なディレクトリを作成する

mkdir コマンドの最も単純で一般的な使用法は、新しいディレクトリを作成することです。

mkdir new_directory

このコマンドでは、new_directory は作成するディレクトリの名前です。このコマンドを実行すると、現在の場所に new_directory という名前の新しいディレクトリが作成されます。

mkdir で複数のディレクトリを作成する

mkdir コマンドは複数のディレクトリを同時に作成することもできます。方法は次のとおりです。

mkdir dir1 dir2 dir3

このコマンドでは、dir1、dir2、および dir3 は作成するディレクトリの名前です。このコマンドは、現在の場所にこれら 3 つのディレクトリを作成します。

mkdir を使用して特定の権限を持つディレクトリを作成する

-m または –mode オプションを使用すると、ディレクトリの作成時にその権限を指定できます。

mkdir -m 755 new_directory

ここで、new_directory は権限が '755' に設定されて作成されます。つまり、所有者は読み取り、書き込み、実行が可能ですが、グループとその他のユーザーは読み取りと実行のみが可能です。

mkdir でネストされたディレクトリを作成する

-p または –parents オプションを使用すると、必要に応じて親ディレクトリを作成できます。例:

mkdir -p dir1/dir2/dir3

このコマンドは、dir1 と dir2 が存在するかどうかを確認し、存在しない場合は作成します。次に、dir1 内にある dir2 内に dir3 を作成します。

mkdir で詳細出力を使用する

-v または –verbose オプションを使用すると、mkdir は作成するディレクトリごとにメッセージを出力します。これはトラブルシューティングや確認に役立ちます。

mkdir -v new_directory

このコマンドは new_directory を作成し、その作成を示すメッセージを出力します。

名前にスペースを含むディレクトリを作成する

場合によっては、ディレクトリ名にスペースを含むディレクトリを作成したいことがあります。これは、ディレクトリ名を引用符で囲むことで実現できます。

mkdir "new directory"

このコマンドを使用すると、new directory (「new」と「directory」の間にスペースが入ります) という名前の新しいディレクトリが作成されます。

mkdirのバージョンを確認しています

現在システムにインストールされている mkdir コマンドのバージョンを確認できます。これは、互換性の問題が発生した場合やトラブルシューティング中に役立つ場合があります。バージョンを確認するには、次のコマンドを使用します。

mkdir --version

このコマンドは、システムで現在使用されている mkdir コマンドのバージョン情報を表示します。

mkdir のヘルプを表示する

mkdir コマンドの使用方法についてヘルプが必要な場合、またはそのオプションをすばやく確認したい場合は、–help オプションを使用します。

mkdir --help

このコマンドは、mkdir コマンドの使用方法と使用可能なオプションを示すヘルプ メッセージを出力します。

テキストファイルからディレクトリを作成する

作成したいディレクトリ名のリストを含むテキスト ファイルがあるとします。xargs コマンドと mkdir コマンドを使用してこれを実行できます。

xargs mkdir < dir_list.txt

このコマンドでは、dir_list.txt はディレクトリ名のリストを含むテキスト ファイルです。コマンドはこのファイルを読み取り、これらの名前のディレクトリを作成します。

フルパスでディレクトリを作成する

ディレクトリを作成する場所のフルパスを指定できます。これは、現在の作業ディレクトリ以外の場所にディレクトリを作成する場合に特に便利です。

mkdir /path/to/new_directory

ここで、指定されたパス /path/to/ に new_directory が作成されます。

隠しディレクトリの作成

Linux では、ドット (.) で始まるファイル名またはディレクトリ名は隠しファイルとみなされます。隠しディレクトリを作成するには、次のコマンドを使用します。

mkdir .hidden_directory

このコマンドは、.hidden_​​directory という名前の隠しディレクトリを作成します。このディレクトリは、ls -a を使用して表示できます。

既存のディレクトリの上書きを防ぐ

-p または –parents オプションを使用して、mkdir コマンドが既存のディレクトリを上書きするのを防ぐこともできます。

mkdir -p existing_directory

このコマンドを使用すると、existing_directory がすでに存在する場合、上書きされず、潜在的なデータ損失を防ぎます。

ディレクトリの作成とグループIDの設定

g オプションを使用すると、新しいディレクトリのグループ ID を設定できます。

mkdir -m g=group_name new_directory

このコマンドは、new_directory を作成し、そのグループ ID を group_name に設定します。

ディレクトリを作成して一時ディレクトリにする

t オプションを使用すると、ディレクトリを一時ディレクトリにすることができます。Linux では、これは標準のディレクトリとは少し異なる方法で扱われます。

mkdir -m t new_directory

このコマンドは、new_directory を一時ディレクトリとして作成します。一時ディレクトリに作成されたファイルは、通常、一定時間アクセスされないと削除されます。

複数レベルのネストされたディレクトリの作成

-p オプションを使用すると、単一のコマンドで複数レベルのネストされたディレクトリを作成できます。

mkdir -p Level1/Level2/Level3/Level4

このコマンドは 4 つのレベルのディレクトリを作成します。Level1 は最上位ディレクトリ、Level4 は最下位ディレクトリ、Level2 と Level3 は中間ディレクトリです。

ユーザー、グループ、その他に異なる権限を持つディレクトリを作成する

-m オプションを使用すると、ユーザー、グループ、その他に対して異なる権限を指定できます。

mkdir -m u=rwx,g=rx,o= new_directory

ここで、new_directory は、ユーザー (u) の読み取り、書き込み、実行権限、グループ (g) の読み取りおよび実行権限、その他 (o) の権限なしで作成されます。

詳細モードでディレクトリを作成し、エラーを無視する

-v オプションを -p オプションと組み合わせて使用​​すると、エラーを無視して詳細な出力を提供できます。

mkdir -pv existing_directory

このコマンドでは、existing_directory がすでに存在する場合、mkdir コマンドはエラーを返さず、代わりに詳細な出力を提供します。

詳細モードなしでディレクトリを作成する

詳細な出力なしでディレクトリをサイレントに作成する場合は、-v オプションなしで mkdir コマンドを使用します。

mkdir quiet_directory

このコマンドは、メッセージを表示せずに quiet_directory という名前のディレクトリを作成します。

mkdir コマンドで括弧展開を使用する

括弧展開は Linux の強力な機能であり、mkdir コマンドと組み合わせて使用​​して一連のディレクトリを作成できます。

mkdir dir{1..5}

このコマンドは、dir1、dir2、dir3、dir4、dir5 という名前の 5 つのディレクトリを作成します。

ディレクトリの作成とスティッキービットの設定

スティッキー ビットは、ディレクトリ内のファイルを保護する権限ビットです。このビットが設定されている場合、ファイルの所有者またはルート ユーザーのみがファイルを削除したり名前を変更したりできます。ディレクトリを作成するときにスティッキー ビットを設定する方法は次のとおりです。

mkdir -m +t new_directory

このコマンドを使用すると、スティッキー ビットが設定された new_directory が作成されます。

ディレクトリの作成と Setuid ビットおよび Setgid ビットの設定

ディレクトリを作成するときに setuid ビットと setgid ビットを設定できます。これは、ディレクトリ内に作成されるファイルとディレクトリの所有権に影響します。-m オプションを使用すると、これらのビットを設定できます。

mkdir -m u+s,g+s new_directory

このコマンドは、setuid ビットと setgid ビットが設定された new_directory を作成します。

8進モードを使用して異なる権限を持つディレクトリを作成する

権限を設定するためのシンボリック モードについてはすでに説明しましたが、mkdir コマンドは 8 進モードもサポートしています。

mkdir -m 700 private_directory

ここで、private_directory は権限が '700' に設定されて作成されます (ユーザーに対しては読み取り、書き込み、実行権限があり、グループとその他に対しては権限がありません)。

ディレクトリを作成し、変更不可にする

ディレクトリを不変にすると、ルートユーザーであっても削除できなくなります。まずディレクトリを作成し、 chattr 指示:

mkdir new_directory
sudo chattr +i new_directory

これにより、new_directory が作成され、不変になります。

ディレクトリの作成とデフォルト ACL の設定

ファイル システムがアクセス制御リスト (ACL) をサポートしている場合は、ディレクトリを作成するときにデフォルトの ACL を設定できます。

mkdir new_directory
setfacl -d -m g::rwx new_directory

これらのコマンドでは、最初に new_directory が作成され、次に setfacl コマンドによって、ディレクトリのデフォルト ACL がグループの rwx に設定されます。

ディレクトリの作成と SELinux コンテキストの設定

SELinux が有効になっているシステムで作業している場合は、ディレクトリを作成するときに SELinux コンテキストを設定できます。

mkdir new_directory
chcon -t httpd_sys_content_t new_directory

ここでは、まず new_directory が作成されます。次に、chcon コマンドによって、new_directory の SELinux コンテキストが httpd_sys_content_t に変更されます。

結論

mkdir コマンドとそのさまざまなオプションをマスターすると、Linux システム上のディレクトリを管理する能力が大幅に向上します。構文を理解し、提供されている例を試してみると、ワークフローを合理化し、コマンドラインの効率を向上させることができます。単一のディレクトリを作成する場合でも、複数のディレクトリを作成する場合でも、特定の権限を設定する場合でも、mkdir は Linux ユーザーにとって不可欠なツールです。

Joshua James

コメントを残す