work2.c

来自「简单的SHELL编程」· C语言 代码 · 共 76 行

C
76
字号
#include<dulei2fuction.h>

main()
{
	/***************欢迎语句****************/
	printf("Welcome to Shell!\n");

	while(1){
		/*********(0)每次循环,参数清零*********/		
		is_pipe=0;		is_redirect=0;
		is_background=0;
		input_len=0;
		pathcmdsdirectorynum=0;		cmdandparameternum=0;
		/*********(1)打印提示符*********/
		currentpath=get_current_dir_name();
		printf("<%s> ",currentpath);

		/*********(2)解析命令**********/
		if(!get_string())				//获得用户输入的命令
			continue;				//输入为空时结束本此循环
		set_pipeorredirect(input,input_len);		//判断含不含有管道或者重定向命令,如果有is_pipe或者is_redirect=1
				if(is_pipe||is_redirect){			
			/*******难点,以后再写********/		/*	if(is_pipe)				pipel();			if(is_redirect)				redirect();		*/			printf("too difficult\n");			free(input);
			continue;
		}
		set_background(input,input_len);		//判断含不含有后台执行命令,如果is_background=1,并得到命令参数
		/*********(3)执行内部命令*******/
		//exit命令,退出
		if(strcmp(arg[0],"exit")==0){
			printf("Bye! Thank you teacher!!!!!!!\n");
			free(input);
			break;
		}

		//cd命令,改变当前路径		if(strcmp(arg[0],"cd")==0){
			int i,j;			for(i=3,j=0;i<input_len;i++)	//获取要改变的路径				buf[j++]=input[i];
			buf[j]=0;
			arg[1]=(char *)malloc(sizeof(char)*j);
			strcpy(arg[1],buf);			//将路径保存至arg[1]
			cd_cmd(arg[1]);			//改变路径
			free(input);
			continue;
		}		/**********(4)普通命令************/		if(is_pipe==0&&is_redirect==0){			if(searchfile()){			//搜索命令文件,若找到进入if				execute_cmd();		//执行命令			}				else{				//没有找到命令文件,进入下一个循环													continue;			}		}
	
	}
	return OK;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?