Hubbry Logo
search button
Sign in
Dirname
Dirname
Comunity Hub
History
arrow-down
starMore
arrow-down
bob

Bob

Have a question related to this hub?

bob

Alice

Got something to say related to this hub?
Share it here.

#general is a chat channel to discuss anything related to the hub.
Hubbry Logo
search button
Sign in
Dirname
Community hub for the Wikipedia article
logoWikipedian hub
Welcome to the community hub built on top of the Dirname Wikipedia article. Here, you can discuss, collect, and organize anything related to Dirname. The purpose of the hub is to connect people, foster de...
Add your contribution
Dirname
dirname
Developer(s)Various open-source and commercial developers
Operating systemUnix, Unix-like, IBM i
PlatformCross-platform
TypeCommand
Licensecoreutils: GPLv3+

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.[1] The command is available for Windows via UnxUtils,[2] and is in IBM i.[3]

Usage

[edit]

The Single UNIX Specification is: dirname path.

Examples

[edit]

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

$ dirname /home/martin/docs/base.wiki
/home/martin/docs

$ dirname /home/martin/docs/
/home/martin

$ dirname base.wiki
.

Performance

[edit]

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.

See also

[edit]

References

[edit]
  1. ^ "Dirname(1) - Linux man page".
  2. ^ "Native Win32 ports of some GNU utilities". unxutils.sourceforge.net.
  3. ^ IBM. "IBM System i Version 7.2 Programming Qshell" (PDF). IBM. Archived (PDF) from the original on 2020-09-18. Retrieved 2020-09-05.
[edit]