cp.1
CP(1)
CP(1)
FreeBSD General Commands Manual
CP(1)
cp
—
复制文件
cp
[-R
[-H
| -L
| -P
]] [-f
| -i
| -n
] [-alpsvx
] source_file target_file cp
[-R
[-H
| -L
| -P
]] [-f
| -i
| -n
] [-alpsvx
] source_file ... target_directory
在第一个概要形式中, cp
实用程序将 source_file 的内容复制到 target_file 。 在第二种概要形式中,每个命名的 source_file 的内容都被复制到目标 target_directory 。 文件本身的名称不会更改。 如果 cp
检测到尝试将文件复制到自身,则复制将失败。
可以使用以下选项:
如果指定了 -R
选项,则遵循命令行上的符号链接。 (不遵循树遍历中遇到的符号链接。)
如果指定了 -R
选项,则遵循所有符号链接。
如果指定了 -R
选项,则不遵循符号链接。 这是默认设置。
如果 source_file 指定一个目录,则 cp
复制该目录和在该点连接的整个子树。 如果 source_file 以 / 结尾,则复制目录的内容而不是目录本身。 此选项还导致复制符号链接,而不是间接通过,并让 cp
创建特殊文件而不是将它们复制为普通文件。 创建的目录与对应的源目录具有相同的模式,不被进程的umask修改。
请注意, cp
将硬链接文件复制为单独的文件。 如果您需要保留硬链接,请考虑使用 tar(1) 、 cpio(1) 或 pax(1) 。
存档模式。与 -RpP
相同。
对于每个现有的目标路径名,将其删除并创建一个新文件,无论其权限如何,都不会提示确认。 ( -f
选项覆盖任何以前的 -i
或 -n
选项。)
导致 cp
在复制将覆盖现有文件的文件之前向标准错误输出写入提示。 如果标准输入的响应以字符 ‘y
’ 或 ‘Y
’ 开头,则尝试复制文件。 ( -i
选项覆盖任何以前的 -f
或 -n
选项。)
在层次结构中创建指向常规文件的硬链接,而不是复制。
不要覆盖现有文件。 ( -n
选项覆盖任何以前的 -f
或 -i
选项。)
使 cp
保留副本中每个源文件的以下属性:修改时间、访问时间、文件标志、文件模式、ACL、用户 ID 和组 ID,由权限允许。
如果无法保留用户 ID 和组 ID,则不会显示错误消息并且不会更改退出值。
如果源文件的 set-user-ID 位打开并且用户 ID 无法保留,则 set-user-ID 位不会保留在副本的权限中。 如果源文件的 set-group-ID 位打开且组 ID 无法保留,则 set-group-ID 位不会保留在副本的权限中。 如果源文件的 set-user-ID 和 set-group-ID 位都打开,并且用户 ID 或组 ID 无法保留,则 set-user-ID 和 set-group-ID 位都不会保留在副本的权限。
在层次结构中创建指向常规文件的符号链接,而不是复制。
使 cp
变得冗长,在复制文件时显示文件。
不遍历文件系统挂载点。
对于每个已经存在的目标文件,如果权限允许,其内容将被覆盖。 除非指定了 -p
选项,否则它的模式、用户 ID 和组 ID 不变。
在第二种概要形式中, target_directory 必须存在,除非只有一个名为 source_file 的目录并且指定了 -R
标志。
如果目标文件不存在,则使用源文件的模式,由文件模式创建掩码 (umask
,参见 csh(1)) 。 修改。 如果源文件的 set-user-ID 位打开,则该位将被删除,除非源文件和目标文件都属于同一用户。 如果源文件的 set-group-ID 位打开,则删除该位,除非源文件和目标文件都在同一个组中并且用户是该组的成员。 如果同时设置了 set-user-ID 和 set-group-ID 位,则必须满足上述所有条件,否则这两个位都将被删除。
创建或覆盖文件需要适当的权限。
除非设置了 -R
标志,否则始终遵循符号链接,在这种情况下,默认情况下不遵循符号链接。 -H
或 -L
标志(与 -R
标志一起)导致符号链接被遵循,如上所述。 除非指定了 -R?
选项,否则 -H
-、
-L
和 -P
选项将被忽略。 此外,这些选项相互覆盖,命令的操作由最后一个指定的操作决定。
如果 cp
接收到 SIGINFO
(参见 stty(1) 的 status
参数)信号,则当前输入和输出文件以及完成百分比将被写入标准输出。
The cp
utility exits 0 on success, and >0 if an error occurs.
制作名为 bar 的文件 foo 的副本:
$ cp foo bar
将一组文件复制到 /tmp 目录:
$ cp *.txt /tmp
将目录 junk 及其所有内容(包括任何子目录)复制到 /tmp 目录:
$ cp -R junk /tmp
cp
实用程序的历史版本有一个 -r
选项。 此实现支持该选项,但是,它的行为与历史上的 FreeBSD 行为不同。 强烈建议不要使用此选项,因为该行为取决于实现。 在 FreeBSD 中, -r
是 -RL
的同义词,除非被其他标志修改,否则其工作方式相同。 -r
的历史实现有所不同,因为它们在重新创建层次结构时将特殊文件复制为普通文件。
-l
, -s
, -v
, -x
和 -n
选项是非标准选项,不建议在脚本中使用它们。
mv(1), rcp(1), umask(2), fts(3), symlink(7)
cp
命令预计与 IEEE Std 1003.2 (“POSIX.2”) 兼容。
cp
命令出现在 Version 1 AT&T UNIX 中。
June 6, 2015
FreeBSD 13.1-RELEASE
最后更新于