The mkdir command | |
| 開発元 | Variousopen-source andcommercial developers |
|---|---|
| 対応OS | Unix,Unix-like,Plan 9,Inferno,DOS,MSX-DOS,FlexOS,OS/2,Windows,ReactOS,KolibriOS |
| プラットフォーム | Cross-platform |
| 種別 | Command |
| ライセンス | GNUcoreutils:GPLv3+ MS-DOS, Plan 9:MIT FreeDOS:GPLv2+ ReactOS:GPLv2 |
| テンプレートを表示 | |
mkdirは、Unix系やDOS(OS/2・Microsoft Windowsなどを含む)でディレクトリを作成するコマンドである。"make directory"の略。DOSではmd という略称がエイリアスとなっているため、短いそちらが使われることが多い。POSIXのシステムコールの1つでもある。
通常の使用法は単に次のように新ディレクトリ名を指定する。
mkdirname_of_directory
ここでname_of_directory は作成したいディレクトリの名前である。このように入力すると、新ディレクトリがカレントディレクトリの下に作成される。Unix系では複数のディレクトリ名を指定でき、その場合mkdir コマンドが指定された全てのディレクトリを作成しようとする。
Unix系OSでは、mkdir にオプションを指定できる。最も一般的なオプションは次の3つである。
-p: パス名形式でディレクトリ名を指定し、パス名の途中のディレクトリが存在しない場合はそれらも新規作成する。パス名に既存のディレクトリが含まれていてもエラーにはならない。-v: 実際に作成したディレクトリ名を表示する。-pと共に使うことが多い。-m: 作成するディレクトリのファイルパーミッションを八進表記で指定する。-pはmkdirを使って複雑なディレクトリ階層を構成する際によく使われ、必要なディレクトリがあるかないかを気にしなくてもよいため便利である。-mはシェルスクリプト内で使う一時的なディレクトリを他からいじられないようにするときなどによく使う。
-p を使った例を示す。
mkdir-p/tmp/a/b/c
/tmp/a が既存のディレクトリで/tmp/a/b が存在しない場合、mkdir はまず/tmp/a/b を作成してから/tmp/a/b/c を作成する。
シェルの機能を使うと、コマンド1つでさらに複雑なディレクトリ階層を作成できる。
mkdir-ptmpdir/{trunk/syntaxhighlights/{includes,docs},branches,tags}
このコマンド行で次のようなディレクトリ階層ができる。
tmpdir ________|______ | | |branches tags trunk | syntaxhighlights ____|_____ | | includes docs
初期のUNIX(4.1BSDやSystem V の初期のバージョン)ではカーネルにmkdirシステムコールがなかったため、rootのsetuid属性がこのコマンドに付与されていた。代わりにmknodシステムコールでディレクトリを生成し、コマンド内で. や.. といったディレクトリと一つ一つリンクしていた。
POSIXにおける関数プロトタイプ宣言は以下のような形式である[1]。
#include<sys/stat.h>intmkdir(constchar*path,mode_tmode);
Microsoft Visual C++のCランタイムライブラリには、Windows APIを利用して実装された、類似のインターフェイスを持つ関数_mkdir()が定義されている(OSの機能的な差異から、modeに相当する引数は持たない)[2]。グローバルスコープを持ち、アンダースコアで始まる命名規則が使われており、これは処理系のために予約された名前を使用していることを示している。POSIXと同名のシンボルとしてmkdirマクロも定義されているが、ISO標準ではないため、非推奨となっている[3]。
mkdir(1) – JM ProjectLinux User Commandsマニュアルmkdir(1) – FreeBSD General CommandsManual Pages (en)