Linux标准教程第8章.docx

上传人:b****7 文档编号:9375317 上传时间:2023-02-04 格式:DOCX 页数:20 大小:79.55KB
下载 相关 举报
Linux标准教程第8章.docx_第1页
第1页 / 共20页
Linux标准教程第8章.docx_第2页
第2页 / 共20页
Linux标准教程第8章.docx_第3页
第3页 / 共20页
Linux标准教程第8章.docx_第4页
第4页 / 共20页
Linux标准教程第8章.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

Linux标准教程第8章.docx

《Linux标准教程第8章.docx》由会员分享,可在线阅读,更多相关《Linux标准教程第8章.docx(20页珍藏版)》请在冰豆网上搜索。

Linux标准教程第8章.docx

Linux标准教程第8章

第8章shell编程基础

shell是一个命令解释器,可以用来启动、停止、编写程序。

它是Linux系统的重要组成部分。

shell是操作系统最外面的一层,负责管理用户与操作系统之间的交互,例如等待用户输入,向操作系统解释用户的输入,以及处理各种操作系统的输出结果。

Linux的图形化环境有很大改进,在XWindow系统下,用户几乎可以完成所有的工作,只需打开shell提示来完成极少量的任务。

然而,许多Linux功能在shell提示下要比在图形化用户界面GUI下完成得更快。

用户可以花少量时间打开文件管理器,定位目录,然后从GUI中创建、删除或修改文件;而在shell提示下,只需使用几个命令就可以完成这些工作。

本章学习目标:

Ø理解shell的概念

Ø了解为什么使用shell

Ø学会基本shell命令操作

Ø掌握shell脚本的创建

Ø掌握shell程序的语法结构

Ø学会使用shell的基本语句

Ø了解shell函数

Ø掌握后台运行进程

Ø掌握控制进程的命令

8.1shell简介

我们或许听过这样的说法:

命令行(thecommandline)早就已经过时了,不需要命令行了。

有些人甚至觉得操作系统中应该没有这些命令。

8.1.1shell的背景

8.1.2shell的功能

8.2shell基本语法

像高级程序设计语言一样,shell也提供说明和使用变量的功能。

对shell来讲,所有变量的取值都是一个字符串,shell程序采用$var的形式来引用名为var的变量的值。

8.2.1shell定义的环境变量

8.2.2用户定义的变量

8.2.3内部变量

8.2.4参数置换的变量

8.2.5位置参数

8.3shell程序基础

什么是shell程序?

简单地说,shell程序就是一个包含若干行shell或Linux命令的文件。

像编写高级语言的程序一样,编写一个shell程序需要一个文本编辑器,如VI等。

在文本编辑环境下,依据shell的语法规则,输入一些shell/Linux命令行,形成一个完整的程序文件。

8.3.1变量表达式

字符串比较

test命令

含义

test命令

含义

str1=str2

当str1与str2相同时,返回真

-nstr

当str的长度大于0时,返回真

str1!

=str2

当str1与str2不同时,返回真

-zstr

当str的长度是0是,返回真

str

当str不时空字符时,返回真

数字比较

test表达式

含义

test表达式

含义

int1–eqint2

当int1等于int2时,返回真

int1–gtint2

当int1大于int2时,返回真

int1–geint2

当int1大于/等于int2时,返回真

int1–neint2

当int1不等于int2时,返回真

int1–leint2

当int1小于/等于int2时,返回真

文件操作符

test表达式

含义

test表达式

含义

-dfile

当file是一个目录时,返回真

-sfile

当file文件长度大于0时,返回真

-ffile

当file是一个普通文件时,返回真

-wfile

当file是一个可写文件时,返回真

-rfile

当file是一个可读文件时,返回真

-xfile

当file是一个可执行文件时,返回真

逻辑操作符

test表达式

含义

!

expr

当expr的值是假时,返回真

expr1–aexpr2

当expr1和expr2值同为真时,返回真

expr1–oexpr2

当expr1和expr2的值至少有一个为真时,返回真

8.3.2shell中的符号

通配符功能说明

符号类型

说明

*

当前目录下的所有文件的名称

