basename

From Infogalactic: the planetary knowledge core
Jump to: navigation, search

basename is a standard UNIX computer program. When basename is given a pathname, it will delete any prefix up to the last slash ('/') character and return the result. basename is described in the Single UNIX Specification and is primarily used in shell scripts.

Usage

The Single UNIX Specification specification for basename is.

basename string [suffix]
string
A pathname
suffix
If specified, basename will also delete the suffix.

Examples

basename will retrieve the last name from a pathname ignoring any trailing slashes

$ basename /home/jsmith/base.wiki 
base.wiki
$ basename /home/jsmith/
jsmith
$ basename /
/

basename can also be used to remove the end of the base name, but not the complete base name

$ basename /home/jsmith/base.wiki .wiki
base
$ basename /home/jsmith/base.wiki ki
base.wi
$ basename /home/jsmith/base.wiki base.wiki
base.wiki

Performance

Since basename accepts only one operand, its usage within the inner loop of shell scripts can be detrimental to performance. Consider

 while read file; do
   basename "$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##*/}";

Note that this handles trailing slashes differently than basename.

See also

External links