Supposons la situation suivante:
J'ai file1
quelque part
$ touch file1
Je fais un lien symbolique vers file1
en tant que symlink1
:
$ ln -s file1 symlink1
$ file symlink1
symlink1: symbolic link to file1
Je renomme file1
en nouveau nom (maintenant symlink1
est cassé)
$ mv file1 file2
$ file symlink1
symlink1: broken symbolic link to file1
Après la dernière étape, le lien symlink1
- est rompu.
Je sais que Midnight Commander a l’option Fichier → Éditer le lien symbolique , mais c’est un moyen terminal:
$ file symlink1
symlink1: symbolic link to file2
et il est très utile si la cible et le lien symbolique se trouvent dans différents systèmes de fichiers et/ou dossiers imbriqués.
Pour autant que je sache, Nautilus, Caja, Nemo, Thunar et Dolphin n’ont pas cette fonctionnalité.
Mise à jour. La solution la plus utile pour moi serait l'intégration au gestionnaire de fichiers Caja de Caja-actions . J'utilise Caja quotidiennement.
Pour faire cela dans Nautilus, nous devons créer un script en utilisant:
mkdir -p ~/.local/share/nautilus/scripts
gedit ~/.local/share/nautilus/scripts/edit-link
Coller dans ce qui suit:
#!/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
et le rendre exécutable
chmod +x ~/.local/share/nautilus/scripts/edit-link
Ce sont les données de test utilisées. L'avant-dernière section montre le lien brisé. Ensuite, notre script est exécuté en donnant un nouveau nom de fichier. La dernière section montre le nouveau bon lien.
Voici à quoi ressemble le script lorsque vous l'exécutez:
Scripts
edit-link
La méthode est similaire à Nautilus mais avec quelques spécificités de Caja. Nous devrions suivre Guide de migration GNOME2 → MATE .
Nous avons donc besoin de créer un script dans le ~/.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
et le rendre exécutable
chmod +x ~/.config/caja/scripts/edit-link
Ensuite, nous pouvons utiliser ce script à partir du menu déroulant Scripts Caja.
J'utilise thunar comme gestionnaire de fichiers par défaut, et voici ce que je suggère pour obtenir un comportement similaire à celui de mc.
Créez un script Shell simple et enregistrez-le où bon vous semble, à des fins de démonstration, je l'ai enregistré dans mon $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
Ajoutez une nouvelle action personnalisée qui exécute ce script, par exemple dans thunar
:
Maintenant, je peux faire un clic droit sur les fichiers et sélectionner "relier", et il demandera une nouvelle adresse pour ce lien:
Il est évident que vous devez installer le paquetage zenity
pour utiliser ce script. Je pense que vous pouvez réussir à l’utiliser dans différents gestionnaires de fichiers.