Files
scripts/bin/lnw
T
2026-08-08 18:06:50 +02:00

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"