C语言实践实现myshell(Linux实验)

755 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第16天,点击查看活动详情

大连海事大学Linux实验二:C语言实践实现myshell,这个里面很多源码都在linux服务器上,当时没有copy下来,目前linux中的make源码只有截图。做个实验的参考吧。

一、实验目的

  • 用 C/C++构造一个简单的 shell
  • 理解 shell 程序的功能;
  • 学会 shell 的使用;
  • 掌握基本的 makefile 方法。

二、实验内容

基本任务 1: 用 C/C++编写一个简单的 shell 程序,实现以下基本的命令。

  1. 浏览目录和文件的各种属性 ls(可以不支持参数)
  2. 回显命令 echo
  3. 显示文件内容 cat
  4. 创建目录 mkdir
  5. 删除文件 rm
  6. 切换目录 cd
  7. 显示当前目录 pwd
  8. 文字统计 wc l

基本任务 2:每一条命令单独对应一个源程序文件,不允许所有命令一个源文件。

基本任务 3: 写一个 makefile 来管理这些源文件。

基本任务 4:写清楚 make 编译和运行的过程。

三、实验步骤

1. 通过C编程实现基本命令

为了演示时保证命令的顺序,加入了rmdir,touch两个命令。

2. help文件参考

为了更好的帮助他人了解我的shell,特意写了一个help命令来阐述我的shell实现命令及其参数。如图: image.png

3. 通过makefile管理源文件

touch 创建makefile然后参考图里的源码:

image.png

4.make编译,生成可执行文件2625_mysh

image.png

四、实验结果:

1.运行myshell

image.png

2.查看帮助文档:

image.png

3.执行ls 命令(仅展示ls 和 ls -l两个常用命令)

image.png

4.echo命令:

image.png

5.cat命令:

image.png

6.mkdir命令:

image.png

7.rmdir命令:

image.png

8.touch命令:

image.png

9.rm命令:

image.png

10. cd命令:

image.png

11. pwd命令:

image.png

12. wc命令:

image.png 13. 退出shell:

image.png

五、实验分析

本次实验主要通过编程的方式考察对基本命令的理解。在实验中通过编程的方式深入理解各种基本命令的实现原理及其工作机制。

通过makefile对多个源文件命令进行管理并编译成一个可执行的方式创建自己的shell提升了对linux编译管理的理解。

源码地址:

linux 实验/lab2 lab2 C语言实现myshell · 华灯初上/海大学长的遗泽 - 码云 - 开源中国 (gitee.com)