Bash basename and dirname scripts

For it's always a pain to remember bash wizardry by heart, here's a piece of usefull information collected on the web.

From: "Grigoriy Strokin" grg@philol.msu.ru Newsgroups: comp.unix.shell Subject: fast basename and dirname functions for BASH/SH Date: Sat, 27 Dec 1997 21:18:40 +0300

Please send your comments to grg@philol.msu.ru

function basename() { local name="${1##*/}" echo "${name%$2}" }

function dirname() { local dir="${1%${1##*/}}" [ "${dir:=./}" != "/" ] && dir="${dir%?}" echo "$dir" }

Two additional functions:

1) namename prints the basename without extension

2) ext prints extension of a file, including "."

function namename() { local name=${1##/} local name0="${name%.}" echo "${name0:-$name}" } function ext() { local name=${1##/} local name0="${name%.}" local ext=${name0:+${name#$name0}} echo "${ext:-.}" }