cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。cp命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误。

    (1)用法:

用法: cp [选项]... [-T]   源文件    目标文件

或: cp  [选项]...         源文件...  目录

或: cp  [选项]... -t      目录         源文件...

    (2)功能:

将源文件复制至目标文件,或将多个源文件复制至目标目录。

    (3)选项参数:

1) -f:                         强行复制文件或目录,不论目标文件或目录是否已存在

2) -i:                         覆盖既有文件之前先询问用户

3) -s:                        对源文件建立符号连接,而非复制文件

4) -b:                        覆盖已存在的文件目标前将目标文件备份

5) -v:                        详细显示命令执行的操作。

6) -f:                         强行复制文件或目录,不论目标文件或目录是否已存在

7) -i:                         覆盖既有文件之前先询问用户;

8) -a:                        等于-dR --preserve=all

9) -R, -r, --recursive               递归复制目录及其子目录内的所有内容

10) -d                                     等于--no-dereference --preserve=links

    (4)实例:

1)[root@localhost Document]# cp mytext cpDir                  将文档拷贝到另一个文件夹下,该文件夹下没有同名文档

[root@localhost Document]# mkdir cpDir
[root@localhost Document]# ll
总用量
drwxr-xr-x. root root 5月 : cpDir
[root@localhost Document]# cat >mytext <<EOF
> this is mytext!
> EOF
[root@localhost Document]# ll
总用量
drwxr-xr-x. root root 5月 : cpDir
-rw-r--r--. root root 5月 : mytext
[root@localhost Document]# cp mytext cpDir
[root@localhost Document]# ls -l ./cpDir
总用量
-rw-r--r--. root root 5月 : mytext
[root@localhost Document]# cat mytext
this is mytext!
[root@localhost Document]# ll
总用量
drwxr-xr-x. root root 5月 : cpDir
-rw-r--r--. root root 5月 : mytext

2)[root@localhost Document]# cp mytext cpDir                 将文档拷贝到另一个文件夹下,该文件夹下有同名文档,因此会提醒是否覆盖。

[root@localhost Document]# ll
总用量
drwxr-xr-x. root root 5月 : cpDir
-rw-r--r--. root root 5月 : mytext
[root@localhost Document]# cat >mytext <<EOF
> Modify the text !
> EOF
[root@localhost Document]# cp mytext cpDir
cp:是否覆盖"cpDir/mytext"? y
[root@localhost Document]# cat ./cpDir/mytext
Modify the text !

3)[root@localhost Document]# cp newDir Dir1              将newDir拷贝一份到Dir1目录下(当Dir1文件夹存在时);将newDir下的所有东西拷贝一份到新建的Dir2目录(Dir2不存在)

[root@localhost Document]# ll
总用量
[root@localhost Document]# mkdir newDir
[root@localhost Document]# touch ./newDir/{text1.txt,text2.txt}
[root@localhost Document]# ll
总用量
drwxr-xr-x. root root 5月 : newDir
[root@localhost Document]# mkdir Dir1
[root@localhost Document]# cp newDir Dir1 //没加-a参数会报错
cp: 略过目录"newDir"
[root@localhost Document]# cp -a newDir Dir1 //Dir1存在
[root@localhost Document]# cp -a newDir Dir2 //Dir2不存在
[root@localhost Document]# ll
总用量
drwxr-xr-x. root root 5月 : Dir1
drwxr-xr-x. root root 5月 : Dir2
drwxr-xr-x. root root 5月 : newDir
[root@localhost Document]# ls ./Dir1 //存在的效果
newDir
[root@localhost Document]# ls ./Dir2 //不存在的效果
text1.txt text2.txt

4)[root@localhost newDir]# cp -s text1.txt t1_link       建立一个指向text1.txt的快捷方式 :t1_link

[root@localhost Document]# cp -s newDir newDir_link                //貌似文件夹的快捷方式只用-s参数不能创建
cp: 略过目录"newDir"
[root@localhost Document]# ll
总用量
drwxr-xr-x. root root 5月 : Dir1
drwxr-xr-x. root root 5月 : Dir2
drwxr-xr-x. root root 5月 : newDir
[root@localhost Document]# cd newDir
[root@localhost newDir]# ll
总用量
-rw-r--r--. root root 5月 : text1.txt
-rw-r--r--. root root 5月 : text2.txt
[root@localhost newDir]# cp -s text1.txt t1_link
[root@localhost newDir]# ll
总用量
lrwxrwxrwx. root root 5月 : t1_link -> text1.txt
-rw-r--r--. root root 5月 : text1.txt
-rw-r--r--. root root 5月 : text2.txt

5)[root@localhost Document]# cp -as newDir newDir_link        创建文件夹的快捷方式

