LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1013|回复: 13

我的作业有誰能帮忙!

[复制链接]
发表于 2004-5-24 10:58:42 | 显示全部楼层 |阅读模式
1)        浏览目录和文件的各种属性 ls –l、
2)        回显 echo、
3)        显示文件内容 cat、more、
4)        创建目录mkdir、
5)        删除目录rmdir、
6)        删除文件rm、
7)        改变目录cd 、
8)        改变文件和目录的权限chmod、
9)        显示当前目录 pwd、
10)        文字统计 wc、
11)        查看时间命令 date 、time、
12)        退出命令exit、
13)        帮助命令 help、
14)        发送信号命令 kill、
15)        查看在线用户 who、
16)        查看命令历史记录 history、
17)        查看系统的信息 systeminfo
18)        执行用户的程序

l        选做任务
?        提供友好的人机界面;
?        Advanced shell功能,例如:
1)        输入输出重定向,例如 ./a.out > output.dat
2)        支持多管道命令,例如 ./a.out –a | ./b.out | ./c.out
3)        支持后台运行命令,例如 ls | wc &
4)        其他:参考GNU bash提供的功能。


禁止使用system函数直接调用系统shell提供的命令。
对于执行指定的程序,使用fork函数生成一个新进程执行。
必须有exit命令:用来退出shell。
必须有help命令:列出shell所拥有的所有命令。
当前目录下放一个hello程序(功能:打印“hello world”)。
发表于 2004-5-24 11:13:31 | 显示全部楼层
作业是要自己做的 ;)
1,基础命令请阅读:
http://www.linuxsir.cn/bbs/showthread.php?threadid=5125
2,shell脚本编程请参阅:
http://www.linuxsir.cn/bbs/showthread.php?threadid=28945
发表于 2004-5-24 11:22:08 | 显示全部楼层
楼主你确定你们老师是叫你用shell做
这应该是操作系统的系统编程吧
发表于 2004-5-24 12:25:33 | 显示全部楼层
老师的要求应该是叫你们做一个小型shell,支持列表中的所有命令,而且支持高级shell功能如多管道。

请参考bash源码以及到程序版区发问。
 楼主| 发表于 2004-5-24 14:17:17 | 显示全部楼层
老师要求是建造一个简单的shell,实现一现基本的功能。
哪位兄弟有做过这方面的,请谈谈如何实现和经验。
发表于 2004-5-24 14:45:13 | 显示全部楼层
shell是用C写的,我看你的问题还是转到[程序设计]讨论区吧~
发表于 2004-5-24 14:55:03 | 显示全部楼层

re

我会给你答复的,我以前写过
 楼主| 发表于 2004-5-24 15:07:31 | 显示全部楼层
那先谢谢了
发表于 2004-5-24 19:32:45 | 显示全部楼层
<现代操作系统>第2版中有一个最简单的shell例子, 可以在那个基础上进一步完善.
发表于 2004-5-24 21:41:12 | 显示全部楼层

re

我那完整的找不到了,给你片段救救急,这个星期六若实在找不到,我就写个完整的,这是当年模仿shell的部分C程序,写得不好!如没有判断文件是否存在等等。
1 修改文件权限
[php]
#include <sys/types.h>
#include <sys/stat.h>
int main(int argc,char *argv[])
{
     if(argc<2)
     {
          printf("请指定文件名\n");
          exit(255);
     }
     else
     {
          chmod(argv[1],S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);
     }
     return 0;
}
[/php]

2 切换目录
[php]
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
int main(int argc,char *argv[])
{
    int fd;
    fd = opendir(argv[1]);
    if(fd<0)
    {
        printf("切换目录失败\n");
        exit(255);
    }
    else
    {
        fchdir(fd);

    }
}
[/php]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表