快速业务通道

写自己的ls命令

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-07
others have write permission
S_IXOTH 00001 others have execute permission

我们可以通过下面宏来判断文件的类型

Empire CMS,phome.net

S_ISREG(m) is it a regular file?
S_ISDIR(m) directory?
S_ISCHR(m) character device?
S_ISBLK(m) block device?
S_ISFIFO(m) FIFO (named pipe)?
S_ISLNK(m) symbolic link? (Not in POSIX.1-1996.)
S_ISSOCK(m) socket? (Not in POSIX.1-1996.)

接着我们就实现ls的第一步:获得文件的属性


这个例子只能实现查看一个特定文件的属性,而ls实现的功能是如果是文件则显示文件属性,如果是目录则显示目录中各个文件的属性.
这些功能需要的函数为:

opendir/readdir函数用来获取目录项

原型:

DIR *opendir(const char *name);
struct dirent *readdir(DIR *dirp);
struct dirent描述目录中每一项的内容
struct dirent {
ino_t d_ino; /* inode number */
off_t d_off; /* offset to the next dirent */
unsigned short d_reclen; /* length of this record */
unsigned char d_type; /* type of file; not supported by all file system types */
char d_name[256]; /* filename */
};

getopt用来实现命令选项功能:

原型:

int getopt(int argc, char * const argv[], const char *optstring);
extern char *optarg;
extern int optind, opterr, optopt;

readlink读取符号链接内容:

原型:

ssize_t readlink(const char *path, char *buf, size_t bufsiz);

Empire CMS,phome.net

path为符号链接路径
buf为符号链接内容
bufsize为要获得内容长度
文件按照属性显示颜色
033[mode;foreground;backgroundmhello33[0m

mode为显示模式:
0、1、22、4、24、5、25、7、27,分别表示设定颜色、黑体、非黑体、下画线、非下画线、闪烁、非闪烁、翻转、非翻转.

foreground为前景颜色:
30 (黑色)、31 (红色)、32 (绿色)、33 (黄色)、34 (蓝色)、35 ( 紫红色)、36 (青色)和37 (白色)

background为背景颜色:
40 (黑色)、41 (红色)、42 (绿色)、43 (黄色)、44 (蓝色)、45 ( 紫红色)、46 (青色)和47 (白色)

实现如下:








结果:

这里只实现了ls的部分功能,后面还会继续完成其余的功能!

嵌入式及3G相关资源及学习请点击:嵌入式开发视频 android开发视频 android培训 3G培训 QT培训 QT开发视频 物联网培训 物联网技术视频 嵌入式学习

Empire CMS,phome.net

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号