feat(user/bk-copy-rand-music):Optimize file processing
[BK-2020-03.git] / unitproc / bkmvln
CommitLineData
bed7eb8f 1#!/bin/bash
bf5f3979
SBS
2# Desc: Moves sybolic link
3# Usage: bkmvln
4# Input: arg1: path of existing symbolic link
5# arg2: path where link should be moved
6# Output: None
7# Depends: gnucoreutils 8.30
8# Ref/Attrib:
9# 1. Christopher Neylan. https://stackoverflow.com/questions/8523159/how-do-i-move-a-relative-symbolic-link#8523293
10# 2. Tomáš Pospíšek. https://stackoverflow.com/a/30508868
bed7eb8f
SBS
11
12help() {
13 echo 'usage: mv_ln src_ln dest_dir'
14 echo ' mv_ln --help'
15 echo
16 echo ' Move the symbolic link src_ln into dest_dir while'
17 echo ' keeping it relative'
18 exit 1
19}
20
bf5f3979
SBS
21# Show help if `--help` flag given, if arg1 isn't a symbolic link, or
22# if arg2 isn't a directory.
bed7eb8f
SBS
23[ "$1" == "--help" ] || [ ! -L "$1" ] || [ ! -d "$2" ] && help
24
25set -e # exit on error
26
27orig_link="$1"
28orig_name=$( basename "$orig_link" )
29orig_dest=$( readlink -f "$orig_link" )
30dest_dir="$2"
31
32ln -r -s "$orig_dest" "$dest_dir/$orig_name"
33rm "$orig_link"