设置
以下命令序列是为我的问题设置的。
root@cd330f76096d:/# cd
root@cd330f76096d:~# ls
root@cd330f76096d:~# mkdir -p my_dir/my_subdir
root@cd330f76096d:~# ls -hAil
total 12K
6175969 -rw-r--r-- 1 root root 3.1K Oct 15 2021 .bashrc
6175970 -rw-r--r-- 1 root root 161 Jul 9 2019 .profile
7382820 drwxr-xr-x 3 root root 4.0K Sep 6 19:34 my_dir
语境
my_dir
请注意,根据输出,它具有三个硬链接。想必他们是:
./my_dir
my_dir/.
my_dir/my_subdir/..
然而。。。
root@cd330f76096d:~# find . -xdev -inum 7382820
./my_dir
就是这样。只有一行。
问题
我缺少什么和/或如何ls -l
工作?
我一半期望我无法找到更多文件的原因find
是它们引用了.
,..
在这种情况下我问到底如何ls -l
处理对源代码的引用。
预设置
上面的示例是在 docker 容器中创建的,为了方便起见,我在下面分享:
$ docker pull ubuntu:jammy
jammy: Pulling from library/ubuntu
Digest: sha256:aabed3296a3d45cede1dc866a24476c4d7e093aa806263c27ddaadbdce3c1054
Status: Downloaded newer image for ubuntu:jammy
docker.io/library/ubuntu:jammy
$ docker run -it ubuntu:jammy bash
遇到的路径名
find
(即,除了命令行上给出的搜索路径之外)不能包含.
或..
组件,因此您的命令永远不会显示这些。为什么?因为POSIX 标准是这么说的(我的重点):
(上面提到的“当前路径操作数”是命令行上的搜索路径之一。)
该
ls
命令可以计算出目录的链接计数,因为它进行了调用,该stat()
调用返回一个stat
包含硬链接数量的结构。严格来说,它不知道其他硬链接位于哪里。