ls -l每个字段

console:/ # ls -l data/                                                        
total 1908
drwx------   2 root     root        4096 2021-08-19 10:58 adb
drwxrwxr-x   2 system   system      4096 2021-08-19 10:58 anr
drwxrwx--x  11 system   system      4096 2021-09-30 11:45 app
drwx------   2 root     root        4096 2021-08-19 10:58 app-asec
drwxrwx--x   2 system   system      4096 2021-08-19 10:58 app-ephemeral
drwxrwx--x   2 system   system      4096 2021-08-19 10:58 app-lib
drwxrwx--x   2 system   system      4096 2021-08-19 10:58 app-private
drwx------   4 system   system      4096 2021-09-30 11:45 backup
drwxr-xr-x   2 shell    shell       4096 2021-08-19 10:58 bootchart
drwxrwx---   5 system   cache       4096 2021-08-19 10:58 cache
drwxrwx--x   3 root     root        4096 2021-08-19 10:58 dalvik-cache
drwxrwx--x 110 system   system      4096 2021-09-30 11:45 data
drwxrwx---   3 drm      drm         4096 2021-08-19 10:58 drm
drwxrwx--x   2 system   system      4096 2021-08-19 10:58 droidota
drwxr-x--x   4 root     root        4096 2021-08-19 10:58 local
drwxrwx--x   3 log      log         4096 2021-08-19 10:58 log
-rw-------   1 root     root     1675080 2021-08-20 09:32 logcat.txt
drwxrwx---   2 root     root       16384 2021-08-19 10:58 lost+found
drwxrwx---   4 media_rw media_rw    4096 2021-08-19 10:58 media
drwxrwx---   2 mediadrm mediadrm    4096 2021-08-19 10:58 mediadrm
drwxrwx--t  42 system   misc        4096 2021-08-19 10:58 misc
drwxrwx--t   3 system   misc        4096 2021-08-19 10:58 misc_ce
drwxrwx--t   3 system   misc        4096 2021-08-19 10:58 misc_de
drwxrwx---   3 nfc      nfc         4096 2021-08-19 10:58 nfc
drwxrwx--x   2 root     root        4096 2021-08-19 10:58 ota
drwxrwx---   2 system   cache       4096 2021-08-19 10:58 ota_package
drwx------   2 root     root        4096 2021-09-30 11:45 property
drwxrwx--x   2 system   system      4096 2021-08-19 10:58 resource-cache
drwx------   2 system   system      4096 2021-08-19 10:58 ss
drwxrwxr-x  18 system   system      4096 2021-09-30 12:28 system
drwxrwx---   3 system   system      4096 2021-08-19 10:58 system_ce
drwxrwx---   3 system   system      4096 2021-08-19 10:58 system_de
drwxrwx--x   2 system   system      4096 2021-08-19 10:58 tombstones
drwx------   3 root     root        4096 2021-08-19 10:58 unencrypted
drwx--x--x   2 system   system      4096 2021-08-19 10:58 user
drwx--x--x   3 system   system      4096 2021-08-19 10:58 user_de
drwxrwx--x   6 root     root        4096 2021-08-19 10:58 vendor
drwxrwx--x   3 root     root        4096 2021-08-19 10:58 vendor_ce
drwxrwx--x   3 root     root        4096 2021-08-19 10:58 vendor_de

