51 lines
1.1 KiB
Bash
Executable File
51 lines
1.1 KiB
Bash
Executable File
#!/bin/bash
|
|
# ln? pfft
|
|
# Ja het was waarschijnlijk minder moeite geweest om het te onthouden
|
|
# dan om dit scriptje te schrijven.
|
|
|
|
set -euo pipefail
|
|
|
|
usage() {
|
|
echo "Ook altijd geen idee hoe ln ook alweer werkt? Geen zorgen."
|
|
echo "Doe: $0 <file> <link>" >&2
|
|
echo " of: $0 <link> <file>" >&2
|
|
exit 1
|
|
}
|
|
|
|
if [ $# -ne 2 ]; then
|
|
usage
|
|
fi
|
|
|
|
a="$1"
|
|
b="$2"
|
|
|
|
a_exists=0
|
|
b_exists=0
|
|
if [ -e "$a" ]; then a_exists=1; fi
|
|
if [ -e "$b" ]; then b_exists=1; fi
|
|
|
|
if [ "$a_exists" -eq 1 ] && [ "$b_exists" -eq 1 ]; then
|
|
# is één van de twee al een link? Dan is het goed.
|
|
if { [ -L "$a" ] && [ "$(readlink "$a")" = "$(realpath "$b")" ]; } || \
|
|
{ [ -L "$b" ] && [ "$(readlink "$b")" = "$(realpath "$a")" ]; }; then
|
|
exit 0
|
|
fi
|
|
echo "[FOUT] deze bestaan al: $a, $b" >&2
|
|
exit 1
|
|
# Geen van beide bestaat
|
|
elif [ "$a_exists" -eq 0 ] && [ "$b_exists" -eq 0 ]; then
|
|
echo "[FOUT] allebei niet gevonden: $a, $b" >&2
|
|
exit 1
|
|
elif [ "$a_exists" -eq 1 ]; then
|
|
target="$a"
|
|
link="$b"
|
|
else
|
|
target="$b"
|
|
link="$a"
|
|
fi
|
|
|
|
target_abs="$(realpath "$target")"
|
|
link_abs="$(realpath -m "$link")"
|
|
|
|
ln -s "$target_abs" "$link_abs"
|