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:11:59 +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:11:59 +01:00
|
|
|
/*)
|
|
|
|
left="${target}"
|
|
|
|
result=""
|
|
|
|
;;
|
|
|
|
'')
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
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"
|