cp 命令
用途
复制文件。
语法
复制文件到另一文件
cp [ -E{force|ignore|warn} ] [ -f ] [ -h ] [ -i ] [ -p ] [ -I ] [ -U ] [ - ] SourceFile TargetFile
复制文件到目录
cp [ -E{force|ignore|warn} ] [ -f ] [ -h ] [ -i ] [ -p ] [[ -r | -R ] [ -H | -L | -P ]] [ -I ] [ -U ] [ - ] SourceFile … TargetDirectory
复制目录到目录
cp [ -E{force|ignore|warn} ] [ -f ] [ -h ] [ -i ] [ -p ] { -r | -R } [ -H | -L | -P ] [ -I ] [ -U ] [ - ] 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 是缺省行为。
force
以下情况对文件的 cp 操作会失败,即如果文件的固定范围大小或空间保留不能被保存的话。
ignore
在保存范围属性时忽略任何错误。
warn
如果文件的空间保留或者固定范围大小无法保存,就发出一个警告。
-f 如果目标文件不能被写操作打开的话,指定移去目标文件。移去操作在 cp 命令作任何复制之前执行。
-h 强制 cp 命令复制符号链接。缺省值是跟随符号链接,也就是将文件复制到符号链接指向处。
-H 根据由指定为 SourceFile 操作数的任何符号链接引用的文件类型和内容来进行操作。
-i 提示您将被覆盖的文件名。上述情况发生在当 TargetDirectory 或 TargetFile 参数含有与 SourceFile 或 SourceDirectory 参数所指定的文件同名的文件时。如果您输入 y 或在语言环境下的 y 的同义词,cp 命令将继续。任何其他的回答会避免 cp 命令覆盖文件。
-I 在 ACL 转换期间禁止警告消息。
-L 根据由指定为 SourceFile 操作数的任何符号链接或在遍历文件层次结构期间遇到的任何符号链接所引用的文件类型和内容来进行操作。
-p 将每个 SourceFile/SourceDirectory 的以下特征复制到相应的 TargetFile 和/或 TargetDirectory:
最后修改数据和最后访问的时间。如果这一复制由于任何原因而失败,cp 命令将给标准错误写一个诊断消息。没有复制 SourceFile/SourceDirectory 的 nanoseconds 字段的最后修改时间或最后访问时间。
用户标识和组标识。如果这一复制由于任何原因而失败,cp 命令将给标准错误写一个诊断消息。
文件许可位和 S_ISUID 和 S_ISGID 位。如果这一复制由于任何原因而失败,cp 命令将给标准错误写一个诊断消息。
如果用户标识或组标识不能复制,则文件许可位 S_ISUID 和 S_ISGID 被清除。
为了保存所有者标识和组标识、许可方式、修改和访问次数,用户必须有适当的文件访问许可权(用户应该是超级用户或与目标文件有相同的所有者标识)
如果不能保存这些特征,则目标文件不能删除。
如果目标文件系统同样支持,则保存与 SourceFile 相关联的访问控制列表(ACL)。如果源文件包含 NFS4 ACL 且目标文件系统不支持 NFS4 ACL,则 NFS4 ACL 转换为 AIXC。请参阅《安全性》中的『用户帐户』以获取关于 ACL 的更多信息。
当 ACL 转换成功时,将会打印一条警告消息到 stderr。
-P 根据指定为 SourceFile 操作数的任何符号链接或在遍历文件层次结构期间遇到的任何符号链接来进行操作。
-r 复制由 SourceFile 或 SourceDirectory 参数指定的文件或目录下的文件层次结构(递归复制)。-r 标志用处理常规文件的相同方式处理特殊文件。
-R 复制由 SourceFile 或 SourceDirectory 参数指定的文件或目录下的文件层次结构到由 TargetDirectory 参数指定的目录。特殊文件类型,如先入先出(FIFO)文件和块及字符设备将被重新创建而非复制。符号链接也被跟随,除非指定 -h 标志。(-R 标志优先于 -r 标志。)
如果没有指定 -H、-L 或 -P 选项中的任何一个,则没有指定这些选项中哪一个将用作缺省值。请留心以下内容:
如果指定了 -H 选项,则 cp 命令将根据由指定为 SourceFile 操作数的任何符号链接引用的文件类型和内容来进行操作。
如果指定了 -L 选项,cp 命令将根据由指定为 SourceFile 操作数的任何符号链接或在遍历文件层次结构期间遇到的任何符号链接所引用的文件类型和内容来进行操作。
如果指定了 -P 选项,则 cp 命令将复制指定为 SourceFile 操作数的任何符号链接和在遍历文件层次结构期间遇到的任何符号链接,但不会进行任何符号链接。
-U 将 SourceFile 中的扩展属性(EA)、访问控制表(ACL)复制到 TargetFile。如果目标文件系统上不支持 EA,则它将被忽略。如果目标文件系统上不支持源 ACL 类型,则它将转换为由目标文件系统支持的兼容的 ACL 类型。
– 指示 –(破折号,破折号)标志之后的参数将被解释为文件名。空标志允许以 – (减号)开始的文件名规范。
退出状态
该命令返回以下退出值:
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 和最后的点号间输入一个空格。
要将一个文件复制到新的文件并保留与源文件关联的 ACL 和 EA,请输入:
cp -U smith smith.jr
————小技巧—————
让cp 不要确认
在 /root 找 profile 出來, 把其中類似的
alias cp=’cp -i’
的加 comment 符, 再重新登入就可以了
如 .bash_profile 或 .bashrc
叫 /root/.bash_profile 或 /root/.bashrc