欢迎来到天天文库
浏览记录
ID:44956851
大小:2.28 MB
页数:76页
时间:2019-11-06
《第4章 Linux shell程序设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第4章Linuxshell程序设计主要内容shell的主要特点、类型、建立和执行的方式bash变量的分类、定义形式及引用规则各种控制语句的格式、功能及流程bash中算术运算的使用bash函数的构成及使用规则bash中的内置命令4.1shell概述4.1.1shell的特点和主要版本作为命令解释程序一种高级程序设计语言,它有变量,关键字,有各种控制语句,如if、case、while、for等语句,支持函数模块,有自己的语法结构1.shell的特点☆组合新命令☆提供了文件名扩展字符☆直接使用shell的内置命令☆灵活地使用数据流☆结构化的程序模块☆在后台执行命令☆可配置的环境☆高级的
2、命令语言2.shell的种类(1)Bourneshell(简称sh)(2)Cshell(简称csh)(3)Kornshell(简称ksh)(4)BourneAgainshell(即bash)4.1.2shell程序示例【例4.1】由三条简单命令组成的shell程序(文件名为ex1)。$catex1datepwdcd..【例4.2】带有控制结构的shell程序(文件名为ex2)。$catex2#!/bin/bash#Ifnoarguments,thenlistingthecurrentdirectory.#Otherwise,listingeachsubdirectory.ifte
3、st$#=0thenls.elseforidols-l$i
4、grep'^d'donefi4.1.3shell脚本的建立和执行shell脚本的建立2.执行shell脚本的方式执行shell脚本的方式基本上有三种:(1)输入定向到shell脚本$bash<脚本名(2)以脚本名作为参数其一般形式是:$bash脚本名[参数]如果以目前shell(以·表示)执行一个shell脚本,则可以使用如下简便形式:$·脚本名[参数](3)将shell脚本的权限设置为可执行,然后在提示符下直接执行它。$chmoda+xex2$PATH=$PATH:.$ex2注意,此时该脚本所在的目录应被包含在命令搜索
5、路径(PATH)中4.2命令历史4.2.1显示历史命令语法格式是:history[option][arg…]如果不带任何参数,则history命令会显示历史命令的清单如果history后给出一个正整数(如50),就只显示历史表中的最后50行命令如果history后给出一个文件名,就把它作为历史文件名常用的选项有:-a在历史文件中添加“新”历史命令行。-n从历史文件中读取尚未读入的历史命令行,添加到当前历史清单中。-r读取历史文件的内容,并把它作为当前的历史命令。-w把当前的历史写到历史文件中,覆盖原有内容。-c删除历史清单中所有的项。4.2.2执行历史命令格式意义!!重复上一条命
6、令,也就是“!-1”!n重新执行第n条历史命令!-n重新执行倒数第n条历史命令。!-1就等于!!!string重新执行以字符串string开头的最近的历史命令行。!?string?重新执行最近的、包含字符串string的那条历史命令!#到现在为止所输入的整个命令行执行历史命令是命令替换之一,它以字符“!”开头、后随1个或多个字符来定义用户所需的某种类型的历史命令基本的事件指定字格式4.2.3配置历史命令环境在默认方式下,bash使用用户主目录下面的文件“.bash_history”来保存命令历史改变存放历史命令的文件$HISTFILE="/home/mengqc/.myhisto
7、ry"重新设定能够保留的命令个数$HISTSIZE=6004.3名称补全可以输入目录名或文件名的开头部分,然后按Tab键,Linux根据输入的字母查找以这些字母开头的目录或文件,并自动补全剩余的部分。4.4别名4.4.1定义别名一般语法格式为:alias[name[=value]]…如果没有指定参数,将在标准输出(屏幕)上显示别名清单定义别名时,往往用单引号将它代表的内容括起来,从而防止shell对其中的内容产生歧义,如对空格和特殊字符另作解释4.4.2取消别名如果想取消先前定义的别名,可使用如下命令:unaliasname…可以一次将所有的别名都从别名表中删除,使用如下命令:u
8、nalias-a4.5shell特殊字符4.5.1通配符1.一般通配符*(星号),它匹配任意字符的0次或多次出现?(问号),它匹配任意一个字符[](一对方括号),其中有一个字符组。其作用是匹配该字符组所限定的任何一个字符!(惊叹号),如果它紧跟在一对方括号的左方括号([)之后,则表示不在一对方括号中所列出的字符2.模式表达式——是那些包含一个或多个通配符的字*(模式表)——匹配给定模式表中“模式”的0次或多次出现,各模式之间以“|”分开(下同)+(模式表)——匹配给定模式表中“模
此文档下载收益归作者所有