mkdir -p is a command second only to touch in succinct utility.
touch creates a file if it does not exist, or updates its timestamp if it does. It’s handy if you want to write to a file without checking for its existence, as otherwise you’d need to determine whether or not append is the correct mode. It’s also handy for setting flags for yourself on the filesystem.
mkdir -p creates a path if it does not exist, or does nothing if the path already exists. mkdir -p /foo/bar/baz will create /foo, /foo/bar, and /foo/bar/baz for you. Conversely, mkdir -p /usr/local/bin will not complain because those directories already exist.
Why would you need this? A couple reasons that came up for me tonight:
- You cannot redirect output to a file if the file is in a directory that does not yet exist
- You cannot create a symbolic link in a directory that does not yet exist