燕山大学linux课件资料
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
任何一个字符 • !(惊叹号),如果它紧跟在一对方括号的左方括号([)之后,则表示不
在一对方括号中所列出的字符
2.模式表达式 ——是那些包含一个或多个通配符的字 • *(模式表)——匹配给定模式表中“模式”的0次或多次出现,各模式之间
以“|”分开(下同) • +(模式表)——匹配给定模式表中“模式”的1次或多次出现 • ?(模式表)——匹配模式表中任何一种“模式”的0次或1次出现 • @(模式表)——仅匹配模式表中给定“模式”的一次出现 • !(模式表)——除给定模式表中的一个“模式”之外,可以匹配其他任何东
第4章 Linux shell程序设计
主要内容
• shell的主要特点、类型、建立和执行的方式 • bash变量的分类、定义形式及引用规则 • 各种控制语句的格式、功能及流程 • bash中算术运算的使用 • bash函数的构成及使用规则 • bash中的内置命令
4.1 shell概述
4.1.1 shell的特点和主要版本
☆高级的命令语言
2.shell的种类
• (1)Bourne shell(简称sh) • (2)C shell(简称csh) • (3)Korn shell(简称ksh) • (4)Bourne Again shell(即bash)
查看系统注册及当前的shell
系统注册的shell 当前的shell
• 作为命令解释程序
• 一种高级程序设计语言,它有变量,关键字,有各种控制 语句,如if、case、while、for等语句,支持函数模块,有 自己的语法结构
1.shell的特点
☆组合新命令
☆提供了文件名扩展字符
☆ ☆ 直接使用shell的内置命令
灵活地使用数据流
☆结构化的程序模块
☆在后台执行命令
☆可配置的环境
类型的历史命令
基本的事件指定字格式
格式
意义
!!
!n !-n !string !?string? !#
重复上一条命令,也就是“!-1” 重新执行第n条历史命令 重新执行倒数第n条历史命令。!-1就等于! ! 重新执行以字符串string开头的最近的历史命令行。 重新执行最近的、包含字符串string的那条历史命令 到现在为止所输入的整个命令行
4.1.2 shell程序示例
【例4.1】 由三条简单命令组成的shell程序(文件 名为ex1)。
$ cat ex1 date pwd cd ..
【例4.2】 带有控制结构的shell程序(文件名为ex2)。
$ cat ex2 #!/bin/bash
宣告这个 script 使用的 shell 名称
• 常用的选项有:
-a 在历史文件中添加“新”历史命令行。 -n 从历史文件中读取尚未读入的历史命令行,添加到当前历史清单中。 -r 读取历史文件的内容,并把它作为当前的历史命令。 -w 把当前的历史写到历史文件中,覆盖原有内容。 -c 删除历史清单中所有的项。
4.2.2 执行历史命令
• 执行历史命令是命令替换之一,它以字符“!” 开头、后随1个或多个字符来定义用户所需的某种
西
示例1
ห้องสมุดไป่ตู้
示例2
4.5.2 引号
1.双引号 • 由双引号括起来的字符(除$、倒引号(`)和反斜线(\)外)
其中的内容产生歧义,如对空格和特殊字符另作解释
4.4.2 取消别名
• 如果想取消先前定义的别名,可使用如下命令: unalias name…
• 可以一次将所有的别名都从别名表中删除,使用如下命令: unalias -a
4.5 shell特殊字符
4.5.1 通配符
1.一般通配符 • *(星号),它匹配任意字符的0次或多次出现 • ?(问号),它匹配任意一个字符 • [ ](一对方括号),其中有一个字符组。其作用是匹配该字符组所限定的
4.2.3 配置历史命令环境
• 在默认方式下,bash使用用户主目录下面的文件 “.bash_history”来保存命令历史
• 改变存放历史命令的文件 $ HISTFILE="/home/mengqc/.myhistory"
• 重新设定能够保留的命令个数 $ HISTSIZE=600
4.3 名称补全
• 注意,此时该脚本所在的目录应被包含在命令搜索路径(PATH)中
示例
示例
示例
未设置环境变量 设置环境变量后
若要一直有效,那么需要执行export PATH
4.2 命令历史
4.2.1 显示历史命令
语法格式是:history [option] [arg…]
• 如果不带任何参数,则history命令会显示历史命令的清单 • 如果history 后给出一个正整数(如50),就只显示历史表中的最后50行命令 • 如果history后给出一个文件名,就把它作为历史文件名
• 可以输入目录名或文件名的开头部分,然 后按Tab键,Linux根据输入的字母查找以 这些字母开头的目录或文件,并自动补全 剩余的部分。
4.4 别 名
4.4.1 定义别名
一般语法格式为: alias [name[=value]]…
• 如果没有指定参数,将在标准输出(屏幕)上显示别名清单 • 定义别名时,往往用单引号将它代表的内容括起来,从而防止shell对
done
fi
4.1.3 shell脚本的建立和执行
1. shell脚本的建立
2.执行shell脚本的方式 执行shell脚本的方式基本上有三种: (1)输入定向到shell脚本 $ bash < 脚本名 (2)以脚本名作为参数 其一般形式是: $ bash 脚本名 [参数]
• 如果以目前shell(以·表示)执行一个shell脚本,则可以使用如下 简便形式: $ ·脚本名 [参数] (3)将shell脚本的权限设置为可执行,然后在提示符下直接执行它。 $ chmod a+x ex2 $ PATH=$PATH:. $ ex2
# If no arguments, then listing the current directory.
# Otherwise, listing each subdirectory.
if test $# = 0
程序注释
then ls .
else
for i do
程序体
ls -l $i | grep '^d'
在一对方括号中所列出的字符
2.模式表达式 ——是那些包含一个或多个通配符的字 • *(模式表)——匹配给定模式表中“模式”的0次或多次出现,各模式之间
以“|”分开(下同) • +(模式表)——匹配给定模式表中“模式”的1次或多次出现 • ?(模式表)——匹配模式表中任何一种“模式”的0次或1次出现 • @(模式表)——仅匹配模式表中给定“模式”的一次出现 • !(模式表)——除给定模式表中的一个“模式”之外,可以匹配其他任何东
第4章 Linux shell程序设计
主要内容
• shell的主要特点、类型、建立和执行的方式 • bash变量的分类、定义形式及引用规则 • 各种控制语句的格式、功能及流程 • bash中算术运算的使用 • bash函数的构成及使用规则 • bash中的内置命令
4.1 shell概述
4.1.1 shell的特点和主要版本
☆高级的命令语言
2.shell的种类
• (1)Bourne shell(简称sh) • (2)C shell(简称csh) • (3)Korn shell(简称ksh) • (4)Bourne Again shell(即bash)
查看系统注册及当前的shell
系统注册的shell 当前的shell
• 作为命令解释程序
• 一种高级程序设计语言,它有变量,关键字,有各种控制 语句,如if、case、while、for等语句,支持函数模块,有 自己的语法结构
1.shell的特点
☆组合新命令
☆提供了文件名扩展字符
☆ ☆ 直接使用shell的内置命令
灵活地使用数据流
☆结构化的程序模块
☆在后台执行命令
☆可配置的环境
类型的历史命令
基本的事件指定字格式
格式
意义
!!
!n !-n !string !?string? !#
重复上一条命令,也就是“!-1” 重新执行第n条历史命令 重新执行倒数第n条历史命令。!-1就等于! ! 重新执行以字符串string开头的最近的历史命令行。 重新执行最近的、包含字符串string的那条历史命令 到现在为止所输入的整个命令行
4.1.2 shell程序示例
【例4.1】 由三条简单命令组成的shell程序(文件 名为ex1)。
$ cat ex1 date pwd cd ..
【例4.2】 带有控制结构的shell程序(文件名为ex2)。
$ cat ex2 #!/bin/bash
宣告这个 script 使用的 shell 名称
• 常用的选项有:
-a 在历史文件中添加“新”历史命令行。 -n 从历史文件中读取尚未读入的历史命令行,添加到当前历史清单中。 -r 读取历史文件的内容,并把它作为当前的历史命令。 -w 把当前的历史写到历史文件中,覆盖原有内容。 -c 删除历史清单中所有的项。
4.2.2 执行历史命令
• 执行历史命令是命令替换之一,它以字符“!” 开头、后随1个或多个字符来定义用户所需的某种
西
示例1
ห้องสมุดไป่ตู้
示例2
4.5.2 引号
1.双引号 • 由双引号括起来的字符(除$、倒引号(`)和反斜线(\)外)
其中的内容产生歧义,如对空格和特殊字符另作解释
4.4.2 取消别名
• 如果想取消先前定义的别名,可使用如下命令: unalias name…
• 可以一次将所有的别名都从别名表中删除,使用如下命令: unalias -a
4.5 shell特殊字符
4.5.1 通配符
1.一般通配符 • *(星号),它匹配任意字符的0次或多次出现 • ?(问号),它匹配任意一个字符 • [ ](一对方括号),其中有一个字符组。其作用是匹配该字符组所限定的
4.2.3 配置历史命令环境
• 在默认方式下,bash使用用户主目录下面的文件 “.bash_history”来保存命令历史
• 改变存放历史命令的文件 $ HISTFILE="/home/mengqc/.myhistory"
• 重新设定能够保留的命令个数 $ HISTSIZE=600
4.3 名称补全
• 注意,此时该脚本所在的目录应被包含在命令搜索路径(PATH)中
示例
示例
示例
未设置环境变量 设置环境变量后
若要一直有效,那么需要执行export PATH
4.2 命令历史
4.2.1 显示历史命令
语法格式是:history [option] [arg…]
• 如果不带任何参数,则history命令会显示历史命令的清单 • 如果history 后给出一个正整数(如50),就只显示历史表中的最后50行命令 • 如果history后给出一个文件名,就把它作为历史文件名
• 可以输入目录名或文件名的开头部分,然 后按Tab键,Linux根据输入的字母查找以 这些字母开头的目录或文件,并自动补全 剩余的部分。
4.4 别 名
4.4.1 定义别名
一般语法格式为: alias [name[=value]]…
• 如果没有指定参数,将在标准输出(屏幕)上显示别名清单 • 定义别名时,往往用单引号将它代表的内容括起来,从而防止shell对
done
fi
4.1.3 shell脚本的建立和执行
1. shell脚本的建立
2.执行shell脚本的方式 执行shell脚本的方式基本上有三种: (1)输入定向到shell脚本 $ bash < 脚本名 (2)以脚本名作为参数 其一般形式是: $ bash 脚本名 [参数]
• 如果以目前shell(以·表示)执行一个shell脚本,则可以使用如下 简便形式: $ ·脚本名 [参数] (3)将shell脚本的权限设置为可执行,然后在提示符下直接执行它。 $ chmod a+x ex2 $ PATH=$PATH:. $ ex2
# If no arguments, then listing the current directory.
# Otherwise, listing each subdirectory.
if test $# = 0
程序注释
then ls .
else
for i do
程序体
ls -l $i | grep '^d'