Basename: Difference between revisions
Add warning. |
Typo. |
||
Line 3: | Line 3: | ||
'''<tt>basename</tt>''' is a standard [[UNIX]] [[computer program]]. When <tt>basename</tt> is given a [[pathname]], it will delete any prefix up to the last slash (<code>'/'</code>) character and return the result. <tt>basename</tt> is described in the [[Single UNIX Specification]] and is primarily used in [[shell script]]s. |
'''<tt>basename</tt>''' is a standard [[UNIX]] [[computer program]]. When <tt>basename</tt> is given a [[pathname]], it will delete any prefix up to the last slash (<code>'/'</code>) character and return the result. <tt>basename</tt> is described in the [[Single UNIX Specification]] and is primarily used in [[shell script]]s. |
||
==Usage== |
== Usage == |
||
The [[Single UNIX Specification]] specification for <tt>basename</tt> is. |
The [[Single UNIX Specification]] specification for <tt>basename</tt> is. |
||
basename string [suffix] |
basename string [suffix] |
||
Line 12: | Line 12: | ||
::If specified, <tt>basename</tt> will also delete the suffix. |
::If specified, <tt>basename</tt> will also delete the suffix. |
||
== |
== Examples == |
||
basename will retrieve the last name from a pathname ignoring any trailing slashes |
basename will retrieve the last name from a pathname ignoring any trailing slashes |
||
Line 34: | Line 34: | ||
base.wiki |
base.wiki |
||
==Performance== |
== Performance == |
||
Since <tt>basename</tt> accepts only one operand, its usage within the [[inner loop]] of shell scripts can be detrimental to performance. Consider |
Since <tt>basename</tt> accepts only one operand, its usage within the [[inner loop]] of shell scripts can be detrimental to performance. Consider |
Revision as of 14:41, 6 November 2014
This article includes a list of references, related reading, or external links, but its sources remain unclear because it lacks inline citations. (March 2013) |
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
- The Single UNIX Specification, Version 4 from The Open Group : return non-directory portion of a pathname – Shell and Utilities Reference,
- The Single UNIX Specification, Version 4 from The Open Group : strip directory and suffix from filenames – Shell and Utilities Reference,