我仔细研究了一下/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/
是一种使程序作用于目录而不是符号链接的方法。¹请注意,这仅适用于路径名解析,即访问文件时。文件名操作可能有所不同。例如
basename
和dirname
忽略尾随斜杠。
在这种情况下,我假设///
只是编程过于谨慎(一些开发人员/
在路径已经有尾随或前导斜杠时使用它来连接路径)。