stat
파일이나 디렉터리의 상태 정보를 확인할 수 있는 명령어다. 디렉터리 내 파일에 대한 요약 정보를 위주로 출력하는 ls 명령어보다 상세한 정보를 확인할 수 있다.
사용 방법
명령어 뒤에 정보를 확인할 파일을 지정한다. 확인할 파일은 여러 개를 공백으로 나열하거나 *으로 지정할 수도 있다.
옵션 없이 사용하면 파일명, 크기, 접근 권한 등의 정보를 확인할 수 있다.
stat <FILE>
출력 정보
- Inode : inode 번호
- Links : 링크된 파일 수
- Uid, Gid : 소유자 및 그룹의 이름과 id
- Access : 출력이 8진수 숫자/또는 문자열 형식인 경우 권한 정보
- Access : 출력이 시각 형식인 경우 접근 시각(atime) 정보
- Modify : 수정 시각(mtime) 정보
- Change : 변경 시각(ctime) 정보
요약 출력
-t, --terse 옵션을 사용하면 요약된 정보를 확인한다.
stat -t <FILE>
파일 시스템 정보 출력
-f 옵션을 사용하면 파일 시스템 상태 정보를 확인한다.
stat -f <FILE>
원하는 정보 출력
-c, --printf 옵션을 사용하면 원하는 정보만 출력할 수 있다.
-c 옵션을 사용할 때는 출력 마지막에 개행 문자가 들어간다. --printf 옵션을 사용할 때는 개행 문자가 들어가지 않을 수 있어, 형식 지정 시 \\n을 포함시켜주어야 할 수 있다.
1. 8진수로 권한 표시
권한 정보를 8진수로 표시할 떄는 %a 형식을, 문자열로 표시할 때는 %A 형식을 사용한다.
stat -c %a <FILE>
2. atime, mtime, ctime 정보 표시
파일에 대한 접근 시각 또는 수정 시각 등을 표시한다.
stat --printf "atime=%x \\nmtile=%y \\nctime=%z \\n" <FILE>
형식을 대문자로 지정하면 timestamp로 표시된다.
+ 형식 지정자
그 외 다른 형식 지정자는 다음과 같다. --f 옵션과 함께 사용하는 파일 시스템에 대한 형식 지정은 제외했다.
%a access rights in octal (note '#' and '0' printf flags)
%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 data modification, human-readable
%Y time of last data modification, seconds since Epoch
%z time of last status change, human-readable
%Z time of last status change, seconds since Epoch
참고 문서
https://unix.stackexchange.com/questions/523515/how-to-test-file-permissions-using-shell-script
https://www.lesstif.com/lpt/linux-stat-105644077.html