在bash中可以交换两个文件吗?
或者,它们可以用比这更短的方式交换:
cp old tmp
cp curr old
cp tmp curr
rm tmp
在bash中可以交换两个文件吗?
或者,它们可以用比这更短的方式交换:
cp old tmp
cp curr old
cp tmp curr
rm tmp
把这个加到你的电脑里.bashrc:
function swap()
{
local TMPFILE=tmp.$$
mv "$1" $TMPFILE
mv "$2" "$1"
mv $TMPFILE "$2"
}
如果要处理中间mv
操作的潜在故障,请选中Can Bal's answer.
请注意,这两个答案都没有提供atomic解决方案,因为使用Linux系统调用和/或流行的Linux文件系统不可能实现这种解决方案.对于Darwin内核,请判断exchangedata
syscall.