Basename: Difference between revisions
m robot Adding: ro:Basename |
m →Usage: Copyedit, fixing duplicated words: specification |
||
(43 intermediate revisions by 23 users not shown) | |||
Line 1: | Line 1: | ||
{{Short description|Unix string manipulation utility}} |
|||
⚫ | '''< |
||
{{lowercase}} |
|||
{{Infobox software |
|||
| name = basename |
|||
| logo = |
|||
| screenshot = |
|||
| screenshot size = |
|||
| caption = |
|||
| developer = |
|||
| released = {{Start date and age|1979|1}} |
|||
| latest release version = |
|||
| latest release date = |
|||
| programming language = [[C (programming language)|C]] |
|||
| operating system = [[Unix]], [[Unix-like]], [[Plan 9 from Bell Labs|Plan 9]], [[Inferno (operating system)|Inferno]] |
|||
| platform = [[Cross-platform]] |
|||
| genre = [[Command (computing)|Command]] |
|||
| license = [[coreutils]]: [[GPLv3+]]<br />Plan 9: [[MIT License]] |
|||
| website = |
|||
}} |
|||
⚫ | '''<kbd>basename</kbd>''' is a standard [[computer program]] on [[Unix]] and [[Unix-like]] [[operating system]]s. When <kbd>basename</kbd> is given a [[pathname]], it will delete any prefix up to the last slash (<code>'/'</code>) character and return the result. <kbd>basename</kbd> is described in the [[Single UNIX Specification]] and is primarily used in [[shell script]]s. |
||
==History== |
|||
{{code|basename}} was introduced in [[X/Open]] Portability Guidelines issue 2 of 1987. It was inherited into the first version of POSIX and the [[Single Unix Specification]].<ref>{{man|cu|basename|SUS}}</ref> It first appeared in 4.4BSD.<ref>{{man|1|basename|FreeBSD}}</ref> |
|||
The version of <code>basename</code> bundled in [[GNU]] [[coreutils]] was written by David MacKenzie.<ref>{{man|1|basename|Linux}}</ref> |
|||
The command is available as a separate package for [[Microsoft Windows]] as part of the [[GnuWin32]] project<ref>[http://gnuwin32.sourceforge.net/packages/coreutils.htm CoreUtils for Windows]</ref> and the [[UnxUtils]] collection of [[Native (computing)|native]] [[Windows API|Win32]] [[porting|ports]] of common [[GNU]] Unix-like utilities.<ref>[http://unxutils.sourceforge.net/ Native Win32 ports of some GNU utilities]</ref> |
|||
==Usage== |
==Usage== |
||
The [[Single UNIX Specification]] |
The [[Single UNIX Specification]] for <kbd>basename</kbd> is. |
||
basename string [suffix] |
basename string [suffix] |
||
:< |
:<kbd>string</kbd> |
||
::A [[pathname]] |
::A [[pathname]] |
||
:< |
:<kbd>suffix</kbd> |
||
::If specified, < |
::If specified, <kbd>basename</kbd> will also delete the suffix. |
||
== |
==Examples== |
||
basename will retrieve the last name from a pathname ignoring any trailing slashes |
|||
⚫ | |||
<syntaxhighlight lang="console"> |
|||
⚫ | |||
base.wiki |
base.wiki |
||
$ basename /home/jsmith/ |
|||
jsmith |
|||
⚫ | |||
/ |
|||
</syntaxhighlight> |
|||
basename can also be used to remove the end of the base name, but not the complete base name |
|||
<syntaxhighlight lang="console"> |
|||
$ basename /home/jsmith/base.wiki .wiki |
|||
base |
base |
||
$ basename /home/jsmith/base.wiki ki |
|||
==Performance== |
|||
base.wi |
|||
$ basename /home/jsmith/base.wiki base.wiki |
|||
Since <tt>basename</tt> accepts only one operand, its usage within the [[inner loop]] of shell scripts can be detrimental to performance. Consider |
|||
base.wiki |
|||
</syntaxhighlight> |
|||
⚫ | |||
while read file; do |
|||
⚫ | |||
⚫ | |||
⚫ | |||
done < ''some-input'' |
|||
* [[Path (computing)]] |
|||
==References== |
|||
The above excerpt would cause a separate process invocation for each line of input. For this reason, shell substitution is typically used instead <!-- invoking an extra program like sed is avoided this way --> |
|||
{{Reflist}} |
|||
⚫ | |||
echo "${file##*/}"; |
|||
{{Wikibooks|Guide to Unix|Commands}} |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
*{{man|cu|basename|SUS|return non-directory portion of a pathname}} |
*{{man|cu|basename|SUS|return non-directory portion of a pathname}} |
||
*{{man|1|basename| |
*{{man|1|basename|Plan 9}} |
||
*{{man|1|basename|Inferno}} |
|||
*{{man|1|basename|die.net}} |
|||
*{{man|1|basename|OpenBSD}} |
|||
{{ |
{{Unix commands}} |
||
{{Plan 9 commands}} |
|||
{{Core Utilities commands}} |
|||
[[Category:Standard Unix programs|Basename]] |
[[Category:Standard Unix programs|Basename]] |
||
[[Category:Unix SUS2008 utilities]] |
[[Category:Unix SUS2008 utilities]] |
||
[[Category:Plan 9 commands]] |
|||
[[Category:Inferno (operating system) commands]] |
|||
[[cs:Basename]] |
|||
[[Category:IBM i Qshell commands]] |
|||
[[de:Basename]] |
|||
[[el:Basename]] |
|||
[[es:Basename]] |
|||
[[hu:Basename]] |
|||
[[ja:Basename]] |
|||
[[pl:Basename]] |
|||
[[ro:Basename]] |
|||
[[ru:Basename]] |
|||
[[sv:Basename]] |
|||
[[uk:Basename]] |
Latest revision as of 16:29, 3 September 2024
Initial release | January 1979 |
---|---|
Written in | C |
Operating system | Unix, Unix-like, Plan 9, Inferno |
Platform | Cross-platform |
Type | Command |
License | coreutils: GPLv3+ Plan 9: MIT License |
basename is a standard computer program on Unix and Unix-like operating systems. 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.
History
[edit]basename
was introduced in X/Open Portability Guidelines issue 2 of 1987. It was inherited into the first version of POSIX and the Single Unix Specification.[1] It first appeared in 4.4BSD.[2]
The version of basename
bundled in GNU coreutils was written by David MacKenzie.[3]
The command is available as a separate package for Microsoft Windows as part of the GnuWin32 project[4] and the UnxUtils collection of native Win32 ports of common GNU Unix-like utilities.[5]
Usage
[edit]The Single UNIX Specification for basename is.
basename string [suffix]
- string
- A pathname
- suffix
- If specified, basename will also delete the suffix.
Examples
[edit]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
See also
[edit]References
[edit]- ^ The Single UNIX Specification, Version 4 from The Open Group – Shell and Utilities Reference,
- ^ FreeBSD General Commands Manual –
- ^ Linux User Manual – User Commands –
- ^ CoreUtils for Windows
- ^ Native Win32 ports of some GNU utilities
External links
[edit]- The Single UNIX Specification, Version 4 from The Open Group : return non-directory portion of a pathname – Shell and Utilities Reference,
- Plan 9 Programmer's Manual, Volume 1 –
- Inferno General commands Manual –
- Linux User Commands Manual –
- OpenBSD General Commands Manual –