改进ls的实现
实验内容:
- 参见附图,改进你的ls的实现。提交代码运行截图和码云链接。
实验步骤(通过观看蓝墨云班课资源后总结出):
目录 ls:
功能:列出目录内容,显示文件信息
-
ls -l:显示当前工作目录下包含目录及属性详细信息(共7列)
- 第一列:文件属性(类—文件-目录)
二到四位:文件创建者权限(-代表无权限,r代表读权限,w代表写权限,x代表执行权限)
五到七位:代表同组用户权限
八到十位:其他用户权限(具有读和其他权限,没有写权限)
-
第二列:文件子目录数(字段数至少为2)
-
第三列:所有者
-
第四列:所属用户组
-
第五列:文件大小
-
第六列:文件最后修改时间
-
第七列:文件名
-
man ls 查看ls的具体命令功能
-
什么是目录:目录是一种特殊的文件,它的内容是文件和目录的名字
目录文件永远不会空,每个目录都有至少两个特殊的项“."(当前目录)和:".."(上一级目录)
-
是用什么系统项读取目录调用:
man -k directory|grep read
-
输入命令:
man 3 read directory
可以看到详细信息(查看其数据结构,name保存其文件名)
ls的改进中的问题
-
排序:
-
文件名读入数组
-
qsort()排序
-
-
分栏:
-
文件名读入数组
-
计算列宽和行数
-
-
.和..
-
加入-a选项
-
没有-a,不显示隐藏文件
-
-
l(会显示详细信息)
-
功能不同
-
单独实现
-
-
如何读取文件属性
-
man 2 stat查看stat结构体的详细信息
-
st_size
:所占字节数 -
st_nlink
:文件链接数 -
st_mtime
:文件最后修改时间(time_t->ctime日历时间格式) -
st_mode
:文件类型和许可权限(模式转化为字符 user group other)
-