stat 명령어는 리눅스 파일 시스템에 있는 디렉토리와 파일에 대한 다양한 정보를 확인하기 위한 명령어다. 디렉토리 엔트리 리스트의 요약 정보만 출력하는 ls 명령과 다르게 파일의 상세한 정보를 확인할 수 있다.
[root@myhost ~]# stat test.txt
File: ‘test.txt’
Size: 1242 Blocks: 8 IO Block: 4096 regular file
Device: 2h/2d Inode: 5629499534601420 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2022-02-22 11:44:40.018468800 +0900
Modify: 2022-02-22 11:44:36.902092800 +0900
Change: 2022-02-22 11:44:36.902092800 +0900
Birth: -
stat 명령어로 알 수 있는 파일의 정보는 다음과 같다.
- File : 파일 이름
- Size : 사이즈와
- Inode : 파일의 inode 번호
- Uid, Gid : 소유자 및 소유 그룹의 이름과 ID
- Links : 링크된 파일의 수
- Context : 보안 정책(SELinux Policy) 정보
- Access(상단) : 권한 정보
- Access(하단) : 접근 시각 정보 (atime)
- Modify : 수정 시각(mtime)
- Change : 변경 시각(ctime)
stat 명령을 사용할 때, 파일을 여러개 입력할 수도 있으며 이 경우 입력한 순서대로 파일의 정보가 화면에 출력된다.
원하는 정보만 출력
stat 명령을 이용해서 스크립트를 작성할 때, stat 명령의 출력 결과를 모두 받아서 파싱하는 것은 매우 번거롭고 버그를 유발할 수 있다.
이 경우 stat 명령의 --printf 옵션을 이용해서 원하는 값만 출력할 수 있다. 예를 들어
[root@myhost ~]# stat --printf="Inode Number=%i \\n" test.txt
Inode Number=5629499534601420
이런 식으로 원하는 값만 포매팅해서 뽑아올 수 있다.
포매팅에는 다음 정보들을 사용할 수 있다.
%a | access rights in octal |
%A | access rights in human readable form |
%b | number of blocks allocated (see %B) |
%B | the size in bytes of each block reported by %b |
%C | SELinux security context string |
%d | device number in decimal |
%D | device number in hex |
%f | raw mode in hex |
%F | file type |
%g | group ID of owner |
%G | group name of owner |
%h | number of hard links |
%i | inode number |
%m | mount point |
%n | file name |
%N | quoted file name with dereference if symbolic link |
%o | optimal I/O transfer size hint |
%s | total size, in bytes |
%t | major device type in hex, for character/block device special files |
%T | minor device type in hex, for character/block device special files |
%u | user ID of owner |
%U | user name of owner |
%w | time of file birth, human-readable; - if unknown |
%W | time of file birth, seconds since Epoch; 0 if unknown |
%x | time of last access, human-readable |
%X | time of last access, seconds since Epoch |
%y | time of last modification, human-readable |
%Y | time of last modification, seconds since Epoch |
%z | time of last change, human-readable |
%Z | time of last change, seconds since Epoch |
Stat 명령어 옵션
옵션 | 긴버전 | 설명 |
-L | --dereference | 링크를 따라감 |
-f | --file-system | 파일 상태 대신 파일 시스템 상태를 출력 |
-c | --format=FORMAT | 입력한 포맷을 사용해서 정보를 출력, 마지막에는 newline 문자가 출력 |
--printf=FORMAT | --format 옵션과 비슷함. 다만 무조건 newline을 찍는게 아니고 \\n 을 마지막에 찍어야 newline을 찍음 | |
-t | --terse | terse form으로 정보를 출력 |
--help | 사용법 출력 | |
--version | 버전 출력 |
관련글
댓글