转自:http://www.cnblogs.com/benio/archive/2010/07/27/1785929.html

要复制文件,请使用cp(copy)命令。不过,cp命令的用途很多。除了单纯的复制之外,还可以建立连接文件(就是快捷方式),比较两个文件的新旧而予以更新,以及复制整个目录等等。至于移动目录与文件,则使用mv(move),这个命令也可以直接用来重命名(rename)。删除使用rm(remove)命令。下面我们就来看一看。

cp(复制文件或目录)

[root@linux ~]# cp [-adfilprsu] 来源文件(source) 目标文件(destination)
[root@linux ~]# cp [options] source1 source2 source3 .... directory
参数:
-a : 相当于 -pdr 的意思。
-d : 若来源文件为连接文件的属性(link file),则复制连接文件属性而非文件本身。
-f : 强制(force)的意思,若有重复或其他疑问时,不会询问用户,而强制复制。
-i : 若目标文件(destination)已经存在,在覆盖时会先询问是否真的操作。
-l : 建立硬连接(hard link)的连接文件,而非复制文件本身。
-p : 连同文件的属性一起复制,而非使用默认属性。
-r : 递归持续复制,用于目录的复制行为。
-s : 复制成为符号连接文件(symbolic link),即“快捷方式”文件。
-u : 若目标文件比来源文件旧,才更新目标文件。
最后,需要注意,如果来源文件有两个以上,则最后一个目的文件一定是“目录”。
范例:
范例一:将家目录下的 .bashrc复制到 /tmp下,并重命名为bashrc。
[root@linux ~]# cd /tmp
[root@linux tmp]# cp ~/.bashrc bashrc
[root@linux tmp]# cp -i ~/.bashrc bashrc
cp: overwrite `basrhc'? n
# 重复做两次动作,由于 /tmp下面已经存在bashrc了,加上 -i参数,
# 在覆盖前会让用户确认。可以按下n或者y。
# 但是,反过来说,如果不想询问,则加上 -f参数来强制直接覆盖。

范例二:将 /var/log/wtmp复制到 /tmp下。
[root@linux tmp]# cp /var/log/wtmp . <==想要复制到当前目录,最后的 . 不要忘
[root@linux tmp]# ls -l /var/log/wtmp wtmp
-rw-rw-r--  1 root utmp 71808 Jul 18 12:46 /var/log/wtmp
-rw-r--r--  1 root root 71808 Jul 18 21:58 wtmp
# 注意到了吗?在不加任何参数的情况下,文件的拥有者会改变,连权限也跟着改变了。
# 这是个很重要的特性。要注意。还有,文件建立时间也不一样了。
# 如果想要将文件的所有属性都一起复制,可以加上 -a。
[root@linux tmp]# cp -a /var/log/wtmp wtmp_2
[root@linux tmp]# ls -l /var/log/wtmp wtmp_2
-rw-rw-r--  1 root utmp 71808 Jul 18 12:46 /var/log/wtmp
-rw-rw-r--  1 root utmp 71808 Jul 18 12:46 wtmp_2
# 整个属性完全一模一样。这就是 -a的作用。

范例三:将 /etc/ 目录下的所有内容复制到 /tmp。
[root@linux tmp]# cp /etc/ /tmp
cp: omitting directory `/etc'   <== 如果是目录,不能直接复制,要加上 -r参数
[root@linux tmp]# cp -r /etc/ /tmp
# 再次强调。-r可以复制目录,但是,文件与目录的权限会被改变。
# 所以,也可以利用cp -a /etc /tmp来执行命令。

