在所有用户之间复制 .desktop 文件的优雅方式

在所有用户之间复制 .desktop 文件的优雅方式

.desktop要在我使用的所有用户桌面上复制文件
ls -1 /home/ | while read line ; do cp ~/baz.desktop /home/$line/baz.desktop ; done
,我有一种感觉,有更优雅的方法来实现这一点。

干杯,

答案1

根据您的用户的精明程度,您可能希望他们复制文件而不是强制将文件添加到他们的帐户中,或者您可能希望集中安装它正如 mariaczi 在评论中所建议的


如果我理解正确的话,该文件需要复制到每个用户的主目录。我假设您以 root 身份执行此操作。操作完成后,我假设副本不仅必须驻留在每个用户的主目录中,而且还应该由该用户拥有并属于users权限为 0644 的组。

这可以通过循环来完成install(假设主目录位于 下/home)。该install实用程序的工作原理有点像,cp但允许一次性设置用户和组所有权以及权限。

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如果文件已存在,将在目标上创建该文件的备份。或者,如果文件已经存在,您可以完全跳过安装:

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

有关的:

答案2

正如评论中所建议的,您可以通过将快捷方式复制到 来在系统中全局安装该快捷方式/usr/local/share/applications/。如果由于某种原因您仍然喜欢将其复制到每个用户的主目录,那么这是您正在寻找的优雅方式:

$ ls -1 /home/ | xargs -rI{} sudo cp ~/baz.desktop /home/{}/

解释

ls -1 /home/选择所有用户的主目录,将其逐一列出。

xargs -rI{}对标准输入上的每个条目单独执行以下命令,并替换{}为条目的文本(在我们的例子中为用户目录)。

cp ~/baz.desktop /home/{}/将 ~/baz.desktop 复制到用户的主目录。

答案3

ls /home/ | xargs -rI{} sudo cp /usr/share/applications/sol.desktop /home/{}/Desktop

此版本将 sol.desktop 从其默认位置复制到主目录中列出的所有用户。

相关内容