int ls_prepare(char *w,int aflag,int lflag) //从后面看w是路径
成都创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站建设、网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的新吴网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
{ //块语句
struct stat buf //结构体; 保存文件信息,在头文件sys/stat.h
char name[100]; //数组
DIR *dir; //目录结构体; 没有必要去研究; 知道哪些函数用他即可
struct dirent *pdr; //目录信向息结构体, 里面保存文件信息,包括inode,文件名,偏移量...
目测这里应该少了代码;因为buf没有初始化;
if(S_ISDIR(buf.st_mode)) //判断是否为一个目录
{
dir = opendir(w); //打开路径w;
while ((pdr = readdir(dir))!=NULL) //然后读取目录
{
if(pdr-d_name[0]=='.') //如果目录是'.'和隐藏文件(linux隐藏文件'.'打头)
continue; //那么跳过
memset(name,0,100); 情况name字符串
strcpy(name,w); 把路径复制到字符串中
strcat(name,"/"); 字符串拼接
strcat(name,pdr-d_name); 字符串拼接
do_ls(name,pdr-d_name,lflag); //这个应该就是自己定义ls的名字吧;
}
closedir(dir); //关闭目录
}
·1、这应该是一个在宿主语言中(比如:c语言)待拼接成一个完整的linux/Unix命令串的字符串,待拼接完成后,再利用system("")调用这个命令;
以c语言为例,拼接如下:
sprintf(cmd,"grep \"%s\" %s | awk '{print $5}' %s\n",str_a,str_b,str_c);
这个命令的转换成linux直观的命令为:grep "字符串_1" 字符串_2 | awk '{print $5}' 字符串_3
其中:
"字符串_1"为grep过滤的模式;
"字符串_2"为grep筛选的对象文件名;
"字符串_3"为筛选结果输出的文件名;
即,从文件名为"字符串_2"中筛选满足条件 "字符串_1" 的行,并按照空格作为行分隔符,然后提取第5列,写入(不重复)文件名为"字符串_3"的文件中.
·2、因此,这个 grep \"%s\" %s | awk '{print $5}' %s\n 命令串片段的作用为:
从文件名为"第二个%s"的文件中,筛选满足grep条件"第1个%s"的行,并将该行中以空格分隔的第5列写入文件名为"第3个%s"的文件中. (PS:""的作用不用解释吧)
3、最后,希望下次楼主问的问题不要这么含蓄,乍一看还真不知道是啥.
CROSS_COMPILE=arm-openwrt-linux-muslgnueabi-
echo $CROSS_COMPILE
方法1:
test1=$(echo $CROSS_COMPILE)gcc
echo $test1
方法2:
test2=${CROSS_COMPILE}gccabc
echo $test2
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款