符号链接和快捷方式之间的区别

Difference between symbolic links and shortcuts

符号链接和快捷方式有什么区别?

当我阅读有关 java.nio.file 包的 Oracle 文档时,我开始了解 符号链接 。起初,我以为他们在谈论 快捷方式 因为一开始他们对我来说都是一样的。但后来我意识到我有点在没有证据的情况下假设这一点,所以我用谷歌搜索并找到了一些关于两者之间差异的链接。但我无法清楚地了解这些实际上是什么,因为答案不是那么好。希望能在这里得到解释!

A symbolic link 是一个引用磁盘上另一个路径的特殊文件。如果应用程序打开此文件(或将其包含在路径中),操作系统将默默地遵循 link.

例如,假设您有一个符号 link l,它指向一个目录 d,其中有一个文件 file。观察:

$ ls d/
file
$ ls l/
file
$ touch l/file2  # Create a new file in the path under l
$ ls d/
file  file2

符号 links (symlinks) 是操作系统 filesystem 部分的一个特性。它们可以被任何应用程序使用;确实希望以不同方式对待 symlinks 的应用程序(例如备份程序,不能盲目地遵循 symlinks 以免文件数量变得无限)需要采取特殊的预防措施。

相比之下,快捷方式 是一个常规文件,由用户界面(UI) 以不同方式呈现。快捷方式文件还包含所需的目标路径,但可以包含其他信息,例如图标、命令行参数、UI 到 运行 作为另一个用户的目的地的说明、目的地的分类、翻译信息等。对于应用程序,快捷方式是一个常规文件,其内容描述了快捷方式。例如,如果您使用编辑器打开一个 .desktop 文件,您会看到类似

的信息
Icon=libreoffice-calc
Exec=libreoffice --calc %U
GenericName=Spreadsheet
GenericName[da]=Regneark

如果要向用户界面(通常是图形部分)添加条目,通常应使用快捷方式。快捷方式允许您扩展自定义 - 例如,在上例中,丹麦语用户将看到 Regneark,而英语用户将看到 Spreadsheet

另一方面,如果您希望别名对所有应用程序可见,请改用 symlink。例如,您可能拥有某些应用程序期望的文件的旧名称,或者一个可以执行多项操作的应用程序,或者项目目录的当前版本。

请注意,有些系统不支持 symlinks,有些系统没有快捷方式。如果没有图形界面(例如没有连接显示器的家用路由器),快捷方式将无用。另一方面,symlinks 需要文件系统(FAT 有 none)以及操作系统(DOS/old 版本 Windows 缺少)的支持支持)。