shell脚本基础进阶(一)----shell介绍

shell介绍css

既然说到bash编程,那就先从程序设计开始吧,先说什么是程序?我的的话解释:程序就是对数据的加工处理过程。那么,程序设计构成就能够写成这个等式程序=数据结构+指令算法程序员

数据结构:即非数值计算的程序设计问题中的计算机的操做对象以及它们之间的关系和操做
指令算法:即对特定问题求解步骤的一种描述,是对指令的有序序列

程序根据在编程过程当中对数据和指令的侧重点不一样,能够将程序分为两种类型:算法

一、面向过程的编程:以指令为中心,设计算法,数据服务于算法;
二、面向对象的编程:以数据为中心,设计数据结构(类),程序服务于数据结构;

根据编程命令集,接口以及程序运行过程,将程序语言分类shell

一、汇编语言:汇编语言的实质和机器语言是相同的,都是直接对硬件操做
二、脚本语言:脚本语言是解释运行而非编译
三、机器语言:所有机器指令的集合构成计算机的机器语言,是用二进制代码0和1描述的指令
四、高级语言:高级语言所编制的程序不能直接被计算机识别,必须通过转换才能被执行

系统编程写的程序源码是没法被内核直接运行的,须要对程序源码进行编译或解释成机器语言。再经过系统内核去运行程序。两种方式编程

一、编译执行
步骤:须要编译器,汇编器等来事先将源码编译汇编生成可运行的二进制代码程序文件。
二、解释执行
步骤:由解释器全程参与,解释器每次读取一行,运行一行。

对编程的定义和分类有了初步了解,将shell编程对号入座。知道shell属于脚本语言,运行方式是解释执行,就会很容易理解shell编程的运行过程和原理了。windows

 

shell定义bash

英文shell区别于kernel,是用来人机交互的一类交互式程序。计算机最初的编程须要程序员根据硬件厂商提供的机器码来编写程序(即汇编),而每一个硬件厂商的硬件架构和机器码都是不一样的。这就形成程序编写的重复性和复杂性,为了解决这个问题,kernel应运而生,kernel的做用就是为不一样的硬件厂商提供一个统一的对外接口规则,其实就是操做系统。同一个操做系统不就是可以跑在不一样硬件厂商的电脑上?而后,用户对操做系统的操做都是统一的操做集。想一想,是否是这么回事!好了,明白kernel了,那用户操做电脑,仍是须要人机交互,而shell就是为解决人机交互而产生的一种接口程序,它是工做在kernel的基础之上的。数据结构

广义上,人机交互分为图形和命令行两种接口类型。即shell交互接口程序也是分为GUICLI两种类型的,就像windows的桌面和dosGUI顾名思义,就是基于图形的操做方式;CLI则是提供一个命令提示符,在提示符上键入运行须要的命令来达到人机交互的目的。Linux系统的shell做为操做系统的外壳,为用户提供使用操做系统的接口。他是命令语言、命令解释程式及程式设计语言的统称。Linux下的shell做用就是:架构

一、它是用户操做系统内核,用户与内核交互操做的接口,接收用户的操做命令;
二、它是命令解释器,它拥有本身内建的shell命令集,shell也能被系统中其余应用程序所调用。用户在提示符下输入的命令都由shell先解释而后传给Linux核心
三、是一个解释型的程序设计语言

当普通用户成功登陆,系统将执行一个称为shell的程序。正是shell进程提供了命令行提示符。做为默认值(TurboLinux系统默认的shellBASH),对普通用户用“$”做提示符,对超级用户(root)用“#”做提示符。一旦出现了shell提示符,就能够键入命令名称及命令所须要的参数。shell将执行这些命令。ide

shell命令分类:

内部命令:shell本身内建的shell命令集
外部命令:是存在于文件系统中某个目录下的单独的程序

shell工做原理:

shell首先检查命令是不是内部命令,若不是再检查是不是一个应用程序,即外部命令。而后shell在搜索路径里寻找这些应用程序(搜索路径就是由系统环境变量定义的一个能找到可执行程序的目录列表,如PATH)。若是键入的命令不是一个内部命令而且在路径里没有找到这个可执行文件,将会显示一条错误信息。若是可以成功找到命令,该内部命令或应用程序将被分解为系统调用并传给Linux内核。如图:

wKioL1X6W5Xi2yw8AAEDR5pgJXE405.jpg 

 

    说完什么是编程,以及shellshell的工做原理。下面进入bash编程的正题。哦,在这以前先说下bash脚本的一些特性或者说是一些比较零散琐碎的知识点。

1、脚本的编写,运行

首行顶格#!/path/to/shell_file  声明选择使用那种shell
运行须要一个执行权限,而执行: ./shell_script或者/path/to/shell_file shell_script
注释行:#

2、命令状态结果,bash进程可追踪执行命令成功与否的状态

0:成功
1-255:失败
$?:显示紧临上次命令行的执行结果

3bash经常使用选项

-n:检查脚本中的语法错误,只能是语法错误
-x:调试执行脚本

4、特殊设备:

/dev/null: 空,bit buckets,吞下全部数据,并直接丢弃;
/dev/zero:吐出一堆0;

OK,先总结这些,有新发现之后再加。

相关文章
相关标签/搜索