何时应在子目录之间使用多个 `///`?

何时应在子目录之间使用多个 `///`?

我仔细研究了一下/var/log/plymouth-debug.log,发现了这一行:

[main.c:716] get_cache_file_for_mode:returning cache file '/var/lib/plymouth//boot-duration'

我以为是打字错误,所以输入了以下内容,果然您可以///在子目录和文件名之间添加任意数量的字符。例如:

rick@dell:~$ ls -la /var/lib/plymouth/boot-duration
-rw-r--r-- 1 root root 2041 Nov  3 21:39 /var/lib/plymouth/boot-duration
────────────────────────────────────────────────────────────────
rick@dell:~$ ls -la /var/lib/plymouth/////boot-duration
-rw-r--r-- 1 root root 2041 Nov  3 21:39 /var/lib/plymouth/////boot-duration
────────────────────────────────────────────────────────────────
rick@dell:~$ ls -la /var/lib//plymouth///boot-duration
-rw-r--r-- 1 root root 2041 Nov  3 21:39 /var/lib//plymouth///boot-duration

在什么情况下您希望使用两个或更多个分隔//符而不是一个/分隔符?

答案1

这个问题得到了很好的回答吉尔斯在Unix和Linux上: Linux 如何处理多个连续的路径分隔符(/home////username///file)?

允许使用多个斜线,它们相当于一个斜线。从单一 Unix 规范(版本 3)基本定义 §3.266 路径名:“多个连续的斜线被视为与一个斜线相同。”

有一个例外:如果路径名恰好以两个斜杠开头,则可能会被区别对待(参考:基本定义 §4.11 路径名解析Linux 本身不会这样做,但有些应用程序可能会这样做,其他 unix-ish 系统也会这样做(例如 Cygwin)。

路径名末尾的尾随/强制路径名引用目录。在 (POSIX 1003.1-2001 (Single Unix v3) 基本定义 §4.11 路径名解析,尾随/相当于尾随/.POSIX 1003.1-2008(单一 Unix v4)基本定义§4.12 删除了使其等同于 的要求/.,以便处理不存在的目录(例如,mkdir foo/需要工作,而不mkdir foo/.需要 — 请参阅 理由 进行更改)。

对于作用于目录条目的程序,如果foo是指向目录的符号链接,则传递foo/是一种使程序作用于目录而不是符号链接的方法。

¹请注意,这仅适用于路径名解析,即访问文件时。文件名操作可能有所不同。例如 basenamedirname 忽略尾随斜杠。

在这种情况下,我假设///只是编程过于谨慎(一些开发人员/在路径已经有尾随或前导斜杠时使用它来连接路径)。

相关内容