標籤:

基於文本的Linux為什麼沒有回收站?

在圖形界面下,是有回收站圖標的,但是在命令行下,卻找不到相關的配置。那麼,在圖形界面下,linux的回收站是如何工作的?


其實是有的。

sudo apt-get install trash-cli

(非debian系應該也可以找到類似名字的包進行安裝)

不會用的話,man trash 可以查看這個命令怎麼用。查看回收站,恢復文件,清空回收站都是可以的。它本身也可以直接 alias 到 rm 上。

它跟圖形界面的文件管理器共享同一個回收站。有關 Linux 回收站的具體技術標準可以參見 http://freedesktop.org 的相關定義


因為圖形界面和文字界面的設計原則不同。

圖形界面的出發點是「模擬日常生活」,東西扔掉了,萬一還想要可以去翻垃圾桶,這是日常生活邏輯。

文字界面的出發點是「接近計算機實現」,刪除就是刪除文件,直來直去,這是計算機邏輯。


你沒發現很多linux的文件瀏覽器都是有兩個刪除的么……

其中一個叫刪除,

另一個,叫,

move to trash……

move to……

move……

to……

好吧,這個是純文件瀏覽器實現,還有一些發行版是魔改了rm的……

如果你的版本沒有這個東西而你需要的話,可以參考下文自己擼一個trash出來

回收站功能在 Linux 中的實現

這明明很簡單嘛,我看就是程序員們覺得自己rm -rf一定不會出錯所以懶得做而已……

咦?我好像立了什麼不得了的flag?


一些UNIX專家由此得出了荒謬的結論,他們認為最好別把rm搞得更友好。他們爭辯說,讓UNIX更友好的努力往往適得其反。不幸的是,他們是對的。


老實說,每隔一段時間,清理磁碟空間的時候,總是會在MATE桌面的回收站裡面找到令我驚奇的東西,使我思考我究竟過著怎樣的生活。


你見過 Windows 的 CMD 裏 del 一個文件會進回收站麼?


Linux本來就是沒有回收站的啊,在什麼情況下都沒有。

圖形環境下freedesktop(應該是它吧)規範了一些行為,而各家DE、WM還有軟體作者傾向於遵循這套標準,所以有一個看起來是通用的/統一的「回收站」。

而該「回收站」本質上只是一個普通目錄,原理也只是把rm換成mv而已……(就我所知windows上的做法也基本是這樣,只不過目錄具有特殊屬性以及特殊數據,而且回收站目錄不是屬於用戶而是屬於分區的)

而在命令行下,(個人感覺)傳統上出於對腳本的考慮以及對用戶的信任(即「用戶知道自己在做什麼,愚蠢的操作系統不要試圖阻止用戶的命令」),rm就是rm。

如果實在想要「回收站」,可以按前面回答所說裝個支持上述標準的軟體來代替rm……或者其實自己寫個腳本甚至只是alias一下來模擬也行……

不過當你熟悉命令行以後就不會再覺得搞個回收站是好主意了……

順便,這個問題標題本身是有問題的:「基於文本的Linux」是什麼東西?

按照語義來理解的話,要麼理解為「Linux是基於文本的+為什麼Linux沒有回收站」(然而「Linux是基於文本的」是個什麼意思?……linux是基於…很多東西的←_←),要麼理解為「『某個Linux』是基於文本的,為什麼它沒有回收站」(且不論「某個Linux」是什麼意思)。

不管怎麼說,準確用語本身是對自己知識能力的體現╮( ̄▽ ̄")╭當然我也不是什麼神級人物,我就這麼一說,各位也就這麼一看就好了。覺得有道理就去一做,不覺得有道理隨便一哂也就罷了。


樹形的文件系統和回收站是不搭的。難道十八級目錄都刪了,從回收站恢復時,再把整個目錄結構再恢復嗎?

順便反對 @肖騏 的觀點。日常生活中垃圾桶翻出來的東西多半是沒法用了的。正是因為計算機里刪除一個文件這個操作本身並不會改變文件內容,所以扔進垃圾桶里的還能拿出來繼續用。

現在的問題在於事實上我們只有一種形式的文件系統,也就是樹形的。這對於存儲個人文件來說,既無必要,也不方便。我們更應該把樹形的文件系統去掉。只保留BeFS里索引的功能。刪除文件只是給文件打個標記。等磁碟空間佔滿了再來提示你刪除文件。


你自己把 rm 給 alias 到 mv 某個文件夾不就好了

本來回收站就是給你方便使用的,本質上還是 mv


回收站只是一個特殊的文件夾,在某些文件管理器下面刪除的時候其實是放在那個特殊文件夾下了,可以隨時恢復,命令行下的linux之所以沒有相關配置,是因為

rm

命令沒有實現這一功能而已


回收站也是個普通文件夾,只不過當做暫存區而已


&> mv whatever /trash


推薦閱讀:

為什麼桌面版 Linux 運行 ping 程序,不需要 root 許可權?
RHEL比起ubuntuserver,suse技術上強大多少?
如何理解互斥鎖和信號量,以及他們在系統編程中是如何配合使用的?
Linux進程間如何傳遞文件描述符?
linux下隱藏自己的文件和進程是如何做到的?

TAG:Linux |