老男孩linux之取得文件的權限對應的數字練習題
老男孩linux之取得文件的權限對應的數字練習題
問題:如何取得shiayn文件的權限對應的數字內容,如-rw-r--r-- 為644,要求使用命令取得644這樣的數字。
創建文件shiyan
[[email protected] ~]# touch shiyan
[[email protected] ~]# ll
-rw-r--r-- 1 root root 0 Jul 11 05:48 shiyan
使用stat命令來查看文件644權限
[[email protected] ~]# stat shiyan
說明: stat - display file or file system status(顯示文件或文件系統狀態)
獲取644權限的過程
方法一:使用stat、head、tail、awk
[[email protected] ~]# stat shiyan|head -4|tail -1
說明:先將含有644的那行提取出來。
[[email protected] ~]# stat shiyan|head -4|tail -1|awk -F "/" ‘{print $1}‘
Access: (0644
[[email protected] ~]# stat shiyan|head -4|tail -1|awk -F "/" ‘{print $1}‘|awk -F "(" ‘{print $2}‘
0644
方法二:使用stat、sed、awk
先將含有644的那行提取出來
[[email protected] ~]# stat shiyan|sed -n ‘4p‘
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
[[email protected] ~]# stat shiyan|sed -n ‘4p‘|awk -F "/" ‘{print $1}‘|awk -F "(" ‘{print $2}‘
0644
方法三:使用stat、sed、awk
[[email protected] ~]# stat shiyan|sed -n ‘4p‘
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
[[email protected] ~]# stat shiyan|sed -n ‘4p‘|awk -F ":" ‘{print $2}‘|awk -F "/" ‘{print $1}‘|awk -F "(" ‘{print $2}‘
0644
方法四:使用stat、cut、sed
[[email protected] ~]# stat shiyan|cut -d ":" -f2
`shiyan‘
0 Blocks
802h/2050d Inode
(0644/-rw-r--r--) Uid
2017-07-11 05
2017-07-11 05
2017-07-11 05
[[email protected] ~]# stat shiyan|cut -d ":" -f2|sed -n ‘4p‘
(0644/-rw-r--r--) Uid
[[email protected] ~]# stat shiyan|cut -d ":" -f2|sed -n ‘4p‘|cut -d "/" -f1
(0644
[[email protected] ~]# stat shiyan|cut -d ":" -f2|sed -n ‘4p‘|cut -d "/" -f1|cut -d "(" -f2
0644
方法五:使用stat、sed、awk
[[email protected] ~]# stat shiyan|sed -n ‘4p‘|awk -F "/" ‘{print $1}‘|awk -F "(" ‘{print $2} ‘
0644
方法六:老男孩老師給出的最簡單的方法
當然還有更簡單的方法:
[[email protected] ~]# stat -c %a shiyan
644
註意:如何想到法二的思考過程,比答題更重要。當命令結果包含我們需要的內容的時候,我們要想到是否有具體的參數能夠一步達到我們需要的結果。
特別說明:
有關stat -c的用法可以通過stat --help和man stat,info stat,這是所有命令的三大幫助殺手鐧,必須要掌握了。
[[email protected] ~]# stat --help
Usage: stat [OPTION] FILE... #==>這是語法格式
Display file or file system status.
...省略部分...
-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
...省略部分...
#==>這是可用的參數,如-c。
The valid format sequences for files (without --file-system):
#==>這裏是對於文件適用的格式,既-c後接的格式。
%a Access rights in octal #==>以8進制形式顯示,即為本文的答案
%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
%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
...省略部分...
本題的拓展部分:
[[email protected] ~]# ls -li shiayn
98211 -rw-r--r-- 1 root root 0 Feb 20 08:04 /ett
[[email protected] ~]# stat -c %a shiyan
644
[[email protected] ~]# stat -c %A shiyan #==>獲取字符權限
-rw-r--r--
[[email protected] ~]# stat -c %B shiyan
512
[[email protected] ~]# stat -c %b shiyan
0
[[email protected] ~]# stat -c %i shiyan #==>inode信息
98211
[[email protected] ~]# stat -c %n shiyan
/ett
[[email protected] ~]# stat -c %o shiyan #==>block size
4096
本文出自 “聖騎士控魔之手” 博客,請務必保留此出處http://wutengfei.blog.51cto.com/10942117/1946307
老男孩linux之取得文件的權限對應的數字練習題