自己編寫的linux ls命令

2021-05-27 20:38:05 字數 3050 閱讀 6418

#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 對輸...