- Submitter: stonepage, rapiz
- Time limit 4 days
你要在linux系统下实现一个terminal+shell
你需要在real的终端里实现一个虚假的terminal,实现以下功能
- 【basic】在终端中输入命令,以行为单位,按回车执行
- 【basic】左右方向键可以移动光标
- 【basic】ctrl+c可以停止正在执行的命令,ctrl+d可以退出终端,回到原来的terminal
你需要写一个C/C++命令行解释器来在fake终端中解析一些命令,通过libc中的系统调用实现以下功能
无特殊说明,则不需实现带命令参数
-
实现一些shell内建命令
- 【basic】echo
- 【basic】exit
- 【basic】cd pwd
-
实现一些shell特性
-
重定向和管道(不用考虑太复杂的边界情况)
-
【basic】I/O重定向(> <) 管道 (|)
保证一条指令只出现一个重定向或管道(>|<)
-
-
-
实现一些命令
- 这些命令放在哪里呢?
- 【basic】存储在一个固定的目录
- 【advanced】定义一个环境变量文件
- 【advanced】实现内建命令export
- ls
- 【basic】实现ls
- 【advanced】实现ls -l
- 文件操作
- 【basic】实现touch和mkdir
- 【advanced】实现cp、mv、rm、ln
- 这些命令放在哪里呢?
-
【lol】让程序员喜欢用你的shell色彩高亮命令提示智能补全热键绑定可开发定制插件可开发定制主题
周日完成
你可能会经常用到man命令
网上的资料相当多,所以在这就不提供链接了
网上的资料相当多,但是请面向man pages编程而非面向blog
网上的资料相当多,因此code review会拉满(禁止copy
听说stdlib.h里有个函数叫system,出于显而易见的原因,本次任务禁止使用此函数和及与其功能相似的函数
系统调用多查 glibc
支持光标移动的读取输入看 man 3 readline