diff options
author | Luke Shumaker <lukeshu@sbcglobal.net> | 2015-12-12 16:48:02 -0500 |
---|---|---|
committer | Luke Shumaker <lukeshu@sbcglobal.net> | 2015-12-12 16:48:02 -0500 |
commit | d1df2fc2156d5be3e6b9da74f66bc9dbb7fafca8 (patch) | |
tree | 232c6338d7d8f228c38814512646efa96253570a /.config | |
parent | 4c512616152c0a6bc79b96956451c8f9d56b345f (diff) |
bash: improve the mvln function
Diffstat (limited to '.config')
-rw-r--r-- | .config/bash/rc.d/10_aliases.sh | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/.config/bash/rc.d/10_aliases.sh b/.config/bash/rc.d/10_aliases.sh index d6a1ab3..f34230b 100644 --- a/.config/bash/rc.d/10_aliases.sh +++ b/.config/bash/rc.d/10_aliases.sh @@ -82,15 +82,23 @@ term-title() { printf "$fmt" "$*" } mvln() { + local target link if [[ ! -L "$1" ]]; then libremessages error 'Not a soft link: %s' "$1" + return 1 fi - target=$(readlink -f -- "$1") - ln -srT -- "$target" "$2" - if cmp -- "$1" "$2"; then + if [[ -d "$2" ]]; then + link="$2/${1##*/}" + else + link="$2" + fi + target=$(readlink -f -- "$1") || return 1 + ln -srT -- "$target" "$link" + if cmp -- "$1" "$link"; then rm -f -- "$1" else - libremessages error 'Failed moving link: %s -> %s' "$1" "$2" + libremessages error 'Failed moving link: %s -> %s' "$1" "$link" + return 1 fi } jarls() { |