dirname

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

Template:Short description

Script error: No such module "Infobox".Template:Template other Script error: No such module "Check for unknown parameters".Script error: No such module "Check for conflicting parameters". 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

The Single UNIX Specification is: dirname path.

Examples

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

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

References

<templatestyles src="Reflist/styles.css" />

  1. Script error: No such module "citation/CS1".
  2. Script error: No such module "citation/CS1".
  3. Script error: No such module "citation/CS1".

Script error: No such module "Check for unknown parameters".

External links

Template:Sister project

Script error: No such module "Navbox". Template:Core Utilities commands