mirror of
https://github.com/dylanaraps/pure-bash-bible.git
synced 2025-08-22 23:32:49 +02:00
bible: better dirname function
This commit is contained in:
21
README.md
21
README.md
@@ -1070,15 +1070,24 @@ Alternative to the `dirname` command.
|
|||||||
```sh
|
```sh
|
||||||
dirname() {
|
dirname() {
|
||||||
# Usage: dirname "path"
|
# Usage: dirname "path"
|
||||||
dir=${1:-.}
|
local tmp=${1:-.}
|
||||||
dir=${dir%%${dir##*[!/]}}
|
|
||||||
|
|
||||||
[[ "${dir##*/*}" ]] && dir=.
|
[[ $tmp != *[!/]* ]] && {
|
||||||
|
printf '/\n'
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
dir=${dir%/*}
|
tmp=${tmp%%"${tmp##*[!/]}"}
|
||||||
dir=${dir%%${dir##*[!/]}}
|
|
||||||
|
|
||||||
printf '%s\n' "${dir:-/}"
|
[[ $tmp != */* ]] && {
|
||||||
|
printf '.\n'
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
tmp=${tmp%/*}
|
||||||
|
tmp=${tmp%%"${tmp##*[!/]}"}
|
||||||
|
|
||||||
|
printf '%s\n' "${tmp:-/}"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@@ -9,15 +9,24 @@ Alternative to the `dirname` command.
|
|||||||
```sh
|
```sh
|
||||||
dirname() {
|
dirname() {
|
||||||
# Usage: dirname "path"
|
# Usage: dirname "path"
|
||||||
dir=${1:-.}
|
local tmp=${1:-.}
|
||||||
dir=${dir%%${dir##*[!/]}}
|
|
||||||
|
|
||||||
[[ "${dir##*/*}" ]] && dir=.
|
[[ $tmp != *[!/]* ]] && {
|
||||||
|
printf '/\n'
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
dir=${dir%/*}
|
tmp=${tmp%%"${tmp##*[!/]}"}
|
||||||
dir=${dir%%${dir##*[!/]}}
|
|
||||||
|
|
||||||
printf '%s\n' "${dir:-/}"
|
[[ $tmp != */* ]] && {
|
||||||
|
printf '.\n'
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
tmp=${tmp%/*}
|
||||||
|
tmp=${tmp%%"${tmp##*[!/]}"}
|
||||||
|
|
||||||
|
printf '%s\n' "${tmp:-/}"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user