77 lines
1.1 KiB
Plaintext
77 lines
1.1 KiB
Plaintext
# FILE PATHS
|
|
|
|
## Get the directory name of a file path
|
|
|
|
Alternative to the `dirname` command.
|
|
|
|
**Example Function:**
|
|
|
|
```sh
|
|
dirname() {
|
|
# Usage: dirname "path"
|
|
local tmp=${1:-.}
|
|
|
|
[[ $tmp != *[!/]* ]] && {
|
|
printf '/\n'
|
|
return
|
|
}
|
|
|
|
tmp=${tmp%%"${tmp##*[!/]}"}
|
|
|
|
[[ $tmp != */* ]] && {
|
|
printf '.\n'
|
|
return
|
|
}
|
|
|
|
tmp=${tmp%/*}
|
|
tmp=${tmp%%"${tmp##*[!/]}"}
|
|
|
|
printf '%s\n' "${tmp:-/}"
|
|
}
|
|
```
|
|
|
|
**Example Usage:**
|
|
|
|
```shell
|
|
$ dirname ~/Pictures/Wallpapers/1.jpg
|
|
/home/black/Pictures/Wallpapers
|
|
|
|
$ dirname ~/Pictures/Downloads/
|
|
/home/black/Pictures
|
|
```
|
|
|
|
## Get the base-name of a file path
|
|
|
|
Alternative to the `basename` command.
|
|
|
|
**Example Function:**
|
|
|
|
```sh
|
|
basename() {
|
|
# Usage: basename "path" ["suffix"]
|
|
local tmp
|
|
|
|
tmp=${1%"${1##*[!/]}"}
|
|
tmp=${tmp##*/}
|
|
tmp=${tmp%"${2/"$tmp"}"}
|
|
|
|
printf '%s\n' "${tmp:-/}"
|
|
}
|
|
```
|
|
|
|
**Example Usage:**
|
|
|
|
```shell
|
|
$ basename ~/Pictures/Wallpapers/1.jpg
|
|
1.jpg
|
|
|
|
$ basename ~/Pictures/Wallpapers/1.jpg .jpg
|
|
1
|
|
|
|
$ basename ~/Pictures/Downloads/
|
|
Downloads
|
|
```
|
|
|
|
<!-- CHAPTER END -->
|
|
|