shell学习笔记(一)——shell入门基础

1、shell的历史


shell起源于古老的Unix系统。

1964年,美国的AT&T公司的贝尔实验室、麻省理工学院MIIT和美国通用电气,共同研发一套可在大型机上运行的“多用户、多任务”操作系统,

Multics(MULTiplexed Information and Computing System),结果无疾而终。

后来(1969,1970),参与其中的:肯·汤普森(Kenneth Lane Thompson)和丹尼斯·里奇(Dennis MacAlistair Ritchie) 启动了另外一个”多用户、多任务“的

操作系统项目,称之为”UNICS“(Uniplexed Information and Computing System)。后来,人们取其谐音,把该项目称之为UNIX。


最初的UNIX由汇编语言编写,因此移植性很差,于是,1973年,汤普森和里奇使用C语言重写了UNIX。通过这次编写,使得UNIX可以移植到其他小型机上。


1979年,第一个重要的标准UNIX Shell在1979年年末在UNIX的第七版中推出。作者是史蒂夫·伯恩(Stephen Bourne),因此称之为 Bourne Shell。


shell顾名思义,壳。在UNIX以及Linux中,shell就是套装操作系统内核外面的一层壳。

shell称之为命令解析器,它能够识别用户输入的各种命令,并传递给操作系统。


2、shell的分类


Bourne Shell:sh

Bourne-Again Shell: Bash

Korn Shell:ksh

C Shell:csh

。。。。。。


3、作为程序设计语言的shell


shell的角色:

a、充当用户与UNIX或Linux交互的角色

b、可以作为一种程序设计语言

shell脚本程序可分为两种:

a、交互式:用户可以依次输入一些列命令,交互式的执行它们;

b、脚本式:将多个shell命令写在一个脚本文件中执行


4、向shell脚本传递参数


常用的与参数传递相关的系统变量

变量名说明
$n表示传递给脚本的第n个参数,n从1开始
$#命令行参数的个数
$0当前脚本的名称
$*以”参数1 参数2 参数3.。。。“的形式返回所有参数的值。所有参数作为一个字符串
$@以”参数1“ ”参数2“ ”参数3“ 。。。的形式返回所有参数
$_保存之前执行的命令的最后一个参数
$?最后一条命令的退出状态
$$shell的进程id。PID


5、第一个shell程序。世界的问候:Hello,Bash Shell


#! /bin/bash

#print string
echo "Hello. Bash Shell!"

shell脚本的组成:

a、指定命令的解释器

b、注释

c、可执行语句

当用户在命令行中执行一个脚本的时候,shell会首先判断用户是否拥有该程序的执行权限。

如果没有,shell会给出“Permission Denied”的提示;

如果有,shell会创建一个新的进程,解释并执行shell程序中的语句。


6、如何执行shell程序

三种方法:

a、授权给用户该脚本程序的执行权限,使得程序能够直接执行。./***.sh

b、通过调用shell脚本解释器来执行。 /bin/sh    ***.sh

c、通过source命令来执行。source ./***.sh

前两种方法a、b本质是一样的,shell会创建子进程来执行shell文件。

a需要将脚本设置为可执行权限,b手动指定shell脚本的解析器。

第三种方法与前两者的区别在于:简单的读取脚本里的语句,并且依次在当前shell里面执行,并不会创建子shell进程。


6、shell脚本的退出状态

在Unix和Linux中,每个命定都会返回一个退出状态码,退出状态码是一个0~255的整数。

通常情况下,成功返回0,失败返回非0值。


shell脚本中的函数和脚本本身也会返回退出状态码,其状态码由函数或脚本中最后一条命令决定。

另外,用户也可以通过“exit”语句来指定退出状态码传递给shell。


shell中,系统变量“$?”保存了最后一条命令的退出状态。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值