내 질문은 컴퓨터 과학에 관한 질문이라기보다는 어원에 관한 질문입니다.
이 명령은 touch
파일 액세스 및 수정 시간을 변경합니다.
"터치하다"은(는) 무슨 뜻인가요?
답변1
하지만 사실은 그렇지 않아요대표하다그것은 약어나 두문자어가 아닙니다. 이것은 동사입니다.
파일을 생성 하면 touch
"파일에 새 지문을 추가"하고 마지막 수정 날짜를 업데이트합니다(아직 존재하지 않는 경우 생성합니다).
답변2
DopeGhoti가 말했듯이 타임스탬프를 현재 시간으로 업데이트하는 것은 영어 단어의 의미와 매우 일치합니다. 사람들이 일반적으로 메모리의 데이터를 "접촉"한다는 것은 해당 데이터에 액세스한다는 것을 의미합니다(예: "이 기능이 2GB의 데이터를 접촉하여 CPU 캐시를 손상시켰습니다"). 이 touch(1)
명령은 메타데이터에 영향을 미치고 다른 효과는 없는 방식으로 파일을 터치하기 위해 존재합니다.
또한 시간/날짜 메타데이터를 현재 시간이 아닌 다른 것으로 설정하는 옵션도 있습니다. 이 경우 의미론적 의미는 더 이상 실제로 적용되지 않습니다. (예를 들어 touch -r reference_file /tmp/foo
mtime과 atime을 참조와 동일하게 설정합니다.)
다소 관련됨:
궁금한 점이 있는 경우 GNU coreutils touch(1)
구현은 다음과 같은 시스템 호출 시퀀스를 사용하여 타임스탬프를 현재 시간으로 업데이트합니다.
$ strace touch /tmp/foo
...
open("/tmp/foo", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3
dup2(3, 0) = 0
close(3) = 0
open
with는 O_CREAT
누락된 경우 생성 동작을 구현합니다. 생략하면 O_TRUNC
기존 콘텐츠가 그대로 보존됩니다 >> /tmp/foo
. dup2
세 개의 mtime, atime 및 ctime을 모두 현재 시간으로 업데이트합니다. ( open()
/ 만 close()
타임스탬프에는 영향을 주지 않습니다).
시간을 "지금"이 아닌 다른 시간으로 설정하려면 동일한 순서를 수행한 다음 다음을 사용합니다.utimensat(0, NULL, ...)
stdout이 참조하는 파일의 시간을 설정합니다(파일의 fd를 fd0에 복사하기 때문입니다).