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