cp(复制文件或目录)

cp 【-adfilprsu】 源文件 目标文件

cp 【options】源文件1 源文件2 ......目录

选项与参数:

-a:相当于-dr --preserve=all的意思,至于dr参考下面说明

-d:若源文件为链接文件的属性(link file),则复制链接文件属性而非文件本身

-f:为强制(force)的意思,若目标文件已经存在且无法开启,则删除后在尝试一次

-i:若目标文件已经存在时,在覆盖时会先询问操作的进行

-l:进行硬链接(hard link)的链接文件而非复制文件本身

-p:连同文件的属性(权限、用户、时间)一起复制过去,而非使用默认属性(备份常用)

-r:递归复制,用于目录的复制操作

-s:复制成为符号链接文件(symbolic link),亦即“快捷方式”文件

-u :destination(目标文件)比source(源文件)旧才更新destination,或destination不存在的情况才复制

-preserve=all:除了-p的权限相关参数外,还加入了SELinux的属性,links、xattr等也复制

注意:如果源文件有两个以上,则最后一个目标文件一定要是“目录”才行

不同身份者执行这个命令会有不同的结果产生,尤其是-a、-p选项

-i演示

root身份把家目录下的.bashrc复制到/tmp下并更名为bashrc

1ca996a582624c9088e47257f2e8ecec.png

当我们使用-i后进行重复复制时,会发现它会询问我们是否覆盖

-a演示

进入tmp目录后复制/var/log/wtmp复制到当前目录

a3cb065207f2479a84472bf6984e230b.png

查看后,我们可以发现不加任何选项后文件的某些属性/权限会改变,还有文件的建立时间也不一样了,所以我们想要全部复制时,可以加上-a选项

23f16c6eab0b431899047131e1e7e866.png

-r演示

edd39091286e41fbbf98f5841b2077ce.png

 -r可以复制目录,但文件与目录的权限可能会被改变

-l与-s演示

dee4cf8579264c798c18a7fb68148efd.png

 -l就是所谓的硬链接,至于-s则是符号链接,简单来说就是bashrc_slink就是一个快捷方式

-u是在目标文件与源文件有差异时,才会复制,所以常用于备份工作(-a也常用于备份)

去复制文件时,对于该文件我们必须拥有read权限

我们使用其他身份去使用cp时,它并不能随意去修改文件的拥有者与用户组,也就是无法完成完整权限的复制

f279f9e3422b4468932d9798a4378efc.png

 由于cp有种种的文件属性与权限的特性,所以在复制时,你必须清楚地了解到:

  • 是否需要完整的保留源文件的信息
  • 源文件是否为符号链接文件(symbolic link file)
  • 源文件是否为特殊的文件,例如:FIFO、socket等
  • 源文件是否为目录

rm(删除文件或目录)

rm 【-fir】 文件或目录

选项与参数:

-f:就是force的意思,忽略不存在的文件,不会出现警告信息

-i:交互模式,在删除前会询问使用者是否操作

-r:递归删除,最常用于目录的删除

-i用于删除前询问是否删除

0f69d6858e9f47d68dc6d298c86b01d6.png

 -r递归删除

我们使用rmdir时可以发现删除不了,因为它不是一个空目录,所以我们可以使用-r来递归删除

5f47b0b9254942468e19b00dbbc17f0c.png

 为了防止文件被root误删,所以许多Linux的发行版都默认加入了-i选项

mv(移动文件与目录,或重命名)

mv 【-fiu】 source destination

mv 【options】 source1 source2 source3 .... directory

选项与参数:

-f:force强制的意思,如果目标文件已存在,不会询问而是直接覆盖

-i:若目标文件已存在,会询问是否覆盖

-u:若目标文件已存在,当source比较新才会更新

移动:

0863d1a884fe491f8d085b60bdafeb98.png

mv因为移动的特性导致它还有个重命名的用途

f5212cafd1424fc7bea5831c6f671bab.png

可以看到最后一行以及重命名为mvtest2了

其实在Linux下还有个命令为rename,该命令专职进行多个文件名的同时命名,并非针对单一文件名修改

 

 

 

 

 

Logo

更多推荐