LinuxSir.cn,穿越时空的Linuxsir!

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

如何用shell自己写一个终端

[复制链接]
发表于 2006-7-4 13:12:28 | 显示全部楼层 |阅读模式
能不能用bash完成一下这个功能:
      当执行脚本时,弹出一个对话框,你可以在里面输入ls,cd 等命令,并且这些命令可以执行,总之就是用bash写一个类似于terminal的东西,实现基本功能即可。
      哪位大虾帮帮忙,把代码写一下,谢谢!!!真的非常感谢!!!
发表于 2006-7-4 13:25:13 | 显示全部楼层
是不是类似dialog之类的?

eval `kdialog -inputbox "lease enter a command"`



kdialog -inputbox "lease enter a command" | read command
eval $command
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-4 13:57:39 | 显示全部楼层
谢谢你,但是我需要的不是显示输入的命令,而是在弹出的对话框中显示我输入命令后应该显示的内容,比如我在弹出的对话框中输入ls -l , 显示应该是

drwxr-xr-x  9 sunpei sunpei     4096 2006-06-27 11:01 1
-rwxr-xr-x  1 sunpei sunpei      183 2006-07-04 13:00 1111
-rwxr-xr-x  1 sunpei sunpei      182 2006-07-04 13:00 1111~
-rw-r--r--  1 sunpei sunpei    74187 2006-06-27 16:17 2.JPG
-rw-r--r--  1 sunpei sunpei   387432 2006-06-27 16:21 4705775678.JPG
-rw-r--r--  1 sunpei sunpei 90286080 2006-06-23 11:19 backup-06-23-2006.tar
-rwxr-xr-x  1 sunpei sunpei      497 2006-06-20 17:40 bjly
drwxr-xr-x  8 sunpei sunpei     4096 2006-07-04 13:25 Desktop
-rw-r--r--  1 sunpei sunpei  1738565 2006-06-27 17:33 HECHENG.JPG
drwx------  5 sunpei sunpei     4096 2006-06-23 10:49 MyDownloads
-rwxr--r--  1 sunpei sunpei      274 2006-06-20 17:40 receive
-rwxr-xr-x  1 sunpei sunpei      509 2006-06-20 17:40 recycle
-rwxrwxrwx  1 sunpei sunpei      227 2006-06-23 11:19 test
-rwxrwxrwx  1 sunpei sunpei      165 2006-06-23 10:56 test~
-rw-r--r--  1 sunpei sunpei     2726 2006-06-23 11:07 test.txt
-rw-r--r--  1 sunpei sunpei     4748 2006-06-23 11:06 test.txt~
drwxr-xr--  4 sunpei sunpei     4096 2006-06-20 19:08 tools
drwxr-xr-x  3 root   root       4096 2006-06-21 17:55 vmware
-rwxrwxrwx  1 sunpei sunpei      138 2006-07-04 13:41 work
-rwxrwxrwx  1 sunpei sunpei      136 2006-07-04 13:41 work~
诸如此类,请指教!谢谢!
回复 支持 反对

使用道具 举报

发表于 2006-7-4 14:02:38 | 显示全部楼层
所以要用eval呀。

如果没kdialog,只有dialog的话。

dialog --inputbox "lease Enter a command" 10 40 2>/tmp/test.$$
eval `cat /tmp/test.$$`
回复 支持 反对

使用道具 举报

发表于 2006-7-4 14:20:16 | 显示全部楼层
echo "-------------------------------------------"
echo " Input your command                    "
echo "------------------------------------------ "
read TTY
tmp=$($TTY)
echo $tmp

这样就可以了,不过这完全是脱裤子放屁阿。。
是不是应该用C做个解释器?
我给的这段结果不会换行,谁要知道告诉我一下。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-4 16:06:28 | 显示全部楼层
谢谢,只要把最后一行改成echo "$tmp"就可以换行了,咱们互相帮助!
我也觉得这是脱裤子放屁,呵呵,但是这是一个作业,必须完成啊,楼上的没有新打开一个对话框,不符合要求 :)
seamonkey你能说的详细些吗?为什么我用你的那两句写出的脚本总是不对,在对话框里输入命令并回车后又重新回到终端,并显示我输入的命令,而不是显示我要的命令的内容。例如我在弹出的对话框输入:ls ,回车后对话框自动关闭,并在终端中显示ls,我是新手,帮帮忙,谢谢!
回复 支持 反对

使用道具 举报

发表于 2006-7-4 16:08:27 | 显示全部楼层
更简明但不那么规范一点的:

eval `dialog --inputbox "lease Enter a command" 10 40 --stdout`
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-4 16:21:42 | 显示全部楼层
还是和上面一样的问题啊,能不能再想想办法!我的bash脚本,应该和seamonkey的作用是一样的吧
#!/bin/bash
HEIGHT=200
WIDTH=300
OUTFILE=$0.output
gdialog --title "terminal" --inputbox "lease input a command" $HEIGHT $WIDTH
read command
eval $command

怎么改才可以呢?我刚刚学,请多指教,尤其谢谢seamonkey
回复 支持 反对

使用道具 举报

发表于 2006-7-4 16:32:48 | 显示全部楼层
你少了个管道。

gdialog --title "terminal" --inputbox "lease input a command" $HEIGHT $WIDTH | read command
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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