boxin-wbx / myshell

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

# myshell 用户手册

(注:手册使用 markdown 语法标注,使用 markdown 编辑器查看效果更好。)

myshell 是由个人独立完成的一个简单的 Shell 实现。

## 命令提示符

myShell 的提示字符格式为`用户名 当前工作目录 $ `,并且使用 ANSI 标准转义代码在终端显示颜色和标题。

在提示后可以输入命令,按下回车命令执行完成后会重新打印提示并继续接受命令输入。

## 命令

Shell 命令由以下部分组成:

- 命令名称
- 零或多个命令参数
- 零或多个输入/输出重定向

多条命令间可以由以下符号连接:

- |:管道
- &:后台执行前一个命令,可以出现在复合命令的最后。
- ||:仅当前一条命令不正确退出时执行下一条命令。
- &&:仅当前一条命令正确退出时执行下一条命令。
- ;:按顺序执行命令。

符号可以将命令名称、参数等拆分,此时命令中的相关空格是可选的。

## 管道

管道(|)可以将上一条命令的输出作为下一条命令的输入。

例如,`ls|sort`可以将`ls`的结果经过排序后输出。

管道原先标准输入和标准输出的重定向会可以被命令中的输入/输出重定向覆盖,例如 `ls | sort > dir.txt`。

## 输入/输出重定向

输入/输出重定向是将命令对某个文件描述符的输入/输出操作重定向至文件(暂不支持文件描述符)的功能。

支持的重定向的格式:

programname arg1 arg2 < inputfile > outputfile 

使用arg1 和arg2 执行程序programname,输入文件流被替换为inputfile,输出文件流被替换为outputfile。

如果输出重定向的符号为 >>,则为追加模式,将输出的内容追加在文件的末尾(如果文件不存在则创建)。

## 后台执行

默认情况下,Shell 将等待当前命令结束之后,再提示用户输入新的命令。通过在命令末尾加上`&`,可以使得 Shell 不等待此命令执行结束,即提示用户输入新的命令。

## 内建命令

本 Shell 实现了以下内建命令:

- cd:改变当前工作目录到指定目录或家目录。
- exit:退出 Shell。
- pwd:显示当前目录。
- time:显示当前时间。
- fg:将后台的进程转到前台执行。
- jobs:列出后台进行的程序。
- clr:清除屏幕。
- dir:列出指定目录或当前工作目录。
- echo:打印所有命令参数和换行,参数在打印时以空格间隔。
- environ:列出所有环境变量。
- help:打印帮助。
- umask:改变默认文件权限。
- quit:退出 Shell。
- myshell: 从文件执行 shell 程序。


## 安装

myshell 在开发时使用 CMake 进行构建,因此构建时可以将其作为依赖安装。

使用`cmake . && make`命令进行编译即可。

如果没有安装 CMake,也可以使用 myshell 附带的 Makefile。

使用`make`命令进行编译即可。

About


Languages

Language:C 97.8%Language:Makefile 1.5%Language:CMake 0.7%