Wie bearbeite ich den Zielpfad eines unterbrochenen symbolischen Links über die GUI?

7

Nehmen wir folgende Situation an:

  1. Ich habe file1irgendwo

    $ touch file1
    
  2. Ich mache symbolischen Link auf file1wie symlink1:

    $ ln -s file1 symlink1
    $ file symlink1 
    symlink1: symbolic link to file1
    
  3. Ich benenne file1in neuen Namen um (jetzt symlink1ist kaputt)

    $ mv file1 file2
    $ file symlink1 
    symlink1: broken symbolic link to file1
    

Nach dem letzten Schritt ist der symlink1Link unterbrochen.

Ich weiß, dass Midnight Commander die Option Datei → Symlink bearbeiten hat , aber es ist eine terminale Methode:

Bearbeiten Sie den Symlink in Midnight Commander

$ file symlink1 
symlink1: symbolic link to file2

und es ist sehr nützlich, wenn sich Ziel und Symlink in verschiedenen Dateisystemen und / oder verschachtelten Ordnern befinden.

Soweit ich sehen kann, haben Nautilus, Caja, Nemo, Thunar und Dolphin diese Funktionalität nicht.

Aktualisieren. Die nützlichste Lösung für mich wäre die Integration von Caja-Aktionen in den Caja-Dateimanager . Ich benutze Caja täglich.

N0rbert
quelle
1
Löschen Sie den defekten Link und erstellen Sie ihn neu. So funktionieren symbolische Links. Sie beziehen sich auf einen Dateinamen. Wenn dieser Name fehlt oder sich ändert, wird der Link unterbrochen. Sie können das Ziel eines vorhandenen Links nicht direkt ändern.
Vanadium
@vanadium Ich verstehe, wie symbolische Links funktionieren. Der Midnight Commander erlaubt es jedoch, den Pfad des Ziels der symbolischen Verbindung zu ändern. Deshalb frage ich nach GUI Weg.
N0rbert
1
MC macht dasselbe hinter den Bildschirmen: Löschen Sie den Symlink und erstellen Sie ihn neu. Ich kenne keinen grafischen Dateimanager mit ähnlichen Funktionen. Vielleicht die leistungsfähigeren benutzerorientierten grafischen Dual-Pane-Dateimanager da draußen?
Vanadium

Antworten:

2

Bearbeiten Sie den symbolischen Link in Nautilus

Das Skript

Um dies in Nautilus zu tun, müssen wir ein Skript erstellen mit:

mkdir -p ~/.local/share/nautilus/scripts
gedit ~/.local/share/nautilus/scripts/edit-link

Fügen Sie Folgendes ein:

#!/bin/bash

# NAME: edit-link
# PATH: $HOME/.local/share/nautilus/scripts
# DESC: Edit symbolic link
# CALL: Called from Nautilus file manager.
# DATE: August 18, 2018.

# strip new line char passed by Nautilus
FILENAME=$(echo $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS | sed -e 's/\r//g')

# Multiple files can't be selected.
LINE_COUNT=$(wc -l <<< "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS")
LINE_COUNT=$((LINE_COUNT-1))

if [[ $LINE_COUNT > 1 ]] ; then
    zenity --error --text "Ony one file can be selected at a time! "
    exit 1
fi

# Object type must be "file..." (ie no directories, etc.)
if [ -d "${FILENAME}" ] ; then
    zenity --error --text "$FILENAME is a directory!";
    exit 1
else
    if [ -L "${FILENAME}" ]; then
        : # Bash noop
    else
        zenity --error --text "${FILENAME} is not a symbolic link!";
        exit 2
    fi
fi

NewLink=$(zenity --entry --text "Enter new symbolic link")
ln -sf "$NewLink" "${FILENAME}"

exit 0

und machen es ausführbar

chmod +x ~/.local/share/nautilus/scripts/edit-link

Beispielausgabe

Dies sind die verwendeten Testdaten. Der vorletzte Abschnitt zeigt den defekten Link. Dann wird unser Skript mit einem neuen Dateinamen ausgeführt. Der letzte Abschnitt zeigt den neuen guten Link.

Bearbeiten Sie Link2

Beispielbildschirm

So sieht das Skript aus, wenn Sie es ausführen:

Link bearbeiten 1.png

  • Markieren Sie eine unterbrochene Verbindung mit Nautilus
  • Klicken Sie mit der rechten Maustaste für das Kontextmenü
  • Wählen Scripts
  • Wählen edit-link
  • Geben Sie oben einen neuen Dateinamen ein und klicken Sie auf die OKSchaltfläche

