`

linux shell 简单介绍

 
阅读更多
Linux  系统结构:
硬件->Kernel(驱动程序)->Shell(终端、接口)->外层应用程序
shell:
       操作系统与外部最主要的接口就叫做shell。shell是操作系统最外面的一层。shell管理你与操作系统之间的交互:等待你输入,向操作系统解释你的输入,并且处理各种各样的操作系统的输出结果。
       Shell基本上是一个命令解释器,类似于DOS下的command.com。它接收用户命令(如ls等),然后调用相应的应用程序。较为通用的shell有标准的Bourne shell (sh)和C shell (csh)。

交互式shell与非交互式shell
      交互式模式就是shell等待你的输入,并且执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你签退后,shell也终止了。
       shell也可以运行在另外一种模式:非交互式模式。在这种模式下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,shell也就终止了,这是放在文件中的一串shell和操作系统命令,它们可以被重复使用(比如我们经常写的crontab job 就可以用非交互式方式来实现)。本质上,shell script是命令行命令简单的组合到一个文件里面。
在UNIX中主要有两大类shell
Bourne shell (包括 sh, ksh, and bash)
  POSIX shell ( sh)
  Korn shell ( ksh)
  Bourne Again shell ( bash)

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.

#!/usr/bin/sh的用途
shell script的第一行一般都是#!/usr/bin/sh或#!/usr/bin/ksh等,它的用途就是指出本脚本是用的哪种shell写的,执行时系统应该用哪种shell来解释执行它。

LINUX系统的shell原理

  Linux系统的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编程语言简单易学,任何在提示符中能键入的命令都能放到一个可执行的shell程序中。
  当普通用户成功登录,系统将执行一个称为shell的程序。正是shell进程提供了命令行提示符。作为默认值(TurboLinux系统默认的shell是BASH),对普通用户用“$”作提示符,对超级用户(root)用“#”作提示符。

  一旦出现了shell提示符,就可以键入命令名称及命令所需要的参数。shell将执行这些命令。如果一条命令花费了很长的时间来运行,或者在屏幕上产生了大量的输出,可以从键盘上按ctrl+c发出中断信号来中断它(在正常结束之前,中止它的执行)。

  当用户准备结束登录对话进程时,可以键入logout命令、exit命令或文件结束符(EOF)(按ctrl+d实现),结束登录。
看一下shell是如何工作的。

  $ make work

  make:***No rule to make target ‘work’. Stop.

  $

  注释:make是系统中一个命令的名字,后面跟着命令参数。在接收到这个命令后,shell便执行它。本例中,由于输入的命令参数不正确,系统返回信息后停止该命令的执行。

  在例子中,shell会寻找名为make的程序,并以work为参数执行它。make是一个经常被用来编译大程序的程序,它以参数作为目标来进行编译。在“make work”中,make编译的目标是work。因为make找不到以work为名字的目标,它便给出错误信息表示运行失败,用户又回到系统提示符下。

  另外,用户键入有关命令行后,如果shell找不到以其中的命令名为名字的程序,就会给出错误信息。例如,如果用户键入:

  $ myprog

  bash:myprog:command not found

  $

  可以看到,用户得到了一个没有找到该命令的错误信息。用户敲错命令后,系统一般会给出这样的错误信息。
分享到:
评论

相关推荐

    linux shell学习资料

    此外,它可能还会介绍如何调试和优化Shell脚本,以提高工作效率。 《Linux Shell脚本攻略》则可能侧重于实战应用,通过实际的案例解析,教你如何解决日常工作中遇到的各种问题。这本书可能会包含大量的实例,覆盖了...

    linux_shell实例精解

    1. **Shell基础**:包括Shell的安装与配置,常见Shell的介绍(如Bash、Sh、Csh等),以及如何启动和退出Shell。 2. **Shell语法**:讲解变量、条件表达式、流程控制(如if、for、while循环)、函数等基本语法元素,...

    linuxshell.rar帮助文档 简单实用

    这份“linuxshell.rar帮助文档”旨在提供关于Linux Shell的基础知识和实用技巧,帮助用户提高在终端中的操作效率。 一、Shell简介 Linux Shell是Linux系统中的一个核心组件,常见的有Bash(Bourne Again SHell)、...

    linux Shell编程入门 实例讲解详解

    Linux Shell编程入门实例讲解详解 Linux Shell编程是Linux系统中一种非常灵活的工具,通过shell编程可以自动化大量的任务,especially适合那些易用性、可维护性和便携性比效率更重要的任务。下面是Linux Shell编程...

    Linuxshell编写demo

    创建一个简单的脚本,例如`shell_demo.sh`,内容如下: ```bash #!/bin/bash echo "欢迎来到Linux Shell脚本教程!" echo "当前工作目录是 $PWD" read -p "请输入你的名字: " name echo "你好,$name!" ```...

    LINUX实现一个简单的SHELL

    LINUX下实现一个简单的SHELL

    Linux Shell Scripting Cookbook Second Edition

    《Linux Shell Scripting ...总之,《Linux Shell Scripting Cookbook 第二版》是一本全面的Linux Shell脚本编写指南,它详细介绍了编写有效、高效Shell脚本所需掌握的关键知识,是一本值得推荐的Linux系统管理工具书。

    Linux shell 及常用命令介绍.txt Linux shell 及常用命令介绍.txt

    ### Linux Shell 及其常用命令详解 #### 一、Shell简介 在Linux系统中,**Shell** 是用户与操作系统交互的主要界面之一。它提供了一种命令行方式来控制计算机的操作,使得用户能够通过输入简单的文本命令来执行复杂...

    Linux Shell教程

    这是学习Shell的简单例子这是学习Shell的简单例子这是学习Shell的简单例子

    linux shell 编程教材配套PPT

    Shell脚本可以理解为Linux环境下的批处理程序,它允许用户通过编写简单的命令序列来执行复杂的任务。这份"Linux Shell编程教材配套PPT"将帮助你深入理解这个强大的工具。 首先,我们需要了解什么是Shell。在Linux...

    Linux shell脚本.rar

    文件包含大作业shell脚本(快速备份系统)源码,实验课做的Linux实验shell脚本:Samba实验,DDNS(DHCP服务器 和DNS服务器的配置)的shell脚本,运行脚本每个实验只需要两三分钟即可完成。 其中sy1为实验一脚本,sy2...

    Linux Shell 脚本攻略

    Shell脚本允许用户通过编写简单的命令序列来执行一系列复杂的操作,极大地提高了工作效率。本攻略将深入探讨Linux Shell脚本的核心概念、语法结构以及实战应用。 1. **Shell基础** - **什么是Shell?** Shell是...

    Linux Shell

    实现简单的Linux Shell,使之至少支持cd、pwd、logout、ls等命令。 了解Linux Shell的基本设计思路

    linuxshell

    通过上述介绍,我们可以看到Linux Shell不仅是一种命令解释器,更是一个功能强大的工具箱。熟练掌握Shell的基本命令和语法结构对于提高日常工作效率、实现自动化任务等方面都有着不可替代的作用。希望读者能够在实践...

    linuxshell专题讲座.docx

    一个简单的shell脚本可能包括变量声明、条件语句、循环结构以及对系统命令的调用。例如,`if`语句用于根据条件执行不同的命令,`for`循环则用于对一系列值进行迭代操作。 **存取权限和安全**是使用shell时必须考虑...

    linux shell 编程1

    在学习和实践Linux Shell编程时,建议从简单的脚本开始,逐步增加复杂性。通过解决实际问题,你可以更好地理解和掌握Shell编程的精髓。此外,了解并熟练使用常见的Linux工具,如grep、awk、sed等,将使你的Shell编程...

    Linux shell 详细教程

    **Linux Shell 详细教程** Linux Shell,作为操作系统与用户交互的主要接口...无论是简单的文件操作还是复杂的系统集成,Shell都会成为你得心应手的工具。不断实践,你将发现Shell编程的魅力,提升你的Linux使用效率。

    linux shell 脚本入门

    Linux Shell脚本是Linux系统中用于自动化任务的强大工具,它基于Bash或其他Shell解释器,允许用户编写一系列命令,以实现批处理、任务调度或任何需要自动化的工作流程。本PDF文档"shell-script-entry.pdf"提供了18页...

    LinuxShell脚本学习基础视频

    Linux Shell脚本学习基础视频资源目录:【】11a00d99b60c4e2eba3440b8aa3a6bdd【】linux_shell脚本编程_01认识shell,如何编写shell脚本和执行【】linux_shell脚本编程_02vivim简单的常用操作【】linux_shell脚本编程...

    《Linux shell脚本全面学习》pdf版电子书

    ### Linux Shell脚本...通过以上知识点的介绍,我们可以看到Linux Shell脚本不仅提供了强大的文本处理能力,还能通过流程控制结构实现复杂的逻辑操作。理解并掌握这些基础知识对于开发高效稳定的Shell脚本至关重要。

Global site tag (gtag.js) - Google Analytics