---
name: "basename"
section: "1"
platform: "macos"
package: "shell_cmds"
version: "329"
release: "macOS 26.5"
platforms: ["linux", "freebsd", "openbsd", "macos"]
url: "https://new.carta.tech/basename"
---

# basename(1)

return filename or directory portion of pathname

## NAME

**basename**, **dirname** – return filename or directory portion of pathname

## SYNOPSIS

**basename** *string* \[*suffix*\]

**basename** \[**-a**\] \[**-s** *suffix*\] *string* \[*...*\]

**dirname** *string* \[*...*\]

## DESCRIPTION

The **basename** utility deletes any prefix ending with the last slash ‘/’ character present in *string* (after first stripping trailing slashes), and a *suffix*, if given. The *suffix* is not stripped if it is identical to the remaining characters in *string*. The resulting filename is written to the standard output. A non-existent suffix is ignored. If **-a** is specified, then every argument is treated as a *string* as if **basename** were invoked with just one argument. If **-s** is specified, then the *suffix* is taken as its argument, and all other arguments are treated as a *string*.

The **dirname** utility deletes the filename portion, beginning with the last slash ‘/’ character to the end of *string* (after first stripping trailing slashes), and writes the result to the standard output.

## EXIT STATUS

The **basename** and **dirname** utilities exit 0 on success, and \>0 if an error occurs.

## EXAMPLES

The following line sets the shell variable FOO to */usr/bin*.

```
FOO=`dirname /usr/bin/trail`
```

## SEE ALSO

[csh(1)](/csh/1.md), [sh(1)](/sh/1.md), [basename(3)](/basename/3.md), [dirname(3)](/dirname/3.md)

## STANDARDS

The **basename** and **dirname** utilities are expected to be IEEE Std 1003.2 (“POSIX.2”) compatible.

## HISTORY

The **basename** and **dirname** utilities first appeared in 4.4BSD.
