# FILE PATHS ## Get the directory name of a file path Alternative to the `dirname` command. **Example Function:** ```sh dirname() { # Usage: dirname "path" dir=${1:-.} dir=${dir%%${dir##*[!/]}} [[ "${dir##*/*}" ]] && dir=. dir=${dir%/*} printf '%s\n' "${dir:-/}" } ``` **Example Usage:** ```shell $ dirname ~/Pictures/Wallpapers/1.jpg /home/black/Pictures/Wallpapers $ dirname ~/Pictures/Downloads/ /home/black/Pictures ``` ## Get the base-name of a file path Alternative to the `basename` command. **Example Function:** ```sh basename() { # Usage: basename "path" : "${1%/}" printf '%s\n' "${_##*/}" } ``` **Example Usage:** ```shell $ basename ~/Pictures/Wallpapers/1.jpg 1.jpg $ basename ~/Pictures/Downloads/ Downloads ```