linux之cp命令详解

Copy Files And Directory

文件的复制和移动对于大多数计算机爱好者来说是耳熟能详的,在window下直接鼠标右键复制粘贴,重命名等等,看着是那么简单,但是步骤也不少,但是在linux中文件的复制与移动也仅仅就是一句命令就可以实现,下面我们就来看看文件中的复制命令把..

Name:

cp(copy files and directory)复制文件和目录

命令格式:

cp [选项]... SOURCE... DESC

"..."表示源文件可以有多个因此我们可以从上面得到这样的结论:

  1. cp只能把一个文件复制成另一个文件
  2. cp可以把多个文件复制到一个目录里

3.如果cp后面有很多文件,那么最后一个一定是一个目录

下面我们通过代码详细了解一下cp的实际用法:

[[email protected] ~]$ cp /etc/man_db.conf /tmp/test
[[email protected] ~]$ ls /tmp/
anaconda.log      storage.log
hsperfdata_root   systemd-private-3E1wlM
ifcfg.log         systemd-private-cxUWsv
ks-script-5GePg3  systemd-private-StjRUY
packaging.log     test
program.log       vmware-root
ssh-x1RDJKuGNlHn  yum.log
[[email protected] ~]$

这句命令是把man_db.conf复制到/tmp/下面并且把文件改名为test

如果目标目录下存在目标文件,那么源文件的内容就会覆盖目标文件

[[email protected] tmp]$ cp /etc/man_db.conf /tmp/test
[[email protected] tmp]$ cp /etc/locale.conf /tmp/test
cp:是否覆盖"/tmp/test"?

这样是不是很清楚明白呢?大家注意这里cp的交互是因为在alias中定义了一个alias cp=‘cp -i‘的原因,i是cp的一个选项,实现人机交互的作用,这里的覆盖其实相当于把原来的test文件删除,然后把源文件复制到/tmp/下并且改名为test,这一点我们要理解

可是,如果test在/tmp/下是一个目呢?

[[email protected] tmp]$ cp /etc/man_db.conf /tmp/test
[[email protected] tmp]$ ls /tmp/test
man_db.conf
[[email protected] tmp]$

这样一看就明白了,把源文件复制到test目录下,源文件的名称不变

下面我们看这样一段代码

[[email protected] tmp]$ cp /etc/init.d/ /tmp/
cp: 略过目录"/etc/init.d/"
[[email protected] tmp]$

这是什么意思呢,原因很简单,cp默认机制是复制文件的,不会复制目录,可是我们想复制目录改如何实现呢?

-r:[递归选项]复制一个目录及其目录下的所有文件

[[email protected] tmp]$ cp -r /etc/init.d/ /tmp/home
[[email protected] tmp]$ ls /tmp/home
functions  netconsole  network  README
[[email protected] tmp]$

这样大家是不是看明白了呢? -r会把一个目录以及目录下的所有的文件递归复制出来到目标目录中,大家仔细看,/tmp下是没有home目录的,这样的执行会直接创建一个home目录并且home目录里面有源目录的内容,大家理解了吗

我们假如home是一个文件,看一看什么情况

[[email protected] tmp]$ cp -r /etc/init.d/ /tmp/1
cp: 无法以目录"/etc/init.d/" 来覆盖非目录"/tmp/1"
[[email protected] tmp]$

会提示你cp: 无法以目录"/etc/init.d/" 来覆盖非目录"/tmp/1",但是在有些系统的版本中是可以执行的,执行的结果就是会覆盖文件的内容,并且创建成一个没有源文件的错误的链接,好这里大家注意一下就可以了

下面我们看一下cp的一些其它选项

-f:表示强行复制

如果目标文件存在,不进行人机交互,直接覆盖文件内容,是不是很霸道呢?

[[email protected] tmp]$ cp -f /etc/man_db.conf /tmp/1
[[email protected] tmp]$

-i:进行人际交互,前面我们讲过了

-p:保留文件的属主,属组,时间戳

[[email protected] tmp]$ cp -p ./storage.log ./storage.log1
[[email protected] tmp]$ ll
-rw-r--r--. 1 root  root       0 3月   9 23:36 storage.log
-rw-r--r--. 1 jason jason      0 3月   9 23:36 storage.log1

-L:复制的是链接,实际上复制的是链接指向的文件(默认的是-L)

[[email protected] etc]$ ll
lrwxrwxrwx.  1 root root       13 3月  10 07:19 rc.local -> rc.d/rc.local
[[email protected] etc]$ cp -L /etc/rc.local /tmp/
[[email protected] etc]$ ll /tmp
-rw-r--r--. 1 jason jason    473 3月  10 16:59 rc.local

