![符号链接相对于 Windows 风格快捷方式的优势](https://linux22.com/image/50023/%E7%AC%A6%E5%8F%B7%E9%93%BE%E6%8E%A5%E7%9B%B8%E5%AF%B9%E4%BA%8E%20Windows%20%E9%A3%8E%E6%A0%BC%E5%BF%AB%E6%8D%B7%E6%96%B9%E5%BC%8F%E7%9A%84%E4%BC%98%E5%8A%BF.png)
当我主要使用 Windows 时,要创建快捷方式,我可以使用常规文件,详细说明其链接到的位置,扩展名为 .lnk 或 .url
现在,在 Linux 上,我主要使用符号链接,这是文件系统特定的功能。 Linux 似乎对基于文件的快捷方式没有太多支持,Windows 似乎对符号链接也没有太多支持。
我可以看到使用基于文件的快捷方式的优势(可以在任何文件系统上使用)。
我的问题是,为什么Linux 在基于文件的快捷方式上使用符号链接,在Linux 上,如何在不支持符号链接的文件系统(例如FAT32)上创建快捷方式?
答案1
使用符号链接有两个原因:
它几乎不使用硬盘上的空间。在创建期间保留元数据的文件系统(例如,ext2/3/4 系列)上,符号链接完全包含
inode
在文件系统元数据表中。它是完全透明的。请参阅下面的解释:
假设/etc
我创建了一个varlink
指向 的符号链接/var
。通过符号链接,我可以做到cd /etc/varlink/lib
。如果我然后执行ls
,我会看到 的内容/var/lib
(即“ /etc/varlink
”部分被“替换”为“ /var
”)。我可以深入到/etc/varlink/lib/dbus
,在里面我会看到的内容/var/lib/dbus
。然而,即使我看到的实际上是后者的内容,$CWD
(当前工作目录)仍然是前者。
同样,当符号链接针对文件时。假设这/etc/fstab
是一个符号链接/opt/fstab
。我可以针对/etc/fstab
(例如,cat
内容,或针对其内容执行)执行所有操作,sed
而无需首先对其进行解码以找到其符号链接到的实际文件。幕后的文件系统将负责 I/O 重定向到实际文件。
第二个问题的答案是:我认为这根本不可能。至少,不是通过外壳。
然而,在 GUI 中,可能的让程序处理 Windows 的“.lnk”文件,将文件浏览器重定向到其他地方。但我不确定这样的程序是否曾经制定过。
答案2
符号链接的优点:
透明度:只有管理软件必须知道符号链接的存在。他们只是工作。仅当尝试打开快捷方式的软件知道它们是快捷方式时,快捷方式才有效。 Syn-links 适用于所有软件,包括旧版软件。
可链接:符号链接将允许链接到链接到链接......
更快:它们通常存储在 inode 中(这可能并不总是如此),使它们的查找速度更快。
缺点:
附加元信息可以存储在快捷方式中。
不需要文件系统支持。
您无需更新文件系统,而是更新系统中的每个其他程序,这使您可以向人们出售他们已经拥有的软件,但有快捷支持,从而增加收入。 (此优势依赖于您的用户不是免费的,您必须根据专有许可证获得软件许可。)