在 Linux 中使用 cp 命令
创始人
2024-03-02 16:44:43
0

熟悉在 Linux 命令行中复制文件和目录的 cp 命令。

cp 命令是 Linux 中一个重要的命令,你可能经常会用到它。

正如名称所示,cp 代表 复制 copy ,它被用于 在 Linux 命令行中复制文件和目录

这是一个相对简单的命令,只有几个选项,但你仍有必要深入了解它。

在展示 cp 命令的实际示例之前,我更建议你先熟悉绝对路径和相对路径的概念,将文件从一个位置复制到另一个位置时,你需要用到它们。

Linux 中的绝对路径和相对路径的不同之处

复制单个文件

cp 命令最简单和最常见的用途是复制文件,只需指定源文件和要“粘贴”文件的目标目录即可。

cp 源文件 目标目录

将单个文件从源目录复制到目标目录。

在复制文件的同时重命名它

你将文件复制到另一个位置时可以同时进行 重命名。这有点类似于文本编辑器中的“另存为”选项。

为此,你必须在路径中给出新的文件名。

cp 源文件 目标目录/新文件名

在复制文件的同时重命名

复制多个文件

你还可以将多个文件复制到另一个位置。

cp 文件1 文件2 文件3 目标目录

复制多个文件时,将目标目录放在最后

在这种情况下,你无法重命名文件。

你还可以使用通配符扩展,将特定后缀的文件复制到另一个位置:

cp *.txt 目标目录

使用通配符扩展复制多个文件,比如所有 .txt 后缀的文件

复制文件时避免覆盖现有文件

如果你将 file1.txt 复制到一个已经存在名为 file1.txt 文件的目录中,它会将原有的文件覆盖掉。

如果你不希望这样,cp 命令还提供了几个选项来处理文件覆盖的情况。

首先是使用选项 -i 的交互模式。在交互模式下,它会询问是否确认或放弃覆盖目标文件。

cp -i 源文件 目标目录
cp:覆盖 '目标目录/源文件' ?

Y 覆盖文件,按 N 跳过复制该文件。

覆盖,但以交互方式询问(内容将被覆盖)

覆盖,但以交互方式询问(内容不会被覆盖)

选项 -n 代表完全取消覆盖。使用此选项时目标文件不会被覆盖。

cp -n 源文件 目标目录

取消覆盖(目录内文件的内容未更改)

还有一个选项 -b,在目标目录的文件将被覆盖时自动为其创建备份。我猜这里 b 代表 备份 backup 。

cp -b 源文件 目标目录

覆盖文件,但在备份文件后附加了“~”。

最后,还有一个“ 更新 update ”选项 -u,如果目标文件比源文件旧,或者目标文件不存在,就会被覆盖掉。

cp -u 源文件 目标目录

新文件会覆盖旧文件

复制目录(文件夹)

cp 命令也用来在 Linux 命令行中复制目录

在复制目录时,你需要使用递归选项 -r

cp -r 源目录 目标目录

在 Linux 中使用 cp 命令复制整个目录

你还可以将多个目录复制到另一个位置:

cp -r 目录1 目录2 目录3 目标目录

使用 cp 命令复制多个目录

在复制时保留属性

当你将文件复制到另一个位置时,它的 时间戳文件权限 甚至所有权都会发生变化。

这是正常的行为。但在某些情况下,你可能希望在复制文件时保留其原始属性。

要保留属性,请使用选项 -p

cp -p 源文件 目标目录

? 还有一个 -a 选项用于存档模式。它将连 ACL 也保留下来。

?️ 练习时间

想要练习一下 cp 命令吗?以下是一些简单的练习题供你尝试。

  • 打开终端并创建一个名为 practice_cp 的目录。
  • 现在,将 /etc/services 文件复制到这个新创建的目录中。
  • practice 目录中对复制的 services 文件进行一些小的更改。
  • 现在,使用更新模式再次复制 /etc/services 文件。有什么变化吗?观察一下。
  • 查看 /var/log 目录,并将以 mail 开头的日志文件复制到你的联系目录下。
  • 现在,返回到你的家目录,并创建一个名为 new_dir 的新目录(好吧,我想不出更好的名字)。
  • practice_cp 目录复制到 new_dir 目录中。

对你来说这些练习足够用了。希望你能喜欢在这里学习 Linux 命令。

(题图:MJ/07b35a39-826e-4904-9f85-25257831ce9d)


via: https://itsfoss.com/cp-command/

作者:Abhishek Prakash 选题:lkxed 译者:onionstalgia 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

cp

相关内容

硬件检测软件CPU-Z 2...
IT之家 3 月 14 日消息,科技媒体 Wccftech 发布博...
2026-03-15 13:09:32
CPI前夜惊魂!AI恐慌拖...
金属本轮抛售由股市去风险与获利了结共振引发,算法与CTA策略加剧波...
2026-02-13 07:21:08
刚刚,面壁小钢炮开源进阶版...
机器之心编辑部 你有没有想过一个问题:为什么和 AI 对话,总觉得...
2026-02-04 22:21:31
OBOO鸥柏丨120英寸国...
引言 在数字化转型浪潮中,国产化替代已成为关键领域的重要战略方向。...
2026-01-30 12:47:53
Steam Deck的CP...
快科技12月24日消息,meta近日在Linux Plumbers...
2026-01-20 22:22:13
原创 ...
“重磅消息!联想与英伟达两位大佬密会,黄仁勋亲口透露:合作 ‘过去...
2026-01-04 17:46:42

热门资讯

2020 年的 GitHub ... 距离 2020 年结束只剩下区区 24 天,我们即将结束魔幻的 2020 ,迎来新的一年,新的一年或...
开源新闻速递:openSUSE... 今日关注openSUSE 项目组的 Dominique Leuenberger 在他的周报中说:“这...
KDE4.11 Beta1 正...   KDE 项目工作组刚刚发布了 KDE Software Compilation 4.11 Bet...
Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
使用时间序列数据,用开源工具助... InfluxData 是一个开源的时间序列数据库平台。下面介绍了它是如何被用于边缘应用案例的。收集到...
OpenWrt 21.02 发... OpenWrt 社区宣布了该发行版的最新稳定版本:OpenWrt 21.02。补充一句,OpenWr...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
硬核观察 #1249 LG 洗... #1 LG 洗衣机每天上传近 4GB 的数据?一个名为 Johnie 的 LG 洗衣机用户发现,他的...