首页 > 代码库 > ls命令设计思想

ls命令设计思想

1 作用

list segment:列出文件块

list directory contents:列举目录内容

2 用法

ls [-ABCFGHLOPRSTUW@abcdefghiklmnopqrstuwx1] [file ...]

3 参数

-@

-A  列举(.和..)外的文件和目录。

-a  列举所有的文件和目录。

-B  强制打印非打印字符(换行、制表、空格)。

-b  使用c转义码打印非打印字符。

-C  多列输出。默认参数。

-c  显示使用时间(而不是创建时间)。与-t和-l参数同时使用时生效。

-d  目录会被视为普通的文件(不会递归搜索目录)。显示目录的信息,而不是目录下的文件。

-e  

-F  在相应的文件后添加字符以示区别。目录/,可执行文件*,软链@,socket=,whiteout%,FIFO|。

-f  不排序。该参数会使-a生效。

-G  彩色输出。  

-g  兼容POSIX。

-H  使用软链的真实地址。不与-F,-d,-l同用。

-h  更适合人类阅读的方式。(主要是文件大小)。

-i  打印文件序列号。(inode number)。

-k  块大小的单位是k

-L  

-l  长格式输出。显示文件类型、权限、硬链接的数目、文件拥有者、文件所在的组、大小、日期和文件名。

-m  列举文件名,用逗号连接。

-n  显示用户和组的编号。

-O

-o  长格式输出(-l),隐藏组。

-P  符号链接视为普通文件,显示符号链接信息,而不是它指向的文件或目录。使-H和-L参数失效。

-p  目录后添加/。

-q  强制用?代替non-graphic字符。默认参数。

-l  递归显示子目录。

-r  输出反向排序。

-S  按文件大小排序。

-s  列出文件的块大小。

-T  

-t  按修改时间排序。

-U  与-t或-l一起使用时,按文件创建时间排序。

-u  与-t或-l一起使用时,按最后访问时间排序。

-v  non-graphic字符。非终端输出时的默认参数。

-W  显示whiteouts。

-w  non-printable字符。非终端输出时的默认参数。

-x

4 设计思想

设计ls命令时,需要考虑如下问题:

4.1 长格式

-l参数时,需要显示以下信息:

1 文件属性2 子文件数3 用户4 5 文件大小6 7 8 时间9 文件名

4.2 文件属性

4.2.1 文件类型

1            b     Block special file.2            c     Character special file.3            d     Directory.4            l     Symbolic link.5            s     Socket link.6            p     FIFO.7            -     Regular file.

4.2.2 文件权限

1 r    readable2 w    writable3 -    not readable or not writable4 S    有用户(组)的读(写)权限,无文件(目录)执行(搜索)权限,且set-user-ID(set-group-ID)已设置。5 s    有用户(组)的读(写)权限,有文件(目录)执行(搜索)权限,且set-user-ID(set-group-ID)已设置。6 x    文件可执行或目录可搜索。7 -     无权限。8 T     粘滞位(sticky),无文件(目录)执行(搜索)权限9 t     粘滞位(sticky),有文件(目录)执行(搜索)权限

4.3 输出颜色

4.4 是否输出到终端

4.5 输出排序

4.6 non-printable和non-graphic

4.7 各参数的优先级及turn on(off)策略

ls命令设计思想