Jump to content

Mkdir

From Niidae Wiki

Template:Short description Template:Lowercase Template:Infobox software (make directory) command in the Unix, DOS, DR FlexOS,<ref>Template:Cite web</ref> IBM OS/2,<ref>Template:Cite web</ref> Microsoft Windows, and ReactOS<ref>Template:Cite web</ref> operating systems is used to make a new directory. It is also available in the EFI shell<ref name="EFI-Shells-and-Scripting">Template:Cite web</ref> and in the PHP scripting language. In DOS, OS/2, Windows and ReactOS, the command is often abbreviated to md.

The command is analogous to the Stratus OpenVOS create_dir command.<ref>Template:Cite web</ref> MetaComCo TRIPOS and AmigaDOS provide a similar MakeDir command to create new directories.<ref>Template:Cite web</ref><ref>Template:Cite book</ref> The numerical computing environments MATLAB and GNU Octave include an mkdir function with similar functionality.<ref>Template:Cite web</ref><ref>Template:Cite web</ref>

History

[edit]

In early versions of Unix (4.1BSD and early versions of System V), this command had to be setuid root as the kernel did not have an mkdir syscall. Instead, it made the directory with mknod and linked in the . and .. directory entries manually. The command is available in MS-DOS versions 2 and later.<ref name="RUNNINGMSDOS">Template:Cite book</ref> Digital Research DR DOS 6.0<ref name="drdos6userguide">Template:Cite web</ref> and Datalight ROM-DOS<ref>Template:Cite web</ref> also include an implementation of the Template:Code and Template:Code commands.

The version of mkdir bundled in GNU coreutils was written by David MacKenzie.<ref>Template:Cite web</ref> It is also available in the open source MS-DOS emulator DOSBox and in KolibriOS.<ref>Template:Cite web</ref>

Usage

[edit]
File:ReactOS-0.4.13 mkdir command 667x434.png
The ReactOS mkdir command

Normal usage is as straightforward as follows:

<syntaxhighlight lang="bash"> mkdir name_of_directory </syntaxhighlight>

where name_of_directory is the name of the directory one wants to create. When typed as above (i.e. normal usage), the new directory would be created within the current directory. On Unix and Windows (with Command extensions enabled,<ref>Template:Cite web</ref> the default<ref>Template:Cite web</ref>), multiple directories can be specified, and mkdir will try to create all of them.

Options

[edit]

On Unix-like operating systems, mkdir takes options. The options are:

  • -p (--parents): parents or path, will also create all directories leading up to the given directory that do not exist already. For example, mkdir -p a/b will create directory a if it doesn't exist, then will create directory b inside directory a. If the given directory already exists, ignore the error.
  • -m (--mode): mode, specify the octal permissions of directories created by mkdir .

-p is most often used when using mkdir to build up complex directory hierarchies, in case a necessary directory is missing or already there. -m is commonly used to lock down temporary directories used by shell scripts.

Examples

[edit]

An example of -p in action is:

<syntaxhighlight lang="bash"> mkdir -p /tmp/a/b/c </syntaxhighlight>

If /tmp/a exists but /tmp/a/b does not, mkdir will create /tmp/a/b before creating /tmp/a/b/c.

And an even more powerful command, creating a full tree at once (this however is a Shell extension, nothing mkdir does itself):

<syntaxhighlight lang="bash"> mkdir -p tmpdir/{trunk/sources/{includes,docs},branches,tags} </syntaxhighlight>

If one is using variables with mkdir in a bash script, POSIX `special' built-in command 'eval' would serve its purpose.

<syntaxhighlight lang="bash"> DOMAIN_NAME=includes,docs eval "mkdir -p tmpdir/{trunk/sources/{${DOMAIN_NAME}},branches,tags}" </syntaxhighlight>

This will create: <syntaxhighlight lang="text">

         tmpdir
   ________|______
  |        |      |

branches tags trunk

                  |
                sources
              ____|_____
             |          |
         includes     docs

</syntaxhighlight>

See also

[edit]

References

[edit]

Template:Reflist

Further reading

[edit]
[edit]

Template:Wikibooks Template:Wikibooks

Template:Unix commands Template:Plan 9 commands Template:Core Utilities commands Template:Windows commands