簡短的回答

簡短的回答

有時,資料夾名稱包含點 ( .) 是有意義的。例如,您正在儲存在 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,LPT8LPT9。 (來源
  • 據我所知,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 中,前導句點表示檔案或資料夾通常是隱藏的。

相關內容