项目简介
本项目实现了一个名为Myshell的简化版Shell解释器,使用C++语言编写。Myshell拥有Linux操作系统用户接口的基本交互能力,与bash类似,支持内部指令、外部程序/指令调用、IO重定向、文件作为命令行输入、管道操作、作业控制,还支持变量赋值,echo
指令可进行变量替换。
项目的主要特性和功能
内部指令
支持多种内部指令,涵盖作业控制、目录操作、清屏、显示信息等多方面功能,例如:
- 作业控制:bg
、fg
、jobs
。
- 目录操作:cd
、pwd
。
- 清屏:clr
。
- 列文件:dir
。
- 显示字符串:echo
(支持变量替换)。
- 运行外部程序:exec
。
- 退出:exit
、quit
。
- 显示变量:environ
、set
。
- 清除变量:unset
。
- 显示帮助:help
。
- 移动参数:shift
。
- 测试表达式:test
。
- 显示时间:time
。
- 设置权限掩码:umask
。
外部程序调用
只要外部程序在PATH环境变量指定路径下,Myshell就能调用。
IO重定向
支持内部和外部指令的输出重定向,> <filename>
用于覆写文件,>> <filename>
用于在文件末尾添加内容。
文件作为命令行输入
调用Myshell时传入参数,第一个参数作为脚本文件,其内容按顺序执行,后续参数作为后续指令的参数。
管道操作
支持管道操作,实现进程间的单向或双向通信,一个进程的输出可作为另一个进程的输入。
作业控制
支持前后台进程的切换和管理,可使用Ctrl+Z暂停前台进程、使进程后台运行、查看后台进程并将后台进程转为前台。
安装使用步骤
复制项目
bash
编译项目
bash
cd myshell
make
运行Myshell
bash
./myshell
使用示例
- 改变目录:
cd /path/to/directory
- 列出文件:
dir
- 显示当前目录:
pwd
- 运行外部命令:
ls -l
- 重定向输出:
echo "Hello World" > output.txt
- 执行脚本:
./myshell script.sh
通过以上步骤,可成功安装并使用Myshell,体验其命令行交互功能。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】