dirname
dirname is a standard UNIX computer program. 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.
Usage
The Single UNIX Specification specification for dirname is.
dirname string
- string
- A pathname
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
$ 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.
See also
External links
- : return the directory portion of a pathname – Commands & Utilities Reference, The Single UNIX® Specification, Issue 7 from The Open Group
|