基本的Unix刷新查询:ls -ld

时间:2012-07-15 08:19:35

标签: linux shell unix ubuntu command-line

我知道这是非常基本的,但我找不到这些信息 在ls手册页中,需要复习:

$ ls -ld my.dir
drwxr-xr-x    1 smith users      4096 Oct 29  2011 my.dir

drwxr-xr-x之后的数字1是什么意思? 它是否代表了直接my.dir的硬链接数量? 我记不起来。我在哪里可以找到这些信息?

谢谢,

John Goche

3 个答案:

答案 0 :(得分:3)

我在Wikipedia上找到了它:

duuugggooo (hard link count) owner group size modification_date name

该数字是硬链接数。

如果您想要更多UNIXy解决方案,请键入info ls。这提供了更详细的信息,包括:

`-l'
`--format=long'
`--format=verbose'
     In addition to the name of each file, print the file type, file
     mode bits, number of hard links, owner name, group name, size, and
     timestamp (*note Formatting file timestamps::), normally the
     modification time.  Print question marks for information that
     cannot be determined.

答案 1 :(得分:3)

这是文件的命名(硬链接)数。我想,这里有一个错误。对于目录,这必须至少为2。

$ touch file
$ ls -l
total 0
-rw-r--r-- 1 igor igor 0 Jul 15 10:24 file
$ ln file file-link
$ ls -l
total 0
-rw-r--r-- 2 igor igor 0 Jul 15 10:24 file
-rw-r--r-- 2 igor igor 0 Jul 15 10:24 file-link
$ mkdir a
$ ls -l
total 0
drwxr-xr-x 2 igor igor 40 Jul 15 10:24 a
-rw-r--r-- 2 igor igor  0 Jul 15 10:24 file
-rw-r--r-- 2 igor igor  0 Jul 15 10:24 file-link

正如您所看到的,只要您创建目录,就会在列中获得2。

在目录中创建子目录时,数字会增加:

$ mkdir a/b
$ ls -ld a
drwxr-xr-x 3 igor igor 60 Jul 15 10:41 a

正如您所看到的,目录中现在有三个名称(其中包含'a','。',子目录中包含'..'):

$ ls -id a ; cd a; ls -id .; ls -id b/..
39754633 a
39754633 .
39754633 b/..

所有这三个名称都指向同一目录(inode 39754633)。

答案 2 :(得分:0)

尝试解释为什么目录初始链接计数值= 2。 PL。看看这是否有帮助。

任何文件/目录都由inode标识。 硬链接数= inode的引用数。

创建目录/文件时,一个目录条目( form - {myname,myinodenumber})在父目录中创建。 这使得该文件/目录的inode的引用计数= 1。

现在,除此之外创建目录时,还会创建目录空间,默认情况下应该有两个目录条目 一个用于创建的目录,另一个用于 父目录,它是{。,myinodenumber}形式的两个条目 和{..,myparent'sinodenumber}。

当前目录由“。”引用。父母由“......”引用。

因此,当我们创建一个目录时,Links'的初始数量值= 1 + 1 = 2, 因为myinodenumber有两个引用。和父母的号码 链接值增加1。