看明白是什么意思了么?复制过来后显示的是一个文件,文件的内容是rc.d/rc.local的内容,而不是链接

-P:保持链接自身

[[email protected] etc]$ cp -P /etc/rc.local /tmp/rc12.local
[[email protected] etc]ll /tmp
lrwxrwxrwx. 1 jason jason     13 3月  10 17:04 rc12.local -> rc.d/rc.local

原来的是链接,复制过来的还是链接

-d:与-P一样,复制链接自身

-R:与-r一样,递归

-a:same as -dR,猜猜什么意思,"归档",就是不改变文件的所有属性,备份存放

好了,演示到这,cp这个命令我想你一定会是熟记于心了,在回头巩固巩固吧

时间: 2024-10-28 16:30:01

linux之cp命令详解的相关文章

Linux 命令之 cp 命令详解

Linux 命令之 cp 命令详解 一.cp 命令简介 cp 命令主要用于复制文件或目录.即用来将一个或多个源文件或者目录复制到指定的目的文件或目录. cp 命令可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下. cp 命令支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误. 二.cp 命令语法 cp [-options] source_file dest_file source_file:源文件,制定源文件列表.cp 命令默认

(转)Linux下PS命令详解

(转)Linux下PS命令详解 整理自:http://blog.chinaunix.net/space.php?uid=20564848&do=blog&id=74654 要对系统中进程进行监测控制,查看状态,内存,CPU的使用情况,使用命令:/bin/ps (1) ps :是显示瞬间进程的状态,并不动态连续: (2) top:如果想对进程运行时间监控,应该用 top 命令: (3) kill 用于杀死进程或者给进程发送信号: (4) 查看文章最后的man手册,可以查看ps的每项输出的含义

Linux主要shell命令详解(上)

[摘自网络] kill -9 -1即实现用kill命令退出系统 Linux主要shell命令详解 [上篇] shell是用户和Linux操作系统之间的接口.Linux中有多种shell,其中缺省使用的是Bash.本章讲述了shell的工作原理,shell的种类,shell的一般操作及Bash的特性. 什么是shell Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口.它是命令语言.命令解释程序及程序设计语言的统称. shell是用户和Linux内核之间的接口程序,如果把

linux主要shell命令详解

Linux主要shell命令详解 shell是用户和Linux操作系统之间的接口.Linux中有多种shell,其中缺省使用的是Bash.本章讲述了shell的工作原理,shell的种类,shell的一般操作及Bash的特性. 什么是shell Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口.它是命令语言.命令解释程序及程序设计语言的统称. shell是用户和Linux内核之间的接口程序,如果把Linux内核想象成一个球体的中心,shell就是围绕内核的外层.当从sh

Linux下chkconfig命令详解

Linux下chkconfig命令详解 chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. 使用语法:chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <等级代号>][系统服务][on/off/reset] chkconfig在没有参数运行时,显示用法.如果加上服务名,那么就检查这个服务是否在当前运行级启动.如果是,返

转载的 Linux下chkconfig命令详解

Linux下chkconfig命令详解 chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. 使用语法: chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <等级代号>][系统服务][on/off/reset] chkconfig 在没有参数运行时,显示用法.如果加上服务名,那么就检查这个服务是否在当前运行级启动.如果是

linux系统find命令详解

find命令 –用途:用于查找文件或目录 –格式:find  [查找范围]  [查找条件] 常用查找条件 –-name:按文件名称查找 –-size:按文件大小查找 –-user:按文件属主查找 –-type:按文件类型查找 –-print:以\n为换行符打印出文件(路径) 高级查找条件 –-perm:按权限查找 –-ctime(-cmin):按文件创建时间(天为单位)查找 –-atime(-amin):按访问时间查找 –-mtime(-mmin):修改时间查找 –-newer:查找比指定文件更

linux下scp命令详解

scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令.linux的scp命令可以在linux服务器之间复制文件和目录. scp命令的用处: scp在网络上不同的主机之间复制文件,它使用ssh安全协议传输数据,具有和ssh一样的验证机制,从而安全的远程拷贝文件. scp命令基本格式: scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [-l limit] [-o s

linux中ls命令详解

s 命令可以说是linux下最常用的命令之一. -a 列出目录下的所有文件,包括以 . 开头的隐含文件.-b 把文件名中不可输出的字符用反斜杠加字符编号(就象在C语言里一样)的形式列出.-c 输出文件的 i 节点的修改时间,并以此排序.-d 将目录象文件一样显示,而不是显示其下的文件.-e 输出时间的全部信息,而不是输出简略信息.-f -U 对输出的文件不排序.-g 无用.-i 输出文件的 i 节点的索引信息.-k 以 k 字节的形式表示文件的大小.-l 列出文件的详细信息.-m 横向输出文件名