#! /bin/sh ROA_IN=${1:-~/.roaming} ROA_OUT=${2:-~} ROA_BK="$ROA_OUT/.roaming-bk" echo "Link roaming space $ROA_IN to $ROA_OUT. Are you sure? " read REPLYST if [ ! "x$REPLYST" = "xy" ] then exit 1 fi #Treat all files, inclugind hidden file, but excluding the current script. for FILE in $(ls -A $ROA_IN | grep -v -e "^$0$" ) do #echo $ROA_IN/$FILE #Skip existing correct links if [ -h $ROA_OUT/$FILE ] then if [ "x$( readlink '$ROA_OUT/$FILE')" = "x$( readlink -f '$ROA_IN/$FILE')" ] then continue fi fi # Move existing files to backup if [ -e $ROA_OUT/$FILE ] then # Create backup folder if [ ! -d $ROA_BK ] then if [ -e $ROA_BK ] then echo "[ERROR] $ROA_BK exists but is not a folder. Please fix this." exit 2 fi mkdir -p $ROA_BK fi # If destination exists, ask if the user want to remove it if [ -e $ROA_BK/$FILE ] then echo "[?] Backup already exists in $ROA_BK/$FILE; replace it? [y,n]" read REPLYBK if [ "x$REPLYBK" = "xy" ] then echo "Removing $ROA_BK/$FILE" rm -Rf "$ROA_BK/$FILE" else echo "[ERROR] Cannot backup existing file $ROA_BK/$FILE. Please fix this." exit 3 fi fi # Move file echo "Backuping $ROA_OUT/$FILE to $ROA_BK/$FILE" mv "$ROA_OUT/$FILE" "$ROA_BK/$FILE" fi # Link roaming file echo "Link $ROA_IN/$FILE to $ROA_OUT/$FILE" ln -s "$ROA_IN/$FILE" "$ROA_OUT/$FILE" done