42 lines
1.0 KiB
Plaintext
42 lines
1.0 KiB
Plaintext
|
#!/bin/bash
|
||
|
|
||
|
isAbsPath() {
|
||
|
if [[ "${1:0:1}" == / || "${1:0:2}" == ~[/a-z] ]]
|
||
|
then
|
||
|
echo $1
|
||
|
return 0
|
||
|
else
|
||
|
return 1
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
# get full absolute path from a current or parent path
|
||
|
function abs_path {
|
||
|
local target="$1"
|
||
|
[[ $(isAbsPath $target) ]] && { echo $target; return 0; }
|
||
|
# echo relative path finding absolute
|
||
|
if [[ ! $(echo "$target" | sed 's/^\.\..*//') ]]; then
|
||
|
# echo .. parent directory
|
||
|
echo "$(dirname "$(pwd)")/${target/..//}" | tr -s /
|
||
|
return 0
|
||
|
fi
|
||
|
if [[ ! $(echo "$target" | sed 's/^\..*//') ]]; then
|
||
|
# echo . current directory
|
||
|
echo "$(pwd)/${target/.//}" | tr -s /
|
||
|
return 0
|
||
|
fi
|
||
|
# echo simple relative
|
||
|
echo "$(pwd)/$target" | tr -s /
|
||
|
}
|
||
|
|
||
|
# get full absolute path from a current or parent path
|
||
|
function abs_dir {
|
||
|
# with no trailing / will assume that is a file
|
||
|
# and remove it so return only the directory.
|
||
|
local target="$1"
|
||
|
[[ ! "$target" == */ ]] && target=$(dirname $target)
|
||
|
echo $(abs_path $target)
|
||
|
}
|
||
|
|
||
|
|