$ mv old tmp && mv curr old && mv tmp curr
è leggermente più efficiente!
Racchiuso in una funzione di shell riutilizzabile:
function swap()
{
local TMPFILE=tmp.$$
mv "$1" $TMPFILE && mv "$2" "$1" && mv $TMPFILE "$2"
}
Aggiungi questo al tuo .bashrc:
function swap()
{
local TMPFILE=tmp.$$
mv "$1" $TMPFILE
mv "$2" "$1"
mv $TMPFILE "$2"
}
Se vuoi gestire il potenziale errore dell'intermedio mv
operazioni, controlla la risposta di Can Bal.
Tieni presente che né questa né altre risposte forniscono un atomico soluzione, perché è impossibile implementarla utilizzando chiamate di sistema Linux e/o filesystem Linux popolari. Per il kernel Darwin, seleziona exchangedata
chiamata di sistema.
tmpfile=$(mktemp $(dirname "$file1")/XXXXXX)
mv "$file1" "$tmpfile"
mv "$file2" "$file1"
mv "$tmpfile" "$file2"