Skip to content

C语言实现基础shell解释器,支持多种外部命令、内置命令、多级管道、基础重定向、特殊符号解析等功能。

Notifications You must be signed in to change notification settings

zszs717524/myShell

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 

Repository files navigation

myShell

C语言实现基础shell解释器,支持多种内置命令、外部命令、多级管道、基础重定向、特殊符号解析等基本功能。 该项目创建初衷是为了更加深刻理解shell解释器原理以及linux系统编程,有缘进行完善。

功能概述

1.支持所有shell外部命令,因为外部命令可以直接通过fork+exec+wait实现。

2.支持部分内置命令,对于每个内置命令都要自己实现其基本功能,工作量较大,目前支持:cd、exit、help、history、set、unset、umask。

3.支持多级管道,管道和命令间有无空格均可,但建议规范输入。

4.支持输入输出重定向,包括覆盖和追加以及同时存在输入和输出重定向的情形。

5.支持查看环境变量。

6.命令行解析支持包含任意空格以及引号配对,但不保证格式不规范时或者出现其他特殊字符都能被解析正确,该部分应该是难点。

后续打算添加的命令以及功能有:jobs、fg、bg、test、信号响应、解析执行脚本文件、后台异步执行。

注意细节

1.利用 git clone 至本地后,执行 make shell,然后 ./shell 即可。

2.执行 help 命令可查看所有命令以及功能细节,默认以more程序显示。

3.查看某个具体命令时执行 help [command],默认以less分页程序显示。

4.考虑到工作量,许多特殊情形未考虑,只考虑了参数个数不匹配的情形,建议规范输入命令。

About

C语言实现基础shell解释器,支持多种外部命令、内置命令、多级管道、基础重定向、特殊符号解析等功能。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published