Nous pouvons ouvrir un dossier parent de n'importe quel fichier en utilisant un script nautilus comme
#!/bin/bash
nautilus "$1"
Si je fais ce script sur un lien symbolique qui se trouve sur le ~/bureau, il ouvrira le bureau lui-même.
Comment puis-je recoder ce script pour ouvrir le parent du lien symbolique du fichier réel est lié à? Par exemple, si j'ai un fichier de lien sym Desktop/my-doc.doc
lien vers le fichier doc situé dans /media/myharddisk/my-doc.doc
, le script s'ouvrira / media/myharddisk / et NOT ~/Desktop dans Nautilus.
Essaye ça:
#!/bin/bash
file="$(readlink -f "$1")"
nautilus "${file%/*}"
Enregistrez ce script sous Open symlink's parent dir
dans ton ~/.gnome2/nautilus-scripts/
. Sur clic droit, vous aurez une option sous "scripts", "Ouvrir le répertoire parent du lien symbolique".
vous pouvez ouvrir le répertoire parent de tout lien symbolique à partir de celui-ci. le lien symbolique peut être de n'importe quel fichier ou dossier. S'il ne s'agit pas d'un lien symbolique, vous recevrez un avis.
#!/bin/bash
if [ -h $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS ]; then
var="$(readlink $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS)"
else
zenity --info --text="$(basename "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS") is not a symbolic link"
exit 0
fi
if [ -d "$var" ]; then
var2="$var"
else
var2="$(dirname "$var")"
fi
nautilus "$var2"
S'il y a plus d'un lien logiciel
Vous pouvez utiliser readmultilink
à partir de cela réponse de Radu Rădean . Ensuite, le script sera en mesure d'atteindre le répertoire parent en naviguant à travers plusieurs liens logiciels à la fois.
Vous devez copier coller la fonction dans votre code et utiliser readmultilink
au lieu de readlink
.
Il y a un saut de ligne supplémentaire à la fin de "NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" qui cause des problèmes lorsque j'essaie d'ajouter des guillemets doubles pour la détection de fichier correcte.
J'ai changé la suggestion de Nice de souravc pour que cela fonctionne parfaitement pour moi (le saut de ligne à la fin a été supprimé, les guillemets ont été ajoutés afin qu'il n'y ait aucun problème avec les noms de fichiers avec des espaces).
#!/bin/bash
# Remove line feed at the end of the path
selectedPath="${NAUTILUS_SCRIPT_SELECTED_FILE_PATHS%?}"
# Check if the selected file is a symbolic link
if [ -h "$selectedPath" ]; then
var="$( readlink "$selectedPath" )"
else
zenity --info --text="$( basename "$selectedPath" ) is not a symbolic link"
exit 0
fi
# Open the parent directory of the symbolic link
nautilus "$( dirname "$var" )"