Linuk下minishell实现

#include "main.h"

int main(int argc, const char *argv[])
{
	
	while (1)
	{
		show();

		int i = 0;
		int j = 0;
		char buff[256] = {0};

		fgets(buff,sizeof(buff),stdin);
		
		i = strlen(buff);
		buff[i-1] = '\0';

		char *arg[10] = {NULL};
		arg[0] = strtok(buff," ");
		
		while (arg[j] != NULL)
		{
			j++;
			arg[j] = strtok(NULL, " ");
			if (NULL == arg[j])
			{
				break;
			}
		}
		if (NULL == arg[0])
		{
			continue;
		}
		else if (0 == strcmp(arg[0],"exit"))
		{
			break;
		}
		else if (0 == strcmp(arg[0],"cp"))
		{
			compy(arg[1],arg[2]);
		}
		else if (0 == strcmp(arg[0],"mv"))
		{
			Mymv(arg[1],arg[2]);
		}
		else if(0 == strcmp(arg[0],"touch"))
		{
			Mytouch(arg[1]);
		}
		else if(0 == strcmp(arg[0],"ls"))
		{
			if (NULL == arg[1])
			{	
				Myls();
			}
			else if(0 == strcmp(arg[1],"-l"))
			{
				Mylsl();
			}
			else if(0 == strcmp(arg[1],"-a"))
			{
				Myals();
			}
		}
		else if(0 == strcmp(arg[0],"mkdir"))
		{
			Mymkdir(arg[1]);
		}
		else if(0 == strcmp(arg[0],"rmdir"))
		{
			Myrmdir(arg[1]);
		}
		else if(0 == strcmp(arg[0],"pwd"))
		{
			Mypwd();
		}
		else if(0 == strcmp(arg[0],"cd"))
		{
			Mycd(arg[1]);
		}
		else if(0 == strcmp(arg[0],"ln"))
		{
			if(0 == strcmp(arg[1],"-s"))
			{
				Mylns(arg[2],arg[3]);
			}
			else
			{
				Myln(arg[1],arg[2]);
			}
		}
		else if(0 == strcmp(arg[0],"remove"))
		{
			Myremove(arg[1]);
			
		}
		else
		{
			printf("没有该命令!!!\n");
		}


	}
	
	return 0;
}

项目需求:
1. 获取终端用户输入的命令,并输出相应的执行结果。
touch
cp
mv

ls
ls -a
ls -l

mkdir
rmdir
pwd
cd

ln
ln -s

exit ----------》退出minishell

2. 使用多文件方式实现,使用Makefile管理

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值