Files
it-know-how/Linux/BASH Basics/Symlinks.md
T
2026-09-02 16:32:50 +02:00

108 lines
2.2 KiB
Markdown

# 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