范例四:将范例一复制的bashrc建立一个符号连接文件(symbolic link)
[root@linux tmp]# ls -l bashrc
-rw-r--r--  1 root root 395 Jul 18 22:08 bashrc
[root@linux tmp]# cp -s bashrc bashrc_slink
[root@linux tmp]# cp -l bashrc bashrc_hlink
[root@linux tmp]# ls -l bashrc*
-rw-r--r--  2 root root 395 Jul 18 22:08 bashrc
-rw-r--r--  2 root root 395 Jul 18 22:08 bashrc_hlink
lrwxrwxrwx  1 root root   6 Jul 18 22:31 bashrc_slink -> bashrc
# bashrc_slink是由 -s的参数造成的,建立的是一个“快捷方式”,
# 所以会看到在文件的最右边,会显示这个文件是“连接”到哪里的。
# 至于bashrc_hlink。建立了这个文件之后,bashrc与bashrc_hlink
# 所有的参数都一样,只是,第二列的link数改变成为2了。而不是原本的1。
# 这两种连接方式的异同,我们会在下一章介绍。

范例五:若 ~/.bashrc比 /tmp/bashrc新,则复制。
[root@linux tmp]# cp -u ~/.bashrc /tmp/bashrc
# -u的作用是,在目标文件与来源文件有差异时,才会复制。
# 所以,比较常用于“备份”。

范例6:将范例四生成的bashrc_slink复制成为bashrc_slink_2。
[root@linux tmp]# cp bashrc_slink bashrc_slink_2
[root@linux tmp]# ls -l bashrc_slink*
lrwxrwxrwx  1 root root   6 Jul 18 22:31 bashrc_slink -> bashrc
-rw-r--r--  1 root root 395 Jul 18 22:48 bashrc_slink_2
# 这个例子也很有趣。原本复制的是连接文件,却将连接文件的实际文件复制过来了。
# 也就是说,如果没有加上任何参数,复制的是来源文件,而非连接文件的属性。
# 若要复制连接文件的属性,就要使用 -d或者 -a参数。

范例7:将家目录的 .bashrc及 .bash_history复制到 /tmp下面。
[root@linux tmp]# cp ~/.bashrc ~/.bash_history /tmp
# 将多个数据一次复制到同一个目录。

cp的功能很多,由于我们常常进行一些数据的复制,所以也会常常用到这个命令。一般来说,如果去复制别人的数据(当然,该文件必须要有read的权限),总是希望复制到的数据最后是我们自己的,所以,在默认条件中,cp的来源文件与目标文件的权限是不同的,目标文件的拥有者通常会是命令操作者本身。举例来说,范例二中,由于我是root身份,因此复制过来的文件拥有者与用户组就改变成为root所有了。
由于具有这个特性,在进行备份的时候,某些需要特别注意的特殊权限文件,例如密码文件(/etc/shadow)以及一些设置文件,就不能直接以cp来复制,而必须要加上 -a或者是 -p,这些可以完整复制文件权限的参数。另外,如果想要复制文件给其他用户,也必须要注意文件的权限(包含读、写、执行以及文件拥有者),否则,其他人还是无法对你给的文件进行修改。特别要注意。
上面的第4个范例最有趣,使用 -l及 -s都会建立所谓的连接文件(link file),但是这两种连接文件有不一样的显示。这是怎么一回事? -l就是所谓的硬连接(hard link), -s则是符号连接(symbolic link),笔者这里先不介绍,因为这涉及i-node的相关知识,我们还没有介绍到,下一章再讨论这个连接的问题。总之,由于cp有种种文件属性与权限,所以,在复制时,必须要清楚地了解到:
• 是否需要完整地保留来源文件的信息?
• 来源文件是否为符号连接文件(symbolic link file)?
• 来源文件是否为特殊的文件,例如FIFO、套接字等?
• 来源文件是否为目录?
rm(删除文件或目录)

[root@linux ~]# rm [-fir] 文件或目录
参数:
-f :就是 force 的意思,强制删除。
-i :交互模式,在删除前会询问用户是否动作
-r :递归删除。常用在目录的删除
范例:
范例一:建立一个文件后予以删除
[root@linux ~]# cd /tmp
[root@linux tmp]# cp ~/.bashrc bashrc
[root@linux tmp]# rm -i bashrc
rm: remove regular file `bashrc'? y
# 如果加上 -i参数就会主动询问。如果不需要询问就加 -f参数。

范例二:删除一个不为空的目录。
[root@linux tmp]# mkdir test
[root@linux tmp]# cp ~/.bashrc test/ <== 将文件复制到此目录去,就不是空的目录了
[root@linux tmp]# rmdir test
rmdir: `test': Directory not empty <== 删不掉。因为这不是空的目录。
[root@linux tmp]# rm -rf test

