dirname

From Wikipedia, the free encyclopedia
Jump to: navigation, search

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[edit]

The Single UNIX Specification specification for dirname is.

dirname string
string
A pathname

Examples[edit]

dirname will retrieve the directory-path name from a pathname ignoring any trailing slashes

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


Performance[edit]

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[edit]

External links[edit]