据说在一般的 Unix 和 Linux 上,您应该避免在文件(普通文件、目录、链接、设备文件等)的文件名中包含空格。
但我总是这样做。对于内部有空格的文件名,
\
用来表示一个空格,要么用一对双引号将文件名括起来。%20
.文件名中真的不允许有空格吗?
您如何正确使用或处理文件名中的空格?
Cel*_*ada 53
/
文件名中允许使用空格,实际上除了和 NUL之外的每个字符。建议不要在文件名中使用空格是因为它们可能会被不支持它们的软件误解。可以说,这样的软件是有缺陷的。但也可以说,像 shell 脚本这样的编程语言使得编写在文件名中包含空格时会崩溃的软件变得太容易了,而且这些错误往往会漏掉,因为开发人员通常不会使用带有空格的文件名来测试 shell 脚本。他们。
替换%20
为的空格在文件名中并不常见。这主要用于(网络)URL。尽管 URL 中的 % 编码确实有时会进入文件名,但通常是偶然的。
gol*_*cks 20
正如您所观察到的,文件名中允许有空格。
如果您查看wikipedia 图表中的“大多数 UNIX 文件系统”条目,您会注意到:
允许使用任何 8 位字符集。我们也可以将 7 位 ASCII 包含在这个伞下,因为它是各种 8 位集的子集,并且总是使用 8 位字节实现。
唯一禁止的字符是/
和“null”。“Null”是指零字节,但无论如何都不允许出现在文本数据中。
但是,如果您使用过 shell,您可能会意识到有些字符会造成麻烦,最重要的是*
,这是一个 POSIX 通配符。
根据您想如何定义“麻烦”,您可以在其中包含空格(空格、制表符、换行符等),因为这需要使用""
. 但这是不可避免的,因为空间是允许的,所以......
您如何正确使用或处理文件名中的空格?
在 shell/命令行上下文中,将文件名用单引号或双引号括起来(但请注意,它们与WRT 其他问题不同),或使用 转义空格\
,例如:
> foo my\ file\ with\ spaces\ in\ the\ name
Run Code Online (Sandbox Code Playgroud)