删除命令(remove)相当于DOS下的del命令。这里要注意的是,通常,在Linux系统中,为了怕文件被误删,很多版本默认有 -i参数,-i指每个文件被删除之前都会让用户确认一次,以防误删文件。如果要连目录下的内容都一起删除,例如子目录里面还有子目录,就要使用 -rf参数。不过,使用“rm -rf”命令之前,请千万注意,因为该目录或文件“肯定”会被root删除。因为系统不会再次询问是否要删除。所以这是非常重要的命令,需要特别注意。不过,如果确定该目录不要了,使用rm -rf来循环删除是不错的方式。
mv(移动文件与目录,或重命名)

[root@linux ~]# mv [-fiv] source destination
[root@linux ~]# mv [options] source1 source2 source3 .... directory
参数:
-f :force,强制的意思,强制直接移动而不询问。
-i :若目标文件(destination)已经存在,就会询问是否覆盖。
-u :若目标文件已经存在,且来源文件比较新,才会更新(update)
范例:
范例一:复制一个文件,建立一个目录,将文件移动到目录中。
[root@linux ~]# cd /tmp
[root@linux tmp]# cp ~/.bashrc bashrc
[root@linux tmp]# mkdir mvtest
[root@linux tmp]# mv bashrc mvtest
# 将某个文件移动到某个目录去,就是这样做。

范例二:将刚刚的目录名重命名为 mvtest2。
[root@linux tmp]# mv mvtest mvtest2 <== 这样就重命名了。
# 其实,在Linux下还有个有趣的命令,名为rename,
# 该命令专门进行文件的重命名。用途不少。可以参阅man rename。

范例三:再建立两个文件,再全部移动到 /tmp/mvtest2中。
[root@linux tmp]# cp ~/.bashrc bashrc1
[root@linux tmp]# cp ~/.bashrc bashrc2
[root@linux tmp]# mv bashrc1 bashrc2 mvtest2
# 注意,如果有多个来源文件或目录,则最后一个目标文件一定是“目录”。
# 意思是,将所有数据移动到该目录。

这是移动(move)的意思。要移动文件或目录,这个命令就很重要。同样,也可以使用 -u(update)来测试新旧文件,看看是否需要移动。另外一个用途就是“更改文件名”。我们可以很轻松地使用mv来更改文件名。不过,Linux的rename命令,可以用来更改大量文件的文件名,你可以利用man rename查看一下。

[转]复制、移动和删除:cp, rm, mv的更多相关文章

  1. Linux命令行下cp,rm,mv命令的使用

    以下的内容来源于<鸟哥的私房菜> Linux命令行下的复制.删除与移动:cp,rm,mv cp(copy)复制        cp这个命令的用途很多,除了单纯的复制之外,还可以创建链接文件 ...

  2. Linux命令下,cp,rm,mv命令的使用

    Linux命令行下的复制.删除与移动:cp,rm,mv cp(copy)复制        cp这个命令的用途很多,除了单纯的复制之外,还可以创建链接文件对比两文件的新旧而予以更新,        以 ...

  3. Linux cp/rm/mv 强制覆盖

    一.Linux下的cp/rm/mv强制覆盖 (一).反斜杠(\)临时取消别名 [root@fz ~]# \cp filename new/filename [root@fz ~]# (二).unali ...

  4. 复制、移动和删除:cp, rm, mv

    要复制文件,请使用cp(copy)命令.不过,cp命令的用途很多.除了单纯的复制之外,还可以建立连接文件(就是快捷方式),比较两个文件的新旧而予以更新,以及复制整个目录等等.至于移动目录与文件,则使用 ...

  5. mkdir,rmdir,cp,rm,mv,cat,touch用法

    一.mkdir新建目录 1.进入tmp目录,查看该目录下面的子目录 [root@localhost ~]# cd /tmp[root@localhost tmp]# lshsperfdata_root ...

  6. linux下文件的复制、移动与删除命令为:cp,mv,rm

    一.文件复制命令cp    命令格式:cp [-adfilprsu] 源文件(source) 目标文件(destination)    cp [option] source1 source2 sour ...

  7. linux学习(四)复制(cp)移动(mv)删除(rm)查找(find)文件、文件夹操作、软硬链接的区别

    目录 复制文件 mv命令 rm命令 touch 命令 file命令 find命令 grep命令 mkdir命令 rmdir命令 @(复制移动删除查找文件.软硬链接的区别) 复制文件 cp命令用于复制文 ...

  8. 常用命令su ls cp cd mv cat touch mkdir rm head less more pwd tac 等

    1.用户切换 su:switch user su kevin   //半切换,切换到kevin用户,但是不读取kevin用户的配置文件 su - kevin   //完全切换,执行这个命令的时候表示切 ...

  9. linux中的一些基础命令的使用(which,whereis,locate,find,alias,file,ls,cat,echo,tar,bzip2,gzip,history,mv,cp,rm)

    which whereis locate find alias file ls cat echotar bzip2 gzip history mv cp rm -------------------- ...

