# Symbolische Links (Symlinks) Ein symbolischer Link (Symlink) ist eine spezielle Datei, die auf eine andere Datei oder ein Verzeichnis verweist. ## Symlink erstellen ```bash ln -s /pfad/zum/ziel /pfad/zum/link ``` Optionen: - `-s` → Symlink erstellen (statt Hardlink) - `-f` → vorhandenen Link überschreiben - `-n` → falls Link auf Verzeichnis verweist, Link selbst überschreiben Beispiel: ```bash ln -s /opt/programm/binary /usr/local/bin/programm ``` ## Ziel eines Symlinks anzeigen ```bash readlink meinlink ``` Mit absolutem Pfad (löst verschachtelte Links auf): ```bash readlink -f meinlink ``` Beispiel: ```bash $ readlink mysoftlink ../zielordner/datei.txt $ readlink -f mysoftlink /home/user/zielordner/datei.txt ``` ## Symlink aktualisieren Einen Symlink kann man nicht direkt ändern, sondern muss ihn neu erstellen: ```bash ln -sfn /neues/ziel meinlink ``` Beispiel: ```bash #!/bin/bash link="meinlink" # Aktuelles Ziel auslesen altes_ziel=$(readlink "$link") echo "Aktuelles Ziel: $altes_ziel" # Neues Ziel setzen neues_ziel="/pfad/zum/neuen/ziel" ln -sfn "$neues_ziel" "$link" echo "Neues Ziel: $(readlink $link)" ``` ## Symlinks vs. Hardlinks **Symlinks:** - Verweisen auf Pfad (nicht auf Inode) - Können auf Dateien und Verzeichnisse verweisen - Funktionieren über Dateisystemgrenzen hinweg - Brechen, wenn Ziel gelöscht wird **Hardlinks:** - Verweisen direkt auf Inode - Nur für Dateien (nicht für Verzeichnisse) - Müssen im gleichen Dateisystem liegen - Bleiben gültig, auch wenn Originaldatei gelöscht wird ## Desktop-Verknüpfungen erstellen Für Desktop-Umgebungen (GNOME, KDE, XFCE) verwendet man `.desktop`-Dateien: **weblink.desktop:** ```ini [Desktop Entry] Name=Open ChatGPT Type=Link URL=https://chat.openai.com/ Icon=web-browser ``` Ausführbar machen: ```bash chmod +x weblink.desktop ``` ## Siehe auch - [[IT-Know-How/Linux/BASH Basics/find]] - Dateien suchen (z.B. nach Symlinks mit `-type l`) - [[IT-Know-How/Linux/BASH Basics/ls]] - Symlinks in Verzeichnissen anzeigen - [[IT-Know-How/Linux/BASH Basics/Dateiberechtigungen]] - Rechte von Links und Zielen - [[IT-Know-How/Linux/BASH Basics/lsblk]] - Block-Geräte anzeigen