std.basename
Available inall subroutines.
Breaks a pathname into the filename component and returns it. A pathname is a
forward slash-separated list of directory names followed by either a directory
name or a filename. Trailing /
characters are not counted as part of the
pathname. Both relative and absolute pathnames are allowed. Relative pathnames
may use a single dot (.) or double dots (..) to represent the current directory
or the parent directory respectively.
In the usual case, std.basename
returns the component following the final
/
: for example, std.basename("/foo/bar/foobar")
is "foobar"
.
If the pathname does not contain a forward slash, then std.basename
returns a
copy of the pathname: for example, std.basename("foo")
is "foo"
.
If the pathname only contains one or more forward slashes, then std.basename
returns the string "/"
: for example, std.basename("/")
is "/"
.
If the pathname is an empty string ""
, then std.basename
returns the string
"."
. The same behavior applies if std.basename
is invoked with a not-set
header for the pathname: for example, std.basename(req.http.Not-Set)
is
"."
.
Concatenating the string returned by
std.dirname
, a "/"
, and the string
returned by std.basename
yields a complete pathname.
For example, std.dirname("fastly.com/api") "/" std.basename("fastly.com/api")
is "fastly.com/api"
.
See std.dirname
for breaking a pathname
into the directory component.
This function conforms to POSIX.1-2001.
Examples
std.basename("") # returns "."std.basename("/usr/lib") # returns "lib"std.basename("/usr/") # returns "usr"std.basename("usr") # returns "usr"std.basename("/") # returns "/"std.basename(".") # returns "."std.basename("..") # returns ".."
User contributed notes
BETADo you see an error in this page? Do have an interesting use case, example or edge case people should know about? Share your knowledge and help people who are reading this page! (Comments are moderated; for support, please contact support@fastly.com)