📄 cmdexp.c
字号:
/************************************************/
/* */
/* cmdexp.c */
/* */
/************************************************/
#include <stdio.h>
#include <string.h>
#include "filsys.h"
char input_buf[20]; /* 命令行输入缓冲区 */
int over; /* 命令行结束标记 */
/* 命令解释层函数 */
int cmdexp()
{
over = 0;
printf("[%s@localhost %s]$ ", user[user_id].u_name, cur_path_name);
getcmd();
/* 显示当前目录 */
if(( strcmp( input_buf, "dir" ) == 0 ) ||
( strcmp( input_buf, "l" ) == 0 ) ||
( strcmp( input_buf, "ls" ) == 0 ))
{
_dir();
clearbuf();
return 0;
}
/* 改变当前目录 */
if( strcmp( input_buf, "cd" ) == 0 )
{
getcmd();
chdir ( input_buf );
clearbuf();
return 0;
}
/* 创建目录(建立子目录) */
if(( strcmp( input_buf, "mkdir" ) == 0 ) ||
( strcmp( input_buf, "md" ) == 0 ))
{
if( over )
{
printf( "mkdir: too few arguments\n" );
clearbuf();
return 0;
}
getcmd();
if( input_buf[0] == '\0' )
{
printf( "mkdir: too few arguments\n" );
clearbuf();
return 0;
}
mkdir( input_buf );
while( !over )
{
getcmd();
if( input_buf[0] != '\0' )
mkdir( input_buf );
}
clearbuf();
return 0;
}
if(( strcmp( input_buf, "rmdir" ) == 0 ) ||
( strcmp( input_buf, "rd" ) == 0 ))
{
if( over )
{
printf( "rmdir: too few arguments\n" );
clearbuf();
return 0;
}
getcmd();
if( input_buf[0] == '\0' )
{
printf( "rmdir: too few arguments\n" );
clearbuf();
return 0;
}
rmdir( input_buf );
while( !over )
{
getcmd();
if( input_buf[0] != '\0' )
rmdir( input_buf );
}
clearbuf();
return 0;
}
if( strcmp( input_buf, "dir" ) == 0 )
{
clearbuf();
return 0;
}
if( strcmp( input_buf, "dir" ) == 0 )
{
clearbuf();
return 0;
}
if( strcmp( input_buf, "dir" ) == 0 )
{
return 0;
}
if( strcmp( input_buf, "logout" ) == 0 )
{
clearbuf();
return 1;
}
/* 找不到该命令 */
if( input_buf[0] != '\0' )
{
printf( "bash: %s: command not found\n", input_buf );
clearbuf();
}
return 0;
}
/* 取得命令 */
getcmd()
{
int i;
i = 0;
/* 取得命令 */
while( !over )
{
input_buf[i] = getchar();
if( input_buf[i] == ' ' )
{
if( i == 0 ) /* 命令行的开始是空格,应舍去 */
i--;
else
{
input_buf[i]='\0';
break;
}
}
else
if( input_buf[i] == '\n' )
{
over = 1;
input_buf[i]='\0';
break;
}
i++;
}
}
/* 清空缓冲区 */
clearbuf()
{
while( !over )
{
if( getchar() =='\n' )
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -