
.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
関連:
- なぜ`ls`を解析しないのですか?
install
あなたのシステムのマニュアルです。
答え2
説明に示すように、ショートカットをコピーしてシステム全体にショートカットをインストールできます/usr/local/share/applications/
。何らかの理由で依然として各ユーザーのホームディレクトリにコピーすることを好む場合は、これがあなたが探しているエレガントな方法です。
$ ls -1 /home/ | xargs -rI{} sudo cp ~/baz.desktop /home/{}/
説明する
ls -1 /home/
すべてのユーザーのホームディレクトリを選択して1つずつ一覧表示します。
xargs -rI{}
標準入力の各項目に対して、次のコマンドを個別に実行して、{}
項目のテキスト(この場合はユーザーディレクトリ)を置き換えます。
cp ~/baz.desktop /home/{}/
~/baz.desktop をユーザーのホームディレクトリにコピーします。
答え3
ls /home/ | xargs -rI{} sudo cp /usr/share/applications/sol.desktop /home/{}/Desktop
このバージョンでは、sol.desktop がデフォルトの場所からホームディレクトリにリストされているすべてのユーザーにコピーされます。