Shell精解
发布:smiling 来源: PHP粉丝网 添加日期:2014-03-07 09:30:51 浏览: 评论:0
操作系统与外部最主要的接口就叫做shell,shell是操作系统最外面的一层,shell管理你与操作系统之间的交互:等待你输入,向操作系统解释你的输入,并且处理各种各样的操作系统的输出结果。
Shell基本上是一个命令解释器,类似于DOS下的command.com。它接收用户命令(如ls等),然后调用相应的应用程序。较为通用的shell有标准的Bourne shell (sh)和C shell (csh)。
交互式Shell和非交互式Shell
交互式模式就是shell等待你的输入,并且执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你签退后,shell也终止了。
shell也可以运行在另外一种模式:非交互式模式。在这种模式下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,shell也就终止了。
Shell的类型
在UNIX中主要有两大类shell
- Bourne shell (包括 sh, ksh, and bash)
- Bourne shell ( sh)
- Korn shell ( ksh)
- Bourne Again shell ( bash)
- POSIX shell ( sh)
- C shell (包括 csh and tcsh)
- C shell ( csh)
- TENEX/TOPS C shell ( tcsh)
- Bourne Shell
最初的UNIX shell是由Stephen R. Bourne于20世纪70年代中期在新泽西的AT&T贝尔实验室编写的,这就是Bourne shell。Bourne shell 是一个交换式的命令解释器和命令编程语言。Bourne shell 可以运行为login shell或者login shell的子shell(subshell)。只有login命令可以调用Bourne shell作为一个login shell。此时,shell先读取/etc/profile文件和$HOME/.profile文件。/etc/profile文件为所有的用户定制环境,$HOME/.profile文件为本用户定制环境。最后,shell会等待读取你的输入。
C Shell
Bill Joy于20世纪80年代早期,在Berkeley的加利福尼亚大学开发了C shell。它主要是为了让用户更容易的使用交互式功能,并把ALGOL风格的语法结构变成了C语言风格。它新增了命令历史、别名、文件名替换、作业控制等功能。
Korn Shell
有很长一段时间,只有两类shell供人们选择,Bourne shell用来编程,C shell用来交互。为了改变这种状况,AT&T的bell实验室David Korn开发了Korn shell。ksh结合了所有的C shell的交互式特性,并融入了Bourne shell的语法。因此,Korn shell广受用户的欢迎。它还新增了数学计算,进程协作(coprocess)、行内编辑(inline editing)等功能。Korn Shell 是一个交互式的命令解释器和命令编程语言.它符合POSIX——一个操作系统的国际标准.POSIX不是一个操作系统,而是一个目标在于应用程序的移植性的标准——在源程序一级跨越多种平台。
Bourne Again Shell (bash)
bash是GNU计划的一部分,用来替代Bourne shell。它用于基于GNU的系统如Linux.大多数的Linux(Red Hat, Slackware, Caldera)都以bash作为缺省的shell,并且运行sh时,其实调用的是bash。
POSIX Shell
POSIX shell 是Korn shell的一个变种. 当前提供POSIX shell的最大卖主是Hewlett-Packard。在HP-UX 11.0 , POSIX shell 就是/bin/sh,而bsh是/usr/old/bin/sh.
各主要操作系统下缺省的Shell:
AIX 下是Korn Shell.
Solaris和FreeBSD缺省的是Bourne Shell
HP-UX缺省的是POSIX Shell
Linux是Bourne Again Shell
shell是一个命令解析器,它解释用户输入的命令并且把它们送到系统的内核去执行。换句话说shell就是用户与操作系统对话的一个接口,我们发出一个命令,通过shell告诉系统让系统执行我们的命令。
黑客入侵时要得到的是有admin权限的shell这样才能完全的控制系统。
当你用溢出得到的shell就是拥有admin权限的shell这样在你的命令提示付后就会出现"c:\documents and setting \"
这和操作自己的机器没什么区别。
还有的就是有一些朋友错把ipc空连接当作得到目标机器的shell,因此对远端执行的命令没有反映,典型事例就是建立ipc$,然后用 net user xx xx /add????|????net localgroup administrators xx /add
之后当然是在自己机器上添加一个admin权限的用户.
Tags: linux Shell
- 上一篇:基于COM接口的Shell扩展技术应用
- 下一篇:在shell中捕捉信号的命令
相关文章
- ·举例分析Linux动态库和静态库(2013-11-11)
- ·Linux开发工具和Windows开发工具对比(2013-11-11)
- ·用C++语言做Linux开发工具的一些心得(2013-11-11)
- ·用C++语言做Linux开发工具之粘合剂Makefile(2013-11-11)
- ·用C++语言做Linux开发工具之编译器和调试器选择要素(2013-11-11)
- ·用C++语言做Linux开发工具之编辑器选择要素(2013-11-11)
- ·Linux编程工具C编译器和C编程工具GDB执行步骤(2013-11-11)
- ·Linux编程工具C编译器和C编程工具介绍(1)(2013-11-11)
- ·Linux系统下完成Windows的开发环境替换(2013-11-14)
- ·Linux 开发工具推荐(2013-11-14)
- ·Linux 内存监控内存泄露和回收内存的方法(2013-11-14)
- ·Linux命令行开发实战(1)(2013-11-14)
- ·Linux系统的网络服务器配置详细解析(2013-11-23)
- ·使用SCons轻松建造自己的程序(2014-02-28)
- ·基础使用:编写Linux 桌面脚本(2014-02-28)
- ·详解Unix和Linux操作系统中Cron的用法(2014-02-28)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)