文件夹名称包含点(。)是不好的做法? 多点的文件名怎么样?
有时,文件夹名称包含点(。)实际上是有意义的。 例如,您正在存储在L = 0.5时进行的实验的数据。 所以该文件夹可能被命名为:
experiment_L0.5
文件名可能会出现类似问题。 例如:
file_L0.5.txt
在Ubuntu工作,这是一种不好的做法吗? 如果与Windows用户共享这些目录怎么样?
谢谢!
据我所知,使用单个或多个点命名文件夹和文件没有问题。
Ubuntu通常不使用点和三个字符(例如.txt)来标识文件类型。 所以这在Ubuntu上下文中没有特殊含义。 这在与Windows共享文件时很有用。 Ubuntu在文件的前几个字节中使用Magic Numbers来标识文件类型。 但是,鹦鹉螺。 如果点和三个字符扩展名可用于标识文件类型,则忽略幻数。 此设置可以更改。 请参阅强制nautilus忽略扩展
在Ubuntu中,使用点(例如.experiment_L0.5
启动文件或文件夹名称会使文件或文件夹隐藏。 您可以在Nautilus中按Ctrl + H切换隐藏文件的显示。 在Windows中,文件名以a开头。 没有隐藏。 因此,如果将名为.experiment_L0.5
的隐藏文件.experiment_L0.5
到Windows系统中,它将清晰可见。
在Ubuntu中,文件名可以以点结尾,因为它没有特殊含义放在最后。 但是,在Windows中,点会分隔文件名和扩展名,并且不允许使用以点结尾但不包含扩展名的文件名。 当我尝试在Windows中创建这样一个文件时,我得到的文件只有名称,没有点,没有扩展名。
参考: 文件名上的Wiki
希望这可以帮助。
简短的回答
- Windows不允许使用以下字符:
<>:"/\|?*
( 来源 ) - 不鼓励的更多角色是:空间
和点
.
( 来源 )- 当名称中有空格时,命令行工具更难使用(更难,不是不可能)
- 在RegEx中使用点(例如,当您想使用
grep
)。 一个前导点使文件在Linux中按惯例隐藏。 在Windows中,在文件扩展名中使用点,用于文件类型检测。
- Windows也不允许文件名
CON
,PRN
,AUX
,CLOCK$
,NUL
COM1
,COM2
,COM3
,COM4
,COM5
,COM6
,COM7
,COM9
,COM9
LPT1
,LPT2
,LPT3
,LPT4
,LPT5
,LPT6
,LPT7
,LPT8
和LPT9
。 ( 来源 ) - 我知道的Unix文件系统中不允许的唯一字符是
/
和null(空字节,\0
)。 - 另请参阅: 文件系统限制 (我不知道您希望与哪个Windows兼容)。
答案很长
技术背景:文件系统
Ubuntu使用ext4
文件系统。 文件系统跟踪文件存储在底层存储(磁盘或SSD或其他)上的位置,所有者/组/其他forms的权限可以读/写/执行,时间戳,名称。
文件系统构造可用存储。 第一个块称为“超级块”。 该块用于挂载文件系统。 据我所知,每个现代文件系统都将它的空间划分为块。 我认为(我不太确定)大多数文件系统也有固定的块大小,尽管可以在创建文件系统时配置块大小。 ext4(以及ext2和ext3)对文件和目录使用所谓的“inode”。 这些inode包含指向其他块的指针(也可能是inode或“数据块”)。 并且文件的“第一个”inode包含我上面提到的所有信息。
另一个信息是文件的“类型”。 “类型”可以是:
- 常规文件
- 目录
- 设备文件(块或字符设备)
- …
实际上,您还可以使用编辑器打开目录:
vim /home
由于目录不包含完整路径,但只有内容的名称我没有看到文件不能包含/
。 我想这可能很方便。 (有人知道为什么/
不允许?)
但是,其他文件系统的情况则不同。 FAT16和FAT32使用了所谓的“文件分配表”。 这意味着有一个表,其中包含存储在您的文件中的所有文件,它们在哪个“集群”开始,以及它们作为单个链接列表结束的集群。
我想告诉你的重要一点是,不允许的字符也可能依赖于文件系统。
技术背景:文件类型
- Windows使用文件扩展名来检测文件类型
- Linux使用“Magic Bytes”来检测文件类型。 Magic Bytes是文件内容的一部分,因此完全独立于名称。 这些字节是文件类型规范的一部分(请参阅png规范作为示例)。 它还使用具有相同魔术字节的文件的文件扩展名,例如
.txt
或.html
(两者都是文本文件)。
有关
- 为何是 ‘。’ 选择代表当前目录,’..’代表父目录?
- 什么是inode有用?
- EXT2文件系统内部的非技术性外观
为了完整起见,名称只包含一个点.
或两个点..
很特别:
-
.
指的是当前目录 -
..
指的是父目录
这些条目会自动添加并始终存在,因此您无法拥有一个名为的文件.
或..
这没关系,不是在linux中,也不是在windows中。
将文件夹命名为“program.d”是一种常见做法 – 保存程序的配置和内容(查看/ etc目录)
在Unix,Linux文件系统中,文件命名非常灵活。 您不能拥有的唯一文件名是空字符或其名称中包含/
字符。 但从名称可移植性的角度来看,避免使用其他系统中禁止/保留的字符肯定是一种好习惯。 比如,如果要在Windows系统中访问该文件,则不应在文件名中使用任何" * : < > ? \ / |
字符(受NTFS限制)。
关于使用.
(期间)在文件名中 ,我认为它应该没问题,因为它似乎不是任何系统中的“保留”字符(OpenVMS,MS-DOS和Windows除外,它在文件/目录名称中使用)允许但最后一次出现将被解释为VMS,MS-DOS和Windows中的扩展分隔符,如下面的Wikipedia链接中所述:
- 文件名:文件名限制的比较
在其他系统中,通常被视为文件名的一部分,并且可以允许多于一个时间段。 在Unix中,前导时段意味着文件或文件夹通常是隐藏的。