LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: snowsun

如何用shell自己写一个终端

[复制链接]
 楼主| 发表于 2006-7-4 16:45:20 | 显示全部楼层
为什么还是不可以?
#!/bin/bash
HEIGHT=200
WIDTH=300
gdialog --title "terminal" --inputbox "lease input a command" $HEIGHT $WIDTH | read command
#echo "$command"
eval $command
一输入命令就自动退出了,然后显示我敲的命令,就什么都没有了,怎么样才能让对话框一直存在呢?我找不到问题所在,再帮帮忙,别嫌我烦啊,不管能不能解决问题,很谢谢seamonkey!
回复 支持 反对

使用道具 举报

发表于 2006-7-4 16:53:18 | 显示全部楼层
哦,gdialog和kdialog不同,输入字符串是输出到stderr,和dialog倒是一致的。所以把

dialog --inputbox "lease Enter a command" 10 40 2>/tmp/test.$$
eval `cat /tmp/test.$$`

中的dialog改为gdialog应该可以

gdialog --inputbox "lease Enter a command" $HEIGHT $WIDTH 2>/tmp/test.$$
eval `cat /tmp/test.$$`
回复 支持 反对

使用道具 举报

发表于 2006-7-5 15:53:38 | 显示全部楼层
dialog --inputbox "lases input a commadn " 10 40 2>tmp.out
command=$(cat tmp.out)
result=$($command)
echo "$result">tmp.out
dialog --textbox tmp.out -1 -1

谁知道这个2>tmp.out为什么这么用,2表示专门回收inputbox里面的结果吗?

snowsun你按照我的一摸一样输入肯定就不会有错了。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-6 11:09:15 | 显示全部楼层
基本功能已经实现,能不能用bash做个解释器?
回复 支持 反对

使用道具 举报

发表于 2006-7-6 12:31:25 | 显示全部楼层
什么意思?

另外,回头想想,eval是否可靠,碰到\$之类会有点问题,直接$command好像也不十全十美,大概重定向到文件后source最好。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-10 22:04:01 | 显示全部楼层
Mini Shell,仿常用的Bash而做,但对其作了大大简化
1.13 Shell

对Linux 不是太陌生的读者都应该对Shell有一定的了解,就是这个程序在我们登陆后自动执行,打印出一个$符号,然后等待我们输入命令。Linux下最常用的 Shell应用程序是Bash,绝大部分Linux发行版默认安装的都是它。下面我们也来亲手编写一个Shell程序,这个Shell远远不如Bash复杂,但也能满足我们一般的使用,下面,我们就开始。

首先,给这个Shell取一个名字,不妨就叫做Mini Shell。

Linux 系统的命令分为内部命令和外部命令两种,内部命令由Shell程序实现,如cd、echo等,Linux的内部命令数量有限,而且绝大部分都很少用到。而每一个Linux外部命令都是一个单独的应用程序,我们非常熟悉的ls、cp等绝大多数命令都是外部命令,这些命令都以可执行文件的形式存在,绝大部分放在目录/bin和/sbin中。这样一来,我们编程的难度就可以大大下降了,我们只需要实现很有限的内部命令,对于其它的输入,统统当作应用程序来执行即可。

为了简单明了起见,Mini Shell只实现了2个内部命令:
1、cd 用于切换目录,和我们熟悉的命令cd类似,除了没有那么多的附加功能。
2、quit 用于退出Mini Shell。

下面是程序清单:

贴不上,链接在这里:http://www.unlinux.com/doc/system/20051105/6603.html
这样就可以自己完全重新写成shell了?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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