OS X不会创建任何符号链接,而是创建别名


5

无论我如何创建一个符号链接OS X拒绝播放,而是创建一个别名。我已经尝试了几种工具,也通过终端使用了 ln 命令。

我正在全新安装并使用 ln 命令工作正常。知道怎么了?

谢谢, 将


1
你试过什么命令?
Matthieu Riegler

@MatthieuRiegler我试过了 ln -s <source> <dest> 和工具如: seiryu.home.comcast.net/~seiryu/symboliclinker.html
user68523

ln只知道如何建立链接,别名只来自Apple工具 - 你怎么知道它是别名?
Mark

@Mark Finder将其归类为别名,如果我运行ls -la,它也会将其称为别名。
user68523

确保这一点 ln 是真的 ln。在终端中,执行 type ln 确保它是 /bin/ln
ithos67

Answers:


12

让我们尝试一些实验,看几件事。

在终端仿真器中,例如/ Applications / Utilities中的Terminal.app,转到您的主目录( cd ~ )并创建一个目录( mkdir [directory] )。

确保你进入我们刚创建的目录( cd [directory] )。

cd ~
mkdir directory
cd directory

之后,制作一个文件;一个简单的文本文件将:

echo "This is a simple text file" > originalfile.txt
ls -l@

现在,尝试创建一个硬链接,如下所示:

/usr/bin/ln originalfile.txt hardlink.txt

然后,尝试创建一个符号链接,如下所示:

/usr/bin/ln -s originalfile.txt symboliclink.txt

现在,在Finder中打开目录 open . 并做一个别名。

在您之前打开的终端模拟器中,另一个 ls 应该让我们这样:

Testarossa:test tonyw$ ls -l@
total 2528
-rw-r--r--  2 tonyw  staff      19 25 Jan 15:51 file.txt
-rw-r--r--@ 1 tonyw  staff  426048 25 Jan 15:52 file.txt alias
com.apple.FinderInfo        32 
com.apple.ResourceFork  850686 
-rw-r--r--  2 tonyw  staff      19 25 Jan 15:51 hard.txt
lrwxr-xr-x  1 tonyw  staff       8 25 Jan 15:53 symbolic.txt -> file.txt

Finder GUI也应该导致这种情况:

The Finder GUI with the original file, a hard link, and a symbolic link.

请注意,Finder GUI将符号链接显示为别名。

符号链接是 与别名相同的东西。真正的别名具有扩展属性而不是符号链接。

在Finder GUI中,没有办法告诉硬链接只是一个文件。

对于任何符号链接,属性的左手边都有一个“l”,而且 ls 命令告诉我们它指向的位置。

当你试试这个时,你到底得到了什么?


所以,为了捎带这个想法,无论如何我们可以强迫OSX / Finder重新标记符号链接而不是别名吗?
Daron Spence

...没有办法告诉硬链接只是一个文件。 那是因为那里 没有不同。当你创建 originalfile.txt 您正在创建一个带有一个硬链接的文件,并在您创建时创建 hardlink.txt那是一个 第二 硬链接到同一个文件。没有办法(在finder中,或在命令提示符下或其他任何地方)告诉哪个名称是原始名称,哪个是“链接”。他们是 链接。每个文件至少有一个硬链接。
Solomon Slow

1

OS X可以以不同的方式创建两者。正如你似乎在使用这个词 别号 它是在Finder中为您在其中列出的任何内容创建的文件(或目录)快捷方式,而符号链接(符号链接)可以在终端应用程序使用以下命令启动的shell实例中创建:

ln -s <source file path><target file path>

无法在Finder窗口中直接创建符号链接(间接可能通过从shell脚本调用AppleScript脚本,反之亦然)。

但是这里存在歧义,因为存在另一种别名,这是一个用户定义的昵称,您可以在打开终端会话时为一系列shell命令提供这些昵称。例如在bash shell窗口中:

$ alias listall=ls -al`

这定义了一个昵称 listall 为命令 ls -al 列出当前目录中的所有文件。在此上下文中,“别名”描述了命令昵称 - alias 实际上是一个用于创建此类昵称的bash shell内置命令。

我不是OS X文件系统的专家,只是一个用户和脚本编写者,但是从我已经阅读过的内容中,为什么Finder别名在OS X中没有中断的原因是因为它包含一个唯一的序列号用于其目标文件(称为每个文件和目录存在的inode编号,与其文件路径无关。这意味着如果将目标移动到另一个目录,则别名仍将指向它,而符号链接会因为它使用目标的文件路径而中断。


0

您无法在Finder中本机创建符号链接(符号链接) ,只有别名。但是,您可以使用 AppleScript创建符号链接 如果这是你最终需要的。

要理解为什么会这样,我们必须理解别名,符号链接和硬链接之间的区别:

  • 别名 发现者 公约;这意味着它们只能在Finder中工作,而不能在OS X的UNIX环境中工作。它们是小型数据文件,而shell(bash,sh,zsh等)不知道如何解释它们。

  • 符号链接 (简称符号链接)是 快捷键 这是* NIX文件系统的一部分。 Finder将它们视为准别名,您可以看到它们并使用它们,但它们不包含Finder别名包含的额外元数据。

  • 硬链接 与Finder中的别名非常相似,除了它们不包含原始文件的路径。硬链接在Finder中显示为常规文件;你不会知道你没有使用原始文件,而是链接的文件。硬链接是什么 ln 省略时默认创建 -s 旗。

有关详细信息,我已经更深入地了解了这一点 这个答案

这里的底线是,您只能在终端(OS X的UNIX环境)中创建符号链接和硬链接,但全局使用它们。您只能在Finder中创建和使用别名。 (IMO)因此,我远离别名并且几乎完全使用符号链接。


-1

我有这个问题。尝试将链接保存到其他文件夹。通过一些试验和错误,它工作。不知道为什么。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.