cmdline Unix 权限位计算器

cmdline Unix 权限位计算器

我想将 Unix 权限位从八进制转换为符号模式,反之亦然。例如。:

$ mode-encode 'ugo+rwx'
0000

$ mode-decode 0000
ugo+rwx

我知道有在线权限位计算器chmod支持以两种方式传递位,但我想要一个可以与不支持符号模式的命令一起使用的 bash 代码片段。

编辑:我想获得权限位,而不是 umask!

答案1

在任何 POSIX shell 中,您可以调用:

savmask=$(umask)
umask someval
umask -S  # outputs the symbolic form
umask     # outputs the octal form
umask -- "$savmask"

你可以把它放入一个函数中

printmask() {
   savmask=$(umask) || return
   umask -- "$1" || return
   umask -S
   umask
   umask -- "$savmask"
}

或者使用子 shell 来避免保存和恢复 umask:

printmask() (
  umask -- "${1?Please specify a umask}" || exit
  umask -S
  umask
)

相关内容