移动,剪切文件
普通文件的移动剪切
现在在这儿
上图中,mv y.x ./tmp的意思,就是将当前路径下的y.x文件进行剪切,然后放到路径为当前路径下的tmp目录文件夹里面
操作完成后可以cd tmp,ls看到y.x文件已经在里面了
现在退到上一层,可以看到y.x已经不见了
所以剪切mv跟拷贝cp的操作语法是一样的,只是剪切mv在对目录文件进行操作时不需要再加-r
而mv跟cp的区别是
mv剪切后,被剪切的文件只存在于新路径的底下,在原来路径底下已经没有了(所以剪切mv就是将文件从原来的路径换到另一个路径,文件换个地方,还是只有一份文件)
cp拷贝后,被拷贝的文件在原来路径下,以及新路径底下是都存在的(所以通常说cp拷贝出来的是副本,因为cp拷贝是将同一个文件放在不同的2个地方路径)
目录文件的移动剪切
现在max.c目录文件里面写入了一个a.c文件
上图中,mv max.c tmp的意思是将当前路径下的目录文件max.c,移动到当前路径下的tmp目录文件底下去,不用加-r就成功了
现在看tmp底下就有了max.c,而原来class03下面已经没有max.c了
而cp要加-r,mv却不加是因为
cp前面说了是要一层一层递归的拷贝,
而mv是下图的意思,没有逐层递归,直接一整个挖掉剪走
并没有递归着去剪,先剪圆圈,再剪小方框,最后剪大方框啥的。直接整个全剪
比如说有一个东西指向源文件,现在直接让它指向另外一个就好了
移动加重命名文件
上图中,mv y.x test.c的意思是将当前路径下的y.x移动到当前路径下,新名字叫test.c,
可以看到操作完就只有test.c没有y.x了
也就是相当于给文件y.x改了个名字叫test.c,其里面内容不变
删除文件
可以看到max.c是一个非空的目录文件,所以rmdir max.c和rm max.c都失败了,因为前者是删除空目录,后者是删除普通文件
要用rm -r max.c来删除非空的目录文件就成功了
上图是删除普通文件test.c
总结:拷贝cp,删除rm,要加-r
剪切mv不加-r
跟Windows里面删除放到回收站可找回的不同,Linux里面rm删除后就是真的删除了,找不回来了,所以要慎重,不要写错文件名啥的
这个就是快照的拍摄备份,恢复,和快照管理
vm相当于一个电脑(虚拟机),ym和Ubuntu64相当于2(多)个操作系统
rm要慎用的例子
这句话的意思,第一眼看就是删除 main.c,本来的意思也可能就是要删除main.c
但这里有1个空格,很多时候是很难看出来空格的
所以这句话的实际意思是
删除根目录/ 下的usr目录下的bin(但这个bin删除了系统就不能运行了,因为删除bin就是这些程序全都删了),并且删除根目录/下的main.c
但在执行第一个删除bin完成后,它就会告诉你根目录/下没有main.c
这个如果要尝试记得要先快照备份,
但其实这句话也通过不了执行,因为你是没有权限的(stu用户),除非sudo su 转到管理员权限(root),
而管理员权限的问题就是容易忘记exit退出管理员权限,以至于成功执行了什么无可挽回的操作,例如上句
所以如果有什么必须要管理员权限执行的操作,就制作那一句前面加sudo就行了,也就是只有当前那一句操作是有管理员权限的,不用exit退出了
上面这句话如果执行成功了,就只有重装系统一个结局了
例2:
这句话的意思是
这就是——删库跑路
/* 根目录下的星号——就是删除根目录下的所有文件东西,根目录下所有东西都删了系统肯定就运行不起来了
而f 的意思是无论什么不用问,直接同意后面接的要执行的操作,即使是删库跑路
那删完之后的解决办法就只有——再新建一个了
或者前面备份过了直接恢复
rm -r的最后还是要调用rmdir的,也就是删除非空的最后还是要调用删除空
因为-r 是递归的,从里到外,从最底层往上,删到最后总会剩下最后一个空的目录
此时就是调用rmdir删除空目录