本篇博客来讨论linux中cp命令。

cp命令用来复制文件或文件夹。它主要有两种形式

# 用法一:复制一个文件
$ cp [option] src-file target-file# 用法二:复制多个文件,目标是一个文件夹
$ cp [option] src-file1 src-file2 ... target-directory

如果一次复制多个文件的话,target必须是一个文件夹。

下面是几个常用的选项
- -r --recursive 递归复制,会复制文件夹内部的文件夹,自动创建目标位置不存在的文件夹。多用于目录的复制
- -p 连同属性一起复制,而不是使用默认的属性
- -d 若src-file属于link file,则复制为link file,而非文件本身
- -a --archive 等同于-prd,常用于文件备份
- -i --interactive 若目标文件以存在,则在覆盖前询问是否覆盖
- -u --update 若源文件比目标文件新,则覆盖,否则跳过
- -f --force 强制复制
- -s -symbolic-link 复制为符号链接文件,即快捷方式文件,俗称软连接
- -l --link复制为硬连接文件

cp命令除了简单的复制文件以外,还有几个比较常用的场景,分别是:备份文件,更新文件夹中的内容,创建快捷方式等,下面我们来简单地模拟一下。
准备工作:创建一个src文件夹,里面有三个文件,分别是:a.txt,b.txt,c.sh,使用ls -l命令的输出是

$ ls -al
total 12
drwxrwxr-x. 2 kite kite 4096 9月  24 10:03 .
drwxr-xr-x. 4 kite kite 4096 9月  24 10:02 ..
-rw-rw-r--. 1 kite kite    0 9月  24 10:02 a.txt
-rw-rw-r--. 1 kite kite    0 9月  24 10:02 b.txt
-rwxrwxr-x. 1 kite kite   19 9月  24 10:03 c.sh

c.sh是一个bash脚本,里面只有一句话,echo 'hello,world'
如果你的c.sh文件没有执行权限,则使用chmod a+x c.sh来赋予它可执行的权限

使用cp进行备份

首先尝试将src文件夹备份为src-backup文件夹,运行下面的命令

$ cp src src-backup
cp: -r not specified; omitting directory 'src'

按照提示,我们应该加上-r参数,那就加上这个参数再试一次,成功了,仔细看一下src和src-backup文件夹内的文件

$ ls -l src src-backup/
src:
total 4
-rw-rw-r--. 1 kite kite  0 9月  24 10:02 a.txt
-rw-rw-r--. 1 kite kite  0 9月  24 10:02 b.txt
-rwxrwxr-x. 1 kite kite 19 9月  24 10:03 c.shsrc-backup/:
total 4
-rw-rw-r--. 1 kite kite  0 9月  24 10:11 a.txt
-rw-rw-r--. 1 kite kite  0 9月  24 10:11 b.txt
-rwxrwxr-x. 1 kite kite 19 9月  24 10:11 c.sh

会发现三个文件的创建时间不一样了。很显然,文件备份成这样是不太行的。其实,备份文件最常用的参数是-a。让我们删掉src-backup文件夹,再试一次

$ rm -rf src-backup/
$ cp -a src src-backup
$ ls -l src src-backup/
src:
total 4
-rw-rw-r--. 1 kite kite  0 9月  24 10:02 a.txt
-rw-rw-r--. 1 kite kite  0 9月  24 10:02 b.txt
-rwxrwxr-x. 1 kite kite 19 9月  24 10:03 c.shsrc-backup/:
total 4
-rw-rw-r--. 1 kite kite  0 9月  24 10:02 a.txt
-rw-rw-r--. 1 kite kite  0 9月  24 10:02 b.txt
-rwxrwxr-x. 1 kite kite 19 9月  24 10:03 c.sh

这次的文件时间都一致了,备份完成!

使用cp更新文件夹中的内容

将a.txt中的内容随便修改一下,然后,我们再来备份一次。对比一下src文件夹下的a.txt和src-backup文件夹下的a.txt的时间

$ ls -l src/a.txt src-backup/a.txt
-rw-rw-r--. 1 kite kite 14 9月  24 14:32 src/a.txt
-rw-rw-r--. 1 kite kite  0 9月  24 10:02 src-backup/a.txt

可以看出来src/a.txt的时间更新
接下来通过-u参数来将更新后的a.txt备份到src-backup文件夹下

