본문 바로가기
IT/리눅스 명령어

리눅스 touch 명령어, touch 옵션 총정리 리눅스 파일 만들기

by 꾸꾸웍스 2022. 3. 30.
반응형

리눅스 touch 명령어는 리눅스 파일 생성을 할 수 있는 명령어입니다. linux touch 명령어에 사용할 수 있는 모든 옵션에 대한 설명과 옵션 사용 예시를 알아보고 linux touch 규칙 사항과 touch 옵션 사용 시 atime, ctime, mtime의 관계에 대해 알아보겠습니다.

반응형
목차

1. 리눅스 touch 명령어란???
2. 리눅스 touch 명령어 사용법
3. 리눅스 touch atime, ctime, mtime 설명
4. 리눅스 touch 명령어 규칙 및 주의 사항
5. 리눅스 touch 옵션 총정리
6. 리눅스 touch 옵션 사용 예시

 

리눅스 touch 명령어란?

리눅스 touch 명령어는 리눅스 기본 명령어로 리눅스에서 파일을 생성하는 명령어입니다. touch 명령어를 옵션 없이 사용 시 아무런 내용이 없는 빈 파일로 생성이 되고 파일의 접근시간과 수정시간을 현재시간으로 업데이트합니다. 또한 touch -c 옵션과 touch -h옵션을 사용하지 않는 한 용량이 0 인 비어있는 파일을 생성합니다.

 

리눅스 touch 명령어 사용법

touch [옵션] [파일 이름]

 

리눅스 touch atime, ctime, mtime 설명

atime (File Access Time)

  • '액세스 시간'으로 파일에 마지막 접근한 시간을 의미합니다.
  • 에디터 프로그램 또는 명령어로 단순히 read를 하였다면 atime 변경됩니다.
    • cat, head, tail, sort, grep 등.. 

ctime (File Change Time)

  • '변경 시간'으로 inode 변경이 된 행동을 했을 때 ctime이 변경됩니다.
  • 파일 퍼미션 변경, 소유자 변경, 하드 링크 생성, 삭제 등.. 각종 속성 값이 변경된 시점에 ctime이 기록됩니다.
  • touch 명령어로 ctime을 변경할 수 없습니다.

mtime (File Modify Time)

  • '수정시간'으로 마지막 변경 시간을 의미하며 파일 내용이 수정되면 변경됩니다.
  • echo 명령어나 cat 명령어로 리다이렉션을 이용해 파일을 덮어쓰면 변경됩니다.
  • 파일의 데이터를 수정하는 것은 파일 속성 중 하나이므로 ctime값은 함께 변하게 됩니다.
    • ctime이 mtime보다 포괄적인 개념으로 볼 수 있습니다.

 

touch 명령어 규칙 및 주의 사항

touch 명령어의 -d 옵션과 -t옵션 사용 시 날짜 형식을 다르게 설정해줘야 됩니다.

### -d 옵션의 날짜 형식
사용 예시) touch -d [YYYY-MM-DD hh:mm:ss] [파일 이름]        
사용 방법) touch -d '2022-01-01 13:01:03' test1            

### -t 옵션의 날짜 형식
사용 예시) touch -t [[CC]YY]MMDDhhmm[.ss] [파일 이름]
사용 방법) touch -t 202201011301.03 test1

 

파일 생성 규칙 사항 참고

touch 명령어를 이용해 빈 파일을 생성할 시 파일 이름 규칙 사항은 아래 링크의 '3. mkdir 명령어 규칙 사항'을 참고하세요.

파일 및 디렉토리 생성 규칙 사항
 

[꾸꾸웍스] 리눅스(Linux) mkdir 명령어, 디렉토리 만들기

[꾸꾸웍스] 리눅스(Linux) mkdir 명령어, 디렉토리 만들기 1. mkdir 명령어란?? mkdir은 Make Directory의 줄임말로 리눅스에서 디렉토리를 생성할때 사용하는 명령어입니다. umask값을 통해 디렉토리를

rhrhth23.tistory.com

여러 파일 생성 가능

리눅스 touch 명령어는 한 번에 여러 개의 파일을 만들 수 있습니다.

[ server 2022-03-30 14:39:28 ] ~/blog
user@server # touch apple

[ server 2022-03-30 14:39:59 ] ~/blog
user@server # ls -l
total 0
-rw-r--r-- 1 user user    0 Mar 30 14:39 apple

[ server 2022-03-30 14:41:28 ] ~/blog
user@server # touch apple1 apple2 apple3 apple4

