linux系统下 CP命令(备注:替换正在运行的进程,用FTP工具是从本地传是不行的,需要用cp -rf ../update/zb_terminal ./zb_terminal)

原创 2018年04月17日 16:09:37

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

语法

cp(选项)(参数)

选项

-a:此参数的效果和同时指定"-dpR"参数相同;
-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
-f:强行复制文件或目录,不论目标文件或目录是否已存在;
-i:覆盖既有文件之前先询问用户;
-l:对源文件建立硬连接,而非复制文件;
-p:保留源文件或目录的属性;
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;
-s:对源文件建立符号连接,而非复制文件;
-u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;
-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;
-b:覆盖已存在的文件目标前将目标文件备份;
-v:详细显示命令执行的操作。

参数

  • 源文件:制定源文件列表。默认情况下,cp命令不能复制目录,如果要复制目录,则必须使用-R选项;
  • 目标文件:指定目标文件。当“源文件”为多个文件时,要求“目标文件”为指定的目录。

实例

如果把一个文件复制到一个目标文件中,而目标文件已经存在,那么,该目标文件的内容将被破坏。此命令中所有参数既可以是绝对路径名,也可以是相对路径名。通常会用到点.或点点..的形式。例如,下面的命令将指定文件复制到当前目录下:

cp ../mary/homework/assign .

所有目标文件指定的目录必须是己经存在的,cp命令不能创建目录。如果没有文件复制的权限,则系统会显示出错信息。

将文件file复制到目录/usr/men/tmp下,并改名为file1

cp file /usr/men/tmp/file1

将目录/usr/men下的所有文件及其子目录复制到目录/usr/zh

cp -r /usr/men /usr/zh

交互式地将目录/usr/men中的以m打头的所有.c文件复制到目录/usr/zh

cp -i /usr/men m*.c /usr/zh

我们在Linux下使用cp命令复制文件时候,有时候会需要覆盖一些同名文件,覆盖文件的时候都会有提示:需要不停的按Y来确定执行覆盖。文件数量不多还好,但是要是几百个估计按Y都要吐血了,于是折腾来半天总结了一个方法:

cp aaa/* /bbb
复制目录aaa下所有到/bbb目录下,这时如果/bbb目录下有和aaa同名的文件,需要按Y来确认并且会略过aaa目录下的子目录。

cp -r aaa/* /bbb
这次依然需要按Y来确认操作,但是没有忽略子目录。

cp -r -a aaa/* /bbb
依然需要按Y来确认操作,并且把aaa目录以及子目录和文件属性也传递到了/bbb。

\cp -r -a aaa/* /bbb
成功,没有提示按Y、传递了目录属性、没有略过目录。

在linux下的使用复制命令cp,不让出现“overwrite”(文件覆盖)提示的方法。


一般我们在使用cp命令时加上-f选项,希望不让出现“overwrite”的提示(文件覆盖的提示)。如:
# cp -rf sourcefile targetdir 

#cp -r -f sourcefile targetdir
-r的意思是递归复制,也就是复制文件夹及其下所有文件。
-f的意思是遇到同名的文件时不提示,直接覆盖。

但是为什么加上-f了,还出现“overwrite”的提示呢?

这是因为系统为防止我们误操作,覆盖了不该覆盖的文件,而使用了命令的别名。使用alias命令查看一下:
# alias
alias cp='cp -i'
alias l.='ls -d .* --color=tty'
alias ll='ls -l --color=tty'
alias ls='ls --color=tty'
alias mv='mv -i'
alias rm='rm -i'

从上边我们可以看出,我们输入的cp命令,其实是“cp -i”命令。其他几个命令,如ll,ls mv,rm等也使用了别名。

第一种解决办法:
在cp前加上一个"\"符号就不使用别名运行了,如下:
# \cp -f sourcefile targetdir 
第二种解决办法:
编辑文件,注释掉别名。
# vi ~/.bashrc
在alias cp='cp -i'前加上“#”注释掉这行,wq!保存推出,然后重新登陆就可以了。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sweetfather/article/details/79976338

Linux中cp命令介绍

原文地址:http://www.cnblogs.com/xd502djj/archive/2011/11/25/2263562.html 功能: 复制文件或目录 说明: cp指令用于复制文...
  • tanga842428
  • tanga842428
  • 2016-11-20 12:32:41
  • 1789

cp命令使用

cp命令 该命令的功能是将给出的文件或目录拷贝到另一文件或目录中,同MSDOS下的copy命令一样,功能十分强大。 语法: cp [选项] 源文件或目录 目标文件或目录 说明:该命令把指定的源文件复制...
  • bobocheng1231
  • bobocheng1231
  • 2007-12-25 21:50:00
  • 1403

Linux下cp命令 -f无效的解决方法

关于Linux的拷贝命令我们都知道cp的参数 -f的意思是: -f, --force                  if an existing destination file cannot ...
  • carolzhang8406
  • carolzhang8406
  • 2014-11-21 13:43:48
  • 7621

cp命令实现不覆盖

cp 命令参数以及覆盖与不覆盖 1.参数详解 cp (复制档案或目录) [root@linux ~]# cp [-adfilprsu] 来源档(source) 目的檔(d...
  • xiaoxiaozhu2010
  • xiaoxiaozhu2010
  • 2013-12-06 11:52:43
  • 14616

centos 使用 CP 命令 不提示 覆盖

今天 在我的VPS上拷一个文件夹,但放的地方有一个同名文件夹而且里面还有文件,如是直接拷过去,结果有N个要确认替换的提示,直接CTRL+C,在网上搜了把,发现有几个方法可以解决,方法如下: 一般我们使...
  • u011986449
  • u011986449
  • 2014-05-01 17:37:29
  • 2712

使用cp -fr 命令还是会有覆盖提示

今天更新一套新的代码时,使用 cp -rf w/* w_test/命令 会有覆盖提示,输入命令alias后,显示如下: 这说明执行cp命令时,相当于执行了cp -i 命令。 解决方法: 1、执行...
  • fuwen1989
  • fuwen1989
  • 2017-08-01 16:16:01
  • 974

在linux下的使用复制命令cp,不让出现“overwrite”(文件覆盖)提示的方法。

在linux下的使用复制命令cp,不让出现“overwrite”(文件覆盖)提示的方法。 一般我们在使用cp命令时加上-f选项,希望不让出现“overwrite”的提示(文件覆盖的提示)。如: # ...
  • iw1210
  • iw1210
  • 2015-06-18 17:48:25
  • 28992

【C语言】实现Linux下的cp命令的基本功能

【C语言】实现Linux下的cp命令的基本功能
  • Timsley
  • Timsley
  • 2016-06-18 09:47:08
  • 3150

docker cp命令详解

docker cp命令,能够在容器和执行该命令的机器的本地文件系统之间复制文件或目录。 1. 使用格式 1)从容器中复制文件或目录到执行命令所在机器的指定路径 docker cp [OPTIONS]...
  • taiyangdao
  • taiyangdao
  • 2017-05-22 22:53:52
  • 4705
收藏助手
不良信息举报
您举报文章:linux系统下 CP命令(备注:替换正在运行的进程,用FTP工具是从本地传是不行的,需要用cp -rf ../update/zb_terminal ./zb_terminal)
举报原因:
原因补充:

(最多只允许输入30个字)