赞
踩
目录
命令介绍:
cp 这个指令的用途较多,除了单纯的复制之外,还可以创建链接文件 (就是快捷方式),比对两文件的新旧而予以更新, 以及
复制整个目录等等的功能呢!
mv 是移动目录与文件, 这个指令也可以直接拿来作更名 (rename) 的动作。
rm 删除。
语 法:cp [-abdfilpPrRsuvx][-S <备份字尾字符串>][-V <备份方式>][--help][--spares=<使用时机>][--version][源文件或目录][目标文件或目录] [目的目录]
补充说明:cp指令用在复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,而最后的目的地并非是一个已存在的目录,则会出现错误信息。
参数:
- -a或--archive 此参数的效果和同时指定"-dpR"参数相同。 (常用)
- -b或--backup 删除,覆盖目标文件之前的备份,备份文件会在字尾加上一个备份字符串。
- -d或--no-dereference 当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录。
- -f或--force 强行复制文件或目录,不论目标文件或目录是否已存在。
- -i或--interactive 覆盖既有文件之前先询问用户。 (常用)
- -l或--link 对源文件建立硬连接,而非复制文件。
- -p或--preserve 保留源文件或目录的属性。 (备份常用)
- -P或--parents 保留源文件或目录的路径。
- -r 递归处理,将指定目录下的文件与子目录一并处理。 (常用)
- -R或--recursive 递归处理,将指定目录下的所有文件与子目录一并处理。
- -s或--symbolic-link 对源文件建立符号连接,而非复制文件。
- -S<备份字尾字符串>或--suffix=<备份字尾字符串> 用"-b"参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,预设的备份字尾字符串是符号"~"。
- -u或--update 使用这项参数后只会在源文件的更改时间较目标文件更新时或是 名称相互对应的目标文件并不存在,才复制文件。
- -v或--verbose 显示指令执行过程。
- -V<备份方式>或--version-control=<备份方式> 用"-b"参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,这字符串不仅可用"-S"参数变更,当使用"-V"参数指定不同备份方式时,也会产生不同字尾的备份字串。
- -x或--one-file-system 复制的文件或目录存放的文件系统,必须与cp指令执行时所处的文件系统相同,否则不予复制。
- --help 在线帮助。
- --sparse=<使用时机> 设置保存稀疏文件的时机。
- --version 显示版本信息。
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
复制(cp)这个指令是非常重要的,不同身份者执行这个指令会有不同的结果产生,尤其是那个-a, -p的选项, 对于不同身份来说,差异则非常的大。
例1:用root身份,将 /etc/passwd 复制到 /home/wzy/test 下,并更名为 passwd_test:
重复作两次动作,由于/home/wzy/test 下面已经存在 passwd_test了,加上 -i 选项后,则在覆盖前会询问使用者是否确定!可以按下 n (不覆盖) 或者 y (覆盖) 来二次确认。
例2:变换目录到/home/wzy/test,并将 “Linux操作命令总结.docx” 文件重新复制一份且观察属性:
注意:上面红框,在执行命令不加任何选项(参数)的情况下,文件的某些属性/权限会改变;这是个很重要的特性,要注意。还有,连文件创建的时间也不一样了!
如果想要将文件的所有特性都一起复制过来该怎办?可以加上 -a 或者 -p,如下所示:
重要提示:
一般来说,我们如果去复制别人的数据 (注意:该用户必须要有该文件读“ r” 的权限才行) 时, 总是希望复制到的数据最后是我们自己的,所以,在默认的条件中, cp 的来源文件与目的文件的权限是不同的,目的文件的拥有者通常会是指令操作者本身。举例来说, 上面的例2中,由于我是 root 的身份,因此复制过来的文件拥有者与群组就改变成为 root 所有了!
由于具有这个特性,因此当我们在进行备份的时候,某些需要特别注意的特殊权限文件, 例如密码档(/etc/shadow) 以及一些配置文件,就不能直接以 cp 来复制,而必须要加上 -a或者是 -p 等等可以完整复制文件权限的选项才行!另外,如果想要复制文件给其他的使用者, 也必须要注意到文件的权限(包含读、写、执行以及文件拥有者等等), 否则,其他人还是无法针对你给予的文件进行修订的动作。
例3:复制 /test/ 这个目录下的所有内容到 /home/wzy/tmp 下面:
因为我现在在/home/wzy 目录,所以可以直接cp test/ ,不加参数,由于test里边还有其他文件目录,所以不能cp,因此使用到参数-r 递归处理,将指定目录下的文件与子目录一并处理。但是文件与目录的权限可能会被改变,所以也可以用 cp -a test/ tmp/ 来下达指令。如下图:
或者使用 cp -rp test/ tmp/ 下达指令:
例4:将例1复制的文件passwd_test,创建一个链接文件 :
用到参数:
- -l或--link 对源文件建立硬连接,而非复制文件。
- -s或--symbolic-link 对源文件建立符号连接,而非复制文件。
先 ll pass_test 文件查看一下文件属性和权限,分别使用参数 -l 和 -s 创建链接文件,由上图发现,使用参数 -l 建立的硬链接(实体链接)passwd_link_l 和 passwd_test 的属性与权限完全一模一样,与尚未进行链接前的差异则是第二栏的link数由1变成2了。-s是符号链接,简单说 passwd_link_s 是一个“捷径”,这个捷径会链接到 passwd_test 去,所以会看到文件名右侧会有个指向(->)。
例5:将例4建立的passwd_link_s,复制成passwd_link_s01和passwd_link_s02:
仔细观察发现这俩个命令一个没有参数,一个带参数-d:
1、passwd_link_s01原本复制的是链接文件,但是却将链接文件的实际文件复制过来了也就是说,如果没有加上任何选项时,cp复制的是原始文件,而非链接文件的属性。
2、若要复制链接文件的属性,就得要使用 -d 的选项了。
例6:将test目录下Linux开头的文件 和test_dir 目录里的内容复制到 tmp文件夹里:
可以将多个数据一次复制到同一个目录去,最后面一定是目录。
如果不是用root身份,能否完成复制呢?
例7:切换user1用户,将文件“Linux操作命令总结.docx” 复制一份:
注意:由于 user1的身份并不能随意修改文件的拥有者与群组,因此虽然能够复制“Linux操作命令总结.docx” 的相关权限与时间等属性, 但是与拥有者、群组相关的,原本 user1 身份无法进行的动作,即使加上 -a 选项,也是无法达成完整复制权限的。
总结:由于 cp 有种种的文件属性与权限的特性,所以在复制时,必须要清楚的了解到:
1、是否需要完整的保留来源文件的信息?
2、来源文件是否为链接文件 (symbolic link file)?
3、来源文件是否为特殊的文件,例如 FIFO, socket 等?
4、来源文件是否为目录?
语 法:rm [-dfirv][--help][--version][文件或目录...]
补充说明:执行rm指令可删除文件或目录,如欲删除目录必须加上参数"-r",否则预设仅会删除文件。
参 数:
- -d或--directory 直接把欲删除的目录的硬连接数据删成0,删除该目录。
- -f或--force 强制删除文件或目录。 (常用)
- -i或--interactive 删除既有文件或目录之前先询问用户。 (常用)
- -r或-R或--recursive 递归处理,将指定目录下的所有文件及子目录一并处理。 (常用)
- -v或--verbose 显示指令执行过程。
- --help 在线帮助。
- --version 显示版本信息。
例1:删除例7复制的文件
例2:删除前提示,使用参数 -i
使用-i参数时,删除会提示,rm:是否删除普通文件 "Linux新2"? 输入“y” 是确定删除,输入“n”代表不删除。
例3:删除开头为“Linux新”的文件,并且不需要任何提示,用到字符 “ * ” 和参数 -f:
例4:删除test_dir目录及其里边所有文件和目录:
因为身份是 root ,默认已经加入了 -i 的选项,所以要一直按 y 才会删除!如果不想要继续按 y ,可以按下“ [ctrl]-c ”来结束 rm 的工作。这是一种保护的动作,如果确定要删除掉此目录而不要询问,可以这样做:
在指令前加上反斜线“\”,可以忽略掉 alias 的指定选项,但是千万不要删错了!删除 /etc 系统是会挂掉的!
不使用反斜线“\”,还可以使用参数 -f 如下:
例5:删除一个带有 - 开头的文件:
touch ./-aaa- 是在当前目录建立空文件 “-aaa-”,第一个删除因为“-”是选项,系统误判了,下边系统给出建议,“-aaa-”前边加“./”,所以使用命令 rm ./-aaa- 成功删掉“-”开头的文件。文件名最好不要用“-”开头。
语 法:mv [-bfiuv][--help][--version][-S <附加字尾>][-V <方法>][源文件或目录][目标文件或目录]
补充说明:mv可移动文件或目录,或是更改文件或目录的名称。
- -b或--backup 若需覆盖文件,则覆盖前先行备份。
- -f或--force 若目标文件或目录与现有的文件或目录重复,则不会询问而直接覆盖现有的文件或目录。
- -i或--interactive 若目标文件 (destination) 已经存在时,就会询问是否覆盖。
- -S<附加字尾>或
- --suffix=<附加字尾> 与-b参数一并使用,可指定备份文件的所要附加的字尾。
- -u或--update 在移动或更改文件名时,若目标文件已存在,且其文件日期比源文件新,则不覆盖目标文件。
- -v或--verbose 执行时显示详细的信息。
- -V=<方法>或
- --version-control=<方法> 与-b参数一并使用,可指定备份的方法。
- --help 显示帮助。
- --version 显示版本信息。
例1:将test目录下的passwd_link_l 移动到tmp目录下,并且改名为passwd_link_l2:
例2:移动到tmp目录下, 已存在相同的文件名,提示是否覆盖,使用参数 “-i”:
例3:将test目录下的 file1.txt 和 file2.tar.gz 一起复制到目录 、/home/wzy/tmp 下:
如果有多个来源文件或目录,则最后一个目标文件一定是“目录”,就是将所有的数据移动到该目录(tmp/)的意思!
如有纰漏,请多多指教!/^-^\
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。