探究:Linux爲何不太在乎文件擴展名

您可能習慣了跟蹤和修改文件名中的文件擴展名,尤其是如果您是在 Windows 環境下長大的。然而,Linux 對文件擴展名的使用方式不同,在某些情況下甚至完全忽略它們。那麼這是怎麼回事,擴展名到底重要嗎?

大多數計算機系統,特別是 Windows,以這樣或那樣的方式使用文件擴展名。文件擴展名是文件名末尾的 2 - 4 個字母(有時是數字)的組合。對於網頁可能是".html",對於 JPEG 圖像可能是".jpg"等等。

有些系統對擴展名的要求非常嚴格,實際上是必須的。Linux 則更靈活,在許多情況下,並不真正關心文件擴展名。您可以隨意將您的圖像文件命名爲"octopus.png"、"octopus.image",甚至只是"octopus"。

從歷史上看,Linux 與 Windows 有所不同,它傾向於通過文件的內容而不是文件名來確定文件的類型。每種方法都有其自身的優點,所以不存在哪一種是正確的、錯誤的或者比另一種更好的情況。

在 Linux 系統中,查找文件類型的標準方式使用“魔數”、文本模式或原始字節,它們指示着特定的文件類型。例如,file 命令會打印文件的類型:

鑑於 Linux 處理文件類型的方式,您可以更改文件的擴展名,並且文件命令仍將識別其實際類型:

通常,無論您使用什麼文件擴展名,應用程序仍能完美運行。您甚至可以完全刪除文件擴展名而不會損壞文件,並且您一般不會有任何問題。當然,除非您確實遇到問題。

Linux 通常不太關注文件擴展名,但應用程序仍能隨心所欲地運行。即使像 GNOME 的 Files(Nautilus)這類核心應用程序,也通過擴展名來判定文件類型。例如,這裡有同一文件的兩個副本,擴展名不同:

請注意,Files 將具有 JPG 擴展名的文件報告爲 JPEG 類型,即便它實際上是 PNG 格式。這或許是因爲使用文件擴展名效率更高。這種神奇的方法依賴於打開文件並讀取一定數量的內容。檢查文件名的速度要快得多,即便其準確性稍差。

某些文件類型更依賴擴展名。例如,XLSX 文件是一種壓縮文件類型,因此擴展名很重要。如果沒有它,像 xdg-open 這樣的應用程序就無法滿足您的期望。此示例使用名爲 sample.xlsx 的 Excel 電子表格文件和名爲 sample2 且沒有擴展名的該文件的副本。

雖然文件命令將這兩個文件都識別爲 Microsoft Excel 類型,但 xdg-open 感到迷惑,並使用存檔管理器打開沒有擴展名的文件。請注意,文件也把它報告爲“Zip 存檔”。

需要牢記的是,使用文件擴展名還有其他不錯的理由:

總之,雖說您或許無需使用文件擴展名,而且瞭解它們在 Linux 中的用途是有用的,但您大概還是應該使用它們,以免遇到任何麻煩。