#!/bin/bash declare -i ret=0 while read _target _link; do target="$(sed -rn 's|[^/]+/|../|g;s|/[^/]+$|/|p' <<<"$_link")${_target}" link="$HOME/$_link" if [[ -L "$link" ]]; then rm -f "$link" fi if [[ -e "$link" ]]; then echo "ERROR: file exists: $link" >> /dev/stderr ret=1 else mkdir -p "${link%/*}" ln -s "$target" "$link" fi done < <(sed -e '/^\s*$/d' -e '/#/d' "$XDG_CONFIG_HOME/symlinks") exit $ret