在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.

Linux相关问答推荐

C++17/Linux:信号未解锁单独线程中被阻止的网络套接字调用

无法下载Centos 7上的存储库的元数据

为什么在已连接的设备上调用 btmgmt conn-info 返回:状态 0x02(未连接)

Linux 'column' 实用程序的使用

Perl/cpan: 找不到 JSON/Parse.pm @INC

如何在 DolphinDB 中递归查找目录中的所有文件?

所有进程的Linux环境变量

访问证书里面的图片

什么是`quote`命令?

在 SLURM 作业(job)脚本中设置和传递字符串变量

对一个命令使用不同的 PHP 版本 CLI 可执行文件

在 Bash 中从最后到第一个输出文件行

使用 shell 脚本获取 MAC 地址

Linux 非阻塞 fifo(按需日志(log)记录)

如何在python中找到文件或目录的所有者

'&&' 与 '&' 与 Bash 中的 'test' 命令

Linux 上真的没有异步块 I/O 吗?

在 Linux 上更新 PyCharm

通过 linux x86-64 函数调用保留了哪些寄存器

Linux 上的最大文件/目录数?