Date:2009.5.11 Monday
Content:熟悉Linux编程下的文件和目录操作
一、Linux下关于文件和目录的操作命令
1、ls -a:列出当前目录下的所有文件
2、ls -l:列出当前目录下文件的详细信息
3、pwd:查看当前所在目录的绝对路径
4、mkdir:创建一个目录 mkdir 目录名
5、mkdir -p:递归式去创建一些嵌套目录
6、rmdir 空目录名:删除一个空目录
7、rm 文件名 文件名:删除一个文件或多个文件
8、rm -rf 非空目录名 递归删除一个非空目录下的一切,-f代表不给出提示
9、ls 文件名:详细罗列文件的全部信息结构,比ls -l更有用
二、stat、fstat和lstat函数
使用stat函数最多的可能是ls -l,用其可以获得有关一个文件的所有信息
int stat(const char *restrict pathname, struct stat *restrict buf);
int fstat(int filedes, struct stat *buf);
int lstat(const char *restrict pathname, struct stat *restrict buf);
stat结构体为:
三、文件系统
普通文件、目录文件、字符特殊文件、块特殊文件、管道或FIFO、符号链接、套接字
实例4-1:对每个命令行参数打印文件类型
int
main(int argc, char *argv[])
{
int i;
struct stat buf;
char *ptr;
for (i = 1; i < argc; i++) {
printf("%s: ", argv[i]);
if (lstat(argv[i], &buf) < 0) {
err_ret("lstat error");
continue;
}
if (S_ISREG(buf.st_mode))
ptr = "regular";
else if (S_ISDIR(buf.st_mode))
ptr = "directory";
else if (S_ISCHR(buf.st_mode))
ptr = "character special";
else if (S_ISBLK(buf.st_mode))
ptr = "block special";
else if (S_ISFIFO(buf.st_mode))
ptr = "fifo";
else if (S_ISLNK(buf.st_mode))
ptr = "symbolic link";
else if (S_ISSOCK(buf.st_mode))
ptr = "socket";
else
ptr = "** unknown mode **";
printf("%s/n", ptr);
}
exit(0);
}