108 lines
2.0 KiB
Markdown
108 lines
2.0 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
|
|
|
|
- [[find]] - Dateien suchen (z.B. nach Symlinks mit `-type l`)
|
|
- [[ls]] - Symlinks in Verzeichnissen anzeigen
|
|
- [[Dateiberechtigungen]] - Rechte von Links und Zielen
|
|
- [[lsblk]] - Block-Geräte anzeigen
|