[root@localhost Document]# cp -as  newDir newDir_link     //a参数指定所有的newDir包括其内的内容创建快捷方式,但这里貌似有点限制
cp: "newDir_link/text1.txt":只能于当前目录中创建相对的符号链接
cp: "newDir_link/text2.txt":只能于当前目录中创建相对的符号链接
cp: "newDir_link/t1_link":只能于当前目录中创建相对的符号链接
[root@localhost Document]# ll
总用量
drwxr-xr-x. root root 5月 : Dir1
drwxr-xr-x. root root 5月 : Dir2
drwxr-xr-x. root root 5月 : newDir
drwxr-xr-x. root root 5月 : newDir_link //文件夹快捷方式创建成功

6)[root@localhost Document]# cp -a newDir text1与[root@localhost Document]# cp -r newDir text2

[root@localhost Document]# ll
总用量 0
[root@localhost Document]# mkdir newDir
[root@localhost Document]# touch ./newDir/{t1,t2}
[root@localhost Document]# mkdir text1 text2
[root@localhost Document]# cp -a newDir text1 //text1用-a参数
[root@localhost Document]# cp -r newDir text2 //text2用-r参数
[root@localhost Document]# ls -l text1/*
总用量 0
-rw-r--r--. 1 root root 0 5月 6 22:02 t1
-rw-r--r--. 1 root root 0 5月 6 22:02 t2
[root@localhost Document]# ls -l text2/*
总用量 0
-rw-r--r--. 1 root root 0 5月 6 22:03 t1
-rw-r--r--. 1 root root 0 5月 6 22:03 t2
[root@localhost Document]# cp -a newDir text3
[root@localhost Document]# cp -r newDir text4
[root@localhost Document]# ls -l text3/*
-rw-r--r--. 1 root root 0 5月 6 22:02 text3/t1
-rw-r--r--. 1 root root 0 5月 6 22:02 text3/t2
[root@localhost Document]# ls -l text4/*
-rw-r--r--. 1 root root 0 5月 6 22:04 text4/t1
-rw-r--r--. 1 root root 0 5月 6 22:04 text4/t2
[root@localhost Document]# ll
总用量 0
drwxr-xr-x. 2 root root 30 5月 6 22:02 newDir
drwxr-xr-x. 3 root root 19 5月 6 22:03 text1
drwxr-xr-x. 3 root root 19 5月 6 22:03 text2
drwxr-xr-x. 2 root root 30 5月 6 22:02 text3
drwxr-xr-x. 2 root root 30 5月 6 22:04 text4
[root@localhost Document]# cd text1
[root@localhost text1]# ll
总用量 0
drwxr-xr-x. 2 root root 30 5月 6 22:02 newDir
[root@localhost text1]# cd ../text2
[root@localhost text2]# ll
总用量 0
drwxr-xr-x. 2 root root 30 5月 6 22:03 newDir
[root@localhost text2]# cd ../text3
[root@localhost text3]# ll
总用量 0
-rw-r--r--. 1 root root 0 5月 6 22:02 t1
-rw-r--r--. 1 root root 0 5月 6 22:02 t2
[root@localhost text3]# cd ../text4
[root@localhost text4]# ll
总用量 0
-rw-r--r--. 1 root root 0 5月 6 22:04 t1
-rw-r--r--. 1 root root 0 5月 6 22:04 t2 //-a和-r没有差别,cp命令的差别主要集中在第二个参数是否存在上,与此同时,ls -l命令的效果也有所差别

7)[root@localhost Document]# cp mytext{,.txt}   复制一份加上后缀存起来

[root@localhost Document]# touch mytext
[root@localhost Document]# cp mytext{,.txt}
[root@localhost Document]# ll
总用量
-rw-r--r--. root root 5月 : mytext
-rw-r--r--. root root 5月 : mytext.txt
drwxr-xr-x. root root 5月 : newDir
drwxr-xr-x. root root 5月 : text1
drwxr-xr-x. root root 5月 : text2
drwxr-xr-x. root root 5月 : text3
drwxr-xr-x. root root 5月 : text4

8)[root@localhost Document]# cp --help

