aboutsummaryrefslogtreecommitdiffstats
path: root/examples/functions/basename2
diff options
context:
space:
mode:
Diffstat (limited to 'examples/functions/basename2')
-rw-r--r--examples/functions/basename243
1 files changed, 43 insertions, 0 deletions
diff --git a/examples/functions/basename2 b/examples/functions/basename2
new file mode 100644
index 0000000..a42231c
--- /dev/null
+++ b/examples/functions/basename2
@@ -0,0 +1,43 @@
+#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:-.}"
+}
+
+
+
+
+
+