Linux中的`cp`命令用于复制文件或目录。其基本语法如下:
```
cp [选项] 源文件... 目标位置
```
常用选项和参数
`-a` 或 `--archive`:递归地复制目录,并保留文件属性(类似于`-dR`选项的组合)。
`-r` 或 `--recursive`:递归地复制目录及其内容。
`-u` 或 `--update`:仅在源文件比目标文件新或目标文件不存在时进行复制。
`-v` 或 `--verbose`:显示详细的复制过程。
`-i` 或 `--interactive`:覆盖目标文件前提示确认。
`-f` 或 `--force`:强制复制文件,覆盖只读文件和不存在的目标文件。
`-p` 或 `--preserve`:保留文件的属性,如权限、所有者和时间戳。
`-b` 或 `--backup`:在覆盖目标文件时备份旧文件,备份的文件或目录亦建立为符号链接,并指向源文件或目录。
`-P` 或 `--parents`:保留源文件或目录的路径,此路径可以是绝对路径或相对路径,且目的目录必须已经存在。
`-s` 或 `--symbolic-link`:对源文件建立符号链接,而非复制文件。
`-S` 或 `--suffix= :用`-b`参数备份目的文件后,备份文件的字尾会被加上一个备份字符串,默认为`~`。
`-x` 或 `--one-file-system`:复制的文件或目录存放的文件系统,必须与cp指令执行时所处的文件系统相同,否则不复制,亦不处理位于其他分区的文件。
`--help`:显示在线帮助。
`--sparse= :设置保存稀疏文件的时机。
`--version`:显示版本信息。
示例
复制单个文件
```
cp file.txt file_backup.txt
```
复制多个文件到目录
```
cp file1.txt file2.txt /backup/
```
递归复制目录及其内容
```
cp -r dir1 dir2
```
强制复制文件,覆盖已存在的目标文件
```
cp -f source.txt destination.txt
```
在覆盖目标文件前提示确认
```
cp -i source.txt destination.txt
```
保留文件属性(权限、所有者和时间戳)
```
cp -p source.txt destination.txt
```
在复制过程中备份旧文件
```
cp -b source.txt destination.txt
```
复制整个目录并保留文件属性
```
cp -a source_dir/ destination_dir/
```
注意事项
当源文件和目标位置参数都是文件时,`cp`命令将第一个文件复制到第二个文件。如果文件不存在,则命令会创建它。
当源文件有多个文件或目录作为参数时,目标位置参数必须是目录。在这种情况下,源文件文件和目录被移动到目标位置目录。
当源文件和目标位置参数都是目录时,`cp`命令将第一个目录复制到第二个目录中。
要复制文件和目录,您至少需要对源文件有读取权限,对目标目录有写入权限。否则,会显示权限拒绝错误。