UNIX 原本沒有副檔名之概念,現在雖然大家習慣以一個點 . 分隔檔名與副檔名, 但是副檔名所代表之檔案類型,仍是約定俗成,沒有統一的標準。 比較可靠的是靠 file 指令:
file FOO就是要 UNIX 去檢查 FOO 的檔案內容,企圖從內容中判斷檔案類型。 如果 UNIX 認為 FOO 的內容是 ASCII 純文字,則會回應
FOO: ascii text其他常見的檔案類型,有
directory這是指一個資料夾;
symbolic link to這是指它本身是個指標鏈結;
executable shell script這是指一個 shell 的腳本程式;
c program text這是指一個 C 程式語言的原始碼。
被編譯過的機器指令碼檔案,在不同的電腦內有不同的說法。 例如在 Sun UltraSPARC 工作站裡面會說
ELF 32-bit MSB executable SPARC Version 1, dynamically linked在 Digital Alpha 工作站裡面會說
COFF format alpha dynamically linked, demand paged executable or object module在 PC 裡面執行的某些種類 Linux 裡面會說
ELF 32-bit LSB executable, Intel 80386, version 1, dynamically linked總之,沒有統一的標準,但大約都有一個關鍵字 executable 在裡面。
凡是 file 指令無法判定的檔案,如果看似廣義的純文字檔案, 就稱為 text,否則就稱為 data。 但是這兩種類型都不算是肯定的答案。 UNIX 的系統管理者可以設法修改 /etc/magic 檔案, 以便讓 file 指令能夠辨識更多的檔案類型。 這當然不在此教材的範圍內。
當 UNIX 的用戶不能肯定檔案類型,但至少想要知道是否為純文字檔的時候, 可以就用 head 指令來看看檔案內容。所謂
head FOO就是將 FOO 的前 10 列寫到螢幕上。如果 FOO 是文字檔,就會看得出來。 如果不是,那可能會印很多不知所云的東西出來,而且可能遠超過 10 列。
習題