텍스트 편집기가 변경 사항 없이 저장 시 수정 시간을 설정하는 이유는 무엇입니까?

텍스트 편집기가 변경 사항 없이 저장 시 수정 시간을 설정하는 이유는 무엇입니까?

Sublime을 사용하고 변경 사항이 없으면 편집기의 아이콘에 파일이 변경되지 않은 것으로 표시됩니다.

그러나 저장을 클릭하면 여전히 파일 시스템 mtime 시간이 지금으로 설정됩니다.

불변 저장이 실제로 "수정된" 시간을 업데이트해야 합니까?


간단한 예:

빈 파일 만들기

$ touch example.file
$ stat -l example.file 
-rw-r--r-- 1 matthew staff 0 Jul  9 14:45:41 2013 example.file

터치하면 mtime이 업데이트됩니다.

$ touch example.file
$ stat -l example.file
-rw-r--r-- 1 matthew staff 0 Jul  9 14:45:57 2013 example.file

변경하지 않고 편집하면 mtime도 업데이트됩니다.

$ vim example.file
# :wq # write and quit, making no changes
$ stat -l example.file
-rw-r--r-- 1 matthew staff 0 Jul  9 14:46:10 2013 example.file

답변1

불변 저장이 실제로 "수정된" 시간을 업데이트해야 합니까?

예, 애플리케이션이 파일을 쓸 때 운영 체제가 해당 데이터를 디스크에 쓰기 때문입니다. 이미 파일에 있는 데이터와 정확히 동일할 수 있지만 운영 체제는 이것이 사실인지 확인하거나 신경 쓰지 않습니다. 물론 텍스트 편집기는 각 저장에 대해 전체 파일을 순진하게 작성하지 않기를 바랍니다. 왜냐하면 저는 매우 자주 저장하고 무의미하게 디스크를 마모시키고 싶지 않기 때문입니다(아마도 OS의 파일 캐싱 및 동기화가 이 문제를 개선할 수 있으므로 프로그램이 승리했습니다). 걱정할 필요가 없습니다).

많은 애플리케이션(vim 포함)은 자신이 로드하는 파일이 외부에서 변경되면 이를 인지하고 사용자에게 알립니다. 나는 그들이 mtime을 기반으로 이 작업을 수행하고 있다고 생각했지만 빠른 확인을 통해 touch적어도 vim의 경우에는 상황이 그렇게 간단하지 않다는 것을 보여줍니다(vim이 변경이 이루어졌다는 것을 어떻게 아는지에 대한 질문을 요청합니다. 변경됨) 두 버전 해시를 비교합니까? ). 내 요점은 응용 프로그램이 파일의 외부 변경 사항을 모니터링하는 경우 전체 파일을 다시 쓰지 않고도 변경 사항을 안전하게 저장할 수 있어야 한다는 것입니다. 이 경우 변경되지 않은 파일을 저장하면 아무 작업도 수행하지 않는 것으로 생각할 수 있습니다. 그러나 사용자가 저장을 요청하기 때문에(사용자가 필요한지 알고 있거나 알 수 있는 경우에도) 이를 반영하려면 응용 프로그램이 최소한 파일을 터치해야 하는 것 같습니다. 예를 들어 다음과 같은 경우에는 가치가 있을 수 있습니다. 이 업데이트가 의미가 없더라도 마지막 업데이트를 반영하기 위해 타임스탬프에 의존하고 있습니다.

결국, 만약 당신이아니요타임스탬프를 변경하려는 경우 변경되지 않은 문서를 저장할 필요가 없습니다.

관련 정보