我想写一个shell / Perl脚本,它可以检查文件是否设置了特定的权限位。
例如,我想检查文件是否具有
等权限drwxr-s---
当我在Perl中使用stat
函数时,它给出了一个十进制数。
有没有办法可以在我的perl脚本中获得如上所示的确切字符串并进行比较?
如果不是 - 有没有办法将该字符串转换为数字然后进行比较?
答案 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);
这对我有用!!