本头条号每天坚持更新原创干货技术文章,欢迎关注本头条号"Linux学习教程",公众号名称“Linux入门学习教程"。

如需学习视频,请复制以下信息到手机浏览器或电脑浏览器上:

zcwyou.com

1. 前言

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

linux中cp命令的重命名用法(cp命令复制时不能覆盖旧文件的处理方法)(1)

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

2. 问题重现

linux中cp命令的重命名用法(cp命令复制时不能覆盖旧文件的处理方法)(2)

问题分析

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

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

catzcwyou.txt

输出内容为:

1

查看源文件zcwyou2.txt的内容

catzcwyou2.txt

输出内容为:

1 2

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

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

cpzcwyou.txtzcwyou2.txt

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

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

验证结果:

catzcwyou2.txt

输出结果:

1

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

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

[root@localhost~]#cp-fzcwyou.txtzcwyou2.txt

同样被提示以下信息:

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

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

3. 原因分析

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

发现有一行这样的定义:

aliascp='cp-i'

选项解释:

-i,--interactive

表示覆盖前提供交互。

4. 覆盖失败的解决方法

linux中cp命令的重命名用法(cp命令复制时不能覆盖旧文件的处理方法)(3)

覆盖失败的解决方法

4.1 取消别名定义

修改.bashrc文件

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

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

source.bashrc

再试试复制覆盖。

cp-fzcwyou.txtzcwyou2.txt

4.2 直接使用cp原生程序

/bin/cp-fzcwyou.txtzcwyou2.txt

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

\cp-fzcwyou.txtzcwyou2.txt

5. 验证结果

查看现有文件的内容

catzcwyou2.txt

输出结果:

1 2

文件内容更新。

6. 结论

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


如果喜欢本文,欢迎转发。本文已同步至博客站,尊重原创,转载时请在正文中附带以下链接:https://www.linuxrumen.com/cyml/1967.html

,