[ server 2022-03-30 14:41:36 ] ~/blog
user@server # ls -l
total 0
-rw-r--r-- 1 user user 0 Mar 30 14:41 apple
-rw-r--r-- 1 user user 0 Mar 30 14:41 apple1
-rw-r--r-- 1 user user 0 Mar 30 14:41 apple2
-rw-r--r-- 1 user user 0 Mar 30 14:41 apple3
-rw-r--r-- 1 user user 0 Mar 30 14:41 apple4

 

리눅스 touch 옵션 총정리

번호 옵션 long 옵션 설명
1 -a - access time (atime)을 현재 시간으로 변경 합니다.
2 -c --no-create 어떠한 파일도 생성하지 않습니다.
3 -d --date=STRING 현재시간 대신에 지정한 시간으로 atime과 mtime을 변경합니다.
4 -f - 사용하지 않는 옵션입니다. (자세한 내용은 아래 참고)
5 -h -no-dereference 심볼릭링크로 참조된 파일 대신 심볼릭 링크에 시간을 변경합니다.
6 -m - modify time (mtime)을 현재 시간으로 변경 합니다.
7 -r --reference=FILE 지정한 파일에 atime과 mtime을 반영합니다.
8 -t - 현재시간 대신에 저장한 시간으로 atime과 mtime을 변경 합니다.
9 - --time=WORD 지정한 time 속성을 현재 시간으로 변경 합니다. (자세한 내용은 아래 참고)
10 - --help touch 명령어의 사용법을 출력합니다.
11 - --version touch 명령어의 버전을 출력합니다.

touch -f 옵션의 추가 설명

  • --help 사용하여 나온 출력 또는 맨 페이지에서 나온 '(ignored)'의 문구는 이 프로그램이 옵션을 허용하지 않겠다는 의미입니다. 구문 오류는 발생하지 않지만 아무런 영향을 미치지 않습니다.
  • 이 프로그램은 초기 릴리스 이후 무시되도록 설정되었으며 이전 버전과 호환성을 위해 수행될 뿐입니다.

touch --time=WORD 옵션의 추가 설명

  • WORD는 atime과 mtime으로 사용됩니다.
  • atime은 atime, access, use로 사용할 수 있습니다.
  • mtime은 mtime, modify로 사용할 수 있습니다.
300x250

 

touch 옵션 사용 예시

touch -a 옵션

-a 옵션을 사용하여 atime을 변경할 수 있습니다. 아래는 touch -a 옵션에 대한 설명입니다.

[ server 2022-03-30 11:13:05 ] ~/blog
user@server # ll
total 4
-rwxrwxr-x 1 user user 397 Mar 22 11:36 test.sh

[ server 2022-03-30 11:13:06 ] ~/blog
user@server # stat test.sh
  File: ‘test.sh’
  Size: 397             Blocks: 8          IO Block: 4096   regular file
Device: 804h/2052d      Inode: 51768979    Links: 1
Access: (0775/-rwxrwxr-x)  Uid: ( 5003/  user)   Gid: ( 5000/     user)
Access: 2022-03-23 17:07:38.847581708 +0900
Modify: 2022-03-22 11:36:33.160607071 +0900
Change: 2022-03-30 11:13:04.284782316 +0900
 Birth: -

[ server 2022-03-30 11:13:08 ] ~/blog
user@server # touch -a test.sh

[ server 2022-03-30 11:13:33 ] ~/blog
user@server # stat test.sh
  File: ‘test.sh’
  Size: 397             Blocks: 8          IO Block: 4096   regular file
Device: 804h/2052d      Inode: 51768979    Links: 1
Access: (0775/-rwxrwxr-x)  Uid: ( 5003/  user)   Gid: ( 5000/     user)
Access: 2022-03-30 11:13:33.389119178 +0900
Modify: 2022-03-22 11:36:33.160607071 +0900
Change: 2022-03-30 11:13:33.389119178 +0900
 Birth: -

touch -c 옵션 --no-create 옵션

-c 옵션 사용 시 어떠한 파일도 생성하지 않습니다. 아래는 touch -c 옵션 사용 예시 설명입니다.

### 지정한 파일이름에 대한 파일이 존재하지 않는다면 파일 생성을 하지 않습니다.

[ server 2022-03-30 11:30:25 ] ~/blog
user@server # ll
total 4
-rw-r--r-- 1 user user   0 Mar 30 11:29 test1
-rwxrwxr-x 1 user user 397 Mar 22 11:36 test.sh

[ server 2022-03-30 11:30:28 ] ~/blog
user@server # touch -c test2

