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

1.命令格式:

用法:

cp [选项]... [-T] 源 目的

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

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

2.命令功能:

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

3.命令参数:

-a, --archive      等于-dR --preserve=all

--backup[=CONTROL  为每个已存在的目标文件创建备份

-b                      类似--backup 但不接受参数

--copy-contents           在递归处理是复制特殊文件内容

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

-f, --force             如果目标文件无法打开则将其移除并重试(当 -n 选项存在时则不需再选此项)

-i, --interactive            覆盖前询问(使前面的 -n 选项失效)

-H                               跟随源文件中的命令行符号链接

-l, --link                  链接文件而不复制

-L, --dereference        总是跟随符号链接

-n, --no-clobber          不要覆盖已存在的文件(使前面的 -i 选项失效)

-P, --no-dereference       不跟随源文件中的符号链接

-p                                    等于--preserve=模式,所有权,时间戳

--preserve[=属性列表      保持指定的属性(默认:模式,所有权,时间戳),如果可能保持附加属性:环境、链接、xattr 等

-R, -r, --recursive  复制目录及目录内的所有项目

4.命令实例:

实例一:复制单个文件到目标目录,文件在目标文件中不存在

命令:

cp log.log test5

输出:

[root@localhost test]# cp log.log test5

[root@localhost test]# ll

-rw-r--r--  root root     - : log.log

drwxr-xr-x  root root  - : scf

drwxrwxrwx  root root  - : test3

drwxr-xr-x  root root  - : test5

[root@localhost test]# cd test5

[root@localhost test5]# ll

-rw-r--r--  root root  - : log5-.log

-rw-r--r--  root root  - : log5-.log

-rw-r--r--  root root  - : log5-.log

-rw-r--r--  root root  - : log.log

说明:

  在没有带-a参数时,两个文件的时间是不一样的。在带了-a参数时,两个文件的时间是一致的。

实例二:目标文件存在时,会询问是否覆盖

命令:

cp log.log test5

输出:

[root@localhost test]# cp log.log test5

cp:是否覆盖“test5/log.log”? n

[root@localhost test]# cp -a log.log test5

cp:是否覆盖“test5/log.log”? y

[root@localhost test]# cd test5/

[root@localhost test5]# ll

-rw-r--r--  root root  - : log5-.log

-rw-r--r--  root root  - : log5-.log

-rw-r--r--  root root  - : log5-.log

-rw-r--r--  root root  - : log.log

说明:

  目标文件存在时,会询问是否覆盖。这是因为cp是cp -i的别名。目标文件存在时,即使加了-f标志,也还会询问是否覆盖。

实例三:复制整个目录

命令:

输出:

目标目录存在时:

[root@localhost test]# cp -a test3 test5 

[root@localhost test]# ll

-rw-r--r--  root root     - : log.log

drwxr-xr-x  root root  - : scf

drwxrwxrwx  root root  - : test3

drwxr-xr-x  root root  - : test5

[root@localhost test]# cd test5/

[root@localhost test5]# ll

-rw-r--r--  root root     - : log5-.log

-rw-r--r--  root root     - : log5-.log

-rw-r--r--  root root     - : log5-.log

-rw-r--r--  root root     - : log.log

drwxrwxrwx  root root  - : test3

目标目录不存在时:

[root@localhost test]# cp -a test3 test4

[root@localhost test]# ll

-rw-r--r--  root root     - : log.log

drwxr-xr-x  root root  - : scf

drwxrwxrwx  root root  - : test3

drwxrwxrwx  root root  - : test4

drwxr-xr-x  root root  - : test5

[root@localhost test]#

说明:

  注意目标目录存在与否结果是不一样的。目标目录存在时,整个源目录被复制到目标目录里面。

实例四:复制的 log.log 建立一个连结档 log_link.log

命令:

cp -s log.log log_link.log

输出:

[root@localhost test]# cp -s log.log log_link.log

[root@localhost test]# ll

lrwxrwxrwx  root root     - : log_link.log -> log.log

-rw-r--r--  root root     - : log.log

drwxr-xr-x  root root  - : scf

drwxrwxrwx  root root  - : test3

drwxrwxrwx  root root  - : test4

drwxr-xr-x  root root  - : test5

说明:

  那个 log_link.log 是由 -s 的参数造成的,建立的是一个『快捷方式』,所以您会看到在文件的最右边,会显示这个文件是『连结』到哪里去的!

linux常用命令:cp 命令的更多相关文章

  1. ## 本篇文章对linux常用的一些命令做一下总结,如有需要补充以及不懂得地方,请在下方留言 适合于linux初学者,以及对命令掌握不牢的用来备忘

    本篇文章对linux常用的一些命令做一下总结,如有需要补充以及不懂得地方,请在下方留言 适合于linux初学者,以及对命令掌握不牢的用来备忘一,磁盘管理1.显示当前目录位置 pwd2.切换目录 cd ...

  2. Linux 常用的压缩命令有 gzip 和 zip

    Linux 常用的压缩命令有 gzip 和 zip,两种压缩包的结尾不同:zip 压缩的后文件是 *.zip ,而 gzip 压缩后的文件 *.gz 相应的解压缩命令则是 gunzip 和 unzip ...

  3. 每天一个命令-cp 命令

    cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录.它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下.cp命令还支持同时复制多个文件,当一次复制多个文件时,目标文 ...

  4. 每天一个Linux常用命令 cp命令

    Linux cp命令主要用于复制文件或目录 -a:此选项通常在复制目录时使用,它保留链接.文件属性,并复制目录下的所有内容.其作用等于dpR参数组合. -d:复制时保留链接.这里所说的链接相当于Win ...

  5. LINUX常用配置及命令

    一.   Fedora系统配置 1.      [设置网卡IP] 步骤如下: 1)     用root用户登陆,打开/etc/sysconfig/network-scripts/ifcfg-eth0文 ...

  6. Linux常用的基础命令总结

    man 查看英文命令帮助   可以看作--help 拷贝目录的命令cp -a  包含所有 ls -a 显示所有文件包括隐藏文件  -ld ls -F 过滤目录文件(给不同类型文件结尾加上不同的符号) ...

  7. linux常用20条命令

    1.cd命令 这是一个非常基本,也是大家经常需要使用的命令,它用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径.如: cd /root/Docements # 切换到 ...

  8. linux常用配置文件和命令总结

    常用配置文件说明: 1..设置-n永远生效:Vim的配置文件:命令模式想永久生效, ~/.vimrc,新建文件,在里面输入保存即可 2.设置别名永远生效:在~/.bashrc  修改当前用户家目录里的 ...

  9. Java线上问题排查思路及Linux常用问题分析命令学习

    前言 之前线上有过一两次OOM的问题,但是每次定位问题都有点手足无措的感觉,刚好利用星期天,以测试环境为模版来学习一下Linux常用的几个排查问题的命令. 也可以帮助自己在以后的工作中快速的排查线上问 ...

  10. linux常用60条命令 转

    Linux必学的60个命令   Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作.文件存取.目录操作.进程管理.文件权限设定等.所以,在Linux系统上工作离不开使用系统提供的命 ...

随机推荐

  1. 去除字符串中的html代码

    public static String Html2Text(String inputString) { String htmlStr = inputString; // 含html标签的字符串 St ...

  2. 对vue生命周期的理解

    总共分为8个阶段,创建前/后,载入前/后,更新前/后,销毁前/后: 创建前/后:在beforeCreated阶段,vue实例的挂载元素$el和数据对象data都为undefined,还未初始化.在cr ...

  3. HttpClient 链接管理

    SOCK is a TCP/IP level proxy protocol, not HTTP. It is not supported by HttpClient out of the box. O ...

  4. [Android][Android Studio] Gradle项目中加入JNI生成文件(.so文件)

    版权声明:本文作者:Qiujuer https://github.com/qiujuer; 转载请注明出处,盗版必究! ! ! https://blog.csdn.net/qiujuer/articl ...

  5. pycharm 如何设置方法调用字体颜色

    一.pycharm 如何设置方法调用字体颜色 1.打开pycharm编辑器,file > settings > editor > color scheme > python & ...

  6. ROS开发与常用命令

    初始化ROS的catkin工作空间:catkin_init_workspace 编译ROS的catkin工作空间:catkin_make 读取当前catkin工作空间的环境变量:source deve ...

  7. rpm: /root/anaconda3/lib/liblzma.so.5: version `XZ_5.1.2alpha' not found (required by /lib64/librpmio.so.3)

    报如上的错误,发现rpm相关的命令都不能够用. 1.搜到这篇文章,https://stackoverflow.com/questions/47633870/rpm-lib64-liblzma-so-5 ...

  8. 微信小程序echart 折线图legend不显示的问题

    最近使用小程序echart折线图,遇到表头一直不显示问题,查询之后解决方案:

  9. 【RPC】综述

    RPC定义 RPC(Remote Procedure Call)全称远程过程调用,它指的是通过网络,我们可以实现客户端调用远程服务端的函数并得到返回结果.这个过程就像在本地电脑上运行该函数一样,只不过 ...

  10. 16个PHP设计模式详解

    说明:该教程全部截选自实验楼教程[16个PHP设计模式详解]:主要介绍16个常用的设计模式的基础概念和技术要点,通过UML类图帮助理解设计模式中各个类之间的关联关系,针对每种设计模式都使用PHP完成了 ...