在 macOS 系统中,命令行工具(Terminal)为高级用户和开发者提供了强大的操作能力,复制”操作虽看似简单,但结合不同命令可实现灵活高效的数据处理,本文将详细解析 macOS 命令行中与复制相关的核心命令、使用场景及进阶技巧,帮助用户掌握从基础文件复制到复杂数据处理的操作方法。

基础复制命令:cp 与 pbcopy
cp(copy)是命令行中最基础的文件/目录复制命令,其核心功能是将源文件或目录复制到目标位置,基本语法为 cp [选项] 源文件 目标文件,常用选项包括:
-r或-R:递归复制目录,适用于包含子目录的文件夹复制;-p:保留文件权限、时间戳等元数据;-f:强制覆盖已存在的目标文件,无需确认;-i:覆盖前提示用户确认(默认行为,若已设置alias cp='cp -i')。
复制当前目录下的 test.txt 到 /Documents/ 并保留元数据,可执行:
cp -p test.txt ~/Documents/
若需复制整个 folder 目录到 /backup/,则需加 -r 选项:
cp -r folder ~/backup/
除了文件系统内的复制,macOS 还提供了与剪贴板交互的命令 pbcopy(pasteboard copy),该命令可将标准输入(stdin)的内容复制到系统剪贴板,常与其他命令结合使用,将 cat 命令读取的文件内容复制到剪贴板:

cat report.txt | pbcopy
或直接通过 echo 输出文本到剪贴板:
echo "需要复制的文本" | pbcopy
此时文本已存入剪贴板,可直接通过 Cmd+V 粘贴到其他应用。
高级复制技巧:结合管道与重定向
命令行的强大之处在于通过管道()和重定向(>、>>)实现复杂操作,若需复制文件中特定行到另一个文件,可结合 grep 和 >:
grep "关键词" source.txt > filtered.txt
此命令会将 source.txt 中包含“关键词”的行筛选并复制(覆盖写入)到 filtered.txt,若需追加内容而非覆盖,则使用 >>:

grep "新关键词" source.txt >> filtered.txt
对于压缩文件的复制,可先通过 tar 打包再使用 cp,或直接结合 gzip 实现压缩复制:
tar -czf - folder | (cd /backup && tar -xzf -)
此命令通过管道将 folder 打包为压缩流,在 /backup 目录解压,实现“复制+压缩”一步到位。
目录复制与同步:rsync 的进阶应用
当需要高效复制大目录或保持源目录与目标目录同步时,rsync(remote sync)是更优选择,其语法为 rsync [选项] 源目录 目标目录,核心优势在于:
- 增量同步:仅复制变化的文件,减少数据传输量;
- 保留属性:通过
-a(归档模式)自动保留权限、时间戳等元数据; - 排除文件:通过
--exclude过滤不需要的文件(如临时文件)。
将 ~/Projects 同步到移动硬盘 /Volumes/Backup/,并排除 node_modules 目录:
rsync -av --exclude='node_modules' ~/Projects/ /Volumes/Backup/Projects/
-a 相当于 -rlptgoD(递归、保留符号链接等),-v 显示详细输出,若需删除目标目录中已不存在的源文件(完全同步),添加 --delete 选项:
rsync -av --delete ~/Documents/ ~/Documents_Backup/
特殊场景复制:网络文件与设备复制
在跨设备或网络场景中,scp(secure copy)基于 SSH 协议实现加密复制,语法与 cp 类似,但需指定远程主机地址:
scp local_file.txt user@remote:/remote/path/
若需复制整个目录,加 -r 选项:
scp -r local_folder/ user@remote:/remote/path/
对于 macOS 特殊设备(如 iPhone),可通过 libimobiledevice 工具实现文件复制,安装后使用 idevicebackup2 备份设备数据到本地:
idevicebackup2 backup -u 设备ID ~/iPhone_Backup/
复制操作的注意事项
- 权限问题:复制文件时需确保对源文件有读取权限,对目标目录有写入权限,否则会报错(如
Permission denied)。 - 覆盖风险:使用
cp -f或rsync --delete前建议先确认目标文件内容,避免误覆盖重要数据。 - 大文件处理:复制大文件(如视频、镜像)时,可通过
pv(pipe viewer)查看进度:pv large_file.iso | dd of=/dev/disk2 bs=1m
相关问答FAQs
Q1:如何通过命令行将文件复制到剪贴板,并在终端外粘贴?
A:使用 pbcopy 命令,将 config.txt 的内容复制到剪贴板,执行 cat config.txt | pbcopy,之后可在文本编辑器、浏览器等应用中通过 Cmd+V 粘贴,若需复制文件路径,可结合 pwd 或 realpath:realpath file.txt | pbcopy,此时剪贴板中会包含文件的绝对路径。
Q2:cp 和 rsync 在复制目录时有什么区别?何时选择 rsync?
A:cp 是基础复制命令,适合一次性、小规模的文件/目录复制,功能简单直接;rsync 则支持增量同步、保留属性、排除文件、远程传输等高级功能,且在复制已存在目录时仅同步变化文件,效率更高,若需定期备份、跨设备同步或处理大目录,推荐使用 rsync;若仅需简单复制少量文件,cp 更为便捷。
