Linux 命令(文件和目录管理 - cp)
2016-10-19 16:55
232 查看
简述
cp 命令用来复制文件或目录。当复制多个文件时,目标文件参数必须为已经存在的目录。cp 命令默认不能复制目录,复制目录必须使用 -R 选项。简述
命令介绍
命令选项
使用范例
命令介绍
命令名称cp
命令全称
copy
基本语法
cp [选项]… [-T] 源文件 目标文件
或:cp [选项]… 源文件… 目录
或:cp [选项]… -t 目录 源文件…
功能描述
将源文件复制至目标文件,或将多个源文件复制至目标目录。
命令选项
选项 | 说明 |
---|---|
-a, --archive | 等于-dR --preserve=all |
--backup[=CONTROL] | 为每个已存在的目标文件创建备份 |
-b | 类似 --backup,但不接受参数 |
-d | 等于--no-dereference --preserve=links |
-f, --force | 强行复制文件或目录,不论目标文件或目录是否已存在。 |
-i, --interactive | 覆盖既有文件之前先询问用户 |
-l, --link | 对源文件建立硬连接,而非复制文件。 |
-n, --no-clobber | 不要覆盖已存在的文件(使前面的 -i选项失效) |
-P, --no-dereference | 不跟随源文件中的符号链接 |
-p, --preserve | 保留源文件或目录的属性(默认:模式、所有权、时间戳) |
-R, -r, --recursive | 递归复制目录及其子目录内的所有内容 |
-s, --symbolic-link | 只创建符号链接而不复制文件 |
-S, --suffix=SUFFIX | 自行指定备份文件的后缀 |
-t, --target-directory=DIRECTORY | 将所有参数指定的源文件/目录复制至目标目录 |
-T, --no-target-directory | 将目标目录视作普通文件 |
-u, --update | 当目标文件不存在,或者源文件比目标文件新时,才执行复制操作。 |
-v, --verbose | 显示详细的进行步骤 |
--help | 在标准输出上显示帮助信息并退出 |
--version | 在标准输出上显示版本信息并退出 |
使用范例
1.不带任何参数下,运行 cp这是 cp 命令最基础的使用,将文件从一个位置到另一个位置。
[wang@localhost c++]$ ls *.c hello.c [wang@localhost c++]$ ls /home/wang/script/ [wang@localhost c++]$ cp hello.c /home/wang/script/ [wang@localhost c++]$ ls *.c hello.c [wang@localhost c++]$ ls /home/wang/script/ hello.c
注意:和 mv 命令不同的是:cp 拷贝后,原文件依然存在。
2.同时拷贝多个文件
要同时拷贝多个文件,只需要将多个文件用空格隔开。
[wang@localhost c++]$ ls /home/wang/script/ hello.c [wang@localhost c++]$ cp qt5_cadaques.pdf qwt.pdf /home/wang/script/ [wang@localhost c++]$ ls /home/wang/script/ hello.c qt5_cadaques.pdf qwt.pdf
3.拷贝一个目录
要拷贝一个目录,需要添加
-r或者
-R选项来递归实现。
[wang@localhost doc]$ tree linux/ linux/ └── linux-program.pdf 0 directories, 1 file [wang@localhost doc]$ tree /home/wang/script/ /home/wang/script/ ├── hello.c ├── qt5_cadaques.pdf └── qwt.pdf 0 directories, 3 files [wang@localhost doc]$ cp -r linux/ /home/wang/script/ [wang@localhost doc]$ tree /home/wang/script/ /home/wang/script/ ├── hello.c ├── linux │ └── linux-program.pdf ├── qt5_cadaques.pdf └── qwt.pdf 1 directory, 4 files
4.创建文件的硬链接,而不是拷贝
拷贝文件意味着必须使用一些存储空间来储存拷贝的文件。有时候出于某种原因,可能想要创建“快捷方式”或者链接到文件,而不是拷贝。要做到这一点,可以使用
-l选项。
[wang@localhost doc]$ ls -lvi debug.log 4243086 -rw-rw-r--. 1 wang wang 368640 9月 30 16:23 debug.log [wang@localhost doc]$ cp -l debug.log /home/wang/script/ [wang@localhost doc]$ ls -lvi /home/wang/script/debug.log 4243086 -rw-rw-r--. 2 wang wang 368640 9月 30 16:23 /home/wang/script/debug.log
可以看出,我们看到 debug.log 的硬链接已经拷贝到 /home/wang/script/目录下,并标记有同样的 inode 4243086。
5.创建文件的符号链接
如果要创建软链接(符号链接),用
-s选项来实现。
[wang@localhost doc]$ cp -s /home/wang/script/debug.log debug_link.log [wang@localhost doc]$ ls -l debug_link.log lrwxrwxrwx. 1 wang wang 27 10月 19 15:59 debug_link.log -> /home/wang/script/debug.log
注意:创建符号链接只能在当前目录下进行。
6.不随符号链接拷贝原文件
只拷贝符号链接文件,可以用
-P选项来实现。当对符号链接使用 cp 命令,它会照原样拷贝它自身。
[wang@localhost doc]$ ls -l debug_link.log lrwxrwxrwx. 1 wang wang 27 10月 19 15:59 debug_link.log -> /home/wang/script/debug.log [wang@localhost doc]$ cp -P debug_link.log debug_link2.log [wang@localhost doc]$ ls -l debug_link2.log lrwxrwxrwx. 1 wang wang 27 10月 19 16:06 debug_link2.log -> /home/wang/script/debug.log
显然,cp 命令照原样拷贝 debug_link.log 自身,文件类型仍然是一个符号链接。
7.随符号链接拷贝原文件
可以试一下
-L选项。基本上,这个刚好与上面的
-P选项相反。
[wang@localhost doc]$ ls -l debug_link.log lrwxrwxrwx. 1 wang wang 27 10月 19 15:59 debug_link.log -> /home/wang/script/debug.log [wang@localhost doc]$ cp -L debug_link.log debug_link3.log [wang@localhost doc]$ ls -l debug_link3.log -rw-rw-r--. 1 wang wang 368640 10月 19 16:09 debug_link3.log
使用这个选项,拷贝的文件将会和 debug_link.log 原文件一样。可以从文件大小看出来。拷贝的文件有 368640 字节,而当 debug_link.log 作为符号链接时文件大小只有 27 字节。
8.文件归档
当拷贝一个目录时,会用
-r或者
-R选项。但是也可以用
-a选项来归档文件。这样会创建文件和目录的准确套录,如果有的话也可以包括符号链接。
[wang@localhost ~]$ ls -l doc 总用量 360 drwxrwxr-x. 2 wang wang 57 10月 19 15:54 c++ lrwxrwxrwx. 1 wang wang 27 10月 19 15:59 debug_link.log -> /home/wang/script/debug.log -rw-rw-r--. 1 wang wang 368640 10月 19 15:53 debug.log drwxrwxr-x. 2 wang wang 30 10月 19 15:53 linux [wang@localhost ~]$ cp -a doc /home/wang/program/ [wang@localhost ~]$ ls -l /home/wang/program/doc/ 总用量 360 drwxrwxr-x. 2 wang wang 57 10月 19 15:54 c++ lrwxrwxrwx. 1 wang wang 27 10月 19 15:59 debug_link.log -> /home/wang/script/debug.log -rw-rw-r--. 1 wang wang 368640 10月 19 15:53 debug.log drwxrwxr-x. 2 wang wang 30 10月 19 15:53 linux
上列的命令会拷贝一个名为 doc 的目录到 /home/wang/program 目录下,debug_link.log 依然作为符号链接被复制。
9.显示详细的进行步骤
默认情况下,当拷贝成功时,仅会再次看到命令提示符。如果想了解在拷贝文件时都发生了什么,可以用
-v选项。
[wang@localhost c++]$ cp -v *.pdf /home/wang/program/ "qt5_cadaques.pdf" -> "/home/wang/program/qt5_cadaques.pdf" "qwt.pdf" -> "/home/wang/program/qwt.pdf"
10.使用交互模式
使用
-i选项,启用交互模式,会询问是否覆盖目标目录下的文件。
[wang@localhost c++]$ cp -i qwt.pdf /home/wang/program/ cp:是否覆盖"/home/wang/program/qwt.pdf"? y
11.创建备份文件
当目标目录已经含有同名文件,默认情况下 cp 命令会覆盖目标目录下的同名文件。使用
--backup选项,cp 命令会为每一个现有的目标文件做一个备份。
[wang@localhost c++]$ cp -bv qwt.pdf /home/wang/program/ "qwt.pdf" -> "/home/wang/program/qwt.pdf" (备份:"/home/wang/program/qwt.pdf~") [wang@localhost c++]$ ls -l /home/wang/program/ 总用量 12400 drwxrwxr-x. 4 wang wang 65 10月 19 16:21 doc -rw-r--r--. 1 wang wang 7484327 10月 19 16:27 qt5_cadaques.pdf -rw-r--r--. 1 wang wang 2604948 10月 19 16:35 qwt.pdf -rw-r--r--. 1 wang wang 2604948 10月 19 16:32 qwt.pdf~
目标目录下出现了名为 qwt.pdf 和 qwt.pdf~ 的文件,波浪符号(~)意味着文件是备份文件。从属性中可以看到,备份文件比 qwt.pdf 要旧。
12.只拷贝文件属性
选项
--attributes-only,顾名思义,只会拷贝文件名及其属性,不会拷贝任何数据。
[wang@localhost c++]$ cp --attributes-only hello.c hello_attr_only.c [wang@localhost c++]$ ls -l hello* -rw-rw-r--. 1 wang wang 0 10月 19 16:41 hello_attr_only.c -rw-rw-r--. 1 wang wang 60 10月 19 15:53 hello.c
可以看出,原文件 hello.c 有 60 字节大小,拷贝的文件只有 0 字节大小,这是因为文件内容并没有拷贝。
13.强制拷贝
使用
-f选项会强制进行拷贝操作。如果目标文件不能打开,可以用
-f尝试。
[wang@localhost c++]$ cp -fv hello.c hello2.c "hello.c" -> "hello2.c"
相关文章推荐
- 20160218自学Linux_根文件目录介绍+目录管理命令学习(mkdir,rmdir,tree,touch,stat,rm,nano,cp,mv,insatll)
- Linux 文件的管理与目录之 ls 、 cp 命令操作详解
- linux之关于文件和目录管理的相关命令
- linux常用命令之文件与目录管理
- Linux cp 命令的15个示例 - 创建文件和目录的副本
- Linux文件与目录管理常用命令详解(鸟哥的Linux私房菜基础学习篇第三版-第七章)
- Linux命令工具基础02 文件及目录管理
- Linux命令:cp (copy)复制文件或目录
- Linux 文件与目录管理+用户管理命令(详解+练习)
- Linux文件和目录管理相关命令
- Linux cp 命令的15个示例 - 创建文件和目录的副本
- Linux文件与目录管理命令
- Linux常用命令备忘(启动管理、文件或目录管理、系统管理)
- linux文件及目录命令管理
- Linux文件、目录管理权限命令--setfacl与getfacl
- linux目录文件管理命令
- 《鸟哥的私房菜》(第二版)第七章 Linux文件和目录管理 简要命令笔记
- Linux命令:cp (copy)复制文件或目录
- Linux命令之目录切换、创建/删除/复制/移动文件 - cd,mkdir,cp,mv,rmdir,rm
- Linux学习笔记之--常用文件操作及目录管理命令