有時,資料夾名稱包含點 ( .
) 是有意義的。例如,您正在儲存在 L=0.5 下進行的實驗的資料。因此該資料夾可能被命名為:
experiment_L0.5
檔案名稱可能會出現類似的問題。例如:
file_L0.5.txt
在 Ubuntu 中工作,這是不好的做法嗎?與 Windows 使用者共享這些目錄怎麼樣?
答案1
據我所知,用單一或多個點命名資料夾和檔案沒有問題。
Ubuntu一般不使用點和三個字元(如.txt)來識別檔案類型。所以這在 Ubuntu 環境中沒有特殊意義。這在與 Windows 共用檔案時很有用。 Ubuntu 使用神奇數字在文件的前幾個位元組中標識文件類型。但是,如果點和三個字元副檔名可用於識別檔案類型,Nautilus 會忽略幻數。該設定可以更改。看 強制 nautilus 忽略副檔名
在 Ubuntu 中,以點開頭的檔案或資料夾名稱(例如.experiment_L0.5
)會使檔案或資料夾隱藏。您可以透過在 Nautilus 中按Ctrl+來切換隱藏檔案的顯示H。在 Windows 中,前面以 開頭的檔案名稱.
不會被隱藏。因此,如果您將名為 的隱藏檔案傳輸.experiment_L0.5
到 Windows 系統中,它將清晰可見。
在 Ubuntu 中,檔案名稱可以以點結尾,因為它末尾沒有特殊含義。但是,在 Windows 中,檔案名稱和副檔名之間用點分隔,不允許以點結尾但沒有副檔名的檔案名稱。當我嘗試在 Windows 中建立這樣的檔案時,我得到的檔案只有名稱,沒有點,沒有副檔名。
參考:關於檔案名稱的 Wiki
希望這可以幫助。
答案2
簡短的回答
- Windows 不允許使用下列字元
<>:"/\|?*
:(來源) - 更多不鼓勵使用的字元有:空格
和點
.
(來源)- 當名稱中有空格時,命令列工具會更難使用(更難,但並非不可能)
- 點在正規表示式中使用(例如,當您想使用 時
grep
)。在 Linux 中,按照慣例,前導點會使檔案隱藏。在Windows中,點用於檔案副檔名,用於檔案類型偵測。
- Windows 也不允許檔名
CON
,PRN
,AUX
,CLOCK$
,NUL
COM1
,COM2
,COM3
,COM4
,COM5
,COM6
,COM7
,COM8
,COM9
LPT1
,LPT2
,LPT3
,LPT4
,LPT5
, ,LPT6
,LPT7
,LPT8
和LPT9
。 (來源) - 據我所知,Unix 檔案系統中唯一不允許的字元是
/
和 null (空字節,\0
)。 - 也可以看看:檔案系統限制(我不知道你想相容哪個Windows)。
長答案
技術背景:檔案系統
Ubuntu 利用ext4
文件系統。檔案系統追蹤檔案儲存在底層儲存(磁碟或SSD或其他)上的位置,擁有者/群組/其他形式的權限可以讀取/寫入/執行,時間戳,名稱。
檔案系統構造可用儲存。第一個區塊稱為「超級區塊」。此區塊用於掛載檔案系統。據我所知,每個現代檔案系統都將其空間劃分為區塊。我認為(我對此不太確定)大多數檔案系統也有固定的區塊大小,儘管可以在建立檔案系統時配置區塊大小。 ext4(還有 ext2 和 ext3)對檔案和目錄使用所謂的「inode」。這些索引節點包含指向其他區塊的指標(也可能是索引節點或「資料區塊」)。文件的“第一個”索引節點包含我上面提到的所有資訊。
另一項資訊是文件的「類型」。 “類型”可以是:
- 常規文件
- 目錄
- 設備文件(區塊或字元設備)
- …
事實上,您也可以使用編輯器開啟目錄:
vim /home
由於該目錄不包含完整路徑,而僅包含內容的名稱,因此我不認為文件不能包含/
.我想這可能是為了方便。 (有人知道為什麼/
不允許嗎?)
然而,對於其他檔案系統來說情況有所不同。 FAT16 和FAT32 使用所謂的「文件分配表」。這意味著有一個表包含儲存在文件中的所有文件,它們以單鍊錶的形式從哪個「簇」開始,在哪個簇結束。
我想告訴您的重要事情是不允許的字元也可能取決於檔案系統。
技術背景:文件類型
- Windows 使用檔案副檔名來偵測檔案類型
- Linux 使用「Magic Bytes」來偵測檔案類型。魔法位元組是文件內容的一部分,因此完全獨立於名稱。這些位元組是文件類型規範的一部分(請參閱PNG規格舉個例子)。它還使用具有相同魔術位元組的檔案副檔名,例如
.txt
或.html
(都是文字檔案)。
有關的
答案3
為了完整起見,僅由一個點.
或兩個點組成的名稱..
是特殊的:
.
指當前目錄..
指的是父目錄
這些條目會自動新增並始終存在,因此您不能擁有名為.
或 的檔案..
。
答案4
檔案命名在 Unix、Linux 檔案系統中非常靈活。您唯一不能擁有的檔案名稱是無效的/
字元或其名稱中包含 a 的字元。但從名稱可移植性的角度來看,避免使用其他系統中禁止/保留的字元肯定是一個很好的做法;例如,如果您想在 Windows 系統中存取該文件,則不應" * : < > ? \ / |
在文件名稱中使用任何字元(受 NTFS 限制)。
和.
關於在檔案名稱中使用(句點),我認為應該沒問題,因為它似乎不是“預訂的”任何系統中的字符(除了OpenVMS、MS-DOS 和Windows,允許在文件/目錄名稱中使用該字符,但最後一次出現將解釋為VMS、MS-DOS 和Windows 中的擴展名分隔符),如中所述維基百科連結如下:
在其他系統中,通常被視為檔案名稱的一部分,並且可能允許多個句點。在 Unix 中,前導句點表示檔案或資料夾通常是隱藏的。