ファイルを引数として受け入れ、ファイルを変更してから、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