#!/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 " >&2 echo " of: $0 " >&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"