说我有以下输出ls -l
:
drwxr-xr-x 2 root root 4096 Apr 7 17:21 foo
如何将其自动转换为所使用的格式chmod
?
例如:
$ echo drwxr-xr-x | chmod-format
755
我正在使用OS X 10.8.3。
某些系统具有将文件的权限显示为数字的命令,但不幸的是,这些文件不可移植。
zsh
在模块中内置了stat
(aka zstat
)stat
:
zmodload zsh/stat
stat -H s some-file
然后,处于mode
,$s[mode]
但处于模式,即类型+烫发。
如果要使用八进制表示的权限,则需要:
perms=$(([##8] s[mode] & 8#7777))
BSD(包括Apple OS / X)也具有stat
命令。
mode=$(stat -f %p some-file)
perm=$(printf %o "$((mode & 07777))"
GNU find(可以追溯到1990年甚至更早)可以将权限打印为八进制:
find some-file -prune -printf '%m\n'
后来(2001年,很长一段时间zsh
stat
(1997年之后),但在BSD stat
(2002年)之前)stat
,又引入了GNU命令,其语法也不同:
stat -c %a some-file
在此之前很久,IRIX已经有了使用另一种语法的stat
命令(1994年在IRIX 5.3中已经存在):
stat -qp some-file
同样,当没有标准命令时,最好的可移植性是使用perl
:
perl -e 'printf "%o\n", (stat shift)[2]&07777' some-file
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句