One or two dots (. or ..), OK, but what do three or more dots mean?

Ozh*_*Ozh 4 linux bash shell command-line-interface

Why does this work?

if [ -d "." ] ; then echo "ok"; else echo "nok"; fi
if [ -d ".." ] ; then echo "ok"; else echo "nok"; fi
if [ -d "..." ] ; then echo "ok"; else echo "nok"; fi
if [ -d "...." ] ; then echo "ok"; else echo "nok"; fi
if [ -d "nosuchdir" ] ; then echo "ok"; else echo "nok"; fi
Run Code Online (Sandbox Code Playgroud)

Output:

ok
ok
ok
ok
nok
Run Code Online (Sandbox Code Playgroud)

What is supposed to mean ... or .... in a shell env?

bis*_*hop 6

这意味着有人创建了名为...和 的目录....。考虑:

$ [ -d '...' ] && echo 'ok' || echo 'nok'
nok
$ mkdir ...
$ [ -d '...' ] && echo 'ok' || echo 'nok'
ok
Run Code Online (Sandbox Code Playgroud)

  • ...除非 OP 严重错误地混淆了他们的问题,并且实际上是在 Windows 上运行“Git Bash”等,在这种情况下,`...` 相当于 `../..`。 (4认同)
  • @CharlesDuffy 此功能已从Novel NetWare 合并到Windows 95 中。它没有包含在 Windows NT 分支中。因此,自从该功能上次在受支持的 Windows 版本(可能是 Windows ME)中出现以来,已经过去十多年了。--- 请参阅 https://devblogs.microsoft.com/oldnewthing/20160202-00/?p=92953 https://superuser.com/questions/480122/does-have-meaning-as-a-relative-pathname-编辑号#comment568496_480122 (3认同)