zoukankan      html  css  js  c++  java
  • linux ls -l 详解

    转自:http://blog.csdn.net/sjzs5590/article/details/8254527 (原文转自http://hi.baidu.com/yzzcheng/item/1a2141878447891dc31627f5 感到遗憾,因为百度hi已经下线了相关产品,导致很多优秀的博客失去踪迹。)

    以root的家目录为例:

    可以看到,用ls -l命令查看某一个目录会得到一个7个字段的列表。

    第1行:总计(total)

    Total后面的数字是指当前目录下所有文件所占用的空间总和。可以使用ls –lh查看,也可使用ls –alh查看。

    第1字段: 文件属性字段

    -rw-r--r-- 1 root root 762 07-29 18:19 exit

    文件属性字段总共有10个字母组成;第一个字符代表文件的类型

    字母“-”表示该文件是一个普通文件

    字母“d”表示该文件是一个目录,字母"d",是dirtectory(目录)的缩写

    注意:目录或者是特殊文件,这个特殊文件存放其他文件或目录的相关信息

    字母“l”表示该文件是一个链接文件。字母"l"是link(链接)的缩写,类似于windows下的快捷方式

    字母“b”的表示块设备文件(block),一般置于/dev目录下,设备文件是普通文件和程序访问硬件设备的入口,是很特殊的文件。没有文件大小,只有一个主设备号和一个辅设备号。一次传输数据为一整块的被称为块设备,如硬盘、光盘等。最小数据传输单位为一个数据块(通常一个数据块的大小为512字节)

    字母为“c”表示该文件是一个字符设备文件(character),一般置于/dev目录下,一次传输一个字节的设备被称为字符设备,如键盘、字符终端等,传输数据的最小单位为一个字节。

    字母为“p”表示该文件为命令管道文件。与shell编程有关的文件。

    字母“s”表示该文件为sock文件。与shell编程有关的文件。

    在此重申下文件链接这个重要概念

    链接文件的概念类似于windows里的快捷方式。多个链接文件同时指向一个“源文件”。链接文件分为硬链接或符号链接两种。

    在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号inode 。软连接,其实就是新建立一个文件,这个文件就是专门用来指向别的文件的(那就和windows 下的快捷方式的那个文件有很接近的意味)。软连接产生的是一个新的文件,但这个文件的作用就是专门指向某个文件的,删了这个软连接文件,那就等于不需要这个连接,和原来的存在的实体原文件没有任何关系,但删除原来的文件,则相应的软连接不可用(cat那个软链接文件,则提示“没有该文件或目录“)

    硬连接是不会建立inode的,他只是在文件原来的inode link count域再增加1而已,也因此硬链接是不可以跨越文件系统的。相反都是软连接会重新建立一个inode,当然inode的结构跟其他的不一样,他只是一个指明源文件的字符串信息。一旦删除源文件,那么软连接将变得毫无意义。而硬链接删除源文件的时候,系统调用会检查inode link count的数值,如果他大于等于1,那么inode不会被回收,因此文件的内容不会被删除,相当于删除了一个索引。

    硬链接实际上是为文件建一个别名,链接文件和原文件实际上是同一个文件。可以通过ls -i来查看一下,这两个文件的inode号是同一个,说明它们是同一个文件;而软链接建立的是一个指向,即链接文件内的内容是指向原文件的指针,它们是两个文件。

    软链接可以跨文件系统,硬链接不可以;软链接可以对一个不存在的文件名(filename)进行链接(当然此时如果你vi这个软链接文件,linux会自动新建一个文件名为filename的文件),硬链接不可以(其文件必须存在,inode必须存在);软链接可以对目录进行连接,硬链接不可以。两种链接都可以通过命令 ln 来创建。ln 默认创建的是硬链接。使用 -s 开关可以创建软链接

    第1字符的后面9个字母表示该文件或目录的权限位。

    r表是读 (Read) 、w表示写 (Write) 、x表示执行 (eXecute)

    其中前三个表示文件拥有者的权限,中间三个表示文件所属组拥有的权限,最后三个表示其他用户拥有的权限。

    比如:

    -rw-r--r-- 1 root root 762 07-29 18:19 exit

    表示文件的拥有者root对文件有读写权限,其他人(同组用户和其他用户只有读的权限)

    另外,权限组还有一些特殊的表示法:

    [root@localhost ~]# ll /usr/X11R6/bin/XFree86

    -rws--x--x 1 root root 1960262 2003-02-28 /usr/X11R6/bin/XFree86

    s表示这个是网络接口程序"s"是socket的缩写。该程序在运行过程中会打开一个网络接口。

    其他UNIX类系统如FreeBSD中还有t权限,表示一个临时(temporary)文件

    #ls -l /tmp可以看到这样的权限:drwxrwxrwt 它的最后一位是字母"t"

    第2字段:文件硬链接数

    -rw-r--r-- 1 root root 762 07-29 18:19 exit

    如果一个文件不是目录,此时这一字段表示这个文件所具有的硬链接数,

    第2字段的值为1,说明这个文件只有exit这一个文件名。即只有一个指向该链接的硬链接。。

    如果使用ln,做一个指向该文件的硬链接再查看该文件,该文件的第2字段就会变成2

    此时exit 和aexit称为互为硬链接。他们指向同一个文件,无论是修改哪一个文件,另一个里也做相应的变化,因为实际上他们指向同一个文件(即同一文件的不同文件名)

    互为硬链接的文件具有相同的文件节点。

    可以看出,这两个文件具有相同的文件节点号:162302

    可以设置符号链接(软链接),格式如下

    Ln –s 源文件 目标链接文件

    注意:软链接时文件节点号不一样;

    如果知道一个文件有多个文件名(链接文件)如何查找他的其他文件名分布在什么地方呢?

    可以先用ls -i 获得它的节点号,然后用find查找,如/etc/sysconfig/networking/ifcfg-eth0就具有多个文件名,要查找与它互为硬链接的文件

    得到它的节点号为 452946

    再用find查找:

    这样就得到了同一个文件的不同文件名的位置。

    第2字段: 链接占用的节点

    lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit

    该字段文件占用一个节点,属于软链接(符号链接)

    如果是一个目录,则第2字段表示该目录所含子目录的个数。

    新建一个空目录,这个目录的第二字段就是2,表示该目录下有两个子目录。为什么新建的目录下面会有两个子目录呢?

    因为每一个目录都有一个指向它本身的子目录"。" 和指向它上级目录的子目录"。。",这两个默认子目录是隐藏的。ls -a可以看到

    每次在目录下新建一个子目录,该目录第2字段的值就增1,但是新建一个普通文件该字段值不增加。

    第3字段:文件(目录)拥有者

    lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit

    该字段表示此文件是属于哪个用户。linux类系统都是多用户系统,每个文件都有它的拥有者。只有文件的拥有者才具有改动文件属性的权利。当然, root用户具有改动任何文件属性的权利。对于一个目录来说,只有拥有该目录的用户,或者具有写权限的用户才有在目录下创建文件的权利

    如果某一个用户因为某种原因,被删除,而该用户的文件还存在,那么用ls -l 查看该文件将显示一个代表用户存在前ID号的数字。

    先创建一个用户test,将其加入wang用户组,并用su切换,使用ls –l查看文件拥有者,随即删除用户test,用root进入test家目录,查看刚刚创建的文件testing。

    可以看到,第三字段成了一个数字,这个数字是原test用户的ID号。因为文件系统对每个文件记录文件所有者的ID,而非用户名。

    第4字段:文件(目录)拥有者所在的组

    lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit

    一个用户可以加入很多个组,但是其中有一个是主组,就是显示在第4字段的名称。

    可以在useradd的时候用-g指定该用户所在的主组,用-G指定其他组

    格式如下:Useradd –g 组名 用户名

    第5字段: 文件所占用的空间(以字节为单位)

    lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit

    第5字段表示文件大小,如果是一个文件夹(目录),则表示该文件夹的大小。请注意是文件夹本身的大小,而不是文件夹以及它下面的文件的总大小。

    很多人不能理解文件夹是一个特殊的文件的含义,这样的话理解文件夹大小的含义就比较困难了。

    第6字段:文件(目录)最近访问(修改)时间

    lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit

    文件创建的时间可以通过touch命令来修改。如:

    [root@localhost ~]# touch exit

    可以把exit的创建时间修改为当前时间,另外,一个文件还有最后访问时间,最后修改时间等属性。

    这些属性可以用ls 的其它参数显示出来。

    第7字段:文件名

    lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit

    如果是一个符号链接,那么会有一个 “->" 箭头符号,后面根一个它指向的文件名

  • 相关阅读:
    CodeForces Gym 100500A A. Poetry Challenge DFS
    CDOJ 486 Good Morning 傻逼题
    CDOJ 483 Data Structure Problem DFS
    CDOJ 482 Charitable Exchange bfs
    CDOJ 481 Apparent Magnitude 水题
    Codeforces Gym 100637G G. #TheDress 暴力
    Gym 100637F F. The Pool for Lucky Ones 暴力
    Codeforces Gym 100637B B. Lunch 找规律
    Codeforces Gym 100637A A. Nano alarm-clocks 前缀和
    TC SRM 663 div2 B AABB 逆推
  • 原文地址:https://www.cnblogs.com/shenpengyan/p/5906325.html
Copyright © 2011-2022 走看看