我们可以在 UNIX 中创建硬 link 到符号 link 吗?
Can we create a hard link to a symbolic link in UNIX?
我创建了一个文件的符号 link 和该符号 link 的硬 link。但不是硬 link symbolic link
正在创建并且它们的 inode 是相等的。 是否可以为符号 link 创建硬 link?
不可靠 — 如图所示(Mac OS X 10.10.5 Yosemite 上的演示):
$ ls -l ???.c
-rw-r--r-- 1 jleffler staff 688 Oct 26 00:09 ncm.c
$ ln -s ncm.c ppp.c
$ ln ppp.c qqq.c
$ ls -l ???.c
-rw-r--r-- 2 jleffler staff 688 Oct 26 00:09 ncm.c
lrwxr-xr-x 1 jleffler staff 5 Oct 26 23:58 ppp.c -> ncm.c
-rw-r--r-- 2 jleffler staff 688 Oct 26 00:09 qqq.c
$
link跟在symlink之后,创建到symlink末尾的文件,而不是symlink本身。请参阅 symlink()
和(特别是)的 POSIX 规范
link()
.
在link()
下,它说:
If path1
names a symbolic link, it is implementation-defined whether link()
follows the symbolic link, or creates a new link to the symbolic link itself.
在 Mac OS X 上,它遵循符号 link。其他系统可能会有所不同。
适用于 Linux。我们经常在一些关键任务代码中使用它。正如 Jonathan ,Posix 标准无法保证这一点,因此您应该仔细检查它是否适用于您的系统。
$ date >a
$ ln -s a b
$ ln b c
$ ls -li
total 4
396074 -rw-rw-r-- 1 ec2-user ec2-user 29 Oct 27 07:15 a
396345 lrwxrwxrwx 2 ec2-user ec2-user 1 Oct 27 07:16 b -> a
396345 lrwxrwxrwx 2 ec2-user ec2-user 1 Oct 27 07:16 c -> a
您可以使用 --physical
标志来强制执行此操作。
-P, --physical
make hard links directly to symbolic links
我创建了一个文件的符号 link 和该符号 link 的硬 link。但不是硬 link symbolic link
正在创建并且它们的 inode 是相等的。 是否可以为符号 link 创建硬 link?
不可靠 — 如图所示(Mac OS X 10.10.5 Yosemite 上的演示):
$ ls -l ???.c
-rw-r--r-- 1 jleffler staff 688 Oct 26 00:09 ncm.c
$ ln -s ncm.c ppp.c
$ ln ppp.c qqq.c
$ ls -l ???.c
-rw-r--r-- 2 jleffler staff 688 Oct 26 00:09 ncm.c
lrwxr-xr-x 1 jleffler staff 5 Oct 26 23:58 ppp.c -> ncm.c
-rw-r--r-- 2 jleffler staff 688 Oct 26 00:09 qqq.c
$
link跟在symlink之后,创建到symlink末尾的文件,而不是symlink本身。请参阅 symlink()
和(特别是)的 POSIX 规范
link()
.
在link()
下,它说:
If
path1
names a symbolic link, it is implementation-defined whetherlink()
follows the symbolic link, or creates a new link to the symbolic link itself.
在 Mac OS X 上,它遵循符号 link。其他系统可能会有所不同。
适用于 Linux。我们经常在一些关键任务代码中使用它。正如 Jonathan
$ date >a
$ ln -s a b
$ ln b c
$ ls -li
total 4
396074 -rw-rw-r-- 1 ec2-user ec2-user 29 Oct 27 07:15 a
396345 lrwxrwxrwx 2 ec2-user ec2-user 1 Oct 27 07:16 b -> a
396345 lrwxrwxrwx 2 ec2-user ec2-user 1 Oct 27 07:16 c -> a
您可以使用 --physical
标志来强制执行此操作。
-P, --physical
make hard links directly to symbolic links