[ server 2022-03-30 11:30:32 ] ~/blog
user@server # ll
total 4
-rw-r--r-- 1 user user   0 Mar 30 11:29 test1
-rwxrwxr-x 1 user user 397 Mar 22 11:36 test.sh


### 지정한 파일이름에 대한 파일이 존재한다면 atime과 mtime시간을 현재시간으로 변경합니다.
[ server 2022-03-30 15:34:51 ] ~/blog
user@server # stat test2
  File: ‘test2’
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 804h/2052d      Inode: 51768980    Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 5003/  user)   Gid: ( 5000/     user)
Access: 2022-03-30 13:07:32.768505625 +0900
Modify: 2022-03-30 12:35:42.019572834 +0900
Change: 2022-03-30 12:35:42.019572834 +0900
 Birth: -

[ server 2022-03-30 15:34:54 ] ~/blog
user@server # touch -c test2

[ server 2022-03-30 15:35:03 ] ~/blog
user@server # stat test2
  File: ‘test2’
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 804h/2052d      Inode: 51768980    Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 5003/  user)   Gid: ( 5000/     user)
Access: 2022-03-30 15:35:03.315202694 +0900
Modify: 2022-03-30 15:35:03.315202694 +0900
Change: 2022-03-30 15:35:03.315202694 +0900
 Birth: -

touch -d 옵션 --date=STRING 옵션

-d 옵션을 이용하여 지정한 시간으로 변경할 수 있습니다(atime, mtime 변경). 아래 내용은 touch -d 옵션에 대한 설명입니다.

  • -m 또는 -a 옵션을 같이 사용할 수 있습니다.
[ server 2022-03-30 12:16:07 ] ~/blog
user@server # stat test1
  File: ‘test1’
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 804h/2052d      Inode: 51768981    Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 5003/  user)   Gid: ( 5000/     user)
Access: 2022-03-30 11:29:55.165927347 +0900
Modify: 2022-03-30 11:31:25.984215520 +0900
Change: 2022-03-30 11:31:25.984215520 +0900
 Birth: -

[ server 2022-03-30 12:16:54 ] ~/blog
user@server # touch -d '2020-01-01 01:02:03' test1

[ server 2022-03-30 12:18:12 ] ~/blog
user@server # stat test1
  File: ‘test1’
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 804h/2052d      Inode: 51768981    Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 5003/  user)   Gid: ( 5000/     user)
Access: 2020-01-01 01:02:03.000000000 +0900
Modify: 2020-01-01 01:02:03.000000000 +0900
Change: 2022-03-30 12:18:12.101764520 +0900
 Birth: -

touch -h 옵션 --no-dereference 옵션

-h 옵션을 이용하여 심볼릭 링크에 atime과 mtime 변경할 수 있습니다. 아래 내용은 touch -h 옵션 사용 예시입니다.

[ server 2022-03-30 12:42:47 ] ~/blog
user@server # ln -s test1 symvolic_test4

[ server 2022-03-30 12:43:16 ] ~/blog
user@server # ll
total 4
lrwxrwxrwx 1 user user    5 Mar 30 12:43 symvolic_test4 -> test1
-rw-r--r-- 1 user user    0 Mar 30 12:35 test1
-rw-r--r-- 1 user user    0 Mar 30 12:35 test2
-rw-r--r-- 1 root   root   0 Jan  2 03:04 test3
-rwxrwxr-x 1 user user  397 Mar 30 11:31 test.sh

[ server 2022-03-30 12:43:17 ] ~/blog
user@server # stat symvolic_test4
  File: ‘symvolic_test4’ -> ‘test1’
  Size: 5               Blocks: 0          IO Block: 4096   symbolic link
Device: 804h/2052d      Inode: 51768983    Links: 1
Access: (0777/lrwxrwxrwx)  Uid: ( 5003/  user)   Gid: ( 5000/     user)
Access: 2022-03-30 12:43:17.512999421 +0900
Modify: 2022-03-30 12:43:16.544921895 +0900
Change: 2022-03-30 12:43:16.544921895 +0900
 Birth: -

[ server 2022-03-30 12:43:33 ] ~/blog
user@server # stat test1
  File: ‘test1’
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 804h/2052d      Inode: 51768981    Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 5003/  user)   Gid: ( 5000/     user)
Access: 2022-03-30 12:35:27.456409903 +0900
Modify: 2022-03-30 12:35:27.456409903 +0900
Change: 2022-03-30 12:35:27.456409903 +0900
 Birth: -

[ server 2022-03-30 12:43:39 ] ~/blog
user@server # touch -h symvolic_test4