cp -u src/* src-backup/

查看一下修改时间

ls -l src src-backup/
src:
total 8
-rw-rw-r--. 1 kite kite 24 9月  24 14:32 a.txt
-rw-rw-r--. 1 kite kite  0 9月  24 10:02 b.txt
-rwxrwxr-x. 1 kite kite 19 9月  24 10:03 c.shsrc-backup/:
total 8
-rw-rw-r--. 1 kite kite 24 9月  24 14:32 a.txt
-rw-rw-r--. 1 kite kite  0 9月  24 10:02 b.txt
-rwxrwxr-x. 1 kite kite 19 9月  24 10:03 c.sh

可以看出来,备份文件已经更新了
还可以指定-i参数,在替换之前会询问是否继续。

创建快捷方式

src目录下有一个c.sh脚本,如果希望在任何地方都能运行它,通用的方法是在/usr/bin下面创建一个快捷方式。

$ cd /usr/bin/
$ sudo cp -s ~/Demos/src/c.sh c

创建快捷方式的话,需要先进入目标文件夹内。我将src下的c.sh脚本创建了一个快捷方式c,从任何一个终端位置都可以直接运行c这个命令。

linux中cp命令的常见用法相关推荐

  1. linux中find命令的常见用法

    整理的find命令常见用法,根据文件大小或者修改时间查询指定文件,以便后面查阅. 1.查找指定范围之内被修改或者访问过的文件 find . -type f -mtime -1     #查找系统中1天 ...

  2. linux cp命令不提示覆盖,Linux中cp命令不提示直接覆盖的方法

    新做了服务器,cp覆盖时,无论加什么参数-f之类的还是提示是否覆盖,这在大量cp覆盖操作的时候是不能忍受的. 把a目录下的文件复制到b目录 cp –r a/* b 执行上面的命令时,b存在的每个文件都 ...

  3. linux中du命令参数的用法,linux中du命令参数及df命令和dd命令介绍

    本文详细介绍了linux中du命令参数及df命令和dd命令的使用方法,并对之进行了举例说明. linux中df命令参数 linux中df命令参数功能:检查文件系统的磁盘空间占用情况.可以利用该命令来获 ...

  4. linux 复制文件 中文,linux中cp命令如何复制文件

    在linux中,可以使用cp命令复制文件,将源文件或目录复制到指定的目的文件或目录:它可以将单个源文件复制成一个指定文件名的具体文件或一个已经存在的目录下:该命令支持同时复制多个文件. 本教程操作环境 ...

  5. Linux 中 cp 命令(文件复制)

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

  6. linux 增量 cp,Linux 中 cp 命令(文件复制)

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

  7. linux find prune文件,Linux中find命令-path -prune用法详解

    在Windows中可以在某些路径中查找文件,也可以设定不在某些路径中查找文件,下面用Linux中的find的命令结合其-path -prune参数来看看在Linux中怎么实现此功能. 假如在当前目录下 ...

  8. linux中cp命令详解

    cp命令: 拷贝文件或目录 格式:cp [OPTION]  SRC...  DEST *cp命令的使用有多种情况: SRC是单个文件时: 如果DEST不存在,则新建DEST并将SRC内容填充至DEST ...

  9. 12个 Linux 中 grep 命令的超级用法实例

    作者丨tecmint linux.cn/article-2250-1.html 你是否遇到过需要在文件中查找一个特定的字符串或者样式,但是不知道从哪儿开始?那么,就请grep来帮你吧. grep是每个 ...

最新文章

  1. python-day05正则表达式
  2. 关于java同步包中ConcurrentLinkedQueue类的深入分析与理解
  3. C++ 多态实现的三个条件
  4. matlab转差频率控制,转差频率控制的异步电机调速系统的研究
  5. gitlab 邮件发送
  6. linux 输入法错误,Ubuntu 16.04安装搜狗拼音输入法错误问题的解决方法
  7. python可以用del释放资源_Python中垃圾回收和del语句详解
  8. keepalived mysql 主主_MySQL主主+Keepalived高可用(一):解决单点故障
  9. 全志V3s 荔枝派WiFi RTL8723BS 连接
  10. 固态硬盘分为哪几种_固态硬盘接口类型有哪些? 固态硬盘接口类型图解
  11. java调用后台的短信验证码_JAVA通过http调用验证码短信接口源码
  12. linux ps命令详细解读
  13. python_基础部分(1)
  14. 小白的proxmox ve(pve)打造AIO(all in boom)折腾日记 (二)装机篇(爱国者m2装机不完全教程)
  15. 记:应聘浙江农信,软件开发工程师
  16. windows7如何安装mysql8_Windows7 安装配置mysql8.0
  17. DropWizard框架里关于异常统一处理实践
  18. Python之生成器详解
  19. Windows恢复回收站误删文件
  20. PC远程控制android思路,PC 远程控制 android手机的方法之一VNC

热门文章

  1. HFSS学习笔记 16 激励的类型和设置(一)
  2. Maven邮件发送服务
  3. IOS之https请求认证及双向认证
  4. linux的输出重定向
  5. 边车设计模式-Sidecar pattern
  6. kafka消息队列系统
  7. 51单片机模拟I2C程序
  8. 关于树莓派USB端口号查询说明
  9. 解释型语言与编译型语言的异同
  10. 最简单的方法生成全景照片