智传网优云课堂,专注分享IT技术
与IT技术爱好者一起共同学习进步

Linux cp命令复制时不能覆盖旧文件的处理方法

1. 前言

本文主要讲解如何处理cp命令复制文件时不能覆盖旧文件的问题。

Linux cp命令复制时不能覆盖旧文件的处理方法

2. 问题重现

问题分析

假设目标文件名为zcwyou.txt,源文件名为zcwyou2.txt

查看目标文件zcwyou.txt的内容

cat zcwyou.txt

输出内容为:

1

查看源文件zcwyou2.txt的内容

cat zcwyou2.txt

输出内容为:

1
2

很明显,这2个文件的内容并不一样。

试试把zcwyou.txt复制覆盖zcwyou2.txt

cp zcwyou.txt zcwyou2.txt

提示是否要覆盖,我输入yes

cp:是否覆盖"zcwyou2.txt"? yes

验证结果:

cat zcwyou2.txt 

输出结果:

1

目标文件内容没有变化,表示没有复制成功。

试试添加选项-f,表示强制执行。

[root@localhost ~]# cp -f zcwyou.txt zcwyou2.txt

同样被提示以下信息:

cp:是否覆盖"zcwyou2.txt"? 

结果跟上一次是一样的。复制覆盖失败。

3. 原因分析

查看用户变量环境定义配置文件.bashrc

发现有一行这样的定义:

alias cp='cp -i'

选项解释:

-i, --interactive

表示覆盖前提供交互。

4. 覆盖失败的解决方法

覆盖失败的解决方法

4.1 取消别名定义

修改.bashrc文件

alias cp='cp -i'删除或者注释掉。

重新导入环境变量,才能立即生效。

source .bashrc

再试试复制覆盖。

cp -f zcwyou.txt zcwyou2.txt

4.2 直接使用cp原生程序

/bin/cp -f zcwyou.txt zcwyou2.txt

4.3 在cp命令前面加一个斜杠\

\cp -f zcwyou.txt zcwyou2.txt

5. 验证结果

查看现有文件的内容

cat zcwyou2.txt

输出结果:

1
2

文件内容更新。

6. 结论

非常简单且经常用到的功能,但是还是值得研究一下。如果你有更好的方法,请留言。

赞(0)
未经允许不得转载:Linux入门学习到精通 » Linux cp命令复制时不能覆盖旧文件的处理方法
分享到: 更多 (0)

学习QQ群:557371664

关注微信公众号自助视频学习

评论 抢沙发

评论前必须登录!