在Linux / Perl上获取权限位字符串?

时间:2015-03-16 17:48:25

标签: linux perl file-permissions

我想写一个shell / Perl脚本,它可以检查文件是否设置了特定的权限位。

例如,我想检查文件是否具有

等权限
drwxr-s--- 

当我在Perl中使用stat函数时,它给出了一个十进制数。 有没有办法可以在我的perl脚本中获得如上所示的确切字符串并进行比较? 如果不是 - 有没有办法将该字符串转换为数字然后进行比较?

2 个答案:

答案 0 :(得分:1)

为什么不将你的十进制数转换为二进制形式并使用二进制AND或XOR?

此代码为您提供二进制权限:

printf '%b', (stat 'filename.txt')[2] & 07777;

例如,-rw-r -----二进制格式为110100000.

答案 1 :(得分:0)

我以某种方式获得了比较所需的数字,这就是我以前得到的所需答案 -

my $mode = (stat('$file'))[2];
printf("permissions are %04o\n", $mode & 07777);

这对我有用!!