O link físico não funciona no Mac OS X no modo GUI

5

Eu enfrentei um comportamento um pouco estranho ao usar links físicos. Do Terminal, eu crio um arquivo de texto 1.txt e um link duro "para este arquivo"

nano 1.txt
mkdir dir
ln 1.txt ./dir/

Verifico o link físico resultante e vejo que seu conteúdo é o mesmo do arquivo original.

less ./dir/1.txt

Eu mudo o arquivo inicial ...

nano 1.txt

... e veja, que as alterações foram refletidas no link físico

less ./dir/1.txt

Eu altero o conteúdo do link físico (mais correto, é claro - arquivo, sendo referenciado com hard-link) ...

nano ./dir/1.txt

... e veja, que as alterações são refletidas no arquivo inicial

less 1.txt

Até agora, tudo corre bem ...

Agora, fecho o Terminal e começo a reproduzir arquivos criados (1.txt e ./dir/1.txt) no Finder. Quando eu mudo nesses dois arquivos com o TextEdit, as alterações não são refletidas em outro arquivo.

O link físico está quebrado agora. O que está acontecendo?

    
por AntonAL 09.05.2010 / 17:30

1 resposta

14

Não é sobre a GUI, é especificamente sobre a estratégia de TextEdit para salvar alterações: ele não escreve no lugar no arquivo existente, mas primeiro escreve um novo, e quando isso é concluído, remove o antigo um e renomeia o novo para os nomes do antigo. Muitos editores (programas que conceitualmente alteram um arquivo "in loco"), GUI ou não, usam essa estratégia para fins de segurança (você não perderá as versões novas e antigas se houver uma falha em um momento muito infeliz exatamente quando a escrita está ocorrendo), mas como você notou, "quebra" os hard links.

Um exemplo de um programa editor não interativo e não-GUI com esse comportamento é perl com a opção de linha de comando -i ("edições locais") ...:

$ touch za.txt
$ ln za.txt zo.txt
$ echo ciao >za.txt
$ cat zo.txt 
ciao
$ perl -i -p -e 's/a/b/' zo.txt
$ cat zo.txt
cibo
$ cat za.txt
ciao
    
por 09.05.2010 / 17:35