操作系统不可知的符号链接/别名/快捷方式

tra*_*ton 4 windows linux shortcuts symbolic-link macos

我有一个文件夹,可以与 Dropbox 等在线服务同步,然后与其他具有不同操作系统的计算机同步。此文件夹中我的文件/文件夹组织的一部分使用符号链接/别名(我的家用计算机是 Mac)。当它将文件夹同步到 Windows 计算机时,遗憾的是无法识别符号链接和别名,但可以识别快捷方式。

有没有办法在具有跨平台兼容性的 Mac 或 Windows 上创建一次符号链接/快捷方式?否则我将不得不为每个文件创建两个链接,一个用于 Mac/Linux,一个用于 Windows。

注意:这个文件夹的用途,因为我知道有人会问,是在文件夹层次结构中组织和存储大量文件。有时,文件或文件夹似乎适合两个或多个位置,因此是符号链接。这是 Mac/Linux 上非常常见的做法。

Cor*_*y-G 5

根据这篇 How-to-geek 帖子,您可以mklink从 cmd (Windows Vista - 10) 中使用来制作也适用于 linux 的符号链接。该指南还提供了一种安装工具的方法,该工具可以使链接更容易(通过将其添加到右键单击菜单中)。

命令行语法是:

mklink /prefix link_path file/folder_path 
Run Code Online (Sandbox Code Playgroud)

其中前缀可以是:

/D – 创建软符号链接,类似于 Windows 中的标准文件夹或文件快捷方式。这是默认选项,如果您不输入前缀,mklink 将使用它。

/H – 创建一个文件的硬链接

/J – 创建指向目录或文件夹的硬链接

我刚刚做的一个例子:

mklink /J D:\Dropbox\school\archive\14Winter\cs355 D:\Dropbox\school\classes\cs355
Run Code Online (Sandbox Code Playgroud)

这使得一个环节14Wintercs355cs355classes

在 Windows 上创建链接后,该链接也适用于我的 Linux 机器。我没试过Mac。如果您发现它不适用于 mac,请告诉我。

编辑:旧答案

这是一个愚蠢但可能有用的解决方案:您可以编写一个小的 python 脚本,它是一个不可知的链接(代码在这里找到)

#!/usr/bin/python
import subprocess
import sys

if sys.platform == 'darwin':
    def openFolder(path):
        subprocess.check_call(['open', '--', path])
elif sys.platform == 'linux2':
    def openFolder(path):
        subprocess.check_call(['gnome-open', '--', path])
elif sys.platform == 'win32':
    def openFolder(path):
        subprocess.check_call(['explorer', path])

openFolder("relative/path")
Run Code Online (Sandbox Code Playgroud)

当然,这将始终打开一个新窗口。不是一个很好的解决方案,但它可能就是你所得到的。(继续祈祷有朝一日 Windows 将基于 Linux ……否则就死了。)