我正在阅读这个问题并开始想知道我们在每个目录中可以看到的到底是什么..
意思.
,以及我如何可能添加自己的...
意思,例如我的父目录的父目录或只是我的主目录而不是甚至~
可能要做到这一点。我对 Ubuntu 很感兴趣,但它可能在每个 Linux 版本中都相似,因为这个特性在我所知道的每个平台上都是一致的。
编辑:感谢所有想提供帮助的人,但我并不是真的有兴趣严格地代入...
每个应用程序../..
的整个概念.
并..
在每个应用程序中显示,我只是想知道如何实现我自己的可用于每个脚本/应用程序的符号和上面的例子是解释它的最简单方法,因为对于大多数人来说两者都足够熟悉。
.
并且..
是操作系统实现的东西。它们可能实际上与其他所有目录一样存在于磁盘文件系统结构中,或者它们可能是专门实现的,但这对用户来说并不重要。如果您想类似地实现...
,则需要在文件系统驱动程序(或操作系统的通用文件系统处理代码)中执行。不过,我想您可以尝试在 Linux 上使用例如 FUSE。~
完全是另一回事,它完全是一个用户空间构造(就像开始的主目录的概念一样),它通常由 shell 实现,但也为一些(并非几乎所有)其他程序所知。TL;DR:您必须编写自己的 shell 以在替换时转换
...
为../..
.详情:
.
并且..
是用于表示实际和(主要)上层目录的约定。(主要是因为是/
)。..
.
这些约定由内部 unix 函数使用,例如
open(2)
andls(1)
。在任何编程语言中分别使用
open("./foo.txt")
或open("../bar/foo.txt")
(*) 将(尝试)foo.txt
在当前目录或相邻目录中打开bar
。(*) 访问模式被省略。
ls -a
将输出.
并..
作为当前目录和上层目录的约定。~
是一些 shell 的约定(我想到了,但还有很多其他的)bash
。ksh
bash 将处理替换为~
您的主路径。请注意,
open('~')
将尝试打开一个名为'~'
.另请注意,
touch ...
andmkdir ...
将创建所谓的文件和目录。您必须编写自己的 shell 以在替换时转换
...
为../..
.