*Text

当前目录下的所有文件名中包含有Text的文件的名称

[ab-dm]*

当前目录下的所有以a、b、c、d、m开头的文件的名称

[ab-dm]?

当前目录下的所有以a、b、c、d、m开头且后面只跟有一个字符的文件的名称

/usr/bin/?

?

目录/usr/bin下的所有名称为两个字符的文件的名称

 

shell运算符

赋值运算符

说明

算术运算符

说明

关系运算符

说明

赋值操作

-

负号

>

大于

+=

先加再赋值

+

加法

<

小于

-=

先减再赋值

-

减法

>=

大于等于

*=

先乘再赋值

*

乘法

<=

小于等于

/=

先除再赋值

/

除法

!

=

不等于

%=

取余再赋值

%

取余

==

等于

++

自增量1

--

自减量1

8.3.3bash介绍

特殊字符

字符

含义

\!

显示该命令的历史记录编号

\#

显示当前命令的命令编号

\$

显示$符号为提示符,如果用户是root的话,则显示#号

\\

显示反斜杠

\d

显示当前日期

\h

显示主机名

\n

打印新行

\nnn

显示nnn的八进制值

\s

显示当前运行的shell的名字

\t

显示当前时间

\u

显示当前用户的用户名

\W

显示当前工作目录的名字

\w

显示当前工作目录的路径

8.4循环语句

程序中使用的控制结构分3种:

顺序结构、循环结构和选项结构。

正确使用这些语句控制结构可以使复杂的操作变得简单明了,便于运行,也方便他人阅读。

8.4.1for语句

8.4.2while语句

8.4.3until语句

8.4.4select语句

8.4.5shift语句

8.5条件语句

条件语句的执行方式与循环语句的执行方式不同。

条件语句是一种分支语句,例如当我们需要出门时,需要考虑天气状况,比如现在正在下雨,则需要带伞,而现在是晴天,则不需要带伞。

在Linux种,当语句满足某些条件才可以继续进行某些操作,如果不满足,则不运行或跳过某些操作。

另外,条件语句与循环语句之间的最大区别是条件语句没有循环功能。

8.5.1if语句

if语句流程图

8.5.2case语句

8.6其他语句简介

除了上述的几种语句外,shell还提供了几种辅助性的语句。

这些语句不能单独应用,必须与固定的语句结合起来才能发挥作用。

例如,在循环语句中使用break跳出循环嵌套等。

本节主要介绍这些辅助语句的功能及使用方法。

8.6.1break与contiune

8.6.2exit语句

8.7函数

shell允许将一组命令集或是一行语句形成一个可用块,这些块称为shell函数。

函数是高级语言中的重要结构。

shell中的函数与C或者其他语言中定义的函数一样,与从头开始,一行一行地写程序相比,使用函数主要好处是有利于组织整个程序。

8.7.1定义和使用函数

8.7.2向函数传递参数

8.7.3从调用函数中返回

8.8进程

Linux是一个多用户多任务的操作系统。

多用户是指多个用户可以在同一时间使用计算机系统;多任务是指Linux可以同时执行几个任务,可以在还未执行完一个任务时又执行另一项任务。

8.8.1进程管理及作业控制

进程状态及其变化

Linux进程状态的变化

进程的两种运行模式

8.8.2启动进程

时间的合法范围

时间

合法值

时间

合法值

minute

00~59

month

01~12

hour

00~23,00是指晚上12点

week

0~6,0是指周日

day

01~31

8.8.3查看进程

8.8.4进程调度

8.8.5调整优先级

8.8.6信号机制

x86平台上Linux内核定义的常用信号

信号号码

符号表示

含义

1

$IGHUP

远程用户挂断

2

$IGINT

输入中断信号(Ctrl+C)

3

$IGQUIT

输入退出信号(Ctrl+\)

4

$IGILL

非法指令

5

$IGTRAP

退到调试断点

6

$IG10T

10T指令

7

$IGBLIS

总线超时

8

$IGFPE

浮点异常

9

$IGKILL

要求终止进程(不可屏蔽)

10

$IGUSR1

