简短的回答

简短的回答

有时文件夹名称包含点 ( .) 是有实际意义的。例如,您要存储以 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, , ,和. (COM6COM7COM8COM9 LPT1LPT2LPT3LPT4LPT5LPT6LPT7LPT8LPT9来源
  • 据我所知,Unix文件系统中唯一不允许使用的字符是/和空(空字节,\0)。
  • 也可以看看:文件系统限制(我不知道您想要兼容哪个 Windows)。

详细答案

技术背景:文件系统

Ubuntu 利用ext4文件系统。文件系统跟踪文件在底层存储(磁盘或 SSD 或其他)上的存储位置,所有者/组/其他人可以读取/写入/执行、时间戳、名称等形式的权限。

文件系统构造可用的存储。第一个块称为“超级块”。此块用于挂载文件系统。据我所知,每个现代文件系统都将其空间划分为块。我认为(但我不太确定)大多数文件系统也具有固定的块大小,尽管可以在创建文件系统时配置块大小。ext4(以及 ext2 和 ext3)使用所谓的“inode”来存储文件和目录。这些 inode 包含指向其他块(也可能是 inode 或“数据块”)的指针。文件的“第一个”inode 包含我上面提到的所有信息。

另一个信息是文件的“类型”。“类型”可以是:

  • 常规文件
  • 目录
  • 设备文件(块或字符设备)
  • ...

事实上,你也可以用编辑器打开目录:

vim /home

由于目录不包含完整路径,而只包含内容名称,因此我看不出文件不能包含 的原因/。我猜这可能是为了方便。(有人知道为什么/不允许吗?)

但是,其他文件系统的情况有所不同。FAT16 和 FAT32 使用所谓的“文件分配表”。这意味着有一个表包含存储在您的文件上的所有文件,它们以单链表的形式从哪个“簇”开始,在哪个簇结束。

我想告诉你的重要一点是,不允许的字符可能也取决于文件系统。

技术背景:文件类型

  • Windows 使用文件扩展名来检测文件类型
  • Linux 使用“魔字节”来检测文件类型。魔法字节是文件内容的一部分,因此与名称完全无关。这些字节是文件类型规范的一部分(请参阅png 规范作为示例)。它还使用具有相同魔法字节的文件的文件扩展名,例如.txt.html(两者都是文本文件)。

有关的

答案3

为了完整起见,仅由一个点.或两个点组成的名称..是特殊的:

  • .指的是当前目录
  • ..引用父目录

这些条目会自动添加并始终存在,因此您不能拥有名为.或 的文件..

答案4

在 Unix、Linux 文件系统中,文件命名非常灵活。唯一不能使用的文件名是无效的字符或名称中包含 的字符/。但从名称可移植性的角度来看,避免使用其他系统中禁止/保留的字符肯定是一个好习惯;例如," * : < > ? \ / |如果您想在 Windows 系统中访问文件,则不应在文件名中使用任何字符(受 NTFS 限制)。

.关于在文件名中使用(句点),我认为这应该没问题,因为它似乎不是一个“预订的”字符在任何系统中都是如此(OpenVMS、MS-DOS 和 Windows 除外,在这些系统中允许在文件/目录名称中使用它,但最后一次出现将被解释为 VMS、MS-DOS 和 Windows 中的扩展分隔符),如以下 Wikipedia 链接中所述:

在其他系统中,通常将其视为文件名的一部分,并且可以允许多个句点。在 Unix 中,以句点开头表示文件或文件夹通常是隐藏的。

相关内容