| Line |  | 
|---|
| 1 | #From: "Grigoriy Strokin" <grg@philol.msu.ru> | 
|---|
| 2 | #Newsgroups: comp.unix.shell | 
|---|
| 3 | #Subject: fast basename and dirname functions for BASH/SH | 
|---|
| 4 | #Date: Sat, 27 Dec 1997 21:18:40 +0300 | 
|---|
| 5 | # | 
|---|
| 6 | #Please send your comments to grg@philol.msu.ru | 
|---|
| 7 |  | 
|---|
| 8 | function basename() | 
|---|
| 9 | { | 
|---|
| 10 | local name="${1##*/}" | 
|---|
| 11 | echo "${name%$2}" | 
|---|
| 12 | } | 
|---|
| 13 |  | 
|---|
| 14 | function dirname() | 
|---|
| 15 | { | 
|---|
| 16 | local dir="${1%${1##*/}}" | 
|---|
| 17 | [ "${dir:=./}" != "/" ] && dir="${dir%?}" | 
|---|
| 18 | echo "$dir" | 
|---|
| 19 | } | 
|---|
| 20 |  | 
|---|
| 21 | # Two additional functions: | 
|---|
| 22 | # 1) namename prints the basename without extension | 
|---|
| 23 | # 2) ext prints extension of a file, including "." | 
|---|
| 24 |  | 
|---|
| 25 | function namename() | 
|---|
| 26 | { | 
|---|
| 27 | local name=${1##*/} | 
|---|
| 28 | local name0="${name%.*}" | 
|---|
| 29 | echo "${name0:-$name}" | 
|---|
| 30 | } | 
|---|
| 31 | function ext() | 
|---|
| 32 | { | 
|---|
| 33 | local name=${1##*/} | 
|---|
| 34 | local name0="${name%.*}" | 
|---|
| 35 | local ext=${name0:+${name#$name0}} | 
|---|
| 36 | echo "${ext:-.}" | 
|---|
| 37 | } | 
|---|
| 38 |  | 
|---|
| 39 |  | 
|---|
| 40 |  | 
|---|
| 41 |  | 
|---|
| 42 |  | 
|---|
| 43 |  | 
|---|
       
      
  Note:
 See   
TracBrowser
 for help on using the repository browser.