web-development-kb-pt.site

Qual é a diferença entre modify e change no contexto do comando stat?

A página de manual do comando stat diz:

   %x     Time of last access
   %y     Time of last modification
   %z     Time of last change

Não consigo entender a diferença entre modificar e alterar. Entendo que as palavras são sinônimos (inglês não é minha língua nativa), mas a saída delas é diferente.

Eu tentei o seguinte comando

stat --printf="Change %z\nAccess %x\nModify %y\n" p.txt

Agora, quando abro p.txt, o tempo de acesso é alterado, entro no modo de inserção, edito o arquivo, modifico e o tempo de alteração permanece o mesmo.

Alterar 2010-10-06 12: 48: 39.286252389 +0500 
 Acesse 2010-10-06 12:49:14.962243456 +0500 
 Modifique 2010-10-06 12: 48: 39.234498878 +0500 

Quando escrevo as alterações no arquivo :w, modifique e mude, ambos mudam, mas fornecem valores diferentes.

Alterar 2010-10-06 12:51:21.949082169 +0500 
 Acesse 2010-10-06 12: 51: 21.908246082 +0500 
 Modifique 2010-10-06 12:51:21.908246082 +0500 

Então, quais são os significados de "modificar" e "mudar" neste contexto? Ou seja, o tempo de modificação e mudança fornece tempo para quais eventos?

Obrigado

137
Andrew-Dufresne

Isso já foi respondido em esta pergunta , que cito (texto original de echox ):

Existem 3 tipos de "timestamps":

  • Acesso - a última vez que o arquivo foi lido
  • Modificar - a última vez que o arquivo foi modificado (o conteúdo foi modificado)
  • Alterar - a última vez que os metadados do arquivo foram alterados (por exemplo, permissões)

Esta publicação no StackOverflow explica a diferença entre os três momentos diferentes do ponto de vista da interface de programação.

154
Riccardo Murri