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이 변경이 이루어졌다는 것을 어떻게 아는지에 대한 질문을 요청합니다. 변경됨) 두 버전 해시를 비교합니까? ). 내 요점은 응용 프로그램이 파일의 외부 변경 사항을 모니터링하는 경우 전체 파일을 다시 쓰지 않고도 변경 사항을 안전하게 저장할 수 있어야 한다는 것입니다. 이 경우 변경되지 않은 파일을 저장하면 아무 작업도 수행하지 않는 것으로 생각할 수 있습니다. 그러나 사용자가 저장을 요청하기 때문에(사용자가 필요한지 알고 있거나 알 수 있는 경우에도) 이를 반영하려면 응용 프로그램이 최소한 파일을 터치해야 하는 것 같습니다. 예를 들어 다음과 같은 경우에는 가치가 있을 수 있습니다. 이 업데이트가 의미가 없더라도 마지막 업데이트를 반영하기 위해 타임스탬프에 의존하고 있습니다.
결국, 만약 당신이아니요타임스탬프를 변경하려는 경우 변경되지 않은 문서를 저장할 필요가 없습니다.