#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
int aflag = 0;
int lflag = 0;
typedef char * datatype;
typedef struct _node_
linknode,*linklist;
void display_file(char *path,char *name); //列印檔案的資訊
void mode(struct stat buf); //檢視檔案的各種屬性
void selefi(struct stat buf); //列印檔案的型別
void max(struct stat buf); //
void time(struct stat buf); //列印修改檔案的時間
void getuid(struct stat buf); //獲得uid並列印
void getgid(struct stat buf); //獲得gid並列印
void display_dir(linklist list,char *name); //列印目錄
void ifdir(linklist list,char *path); //判斷是否是目錄
void getflag(int argc,char **argv,int *aflag,int *lflag); //獲得-a或-l的引數
void getname(linklist list,char *name); //獲得目錄中所有檔名
linklist createemptylinklist()
int emptylinklist(linklist h)
int lengthlinklist(linklist h)
return i;
}void visitlinklist(linklist h)
return ;
}void insertlinklist_2(linklist h,datatype x)
linklist new=(linklist)malloc(sizeof(linknode));
strcpy(new->data,x);
new->next=h->next;
h->next=new;
return ;
}void deletelinklist_2(linklist h,datatype x)
h=h->next;
p=p->next;}}
int main(int argc,char **argv)
if (optind == argc)
visitlinklist(list);
printf("\n");
return 0;
}void selefi(struct stat buf)
if ( s_isdir(buf.st_mode) )
if ( s_ischr(buf.st_mode) )
if ( s_isblk(buf.st_mode) )
if ( s_isfifo(buf.st_mode) )
if ( s_islnk(buf.st_mode) )
if ( s_issock(buf.st_mode) )
}void mode(struct stat buf)
else
if ( (buf.st_mode)&s_iwusr ) else
if ( (buf.st_mode)&s_ixusr ) else
if ( (buf.st_mode)&s_irgrp ) else
if ( (buf.st_mode)&s_iwgrp ) else
if ( (buf.st_mode)&s_ixgrp ) else
if ( (buf.st_mode)&s_iroth ) else
if ( (buf.st_mode)&s_iwoth ) else
if ( (buf.st_mode)&s_ixoth ) else
printf(" ");
}void max(struct stat buf)
void time(struct stat buf)
void getuid(struct stat buf)
void getgid(struct stat buf)
if ( lflag == 1 )
printf("%s ",name);
}void display_dir(linklist list,char * dirname)
printf("%s :\n",dirname);
while ( (dir = readdir(mydir)) != null )
}sprintf(path,"%s/%s",dirname,dir->d_name);
// display_file(path,dir->d_name);
getname(list,dir->d_name);
}closedir(mydir);
}void ifdir(linklist list,char *path)
if ( s_isdir(buf.st_mode) ) else
}void getflag(int argc,char **argv,int *aflag,int *lflag)}}
void getname(linklist list,char *name)
Linux ls命令詳解
ls 命令可以說是linux下最常用的命令之一。a 列出目錄下的所有檔案,包括以 開頭的隱含檔案。後有詳解 b 把檔名中不可輸出的字元用反斜槓加字元編號 就象在c語言裡一樣 的形式列出。c 輸出檔案的 i 節點的修改時間,並以此排序。d 將目錄象檔案一樣顯示,而不是顯示其下的檔案。e 輸出時間的全部...
Linux ls命令詳解
ls命令用來顯示目標列表,在linux中是使用率較高的命令。ls命令的輸出資訊可以進行彩色加亮顯示,以分割槽不同型別的檔案。1.命令格式 ls 選項 引數 2.命令選項 a 顯示所有檔案及目錄 ls內定將檔名或目錄名稱為 的視為影藏,不會列出 a 顯示除影藏檔案 和 以外的所有檔案列表 c 多列顯示...
linux ls命令詳解
ls命令的引數詳解 a 列出目錄下的所有檔案,包括以 開頭的隱含檔案。b 把檔名中不可輸出的字元用反斜槓加字元編號 就象在c語言裡一樣 的形式列出。c 輸出檔案的 i 節點的修改時間,並以此排序。d 將目錄象檔案一樣顯示,而不是顯示其下的檔案。e 輸出時間的全部資訊,而不是輸出簡略資訊。f u 對輸...