Jump to content

dirname

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by John of Reading (talk | contribs) at 08:56, 24 June 2016 (→‎Usage: Copyedit, fixing duplicated words: specification using AWB). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

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 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