¿Cómo se crea un enlace duro que funcione en OSX?

8

Ok, esto me tiene golpeando mi cabeza. En OS X, para crear un enlace duro, en una ventana de terminal, se supone que puedes escribir esto ...

ln a.txt b.txt

... y esto debería crear un enlace duro de a.txta b.txt. Simple y directo.

Cuando ejecuto esa declaración, efectivamente, en Finder b.txtaparece justo al lado a.txt. Sin embargo, incluso después de editar a.txtusando TextEdit, ¡ b.txttodavía tiene los datos originales! En otras palabras, parece que realizó una copia, no un enlace, de forma física o no.

¡No tiene ningún sentido para mí! Entonces, ¿alguien puede decirme qué estoy haciendo mal aquí?

Mark A. Donohoe
fuente
¿Cómo lo editas?
user151019
Acabo de abrir el archivo en TextEdit y agrego algo de texto. Acabo de cortar y copiar un bloque una y otra y otra vez. En Finder, 'A.txt' ahora tiene un tamaño diferente que 'b.txt', lo que significa que de hecho apuntan a dos archivos (de datos) diferentes en el disco.
Mark A. Donohoe
Curioso. Acabo de probar esto usando vi para editar los archivos y el enlace persistió. Con TextEdit, como observas, se rompe.
borrible el
2
Considere editar su pregunta, dado que sus suposiciones estaban equivocadas.
Daniel Beck
Las respuestas muestran claramente que los enlaces duros están, de hecho, funcionando; El título sugiere lo contrario. Es solo el comportamiento de reemplazo de archivos de las aplicaciones de OS X lo que elimina los enlaces duros, lo cual es un problema completamente diferente.
Daniel Beck

Respuestas:

14

La razón de este comportamiento es bastante sencilla y se relaciona con la forma en que se guardan los archivos en la mayoría de las aplicaciones de Mac OS X: Atómicamente.

Lo que sucede es que una copia del archivo se escribe en un área de almacenamiento temporal y luego se mueve para reemplazar el archivo original.

Esto, naturalmente, rompe los enlaces duros.

Williham Totland
fuente
Sí ... parece ser cualquier aplicación de OS X que utiliza el enfoque basado en documentos de Cocoa. Eso realmente apesta! Voy a ver si puedo usar enlaces suaves (alias) en su lugar. Sin embargo, no estoy seguro porque estoy editando un DefaultKeyBinding.dict que usa el sistema. Esperemos que sea lo suficientemente inteligente como para seguir el enlace. ¡Ya veremos!
Mark A. Donohoe
Tan verdadero. Esta es también la razón por la cual editar archivos de configuración del sistema Unix-y es una molestia en los editores de la GUI de OS X y es mucho más fácil de lograr vi: no es suficiente establecer permisos de escritura en el archivo, ¡también necesita la carpeta!
Daniel Beck
Por cierto, los enlaces suaves no funcionan, así que supongo que volví a las secuencias de comandos después de guardar en todos los lugares donde necesito esto. Stinx!
Mark A. Donohoe
@MarqueIV: los enlaces simbólicos podrían funcionar.
Williham Totland
a eso me refería. Tengo el término equivocado. Específicamente es para las asociaciones de teclas de OS X. Espera que el archivo real esté en una ubicación específica y no funciona con enlaces simbólicos. Sin embargo, funciona con enlaces duros, como se indicó, ya que el editor está basado en documentos de Cocoa, no puedo editar el archivo sin romper los enlaces, por lo que parece que tengo que recurrir a la copia manual (o al restablecimiento arriba los enlaces duros) después de editar el documento. No es óptimo, pero nada que un script rápido no solucione.
Mark A. Donohoe
3

Si aparece, vea esta entrada del superusuario , que esta es una característica de TextEdit. Por lo tanto, el método normal para crear enlaces duros es correcto, pero TextEdit se comporta de manera que se rompa esto. (El enlace dice que crea un nuevo archivo y luego lo mueve sobre el archivo anterior después de editarlo).

borrible
fuente
Sí ... acabo de ver eso en SU ​​justo cuando publicaste esto. Tampoco es solo TextEdit. Parece que son todas las aplicaciones basadas en documentos. Apesta porque esto significa que no puedo usar herramientas basadas en documentos para editar archivos vinculados.
Mark A. Donohoe
no es solo TextEdit, sino todas las aplicaciones basadas en Cocoa que usan la arquitectura de documentos, lo que la mayoría usa.
Mark A. Donohoe
2

Tenga en cuenta que emacs también exhibe este comportamiento (¡sorprendente!) De forma predeterminada (en todos los unixes), aunque la causa es ligeramente diferente (es lo "seguro" en situaciones de muy poco espacio en disco). Sin embargo, se puede configurar de varias maneras.

Consulte la documentación para make-backup-files(uso C-h v make-backup-files) y para

  • backup-by-coping
  • backup-by-coping-when-linked
  • backup-by-coping-when-mismatch
  • backup-by-coping-when-privileged-mismatch
dmckee --- gatito ex moderador
fuente