作用: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 --->重命名的过程!-->一般是修改文件的扩展名!
#################注意事项##########################