首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Mac OS X中创建目录硬链接

在Mac OS X中创建目录硬链接
EN

Stack Overflow用户
提问于 2009-09-16 12:01:24
回答 4查看 64.9K关注 0票数 63

如何在Mac-OS-X中创建目录的硬链接?

这个特性已经被添加到他们的Mac OS X v10.5 (豹)文件系统中(用于time machine),但是我找不到任何关于从命令行实际使用它的信息。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-10-10 11:32:59

不幸的是,苹果削弱了ln命令。您可以使用以下程序创建指向目录的硬链接:

#include <unistd.h>
#include <stdio.h>

int main(int argc, char* argv[]) {
 if (argc != 3) {
  fprintf(stderr,"Use: hlink <src_dir> <target_dir>\n");
  return 1;
 }
 int ret = link(argv[1],argv[2]);
 if (ret != 0)
  perror("link");
 return ret;
}

考虑到硬链接目录可能不在同一父目录中,因此您可以执行以下操作:

$ gcc hlink.c -o hlink
$ mkdir child1
$ mkdir parent
$ ./hlink child1 parent/clone2
票数 74
EN

Stack Overflow用户

发布于 2011-02-25 22:56:45

如果有人感兴趣,我已经将建议答案打包到了Git存储库中:https://github.com/selkhateeb/hardlink

安装后,使用以下命令创建硬链接:

hln source destination

我还注意到,unlink命令在Mac-OS-x-v10.6(雪豹)上不起作用,所以我添加了一个取消链接的选项:

hln -u destination

要安装Hardlink,请使用Homebrew并运行:

brew install hardlink-osx
票数 86
EN

Stack Overflow用户

发布于 2010-03-14 05:36:39

在回答the_undefined关于如何删除指向某个目录的硬链接而不删除它所链接的其他目录的内容的问题时:据我所知,不能从命令行使用内置命令来完成此操作。然而,这个小程序(受Freeman的帖子启发)将做到这一点:

#include <unistd.h>
#include <stdio.h>

int main(int argc, char* argv[]) {
    if (argc != 2) {
        fprintf(stderr,"Use: hunlink <dir>\n");
        return 1;
    }
    int ret = unlink(argv[1]);
    if (ret != 0)
        perror("unlink");
    return ret;
}

为了继续弗里曼的例子,

$ gcc hunlink.c -o hunlink
$ echo "foo bar" > child1/baz.txt
$ ./hunlink parent/clone2

将删除位于parent/clone2的硬链接,但保留目录child1和文件child1/baz.txt

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1432540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档