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
)