files – ¿Cómo evitar que Emacs rompa enlaces duros?

Pregunta:

Digamos que tengo dos archivos file1 y file2 :

$ echo aaa >file1
$ ln file1 file2

Luego verifico que los inodos son los mismos:

$ ls -i
18749779 file1  18749779 file2

lo que muestra que los dos archivos son realmente iguales. Ahora edito file1 en Emacs y agrego una línea con, por ejemplo, el texto bbb , lo bbb y salgo de Emacs.

Ahora obtengo:

$ ls -i
18749781 file1  18749779 file2
$ cat file1
aaa
bbb
$ cat file2
aaa

Entonces el vínculo duro está roto. Tenga en cuenta que esto no sucede cuando edito el archivo en vim , o si simplemente hago echo bbb >>file1 ..

¿Cómo puedo evitar que Emacs rompa enlaces duros?

Actualizar:

Tenga en cuenta que tengo

(require 'backup-dir)
(setq bkup-backup-directory-info
      '((t  "~/.emacs-backups/" ok-create full-path )))

en mi archivo de inicio ~/.emacs . Si edito file1 usando emacs -Q file1 lugar, obtengo un archivo llamado file1~ en el directorio actual que se vincula al file2 (tiene el mismo inodo) pero el file1~ no ha sido modificado (por lo que es idéntico al file1 ) .. Esto no es lo que deseo. Me gustaría que tanto el file1 como el file2 fueran el mismo archivo e incluyeran el contenido del archivo actualizado.

Respuesta:

@Hakon resolvió su propio problema con:

(setq backup-by-copying t)

Si prefiere conservar el comportamiento predeterminado y usar la back-up-by-copying solo para archivos vinculados de forma rígida, puede usar esto en su lugar (y dejar la backup-by-copying configurada en nil ):

(setq backup-by-copying-when-linked t)

Además, como lo señaló @Harald, puede configurar la back-up-by-copying como una variable local de archivo, para activar esta función solo para archivos individuales.

La explicación de este comportamiento del manual de Emacs:

Los archivos de respaldo se pueden hacer copiando el archivo antiguo o renombrándolo. Esto marca la diferencia cuando el archivo antiguo tiene varios nombres (vínculos físicos). Si se cambia el nombre del archivo antiguo al archivo de copia de seguridad, los nombres alternativos se convertirán en nombres para el archivo de copia de seguridad. Si, en cambio, se copia el archivo antiguo, los nombres alternativos seguirán siendo nombres para el archivo que está editando, y los contenidos a los que se acceda mediante esos nombres serán los nuevos contenidos.

Consulte la página vinculada para obtener más información.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım