通过右键单击打开符号链接的父文件夹?

通过右键单击打开符号链接的父文件夹?

我们可以使用 nautilus 脚本打开任何文件的父文件夹,例如

#!/bin/bash 

nautilus "$1"

如果我在 ~/Desktop 上的符号链接上执行此脚本,那么它将打开桌面本身。

我该如何重新编码此脚本以打开符号链接绑定的实际文件的父文件?例如,如果我有一个链接Desktop/my-doc.doc到位于的 doc 文件的符号链接文件/media/myharddisk/my-doc.doc,则脚本将打开/媒体/我的硬盘/不是 ~/Desktop在鹦鹉螺中。

答案1

尝试这个:

#!/bin/bash

file="$(readlink -f "$1")"
nautilus "${file%/*}"

答案2

将此脚本另存为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"

在此处输入图片描述

在此处输入图片描述

如果有多个软链接

您可以使用readmultilinkRadu Rădeanu 的回答. 然后脚本将能够通过多个软链接一次导航到父目录。

您需要在代码中复制粘贴该函数并readmultilink使用readlink

答案3

“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" )"

相关内容