Skip to content

[Linux] 使用 trash 指令避免 rm 誤刪檔案

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


Read More

Tags:

Leave a Reply