什么是shell(英文含义:壳)
- shell是用户和linux操作系统之间的接口。linux中存在多shell,其中缺省使用的是bash(Bourne again Shell)。
- shell相对于内核来说的,因为它是建立在内核的基础上,面向于用户的一种表现形式,比如我们看见一个球,见到的是它的壳,而非核。linux中的shell是指一个面向用户的命令接口,表现形式就是一个可以由用户录入的界面这个界面也可以反馈运行信息。
- linux系统的shell作为操作系统的外壳(也就是说是操作系统的最外面的一层),为用户提供使用操作系统的接口,shell其实管理你与操作系统之间的交互:等待你输入,向操作系统解释你的输入,并且处理各种各样的操作系统的输出结果。它是命令语言、命令解释程序及程序设计语言的通称。
- shell是用户和linux内核之间的接口程序,如果把linux内核想象成一个球体的中心,shell就是围绕内核的外层。当从 shell或其他程序向linux传递命令时,内核会作出相应的反应。
- shell是一个命令语言解释其器,它拥有自己内建的shell命令集,shell也能被系统中其他应用程序所调用。用户在提示符下输入的命令都由shell先解释然后传给linux核心。有一些命令,比如改变工作目录命令cd,是包含在shell内部的。还有一些命令,例如拷贝命令cp和移动命令rm,是存在于文件系统中某个目录下的单独的程序。对用户而言,不必关心一个命令是建立在shell内部还是一个单独的程序。
- shell首先检查命令是否内部命令,若不是再检查是否是一个应用程序(这里的应用程序可以是linux本身的实用程序,如ls和rm,也可以是购买的商业程序,如xv,或者是自由软件,如emacs)。然后shell在搜索路径里寻找这些应用程序(搜索路径就是一个能找到可执行程序的目录列表)。如果键入的命令不是一个内部命令并且在路径里没有找到这个可执行文件,将会显示一条错误信息。如果能够成功找到命令,该内部命令或应用程序将分解为系统调用并传给linux内核。
- shell的另一个重要属性是它自身就是一个解释型的程序设计语言。shell语言简单易学,任何在提示符中能键入的命令都能放到一个可执行的shell程序中。
普通用户用“$”作提示符。超级用户(root)用“#”作提示符。
当普通用户登陆成功时,系统将执行一个称为shell的程序。正是shell进程提供了命令行提示符,作为默认值(linux系统默认的shell是bash)。
一旦出现shell提示符,就可以键入命令名称及命令所需要的参数,shell将执行这些命令。
== ctrl+c==(中断信号): 如果一条命令花费了很长时间来运行,或者在屏幕上产生了大量的输出,可以从键盘上按ctrl+c发出中断信号来中断它(在正常结束之前,中止它的执行)。
== exit==(结束登陆): 当用户准备结束登录对话进程时,可以键入logout命令、exit命令或文件结束符(EOF)(按ctrl+d实现),结束登陆。
比如实际的操作:
比如普通用户,标识了命令行的开始,用户即可在提示符后面输入任何命令及参数。其实这样是已经进入了shell,它遵循一定的语法将输入的命令加以解释并传给系统。命令行中输入的第一个字必须是一个命令的名字,第二个字时命令的选项或参数,命令行中的每个字必须由空格或TAB隔开。
格式如:
< $Command Option Arguments
1、Option:选项和参数
选项是包括一个或多个字母的代码,它前面有一个减号(减号是必要的,linux用它来区别选项和参数),选项可用于改变命令选项执行的动作和类型。
2、Arguments:文件或目录名称
(3)shell在linux中的存在形式:
由于linux不同于Windows,Linux是内核于界面分离的,它可以脱离图形界面而单独运行,同样也可以在内核的基础上运行图形化的桌面
linux中的两种形式:(1)在无图形化界面下的终端运行环境下的shell;(2)桌面上运行的类似Windows的MS-DOS运行窗口,前者我们一般习惯性简称为终端,后者一般直接称为shell。
(4)shell如何执行用户的命令
shell有两种执行命令的方式:(1)用户事先编写一个sh脚本文件,内含shell脚本,而后使用shell程序执行该脚本,这种方式成为shell编程。(2)用户直接在shell界面上执行shell命令,由于shell界面的关系,习惯一行行写,少用成套的程序来一起执行称为命令行。
总结:shell可以说只是为用户于机器之间搭建成的一个桥梁,让我们能够通过shell来对计算机进行操作和交互,从而达到计算机为我们服务的目的。