43 lines
762 B
Text
43 lines
762 B
Text
#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:-.}"
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|