0%

ls命令

一、常用用法

1
ls -abFhltr --color=auto [FILE]

二、含义与选项

2.1、含义

列出文件或者目录的信息。

2.2、选项

2.2.1、“a”

列出以“.”开头的隐藏文件。

2.2.2、“b”

对于非图形字符加上反义字符,比如“hello\ world”中对空格字符加了反义字符“\”。

2.2.3、“F”

显示指示符。指示符含义介绍如表1。

表1

指示符 含义
@ 表示软链接文件或者具有扩展属性
* 表示可执行文件
= 表示socket
| 表示命名管道
> 表示door
/ 表示目录

2.2.4、“h”

以可视化的形式列出文件和目录的大小。

2.2.5、“l”

详细展现模式,共有7列数据来展现文件信息。对这7列数据的描述见表2。

表2

描述
第一列 代表这个文件的类型和权限配置。共有10个字符,第1个字符表示文件类型,描述见表3;接下来的9个字符以3个为一组,分别配置了“文件所有者,文件所属组组用户,其他用户”对该文件所拥有的权限
第二列 表示文件的inode节点上的硬链接计数(一个目录至少有2个硬链接计数,因为目录里面有一个“..”文件,再加上自身的1个硬链接,最后的硬链接计数为2)
第三列 表示文件的所有者
第四列 表示文件的所属组
第五列 表示文件的大小。对于“一般文件”,显示的是“使用大小”;对于“目录文件”,并没有累加统计该目录文件下的子文件的大小,而是显示该目录文件自身的“占用大小”(关于文件的“使用大小”和“占用大小”可见《Ext文件系统中,文件的“占用大小”和“使用大小”》
第六列 表示文件的“mtime”值(即最后修改block节点中内容的时间)
第七列 表示文件名

表3

字符 描述
d 表示目录
- 表示文件
l 表示链接文件
b 表示设备文件里面的可供存储的接口设备
c 表示设备文件里面的串行端口设备
s 表示套接字(sockets)数据接口文件
p 表示管道文件

2.2.6、“t”

根据“mtime”值从小到大排序。

2.2.7、“r”

反向排序。

2.2.8、“–color=auto”

展现文件和目录的颜色。

三、其他

有如下现象:

1
不加“h”选项时,假定文件大小为“N”,加上“h”选项时,假定相同文件大小为“M(k)”,“M(k)”值并不能通过“N/1024”得到

比如分别执行ls -l file.mdls -lh file.md命令,有如下两个执行结果,“35(k)”并不能通过“34998/1024”得到。

1
-rw-rw-r-- 1 dsl dsl 34998 10月 17 21:32 file.md
1
-rw-rw-r-- 1 dsl dsl 35K 10月 17 21:32 file.md

个人推测原因如下:ls命令统计文件大小是分段统计的(“分段”可能跟“inode/block”体系中的block节点集合相关),如果有加上“h”选项,在分段统计的过程中,就会发生单位的转化(一个block节点集合中,任何一个block节点都有可能未被填满,而不仅仅只是最后一个block节点),误差的累积导致上述现象。


参考文献: [1]man ls [2]http://stackoverflow.com/questions/17319940/how-to-escape-a-pipe-char-in-a-code-statement-in-a-markdown-table [3]https://www.reddit.com/r/bugs/comments/3my1yt/cannot_escape_pipe_character_in_tables/
您的支持将鼓励我继续分享!