Skip to content

[Linux] 如何隱藏 df 指令顯示的 /dev/loop* 裝置

Last Updated on 2021-06-21 by Clay

熟悉使用 Linux 系統的人想必都對 "df" 指令不陌生吧!"df" 是個常用於檢查系統硬碟分配額度的指令,可以讓我們一目了然地知道目前系統硬碟的使用狀態。

不過在 Ubuntu 18.04 當中 (或是其他版本),我們若是使用 "df" 指令會看到許多的 /dev/loop* 設備,顯得有些不直觀,常常得在茫茫一片 loop 海當中尋找自己的硬碟。

比如說打開 Terminal,輸入以下指令:

df -h

Output:

如何?是不是很壯觀呢?

正因為這樣讓 "df" 指令變得不若早先的方便,故今天便來紀錄如何隱藏這些 /dev/loop* 裝置。


/dev/loop*

首先我想澄清的是,/dev/loop* 並不是一個愚蠢的設計 (身邊有朋友這樣嫌棄它、不過我想我朋友只是覺得這讓界面不好看而已 XD)。

相反的,/dev/loop* 是個相當有用的設計,其道理在於它將特定『文件』、『映像檔』等等作為一個可訪問的設備,像是一個硬體設備一樣地被掛載著。

以下我們直接來看看 Wiki 的解釋:

/dev/loop(或稱vnd (vnode disk)、lofi(迴圈檔案介面))在類Unix系統中是一種偽裝置,這種裝置使得檔案可以如同塊裝置一般被存取。

在使用之前,迴圈裝置必須與現存檔案系統上的檔案相關聯。這種關聯將提供給用戶一個應用程式介面,介面將允許檔案視為塊特殊檔案(參見裝置檔案系統)使用。因此,如果檔案中包含一個完整的檔案系統,那麼這個檔案就能如同磁碟裝置一般被掛載

這種裝置檔案經常被用於光碟或是磁碟鏡像。通過迴圈掛載來掛載包含檔案系統的檔案,便使處在這個檔案系統中的檔案得以被存取。這些檔案將出現在掛載點目錄。如果掛載目錄中本身有檔案,這些檔案在掛載後將被禁止使用。

一個迴圈裝置或許能允許在重新導向過程中進行一些資料處理。例如,裝置可能是一個被加密檔案的解密形式。在這種情況下,與迴圈裝置相關的檔案可能是另一種偽裝置。當裝置包含加密檔案系統時,這種資料處理十分有用。如果資料處理得到支援且原檔案被加密,迴圈裝置將是此加密檔案的解密形式並且裝置可以如同普通檔案系統一般被掛載。

—— WIKI

那麼,以下我們就來看看該如何隱藏這些資訊,不要出現在 "df" 指令的結果中。


隱藏 df 顯示結果

要隱藏 "df" 顯示結果,其實說穿了也不是件難事。在 "df" 當中,本來就存在著 "df -x" 的隱藏選項。

比如說我要隱藏 /dev/loop* 這些 squashfs 的裝置,那麼我就使用以下指令:

df -h -x squashfs

Output:

可以看到,df 顯示的項目已經乾淨了不少

接下來,我們可以再繼續把 tmpfs 和 udev 的項目隱藏。要注意的是,每個隱藏的項目都要在前面加上 "-x" 這個參數。

df -h -x squashfs -x tmpfs -x devtmpfs

Output:

最好,我們可以看到的 df 指令只剩下我電腦上所掛載的系統碟和 D 槽了。


設定快捷指令 (optional)

當然,每次都打這麼一大串是相當麻煩的事情,我推薦可以將這個指令直接寫入 .bashrc 裡。

在 .bashrc 裡寫下:

alias mydf='df -h -x squashfs -x tmpfs -x devtmpfs'

存檔離開之後,使用以下指令讓設定生效:

source ~/.bashrc

如此一來,以後直接輸入 mydf 就可以看到乾淨的裝置資訊了。


References

Tags:

Leave a Reply