本文接 《shell 常见面试题及答案(2)》
四、
1.如何取得文件/etiantian的权限对应的数字,如-rw-r--r-- 为644,取得644这样的数字。
解答:
Loong:/home/yee/shell# stat -c %a calculate_birthday.sh
777
知识点:
stat
STAT(1) User Commands STAT(1)
NAME
stat - display file or file system status 显示文件或文件系统状态
SYNOPSIS
stat [OPTION] FILE...
DESCRIPTION
Display file or file system status.
-L, --dereference
follow links
-f, --file-system
display file system status instead of file status 显示文件系统状态
-c --format=FORMAT
use the specified FORMAT instead of the default; output a newline after each
use of FORMAT 用指定的格式代替默认值,输出到新行
--printf=FORMAT
like --format, but interpret backslash escapes, and do not output a mandatory
trailing newline. If you want a newline, include \n in FORMAT.
-t, --terse
print the information in terse form 简洁形式输出
--help display this help and exit
--version
output version information and exit
The valid format sequences for files (without --file-system):
%a Access rights in octal 用8进制的形式表示权限
Loong:/home/yee/shell# stat -c %a calculate_birthday.sh
777
%A Access rights in human readable form 可读型表示法
Loong:/home/yee/shell# stat -c %A calculate_birthday.sh
-rwxrwxrwx
%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
%n File name
%N Quoted file name with dereference if symbolic link
%o I/O block size
%s Total size, in bytes
%t Major device type in hex
%T Minor device type in hex
%u User ID of owner
%U User name of owner
%x Time of last access
%X Time of last access as seconds since Epoch
%y Time of last modification
%z Time of last change
%Z Time of last change as seconds since Epoch
Valid format sequences for file systems:
%a Free blocks available to non-superuser
%b Total data blocks in file system
%c Total file nodes in file system
%d Free file nodes in file system
%f Free blocks in file system
%C SELinux security context string
%i File System ID in hex
%l Maximum length of filenames
%n File name
%s Block size (for faster transfers)
%S Fundamental block size (for block counts)
%t Type in hex
%T Type in human readable form
NOTE: your shell may have its own version of stat, which usually supersedes the ver-
sion described here. Please refer to your shell's documentation for details about
the options it supports.
应用举例:
Loong:/home/yee/shell# stat practise1.sh
File: “practise1.sh”
Size: 144 Blocks: 8 IO Block: 4096 普通文件
Device: 806h/2054d Inode: 3776576 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2012-11-01 15:23:00.000000000 +0800
Modify: 2012-11-01 15:20:55.000000000 +0800
Change: 2012-11-01 15:20:55.000000000 +