2013-11-20 62 views
1

文件擴展名典型地是上一期後的所有內容。如果文件名沒有「。」,則沒有擴展名。當文件名以點開始時,會發生什麼情況,因爲linux中的隱藏文件是?區分以.dot開頭的文件擴展名和隱藏文件

在Python中,文件沒有擴展...

>>> os.path.splitext("base.ext") 
('base', '.ext') 
>>> os.path.splitext(".ext")                        
('.ext', '') 

在bash的常用方法生產的其它的結果,其中僅存在一個擴展和無基體部分(Extract filename and extension in Bash)...

>>> filename=".ext" 
>>> extension="${filename##*.}" 
>>> base="${filename%.*}" 
>>> echo $base 

>>> echo $extension 
ext 

代碼如何處理這樣的文件名?有沒有標準?每個操作系統有所不同嗎?或者只是最常見/一致的?

[編輯]
比方說你有一個文件,這只是 「.pdf」。例如,應該打開一個對話框默認列出它,而不顯示隱藏文件和2.允許所有文件擴展名?

  1. 這是一個隱藏的文件 - 它從一個週期
  2. 它實際上是一個.pdf(按文件名慣例,確保它有PDF格式的數據),或者是一個文件WITN 沒有擴展?

回答

1

基於POSIX的操作系統中的文件擴展名無先天含義;他們只是一個慣例。更改擴展名不會改變文件本身的任何內容,只是用於引用它的名稱。

一個文件可以有多個擴展名:

source.tar.gz 

有時一個分機代表的兩個收縮:

source.tgz 

其他文件可能沒有擴展名都:

.bashrc 
README 
ABOUT 
TODO 

通常,定義擴展的唯一事情是它是一個拖尾組件在非初始階段之後的文件名的nt。含義由應用程序檢查文件名稱分配。 PDF閱讀器可能會將重點放在名稱以.pdf結尾的文件上,但它不應拒絕打開名稱不正確的有效PDF文件。

注意

extension="${filename##*.}" 

是一個簡單的參數擴展算子僅在文件名不以一個週期開始返回(最終)擴展的應用。它不是一個擴展操作符,它是一個前綴移除操作符。

+0

謝謝!我知道這些,請參閱編輯。在'.bashrc'中,很明顯它是主文件名,而不是擴展名。那麼'.pdf'呢?按照相同的規則,應該說有* no *擴展名。 – jozxyqk

+0

文件內容與其擴展名(如果有)之間是否存在任何必需的連接取決於操作系統。 '.pdf' *看起來像一個帶有擴展名的空文件名,因爲您熟悉使用'.pdf'來表示一個PDF文件。問問你自己:.udn是什麼:它只是一個以句號開頭的文件,或者是你不熟悉的某種數據類型的擴展名?這就是爲什麼一個好的對話框允許你顯示所有文件,或者給出一個用戶指定的過濾器,因爲沒有關於如何命名文件的硬性規則。 – chepner

+0

這正是我的觀點。如果打開文件對話框是用內部分割擴展功能構建的,分割擴展應該選擇哪一個?我不認爲它應該是上下文敏感的。 – jozxyqk