Modifica di file con collegamenti software in UNIX


3

Diciamo che ho il file A, e usando 'ln -s A B', ho B.

Quando apro, modifica e salvi B, ora B non è più un link simbolico. È solo una nuova copia di A.

  • Questo comportamento è previsto? Uso Mac OS X e mi chiedo che sia comune in UNIX.
  • In questo caso, c'è un modo per mantenere B come (collegamento soft) ad A? Oppure, rendere B come l'hard link sarebbe l'unico modo per risolvere questo problema?
  • Qual è il vantaggio dell'utilizzo di soft link rispetto a hard link?

AGGIUNTO

L'editor che uso è "TextMate" su Mac.


Che editor stai usando?
Jason Axelson

Segnala un bug nell'editor - non un buon comportamento.
Jonathan Leffler

Risposte:


6

Ciò accade quando l'editor salva in un file temporaneo, rimuove l'originale, quindi rinomina il file temporaneo. Non tutti gli editori seguono questo comportamento, ma la maggior parte lo fa per ragioni di affidabilità. E renderlo un hard link non aiuterà poiché il link verrebbe cancellato a prescindere.


Se l'editor in questione è emacs, il comportamento può essere disattivato, ma lo fa per una buona ragione e dovresti pensare prima di cancellarlo.
dmckee

1
Lo faccio sempre con VIM e i collegamenti non si rompono.
Nathan Fellman

@Nathan, come ha affermato Ignacio, non tutti gli editori seguono questo comportamento. vim no.
matthias krull

@mugen: lo so. Non stavo cercando di contraddirlo, ma piuttosto di suggerire un editor che funzioni bene con i link.
Nathan Fellman

@Nathan: vim di solito segue il metodo descritto da Ignacio (che riduce il danno potenziale se succede qualcosa di brutto durante il salvataggio del file, come un disco completo o un'interruzione dell'alimentazione: questo metodo garantisce che avrai almeno il vecchio o il nuovo versione del file e la modifica è atomica). Ma quando calcola che questo metodo avrebbe effetti collaterali negativi (link simbolico, file con hard link, directory non scrivibile, ...), vim modifica direttamente il file.
Gilles
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.