ubuntuusers.de

Zwei Fragen zu Symlinks

Status: Gelöst | Ubuntu-Version: Ubuntu 22.04 (Jammy Jellyfish)
Antworten |

Purpur

Avatar von Purpur

Anmeldungsdatum:
15. Mai 2005

Beiträge: 376

Hallo Gemeinde,

ich habe 2 Fragen zu Symlinks.

1. Pfadanzeige in Dateibrowsern
Ich befinde in ~/A-Z/G
Dort gibt es den Ordner ~/A-Z/G/Gestylte Geschichte
Zu diesem Ordner stelle ich (ganz klassisch mit Rechtsklick) einen Symlink her.
Und erhalte Verknüpfung mit Gestylte Geschichte
Diesen Symlink verschiebe ich nach ~/A-Z/R/Rezensionen/Liste ausgewählter Rezensionen
Und erhalte somit ~/A-Z/R/Rezensionen/Liste ausgewählter Rezensionen/Verknüpfung mit Gestylte Geschichte
Diesen Link klicke ich nun an und lande hier:
~/A-Z/R/Rezensionen/Liste ausgewählter Rezensionen/Gestylte Geschichte
anstatt hier:
~/A-Z/G/Gestylte Geschichte
Ich weiß sehr wohl, dass mich der Klick auf den Symlink in den gewünschten Ordner gebracht hat. Nur wird das in der Pfadangabe der Dateibrowser anders dargestellt. Das stürzt mich auch nicht in tiefe Verzweiflung.
Schöner wäre es, wenn in der Pfadangebe dann auch der korrekte Pfad gezeigt werden könnte.

Meine Frage:
Geht das? Kann man das einrichten?

2. "Verknüpfung zu " brauche ich nicht
Wann immer ein Symlink zu einem Ordner oder einer Datei erstellt wird, wird das mit dem Präfix "Verknüpfung zu " verdeutlicht.
Im Datei- oder Ordnericon erscheint eingebettet ein Pfeil.
Dieser optische Hinweis würde mir völlig genügen.
Auch im Terminal sind die Symlinks ja durch ein "l" gekennzeichnet.

Meine Frage:
Kann ich das BS überreden, dieses Präfix im Dateibrowser weg zu lassen?
Und wenn ja - wie?

Danke fürs Mitdenken und eure Zeit.

Viele Grüße,
Alexander

Thomas_Do Team-Icon

Moderator
Avatar von Thomas_Do

Anmeldungsdatum:
24. November 2009

Beiträge: 8808

Das Verhalten zu 1. ist so gewollt. Wenn ich eine Datei oder einen Ordner (auch) an anderer Stelle im Dateisystem einhänge, sollen sie dort auch sichtbar sein. Ein Sprung an einen anderen Ort bei Anzeige eines Symlinks zu einem Ordner, wäre eher verwirrend. Ein Symlink ist kein reiner "Sprungbefehl", sondern ein tatsächlicher Teil der Dateistruktur.

Purpur

(Themenstarter)
Avatar von Purpur

Anmeldungsdatum:
15. Mai 2005

Beiträge: 376

Hallo Thomas_Do
Danke für die Erläuterung. Offensichtlich habe ich die Funktion des Symlinks mit "springe zu" verwechselt.
Wieder was gelernt ☺

Gäbe es denn einen solchen Sprungbefehl?

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9564

Wohnort: Münster

Thomas_Do schrieb:

[…] Ein Symlink ist kein reiner "Sprungbefehl", sondern ein tatsächlicher Teil der Dateistruktur.

Ein Symlink ist zunächst einmal eine Datei des Typs "Symlink". Die bei unix-artigen Betriebssystemen üblichen Dateisysteme stellen diesen Typ zur Verfügung. Symlinks haben wie reguläre Dateien (mindestens) einen Dateinamen und einen Dateiinhalt.

Der Dateiname ist völlig willkürlich. Jeder für das jeweilige Dateisystem zulässige Name kann verwendet werden. Graphische Dateimanager verwenden üblicherweise „Verknüpfung mit …“, aber das kann beliebig umbenannt werden. Beim Anlegen eines Symlinks im Terminal mit ln -s wählt man den Dateinamen selber nach eigenen Vorstellungen. Der Dateiname hat keine andere Funktion außer die Datei von anderen Dateien zu unterscheiden.

Der Dateiinhalt ist ebenfalls völlig willkürlich. Da kann man einen relativen oder absoluten Pfad zu einer anderen Datei hineinschreiben oder das Märchen von Schneewittchen oder was einem sonst einfällt. Ein Symlink unterscheidet sich von einer regulären Datei nur durch die Art, wie der Dateiinhalt gespeichert wird und nicht, was gespeichert werden kann. Bei einem Symlink in einem ext-Dateisystem werden die ersten 60 Byte im Inode gespeichert und somit belegen kurze Dateiinhalte dann keinen Block.

Wenn Du einen Symlink von einem Ordner in einen anderen Ordner verschiebst, änderst Du nur den Dateinamen bzw. ob dieser in dem einen oder dem anderen Ordner eingetragen ist. Der Dateiinhalt bleibt enthalten.

Wenn der Dateiinhalt eines Symlinks von dem Ordner aus, der seinen Dateinamen speichert, als (absoluter oder relativer) Pfad zu einer Datei interpretiert werden kann und die Zieldatei auch tatsächlich existiert, dann bearbeiten manche Programme diese Zieldatei. Das hat aber nichts mit dem Betriebssystem oder mit dem Dateisystem zu tun, sondern es ist ein Feature des jeweiligen Programms (z.B. der Shell), ob dem Symlink gefolgt wird.

