ファイルの交換時にファイル権限を保持(または復元)

ファイルの交換時にファイル権限を保持(または復元)

ファイルを引数として受け入れ、ファイルを変更してから、2番目の引数で指定されたファイル名に書き込むコマンドがあります。私はこのプログラムをと呼ぶmodifyfile

私はそれが「所定の位置で」動作したいので、一時ファイルに変更してから再度移動するシェルスクリプト(bash)を作成しました。

TMP=`mktemp`
modifyfile "$original" "$TMP"
mv -v "$TMP" "$original"

残念ながら、これはファイルに対する権限を破壊します。ファイルはデフォルト権限で再生成されます。

mv権限を変更せずにターゲットを上書きするようにコマンドに指示する方法はありますか?または、元のユーザー、グループ、および権限を保存および復元する方法はありますか?

ベストアンサー1

使用されず、リダイレクトのみmvですcat。たとえば、

TMP=$(mktemp)
modifyfile "$original" "$TMP"
cat "$TMP" > "$original"

これにより、ファイルレベルで何も触れることなく$original内容が上書きされます。$TMP

おすすめ記事