Откройте родительскую папку символической ссылки с помощью щелчка правой кнопкой мыши?

Мы можем открыть родительскую папку любого файла, используя скрипт nautilus, например

#!/bin/bash 

nautilus "$1"

Если я сделаю этот скрипт по символической ссылке, которая находится на ~ / Desktop, то он откроет сам рабочий стол.

Как я могу перекодировать этот скрипт, чтобы открыть родительский элемент фактического файла, с которым связана символическая ссылка? Например, если у меня есть файл ссылки sym Desktop/my-doc.doc, связанный с файлом документа, расположенным в /media/myharddisk/my-doc.doc, скрипт откроет / media / myharddisk / и NOT ~ / Desktop в Наутилусе.

2
задан 27 January 2014 в 12:46

3 ответа

Попробуйте это:

#!/bin/bash

file="$(readlink -f "$1")"
nautilus "${file%/*}"
0
ответ дан 27 January 2014 в 12:46

Сохраните этот скрипт как 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"

enter image description here

enter image description here

Если имеется более одной мягкой ссылки

Вы можете использовать readmultilink из этого ответа Раду Радеану . Затем скрипт сможет связаться с родительским каталогом, перемещаясь по нескольким программным ссылкам одновременно.

Вам необходимо скопировать и вставить функцию в свой код и использовать readmultilink вместо readlink.

0
ответ дан 27 January 2014 в 12:46
  • 1
    Arronical, @daltonfury42 благодарит вас обоих, я зафиксировал его. И да, daltonfury42 я чрезвычайно неопытен. Мой босс дал мне набор задач сделать с установкой человечности, пишущий коды в нано и ударе, когда я даже не услышал об этих вещах прежде. Парни спасибо так. Я couldn' t решают, кто поместить как " Answer" потому что Вы оба помогли. – Brandon 21 July 2015 в 01:37

В конце «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" )"
0
ответ дан 27 January 2014 в 12:46

Другие вопросы по тегам:

Похожие вопросы: