Reference articles on history, science, culture and more
Encyclopedia

Dirname

Shell command for extracting the directory path portion from a path

dirname is a shell command for extracting the directory path portion of a path, without the last name. The command is specified in the Single UNIX Specification and is primarily used in shell scripts.

The version in GNU Core Utilities was written by David MacKenzie and Jim Meyering. The command is available for Windows as part of the GnuWin32 project and UnxUtils and is in IBM i.

01Usage

The Single UNIX Specification is: dirname path. The required argument, path, is a file path string.

02Examples

The command reports the directory path portion of a path ignoring any trailing slashes.

$ dirname /path/to/filename.ext /path/to $ dirname /path/to/ /path $ dirname filename.ext .

03Performance

Since the command accepts only one operand, its usage within the inner loop of a shell script can be detrimental to performance. Consider:

while read file; do dirname "$file" done < some-input

The above causes a separate process invocation for each line of input. For this reason, shell substitution is typically used instead:

echo "${file%/*}";

Or, if relative pathnames need to be handled as well:

if [ -n "${file##*/*}" ]; then echo "." else echo "${file%/*}"; fi

Note that these handle trailing slashes differently than dirname.

Watch videos about DirnameExplainers and documentaries on YouTube (opens in a new tab)

Sources and credits

This article is adapted from the Wikipedia article Dirname, written by its contributors and licensed under CC BY-SA 4.0. Fathomly has changed the layout, removed citation markers, navigation and maintenance notices, and adjusted punctuation. This adapted version is shared under the same license. For references, see the original article.

Fathomly is not affiliated with or endorsed by the Wikimedia Foundation. Spotted a problem? Tell us.