linux文件权限转化为八进制数值的方法

linux文件权限转化为八进制值的方法

人类可理解的方式为:-rwxrwxrwx
可将其人为分为四段:-,rwx,rwx,rwx
第一段为文件类型,如下:
d 文件夹
- 普通文件
l 链接
b 块设备文件
p 管道文件
c 字符设备文件
s 套接口文件

第二段(2-4位)表示这个文件的属主权限
第三段(5-7位)表示和这个文件属主所在同一个组的用权限
第四段(8-10位)表示其他用户权限

每一段 r、w、x 以八进制 4、2、1 表示,某位为“-”空(按0计),如:
r-x => 401,八进制值为 4+0+1=5
rw- => 420,八进制值为 4+2+0=6

逻辑步骤:
-rwxrwxrwx => -,rwx,rwx,rwx => -,421,421,421 => -,7,7,7 => 777

通过shell命令转换:

#将rwx依次替换为421,-替换为0,然后没一字节间插入一个空格,再利用awk按空格为分隔符计算数值
value=-rwx--x--x
value=`echo $value |sed 's/r/4/g;s/w/2/g;s/x/1/g;s/-/0/g;s/./& /g' |awk '{print ($2+$3+$4)($5+$6+$7)($8+$9+$10)}'`
value=711

你可能感兴趣的:(linux,运维,服务器,shell)