por que o valor inode muda quando editamos no editor “vi”?

19

Quando edito um arquivo no editor "vi", o valor de inode do arquivo está mudando. Mas quando editado com o comando cat, o valor do inode não está mudando.

    
por monu 15.04.2012 / 12:23

2 respostas

17

Provavelmente, você definiu a opção backup e backupcopy para" no "ou" breakhardlink ".

    
por 15.04.2012 / 12:41
19

Quando você deseja modificar um arquivo, você tem duas opções, cada uma com seus benefícios e desvantagens.

  • Você pode substituir o arquivo no lugar. Isso não usa nenhum espaço extra e conserva os hard links, permissões e qualquer outro atributo além do conteúdo do arquivo existente. A principal desvantagem de fazer isso é que, se acontecer alguma coisa enquanto o arquivo estiver sendo gravado (o aplicativo falha ou a energia é desligada), você acaba com um arquivo parcialmente gravado.
  • Você pode gravar a nova versão do arquivo em um novo arquivo com um nome diferente e movê-lo para o lugar. Isso usa mais espaço e quebra links físicos e, se você tiver permissões de gravação em um arquivo, mas não no diretório que ele contém, não será possível fazer isso. Por outro lado, a versão antiga do arquivo é atomicamente substituída pela nova versão, portanto, a cada momento, o nome do arquivo aponta para uma versão completa e válida do arquivo.

Editores avançados, como o Vim ou o Emacs, podem escolher entre os dois métodos. Quando usam o primeiro método, normalmente criam um arquivo de backup primeiro, que pode ser recuperado se o novo conteúdo do arquivo não puder ser gravado corretamente.

O vi clássico sobrescreve o arquivo no lugar. Então o inode é inalterado.

No Vim, Como o cjm já declarou , a escolha é controlada pelo backup , backupcopy e writebackup . Por padrão, o Vim renomeia o arquivo antigo e grava um novo arquivo com o nome original, se achar que pode recriar os atributos do arquivo original. Se você quiser reutilizar o inode existente (e arriscar perder dados, ou perder mais tempo fazendo uma cópia de backup), adicione set backupcopy yes ao seu .vimrc .

    
por 24.04.2012 / 02:54