如何从命令行获取二进制文件权限?

sou*_*rav 3 permissions command-line bash scripts

通过使用stat -c "%a %n" * 我以八进制模式(例如 755)获取文件权限,有没有办法以二进制模式(例如 111 101 101)查看文件权限?

Rav*_*ina 6

对于单个文件:

stat -c "%a" filename.txt | xargs -I PERM echo "obase=2; ibase=8; PERM" | bc
Run Code Online (Sandbox Code Playgroud)

作为一个更清晰的脚本,更多的是一个文件:

#!/bin/bash
for file in *
do
  perm=$(stat -c "%a" "$file")
  bin=$(echo "obase=2; ibase=8; $perm" | bc)
  echo "$bin $file"
done
Run Code Online (Sandbox Code Playgroud)

输出:

110110100 baz
110110100 foo
110110101 bar
Run Code Online (Sandbox Code Playgroud)

笔记

  • 首先,我们使用for file in *.
  • 随着stat -c "%a我们以八进制收集文件权限,然后
  • 使用echo我们将其他必要的详细信息添加permissionbc.
  • 最后bc进行转换,然后我们打印出结果和文件名。
  • obase=2; 表示输出应该是二进制的,ibase=8 表示我们的输入是八进制的,$perm 是八进制的文件权限,如 664。