Basename
basename returns the final name in a file or directory path.
Overview
Use basename when you only need the last part of a path:
path | "maps/caves/entrance.gbln" name | path.basename() :say(name) /// entrance.gbln
path | "maps/caves/entrance.gbln" name | path.basename() :say(name) /// entrance.gbln
For a directory path, basename returns the final directory name:
basename("maps/caves") /// caves
basename("maps/caves") /// caves
Method Style
Call basename as a method on a path string:
filename | "reports/june/orders.json".basename() :say(filename) /// orders.json
filename | "reports/june/orders.json".basename() :say(filename) /// orders.json
The equivalent free-call form is:
filename | basename("reports/june/orders.json")
filename | basename("reports/june/orders.json")
Both forms behave the same way.
File Extensions
basename keeps the file extension:
basename("portraits/captain.png") /// captain.png
basename("portraits/captain.png") /// captain.png
Use Stem when you want the final filename without its extension:
basename("portraits/captain.png") /// captain.png stem("portraits/captain.png") /// captain
basename("portraits/captain.png") /// captain.png stem("portraits/captain.png") /// captain
Use Ext when you only want the extension.
Paths Do Not Need to Exist
basename examines the path itself. It does not check the filesystem:
future_file | "exports/next-year/summary.txt" future_file.basename() /// summary.txt
future_file | "exports/next-year/summary.txt" future_file.basename() /// summary.txt
The result is available even when the file or directory has not been created.
Empty Results
basename returns an empty string when the path has no final name:
basename("") /// "" basename("/") /// ""
basename("") /// "" basename("/") /// ""
Signature
path.basename() basename(path)
path.basename() basename(path)
| Argument | Type | Description |
|---|---|---|
path |
string | The file or directory path to examine. |
basename returns the final name as a string.
Errors
basename requires one path:
basename() /// error: R0301 wrong-arity
basename() /// error: R0301 wrong-arity
The path must be a string:
basename(42) /// error: T0205 type-mismatch
basename(42) /// error: T0205 type-mismatch