64 lines
1.3 KiB
Bash
Executable File
64 lines
1.3 KiB
Bash
Executable File
# return an arbitrary directory path suffix
|
|
# usage: dir_suffix num_of_path_elements [optional prefix]
|
|
function dir_suffix() {
|
|
num=${1:-1};
|
|
prefix=${2:-".../"}
|
|
cd=$(pwd)
|
|
arr=( $(echo $cd | tr '/' ' ') );
|
|
ret="";
|
|
len=${#arr[*]}
|
|
if [ $len -le $num ]; then
|
|
echo $cd
|
|
else
|
|
for i in $(seq $len -1 $(expr $len - $num)); do
|
|
ret="${arr[$i]}/$ret";
|
|
done;
|
|
ret_len=${#ret}
|
|
echo "${prefix}${ret:0:$(expr $ret_len - 2)}";
|
|
fi
|
|
}
|
|
|
|
# return an abbreviated version of a path
|
|
# usage: abbr_path num_of_path_to_show [optional path]
|
|
# abbr 2 /foo/bar/baz # /f/bar/baz
|
|
function abbr_path() {
|
|
path=${2:-$(pwd)}
|
|
num=${1:-2}
|
|
ret=""
|
|
fc=${path:0:1}
|
|
case $fc in
|
|
"~")
|
|
ret=$fc
|
|
num=$(expr $num - 1)
|
|
path=${path:1}
|
|
;;
|
|
"/")
|
|
;;
|
|
*)
|
|
ret=$(expr $path : '^\([^\/]*\)\/')
|
|
path=${path:${#ret}}
|
|
ret=${ret:0:1}
|
|
num=$(expr $num - 1)
|
|
;;
|
|
esac
|
|
arr=( $(echo $path | tr '[A-Z]' '[a-z]' | tr '/' ' ') )
|
|
len=${#arr[*]}
|
|
if [ $len -le $num ]; then
|
|
echo ${2:-$(pwd)}
|
|
else
|
|
if [ $num -gt 0 ]; then
|
|
for i in $(seq 0 1 $(expr $len - $num - 1)); do
|
|
el=${arr[$i]}
|
|
el=${el:0:1}
|
|
ret="$ret/$el"
|
|
done
|
|
fi
|
|
for i in $(seq $(expr $len - $num) 1 $(expr $len - 1)); do
|
|
el=${arr[$i]}
|
|
ret="$ret/$el"
|
|
done
|
|
echo "$ret/";
|
|
fi
|
|
}
|
|
|