staging.inyokaproject.org

Wie symbolischen Link via Nautilus setzen und aktuell halten?

Status: Ungelöst | Ubuntu-Version: Ubuntu 20.04 (Focal Fossa)
Antworten |

Bunjip

Anmeldungsdatum:
24. Juni 2014

Beiträge: 311

Hallo Ubuntu-Experten,

wie kann ich allein mit Gnome-/GUI-Bordmitteln symbolische Links setzten, die automatisch aktualisiert werden, wenn das Linkziel verschoben wird?

Ich habe gelernt, dass ich mit <STRG> + <SHIFT> + Drag & Drop einer Datei einen symbolischen Link an einem anderen Ort erzeugen kann (gibt es dafür auch einen "offiziellen" Weg via Menüeintrag?). Wenn ich das Linkziel jedoch im Dateisystem verschiebe, dann wird der symbolische Link nicht aktualisiert. Kann man das irgendwie ohne Shellscripterei lösen, so dass alle symbolischen Links automatisch aktualisiert werden, wenn sich das Linkziel verschiebt?

Danke für Tipps, Bunjip

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11278

Symbolische Links aktualisieren sich nicht von alleine. Wenn du Link und Ziel im Verzeichnisbaum zusammen um die selbe Anzahl von Ebenen verschiebst (z.B. weil du für ein Projekt eine Konfigurationsdatei aus einem Unterverzeichnis in einer höheren Ebene sichtbar machen willst, damit sie die Standard-Konfiguration abbildet), kann ein relativer Symbolischer Link nützlich sein und wenn du auf dem selben Dateisystem bleibst, kannst du auch einen Hardlink nutzen - vgl. ln - leider bilden Dateimanager wie Nautilus diese Möglichkeit nicht ab.

Was noch halbwegs als GUI-Programm durchgeht und diese Möglichkeit bietet ist dired für Emacs: https://www.gnu.org/software/emacs/manual/html_node/emacs/Operating-on-Files.html - da gibt es u.a. die Methoden dired-do-symlink, dired-do-relsymlink und dired-do-hardlink.

Bunjip

(Themenstarter)

Anmeldungsdatum:
24. Juni 2014

Beiträge: 311

seahawk1986 schrieb:

Symbolische Links aktualisieren sich nicht von alleine.

okay.

Was noch halbwegs als GUI-Programm durchgeht und diese Möglichkeit bietet ist dired für Emacs: https://www.gnu.org/software/emacs/manual/html_node/emacs/Operating-on-Files.html - da gibt es u.a. die Methoden dired-do-symlink, dired-do-relsymlink und dired-do-hardlink.

Ich glaube, wenn ich hierfür Emacs verwenden muss, dann fällt die Lösung für mich wohl aus. Dennoch vielen Dank für deine Antwort!

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11278

Das geht ziemlich bequem, wenn man dired-dwim-target in den Customizations angeschaltet und Quell- und Zielverzeichnis offen hat: Emacs: use dired to create symlinks und hardlinks - S erstellt einen absoluten Symlink, H einen Hardlink und für einen relativen Symlink kann man die Methode dired-do-relsymlink direkt aufrufen, da der standardmäßig keine Taste zugewiesen ist (was man aber wie fast alles bei Emacs anpassen kann) - und man muss dazu nicht mal die Finger von der Tastatur nehmen - alternativ kann man das auch über das Menü machen, wenn man lieber mit der Maus herumklickt: Emacs: use dired to create symlinks und hardlinks using the menu bar

Bunjip

(Themenstarter)

Anmeldungsdatum:
24. Juni 2014

Beiträge: 311

seahawk1986 schrieb:

Das geht ziemlich bequem,

Das glaube ich sehr gern. In meinem Fall ist das Ziel allerdings, keine "zusätzlichen" Tools für mein Vorhaben zu verwenden - also weder eine Konsole noch Emacs, was ich nicht im Einsatz habe. Ich hatte auf eine Lösung nach der Art gehofft: "Klicke in Nautilus mit rechter Maus auf das Linkziel und wähle die Funktion 'Link erstellen'. Gib im zugehörigen Dialog den Ort an, wo der Link platziert werden soll und klicke das Häkchen 'dynamischer Symlink'. So wird der Link aktualisiert, wenn sich am Linkziel etwas ändert."

Verstehe nun, dass es diese Funktion nicht gibt. Ich fände die sehr nützlich ☺

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11278

Es gibt unter Ubuntu 20.04 (aber wie es aussieht bislang nicht für spätere Releases) das Paket filemanager-actions und dazu passend für nautilus die Erweiterung nautilus-extension-fma mit dem man u.a. Kontext-Menü von Nautilus um eigene Aktionen erweitern kann. Wenn das installiert ist, kannst du das Tool fma-config-tool starten und eigene Einträge konfigurieren. Die Abfrage des Ziels könnte man z.B. mit Zenity in einem Skript umsetzen.

Dann kann man sich z.B. ein Skript ~/bin/create-relative-symlink anlegen und ausführbar machen:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
#!/usr/bin/bash
origin="$1"

if [ -z "$origin" ]
then
  echo "no origin given, exiting..."
  exit
fi

target=$(zenity --file-selection --save --title="Select a Target")

if [ -z "$target" ]
then
  echo "no target given, exiting..."
  exit
fi

ln -sr "$origin" "$target"

Im fma-config-tool kann man sich dann einen neuen Eintrag anlegen, dem man in den genannten Reitern jeweils die in den angehängten Screenshots gezeigten Attribute gibt (der Rest kann auf den Voreinstellungen bleiben).

In den Einstellungen des Tools kann man u.a. Festlegen, ob es im Kontextmenü ein extra Untermenü für die Benutzerdefinierten Befehle geben soll oder nicht.

Wenn man die Änderungen gespeichert hat, muss man noch mit

nautilus -q 

dafür sorgen, dass der Dateimanager neu gestartet wird.

In Aktion sieht das dann z.B. so aus: Custom FMA to create a relative symlink

Analog dazu kann man auch Hardlinks anlegen usw.

Bilder
Antworten |