1. 程式人生 > >老男孩linux之取得文件的權限對應的數字練習題

老男孩linux之取得文件的權限對應的數字練習題

sed cut awk linux 老男孩linux之取得文件的權限對應的數字練習題

老男孩linux之取得文件的權限對應的數字練習題


問題:如何取得shiayn文件的權限對應的數字內容,如-rw-r--r-- 644,要求使用命令取得644這樣的數字。

  1. 創建文件shiyan

    [[email protected] ~]# touch shiyan

    [[email protected] ~]# ll

    -rw-r--r-- 1 root root 0 Jul 11 05:48 shiyan

  2. 使用stat命令來查看文件644權限

    [[email protected] ~]# stat shiyan

    技術分享

    說明: stat - display file or file system status(顯示文件或文件系統狀態)

  3. 獲取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 --helpman statinfo 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之取得文件的權限對應的數字練習題