すべてのユーザー間で.desktopファイルをコピーするエレガントな方法

すべてのユーザー間で.desktopファイルをコピーするエレガントな方法

.desktop私が使用しているすべてのユーザーデスクトップからファイルをコピーするには、
ls -1 /home/ | while read line ; do cp ~/baz.desktop /home/$line/baz.desktop ; done
よりエレガントな方法があるようです。

乾杯、習近

ベストアンサー1

ユーザーの知識レベルに応じて、次のことができます。それらファイルをアカウントに強制的に追加するのではなく、ファイルをコピーしたり、一元的にインストールしたりできます。Mariacziがコメントで提案したように


私が理解したことが正しい場合は、このファイルを各ユーザーのホームディレクトリにコピーする必要があります。私はあなたがこれをルートとしていると仮定します。操作が完了したら、レプリカが各ユーザーのホームディレクトリにある必要があるだけでなく、そのユーザーが所有し、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

関連:

おすすめ記事