🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# cp命令 [TOC] >[info] cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。 它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。 cp命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误。 ## 语法 cp (选项) (参数) ### 选项 >[success]-a:此参数的效果和同时指定"-dpR"参数相同; -d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录; -f:强行复制文件或目录,不论目标文件或目录是否已存在; -i:覆盖既有文件之前先询问用户; -l:对源文件建立硬连接,而非复制文件; -p:保留源文件或目录的属性; -R/r:递归处理,将指定目录下的所有文件与子目录一并处理; -s:对源文件建立符号连接,而非复制文件; -u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件; -S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀; -b:覆盖已存在的文件目标前将目标文件备份; -v:详细显示命令执行的操作。 ### 参数 >[info] 源文件:指定源文件列表。默认情况下,cp命令不能复制目录,如果要复制目录,则必须使用-R选项 目标文件:指定目标文件。当“源文件”为多个文件时,要求“目标文件”为指定的目录 ## 实例 如果把一个文件复制到一个目标文件中,而目标文件已经存在,那么,该目标文件的内容将被破坏。此命令中所有参数既可以是绝对路径名,也可以是相对路径名。通常会用到点.或点点..的形式。例如,下面的命令将指定文件复制到当前目录下: ~~~ [root@localhost test]# cp /etc/passwd . [root@localhost test]# ls book.txt passwd ~~~ >[danger] 所有目标文件指定的目录必须是己经存在的,cp命令不能创建目录。 如果没有文件复制的权限,则系统会显示出错信息。 ### 复制目录并改名 ~~~ # 将文件 `/etc/passwd` 复制到目录/test/下,并改名为password [root@localhost test]# cp /etc/passwd /test/password [root@localhost test]# ls -l /test/password -rw-r--r-- 1 root root 1577 09-14 19:19 /test/password ~~~ ### 递归的复制目录   ~~~ 将目录`/usr/local/src/nginx-1.2.9`下的所有文件及其子目录复制到目录/test中 [root@localhost test]# cp -r /usr/local/src/nginx-1.2.9 . [root@localhost test]# ls nginx-1.2.9 ~~~ 我们在Linux下使用cp命令复制文件时候,有时候会需要覆盖一些同名文件,覆盖文件的时候都会有提示:需要不停的按Y来确定执行覆盖。 文件数量不多还好,但是要是几百个估计按Y都要吐血了,于是有了下面的这个方法: `cp -r -a aaa/* /bbb` 成功,没有提示按Y、传递了目录属性、没有略过目录。