SHELL初了解

一、shell的定义

在计算机科学中,Shell俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令解析器)。它类似于DOS下的command和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。

文字操作系统与外部最主要的接口就叫做shellshell是操作系统最外面的一层。shell管理你与操作系统之间的交互:等待你输入,向操作系统解释你的输入,并且处理各种各样的操作系统的输出结果。

shell提供了你与操作系统之间通讯的方式。这种通讯可以以交互方式(从键盘输入,并且可以立即得到响应),或者以shell script(非交互)方式执行。shell script是放在文件中的一串shell和操作系统命令,它们可以被重复使用。本质上,shell script是命令行命令简单的组合到一个文件里面。

二、Shell的分类

1、图形界面shellGraphical User Interface shell 即 GUI shell

例如:应用最为广泛的 Windows Explorer (微软的windows系列制作系统),还有也包括广为人知的 Linux shell,其中linux shell 包括 X window manger (BlackBoxFluxBox),以及功能更强大的CDEGNOMEKDE、 XFCE

2、命令行式shellCommand Line Interface shell ,即CLI shell

例如:bash / sh / ksh / cshUnix/linux 系统)

          MS-DOS系统)

          cmd.exe/ 命令提示字符(Windows NT 系统)

          Windows PowerShell(支援 .NET Framework 技术的 Windows NT 系统)

传统意义上的shell指的是命令行式的shell,以后如果不特别注明,shell是指命令行式的shell

Shell基本上是一个命令解释器,类似于DOS下的command。它接收用户命令(如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)

三、各种shell详解

1Bourne Shell

首个重要的标准Unix Shell1970年底在V7 Unix(AT&T7版)中引入的,并且以它的创始科技部基础条件平台“国家气象网络计算应用节点建设”(2004DKA50730)资助者Stephen Bourne的名字命名。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会等待读取你的输入。

2C Shell

Bill Joy20世纪80年代早期,在Berkeley的加利福尼亚大学开发了C shell。它主要是为了让用户更容易的使用交互式功能,并把ALGOL风格的语法结构变成了C语言风格。它新增了命令历史、别名、文件名替换、作业控制等功能。

3Korn Shell

有很长一段时间,只有两类shell供人们选择,Bourne shell用来编程,C shell用来交互。为了改变这种状况,AT&Tbell实验室David Korn开发了Korn shellksh结合了所有的C shell的交互式特性,并融入了Bourne shell的语法。因此,Korn shell广受用户的欢迎。它还新增了数学计算,进程协作(coprocess)、行内编辑(inline editing)等功能。Korn Shell 是一个交互式的命令解释器和命令编程语言.它符合POSIX——一个操作系统的国际标准.POSIX不是一个操作系统,而是一个目标在于应用程序的移植性的标准——在源程序一级跨越多种平台。

4Bourne Again Shell (bash)

bashGNU计划的一部分,用来替代Bourne shell。它用于基于GNU的系统如Linux.大多数的Linux(Red Hat,Slackware,Caldera)都以bash作为缺省的shell,并且运行sh时,其实调用的是bash

5POSIX Shell

POSIX shell Korn shell的一个变种当前提供POSIX shell的最大卖主是Hewlett-Packard。在HP-UX 11.0,POSIX shell 就是/bin/sh,而bsh/usr/old/bin/sh.

6Windows PowerShell

Windows PowerShell是一种新的交互式的命令行和基于任务脚本编写技术,它使信息技术(IT) 管理员能够全面地自动操作和控制系统管理任务,从而提高了管理员的生产力。Windows PowerShell 包括多个系统管理实用工具、一致的语法和命名惯例、及对普通管理数据更好地导航,如登记、证书存储 或 Windows Management Instrumentation (WMI)。Windows PowerShell 还专门针对 IT 管理,提供直观的脚本编写语言。

四、各主要操作系统下缺省的shell

AIX下是Korn Shell.

Solaris缺省的是Bourne shell.

FreeBSD缺省的是C shell

HP-UX缺省的是POSIX shell.

LinuxBourne Again shell.

五、详细介绍bash shell的功能

1、命令记忆能力(history

2、命令与文件补全功能(【TAB】按键的好处)

3、命令别名设置功能alias

4、作业控制、前台、后台控制(job controlgoregroundbackgroup

5、程序脚本(shell scripts

6、通配符

六、Bash shell的内置命令

为了方便shell的操作,其实bash已经内置了很多命令,例如:cd ls等等。我们可以利用type命令来查看是否为内部命令。

[root@instructor Desktop]# type [-tpa] name

选项与参数:

    :不加任何选项与参数时,type 会显示出 name 是外部命令还是 bash 内建命令

-t  :当加入 -t 参数时,type 会将 name 以底下这些字眼显示出他的意义:

      file    :表示为外部命令;

      alias   :表示该命令为命令别名所配置的名称;

      builtin :表示该命令为 bash 内建的命令功能;

-p  :如果后面接的 name 为外部命令时,才会显示完整文件名;

-a  :会由 PATH 变量定义的路径中,将所有含 name 的命令都列出来,包含 alias

范例一:查询一下 ls 这个命令是否为 bash 内建?

[root@instructor Desktop]#type ls

ls is aliased to `ls --color=tty' <==未加任何参数,列出 ls 的最主要使用情况

[root@instructor Desktop]# type -t ls

alias                             <==仅列出 ls 运行时的依据

[root@instructor Desktop]#type -a ls

ls is aliased to `ls --color=tty' <==最先使用 aliase

ls is /bin/ls                     <==还有找到外部命令在 /bin/ls

范例二:那么 cd 呢?

[root@instructor Desktop]#type cd

cd is a shell builtin             <==看到了吗? cd 是 shell 内建命令

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章