Answers:
注意:@StephaneChazelas评论后编辑
ls -l允许块之后输出的第一个数字是硬链接数。
它与stat“链接”中的命令返回的值相同。
当引用文件时,此数字是文件的硬链接计数;当引用目录时,此数字是包含的目录条目的数目。
一个文件通常具有1的硬链接数,但如果硬链接是用做此改变ln命令。请参阅《 Debian参考手册》。
在您的示例中,为tempFile2添加硬链接将增加其链接数:
ln -l
ln tempFile2 tempHardLink
ln -l
无论tempFile2和tempHardLink将有2的链接数。
如果对符号链接(ln -s tempFile2 tempSymLink)执行相同的执行,则计数值不会增加。
一个目录将有2最低计数'.'(链接本身),并在它的父目录中的条目。
在您的示例中,如果您想增加tempFolder的链接数,请创建一个新目录,该目录将增加。
ls -l tempFolder
mkdir tempFolder/anotherFolder
ls -l tempFolder
从anotherFolder /到tempFolder /的链接(即..)将添加到计数中。
.本身中也有该条目,另外还有一个用于其..每个子目录中的条目。
ls可能花费2个字符并提供更多信息,并且没有stat(1)命令,也find(1)没有fsck,也没有符号链接,这可能更多比今天有用。不破坏作家早已从事的shell脚本,就不能改变它/dev/null; 至少从1979
通常,在Unix上,文件是文件表中的某些条目。文件种类繁多:常规文件,设备,符号链接,门,管道,套接字,目录...
ls -i索引节点号(您可以在的输出中看到)是该表中的索引。
现在,您不是通过inode而是通过path访问文件。甲路径是链目录条目。您会发现我们在这里谈论的不是文件夹,而是目录。因为它是目录(想像电话目录)。
目录是一种特殊的文件,它为多个inode命名。目录条目是从名称到索引节点的映射。
一个给定的文件(一个inode)在一个目录中可以有多个名称(就像一个电话号码中可以有多个名称一样),并且在多个目录中也可以具有名称(条目)。这些称为链接,也称为硬链接,用于与软链接区别(一种特殊类型的文件,它是指向路径的指针)。
文件(inode)跟踪其具有的(任何目录中的条目的)链接数量,以便当该数量达到0(从上一个引用的目录取消链接时)时,该文件被释放。
这就是ls -l输出中显示的数字(链接数)。
当一个非目录文件被创建的第一次(与open或creat(或bind或mknod某些类型的文件)系统调用),它通过与新的文件(如路径提供完成"/a/b")。然后发生的是一个新文件和inode分配,并将新条目添加到与根目录中的"a"名称关联的"/"目录中。那是初始链接,所以链接数是1。
以后可以通过link()系统调用(ln命令)添加更多链接。链接可以通过unlink()系统调用(rm命令)删除。
您会注意到目录类型的文件通常具有数量大于或等于2的链接。
现在,当您创建目录时,您正在调用mkdir()系统调用。有点像mkdir("/a/b")。然后,它要做的是分配目录类型的新文件。在该新目录中,它将自动创建两个条目:
"."(点为目录)。这是到自身的链接。因此,链接数现在为1。".."(对于目录的目录)。这是的链接"/a"。因此,的链接计数"/a"增加1然后,该新目录被链接到"/a"("/a"为其添加了一个条目),因此其链接数现在为2。如果由于"/a/b/c"目录中的".."条目而创建了目录"/a/b/c",则其链接数"/a/b"将变为3。
大多数Unices限制创建到目录的更多链接,因为它们可能会导致问题循环。当他们允许link()在目录上使用a时,通常只有超级用户才能这样做。
诸如此类的某些文件系统btrfs偏离了传统的目录结构。您会注意到,btrfs即使文件系统中的目录确实包含"."与它们本身相同的索引节点号的条目,它们在目录中的链接数也始终为1 。
通常使用链接计数为2加上子目录数的事实。例如,在:
find . -name '*.c' -print
如果.不包含子目录,但包含数百万个文件。通过检查的链接计数.,find可以知道没有子目录。因此,所有find要做的就是读取目录的内容并报告结尾的条目.c(就像一个grep '\.c$'几兆字节的文件,没什么大不了的)。否则,find将必须检查每个文件的类型,以查看其中是否存在目录(导致产生许多lstat()系统调用)。当然,这种优化是行不通的btrfs(尽管在现代版本的Linux中,文件类型也存储在某些文件系统(包括btrfs)的目录条目中,并由getdents(2)用于检索条目列表的系统调用返回在目录中lstat 仍然没有必要)。
-在ls -l输出许可之后,在该位置不包含任何数字是什么意思?