Macos 如何在不包含实际文件夹的情况下对文件夹内容进行符号链接?

Macos 如何在不包含实际文件夹的情况下对文件夹内容进行符号链接?,macos,bash,dropbox,Macos,Bash,Dropbox,我正在尝试将我的Library/Fonts目录与Dropbox中的一个文件夹进行符号链接,这样我就不必一直安装并确定哪台机器有我需要的字体。当我尝试这个: ln-s字体/~/Library/font 我得到这个错误作为回报: ln:/Users/Username/Library/font/:文件存在 我无法删除该文件夹,因为它是系统要求的,因此不允许您删除。从Dropbox目录中删除Fonts文件夹(显然您希望将任何要保存在其他地方的文件移动),然后键入: ln -s ~/Library/Fon

我正在尝试将我的Library/Fonts目录与Dropbox中的一个文件夹进行符号链接,这样我就不必一直安装并确定哪台机器有我需要的字体。当我尝试这个:

ln-s字体/~/Library/font

我得到这个错误作为回报:

ln:/Users/Username/Library/font/:文件存在

我无法删除该文件夹,因为它是系统要求的,因此不允许您删除。

从Dropbox目录中删除Fonts文件夹(显然您希望将任何要保存在其他地方的文件移动),然后键入:

ln -s ~/Library/Fonts Fonts
请注意,您不希望最后一个字体目录的尾部为
/

编辑以处理评论: 您是对的,这只链接到一个/Library/font文件夹。您可以尝试在一台计算机上执行此操作,然后在另一台计算机上尝试:

  • 关闭升降箱
  • 保存~/Dropbox/font文件夹
  • 执行与第一台计算机上相同的符号链接功能(
    ln-s~/Library/Fonts font
  • 复制此计算机上可能不存在的任何字体
  • 重新打开Dropbox
  • 我还没有试过这个,所以我不知道它是否会起作用,但它应该没有坏处


    另一种肯定有效的方法是设置cron作业,将~/Library/fonts文件夹中任何不存在的字体复制到~/Dropbox/fonts文件夹,反之亦然。如果符号链接技巧有效,我认为这是首选。

    ln-s-F
    将强制创建链接,并在创建链接之前删除原始目标。

    只有当目标文件夹已经是符号链接时,此方法才有效

    使用OSX或BSD派生Unix附带的
    ln

    ln-s-h-F/source/folder/to/use/destination/folder/to/overwrite

    -h
    是这里的关键。否则,您将得到类似~/Library/Fonts/Fonts的结果,因为它会在该文件夹中遍历。
    -F
    本身不会试图覆盖,因为一旦进入该文件夹,它就不会看到冲突

    ln的相关部分:


    GNU coreutils
    ln
    用户:

    如果您使用的是
    coreutils
    软件包(linux、brew、macports等)中的GNU
    ln
    ,请使用
    -T

    ln-sTf/source/folder/to/use/destination/folder/to/overwrite

    此外,使用GNU
    ln
    可以替换普通文件夹。查看其手册页中的
    -t
    选项,使用它指定目标文件夹的父文件夹:

    ln-sf-t/destination/folder/to/overwrite//来源/文件夹/收件人/使用


    需要使用尾随的
    /…
    来在父目录中创建目标,将其保留在原位。

    不正确,您可以删除该文件夹。如果它不存在,系统会重新制作。但在Mtn Lion上不行。你得到了一个错误。你试过从命令行吗?你也试过
    ln-s-F
    强制链接吗?另一件事你可以尝试重命名目录而不是删除:
    mv~/Library/Fonts~/Library/Fonts
    @prodigitalson,这是可行的,但不幸的是,现在我正试图弄清楚为什么在你进行符号链接时字体没有安装。不过谢谢。这不起作用,因为我无法在其他机器上设置符号链接。这不是我真正想要的解决方案,因为我有3-5台机器,它们可以经常更改。必须关闭Dropbox并手动复制字体,这样做是徒劳的。@APERMANENTCREAR:其概念是每台机器上只执行一次。正如我指出的,我还没有尝试过这个,所以我不知道它是否有效。假设他使用OSX附带的
    ln
    ,他也需要
    -h
    。我刚刚发布了一篇关于这方面的文章。我确实投了你的票,因为它比我的早很多,而且在技术上对很多用户来说都是正确的。:)
          ln [-Ffhinsv] source_file ... target_dir
    
    -s    Create a symbolic link.
    -h    If the target_file or target_dir is a symbolic link, do not follow it.
          This is most useful with the -f option, to replace a symlink which may
          point to a directory.
    -F    If the target file already exists and is a directory, then remove it
          so that the link may occur.