如何从 GUI 编辑损坏的符号链接的目标路径?

N0r*_*ert 7 gui symbolic-link filemanager

让我们假设以下情况:

  1. 我有file1地方

    $ touch file1
    
    Run Code Online (Sandbox Code Playgroud)
  2. 我将符号链接file1设为symlink1

    $ ln -s file1 symlink1
    $ file symlink1 
    symlink1: symbolic link to file1
    
    Run Code Online (Sandbox Code Playgroud)
  3. 我重命名file1为新名称(现在symlink1已损坏)

    $ mv file1 file2
    $ file symlink1 
    symlink1: broken symbolic link to file1
    
    Run Code Online (Sandbox Code Playgroud)

在最后一步之后symlink1-link 被破坏了。

我知道午夜指挥官有档案?编辑符号链接选项,但它是终端方式:

在 Midnight Commander 中编辑符号链接

$ file symlink1 
symlink1: symbolic link to file2
Run Code Online (Sandbox Code Playgroud)

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

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

更新。对我来说最有用的解决方案是通过Caja-actions与 Caja 文件管理器集成。我每天都使用 Caja。

Rav*_*ina 8

我使用 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
Run Code Online (Sandbox Code Playgroud)

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

在此处输入图片说明

现在我可以右键单击文件并选择“重新链接”,它会要求为该链接提供一个新地址:

在此处输入图片说明

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


Win*_*nix 4

在 Nautilus 中编辑符号链接

\n\n

剧本

\n\n\n\n

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

\n\n
mkdir -p ~/.local/share/nautilus/scripts\ngedit ~/.local/share/nautilus/scripts/edit-link\n
Run Code Online (Sandbox Code Playgroud)\n\n

粘贴以下内容:

\n\n\n\n
#!/bin/bash\n\n# NAME: edit-link\n# PATH: $HOME/.local/share/nautilus/scripts\n# DESC: Edit symbolic link\n# CALL: Called from Nautilus file manager.\n# DATE: August 18, 2018.\n\n# strip new line char passed by Nautilus\nFILENAME=$(echo $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS | sed -e \'s/\\r//g\')\n\n# Multiple files can\'t be selected.\nLINE_COUNT=$(wc -l <<< "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS")\nLINE_COUNT=$((LINE_COUNT-1))\n\nif [[ $LINE_COUNT > 1 ]] ; then\n    zenity --error --text "Ony one file can be selected at a time! "\n    exit 1\nfi\n\n# Object type must be "file..." (ie no directories, etc.)\nif [ -d "${FILENAME}" ] ; then\n    zenity --error --text "$FILENAME is a directory!";\n    exit 1\nelse\n    if [ -L "${FILENAME}" ]; then\n        : # Bash noop\n    else\n        zenity --error --text "${FILENAME} is not a symbolic link!";\n        exit 2\n    fi\nfi\n\nNewLink=$(zenity --entry --text "Enter new symbolic link")\nln -sf "$NewLink" "${FILENAME}"\n\nexit 0\n
Run Code Online (Sandbox Code Playgroud)\n\n

并使其可执行

\n\n
chmod +x ~/.local/share/nautilus/scripts/edit-link\n
Run Code Online (Sandbox Code Playgroud)\n\n

样本输出

\n\n

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

\n\n

编辑链接2

\n\n

示例屏幕

\n\n

这是脚本运行时的样子:

\n\n

编辑链接1.png

\n\n
    \n
  • 突出显示与 Nautilus 断开的链接
  • \n
  • 右键单击上下文菜单
  • \n
  • 选择Scripts
  • \n
  • 选择edit-link
  • \n
  • 在上面输入新文件名并单击OK按钮
  • \n
\n\n

在 Caja 中编辑符号链接

\n\n

该方法与 Nautilus 类似,但有一些 Caja 的细节。我们应该遵循GNOME2\xe2\x86\x92MATE 迁移指南

\n\n

所以我们需要在以下位置创建脚本~/.config/caja/scripts

\n\n
mkdir -p ~/.config/caja/scripts\ncat > ~/.config/caja/scripts/edit-link << \\EOF\n#!/bin/bash\n\n# NAME: edit-link\n# PATH: $HOME/.config/caja/scripts\n# DESC: Edit symbolic link\n# CALL: Called from Caja file manager.\n# DATE: August 19, 2018.\n\n# strip new line char passed by Caja\nFILENAME=$(echo $CAJA_SCRIPT_SELECTED_FILE_PATHS | sed -e \'s/\\r//g\')\n\n# Multiple files can\'t be selected.\nLINE_COUNT=$(wc -l <<< "$CAJA_SCRIPT_SELECTED_FILE_PATHS")\nLINE_COUNT=$((LINE_COUNT-1))\n\nif [[ $LINE_COUNT > 1 ]] ; then\n    zenity --error --text "Ony one file can be selected at a time! "\n    exit 1\nfi\n\n# Object type must be "file..." (ie no directories, etc.)\nif [ -d "${FILENAME}" ] ; then\n    zenity --error --text "$FILENAME is a directory!";\n    exit 1\nelse\n    if [ -L "${FILENAME}" ]; then\n        : # Bash noop\n    else\n        zenity --error --text "${FILENAME} is not a symbolic link!";\n        exit 2\n    fi\nfi\n\nNewLink=$(zenity --entry --text "Enter new symbolic link")\nln -sf "$NewLink" "${FILENAME}"\n\nexit 0\nEOF\n
Run Code Online (Sandbox Code Playgroud)\n\n

并使其可执行

\n\n
chmod +x ~/.config/caja/scripts/edit-link\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n