随机推荐

  1. 构建第一个 Spring Boot 工程

    Spring Boot概述 什么是Spring Boot 随着动态语言的流行,java的开发显得格外笨重,繁多的配置文件编写,低下的开发效率,复杂的部署流程以及第三方技术集成难度大. 在上述环境下Sp ...

  2. 奇怪吸引子---LuChen

    奇怪吸引子是混沌学的重要组成理论,用于演化过程的终极状态,具有如下特征:终极性.稳定性.吸引性.吸引子是一个数学概念,描写运动的收敛类型.它是指这样的一个集合,当时间趋于无穷大时,在任何一个有界集上出 ...

  3. 微信支付WxpayAPI_php_v3 错误修改

    微信sdk:WxpayAPI_php_v3 这是下载压缩包的目录结构. https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1 ce ...

  4. C#中Invoke的用法1

    invoke和begininvoke 区别 一直对invoke和begininvoke的使用和概念比较混乱,这两天看了些资料,对这两个的用法和原理有了些新的认识和理解.  首先说下,invoke和be ...

  5. 一些Vim使用的小技巧

    1. 全局替换(1) v + G + $ 选定全部,然后输入 :s/原始字符串/目标字符串/(2) :%s/原始字符串/目标字符串/ 2. 清除页面中所有行尾的空白符::%s/s+$// 3. 清除所 ...

  6. Tomcat 七 HTTP 连接器

    摘要 本文尝试翻译Tomcat官方文档Apache Tomcat 7连接器,不足之处敬请指正.该文先介绍了Tomcat7 HTTP连接器的属性,包括:公共属性.标准实现.Java TCP套接字属性.B ...

  7. 第三方文本框 在div中显示预览,让指定节点不受外部css影响

    例如,富文本框中 ol  li 但是我们往往全局样式时候会 让前面的数字不显示,但是富文本框时候,录入,我们需要显示,但是div中就不显示了 我们在预览页面中加上一个指定样式   然后后面 加上!im ...

  8. Atitit 数据库view视图使用推荐规范与最佳实践与方法

    Atitit 数据库view视图使用推荐规范与最佳实践与方法 1. 视图的优点:1 1.1. **提升可读性  定制用户数据,聚焦特定的数据1 1.2. 使用视图,可以简化数据操作.       1 ...

  9. linux每日命令(21):find命令之exec

    find是我们很常用的一个Linux命令,但是我们一般查找出来的并不仅仅是看看而已,还会有进一步的操作,这个时候exec的作用就显现出来了. 一. exec参数说明: -exec 参数后面跟的是com ...

  10. Python fcntl 与 signal 模块使用

    这两个模块是Python标准库里面就包含的模块 用法介绍在 https://docs.python.org/2/library/signal.html https://docs.python.org/ ...