stat -c %g <file>
(Linux)
stat -f %g <file>
(BSD)
Retornará o ID do grupo para o dado <file>
EDITAR:
stat -c %G <file>
(Linux)
stat -f %Sg <file>
(BSD)
Irá devolver o nome do grupo.
Tenho certeza de que isso é fácil, mas não consigo encontrá-lo.
Eu estou escrevendo um script bash onde eu quero adicionar um usuário conhecido a um grupo. O nome do grupo é determinado pelo diretório, que é enviado como uma variável para o script bash.
então:
DIR="whatever"
GROUP=DIR groupname
usermod -a -G $GROUP userx
Isso é reconhecidamente mais complicado, mas tem o benefício de ser mais compatível com várias plataformas:
Utilizador:
\ls -l "$(dirname $TARGET_FILE)" | grep -v '^l' | grep " $(basename $TARGET_FILE)\$" | awk '{ print $3 }'
Grupo:
\ls -l "$(dirname $TARGET_FILE)" | grep -v '^l' | grep " $(basename $TARGET_FILE)\$" | awk '{ print $4 }'
Quebrando:
\ls
. A barra invertida evita todos os aliases de shell que podem definir opções padrão como -F
. -l
ong do diretório pai para $TARGET_FILE
. grep -v '^l'
remove quaisquer links simbólicos que possam apontar para $TARGET_FILE
da listagem e transmitir o restante. $TARGET_FILE
. Os principais ' '
(espaço) e \$
são importantes para corresponder à base inteira. (Caso contrário, old_file
, file_new
e file
podem aparecer). Observe que essa implementação tem problemas com diretórios relativos. (Não tente executá-lo onde TARGET_FILE=../
, por exemplo). Tenho certeza de que poderia ser mais reforçado usando realpath
, mas isso não está disponível no OS X, então voltamos para ferramentas específicas de plataforma se nós usamos isso.