Mkdir

mkdirコマンドについて



`mkdir`コマンドは、Unix系MS-DOS(互換OSを含む)、OS/2、Microsoft Windowsなどのオペレーティングシステムで、ディレクトリ(フォルダ)を作成するためのコマンドです。 "make directory" の略であり、MS-DOS系では `md` というエイリアスが一般的です。このコマンドは、POSIXシステムコールの一つでもあります。

基本的な使い方



最も基本的な使い方は、以下の形式で新しいディレクトリの名前を指定することです。

bash
mkdir name_of_directory


ここで `name_of_directory` は作成したいディレクトリの名前です。このコマンドを実行すると、指定した名前の新しいディレクトリが現在のディレクトリ内に作成されます。Unix系システムでは、複数のディレクトリ名を一度に指定することも可能で、その場合、指定された全てのディレクトリが作成されます。

オプション



`mkdir`コマンドは、様々なオプションを指定することで、より柔軟な操作が可能です。Unix系OSでよく使用される主なオプションは以下の通りです。

  • - `-p`:パス名形式でディレクトリを指定し、途中のディレクトリが存在しない場合は、それらも全て自動的に作成します。既存のディレクトリが含まれていてもエラーにはなりません。このオプションは、複雑なディレクトリ構造を一度に作成する際に非常に便利です。
  • - `-v`:実際に作成されたディレクトリの名前を表示します。通常、`-p`オプションと組み合わせて使用されることが多いです。
  • - `-m`:作成するディレクトリファイルパーミッションを八進数で指定します。例えば、`755` と指定すると、所有者には読み書き実行権限、グループとその他には読み込みと実行権限が付与されます。このオプションは、シェルスクリプト内で一時的なディレクトリを作成し、他のユーザーからのアクセスを制限する際などに使用されます。

オプションの使用例



例えば、`-p` オプションを使った例を見てみましょう。

bash
mkdir -p /tmp/a/b/c


もし `/tmp/a` が既に存在し、`/tmp/a/b` が存在しない場合、このコマンドはまず `/tmp/a/b` を作成し、次に `/tmp/a/b/c` を作成します。

シェルの機能と組み合わせると、さらに複雑なディレクトリ構造を一度に作成することも可能です。

bash
mkdir -p dir_{1,2}/subdir_{A,B}/test


このコマンドを実行すると、次のようなディレクトリ階層が作成されます。


dir_1/subdir_A/test
dir_1/subdir_B/test
dir_2/subdir_A/test
dir_2/subdir_B/test


歴史的な背景



初期のUNIX(4.1BSDやSystem Vの初期バージョン)では、カーネルに`mkdir`システムコールが存在しなかったため、`mkdir`コマンドはrootのsetuid属性が付与されていました。代わりに`mknod`システムコールを使用してディレクトリを生成し、` . `(カレントディレクトリ)や `..`(親ディレクトリ)といったディレクトリへのリンクを個別に作成していました。

システムコール



POSIXにおける`mkdir`関数のプロトタイプは以下の通りです。

c
int mkdir(const char *pathname, mode_t mode);


Microsoft Visual C++のCランタイムライブラリには、Windows APIを利用して実装された、類似のインターフェースを持つ`_mkdir()`関数が定義されています。ただし、Windows OSの機能的な違いから、`mode`に相当する引数は持ちません。この関数はグローバルスコープを持ち、アンダースコアで始まる命名規則が使用されています。これは、処理系のために予約された名前であることを示しています。また、POSIXと同名の`mkdir`マクロも定義されていますが、ISO標準ではないため、非推奨となっています。

関連コマンド




参考資料



もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。