日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux写一个ls命令,linux 下 如何自己写 ls 命令

發布時間:2025/3/15 linux 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux写一个ls命令,linux 下 如何自己写 ls 命令 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

有過linux 基礎 都知道 ls 命令的作用

下面給出實現代碼

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

int fun1(char *dir,char *filename)

{

struct stat buf;

char out[100];

if(stat(dir,&buf)<0)

{

perror("stat");

return (-1);

}

switch(buf.st_mode & S_IFMT)

{

case S_IFREG:

printf("-");

break;

case S_IFDIR:

printf("d");

break;

case S_IFCHR:

printf("c");

break;

case S_IFBLK:

printf("b");

break;

case S_IFIFO:

printf("p");

break;

case S_IFLNK:

printf("l");

break;

case S_IFSOCK:

printf("s");

break;

}

int n;

for(n=8;n>=0;n--)

{

if(buf.st_mode&(1<

{

switch(n%3)

{

case 2:

printf("r");

break;

case 1:

printf("w");

break;

case 0:

printf("x");

break;

default:

break;

}

}

else

{

printf("-");

}

}

printf(" %d",buf.st_nlink);

struct passwd *pw;

pw = getpwuid(buf.st_uid);

printf(" %s",pw->pw_name);

struct group *gr;

gr = getgrgid(buf.st_gid);

printf(" %s",gr->gr_name);

printf(" %ld",buf.st_size);

struct tm *t;

t = localtime(&buf.st_atime);

printf(" %d-%d-%d %d:%d",t->tm_year+1900,

t->tm_mon+1,

t->tm_mday,

t->tm_hour,

t->tm_min);

printf(" %s ",filename);

if(S_ISLNK(buf.st_mode))

{

printf(" -> ");

if(readlink(filename,out,100)==-1)

{

}

printf("%s",out);

}

printf("\n");

return 0;

}

int main(int argc ,char **argv)

{

char w[100];

memset(w,0,100);

if(argc<2)

strcpy(w,"./");

else

strcpy(w,argv[1]);

struct stat buf;

char name[100];

if(stat(w,&buf)<0)

{

fprintf(stderr,"stat error:%s\n",strerror(errno));

return -1;

}

if(S_ISDIR(buf.st_mode))

{

DIR *dir;

dir = opendir(w);

struct dirent *pdr;

while ((pdr = readdir(dir))!=NULL)

{

if(pdr->d_name[0]=='.')

{

}

else

{

printf(" dir:%s \n",pdr->d_name);

memset(name,0,100);

strcpy(name,w);

//strcat(name,"/");

strcat(name,pdr->d_name);

fun1(name,pdr->d_name);

}

}

}

else

{

fun1(w,w);

}

return 0;

}

總結

以上是生活随笔為你收集整理的linux写一个ls命令,linux 下 如何自己写 ls 命令的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。