2018-03-14 00:26:12 +01:00
|
|
|
#!/bin/sh
|
2018-03-16 05:07:09 +01:00
|
|
|
|
|
|
|
case "$1" in
|
2018-03-16 05:10:20 +01:00
|
|
|
/*) left="${1#/}";;
|
|
|
|
*) left="${PWD#/}/$1";;
|
2018-03-16 05:07:09 +01:00
|
|
|
esac
|
2018-03-14 00:26:12 +01:00
|
|
|
|
2018-03-16 05:10:20 +01:00
|
|
|
result=""
|
2018-03-14 00:26:12 +01:00
|
|
|
|
2018-03-16 05:10:20 +01:00
|
|
|
while [ -n "$left" ]; do
|
|
|
|
case "$left" in
|
2018-03-16 05:02:12 +01:00
|
|
|
*/*)
|
2018-03-16 05:10:20 +01:00
|
|
|
seg="${left%%/*}"
|
|
|
|
left="${left#*/}"
|
2018-03-16 05:02:12 +01:00
|
|
|
;;
|
|
|
|
*)
|
2018-03-16 05:10:20 +01:00
|
|
|
seg="$left"
|
|
|
|
left=""
|
2018-03-16 05:02:12 +01:00
|
|
|
;;
|
|
|
|
esac
|
|
|
|
case "$seg" in
|
|
|
|
.)
|
2018-03-16 05:10:20 +01:00
|
|
|
result="${result%/*}"
|
2018-03-16 05:02:12 +01:00
|
|
|
continue
|
|
|
|
;;
|
|
|
|
..)
|
2018-03-16 05:10:20 +01:00
|
|
|
result="${result%/*/*}"
|
2018-03-16 05:02:12 +01:00
|
|
|
continue
|
|
|
|
;;
|
|
|
|
esac
|
2018-03-16 05:10:20 +01:00
|
|
|
result="$result/$seg"
|
|
|
|
target="$(readlink "$result")"
|
2018-03-16 05:02:12 +01:00
|
|
|
case "$target" in
|
2018-03-16 05:10:20 +01:00
|
|
|
/*) left="${target}"
|
|
|
|
result="";;
|
2018-03-16 05:02:12 +01:00
|
|
|
'') ;;
|
2018-03-16 05:10:20 +01:00
|
|
|
*) left="${left%/*}/${target}";;
|
2018-03-16 05:02:12 +01:00
|
|
|
esac
|
2018-03-16 05:10:20 +01:00
|
|
|
left="${left#/}"
|
2018-03-16 05:02:12 +01:00
|
|
|
done
|
|
|
|
|
2018-03-16 05:10:20 +01:00
|
|
|
echo "$result"
|