1.total

        这个数值其实不太重要(但是知道它可以认识到什么叫"Linux一切皆文件"), 它表示所列出文件共占用多大的磁盘空间. 在这里共占用了1908K个字节的磁盘空间.
   什么叫做所列出文件共占用多大的磁盘空间呢? 就是把当前 ls -l 列出的所有文件的大小加起来一起是多大, 关键点是文件夹只占用4K(4096byte = 4KByte)的内存空间, 是的, 没错, 就4K. 无论文件夹里面装了多少文件多大多小的文件, 文件夹占用磁盘空间的永远都只是4K个字节. 那么这时候你可能会问, 那么那些在文件夹中文件呢? 这时候就体现出了, 什么叫做"Linux一切皆文件"了.
   在Linux操作系统中, 文件夹其实也是一个文件, 固定为4K字节, 这4K的字节中, 存储着大量的这个文件夹的信息. 在日常的应用编程中, Linux给我们提供了一系列的数据结构以及API(application program interface, 系统应用编程接口), 让我们来读取和维护这个文件(文件夹)的信息. 所以我们图中看到的4096字节的文件夹占用空间是真实的, 不是你眼花, 也不是Linux系统抽风了.
  如果把上面所有的数值加起来(我上面的截图不全), 算一下是不是真的占用了1908K个字节, 会发现这个数值是偏大的. 这个会涉及到文件系统中"块"的概念.

2.各字段含义

1.文件

类型

2.文件所有者权限

3.文件所属组权限

4.其他人权限5.目录的子目录个数/文件的硬链接个数

6.文件所有者

7.文件所有组8.文件大小9.文件的修改日期

10.文件名

1

drwx------2rootroot4096adb
示例2drwxrwxr-x2systemsystem4096anr
示例3drwxrwx--x6systemsystem4096app

 1.文件类型

  • "-" :表示该文件是一个普通文件
  • "d":表示该文件是一个目录,字母"d",是dirtectory(目录)的缩写
  • "l" :表示该文件是一个链接文件。字母"l"是link(链接)的缩写,类似于windows下的快捷方式
  • "b":表示块设备文件(block),一般置于/dev目录下,设备文件是普通文件和程序访问硬件设备的入口,是很特殊的文件。没有文件大小,只有一个主设备号和一个辅设备号。一次传输数据为一整块的被称为块设备,如硬盘、光盘等。最小数据传输单位为一个数据块(通常一个数据块的大小为512字节)
  • "c":表示该文件是一个字符设备文件(character),一般置于/dev目录下,一次传输一个字节的设备被称为字符设备,如键盘、字符终端等,传输数据的最小单位为一个字节
  • "p":表示该文件为命令管道文件。与shell编程有关的文件
  • "s":表示该文件为sock文件。与shell编程有关的文件

2.文件所有者权限 Owner

  • - 无
  • r 可读权限(read)
  • w 可写权限(write)
  • x 可执行权限(execute)有的是 s t s表示这个是网络接口程序"s"是socket的缩写,该程序在运行过程中会打开一个网络接口;其他UNIX类系统如FreeBSD中还有t权限,表示一个临时(temporary)文件, #ls -l /tmp可以看到这样的权限:drwxrwxrwt 它的最后一位是字母"t"

3.文件所属组权限 Group

4.其他人权限 Other

5.目录的子目录个数/文件的硬链接个数 

  • 在这里需要记住:"." ". ."也属于文件夹, 所以任意目录的最小子目录个数为2
  • 文件不是目录,且值为1,说明这个文件只有exit这一个文件名,即只有一个指向该链接的硬链接。

6.文件所有者

7.文件所有组

8.文件大小

9.文件的修改日期

10.文件名

文件链接概念

        链接文件的概念类似于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 默认创建的是硬链接。使用 ln -s 开关可以创建软链接

        如果使用ln,做一个指向该文件的硬链接再查看该文件,该文件的第2字段就会变成2。此时logcat.txt logcat1.txt称为互为硬链接。他们指向同一个文件,无论是修改哪一个文件,另一个里也做相应的变化,因为实际上他们指向同一个文件(即同一文件的不同文件名),互为硬链接的文件具有相同的文件节点。

ln  要被创建的文件的绝对路径 创建的快捷方式的名字

1|console:/ # ln data/logcat.txt data/logcat1.txt                              
console:/ # ls -l data/    

-rw-------   2 root     root     1675080 2021-08-20 09:32 logcat.txt
-rw-------   2 root     root     1675080 2021-08-20 09:32 logcat1.txt

-i 查的是文件的inode
console:/ # ls -i data/logcat.txt data/logcat1.txt                             
435 data/logcat.txt 435 data/logcat1.txt 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