basename, dirname - Returns the base file name or directory portion of a
basename string [suffix]
Interfaces documented on this reference page conform to industry standards
Refer to the standards(5) reference page for more information about indus-
try standards and associated tags.
A string to be evaluated. This string may be empty.
A file name suffix to be deleted if found. This operand applies to the
basename command only, and is optional.
The basename command reads the string specified on the command line,
deletes the portion from the beginning to the last / (slash), and writes
the base file name to standard output. If suffix is specified on the com-
mand line and suffix appears in string, the string is returned with the
The dirname command reads the string specified on the command line, deletes
from the last / (slash) to the end of the line, and writes the remaining
path name to standard output.
[Tru64 UNIX] The basename and dirname commands are generally used inside
command substitutions within a shell procedure to specify an output file
name that is some variation of a specified input file name. For more
information, see the csh(1), ksh(1), and sh(1b) or sh(1p) reference pages.
The following table demonstrates the processing applied to characters with
particular meanings by the basename and dirname commands.
string Result Result
/ / /
// / /
/a/b b /a
//a//b// b //a
<null> err msg err msg
a a .
/a a /
/a/b b /a
a/b b a
It is not an error if suffix is not a part of string.
1. To display the base file name of a shell variable, enter:
This displays the base file name of the value assigned to the WORKFILE
shell variable. If WORKFILE is set to /u/gabe/program.c, then
program.c is displayed.
2. To construct, in a shell script, a file name that is the same as
another file name, except for its suffix, enter the following command,
using grave accents:
OFILE=`basename $1 .c`.o
This assigns to OFILE the value of the first positional parameter
($1), but with its .c suffix changed to .o. If $1 is
/u/jim/program.c, then OFILE becomes program.o. Because program.o is
only a base file name, it identifies a file in the current directory.
The grave accents perform command substitution.
3. To construct the name of a file located in the same directory as
another, enter the following command, using grave accents:
This sets the AOUTFILE shell variable to the name of an a.out file
that is in the same directory as TEXTFILE. If TEXTFILE is
/u/fran/prog.c, then the value of dirname $TEXTFILE is /u/fran and
AOUTFILE becomes /u/fran/a.out.
The following environment variables affect the execution of basename and
Provides a default value for the internationalization variables that
are unset or null. If LANG is unset or null, the corresponding value
from the default locale is used. If any of the internationalization
variables contain an invalid setting, the utility behaves as if none of
the variables had been defined.
If set to a non-empty string value, overrides the values of all the
other internationalization variables.
Determines the locale for the interpretation of sequences of bytes of
text data as characters (for example, single-byte as opposed to multi-
byte characters in arguments).
Determines the locale for the format and contents of diagnostic mes-
sages written to standard error.
Determines the location of message catalogues for the processing of
Commands: csh(1), ksh(1), Bourne shell sh(1b), POSIX shell sh(1p)