Shell是一个命令解释器。它不仅是操作系统内核与用户之间的绝缘层,同时也是一种功能相当强大的编程语言。一个Shell程序,通常称为脚本,它是一个由系统调用,命令工具,软件包和已编译的二进制包"粘合" 起来的极易使用的工具。事实上,整个UNIX系统命令,软件包和工具都能由一个shell脚本调用。如果这还不够,Shell的内部命令,比如测试和循环结构,都使Shell脚本更强大和更有弹性。Shell脚本在系统管理任务表现非常的出色,并且对于日常反复性的处理工作避免了使用那些结构过于复杂的程序语言。

脚本应用知识对于希望相当精通系统管理的任何人来说是必需的,即使他实际上并不想写一个脚本程序。一般来说一个Linux机器启动后,它会执行在/etc/rc.d 目录下的Shell脚本重建系统环境并且启动各种服务。理解这些启动脚本的细节对分析系统运作行为并修改它是意义重大的。

编写shell脚本不是很难学,因为脚本内建的功能集(check?)和他们只有相当少的shell的操作符和选项 [1] 需要学。语法非常的简单易懂,就像在命令行上调用和连接软件包一样容易,它仅有一些少量的 "规则" 需要掌握。大多数短小的脚本第一次就工作的很好,即使是较长的脚本调试也相当的容易。

shell脚本是一个复杂应用原型的"quick and dirty" 方法。在项目开发中用shell编程实现一个有限的功能性子集常常是有用的开始。用这种方法去测试应用程序的结构和模块组合,可以在实际地用C,C++,Java或者Perl进行编程之前发现主要的设计缺陷。

Shell编程遵从经典UNIX哲学:把复杂的问题分解成简单的小问题,然后再把各部分功能组合起来解决复杂问题。这和用新一代高级的多用途的语言,例如Perl,试图成为所有人处理所有事情的语言但是所付出的代价是强迫改变你的思维方法来适应这种工具,大多数人认为这是一个更好的或者至少感觉上更令人能接受的方法。

什么时候不适合使用Shell编程:

资源紧张的项目,特别是那些速度是重要因素的地方(排序,散序,等等)
程序要进行很复杂的数学计算,特别是浮点计算,任意精度的计算,或者是复数计算(应该用C++或是FORTRAN代替)
要求交叉编译平台的可移植性(使用C或者是Java代替)
需要结构化编程的复杂应用(需要变量类型检查和函数原型等等)
对于影响系统全局性的关键任务应用。
安全非常重要。你必须保证系统完整性和抵抗入侵,攻击和恶意破坏。
项目由连串的依赖的各个部分组成。
多种文件操作要求(Bash被限制成文件顺序存取,并且是以相当笨拙,效率低下的逐行的存取方式)
需要良好的多维数组支持。
需要类似链表或树这样的数据结构。
需要产生或操作图象或图形用户界面。
需要直接存取系统硬件。
需要端口号或是socket I/O。
需要使用可重用的函数库或接口。
所有的私有的不开源的应用程序(Shell脚本的源代码是直接可读,能被所有人看到的)

Linux Shell编程(1)——shell编程简介的更多相关文章

  1. Linux(五)shell编程基础

    一.Linux shell简介 1.shell概述 Shell 是用户与内核进行交互操作的一种接口,目前最流行的 Shell 称为 bash Shell          Shell 是一门编程语言& ...

  2. Linux命令行与Shell脚本编程大全

    快来参加<Linux命令行与Shell脚本编程大全>学习吧,提升技能,展示自我. 点击链接即可进入学习:https://s.imooc.com/WTmCO6H 课程亮点适合零基础读者,从零 ...

  3. 《Linux命令行与shell脚本编程大全》 第二十二章 学习笔记

    第二十二章:使用其他shell 什么是dash shell Debian的dash shell是ash shell的直系后代,ash shell是Unix系统上原来地Bourne shell的简化版本 ...

  4. linux中的shell脚本编程---初识shell

    Shell是用户与Linux或Unix内核通信的工具,shell编程指的并不是编写这个工具,而是指利用现有的shell工具进行编程,写出来的程序是轻量级的脚本,我们叫做shell脚本. Shell的语 ...

  5. Linux命令行与shell脚本编程大全.第3版(文字版) 超清文字-非扫描版 [免积分、免登录]

    此处免费下载,无需账号,无需登录,无需积分.收集自互联网,侵权通知删除. 点击下载:Linux命令行与shell脚本编程大全.第3版 (大小:约22M)

  6. 《Linux命令行与shell脚本编程大全 第3版》创建实用的脚本---11

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

  7. 《Linux命令行与shell脚本编程大全 第3版》高级Shell脚本编程---47

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

  8. 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---57

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

  9. 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---57

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

  10. 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---56

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

随机推荐

  1. android反编译经验谈

    反编译这事,找对了工具其实非常简单. 反编译工具下载地址http://pan.baidu.com/s/1eQvshwu android的反编译要经过两个步骤: 1.把dex文件转为jar 2.jar转 ...

  2. Java基础知识强化之集合框架笔记30:集合之泛型的引入

    1. 泛型的引入: (1)首先我们看看下面这一段代码,如下: package cn.itcast_01; import java.util.ArrayList; import java.util.It ...

  3. IDL通过经纬度定位获取DN值

    以前就想写,但是因为envi可以就一直没弄.今天正好有个机会,就做了这个事情.ENVI中在主窗口中pixel locator可以实现,但是当我们需要读入很多的数据的时候,也就是批量处理的时候,显然编程 ...

  4. Session 原理

    Session天天用,但是你真的理解了么? 今天遇到了这个问题,于是研究了一下.要解决这个问题,首先就要明白一些Session的机理.Session在服务器是以散列表形式存在的,我们都知道Sessio ...

  5. MVC4将Controller与views分开

    最近自己在要着手从头做一个项目,自己想把mvc里的view和controller文件分别写在不同的项目里,刚开始在网上找了下,可是不尽理想,最后翻了一下自己以前参加的项目找到了这个做法. 这个需要在G ...

  6. 自己写的demo。List<HashMap<String,Object>>=new ArrayList<HashMap<String,Object>>

    package com.pb.collection; import java.util.ArrayList; import java.util.HashMap; import java.util.It ...

  7. Switch Case语句中多个值匹配同一个代码块的写法

    switch ($p) { case 'home': case '': $current_home = 'current'; break; case 'users.online': case 'use ...

  8. 深入了解java集群技术

    原文源自:http://blog.csdn.net/happyangelling/article/details/6413584 序言 越来越多的关键应用运行在J2EE(Java 2, Enterpr ...

  9. 系统重装c盘后,mysql重新设置

    之前我的mysql装在d盘,重装了系统后,虽然只格式化了c盘,但mysql还是不能用了.我网上找了找.修改了一下配置. 1.首先设置环境变量,编辑path,在后面添加上mysql的安装路径 : 2.之 ...

  10. (java)从零开始之-反射Reflect

    反射: 当一个字节码文件加载到内存的时候,jvm会对该字节码进行解剖,然后会创建一个对象的Class对象,把字节码文件的信息全部都存储到该Class对象中,我们只要获取到Class对象,我们就可以使用 ...