WIPIVERSE

touch (유닉스)

정의
touch는 유닉스 및 유닉스 계열 운영체제에서 제공되는 표준 명령어로, 파일의 접근 시간(atime)과 수정 시간(mtime)을 현재 시각으로 업데이트하거나, 지정된 시간으로 변경한다. 대상 파일이 존재하지 않을 경우 빈 파일을 새로 생성한다.

역사 및 표준

  • 최초 구현은 1970년대 초 AT&T UNIX System V에 포함되었다.
  • POSIX.1‑2001 표준(IEEE Std 1003.1)에서 touch 명령을 정의하고 있으며, 이후 POSIX.1‑2008 및 POSIX.1‑2017에서도 지속적으로 명세가 유지되고 있다.
  • GNU coreutils, BSD, macOS, BusyBox 등 다양한 유닉스 계열 시스템에서 touch를 구현하고 있다.

기본 구문

touch [옵션] 파일명...

주요 옵션

옵션 설명
-a 접근 시간(atime)만 현재 시각으로 업데이트한다.
-m 수정 시간(mtime)만 현재 시각으로 업데이트한다.
-c, --no-create 파일이 존재하지 않을 경우 새 파일을 생성하지 않는다.
-d DATE, --date=DATE DATE 문자열(예: "2023-04-01 12:34:56")으로 시간을 지정한다.
-t STAMP, --touch=STAMP [[CC]YY]MMDDhhmm[.ss] 형식의 타임스탬프를 지정한다.
-r REFERENCE, --reference=REFERENCE REFERENCE 파일의 타임스탬프를 그대로 사용한다.
--help 사용법을 출력한다.
--version 프로그램 버전을 출력한다.

작동 방식

  1. 파일이 존재하면 커널의 utimes(2) 혹은 utimensat(2) 시스템 호출을 이용해 파일 메타데이터에 기록된 시간 값을 수정한다.
  2. 파일이 존재하지 않고 -c 옵션이 지정되지 않은 경우, open(2) 시스템 호출을 O_CREAT 플래그와 함께 사용해 새 파일을 생성한다. 파일 내용은 0바이트이며, 권한은 umask에 따라 결정된다.

예시

  • 현재 시각으로 파일 example.txt의 타임스탬프를 업데이트하고 파일이 없으면 생성한다.

    touch example.txt
    
  • 파일 log.txt의 수정 시간만 현재 시각으로 갱신한다.

    touch -m log.txt
    
  • 2022-12-31 23:59:59 로 파일 old.txt의 모든 타임스탬프를 설정한다.

    touch -d "2022-12-31 23:59:59" old.txt
    
  • reference.dat 파일의 타임스탬프를 report.pdf에 복사한다.

    touch -r reference.dat report.pdf
    

주의 사항

  • 파일의 소유자가 아닌 경우, 파일 접근 권한에 따라 타임스탬프 변경이 제한될 수 있다.
  • -c 옵션을 사용하지 않으면 파일이 존재하지 않을 때 자동으로 빈 파일이 생성되므로, 의도치 않은 파일 생성을 방지하려면 옵션을 명시적으로 지정한다.

관련 명령

  • stat : 파일의 상세 메타데이터(특히 타임스탬프)를 확인한다.
  • chmod, chown : 파일 권한 및 소유자를 변경한다.

참고

둘러보기

더 찾아볼 만한 주제

    전체 문서 보기