mkdir

From Infogalactic: the planetary knowledge core
(Redirected from MKDIR)
Jump to: navigation, search

The mkdir (make directory) command in the Unix, DOS, OS/2, and Microsoft Windows operating systems and in the PHP scripting language is used to make a new directory. In DOS, OS/2 and Windows, the command is often abbreviated to md.

Usage

Normal usage is as straightforward as follows:

mkdir name_of_directory

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,[1] the default [2]), multiple directories can be specified, and mkdir will try to create all of them.

Options

On Unix-like operating systems, mkdir takes options. Three of the most common options are:

  • -p: will also create all directories leading up to the given directory that do not exist already. If the given directory already exists, ignore the error.
  • -v: display each directory that mkdir creates. Most often used with -p.
  • -m: 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

An example of -p in action is:

mkdir -p /tmp/a/b/c

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):

mkdir -p tmpdir/{trunk/sources/{includes,docs},branches,tags}

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

DOMAIN_NAME=includes,docs
eval "mkdir -p tmpdir/{trunk/sources/{${DOMAIN_NAME}},branches,tags}"

This will create:

          tmpdir
    ________|______
   |        |      |
branches   tags  trunk
                   |
                 sources
               ____|_____
              |          |
          includes     docs

History

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.

See also

References

  1. Lua error in package.lua at line 80: module 'strict' not found.
  2. Lua error in package.lua at line 80: module 'strict' not found.

External links