#!/bin/bash if [ $# -ne 3 ]; then echo "Usage: $0 force-y-or-n point-to symlink-goes-where" >&2 echo "(order is just like ln -s)" >&2 exit 1 fi force="$1" ptr="$2" link="$3" if [ -h "$link" ]; then rm "$link" elif [ -e "$link" ]; then echo -n "Conflicting $link found... " if [ "y" = "$force" ]; then echo "moving." mv -i "$link" "$link.old" || exit 1 elif [ "n" = "$force" ]; then echo "aborted."; exit 1 else echo -n "Move out the way? (y/n): " read -r -n 1 echo if [ 'y' = "$REPLY" ]; then mv -i "$link" "$link.old" || exit 1 else exit 1 fi fi fi # Ancient machines may not have the -r option, use readlink instead. # We'll just assume any failure is due to the bad option. If not, it'll # just fail again... ln -rs "$ptr" "$link" || ln -s "$(readlink -f "$ptr")" "$link" || exit 1