一、常用用法
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.md
和ls -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/