首頁 > 軟體

stat用法:獲取檔案對應許可權的數位

2020-06-16 17:49:50

題目:檔案屬性為-rw-r--r-- 對應許可權為644,如何使用命令獲取許可權對應的數位??

舉例如下:

[linuxidc@localhost ~]$ ll -l
-rw-r--r-- 1 linuxidc wheel 38 Oct 12 16:29 1.txt

使用stat命令可以檢視
[linuxidc@localhost ~]$ stat 1.txt
File: `1.txt'
Size: 38 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 390954 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 503/ linuxidc) Gid: ( 10/ wheel)
Access: 2015-10-12 16:29:34.674990005 +0800
Modify: 2015-10-12 16:29:32.248990536 +0800
Change: 2015-10-12 16:29:32.248990536 +0800

取出對應的數位則需要使用正則sed awk 或cut ,head,tail命令;

方法1:使用正則或命令取
head,tail,cut

[linuxidc@localhost ~]$ stat 1.txt |head -n4|tail -n1|cut -d "/" -f1|cut -d "(" -f2
0644


sed,cut

[linuxidc@localhost ~]$ stat 1.txt |sed -n '4p'|cut -d "/" -f1|cut -d "(" -f2
0644

sed,awk

[linuxidc@localhost ~]$ stat 1.txt |sed -n '4p'|awk -F"/" '{print $1}'|awk -F"(" '{print $2}'
0644

方法2:stat -c 命令

[linuxidc@localhost ~]$ stat -c %a 1.txt
644

注意:如何想到法二的思考過程,比答題更重要。當命令結果包含我們需要的內容的時候,我們要想到是否有具體的引數能夠一步達到我們需要的結果。

man stat 檢視幫助
-c --format=FORMAT
use the specified FORMAT instead of the default; output a new line after each use of FORMAT
使用特殊格式代替預設輸出;
常用的引數有如下:
%a Access rights in octal        8進位制顯示存取許可權,0644
%A Access rights in human readable form        以人類可讀的形式輸出,
%F File type        檔案的型別
%g Group ID of owner        所屬組gid的號碼
%G Group name of owner        所屬組的名稱
%h Number of hard links        硬連線的數量
%i Inode number        inode的值
%n File name        檔名
%o I/O block size        IO塊大小
%s Total size, in bytes        檔案的總大小,位元組顯示;
%u User ID of owner        所屬主的uid號碼
%U User name of owner        所屬主的名稱
%x Time of last access        最後存取的時間
%X Time of last access as seconds since Epoch        最後存取時間的時間戳
%y Time of last modification        最後修改的時間
%Y Time of last modification as seconds since Epoch        最後修改時間的時間戳
%z Time of last change        最後更改的時間
%Z Time of last change as seconds since Epoch        最後更改的時間的時間戳

使用引數結果如下:
[linuxidc@localhost ~]$ ls -l 1.txt
-rw-r--r-- 1 linuxidc wheel 38 Oct 12 16:29 1.txt
[linuxidc@localhost ~]$ stat -c %a 1.txt
644
[linuxidc@localhost ~]$ stat -c %A 1.txt
-rw-r--r--
[linuxidc@localhost ~]$ stat -c %b 1.txt
8
[linuxidc@localhost ~]$ stat -c %B 1.txt
512
[linuxidc@localhost ~]$ stat -c %d 1.txt
64768
[linuxidc@localhost ~]$ stat -c %F 1.txt
regular file
[linuxidc@localhost ~]$ stat -c %g 1.txt
10
[linuxidc@localhost ~]$ stat -c %G 1.txt
wheel
[linuxidc@localhost ~]$ stat -c %u 1.txt
503
[linuxidc@localhost ~]$ stat -c %U 1.txt
linuxidc
[baby@localhost ~]$ stat -c %h 1.txt
1
[linuxidc@localhost ~]$ stat -c %i 1.txt
390954
[linuxidc@localhost ~]$ stat -c %n 1.txt
1.txt
[linuxidc@localhost ~]$ stat -c %o 1.txt
4096
[linuxidc@localhost ~]$ stat -c %s 1.txt
38

本文永久更新連結地址http://www.linuxidc.com/Linux/2015-11/125326.htm


IT145.com E-mail:sddin#qq.com