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;

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/573571.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java开发 时间类型的转换

1.String转date SimpleDateFormat format new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String time"2016-05-16 12:45:55"; Date date; try {   date format.parse(time);   System.out.print("Format To times:"date); } catch (Parse…

designer pyqt5 界面切换_PyQt5快速上手基础篇3-设置窗口标题和图标

前言本节我们为QT Designer生成的UI界面添加图标和窗口标题。一、实例运行1. QT Designer设计UI打开designer.exe,使用默认的Main Window创建&#xff0c;直接点击Create按钮即可设计UI图如下&#xff0c;并保存为test.ui2 将test.ui转换为ui_test.py进入ui_test.py目录&#x…

linux系统gpu test,轻量级显卡测试软件GpuTest 0.4.0版下载,支持windows Linux MAC-站长资讯中心...

说到显卡测试&#xff0c;我们一定会想到3D Mark&#xff0c;可是看着3D Mark那几百兆的大小和小水管的网速&#xff0c;有没有轻量级的测试软件呢&#xff1f;GpuTest就是一款十分小巧的软件&#xff0c;这是一款基于OpenGL的显卡压力测试软件&#xff0c;GpuTest还是一款跨平…

celery 可视化_Django中Celery的实现介绍(一)

Django中Celery的实现Celery介绍Celery是基于Python开发的一个分布式任务队列框架&#xff0c;支持使用任务队列的方式在分布的机器/进程/线程上执行任务调度。上图展示的是Celery的架构&#xff0c;它采用典型的生产者-消费者模式&#xff0c;主要由三部分组成&#xff1a;bro…

MySQL Router 测试使用 转

MySQL Router 测试使用1. 特性 MySQL Router 并没有包括一些特别新的特性, 总体上看中规中矩, 不过 first-available 和插件两个特性挺有意思, 后续会进行讲解, 特性包括: 对连接请求进行路由;和 Fabric 配套使用, 方便管理; 插件特性, 需要的功能以插件形式提供;2. 配置 MySQL…

linux脚本获取usb设备,Linux基于USB端口执行脚本

您应该弄清楚您的外部端口与哪个USB总线连接。在我的电脑上所有外部USB端口都连接到Bus 01要做这个检查lsusb -t的输出&#xff0c;然后附上一个usb设备并再次检查输出lsusb -t。那么你知道什么是 不会忽略 你的三个外部USB端口在你的设备内部USB结构树&#xff1a;内部USB端口…

pandas 合并所有列_Python学习:Pandas库

pandas包含数据结构和数据处理工具的设计使得在Python中进行数据清洗和分析非常快捷。pandas经常是和NumPy,Scipy以及数据可视化工具matplotlib一起使用的。pandas支持大部分NumPy语言风格的数组计算&#xff0c;但最大的不同在于pandas是用于处理表格型或异质型数据的。而NumP…

linux操作系统桌面应用与管理第2版,linux操作系统桌面应用与管理(62页)-原创力文档...

红旗Linux;任务在项目中的位置;任务描述;任务准备&#xff0d;明确学习目标;任务准备&#xff0d;任务1分解;任务1-1实施;任务1-1实施;任务1-1实施;最小化系统安装;最小化系统安装;任务1-2 通过yum定制系统实施;任务1-2 通过yum定制系统实施;1)yum了解;2)yum的安装;2)yum的安装…

python 请在微信客户端打开_完美解决 请在微信客户端打开链接

完美解决 请在微信客户端打开链接背景描述相信有模拟微信页面请求的测试都有看到过这个页面&#xff0c;简单点说就是爬虫爬微信页面&#xff0c;进行回放的时候会出现这个页面。大概在1年前&#xff0c;专门安排了一个人去解决这个技术问题&#xff0c;遗憾的是当时没有找到解…

进程和多线程

一、进程和线程 1.什么是进程 进程是指在系统中正在运行的一个应用程序 每个进程之间是独立的&#xff0c;每个进程均运行在其专用且受保护的内存空间内 比如同时打开QQ、Xcode&#xff0c;系统就会分别启动2个进程 通过“活动监视器”可以查看Mac系统中所开启的进程 2.什么是线…

CUMT--Java复习--网络编程

目录 一、Java网络API 1、InetAddress类 2、URL类 3、URLConnection类 4、URLDecoder类和URLEncoder类 二、基于TCP的网络编程 1、Socket类 2、ServerSocket类 三、网络通信过程 一、Java网络API Java中有关网络方面的功能都定义在java.net中。 1、InetAddress类 Jav…

windows dc linux,active-directory – Linux AD集成,使用Windows Server 2012 DC时无法登录

我正在尝试将我的CentOS 6.6服务器集成到Active Directory中.我使用配置3(SSSD / Kerberos / LDAP)遵循Red Hat的this指南.使用Windows Server 2008 R2服务器作为启用IMU的域控制器时,一切都运行良好.但是,当我使用启用了IMU的Windows Server 2012 R2服务器时,我能够获取kerber…

html table设置行高_html 表格单元格的宽度和高度的设置方法

做网页的时候&#xff0c;经常会碰到表格宽度对不齐的问题。详细地看了html中表格标签table的高度和宽度设置的细节&#xff0c;现总结如下&#xff1a;1、table中的width和height设置及其作用&#xff1a;table中设置的height其实是设置个最小值&#xff0c;也就是当表格中的内…

iOS懒加载

1.懒加载基本 懒加载——也称为延迟加载&#xff0c;即在需要的时候才加载&#xff08;效率低&#xff0c;占用内存小&#xff09;。所谓懒加载&#xff0c;写的是其getter方法。说的通俗一点&#xff0c;就是在开发中&#xff0c;当程序中需要利用的资源时。在程序启动的时候不…

linux promisc 作用,linux 下怎樣查看網卡是否支持混雜(promisc)模式

1&#xff0c;未設置支持promisc[rootbogon libpcap-1.3.0]# ifconfig eth0eth0: flags4163 mtu 1500inet 192.168.1.18 netmask 255.255.255.0 broadcast 192.168.1.255inet6 fe80::20c:29ff:fe90:90e9 prefixlen 64 scopeid 0x20ether 00:0c:29:90:90:e9 txqueuelen 10…

docker 发布tomcat项目_在docker中部署tomcat并且部署java应用程序的步骤详解

1、先说如何在docker中部署tomcat第一步&#xff1a;root用户登录在系统根目录下创建文件夹tomcat7,命令如&#xff1a;mkdir tomcat7&#xff0c;并且切换到该目录下&#xff1a;cd tomcat7&#xff1b;第二步&#xff1a;创建Dockerfile&#xff0c;命令如&#xff1a;touch …

Linux vi 行尾 ctrl,linux中vi使用技巧常用技巧和高级替换

linux中vi使用技巧常用技巧和高级替换模式切换&#xff1a;i&#xff0c;I 进入插入模式&#xff1a;i为从目前光标所在处插入&#xff1b;I为在目前所在列的第一个非空格的字符处开始插入。a&#xff0c;A 进入插入模式&#xff1a;a为从目前光标所在的下一个字符处开始插入…

c# 批量mqtt_C#使用 MQTTnet 快速实现 MQTT 通信(文末有完整Demo下载)

MQTT(一)C#使用 MQTTnet 快速实现 MQTT 通信(文末有完整Demo下载)原创weixin_pwtank1983 发布于2018-02-03 10:22:24 阅读数 36681 收藏展开目录MQTT(一)C#使用 MQTTnet 快速实现 MQTT 通信(文末有完整Demo下载)MQTT(二)在windows64位上安装Python环境MQTT(三)Python客户端net客…

5月16日 AJAX

主页面&#xff1a; <head> <script src"../jquery-2.2.3.min.js"></script> </head><body> <div> <input type"text" id"uid" /><span id"xinxi"></span> </div> </…

linux signal 符号表6,gdb调试信息__000_linux-gnu_00000000_002_rw-p__169IT.COM

很少使用gdb调试&#xff0c;现在用了&#xff0c;又不知道是什么意思&#xff0c;求大侠指教*** glibc detected *** /home/hhbgk/url/url: free(): invalid next size (normal): 0x0809ac30 *** Backtrace: /lib/i386-linux-gnu/libc.so.6(0x6ff22)[0x1a0f22]/lib/i386-linux…