Caffeinated 6.828:练习 shell

2024年 7月 18日 51.7k 0

Caffeinated 6.828:练习 shell-1

通过在 shell 中实现多项功能,该作业将使你更加熟悉 Unix 系统调用接口和 shell。你可以在支持 Unix API 的任何操作系统(一台 Linux Athena 机器、装有 Linux 或 Mac OS 的笔记本电脑等)上完成此作业。请在第一次上课前将你的 shell 提交到网站。

如果你在练习中遇到困难或不理解某些内容时,你不要羞于给员工邮件列表发送邮件,但我们确实希望全班的人能够自行处理这级别的 C 编程。如果你对 C 不是很熟悉,可以认为这个是你对 C 熟悉程度的检查。再说一次,如果你有任何问题,鼓励你向我们寻求帮助。

下载 xv6 shell 的框架,然后查看它。框架 shell 包含两个主要部分:解析 shell 命令并实现它们。解析器只能识别简单的 shell 命令,如下所示:

ls > y
cat  y1
cat y1
rm y1
ls | sort | uniq | wc
rm y

将这些命令剪切并粘贴到 t.sh 中。

你可以按如下方式编译框架 shell 的代码:

$ gcc sh.c

它会生成一个名为 a.out 的文件,你可以运行它:

$ ./a.out < t.sh

执行会崩溃,因为你还没有实现其中的几个功能。在本作业的其余部分中,你将实现这些功能。

执行简单的命令

实现简单的命令,例如:

$ ls

解析器已经为你构建了一个 execcmd,所以你唯一需要编写的代码是 runcmd 中的 case ’ ‘。要测试你可以运行 “ls”。你可能会发现查看 exec 的手册页是很有用的。输入 man 3 exec

你不必实现引用(即将双引号之间的文本视为单个参数)。

I/O 重定向

实现 I/O 重定向命令,这样你可以运行:

echo "6.828 is cool" > x.txt
cat < x.txt

解析器已经识别出 ‘>’ 和 ‘

相关文章

Linux 命令行的聊天工具 CenterIM
Linux 桌面年仍未到来 但 Linux 移动之年已到来
12 个在线学习 Linux 技能网站
Linux Mint : 会是另一个新的 Ubuntu 吗?
W3Conf 开发者大会将于下周召开
Ubuntu 10.04 ARM 处理器上网本版本结束服务期

发布评论