Edge Rewrite
// HTMLRewriter · presentation

This page was redesigned at the edge.

Cloudflare fetched the original article and streamed it through HTMLRewriter to apply an entirely new visual system without rebuilding the source page.

// request.cf · coarse context

A page that knows where it met you.

Only coarse request metadata is shown. This demo does not display or persist visitor IP addresses.

Country
US
Cloudflare location
CMH
Connection
HTTP/2
Language
Not provided

Ray ID: a21a74f28facd858

Jump to content

dirname

From Wikipedia, the free encyclopedia
dirname
DevelopersVarious open-source and commercial developers
Written inC
Operating systemUnix, Unix-like, IBM i
PlatformCross-platform
TypeCommand
Licensecoreutils: GPLv3+

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 as part of the GnuWin32 project[2] and UnxUtils[3] and is in IBM i.[4]

Usage

[edit]

The Single UNIX Specification is: dirname path. The required argument, path, is a file path string.

Examples

[edit]

The command reports the directory path portion of a path ignoring any trailing slashes.

$ dirname /path/to/filename.ext
/path/to

$ dirname /path/to/
/path

$ dirname filename.ext
.

Performance

[edit]

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

[edit]

References

[edit]
  1. dirname(1)  Linux User Manual – User Commands from Manned.org
  2. "CoreUtils for Windows". Archived from the original on 2025-07-30. Retrieved 2026-02-03.
  3. "Native Win32 ports of some GNU utilities". Archived from the original on 2006-02-09. Retrieved 2022-02-23.
  4. IBM. "IBM System i Version 7.2 Programming Qshell" (PDF). IBM. Archived (PDF) from the original on 2020-09-18. Retrieved 2020-09-05.
[edit]