关于一个解析(输出命令功能)shell命令的想法

10 views
Skip to first unread message

Jianjun Kong

unread,
Jan 5, 2008, 9:13:54 AM1/5/08
to linuxe...@googlegroups.com, 西邮linux兴趣小组, xiyouo...@googlegroups.com
前些天看到操作系统课程论坛上,关于编写shell解析程序的题目。今天和李磊聊天时谈到可以写一个程序,完成输出命令功能等帮助信息的功能。
如程序运行时,输入
vim /etc/passwd
则输出:用vim工具编辑/etc/passwd文本

当然还得实现较为复杂的命令组合,如:
ls -a |grep txt
cat /etc/passwd >> ~/a.txt


完成这样功能是不是很复杂?
欢迎大家提些建议。谢谢~


--
| Name : Jianjun Kong
| HomePage : http://www.kongove.cn
| Email : kongj...@gmail.com & 8817...@163.com
| Gtalk : kongj...@gmail.com
| A student of Xi'an Institute of Post & Telecommunications

Jianjun Kong

unread,
Jan 5, 2008, 9:35:40 AM1/5/08
to linuxe...@googlegroups.com, 西邮linux兴趣小组, xiyouo...@googlegroups.com
On Sat, Jan 05, 2008 at 10:26:33PM +0800, 刘洋 wrote:

> On Sat, Jan 05, 2008 at 10:13:54PM +0800, Jianjun Kong wrote:
> > 前些天看到操作系统课程论坛上,关于编写shell解析程序的题目。今天和李磊聊天时谈到可以写一个程序,完成输出命令功能等帮助信息的功能。
> > 如程序运行时,输入
> > vim /etc/passwd
> > 则输出:用vim工具编辑/etc/passwd文本
> >
> > 当然还得实现较为复杂的命令组合,如:
> > ls -a |grep txt
> > cat /etc/passwd >> ~/a.txt
> >
> >
> > 完成这样功能是不是很复杂?
> > 欢迎大家提些建议。谢谢~
> >
> 单个命令应该没有问题,组合命令嘛,得看你能把各种情况下的语言组合起来是否还是通顺的语言。

这个就像google的翻译一样,有一个提示功能就可以了。
>
> 而且,这个用来干什么呢?

只是一个想法,对于初学命令的应该很有帮助。

李磊

unread,
Jan 5, 2008, 10:08:00 AM1/5/08
to xiyouo...@googlegroups.com, linuxe...@googlegroups.com, 西邮linux兴趣小组, cocob...@gmail.com


在08-1-5,Jianjun Kong <kongj...@gmail.com> 写道:
On Sat, Jan 05, 2008 at 10:26:33PM +0800, 刘洋 wrote:
> On Sat, Jan 05, 2008 at 10:13:54PM +0800, Jianjun Kong wrote:
> > 前些天看到操作系统课程论坛上,关于编写shell解析程序的题目。今天和李磊聊天时谈到可以写一个程序,完成输出命令功能等帮助信息的功能。
> > 如程序运行时,输入
> > vim /etc/passwd
> > 则输出:用vim工具编辑/etc/passwd文本
> >
> > 当然还得实现较为复杂的命令组合,如:
> > ls -a |grep txt
> > cat /etc/passwd >> ~/a.txt
> >
> >
> > 完成这样功能是不是很复杂?
> > 欢迎大家提些建议。谢谢~
> >
> 单个命令应该没有问题,组合命令嘛,得看你能把各种情况下的语言组合起来是否还是通顺的语言。

这个就像google的翻译一样,有一个提示功能就可以了。
>
> 而且,这个用来干什么呢?

只是一个想法,对于初学命令的应该很有帮助。
 
对,初学者学习命令的时候对于好多命令都不理解。如果用了这个,可以自己任意组合命令,然后通过给出的信息来学习命令。这样效果应该很不错的。

Jianjun Kong

unread,
Jan 5, 2008, 10:12:42 AM1/5/08
to xiyouo...@googlegroups.com, linuxe...@googlegroups.com, 西邮linux兴趣小组, cocob...@gmail.com
On Sat, Jan 05, 2008 at 11:08:00PM +0800, 李磊 wrote:
{snip}

>
> 对,初学者学习命令的时候对于好多命令都不理解。如果用了这个,可以自己任意组合命令
> ,然后通过给出的信息来学习命令。这样效果应该很不错的。

如果这个软件做得足够精细,对于专业人员也是一个不错的工具。

Jianjun Kong

unread,
Jan 5, 2008, 10:51:47 AM1/5/08
to cocobear, xiyouo...@googlegroups.com, linuxe...@googlegroups.com, 西邮linux兴趣小组
On Sat, Jan 05, 2008 at 11:22:45PM +0800, cocobear wrote:
> 于 Sat, 5 Jan 2008 23:12:42 +0800
> Jianjun Kong <kongj...@gmail.com> 写道:
>
> > 对于专业人员也是一个不错的工具
>
> 没有觉得,更觉得做这样的个web站点的注意还不错,面向初学者。

