basename: Strip directory and suffix from a file name
basename removes any leading directory components from
basename name [suffix] basename option… name…
suffix is specified and is identical to the end of
it is removed from
name as well. Note that since trailing slashes
are removed prior to suffix matching,
suffix will do nothing if it
basename prints the result on standard
dirname are designed such
that if ‘
ls "$name"’ succeeds, then the command sequence ‘
cd "$(dirname "$name")"; ls "$(basename "$name")"’ will, too. This works
for everything except file names containing a trailing newline.
POSIX allows the implementation to define the results if
name is empty or ‘
//’. In the former case, GNU
basename returns the empty string. In the latter case, the
result is ‘
//’ on platforms where
// is distinct from
/, and ‘
/’ on platforms where there is no difference.
The program accepts the following options. Also see Common options. Options must precede operands.
Support more than one argument. Treat every argument as a
With this, an optional
suffix must be specified using the
Remove a trailing
This option implies the
Output a zero byte (ASCII NUL) at the end of each line, rather than a newline. This option enables other programs to parse the output even when that output would contain data with embedded newlines.
An exit status of zero indicates success, and a nonzero value indicates failure.
# Output "sort". basename /usr/bin/sort # Output "stdio". basename include/stdio.h .h # Output "stdio". basename -s .h include/stdio.h # Output "stdio" followed by "stdlib" basename -a -s .h include/stdio.h include/stdlib.h