在 Nautilus 中编辑符号链接

在 Nautilus 中编辑符号链接

假设以下情况:

  1. 我有file1地方

    $ touch file1
    
  2. file1我建立了以下符号链接symlink1

    $ ln -s file1 symlink1
    $ file symlink1 
    symlink1: symbolic link to file1
    
  3. 我将其重命名file1为新名称(现已symlink1损坏)

    $ mv file1 file2
    $ file symlink1 
    symlink1: broken symbolic link to file1
    

最后一步之后,symlink1链接断了。

我知道午夜指挥官文件→编辑符号链接选项,但它是终端方式:

在 Midnight Commander 中编辑符号链接

$ file symlink1 
symlink1: symbolic link to file2

如果目标和符号链接位于不同的文件系统和/或嵌套文件夹中,它非常有用。

据我所知,Nautilus、Caja、Nemo、Thunar 和 Dolphin 没有此功能。

更新。对我来说最有用的解决方案是与 Caja 文件管理器集成卡哈行动. 我每天都使用 Caja。

答案1

我使用 thunar 作为我的默认文件管理器,以下是我建议的获得类似 mc 的行为。

创建一个简单的 shell 脚本,并将其保存在您喜欢的地方,出于演示目的,我将其保存在我的$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

添加一个运行此脚本的新自定义操作,例如thunar

在此处输入图片描述

现在我可以右键单击文件并选择“重新链接”,它会要求输入该链接的新地址:

在此处输入图片描述

很明显,您必须安装zenity包才能使用该脚本,我认为您可以在不同的文件管理器中使用它。

答案2

在 Nautilus 中编辑符号链接

剧本

要在 Nautilus 中执行此操作,我们需要使用以下命令创建一个脚本:

mkdir -p ~/.local/share/nautilus/scripts
gedit ~/.local/share/nautilus/scripts/edit-link

粘贴以下内容:

#!/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

并使其可执行

chmod +x ~/.local/share/nautilus/scripts/edit-link

示例输出

这是使用的测试数据。倒数第二部分显示断开的链接。然后运行我们的脚本并给出一个新文件名。最后一部分显示新的良好链接。

编辑链接2

示例屏幕

运行脚本时的样子如下:

编辑链接1.png

  • 使用 Nautilus 突出显示损坏的链接
  • 右键单击以显示上下文菜单
  • 选择Scripts
  • 选择edit-link
  • 在上方输入新文件名,然后单击OK按钮

在 Caja 中编辑符号链接

该方法与 Nautilus 类似,但具有一些 Caja 特有的特性。我们应该遵循GNOME2→MATE 迁移指南

因此我们需要在以下位置创建脚本~/.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

并使其可执行

chmod +x ~/.config/caja/scripts/edit-link

然后我们可以从 Caja Scripts 下拉菜单中使用该脚本。

相关内容