Forma elegante de copiar o arquivo .desktop em todos os usuários

0

Para copiar o arquivo .desktop em todas as áreas de trabalho de usuários, usei ls -1 /home/ | while read line ; do cp ~/baz.desktop /home/$line/baz.desktop ; done
Tenho a sensação de que existe uma maneira mais elegante de conseguir isso.

Felicidades,
Xi

    
por xi100f 10.07.2018 / 16:26

1 resposta

3

Dependendo de quão experientes são seus usuários, você pode querer que eles copiem o arquivo em vez de forçar o arquivo em suas contas, ou você pode instalá-lo centralmente como sugerido por mariaczi nos comentários .

O arquivo precisa ser copiado para o diretório pessoal de cada usuário, se eu o entendi corretamente. E eu estou supondo que você está fazendo isso como root. Após a conclusão da operação, presumo que as cópias não apenas residam no diretório inicial de cada usuário, mas também sejam de propriedade desse usuário e pertençam ao grupo users com permissões 0644.

Isso pode ser feito por install em um loop (supondo que os diretórios base estejam localizados em /home ). O utilitário install funciona um pouco como cp , mas permite definir a propriedade do usuário e do grupo, bem como permissões de uma só vez.

for homedir in /home/*/; do
    user=${homedir%/}   # remove '/' from end of $homedir
    user=${user#/home}  # remove '/home' from start of $user
    install -b -o "$user" -g users -m 644 ~/baz.desktop "$homedir"
done

install -b criará um backup do arquivo no destino, se já existir. Alternativamente, você pode pular a instalação do arquivo completamente se ele já existir:

for homedir in /home/*/; do
    if [ ! -e "$homedir/baz.desktop" ]; then
        user=${homedir%/}   # remove '/' from end of $homedir
        user=${user#/home}  # remove '/home' from start of $user
        install -o "$user" -g users -m 644 ~/baz.desktop "$homedir"
    fi
done

Relacionados:

por 10.07.2018 / 16:51

Tags