-
1 # 飛馳網
-
2 # 熄滅的蠟燭
不是Linux上沒有這麼高的要求,而是Linux的命令列介面開啟檔案的方式和在Windows下的圖形介面開啟檔案的方式不一樣。
舉個例子,比如你要在Linux的終端用touch命令建立了一個名為“a”的空檔案,你需要用編輯器開啟它,你可以用命令“vim a”或者“nano a”。vim和nano是Linux下的兩個我比較常用的文字編輯器。這個時候a是檔案的檔名作為引數傳遞給程式。
如果是在Windows下,你會怎麼開啟這個檔案?也許你會直接雙擊,但是Windows資源管理器不知道要用什麼軟體開啟它。你也可以先開啟記事本,然後點選選單欄的檔案,開啟,但是記事本開啟的視窗會預設使用副檔名來過濾檔案,你可以在右下角選擇檔案型別為所有檔案,即可選擇沒有副檔名的檔案a,選擇之後點選開啟。
當然在Windows下也可以像Linux那樣開啟,比如在cmd或者powershell裡notepad.exe C:\a,把a檔案的全路徑作為引數傳遞給程式進行開啟。如果檔案在當前工作目錄下可以忽略檔案路徑。
說了這麼多,總而言之,Windows下開啟不同型別的檔案需要使用副檔名是因為Windows資源管理器來識別要用哪個程式來開啟,如果你會看程式的啟動引數,你就會發現用Windows資源管理器雙擊檔案和在cmd裡將檔案路徑作為程式的啟動引數的命令是一樣的。如果你直接用cmd也可以不用理會副檔名,但是你也會不知道這個檔案應該用什麼程式開啟
Linux下還有一個file命令可以檢視檔案真正的型別。
-
3 # 數智風
無論是windows還是linux,它們管理的檔案都可以有副檔名,也可以要不要副檔名。因為它們辨別檔案並不是用副檔名,而是用檔案頭資訊。而副檔名的作用主要是關聯應用程式,同時讓電腦使用者可以方便地辨別檔案型別。
1、副檔名的作用winddows之所以被很多人誤解用副檔名來辨別檔案,是因為windows的圖形化中看到的大部分檔案都是有副檔名的。實際上,windows上也是有沒有副檔名的檔案。比如:c盤下的host系統檔案就沒有副檔名,負責本地解析域名和ip的對應關係,常被使用者用來破解註冊軟體去聯網。
linux之所以被很多人誤解為它不要副檔名,是因為linux使用者通常都在命令列下建立檔案。自己建立檔案習慣性不加副檔名,導致人們認為linux下的檔案都沒有副檔名。其實linux下也是有很多副檔名的,比如:最常見的.tar.gz,就是linux下壓縮檔案的型別。
不管是windows還是linux,副檔名的作用都是用來關聯預設應用程式的。在windows系統中,我們可以找到一個“預設應用”的設定程式,上面可以設定副檔名和預設應用的關聯關係。如果設定錯了預設應用程式,你會發現這類檔案將無法雙擊開啟,只能自選選擇正確的應用程式來打開了。在linux系統中,雖然沒有這樣的預設應用程式的設定。當然檔案型別的關聯在系統層面也是有的,比如:.o就是目標檔案;.so就是共享庫檔案;.c是C語言檔案;.deb是debian軟體包;.py就是python原始檔;.whl是python包。如果你要執行.py,你的系統上必須有python。
2、系統辨別檔案業內人士都知道,作業系統上的檔案都是以二進位制儲存的,本質上是沒有任何區別的。副檔名只是為了方便人類知道是什麼型別檔案,同時也用作關聯預設應用程式。而作業系統辨別檔案通常是透過讀取檔案的頭資訊的。比如:jpg檔案的頭標誌是“FFD8FF”;PNG檔案的頭標誌是“89504E47”;ZIP檔案的頭標誌是“504B0304”。
當系統呼叫應用程式開啟檔案時,作業系統會檢查該檔案的許可權以及安全屬性。符合許可權和安全設定時,應用程式就會啟動去檢查檔案的頭資訊。如果檔案頭資訊中的標誌不屬於該應用程式可以開啟的型別,該應用程式會通知使用者無法開啟該檔案。如果檔案頭資訊的標誌是可以開啟的型別,應用程式會按照頭資訊裡規定格式去解讀該檔案。這個時候,如果檔案的真實內容和檔案頭資訊規定的格式不相符,應用程式同樣無法開啟檔案。甚至可能告訴你檔案已經損壞。
總結總之,副檔名主要是為了關聯預設應用程式以及讓人們更容易理解。而作業系統真正辨別檔案還是靠讀取檔案頭資訊。
相關內容
- linux是否比Windows系統更適合用作各大學計算機系統?
- windows作業系統是由訊息驅動的,那linux呢,是由什麼驅動的,求高人解答,簡要將下原理,謝謝?
- 虛擬機器裝Linux我還能理解,裝Windows有什麼用?
- 為什麼windows系統有重新整理操作,而Linux卻不需要?
- 從技術角度出發看,Linux有沒有可能作為PC遊戲平臺並超越Windows?
- windows上的許可權管理機制是什麼?
- 學習python,公司裡用Linux多,還是windows多?
- 伺服器安裝Linux系統是不是不需要陣列卡驅動,安裝Windows系統就需要?
- 哪些細微之處可以讓你感受到Windows和Linux的巨大差別?
從開發角度:辨別檔案型別有很多辦法,但有了副檔名用肉眼即可識別,更方便。
在系統沒執行的時候,比如用個u盤看到某些檔案就知道它是幹嘛的。
引申話題:如果開發人員僅用副檔名判斷檔案格式,那就太大意也太危險了。