|
作者: c_clown [c_clown] 论坛用户 | 登录 |
Unix/Linux下一个简单的shell interpreter--wish 【文章作者:willy123】 一个完整的shell至少应该具备词法和语法分析两种功能,就像bash一样,甚至可以执 行编写自己的脚本,从这个意义上说wish目前是难以做到的。Lex 和yacc是两大能够帮你 达到目的的很好的工具,只可惜我没有足够的时间和精力来研究他们。这里是是简单介绍下 wish的一些基本用法和如何编译使用 一:wish的编译和使用 下载Wish-0.01-src.tar.gz后,命令行下执行 tar -zxvf Wish-0.01-src.tar.gz ,这样就会得 到一个以文件名命名的文件夹,里面有四个文件,wish.h和 wishshell_main.c这两个是源代 码文件,makewish是编译脚本,readme.pdf就是你现在看到的这篇说明文档,里面包含了 wish的一些基本说明。 使用 ./ makewish 命令运行脚本(如无法运行,提示权限不够,请使用chmod 777 makewish 命令修改文件权限为可执行),如果提示:wish shell makes successfully,那么说明编 译成功,在同一文件夹下应该会得到一个名为wish的文件。如果提示error can’t make it ,说 明编译失败。一个可能的原因是您的机子里没有安装gcc,请手动编译源文件或者更改脚本 内容进行编译。 成功得到wish文件后,便可以执行了,执行./wish,就进入到wish shell 的环境中了。 如果您想让某个用户的shell改变成wish shell,那么可以通过编辑/etc/passwd中的相应用户对 应的shell域进行修改,例如将原来的/bin/bash字段修改成/bin/wish,然后将wish 复制到/bin 目录下即可。这样当你下次以该用户登录Unix/linux系统时便可以直接使用wish shell 了。 二:wish的基本功能 (1)作为一个shell,wish具备执行内部和外部命令的功能,所谓外部命令就是位于PATH 变量目录中的一系列命令如ls,cat,vi,等等,内部命令则是wish内部自带的命令,主要有: 1: cd 命令:用于更改当前目录,可以通过此命令更改当前目录。 2: getenv 命令:用于打印shell环境变量,如PATH,HOME,LOGNAME等等 3: info 命令:显示 wish shell的简要介绍 4: exit 命令:用于退出wish shell (2)支持同时执行多个以“;”间隔的命令 例如可以执行 Ls ; pwd ; ps 同时执行文件显示,显示当前目录,显示系统进程这三个命令 (3)单管道功能 例如可以执行 Ls �Cl | grep 123 寻找当前目录下文件名中含有123的文件 (4)I/O重定向功能 包括输入和输出重定向:<,> 例如 ls �Cl > listfile 会建立listfile文件,显示当前文件的列表 Wc < listfile 会从listfile中读出内容,统计词数 (5)处理信号的功能 当运行一些比较大的程序时,可以在程序末尾加上 & 符号来后台运行这些程序 例如 find /root 123 & (6) bash是一个强大的shell,可以编写执行自己的脚本,wish中也可以运行bash编写的 脚本,可以通过 “ bash xxxx ” 来执行命令, 其中的xxx为你编写的bash脚本 值得注意的是,wish中对于其上功能没有做到很好的复合,也就是你同时运行 | 和 & 其中的 & 不会被解释,还有并不支持同一语句中的多个管道。 |
地主 发表时间: 09-02-08 01:09 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号