dirname
dirname is a standard computer program on Unix and Unix-like operating systems.  When dirname is given a pathname, it will delete any suffix beginning with the last slash ('/') character and return the result. dirname is described in the Single UNIX Specification and is primarily used in shell scripts.
|  Example of  dirnamecommand | |
| Developer(s) | Various open-source and commercial developers | 
|---|---|
| Operating system | Unix, Unix-like, IBM i | 
| Platform | Cross-platform | 
| Type | Command | 
| License | coreutils: GPLv3+ | 
History
    
The version of dirname bundled in GNU coreutils was written by David MacKenzie and Jim Meyering.[1] The command is available as a separate package for Microsoft Windows as part of the UnxUtils collection of native Win32 ports of common GNU Unix-like utilities.[2] The dirname command has also been ported to the IBM i operating system.[3]
Examples
    
dirname will retrieve the directory-path name from a pathname ignoring any trailing slashes
$ dirname /home/martin/docs/base.wiki
/home/martin/docs
$ dirname /home/martin/docs/.
/home/martin/docs
$ dirname /home/martin/docs/
/home/martin
$ dirname base.wiki
.
$ dirname /
/
Performance
    
Since dirname accepts only one operand, its usage within the inner loop of shell scripts can be detrimental to performance. Consider
 while read file; do
     dirname "$file"
 done < some-input
The above excerpt would cause 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.
Misconceptions
    
We might think that paths that end in a trailing slash are a directory. But actually, the trailing slash represents all files within the directory.
/home/martin/docs/.
The correct way to represent a path as a directory is with a trailing slash and a period.
References
    
- "Dirname(1) - Linux man page".
- "Native Win32 ports of some GNU utilities". unxutils.sourceforge.net.
- IBM. "IBM System i Version 7.2 Programming Qshell" (PDF). Archived (PDF) from the original on 2020-09-18. Retrieved 2020-09-05.
External links
    
|  | The Wikibook Guide to Unix has a page on the topic of: Commands | 
- : return the directory portion of a pathname – Commands & Utilities Reference, The Single UNIX Specification, Issue 7 from The Open Group
- – Linux User Commands Manual
- – OpenBSD General Commands Manual

