首页 > 代码库 > 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命令设计思想