$ mv old tmp && mv curr old && mv tmp curr
sedikit lebih efisien!
Dibungkus menjadi fungsi shell yang dapat digunakan kembali:
function swap()
{
local TMPFILE=tmp.$$
mv "$1" $TMPFILE && mv "$2" "$1" && mv $TMPFILE "$2"
}
Tambahkan ini ke .bashrc:
Andafunction swap()
{
local TMPFILE=tmp.$$
mv "$1" $TMPFILE
mv "$2" "$1"
mv $TMPFILE "$2"
}
Jika Anda ingin menangani potensi kegagalan perantara mv
operasi, periksa jawaban Can Bal.
Harap perhatikan bahwa baik ini, maupun jawaban lain tidak memberikan atomik solusi, karena tidak mungkin menerapkannya menggunakan syscall Linux dan/atau sistem file Linux populer. Untuk kernel Darwin, periksa exchangedata
syscall.
tmpfile=$(mktemp $(dirname "$file1")/XXXXXX)
mv "$file1" "$tmpfile"
mv "$file2" "$file1"
mv "$tmpfile" "$file2"