Last Updated on 2021-08-01 by Clay
首先,最需要說明的是,在 Linux 系統中,rm
是個非常非常可怕的指令。一來該指令非常簡短、二來我們使用系統,總免不了要釋放空間,刪除掉不要的舊文件。
而使用 rm
刪除文件,若是不小心誤刪了,我們可能只能趕快藉由 Inode 還原 —— 不過這也是常常救不回來了,更別提連 Inode 都釋放掉的情況。
今天要介紹的,就是一個希望避免這種事情發生,可用於取代 rm
的指令 (不過無法完全取代) —— trash
。
trash
是什麼樣的指令呢?簡單來講,大部分的系統都有個專門的規範,將欲刪除掉的文件放在一個暫時存放的地方,像是 Windows 就稱其為『資源回收筒』,而在 Linux 中,則就是 Trash。
一般我們在桌面環境中使用 del 鍵刪除檔案,檔案會自動移動至 Trash 底下。等到我們確定真的不要這個檔案了,我們再進入 Trash 中將其徹底刪除。
而 trash
指令的操作流程也是一樣。使用這個指令刪除的檔案不會徹底消失,只是暫時移動到了 Trash 底下,隨時可以還原、刪除。這樣一來,就避免了 rm
誤刪檔案的問題了。
trash 的幾個常用指令
在使用 trash
指令前,我們需要先安裝它。在 Ubuntu/Debian 系統中,我們可以使用以下指令安裝:
sudo apt install trash-cli
安裝結束以後,我們就可以開始使用 trash
指令了。
一、使用 trash-list 查看 Trash 內有無刪除的檔案
trash-list
不過一開始,若是沒有任何檔案的話,這裡便不會顯示任何資訊。
二、使用 trash 刪除檔案
假設我有兩個想要刪除的檔案,分別叫做 01.txt 以及 02.txt。
trash 01.txt 02.txt
使用空格分開兩個檔案,可以看到這兩個檔案已經不在當前資料夾底下。這時,再使用 trash-list
確認檔案已經在 Trash 底下,應該會看到像是這樣的資訊:
2020-08-04 20:38:40 /home/clay/02.txt
2020-08-04 20:38:40 /home/clay/01.txt
紀錄著刪除的時間、以及刪除前的檔案路徑。
三、使用 restore-trash 還原檔案
如果要還原 Trash 內的檔案,可以輸入:
restore-trash
會跳出這樣的畫面:
restore-trash
0 2020-08-04 20:38:40 /home/clay/02.txt
1 2020-08-04 20:38:40 /home/clay/01.txt
What file to restore [0..1]:
假設我想要還原 02.txt,那麼我就要輸入它的編號 0。
這在還原大量檔案的時候稍微有點麻煩 …… 其實可以藉由 cp
指令直接從 ~/.local/share/Trash/files/ 路徑底下複製出來。這裡建議不要使用 mv
指令直接搬移,或造成之後 trash
指令的混亂。
四、使用 trash-empty 清空 Trash 內的所有檔案
很簡單,直接使用:
trash-empty
就會將 Trash 底下的所有檔案刪除了。不過跟 rm
指令一樣,要先確認裡面都是不要的檔案。
到頭來,我覺得就算有再多的保險步驟,會不小心刪錯的可能性一直都會在。最重要的是,使用者要仔細確認自己所下的指令,這才是治本的方法。
References
- https://github.com/andreafrancia/trash-cli
- https://unix.stackexchange.com/questions/42757/make-rm-move-to-trash/42775
- https://www.tecmint.com/trash-cli-manage-linux-trash-from-command-line/
- https://www.2daygeek.com/trash-cli-command-line-trashcan-linux-system/