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