[ server 2022-03-30 12:44:14 ] ~/blog
user@server # stat symvolic_test4
  File: ‘symvolic_test4’ -> ‘test1’
  Size: 5               Blocks: 0          IO Block: 4096   symbolic link
Device: 804h/2052d      Inode: 51768983    Links: 1
Access: (0777/lrwxrwxrwx)  Uid: ( 5003/  user)   Gid: ( 5000/     user)
Access: 2022-03-30 12:44:14.398554884 +0900
Modify: 2022-03-30 12:44:14.398554884 +0900
Change: 2022-03-30 12:44:14.398554884 +0900
 Birth: -

[ server 2022-03-30 12:44:18 ] ~/blog
user@server # stat test1
  File: ‘test1’
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 804h/2052d      Inode: 51768981    Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 5003/  user)   Gid: ( 5000/     user)
Access: 2022-03-30 12:35:27.456409903 +0900
Modify: 2022-03-30 12:35:27.456409903 +0900
Change: 2022-03-30 12:35:27.456409903 +0900
 Birth: -

touch -m 옵션

-m 옵션을 이용하여 mtime 변경할 수 있습니다. 아래 내용은 touch -m 옵션 설명에 대한 내용입니다.

[ server 2022-03-30 11:31:11 ] ~/blog
user@server # stat test1
  File: ‘test1’
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 804h/2052d      Inode: 51768981    Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 5003/  user)   Gid: ( 5000/     user)
Access: 2022-03-30 11:29:55.165927347 +0900
Modify: 2022-03-30 11:29:55.165927347 +0900
Change: 2022-03-30 11:29:55.165927347 +0900
 Birth: -

[ server 2022-03-30 11:31:19 ] ~/blog
user@server # touch -m test1

[ server 2022-03-30 11:31:25 ] ~/blog
user@server # stat test1
  File: ‘test1’
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 804h/2052d      Inode: 51768981    Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 5003/  user)   Gid: ( 5000/     user)
Access: 2022-03-30 11:29:55.165927347 +0900
Modify: 2022-03-30 11:31:25.984215520 +0900
Change: 2022-03-30 11:31:25.984215520 +0900
 Birth: -

touch -r 옵션 --reference=FILE 옵션

-r 옵션을 이용하여 지정한 파일에 atime과 mtime 변경할 수 있습니다. 아래 내용은 touch -r 옵션에 대한 설명입니다.

  • $ touch -r A B
    • B의 atime과 mtime이 A의 atime과 mtime으로 변경됩니다.
[ server 2022-03-30 11:37:52 ] ~/blog
user@server # stat test1
  File: ‘test1’
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 804h/2052d      Inode: 51768981    Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 5003/  user)   Gid: ( 5000/     user)
Access: 2022-03-30 11:29:55.165927347 +0900
Modify: 2022-03-30 11:31:25.984215520 +0900
Change: 2022-03-30 11:31:25.984215520 +0900
 Birth: -

[ server 2022-03-30 11:37:56 ] ~/blog
user@server # stat test.sh
  File: ‘test.sh’
  Size: 397             Blocks: 8          IO Block: 4096   regular file
Device: 804h/2052d      Inode: 51768979    Links: 1
Access: (0775/-rwxrwxr-x)  Uid: ( 5003/  user)   Gid: ( 5000/     user)
Access: 2022-03-30 11:13:33.389119178 +0900
Modify: 2022-03-22 11:36:33.160607071 +0900
Change: 2022-03-30 11:13:33.389119178 +0900
 Birth: -

[ server 2022-03-30 11:38:15 ] ~/blog
user@server # touch -r test1 test.sh

[ server 2022-03-30 11:38:38 ] ~/blog
user@server # stat test1
  File: ‘test1’
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 804h/2052d      Inode: 51768981    Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 5003/  user)   Gid: ( 5000/     user)
Access: 2022-03-30 11:29:55.165927347 +0900
Modify: 2022-03-30 11:31:25.984215520 +0900
Change: 2022-03-30 11:31:25.984215520 +0900
 Birth: -

[ server 2022-03-30 11:38:43 ] ~/blog
user@server # stat test.sh
  File: ‘test.sh’
  Size: 397             Blocks: 8          IO Block: 4096   regular file
Device: 804h/2052d      Inode: 51768979    Links: 1
Access: (0775/-rwxrwxr-x)  Uid: ( 5003/  user)   Gid: ( 5000/     user)
Access: 2022-03-30 11:29:55.165927347 +0900
Modify: 2022-03-30 11:31:25.984215520 +0900
Change: 2022-03-30 11:38:37.156813250 +0900
 Birth: -

touch -t 옵션

