Откройте родительскую папку символической ссылки с помощью щелчка правой кнопкой мыши?
Мы можем открыть родительскую папку любого файла, используя скрипт nautilus, например
#!/bin/bash
nautilus "$1"
Если я сделаю этот скрипт по символической ссылке, которая находится на ~/Desktop, то он откроет сам рабочий стол.
Как я могу перекодировать этот скрипт, чтобы открыть родительскую ссылку фактического файла, с которой связана символическая ссылка? Например, если у меня есть файл с символьной ссылкой Desktop/my-doc.doc
ссылка на файл документа, расположенный в /media/myharddisk/my-doc.doc
, скрипт откроет / media / myharddisk / и НЕ ~/Desktop в Nautilus.
3 ответа
Попробуй это:
#!/bin/bash
file="$(readlink -f "$1")"
nautilus "${file%/*}"
Сохранить этот скрипт как Open symlink's parent dir
в вашем ~/.gnome2/nautilus-scripts/
, При щелчке правой кнопкой мыши у вас будет опция в разделе "скрипты", "Открыть каталог родительской ссылки".
Вы можете открыть родительский каталог любой символической ссылки из него. Символическая ссылка может иметь любой файл или папку. Если это не символическая ссылка, вы получите уведомление.
#!/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"
Если существует более одной мягкой ссылки
Ты можешь использовать readmultilink
из этого ответа Раду Рэдяну. Тогда скрипт сможет добраться до родительского каталога, переходя по нескольким программным ссылкам одновременно.
Вам нужно скопировать вставить функцию в свой код и использовать readmultilink
вместо readlink
,
В конце "NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" добавлен дополнительный перевод строки, который вызывает проблемы, когда я пытаюсь добавить двойные кавычки для правильного определения файла.
Я изменил хорошее предложение от souravc, так что оно отлично работает для меня (перевод строки в конце удален, добавлены двойные кавычки, чтобы не возникало проблем с именами файлов с пробелами).
#!/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" )"