Ein Symlink ist also kein „Sprungbefehl“, sondern es hängt vom jeweiligen Programm (und ggf. dessen Konfiguration) ab, ob und wie eine Datei dieses Typs bearbeitet wird. Vorgesehen sind Symlinks zwar als indirekter Verweis auf eine andere Datei, verwendbar sind sie aber vielseitiger.

Purpur

(Themenstarter)
Avatar von Purpur

Anmeldungsdatum:
15. Mai 2005

Beiträge: 376

kB schrieb:

... einen Berg voll erklärender Worten zu symlinks ... 👍

Hallo kB,

dafür danke ich dir sehr. Für das Verständnis, was symlinks sind und was nicht, sind deine detaillierten Ausführungen außerordentlich hilfreich.

Hallo alle,

Im Codeblock unten ist eine Verzeichnisstruktur angedeutet. Tatsächlich gibt es das ganze Alphabet. Innerhalb dieser Struktur gibt es viele weitere Verzeichnisse, in die ich Dokumente nach einem "inneren Alphabet" einordne. Dieses "innere Alphabet" ist natürlich für jeden individuell verschieden. "notiz.txt" ordnet der eine unter ~/A-Z/N/Notizen/... ein, der andere vielleicht unter ~/A-Z/M/Memos/...

Solche Ablagestrukturen haben die Tendenz, zu wuchern und zu verwildern. Auf der einen Seite helfen sie, eine Ordnung zu erzeugen und Dateien wieder zu finden. Auf der anderen Seite ist man bei den eigenen Ordnungskriterien nicht immer konsequent. Und es gibt die Fälle, in denen man nicht entscheiden kann, an welcher Position der Struktur eine Datei nun gut aufgehoben ist, um sie auch wieder zu finden. Oder Dokumente sind zwar inhaltlich verwand, alphabetisch jedoch weit auseinander. Wo sie also einordnen/ablegen?

Und genau in solchen Momenten kommen Verlinkungen ins Spiel.

1
2
3
4
5
6
7
8
9
alex@vbox-mint:~/Test$ tree
.
├── A
│   └── a
│       └── Datei.txt
└── B
    └── Verknüpfung mit a -> ~/Test/A/a

4 directories, 1 file
Links verfolgen im grafischen Dateibrowser
------------------------------------------
Gezeigt wird (korrekt) beide male der Inhalt von
	~/Test/A/a

Korrekte Darstellung:
	Durchklicken zu Verzeichnis "a" in "A" ergibt:
	~/Test/A/a

Ungünstige Darstellung:
	Klick auf den Link "->a" in "B" ergibt:
	~/Test/B/a

Es gibt kein Verzeichnis ~/Test/B/a

In diesem einfachen Beispiel weiß ich noch genau, in welches Verzeichnis ich gerade hinein schaue. Und ich weiß auch, dass das verlinkte Verzeichnis nur eingebunden ist und sich tatsächlich woanders befindet. Je tiefer Verlinkungen sich jedoch in die Verzeichnisstruktur verzweigen und je mehr Verlinkungen es gibt, desto verwirrender, unübersichtlicher und ungünstiger wird die Darstellung.

Es ist lediglich die Darstellung, die bei tiefen Orderstrukturen Probleme bei der Orientierung/Übersicht verursacht.

Hier also noch einmal meine Frage:

Gibt es eine Möglichkeit, einen Link zu überreden, tatsächlich in das Zielverzeichnis zu springen?
(Oder eine andere Methode, die das erfüllt)

Falls ja - dann her mit der Lösung 😇
Falls nein - nun, dann ist das eben so und ich muss damit leben.

Danke fürs Mitdenken.
Gruß an alle,
Alexander

HaCeMei Team-Icon

Anmeldungsdatum:
2. August 2010

Beiträge: 2265

Schau dir mal desktop-Dateien nach den Spezifikationen von freedesktop.org an. Damit kannst du Links erzeugen, mit denen du ins Zielverzeichnis springst:

[Desktop Entry]
URL=/pfad/zum/ziel
Icon=/pfad/zu/einer/Bilddatei %falls gewünscht
Type=Link
Name=frei wählbarer Name

Mit Endung *.desktop speichern

Bearbeitet von Taomon:

Wikilink repariert.

Purpur

(Themenstarter)
Avatar von Purpur

Anmeldungsdatum:
15. Mai 2005

Beiträge: 376

Hallo HaCeMei,

Das ist die Lösung! Besten Dank dafür.

Hier gibt es auch ein kleines Tool, das grafisch orientiert ist (habe ich eben gefunden).

Danke & Grüße
Alexander

dirkolus

Anmeldungsdatum:
17. Mai 2011

Beiträge: 2173

Wohnort: dahoam

Purpur schrieb:

Gibt es eine Möglichkeit, einen Link zu überreden, tatsächlich in das Zielverzeichnis zu springen?
(Oder eine andere Methode, die das erfüllt)

Ich kann's hier nicht ausprobieren, deswegen fornuliere ich das mal als Frage: Hast Du mal folgendes versucht:

  • Ins Ziel-Verzeichnis gehen.

  • Dort 'Symlink erstellen' - hier müsste es möglich sein, eine bestimmte Datei oder so anzuwählen.

  • Quelldatei (oder -Verzeichnis) auswählen und Befehl abschließen ('Ok').

Symlinks (und Links) unterscheiden sich leider im Detail bei Windows und Linux.

Antworten |