不带任何参数下,运行cp
这是cp命令最基础的使用。 拷贝名为myfile.txt从一个位置到另一个位置
cp myfile.txt /home/test/office
同时拷贝多个文件
要在同时拷贝多个文件,我们只需要将多个文件用空格隔开
cp file_1.txt file_2.txt file_3.txt /home/test/office
拷贝一个目录
要拷贝一个目录的话会有点棘手。你需要添加-r或者-R选项来实现。-r或-R选项表明递归操作。无论该目录是否为空目录,这个选项都是必要的
cp -r directory_1 /home/test/office
需要注意的一件事,你需要移除在目录名尾部的斜杠。否则你会收到类似的错误信息cp: omitting directory 'directory_1/',如果你收到错误信息,则目录不会被拷贝到目标文件夹。
创建文件的硬链接,而不是拷贝它们
拷贝文件意味着你必须使用一些存储空间来储存拷贝的文件。有时候出于某种原因,你可能想要创建“快捷方式”或者链接到文件,而不是拷贝它们。要做到这一点,我们可以使用-l选项。
cp -l file_4.txt /home/test/office
PS:硬链接不能用来创建目录。
创建文件的符号链接
也有一种链接叫做软链接或符号链接。我们用-s选项来实现。
cp -s /home/test/Documents/file_6.txt file_6.txt
创建符号链接只能在当前目录下进行。
我们想要创建符号链接/home/test/office/file6.txt指向原文件/home/test/Documents/file6.txt。但是为了创建符号链接,我必须在将/home/test/office作为目标目录。一旦我设法进入目录,我就可以像上面一样运行cp -s命令。
不随符号链接拷贝原文件
只拷贝符号链接文件
用-P选项来实现。当对符号链接使用cp命令,它会照原样拷贝它自身。
cp -P file_6.txt ./movie
随符号链接拷贝原文件
用-L选项。基本上,这个刚好与上面的-P选项相反。
cp -L file_6.txt ./movie
文件归档
当我们去拷贝一个目录时,我们会用-r或者-R选项。但是我们也可以用-a选项来归档文件。这样会创建文件和目录的准确套录,如果有的话也可以包括符号链接。
PS:-a 会保留原文件或目录的属性
cp -a directory_1/ /home/test/office
上列的命令会拷贝一个名为directory1的目录到/home/test/office目录下。如你所见,file6.txt依然作为符号链接被复制。
显示正在做什么
默认情况下,当拷贝作业成功时,我们仅仅会再次看到命令提示符。如果你想了解在拷贝文件时都发生了什么,我们可以用-v选项。
cp -v *.txt /home/test/office
当原文件较目标文件新时拷贝
用-u选项来实现
cp -vu *.txt /home/test/office
使用交互模式
交互模式下会询问是否覆盖目标目录下的文件。使用-i选项,启用交互模式。
cp -ir directory_1/ /home/test/office/
创建备份文件
当目标目录已经含有同名文件,默认情况下cp命令会覆盖目标目录下的同名文件。使用--backup选项,cp命令会为每一个现有的目标文件做一个备份。../office相对于/home/test/office。
cp --backup=simple -v *.txt ../office
--backup=simple选项会创建一个在文件名末尾用波浪符标记(~)的备份文件。
--backup选项也有一些其他控制:
none, off:从不备份(即使给出 --backup) numbered, t:用编号备份 existing, nil :如果编号备份存在则使用编号备份,否者用简易备份[译注:也就是用波浪号] simple, never :总是使用简易备份
只拷贝文件属性
cp 命令也提供给我们--attributes-only选项。顾名思义,这个选项只会拷贝文件名及其属性,不会拷贝任何数据。
cp --attributes-only file_6.txt -v ../office
强制拷贝
用了-f选项会强制进行拷贝操作。如果目标文件不能打开,可以用-f尝试一下。
cp -f *.txt -v ../office
在拷贝之前先删除目标
用--remove-destination选项实现。这个选项与上面的-f选项形成对照。如果cp命令在目标目录下发现同名文件,cp命令会先删除目标文件,然后再拷贝一份新的。
cp --remove-destination *.txt -v ../office