cp 命令
用途
复制文件。
语法
复制文件到另一文件
cp [ -E{force|ignore|warn} ] [ -f ][ -h ] [ -i ][ -p ][ - ] SourceFile TargetFile
复制文件到目录
cp [ -E{force|ignore|warn} ] [ -f ] [ -h ] [ -i ] [ -p ] [[ -r | -R ][ -H | -L | -P ]][ - ] SourceFile ... TargetDirectory
复制目录到目录
cp [ -E{force|ignore|warn} ] [ -f ] [ -h ] [ -i ][ -p ] { -r | -R } [ -H | -L | -P ] [ - ] SourceDirectory ... TargetDirectory
描述
cp 命令复制由 SourceFile 参数指定的源文件到由 TargetFile 参数指定的目标文件。如果目标文件已存在,cp 覆盖原来内容,但相关的方式、所有者和组不改变。SourceFile 的最后访问时间和TargetFile 的最后修改时间设置为复制进行的时间。如果 TargetFile 不存在,cp 创建一个新文件命名为 TargetFile,它和源文件除了粘滞位未设置外有相同的方式,除非超级用户来设置它,而所有者和 TargetFile 组正是这种用户。当 TargetFile 是另一文件的链接时,cp 用源文件内容覆盖目标链接;来自 TargetFile 的链接保留。而且,cp 命令能复制由 SourceFile 参数(或由 SourceDirectory 参数命名的目录)指定的源文件到由 TargetDirectory 参数指定的目录。
注:如果源参数之一是目录,您需要指定 -r 或 -R 标志。
如果有目录由 cp 命令在复制过程创建,新创建的目录与相应的源目录有相同的方式。
您也能复制特殊设备文件。实现这一点的首选选项是 -R 标志。指定 -R 使特殊文件在新路径名下重新创建。指定 -r 标志使 cp 命令尝试复制特殊文件为常规文件。
标志
-E | -E 选项需要下列参数中的一个。如果省略 -E 选项,warn 是缺省行为。
|
-f | 如果目标文件不能被写操作打开的话,指定移去目标文件。移去操作在 cp 命令作任何复制之前执行。 |
-h | 强制 cp 命令复制符号链接。缺省值是跟随符号链接,也就是将文件复制到符号链接指向处。 |
-H | 根据由指定为 SourceFile 操作数的任何符号链接引用的文件类型和内容来进行操作。 |
-i | 提示您将被覆盖的文件名。上述情况发生在当 TargetDirectory 或 TargetFile 参数含有与 SourceFile 或 SourceDirectory 参数所指定的文件同名的文件时。如果您输入 y 或在语言环境下的 y 的同义词,cp 命令将继续。任何其他的回答会避免 cp 命令覆盖文件。 |
-L | 根据由指定为 SourceFile 操作数的任何符号链接或在遍历文件层次结构期间遇到的任何符号链接所引用的文件类型和内容来进行操作。 |
-p | 复制每个源文件/源目录的以下特征到相应的 TargetFile 和/或 TargetDirectory:
如果用户标识或组标识不能复制,则文件许可位 S_ISUID 和 S_ISGID 被清除。 为了保存所有者标识和组标识、许可方式、修改和访问次数,用户必须有适当的文件访问许可权(用户应该是超级用户或与目标文件有相同的所有者标识) 如果不能保存这些特征,则目标文件不能删除。 与 SourceFile 源文件相关联的访问控制列表(ACL),也被保存。参见用户说明,在 《AIX 5L V5.2 系统用户指南:操作系统与设备》 中,来获得关于 ACL 的更多信息。 |
-P | 根据指定为 SourceFile 操作数的任何符号链接或在遍历文件层次结构期间遇到的任何符号链接来进行操作。 |
-r | 复制由 SourceFile 或 SourceDirectory 参数指定的文件或目录下的文件层次结构(递归复制)。-r 标志用处理常规文件的相同方式处理特殊文件。 |
-R | 复制由 SourceFile 或 SourceDirectory 参数指定的文件或目录下的文件层次结构到由 TargetDirectory 参数指定的目录。特殊文件类型,如先入先出(FIFO)文件和块及字符设备将被重新创建而非复制。符号链接也被跟随,除非指定 -h 标志。(-R 标志优先于 -r 标志。) 如果没有指定 -H、-L 或 -P 选项中的任何一个,则没有指定这些选项中哪一个将用作缺省值。请留心以下内容:
|
-- | 指示 --(破折号,破折号)标志之后的参数将被解释为文件名。空标志允许以 - (减号)开始的文件名规范。 |
退出状态
该命令返回以下退出值:
0 | 所有文件成功复制。 |
>0 | 发生错误。 |
示例
- 在当前目录做一个文件副本,输入:
cp prog.c prog.bak
这将复制 prog.c 到 prog.bak。如果 prog.bak 现在不存在,则 cp 命令创建它。如果它存在,cp 命令用 prog.c 命令的副本取代它。
- 复制您当前目录下的一个文件到另一个目录,输入:
cp jones /home/nick/clients
这将复制 jones 文件到 /home/nick/clients/jones。
- 复制一个文件到一个新的文件并保存与源文件相关联的修改日期、时间和访问控制列表,输入:
cp -p smith smith.jr这将复制 smith 文件到 smith.jr 文件。不是用当前日期和时间戳记创建文件,而是系统给 smith.jr 文件和 smith 文件相同的日期和时间。smith.jr 文件也继承 smith 文件的访问控制保护。
- 复制一个目录下的所有文件到一个新目录,输入:
cp /home/janet/clients/* /home/nick/customers
这只复制 clients 目录下的文件到 customers 目录。
- 复制一个目录包括其所有的文件和子目录到另一个目录,输入:
cp -R /home/nick/clients /home/nick/customers
注:目录不能复制到目录本身。这将复制 clients 目录,包括所有文件、子目录和那些子目录中的文件到 customers/clients 目录。 - 复制一个特殊的文件集合到另一个目录,输入:
cp jones lewis smith /home/nick/clients
这将复制您当前工作目录的 jones,lewis,和 smith 文件到 /home/nick/clients目录。
- 要使用模式匹配字符来复制文件,输入:
cp programs/*.c .
这将复制 programs 目录下,以 .c 结尾的文件到当前目录,表示为单个 . (点号)。您必须在 c 和最后的点号间输入一个空格。
文件
-
/usr/bin/cp
- 包含 cp 命令。