linkup 485 B

1234567891011121314151617181920
  1. #!/usr/bin/env bash
  2. set -euo pipefail
  3. IFS=$'\n\t'
  4. # Create symlink after backing up the target.
  5. [[ $# != 2 ]] && echo "Usage: ${0##*/} source_file target_file" && exit 1
  6. src=$1
  7. tgt=$2
  8. bak=~/.backup
  9. [[ ! -d $bak ]] && mkdir $bak
  10. # Check if the desired link already exists.
  11. [[ -L "$tgt" && "$(readlink $tgt)" = "$src" ]] && exit
  12. # Move an existing file to the back up folder.
  13. [[ -e "$tgt" ]] && mv -v "$tgt" "$bak/${tgt##*/}-$(date '+%Y%m%d-%H%M%S')" || true
  14. ln -sfv "$src" "$tgt"