移動,剪切文件
普通文件的移動剪切
現在在這兒
上圖中,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刪除空目錄