如果一网页文本形式去总结,命令涉及太多,而且需要对命令的选项参数比较清楚。
可以尝试用软件去实现,有固定的语法 来描述 命令作用。

如果是做站点,完全可以在wiki上新开一个页面活版块。

--
| Jianjun Kong | www.kongove.cn

陈老师

unread,
Jan 5, 2008, 8:22:13 PM1/5/08
to 操作系统课程论坛

当时发布这个题目时,没有想清楚为什么。在大家的讨论下,想到以下理由。大家可以补充:
1.shell解释器,是与大家最近的一个东西。你每天都用它,熟悉它,但是它背后的工作原理是什么,你是否想知道?
2.要做一个完整的shell,其实非常复杂。但是,要做一个简单的shell,只要有C基础,进程概念,简单的编译知识,就可以动手了。
3. 一个软件的好坏,其重要特征之一就是要有可扩充性,那么在设计这个简单shell的时候,还必须考虑,如果扩充,现有的实现是否改动,改动多
少。
4. shell解释器的实现方法很多,在我们的内核之旅网站http://www.kerneltravel.net/journal/iii/
shell.htm上,就有一种方法,用了Lex 工具。
5. 这个题目可以扩充出一系列的东西,比如shell命令的图形化,这完全可以演化为一个大的开源项目。因为,毕竟字符界面的操作比较适合专业人
士,Linux推广的瓶颈就在于命令的图形化太少了。suse Linux特色是什么?就是其图形化的网络管理工具。
6. cocobear的想法也很好,可以用Linux+apache+mysql+php 这样的环境,实现Linux命令的在线学习。
7. 更进一步,如果能做到,在线使用Linux命令(怎么使用,还没有想清楚),那对Linux在中国的推广也很有意义。

Jianjun Kong

unread,
Jan 5, 2008, 10:43:48 PM1/5/08
to linuxe...@googlegroups.com, xiyouo...@googlegroups.com, 西邮linux兴趣小组
On Sat, Jan 05, 2008 at 05:11:05PM -0800, 陈老师 wrote:
> 6. cocobear的想法也很好,可以用Linux+apache+mysql+php 这样的环境,实现Linux命令的在线学习。

cocobear在网络编程方面很强,我最近也在学习他做的一个php+mysql留言板(http://cocobear.cn/src/tar/guest070919.tar.gz)

> 7. 更进一步,如果能做到,在线使用Linux命令(怎么使用,还没有想清楚),那对Linux在中国的推广也很有意义。

如果做这方面的程序主要是一个模拟,因为不可能让用户(访问网页的人)直接操作服务器主机。

Jianjun Kong

unread,
Jan 6, 2008, 12:51:59 AM1/6/08
to WANG Cong, linuxe...@googlegroups.com, xiyouo...@googlegroups.com, 西邮linux兴趣小组
On Sun, Jan 06, 2008 at 01:41:57PM +0800, WANG Cong wrote:
>
> >
> >> 7. 更进一步,如果能做到,在线使用Linux命令(怎么使用,还没有想清楚),那对Linux在中国的推广也很有意义。
> >
> >如果做这方面的程序主要是一个模拟,因为不可能让用户(访问网页的人)直接操作服务器主机。
> >
>
> Possible.
>
> 可以给网页上注册的用户一个ssh帐号,远程登录即可。

服务器对ssh用户权限限制太多,许多命令不能执行。用户只能尝试简单的命令。

李磊

unread,
Jan 6, 2008, 5:27:12 AM1/6/08
to xiyouo...@googlegroups.com, WANG Cong, linuxe...@googlegroups.com, 西邮linux兴趣小组


在08-1-6,Jianjun Kong <kongj...@gmail.com> 写道:
On Sun, Jan 06, 2008 at 01:41:57PM +0800, WANG Cong wrote:
>
> >
> >> 7. 更进一步,如果能做到,在线使用Linux命令(怎么使用,还没有想清楚),那对Linux在中国的推广也很有意义。
> >
> >如果做这方面的程序主要是一个模拟,因为不可能让用户(访问网页的人)直接操作服务器主机。
> >
>
> Possible.
>
> 可以给网页上注册的用户一个ssh帐号,远程登录即可。

服务器对ssh用户权限限制太多,许多命令不能执行。用户只能尝试简单的命令。
 
看来这个东西越讨论越好啊。嘿嘿。下学期任务艰巨啊。要是能做到上面所提到的我感觉真的很不错了。小组不光是编程,服务器那边也要参与了啊。
Reply all
Reply to author
Forward
0 new messages