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.