por que o valor do inode muda quando editamos no editor "vi"?


22

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

Respostas:


18

Provavelmente, você ativou a opção de backup e copie o backup para "não" ou "breakhardlink".


como remover essa opção
Monu

2
@monu, edite o seu ~/.vimrc. Essas não são as configurações padrão.
Cjm 15/04

@cjm Com o VIM 7.4, eu não tinha nenhuma string backupno meu .vimrc, mas o inode ainda estava mudando, porque o padrão é fazer backup do arquivo atual, excluído posteriormente e / / sempre que possível * / renomear o arquivo / * para o backup * / e gravar o novo / * com o mesmo nome, alterando efetivamente o inode * / . Resolvido adicionando set backupcopy=yesa .vimrc.
precisa saber é o seguinte

27

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 local. Isso não usa espaço extra e conserva os links físicos, permissões e qualquer outro atributo além do conteúdo do arquivo existente. A principal desvantagem de fazer isso é que, se algo acontecer enquanto o arquivo está sendo gravado (o aplicativo trava ou a energia acaba), 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 no lugar. Isso usa mais espaço e quebra os 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 poderá fazê-lo. Por outro lado, a versão antiga do arquivo é substituída atomicamente 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 Vim ou Emacs podem escolher entre os dois métodos. Quando eles usam o primeiro método, normalmente fazem primeiro um arquivo de backup, que pode ser recuperado se o novo conteúdo do arquivo não puder ser gravado corretamente.

O vi clássico substitui o arquivo no lugar. Portanto, o inode é inalterado.

Em Vim, como CJM já declarou , a escolha é controlada pelos backup, backupcopye writebackupopções. 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ê deseja reutilizar o inode existente (e, assim, arriscar perder dados ou perder mais tempo fazendo uma cópia de backup), adicione set backupcopy yesao seu .vimrc.


+1 Para mencionar writebackupporque eu já desliguei backupe o backupcopyinode ainda estava mudando.
Alireza Mohamadi 27/09
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.