#!/usr/bin/bash -eu if [[ "$#" -lt 1 ]]; then echo "Usage: linkify FILES..." exit 1 fi home=$HOME script_dir=`dirname $(realpath $0)` script_home="$script_dir/home" fof=0 links=0 files=0 for file in "$@" do if [[ -h $file ]]; then ((links++)) elif [[ -d $file ]]; then echo "$file is directory, skipping" elif [[ -f $file ]]; then real_path_file=$(realpath $file) check_home=$(echo $real_path_file | cut -d'/' -f-3) if [[ $home = $check_home ]]; then relative_path=$(echo $real_path_file | cut -d'/' -f4-) desired_path="$script_home/$relative_path" mkdir -p $(dirname $desired_path) mv $file $desired_path if [[ "$file" == *".fof" ]]; then cp "$desired_path" "${file::-4}" ((fof++)) else ln -s $desired_path $file ((files++)) fi else echo "$file is not under $home, skipping" fi else echo "$file does not exist" fi done echo "##### linkify result #####" echo "$links link(s) skipped, $files file(s) linkified, $fof fire and forget config(s) renamed and saved"