basename.3p (4096B)
- '\" et
- .TH BASENAME "3P" 2017 "IEEE/The Open Group" "POSIX Programmer's Manual"
- .\"
- .SH PROLOG
- This manual page is part of the POSIX Programmer's Manual.
- The Linux implementation of this interface may differ (consult
- the corresponding Linux manual page for details of Linux behavior),
- or the interface may not be implemented on Linux.
- .\"
- .SH NAME
- basename
- \(em return the last component of a pathname
- .SH SYNOPSIS
- .LP
- .nf
- #include <libgen.h>
- .P
- char *basename(char *\fIpath\fP);
- .fi
- .SH DESCRIPTION
- The
- \fIbasename\fR()
- function shall take the pathname pointed to by
- .IR path
- and return a pointer to the final component of the pathname, deleting
- any trailing
- .BR '/'
- characters.
- .P
- If the string pointed to by
- .IR path
- consists entirely of the
- .BR '/'
- character,
- \fIbasename\fR()
- shall return a pointer to the string
- .BR \(dq/\(dq .
- If the string pointed to by
- .IR path
- is exactly
- .BR \(dq//\(dq ,
- it is implementation-defined whether
- .BR '/'
- or
- .BR \(dq//\(dq
- is returned.
- .P
- If
- .IR path
- is a null pointer or points to an empty string,
- \fIbasename\fR()
- shall return a pointer to the string
- .BR \(dq.\(dq .
- .P
- The
- \fIbasename\fR()
- function may modify the string pointed to by
- .IR path ,
- and may return a pointer to internal storage. The returned pointer
- might be invalidated or the storage might be overwritten by a
- subsequent call to
- \fIbasename\fR().
- The returned pointer might also be invalidated if the calling
- thread is terminated.
- .P
- The
- \fIbasename\fR()
- function need not be thread-safe.
- .SH "RETURN VALUE"
- The
- \fIbasename\fR()
- function shall return a pointer to the final component of
- .IR path .
- .SH ERRORS
- No errors are defined.
- .LP
- .IR "The following sections are informative."
- .SH EXAMPLES
- .SS "Using basename(\|)"
- .P
- The following program fragment returns a pointer to the value
- .IR lib ,
- which is the base name of
- .BR /usr/lib .
- .sp
- .RS 4
- .nf
- #include <libgen.h>
- \&...
- char name[] = "/usr/lib";
- char *base;
- .P
- base = basename(name);
- \&...
- .fi
- .P
- .RE
- .SS "Sample Input and Output Strings for the basename(\|) and dirname(\|) Functions and the basename and dirname Utilities"
- .S -1
- .TS
- center box tab(!);
- cB | cB | cB | cB | cB | cB
- cB | cB | cB | cB | cB | cB
- cB | cB | cB | cB | cB | cB
- cB | cB | cB | cB | cB | cB
- lf51 | lf51 | lf51 | lf51 | lf51 | lf5.
- basename(\|)!!!basename!Output!Output
- and dirname(\|)!String!String!and dirname!Written by!Written by
- Functions path!Returned by!Returned by!Utilities!basename!dirname
- Argument!basename(\|)!dirname(\|)!string Operand!Utility!Utility
- _
- "usr"!"usr"!"."!usr!usr!.
- _
- "usr/"!"usr"!"."!usr/!usr!.
- _
- ""!"."!"."!""!. \fRor empty string\fR!.
- _
- "/"!"/"!"/"!/!/!/
- _
- "//"!"/" \fRor\fR "//"!"/" \fRor\fR "//"!//!/ \fRor\fR //!/ \fRor\fR //
- _
- "///"!"/"!"/"!///!/!/
- _
- "/usr/"!"usr"!"/"!/usr/!usr!/
- _
- "/usr/lib"!"lib"!"/usr"!/usr/lib!lib!/usr
- _
- "//usr//lib//"!"lib"!"//usr"!//usr//lib//!lib!//usr
- _
- "/home//dwc//!"test"!"/home//dwc"!/home//dwc//!test!/home//dwc
- test"!!!test
- .TE
- .S +1
- .SH "APPLICATION USAGE"
- None.
- .SH RATIONALE
- None.
- .SH "FUTURE DIRECTIONS"
- None.
- .SH "SEE ALSO"
- .IR "\fIdirname\fR\^(\|)"
- .P
- The Base Definitions volume of POSIX.1\(hy2017,
- .IR "\fB<libgen.h>\fP"
- .P
- The Shell and Utilities volume of POSIX.1\(hy2017,
- .IR "\fIbasename\fR\^"
- .\"
- .SH COPYRIGHT
- Portions of this text are reprinted and reproduced in electronic form
- from IEEE Std 1003.1-2017, Standard for Information Technology
- -- Portable Operating System Interface (POSIX), The Open Group Base
- Specifications Issue 7, 2018 Edition,
- Copyright (C) 2018 by the Institute of
- Electrical and Electronics Engineers, Inc and The Open Group.
- In the event of any discrepancy between this version and the original IEEE and
- The Open Group Standard, the original IEEE and The Open Group Standard
- is the referee document. The original Standard can be obtained online at
- http://www.opengroup.org/unix/online.html .
- .PP
- Any typographical or formatting errors that appear
- in this page are most likely
- to have been introduced during the conversion of the source files to
- man page format. To report such errors, see
- https://www.kernel.org/doc/man-pages/reporting_bugs.html .