8

Хорошо, это заставляет меня биться головой. В OS X, чтобы создать жесткую ссылку, в окне терминала вы должны иметь возможность просто напечатать это ...

ln a.txt b.txt

... и это должно создать жесткую ссылку с a.txt на b.txt . Просто и прямо.

Конечно, когда я выполняю это утверждение, в Finder b.txt появляется рядом с a.txt . Однако, даже после редактирования a.txt с использованием TextEdit, b.txt все еще содержит исходные данные! Другими словами, похоже, что он выполнил копию, а не ссылку, жестко или иначе.

Не имеет никакого смысла для меня! Так может кто-нибудь сказать мне, что я здесь делаю не так?

3 ответа3

15

Причина такого поведения довольно проста и связана с тем, как файлы сохраняются в большинстве приложений Mac OS X: атомно.

Что происходит, так это то, что копия файла записывается во временную промежуточную область, а затем перемещается для замены исходного файла.

Это, естественно, разрывает жесткие ссылки.

3

Если появится, посмотрите эту запись от суперпользователя, что это особенность TextEdit. Таким образом, нормальный метод создания жестких ссылок является правильным, но TextEdit ведет себя так, чтобы это сломать. (Ссылка говорит, что он создает новый файл и затем перемещает его поверх старого файла после редактирования.)

1

Обратите внимание, что Emacs также показывает это (поразительно!) поведение по умолчанию (во всех Unix-системах), хотя причина немного отличается (это "безопасная" вещь в ситуациях с очень малым пространством на диске). Однако его можно настроить несколькими способами.

Смотрите документацию для make-backup-files (используйте C-h v make-backup-files) и для

  • backup-by-coping
  • backup-by-coping-when-linked
  • backup-by-coping-when-mismatch
  • backup-by-coping-when-privileged-mismatch

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .