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
当我们使用-i后进行重复复制时,会发现它会询问我们是否覆盖
-a演示
进入tmp目录后复制/var/log/wtmp复制到当前目录
查看后,我们可以发现不加任何选项后文件的某些属性/权限会改变,还有文件的建立时间也不一样了,所以我们想要全部复制时,可以加上-a选项
-r演示
-r可以复制目录,但文件与目录的权限可能会被改变
-l与-s演示
-l就是所谓的硬链接,至于-s则是符号链接,简单来说就是bashrc_slink就是一个快捷方式
-u是在目标文件与源文件有差异时,才会复制,所以常用于备份工作(-a也常用于备份)
去复制文件时,对于该文件我们必须拥有read权限
我们使用其他身份去使用cp时,它并不能随意去修改文件的拥有者与用户组,也就是无法完成完整权限的复制
由于cp有种种的文件属性与权限的特性,所以在复制时,你必须清楚地了解到:
- 是否需要完整的保留源文件的信息
- 源文件是否为符号链接文件(symbolic link file)
- 源文件是否为特殊的文件,例如:FIFO、socket等
- 源文件是否为目录
rm(删除文件或目录)
rm 【-fir】 文件或目录
选项与参数:
-f:就是force的意思,忽略不存在的文件,不会出现警告信息
-i:交互模式,在删除前会询问使用者是否操作
-r:递归删除,最常用于目录的删除
-i用于删除前询问是否删除
-r递归删除
我们使用rmdir时可以发现删除不了,因为它不是一个空目录,所以我们可以使用-r来递归删除
为了防止文件被root误删,所以许多Linux的发行版都默认加入了-i选项
mv(移动文件与目录,或重命名)
mv 【-fiu】 source destination
mv 【options】 source1 source2 source3 .... directory
选项与参数:
-f:force强制的意思,如果目标文件已存在,不会询问而是直接覆盖
-i:若目标文件已存在,会询问是否覆盖
-u:若目标文件已存在,当source比较新才会更新
移动:
mv因为移动的特性导致它还有个重命名的用途
可以看到最后一行以及重命名为mvtest2了
其实在Linux下还有个命令为rename,该命令专职进行多个文件名的同时命名,并非针对单一文件名修改