cmdline Unix Permissões calculadora de bits

1

Eu gostaria de converter os bits Unix Permissions do octal para o modo simbólico e vice-versa. por exemplo:

$ mode-encode 'ugo+rwx'
0000

$ mode-decode 0000
ugo+rwx

Eu sei que existem calculadoras de bits de permissão online e chmod suporta passar os bits de ambas as formas, mas eu gostaria snippet de código bash que eu posso usar com comandos que não suportam o modo simbólico.

EDIT: eu gostaria de obter os bits de permissão, não o umask!

    
por eadmaster 29.08.2018 / 13:20

1 resposta

2

Em qualquer shell POSIX, você pode chamar:

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

Você poderia colocar isso em uma função

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

Ou use um subshell para evitar a necessidade de salvar e restaurar o umask:

printmask() (
  umask -- "${1?Please specify a umask}" || exit
  umask -S
  umask
)
    
por 29.08.2018 / 13:37