作用:mv为移动文件重命名

说明:以应用场景为主

位置:pwd--->工作目录(print working directory)!

命令参数:

-b :若需覆盖文件,则覆盖前先行备份。 
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件 (destination) 已经存在时,就会询问是否"覆盖"!
-u :若"目标文件已经存在",且 source 比较新,才会更新(update)
-t :即指定mv的目标目录,该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后。

场景1:源文件是文件,目标文件是存在的文件-->覆盖

               细节:查看mv的alias(别名),用户不同相应的mv别名不同,\mv去除转义(root)

               过程:尝试直接覆盖源文件的内容,否则会去尝试将目标文件删除后,当前重新创建然后重命名!

               语法:mv sourceFile desExistFile

               测试场景如下:

                    1)root(源文件)-->root(目标文件)--->内容的覆盖--->同级

#(1)当前用户的身份是root(后续换成kiosk用户)!

#(2)源文件和目标文件的权限是644!

#(3)当前用户对源文件的目录具有w的权限,当前用户对目标文件的目录也具有w的权限!

#(4)过程:先删除目标文件,此时目标文件就不存在了,最后再将源文件重命名!

#(5)涉及:目标文件是否删除,源文件是否重命名-->理解对应的权限!

[23:01:57][root@foundation10:/mnt]# mkdir temp
[23:02:02][root@foundation10:/mnt]# cd temp
[23:02:04][root@foundation10:/mnt/temp]# pwd
/mnt/temp
[23:02:07][root@foundation10:/mnt/temp]# echo "I have dream">sourceFile
[23:02:36][root@foundation10:/mnt/temp]# cat sourceFile 
I have dream
[23:02:39][root@foundation10:/mnt/temp]# echo "I want eating">desExistFile
[23:03:02][root@foundation10:/mnt/temp]# cat desExistFile 
I want eating
[23:03:05][root@foundation10:/mnt/temp]# ll
total 8
-rw-r--r-- 1 root root 14 Mar 22 23:03 desExistFile
-rw-r--r-- 1 root root 13 Mar 22 23:02 sourceFile
[23:03:11][root@foundation10:/mnt/temp]# alias |grep mv
alias mv='mv -i'
[23:04:24][root@foundation10:/mnt/temp]# mv sourceFile desExistFile 
mv: overwrite ‘desExistFile’? y              #1:覆盖提示(root默认特有的)->内容(类似重定向">",涉及写)
[23:04:40][root@foundation10:/mnt/temp]# ll  #2:属性是否发生变化-->(权限、ctime)
total 4
-rw-r--r-- 1 root root 13 Mar 22 23:02 desExistFile
[23:04:43][root@foundation10:/mnt/temp]# cat desExistFile 
I have dream                                 #3:内容是否发生变化(当前用户root具有对目标文件的w权限)
[23:06:03][root@foundation10:/mnt/temp]#

                    2)student(源文件)-->root(目标文件)--->

#测试:当前用户是kiosk,来完成mv的操作!

[23:20:10][kiosk@foundation10:/tmp/temp]$ ls -ld .
drwxrwxr-x 2 kiosk kiosk 26 Mar 22 19:10 .  #当前用户kiosk对该目录具有"w"的权限!
#说明:后续将该目录变成当前用户对该目录没有w的权限,观察实验现象!
[23:20:16][kiosk@foundation10:/tmp/temp]$ echo "sourceFile">sourceFile
[23:20:22][kiosk@foundation10:/tmp/temp]$ cat sourceFile 
sourceFile    #源文件的内容
[23:20:26][kiosk@foundation10:/tmp/temp]$ ll
total 4
-rw-rw-r-- 1 kiosk kiosk 11 Mar 22 23:20 sourceFile
[23:20:28][kiosk@foundation10:/tmp/temp]$ su -
Password: 
Last login: Fri Mar 22 23:00:26 CST 2019 on pts/1
[23:20:40][root@foundation10:~]# cd /tmp/temp/
[23:20:49][root@foundation10:/tmp/temp]# echo "desExistFile">desExistFile
[23:21:19][root@foundation10:/tmp/temp]# cat desExistFile 
desExistFile  #目标文件的内容
[23:21:24][root@foundation10:/tmp/temp]# ll
total 8
-rw-r--r-- 1 root  root  13 Mar 22 23:21 desExistFile
-rw-rw-r-- 1 kiosk kiosk 11 Mar 22 23:20 sourceFile
[23:21:33][root@foundation10:/tmp/temp]# logout #ctrl+d-->切换用户
[23:22:31][kiosk@foundation10:/tmp/temp]$ mv sourceFile desExistFile      #核心点
mv: try to overwrite ‘desExistFile’, overriding mode 0644 (rw-r--r--)? y  #覆盖(注意与上述的变化)
[23:23:01][kiosk@foundation10:/tmp/temp]$ ll
total 4
-rw-rw-r-- 1 kiosk kiosk 11 Mar 22 23:20 desExistFile                     #(ctime未发生变化-->仅仅是重命名)
[23:23:03][kiosk@foundation10:/tmp/temp]$ cat desExistFile 
sourceFile                                                                #内容发生变化
[23:23:07][kiosk@foundation10:/tmp/temp]$ 

                    3)student(源文件)--->kiosk(目标文件)--->

                    4)root(源文件)-->kiosk(目标文件)--->

核心点当前用户目标文件所在的目录的权限目标文件和源文件的权限

################################分割线################################

场景2:源文件是文件,目标文件不存在-->功能:重命名(只改变文件的名字,不改变文件的位置)!

场景3:源文件是单文件,目标文件是目录(存在),则会改变目录的内容-->目录中的内容发生变化

               语法:mv  sourFile  desExistdir

               说明:目标文件的目录会发生变化--->前提是用户对于此目录具有w的权限,否则失败!

场景4:源文件是多文件,目标文件是目录(存在),则会改变目录的内容-->目录中的内容发生变化

               语法:cp  sourFile1 sourFile2 ...  desExistdir

               说明:目标文件的目录会发生变化--->前提是用户对于此目录具有w的权限,否则失败!

场景5:源文件是目录,目标文件是目录(存在),则将源目录的内容移动到目标目录中!

场景6:源文件是目录,目标文件是目录(不存在),则将源文件目录的名字改成目标文件的名字

总结:

(1)跨文件系统-->跨磁盘

过程:mv会先拷贝到当前的文件系统中,再将相应的文件系统中的源文件删除,原来文件系统中指向该文件的链接也将丢失!

(2)同一文件系统-->同一磁盘

过程:mv 文件1 文件2 --->重命名的过程!-->一般是修改文件的扩展名!

#################注意事项##########################

Logo

更多推荐