[root@localhost Document]# cp --help
用法:cp [选项]... [-T] 源文件 目标文件
 或:cp [选项]... 源文件... 目录
 或:cp [选项]... -t 目录 源文件...
Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY. Mandatory arguments to long options are mandatory for short options too.
-a, --archive 等于-dR --preserve=all
--attributes-only 仅复制属性而不复制数据 --backup[=CONTROL 为每个已存在的目标文件创建备份
-b 类似--backup 但不接受参数
--copy-contents 在递归处理是复制特殊文件内容
-d 等于--no-dereference --preserve=links
-f, --force if an existing destination file cannot be
opened, remove it and try again (this option
is ignored when the -n option is also used)
-i, --interactive prompt before overwrite (overrides a previous -n
option)
-H follow command-line symbolic links in SOURCE
-l, --link hard link files instead of copying
-L, --dereference always follow symbolic links in SOURCE
-n, --no-clobber 不要覆盖已存在的文件(使前面的 -i 选项失效)
-P, --no-dereference 不跟随源文件中的符号链接
-p 等于--preserve=模式,所有权,时间戳
--preserve[=属性列表 保持指定的属性(默认:模式,所有权,时间戳),如果
可能保持附加属性:环境、链接、xattr 等
-c deprecated, same as --preserve=context
--sno-preserve=属性列表 不保留指定的文件属性
--parents 复制前在目标目录创建来源文件路径中的所有目录
-R, -r, --recursive 递归复制目录及其子目录内的所有内容
--reflink[=WHEN] 控制克隆/CoW 副本。请查看下面的内如。
--remove-destination 尝试打开目标文件前先删除已存在的目的地
文件 (相对于 --force 选项)
--sparse=WHEN 控制创建稀疏文件的方式
--strip-trailing-slashes 删除参数中所有源文件/目录末端的斜杠
-s, --symbolic-link 只创建符号链接而不复制文件
-S, --suffix=后缀 自行指定备份文件的后缀
-t, --target-directory=目录 将所有参数指定的源文件/目录
复制至目标目录
-T, --no-target-directory 将目标目录视作普通文件
-u, --update 只在源文件比目标文件新,或目标文件
不存在时才进行复制
-v, --verbose 显示详细的进行步骤
-x, --one-file-system 不跨越文件系统进行操作
-Z, --context[=CTX] set SELinux security context of destination
file to default type, or to CTX if specified
--help 显示此帮助信息并退出
--version 显示版本信息并退出 默认情况下,源文件的稀疏性仅仅通过简单的方法判断,对应的目标文件目标文件也
被为稀疏。这是因为默认情况下使用了--sparse=auto 参数。如果明确使用
--sparse=always 参数则不论源文件是否包含足够长的0 序列也将目标文件创文
建为稀疏件。
使用--sparse=never 参数禁止创建稀疏文件。 当指定了--reflink[=always] 参数时执行轻量化的复制,即只在数据块被修改的
情况下才复制。如果复制失败或者同时指定了--reflink=auto,则返回标准复制模式。 The backup suffix is '~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.
The version control method may be selected via the --backup option or through
the VERSION_CONTROL environment variable. Here are the values: none, off 不进行备份(即使使用了--backup 选项)
numbered, t 备份文件加上数字进行排序
existing, nil 若有数字的备份文件已经存在则使用数字,否则使用普通方式备份
simple, never 永远使用普通方式备份 有一个特别情况:如果同时指定--force 和--backup 选项,而源文件和目标文件
是同一个已存在的一般文件的话,cp 会将源文件备份。 GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
请向<http://translationproject.org/team/zh_CN.html> 报告cp 的翻译错误
要获取完整文档,请运行:info coreutils 'cp invocation'

9)[root@localhost Document]# cp --version

[root@localhost Document]# cp --version
cp (GNU coreutils) 8.22
Copyright (C) Free Software Foundation, Inc.
许可证:GPLv3+:GNU 通用公共许可证第3 版或更新版本<http://gnu.org/licenses/gpl.html>。
本软件是自由软件:您可以自由修改和重新发布它。
在法律范围内没有其他保证。 由Torbjörn Granlund、David MacKenzie 和Jim Meyering 编写。

    (5)其他;

注意:

一般情况下,shell会设置一个别名,在命令行下复制文件时,如果目标文件已经存在,就会询问是否覆盖,不管你是否使用-i参数。但是如果是在shell脚本中执行cp时,没有-i参数时不会询问是否覆盖。这说明命令行和shell脚本的执行方式有些不同。

命令行与shell脚本:

shell命令就是你说的终端的命令,shell翻译成壳的意思,它是包裹在linux内核外层的,一个可通过一系列的linux命令对操作系统发出相关指令的人机界面。shell可以通过其条件语句和循环语句等,把一系列linux命令结合在一起,形成一个相当于面向过程的程序,shell script,来实现一些较为复杂的功能。 总括,shell是linux命令集的概称,是属于命令行的人机界面。linux的shell script 是由命令加一些条件组合起来的。

shell命令就是终端命令,shell编程其实和windows的批处理差不多,区别的是,shell的语言功能比批处理强大

每天一个Linux命令(10)cp命令的更多相关文章

  1. Linux系统性能10条命令监控

    Linux系统性能10条命令监控 概述 通过执行以下命令,可以在1分钟内对系统资源使用情况有个大致的了解. uptime dmesg | tail vmstat 1 mpstat -P ALL 1 p ...

  2. 【Linux常见命令】cp命令

    cp - copy files and directories 拷贝文件或目标文件夹,默认不能直接拷贝目录,通过-r参数设置递归复制目录 copy 语法: cp [OPTION]... [-T] SO ...

  3. 【Linux 命令】cp 命令详解

    Linux 命令之 cp 命令详解 一.cp 命令简介 cp 命令主要用于复制文件或目录.即用来将一个或多个源文件或者目录复制到指定的目的文件或目录. cp 命令可以将单个源文件复制成一个指定文件名的 ...

  4. Linux命令学习-cp命令

    Linux中,cp命令的全称是copy,主要作用是复制文件或文件夹,类似于Windows下的复制功能. 假设当前处于wintest用户的主目录,路径为 /home/wintest ,存在文件夹test ...

  5. Linux系统性能10条命令

    概述 通过执行以下命令,可以在1分钟内对系统资源使用情况有个大致的了解. uptime dmesg | tail vmstat 1 mpstat -P ALL 1 pidstat 1 iostat - ...

  6. Linux下远程cp命令scp

    2014-2.19  PS1.在用此命令cpLinux与Linux之间的数据时发现有些服务器上默认没有安装scp但用yum -y install scp提示么有这样的包 后来发现原来scp工具的安装包 ...

  7. 动手实现linux中的cp命令(可自行拓展)

    我们在学习系统编程的时候,一定会有这样的经历,让你动手实现一个简单的cp命令,也就是拷贝相应的文件到对应的目录,或者说是复制吧,当然,实现非常的简单,我们来看看源码吧: #include <st ...

  8. linux常用命令:cp 命令

    cp命令用来复制文件或者目录,是Linux系统中最常用的命令之一.一般情况下,shell会设置一个别名,在命令行下复制文件时,如果目标文件已经存在,就会询问是否覆盖,不管你是否使用-i参数.但是如果是 ...

  9. 详解linux中install命令和cp命令的区别

    基本上,在Makefile里会用到install,其他地方会用cp命令. 它们完成同样的任务——拷贝文件,它们之间的区别主要如下: .最重要的一点,如果目标文件存在,cp会先清空文件后往里写入新文件, ...

  10. linux常用命令(7)cp命令

    cp命令用来复制文件或者目录,是Linux系统中最常用的命令之一.一般情况下,shell会设置一个别名,在命令行下复制文件时,如果目标文件已经存在,就会询问是否覆盖,不管你是否使用-i参数.但是如果是 ...

随机推荐

  1. 1079 Total Sales of Supply Chain (25 分)(树的遍历)

    给出一颗销售供应的树,树根唯一.在树根处货物的价格为p,然后从根节点开始没往结点走一层,该层的货物价格将会在父节点的价格上增加r%.给出每个叶节点的货物量求出他们的价格之和 #include<b ...

  2. python pip install XXX出现报错问题

    重装Anacondas后,将pip 和python.exe路径加入到环境变量后直接在cmd窗口进行pip 操作,报错如下 报错内容为: pip is configured with locations ...

  3. Scrapy爬取到的中文数据乱码问题处理

    Scrapy爬取到中文数据默认是 Unicode编码的,于是显示是这样的: "country": ["\u56fd\u4ea7\u6c7d\u8f66\u6807\u5f ...

  4. js万年历

    首先,注意: 1.延迟执行     window.setTimeout(    ,     )     里面的时间是以毫秒计算的 2.间隔执行    window.setInterval(     , ...

  5. 第一次软件工程作业补充plus

    一.代码的coding地址:coding地址. 二.<构建之法>读后问题以及感言(补充): 1.对于7.3MSF团队模型,7.2.6保持敏捷,预期和适应变化,中的"我们是预期变化 ...

  6. 后端model传入前端JSP页面中的值判断后再取值

    所遇到的问题后端model传入前端JSP页面中的值通过foreach循环内要满足条件才能取值给Div中,我们知道jsp页面中可以直接用EL表达式取值,格式就是${"model中传来的数据&q ...

  7. 【Android】实验5 数独游戏界面设计-报告提交时间:2016.4.15

  8. 【bzoj1070】[SCOI2007]修车 最小费用流

    原文地址:http://www.cnblogs.com/GXZlegend/p/6798411.html 题目描述 同一时刻有N位车主带着他们的爱车来到了汽车维修中心.维修中心共有M位技术人员,不同的 ...

  9. MPSVPX 配置

    MPSVPX 配置 设置主机名,IP地址,掩码,网关,DNS服务器,时区(使用WebGUI界面设置). bash-2.05b# cat svm.conf arp -d -a route flush i ...

  10. BZOJ1055[HAOI2008]玩具取名 【区间dp + 记忆化搜索】

    题目 某人有一套玩具,并想法给玩具命名.首先他选择WING四个字母中的任意一个字母作为玩具的基本名字.然后 他会根据自己的喜好,将名字中任意一个字母用“WING”中任意两个字母代替,使得自己的名字能够 ...