cp的作用
cp命令主要用于复制文件和目录,也可以在复制过程中进行重命名
cp的参数
-a | 通常在复制目录时使用,复制目录下的所有内容(一般会保留链接、文件属性等)。 |
-d | 复制时保留链接。 (这里指的链接就是相当于windows上的快捷方式) |
-r, --recursive | 用于复制目录及其所有的子目录和文件。 |
-i, --interactive | 在复制前提示确认,如果目标文件已存在,就会询问是否覆盖,(这个参数不加也会默认加上)。 |
-l | 不复制文件,只是生成链接文件(类似于windows的快捷方式) |
-f, --force | 表示强制复制,即使目标文件已存在也会覆盖,而且不给出提示 |
-v, --verbose | 显示详细的复制过程 |
cp的案例
cp 拷贝文件 案例
# 先创建一个"file"文件
touch file
# 再创建一个"demo"目录mkdir demo
# 查看一下目录结构(文件和目录都存在)tree
.
├── demo
└── file1 directory, 1 file
# 使用"cp"命令将"file"文件拷贝到"demo"目录中cp file demo/
# 再次查看一下目录结构,看是否拷贝成功tree
.
├── demo
│ └── file
└── file1 directory, 2 files
cp 拷贝并重命名 案例
# 查看目录结构
tree
.
├── demo
│ └── file
└── file1 directory, 2 files
# 使用"cp" 命令并对目标文件进行改名cp file demo/file02
# 再次查看目录结构,发现拷贝到"demo"文件夹中并进行了重命名tree
.
├── demo
│ ├── file
│ └── file02
└── file1 directory, 3 files
cp -r 案例
# 先查看一下目录结构
tree
.
├── demo
│ └── file
└── file1 directory, 2 files
# 再创建一个"demo02"目录mkdir demo02
# 将"demo"目录拷贝到"demo02"目录中cp demo demo02
cp: omitting directory ‘demo’!!! 但是这里出现了错误,说你把这个目录当做了一个文件来执行的,忽略了目录中的文件了,这种情况情况下可以使用 "-r" 参数来递归复制
# 添加上"-r" 参数再次对"demo"目录拷贝到"demo02"目录中cp -r demo demo02
# 再次查看目录结构看是是否拷贝成功tree
.
├── demo
│ └── file
├── demo02
│ └── demo
│ └── file
└── file3 directories, 3 files
cp -i 案例
# 先查看当前目录下的文件目录结构
tree
.
├── demo
│ └── file
└── file1 directory, 2 files
# 拷贝"file"文件到"demo"目录中去cp file demo/
cp: overwrite ‘demo/file’? y!!! 这里出现了一个提示,问是否要覆盖"demo"目录中的文件,同时下面加上了 "-i" 跟这条的提示是一样的,这里就说明 cp = cp -i, 这两个不管使用那个都会出现提示。
# 使用"-i" 参数进行拷贝cp -i file demo
cp: overwrite ‘demo/file’? y
cp -f 案例
# 首先先查看当前目录下的"file"文件内容
cat file
覆盖后
# 然后查看"demo"目录下的"file"的文件内容cat demo/file
覆盖前
# 使用"cp -f" 的参数进行不提示强制覆盖cp -f file demo/file
cp: overwrite ‘demo/file’? n!!! 但是这里还是出现了意思,询问是否要覆盖,这里先选择n个否掉,显然出现了问题.
!## 而在这里出现这个原因可能是因为系统默认对shell设置了一个别名(alias),或者使用了某个特定版本的cp命令,所以我们直接选择使用"/usr/bin/cp"这个绝对路径来尝试一下。
# 使用了"/usr/bin/cp -f" 发现确实解决了这个问题没有出现提示/usr/bin/cp -f file demo/file
# 最后查看一下内容看看是否是覆盖成功cat demo/file
覆盖后