用户自定义

11

$IGSEGV

越界访问内存

12

$IGUSR2

用户自定义

13

$IGPIPE

普通文件只有写进程、没有读进程

14

$IGALRM

定时报警信号

15

$IGTERM

软件终止信号

17

$IGCHLD

子进程终止

19

$IGSTOP

进程暂停运行

30

$IGPWR

电源故障

8.9思考与练习

 

第8章shell编程基础

shell是一个命令解释器,可以用来启动、停止、编写程序。

它是Linux系统的重要组成部分。

shell是操作系统最外面的一层,负责管理用户与操作系统之间的交互,例如等待用户输入,向操作系统解释用户的输入,以及处理各种操作系统的输出结果。

Linux的图形化环境有很大改进,在XWindow系统下,用户几乎可以完成所有的工作,只需打开shell提示来完成极少量的任务。

然而,许多Linux功能在shell提示下要比在图形化用户界面GUI下完成得更快。

用户可以花少量时间打开文件管理器,定位目录,然后从GUI中创建、删除或修改文件;而在shell提示下,只需使用几个命令就可以完成这些工作。

本章学习目标:

Ø理解shell的概念

Ø了解为什么使用shell

Ø学会基本shell命令操作

Ø掌握shell脚本的创建

Ø掌握shell程序的语法结构

Ø学会使用shell的基本语句

Ø了解shell函数

Ø掌握后台运行进程

Ø掌握控制进程的命令

8.1shell简介

我们或许听过这样的说法:

命令行(thecommandline)早就已经过时了,不需要命令行了。

有些人甚至觉得操作系统中应该没有这些命令。

8.1.1shell的背景

8.1.2shell的功能

8.2shell基本语法

像高级程序设计语言一样,shell也提供说明和使用变量的功能。

对shell来讲,所有变量的取值都是一个字符串,shell程序采用$var的形式来引用名为var的变量的值。

8.2.1shell定义的环境变量

8.2.2用户定义的变量

8.2.3内部变量

8.2.4参数置换的变量

8.2.5位置参数

8.3shell程序基础

什么是shell程序?

简单地说,shell程序就是一个包含若干行shell或Linux命令的文件。

像编写高级语言的程序一样,编写一个shell程序需要一个文本编辑器,如VI等。

在文本编辑环境下,依据shell的语法规则,输入一些shell/Linux命令行,形成一个完整的程序文件。

8.3.1变量表达式

字符串比较

test命令

含义

test命令

含义

str1=str2

当str1与str2相同时,返回真

-nstr

当str的长度大于0时,返回真

str1!

=str2

当str1与str2不同时,返回真

-zstr

当str的长度是0是,返回真

str

当str不时空字符时,返回真

数字比较

test表达式

含义

test表达式

含义

int1–eqint2

当int1等于int2时,返回真

int1–gtint2

当int1大于int2时,返回真

int1–geint2

当int1大于/等于int2时,返回真

int1–neint2

当int1不等于int2时,返回真

int1–leint2

当int1小于/等于int2时,返回真

文件操作符

test表达式

含义

test表达式

含义

-dfile

当file是一个目录时,返回真

-sfile

当file文件长度大于0时,返回真

-ffile

当file是一个普通文件时,返回真

-wfile

当file是一个可写文件时,返回真

-rfile

当file是一个可读文件时,返回真

-xfile

当file是一个可执行文件时,返回真

逻辑操作符

test表达式

含义

!

expr

当expr的值是假时,返回真

expr1–aexpr2

当expr1和expr2值同为真时,返回真

expr1–oexpr2

当expr1和expr2的值至少有一个为真时,返回真

8.3.2shell中的符号

通配符功能说明

符号类型

说明

*

当前目录下的所有文件的名称

*Text

当前目录下的所有文件名中包含有Text的文件的名称

[ab-dm]*

当前目录下的所有以a、b、c、d、m开头的文件的名称

[ab-dm]?

当前目录下的所有以a、b、c、d、m开头且后面只跟有一个字符的文件的名称

/usr/bin/?

?

目录/usr/bin下的所有名称为两个字符的文件的名称

 

