资源简介
开发的Shell程序支持以下命令:
1)cd ——将当前默认目录改变为。如果没有参数,则显示当前目录;如果目录不存在,会出现合适的错误信息提示。
2)clr——清屏
3)dir ——列出目录的内容
4)environ——列出所有的环境变量
5)echo ——在屏幕上显示并换行
6)help——显示用户手册,并使用more命令过滤
7)pause——停止Shell存在直到按下回车键
8)quit——退出Shell
9)其它的命令行输入被解释为程序调用,Shell创建并执行这个程序。
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define PAGELEN 24
#define LINELEN 512
#define BUFSIZE MAX_PATH
char buf[BUFSIZE];
char path[BUFSIZE];
int main(int argc char *argv[])
{
void cd_cmd(char *dir);
void dir_cmd(char *dir);
void clr_cmd();
void environ_cmd();
void echo_cmd(char *comment);
void help_cmd();
int pause_cmd();
void quit_cmd();
void otherOpration(char *dir);
char c*input*arg[2];
char *other;
int inputlen=0is_bg=0ij=0k;
DWORD dwRet;
printf(“Oprating System Shell [版本 1.0]\n版权所有 2013 YU YING ZUO。保留所有权利。\n“);
char * str=“C:\\Users\\Administrator“;
strcpy(pathstr);
SetCurrentDirectoryA(path);
while(true)
{
for(i=0;i<2;i++)
arg[i]=NULL;
dwRet=GetCurrentDirectoryA(BUFSIZEpath);
if(dwRet==0)
{
//返回当前目录失败,输出出错信息
printf(“GetCurrentDirectory failed.\n“);
}
else if(dwRet>BUFSIZE)
{
printf(“GetCurrentDirectory failed(buffer too small;need%d chars)\n“dwRet);
}
else
printf(“\n%s>“path);
/**********输入***********/
inputlen=0;
//过滤无用字符
while((c=getchar())==‘ ‘||c==‘\n‘||c==‘\t‘||c==EOF)
if(c==‘\n‘)
continue;
while(c!=‘\n‘)
{
buf[inputlen++]=c;
c=getchar();
}
buf[inputlen++]=‘\0‘;
//将命令从缓存复制到input中
input=(char*)malloc(sizeof(char)*(inputlen));
other=(char*)malloc(sizeof(char)*(inputlen));
strcpy(inputbuf);
strcpy(otherbuf);
/**********解析指令***********/
for(i=0j=0k=0;i {
if(input[i]==‘ ‘||input[i]==‘\0‘)
{
if(j==0) //去掉多余空格
continue;
else
{
buf[j++]=‘\0‘;
arg[k]=(char*)malloc(sizeof(char)*j);
strcpy(arg[k++]buf);
j=0;
}
}
else
buf[j++]=input[i];
}
/**********处理命令***********/
//cd
if(strcmp(arg[0]“cd“)==0||strcmp(arg[0]“CD“)==0)
{
for(i=3j=0;i buf[j++]=input[i];
buf[j]=‘\0‘;
arg[1]=(char*)malloc(sizeof(char)*j);
strcpy(arg[1]buf);
if(arg[1]==NULL)
cd_cmd(path);
else
cd_cmd(arg[1]);
free(input);
continue;
}
//dir
else if(strcmp(arg[0]“dir“)==0||strcmp(arg[0]“DIR“)==0)
{
char* route;
if(arg[1]==NULL)
{
route=path;
dir_cmd(route);
}
else
dir_cmd(arg[1]);
free(input);
continue;
}
//clr清屏
else if(strcmp(arg[0]“clr“)==0||strcmp(arg[0]“CLR“)==0)
{
clr_cmd();
free(input);
continue;
}
//environ获取所有环境变量
else if(strcmp(arg[0]“environ“)==0||strcmp(arg[0]“ENVIRON“)==0)
{
environ_cmd();
free(input);
continue;
}
//echo 显示comment并换行
else if(strcmp(arg[0]“echo“)==0||strcmp(arg[0]“ECHO“)==0)
{
for(i=5j=0;i buf[j++]=input[i];
buf[j]=‘\0‘;
arg[1]=(char*)malloc(
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 35328 2013-11-08 13:38 myshell\Debug\myshell.exe
文件 397272 2013-11-08 13:38 myshell\Debug\myshell.ilk
文件 543744 2013-11-08 13:38 myshell\Debug\myshell.pdb
文件 1133 2013-11-08 01:04 myshell\Debug\shellhelp.txt
文件 33619968 2013-11-18 14:22 myshell\ipch\myshell-5903f905\myshell-acfa900a.ipch
文件 586 2013-11-08 13:38 myshell\myshell\Debug\cl.command.1.tlog
文件 13706 2013-11-08 13:38 myshell\myshell\Debug\CL.read.1.tlog
文件 238 2013-11-08 13:38 myshell\myshell\Debug\CL.write.1.tlog
文件 2 2013-11-08 13:38 myshell\myshell\Debug\li
文件 2 2013-11-08 13:38 myshell\myshell\Debug\li
文件 2 2013-11-08 13:38 myshell\myshell\Debug\li
文件 2 2013-11-08 13:38 myshell\myshell\Debug\li
文件 2 2013-11-08 13:38 myshell\myshell\Debug\li
文件 2 2013-11-08 13:38 myshell\myshell\Debug\li
文件 2 2013-11-08 13:38 myshell\myshell\Debug\li
文件 2 2013-11-08 13:38 myshell\myshell\Debug\li
文件 2 2013-11-08 13:38 myshell\myshell\Debug\li
文件 2 2013-11-08 13:38 myshell\myshell\Debug\li
文件 2 2013-11-08 13:38 myshell\myshell\Debug\li
文件 2 2013-11-08 13:38 myshell\myshell\Debug\li
文件 2 2013-11-08 13:38 myshell\myshell\Debug\li
文件 2 2013-11-08 13:38 myshell\myshell\Debug\li
文件 1308 2013-11-08 13:38 myshell\myshell\Debug\li
文件 2808 2013-11-08 13:38 myshell\myshell\Debug\li
文件 548 2013-11-08 13:38 myshell\myshell\Debug\li
文件 350 2013-11-08 13:38 myshell\myshell\Debug\mt.command.1.tlog
文件 250 2013-11-08 13:38 myshell\myshell\Debug\mt.read.1.tlog
文件 250 2013-11-08 13:38 myshell\myshell\Debug\mt.write.1.tlog
文件 3005 2013-11-07 23:51 myshell\myshell\Debug\myshell.Build.CppClean.log
文件 406 2013-11-07 23:51 myshell\myshell\Debug\myshell.exe.em
............此处省略27个文件信息
- 上一篇:fluent帮助文档
- 下一篇:信号与系统最全课件,从0开始
相关资源
- VC OpenCV车牌识别
- 基于linux QT开发的万年历程序
- 毕业设计基于Opencv的车牌识别系统
- 鸟哥的Linux私房菜-基础篇.第四版.pd
- xshell最新版5.0.1339
- tessent shell reference/tessent工具命令参考
- Xshell6绿色版包含Xftp
- 网狐棋牌(文档与源代码)
- 中国象棋源码+论文人工智能,搜索算
- 上海期货交易所ctp trader demo
- Linux命令行与shell脚本编程大全.第3版
- LINUX+SHELL脚本攻略(中文版带书签)
- funcode——坦克大战
- 串口通讯类SerialPort类
- 为女友做的游戏
- 学习OpenCV(中文版)pdf文档+源码
- xshell6.zip
- 永久授权xshell6官方原版
- Xshell_5.0.1325
- OpenCV实现多目三维重建
- Game Engine Architecture 3rd Edition 游戏引擎
- socket-demo
- Linux命令行与shell脚本编程大全第3版文
- 数据结构课程设计 带权无向图及景区
- 用UDP实现的FTP
- 王小凤主讲 严蔚敏《数据结构》考研
- Algorithms Fourth Edition [pdf]
- Linux与unix shell编程指南.pdf
- skillcore实现的UI动画Demo
- USB HID开发相关的库和头文件32位和6
评论
共有 条评论