-t 옵션을 이용하여 지정한 시간으로 변경(atime, mtime 변경)할 수 있습니다. 아래 내용은 touch -t 옵션에 대한 설명입니다.

[ server 2022-03-30 12:19:26 ] ~/blog
user@server # stat test1
  File: ‘test1’
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 804h/2052d      Inode: 51768981    Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 5003/  user)   Gid: ( 5000/     user)
Access: 2020-01-01 01:02:03.000000000 +0900
Modify: 2020-01-01 01:02:03.000000000 +0900
Change: 2022-03-30 12:18:12.101764520 +0900
 Birth: -

[ server 2022-03-30 12:19:29 ] ~/blog
user@server # touch -t 2201020304.05 test1

[ server 2022-03-30 12:19:57 ] ~/blog
user@server # stat test1
  File: ‘test1’
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 804h/2052d      Inode: 51768981    Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 5003/  user)   Gid: ( 5000/     user)
Access: 2022-01-02 03:04:05.000000000 +0900
Modify: 2022-01-02 03:04:05.000000000 +0900
Change: 2022-03-30 12:19:57.849202521 +0900
 Birth: -

touch --time=WORD 옵션

--time=WORD 옵션으로 atime 또는 mtime 시간 변경할 수 있습니다. 아래 예시는 touch --time=WORD 옵션에 대한 설명입니다.

  • atime으로 변경 시 WORD 대신에 atime, access, use를 입력하시면 됩니다.
  • mtime으로 변경 시 WORD 대신에 mtime, modify를 입력하시면 됩니다.
[ server 2022-03-30 12:23:01 ] ~/blog
user@server # stat test1
  File: ‘test1’
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 804h/2052d      Inode: 51768981    Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 5003/  user)   Gid: ( 5000/     user)
Access: 2022-01-02 03:04:05.000000000 +0900
Modify: 2022-01-02 03:04:05.000000000 +0900
Change: 2022-03-30 12:19:57.849202521 +0900
 Birth: -

[ server 2022-03-30 12:23:20 ] ~/blog
user@server # touch --time=atime test1

[ server 2022-03-30 12:23:29 ] ~/blog
user@server # stat test1
  File: ‘test1’
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 804h/2052d      Inode: 51768981    Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 5003/  user)   Gid: ( 5000/     user)
Access: 2022-03-30 12:23:29.511094094 +0900
Modify: 2022-01-02 03:04:05.000000000 +0900
Change: 2022-03-30 12:23:29.511094094 +0900
 Birth: -

[ server 2022-03-30 12:23:31 ] ~/blog
user@server # touch --time=mtime test1

[ server 2022-03-30 12:23:47 ] ~/blog
user@server # stat test1
  File: ‘test1’
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 804h/2052d      Inode: 51768981    Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 5003/  user)   Gid: ( 5000/     user)
Access: 2022-03-30 12:23:29.511094094 +0900
Modify: 2022-03-30 12:23:47.141501213 +0900
Change: 2022-03-30 12:23:47.141501213 +0900
 Birth: -

touch --help 옵션과 --version 옵션

--help와 --version 옵션을 이용하여 touch 명령어의 사용법과 touch 명령어의 버전을 볼 수 있습니다.

[ server 2022-03-30 11:40:29 ] ~/blog
user@server # touch --help
Usage: touch [OPTION]... FILE...
Update the access and modification times of each FILE to the current time.

A FILE argument that does not exist is created empty, unless -c or -h
is supplied.

A FILE argument string of - is handled specially and causes touch to
change the times of the file associated with standard output.

Mandatory arguments to long options are mandatory for short options too.
  -a                     change only the access time
  -c, --no-create        do not create any files
  -d, --date=STRING      parse STRING and use it instead of current time
  -f                     (ignored)
  -h, --no-dereference   affect each symbolic link instead of any referenced
                         file (useful only on systems that can change the
                         timestamps of a symlink)
  -m                     change only the modification time
  -r, --reference=FILE   use this file's times instead of current time
  -t STAMP               use [[CC]YY]MMDDhhmm[.ss] instead of current time
      --time=WORD        change the specified time:
                           WORD is access, atime, or use: equivalent to -a
                           WORD is modify or mtime: equivalent to -m
      --help     display this help and exit
      --version  output version information and exit

Note that the -d and -t options accept different time-date formats.

GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
For complete documentation, run: info coreutils 'touch invocation'

[ server 2022-03-30 11:40:34 ] ~/blog
user@server # touch --version
touch (GNU coreutils) 8.22
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Paul Rubin, Arnold Robbins, Jim Kingdon,
David MacKenzie, and Randy Smith.

 

 

반응형
그리드형

댓글