shell运算符

赋值运算符

说明

算术运算符

说明

关系运算符

说明

赋值操作

-

负号

>

大于

+=

先加再赋值

+

加法

<

小于

-=

先减再赋值

-

减法

>=

大于等于

*=

先乘再赋值

*

乘法

<=

小于等于

/=

先除再赋值

/

除法

!

=

不等于

%=

取余再赋值

%

取余

==

等于

++

自增量1

--

自减量1

8.3.3bash介绍

特殊字符

字符

含义

\!

显示该命令的历史记录编号

\#

显示当前命令的命令编号

\$

显示$符号为提示符,如果用户是root的话,则显示#号

\\

显示反斜杠

\d

显示当前日期

\h

显示主机名

\n

打印新行

\nnn

显示nnn的八进制值

\s

显示当前运行的shell的名字

\t

显示当前时间

\u

显示当前用户的用户名

\W

显示当前工作目录的名字

\w

显示当前工作目录的路径

8.4循环语句

程序中使用的控制结构分3种:

顺序结构、循环结构和选项结构。

正确使用这些语句控制结构可以使复杂的操作变得简单明了,便于运行,也方便他人阅读。

8.4.1for语句

8.4.2while语句

8.4.3until语句

8.4.4select语句

8.4.5shift语句

8.5条件语句

条件语句的执行方式与循环语句的执行方式不同。

条件语句是一种分支语句,例如当我们需要出门时,需要考虑天气状况,比如现在正在下雨,则需要带伞,而现在是晴天,则不需要带伞。

在Linux种,当语句满足某些条件才可以继续进行某些操作,如果不满足,则不运行或跳过某些操作。

另外,条件语句与循环语句之间的最大区别是条件语句没有循环功能。

8.5.1if语句

if语句流程图

8.5.2case语句

8.6其他语句简介

除了上述的几种语句外,shell还提供了几种辅助性的语句。

这些语句不能单独应用,必须与固定的语句结合起来才能发挥作用。

例如,在循环语句中使用break跳出循环嵌套等。

本节主要介绍这些辅助语句的功能及使用方法。

8.6.1break与contiune

8.6.2exit语句

8.7函数

shell允许将一组命令集或是一行语句形成一个可用块,这些块称为shell函数。

函数是高级语言中的重要结构。

shell中的函数与C或者其他语言中定义的函数一样,与从头开始,一行一行地写程序相比,使用函数主要好处是有利于组织整个程序。

8.7.1定义和使用函数

8.7.2向函数传递参数

8.7.3从调用函数中返回

8.8进程

Linux是一个多用户多任务的操作系统。

多用户是指多个用户可以在同一时间使用计算机系统;多任务是指Linux可以同时执行几个任务,可以在还未执行完一个任务时又执行另一项任务。

8.8.1进程管理及作业控制

进程状态及其变化

Linux进程状态的变化

进程的两种运行模式

8.8.2启动进程

时间的合法范围

时间

合法值

时间

合法值

minute

00~59

month

01~12

hour

00~23,00是指晚上12点

week

0~6,0是指周日

day

01~31

8.8.3查看进程

8.8.4进程调度

8.8.5调整优先级

8.8.6信号机制

x86平台上Linux内核定义的常用信号

信号号码

符号表示

含义

1

$IGHUP

远程用户挂断

2

$IGINT

输入中断信号(Ctrl+C)

3

$IGQUIT

输入退出信号(Ctrl+\)

4

$IGILL

非法指令

5

$IGTRAP

退到调试断点

6

$IG10T

10T指令

7

$IGBLIS

总线超时

8

$IGFPE

浮点异常

9

$IGKILL

要求终止进程(不可屏蔽)

10

$IGUSR1

用户自定义

11

$IGSEGV

越界访问内存

12

$IGUSR2

用户自定义

13

$IGPIPE

普通文件只有写进程、没有读进程

14

$IGALRM

定时报警信号

15

$IGTERM

软件终止信号

17

$IGCHLD

子进程终止

19

$IGSTOP

进程暂停运行

30

$IGPWR

电源故障

8.9思考与练习

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1