Bearbeiten Sie den symbolischen Link in Caja

Die Methode ähnelt Nautilus, weist jedoch einige Caja-Besonderheiten auf. Wir sollten dem GNOME2 → MATE-Migrationshandbuch folgen .

Also müssen wir ein Skript erstellen in ~/.config/caja/scripts:

mkdir -p ~/.config/caja/scripts
cat > ~/.config/caja/scripts/edit-link << \EOF
#!/bin/bash

# NAME: edit-link
# PATH: $HOME/.config/caja/scripts
# DESC: Edit symbolic link
# CALL: Called from Caja file manager.
# DATE: August 19, 2018.

# strip new line char passed by Caja
FILENAME=$(echo $CAJA_SCRIPT_SELECTED_FILE_PATHS | sed -e 's/\r//g')

# Multiple files can't be selected.
LINE_COUNT=$(wc -l <<< "$CAJA_SCRIPT_SELECTED_FILE_PATHS")
LINE_COUNT=$((LINE_COUNT-1))

if [[ $LINE_COUNT > 1 ]] ; then
    zenity --error --text "Ony one file can be selected at a time! "
    exit 1
fi

# Object type must be "file..." (ie no directories, etc.)
if [ -d "${FILENAME}" ] ; then
    zenity --error --text "$FILENAME is a directory!";
    exit 1
else
    if [ -L "${FILENAME}" ]; then
        : # Bash noop
    else
        zenity --error --text "${FILENAME} is not a symbolic link!";
        exit 2
    fi
fi

NewLink=$(zenity --entry --text "Enter new symbolic link")
ln -sf "$NewLink" "${FILENAME}"

exit 0
EOF

und machen es ausführbar

chmod +x ~/.config/caja/scripts/edit-link

Dann können wir dieses Skript aus dem Dropdown-Menü Caja Scripts verwenden.

WinEunuuchs2Unix
quelle
Vielen Dank! Ich habe Caja-bezogenen Teil hinzugefügt, da er trivial ist. Ich hoffe, wir haben ein sehr nützliches Skript erstellt.
N0rbert
1
@ N0rbert Ihre Bearbeitung zeigt, wie ähnlich das Schreiben eines Skripts in Caja File Manager dem Nautilus File Manager ist. Gut gemacht :) Ich habe eine zweite Bearbeitung zur Hervorhebung der Sprache vorgenommen (verschönern). Ihre Verwendung von cat >... << \\EOFanstelle von geditist großartig für die Neutralität der Distribution.
WinEunuuchs2Unix
8

Ich verwende thunar als Standard-Dateimanager, und hier ist, was ich vorschlage, um ein ähnliches Verhalten wie mc zu erhalten.

Erstellen Sie ein einfaches Shell-Skript und speichern Sie es an einem beliebigen Ort. Zu Demonstrationszwecken habe ich es unter folgender Adresse gespeichert $HOME:

#!/bin/bash
if [ -L "$1" ];
then
 new_address=$(zenity --entry)
 ln -sf "$new_address" "$1"
else
 zenity --error --text 'This is not a link'
fi

Fügen Sie eine neue benutzerdefinierte Aktion hinzu, mit der dieses Skript ausgeführt wird, z. B thunar.:

Geben Sie hier die Bildbeschreibung ein

Jetzt kann ich mit der rechten Maustaste auf Dateien klicken und "Relink" auswählen. Es wird nach einer neuen Adresse für diesen Link gefragt:

Geben Sie hier die Bildbeschreibung ein

Dies ist offensichtlich, dass Sie ein zenityPaket installieren müssen, um dieses Skript zu verwenden. Ich denke, Sie können es schaffen, es in verschiedenen Dateimanagern zu verwenden.

Ravexina
quelle
Vielen Dank! Wie ist es Ihrer Meinung nach möglich, Ihr Skript mit Caja-Aktionen oder vielleicht mit FileManager-Aktionen zu verwenden ? Ich habe sie noch nie benutzt, kann es aber versuchen.
N0rbert
1
Ich habe Caja nie benutzt und ab 11.04 habe ich Nautilus fallen lassen ... daher beschränkt sich mein Wissen auf folgende Dinge: Integration von Skripten in Nautilus, um nützliche Aufgaben auszuführen, von denen ich keine Ahnung habe, was es funktioniert oder nicht ...
Ravexina
@ Ravexina thx, ich benutze dies auf nautilus übrigens: sourceforge.net/p/scriptechocolor/git/ci/master/tree/…
Aquarius Power