cmdline Unix権限ビット電卓

cmdline Unix権限ビット電卓

Unix権限ビットを8進数からシンボリックモードに、またはその逆に変換したいと思います。例えば。 :

$ mode-encode 'ugo+rwx'
0000

$ mode-decode 0000
ugo+rwx

私はそこにいることを知っていますオンライン権限計算機chmodビット転送を双方向でサポートしているがシンボルモードをサポートしていないコマンドで使用できるbashフラグメントが必要です。

編集:umaskではなく権限ビットを取得したい!

ベストアンサー1

すべてのPOSIXシェルで次を呼び出すことができます。

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"
}

または、umaskの保存と復元を防ぐには、サブシェルを使用します。

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

おすすめ記事