不带任何参数下,运行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