点正斜杠正斜杠是什么意思 (.//)?

mun*_*air 6 command-line slash find filenames

我正在使用这样的命令查询服务器:

find ./ -type f -name 'filename"
Run Code Online (Sandbox Code Playgroud)

我有很多文件开头

.//library 
Run Code Online (Sandbox Code Playgroud)

或者

.//user
Run Code Online (Sandbox Code Playgroud)

这些东西是什么意思?

Tho*_*key 7

它没有多大意义:您提供的模式find./,并且很容易find将其结果粘贴到该路径上。双斜线被忽略(被视为单斜线),但前导双斜线对某些系统可能具有某种意义。更重要的是,可移植程序假定了这种行为。

但是,您只会在使用旧版本find(例如 OSX)的BSD 派生系统中看到这种特殊行为。NetBSD 在2005 年试图在他们的源代码中修复这个问题。OSX 的用户空间较旧

检查“最近的”FreeBSD、NetBSD 和 OpenBSD,没有一个会产生这种行为。Linux 和 Unix(AIX、HPUX、Solaris)同样没有。

进一步阅读:

  • 请注意,您的报价实际上与 OP 所看到的行为不一致;它指定 `find` 应该只在参数尚未以 1 结尾的情况下添加一个额外的 `/`。 (3认同)

hee*_*ayl 6

.//方法当前目录,因此.//user在输出指示文件user在当前工作目录。

double//应该解析为 single /,这适用于我使用过的所有系统。虽然,POSIX 只为///(或更多)定义了这种行为,当然/.

//出现double是因为您使用了findas的搜索路径./,而不是典型的.. 两者都表示当前的工作目录,两者都是正确的。这是find在相对路径的情况下以这种方式附加路径的行为。请注意,find正如这个答案所提到的,这种特定行为仅在一部分系统中普遍存在,而您可能就是其中之一。