第3章内容回顾文本编辑器概述文本编辑器的作用文本编辑器的分类文本编辑器简介vi文本编辑器vi编辑器的模式vi编辑器的基本使用编辑器的多文件操作Shell的使用第4章预习检查常见的Shell有哪些?脚本的运行方式?本章目标了解shell的发展过程和用途掌握shell变量的设置和使用掌握bash的基本操作方式掌握简单的shell脚本编辑方法本章结构Shell的使用Shell环境Shell的产生与发展Bash的主要功能Bash常用功能命令行编辑功能命令行补全功能命令历史与命令重复Shell变量Shell脚本命令别名标准输入输出重定向管道与重定向管道Shell脚本概念基本脚本编程脚本运行Shell的基本概念Shell是操作系统与用户进行交互操作的界面用户命令结果操作系统ShellShell的发展与分类BshKshBashCshBsh在20世纪70年代中期诞生于新泽西的AT&T贝尔实验室,具有较强的脚本编程功能Csh在20世纪80年代早期诞生于加利福尼亚大学,使用C语言的语法,用户命令交互更加方便Ksh结合了Bsh和Csh两者的功能优势,兼有Bsh的语法和Csh的交互特性Bash是Bsh的升级替代品,吸收了Ksh中的诸多优秀特性,Bash是开源软件RHEL5中Shell的使用RHEL5中提供了多种Shell程序可供用户选择文件Shells中保存了Linux系统中可使用的Shell程序列表/etc/shells在某个Shell程序中可通过执行其他的Shell程序改变用户的当前Shell[teacher@localhost~]$bsh用户默认Shell的设定用户使用的登录Shell保存在passwd文件的记录中/etc/passwdBash的主要功能命令行编辑功能命令和文件名补全功能命令历史功能命令别名功能提供作业控制功能具有将命令序列定义为功能键的功能灵活的Shell脚本编程Shell变量的分类环境变量预定义变量位置变量用户自定义变量(本地变量)环境变量使用set命令查看环境变量set常用环境变量USERUIDSHELLHOMEPWDPATHPS1PS2环境变量配置文件/etc/bashrc/etc/profile~/.bash_profile~/.bashrc位置变量$./exam01onetwotreefourfivesix$0表示命令名称$0属于预定义变量$0不属于位置变量$1表示第1个命令参数$2表示第2个命令参数$3表示第3个命令参数$n表示第n个命令参数预定义变量变量名含义$#表示位置参数的数量$*表示所有位置参数的内容$?表示命令执行后返回的状态,用于检查上一个命令的执行是否正确;在Linux中,命令退出状态为0表示命令正确执行,任何非0值表示命令执行错误$$表示当前进程的进程号$!表示后台运行的最后一个进程号$0表示当前执行的进程名演示演示显示预定义变量的值用户自定义变量自定义变量的设置$DAY=sunday自定义变量的查看与引用$echo$DAY自定义变量的输出$exportDAY自定义变量的清除$unsetDAYBash的命令行编辑功能操作键功能左右方向键使用左右方向键可以使光标在当前命令行中的已有字符间进行任意的移动退格键删除命令行中光标左边的字符Del删除当前光标处的字符Home将光标快速移动到命令行的行首End将光标快速移动到命令行的行尾Ctrl+u删除当前光标到行首的内容Ctrl+k删除当前光标到行尾的内容演示演示命令行编辑功能Bash的命令行补全功能命令补全功能使用Tab键可在命令查找路径中查找匹配的命令,并进行命令拼写的补全文件补全功能使用Tab键可对文件和目录名进行补全Bash的命令历史与命令重复命令历史功能的使用使用上下方向键浏览已输入命令(历史命令)历史命令的查看$history用户命令历史保存文件~/.bash_history命令历史的清除$history-cBash的命令别名功能命令别名的显示$alias命令别名的定义$aliasgrep='grep-i'命令别名的取消$aliasgrep$unalias-a系统别名定义文件RHEL4系统中为用户预定义的命令别名保存在“/etc/profile.d/”目录的配置文件中阶段总结Shell的发展与类型BshCshKshBashShell变量类型环境变量、预定义变量、位置变量、用户自定义变量Bash的主要功能命令行编辑命令补全命令历史命令别名阶段练习查看系统中的环境变量练习使用命令补全功能进入如下目录:/etc/sysconfig/network-scripts/管道与重定向标准输入输出重定向操作管道操作标准输入输出输入输出文件文件编号默认设备标准输入0键盘标准输出1显示器标准错误输出2显示器演示演示标准错误输出重定向操作类别操作符说明输入重定向输入重定向是将命令中接收输入的途径由默认的键盘更改(重定向)为指定的文件输出重定向将命令的执行结果重定向输出到指定的文件中,命令进行输出重定向后执行结果将不显示在屏幕上将命令执行的结果重定向并追加到指定文件的末尾保存错误重定向2清空指定文件的内容,并保存标准错误输出的内容到指定文件中2向指定文件中追加命令的错误输出,而不覆盖文件中的原有内容输出与错误组合重定向&将标准输出与错误输出的内容全部重定向到指定文件演示演示重定向操作输出重定向实例将命令输出重定向到文件将标准输出重定向到文件$ls/etc/etcdir将标准输出重定向追加到文件$ls/etc/sysconfig/etcdir将错误输出重定向到文件$nocmd2errfile将标准输出和错误输出重定向到文件$lsafilebfile&errfile管道的使用管道操作符|“|”符用于连接左右两个命令,将“|”左边的命令执行结果(输出)作为“|”右边命令的输入cmd1|cmd2在同一条命令中可以使用多个“|”符连接多条命令cmd1|cmd2|...|cmdn演示演示管道的使用Shell脚本Shell脚本的概念基本的脚本编程运行脚本程序Shell脚本的概念Shell脚本程序是Shell命令语句的集合,用于实现特定的功能;Shell脚本程序保存在文本文件中,可以使用文本处理程序进行阅读和编辑;Shell脚本程序是由Shell环境解释执行的,不需要在执行前进行编译;执行Shell程序时,Shell脚本文件需要具有可执行(x)的属性演示演示查看Linux系统脚本基本脚本编程使用文本编辑器(vi)建立Shell脚本文件脚本中应包括的内容脚本运行环境设置#!/bin/bash注释行以#开始#Cleancommandhistory,清除用户命令历史脚本语句history-c设置脚本文件为可执行运行脚本程序使用Shell命令程序执行脚本程序$bashhello.sh使用“.”命令执行脚本程序$.hello.sh直接执行具有执行属性的脚本程序$./hello.sh条件测试使用test命令语法:使用括号[]语法:条件表达式的值为真返回零,为假时返回非零值test条件表达式[条件表达式]流程控制ifthenelse语句语法if[条件语句1]then命令elif[条件语句2]then命令else命令fi条件1为真条件1为假条件2为真条件2为假流程控制(Cont.)for循环语法for变量名in列表do命令done流程控制(Cont.)until循环语法until条件do命令done流程控制(Cont.)while循环语法while条件do命令done流程控制(Cont.)case语句语法case值in模式1)命令1;;模式2)命令2;;模式3)命令3;;esac函数函数定义函数调用函数导出函数名(){命令}阶段总结输入输出文件标准输入、标准输出、标准错误重定向符号22&管道符|Shell脚本的组成脚本运行环境设置注释行脚本语句阶段练习将ls命令多次执行的输出结果都重定向到文件ls.log中保存编写并执行Shell脚本用于显示位置变量的值本章总结Shell的使用Shell环境Shell的产生与发展Bash的主要功能Bash常用功能命令行编辑功能命令行补全功能命令历史与命令重复Shell变量Shell脚本命令别名标准输入输出重定向管道与重定向管道Shell脚本概念基本脚本编程脚本运行BshCshKshBash命令编辑、补全、历史、别名等环境变量、预定义变量、位置变量、自定义变量使用编辑键对命令进行输入编辑使用Tab键对命令名和文件名进行补全上下方向键浏览历史命令,history命令显示历史命令alias定义命令别名unalias取消命令别名定义标准输入、标准输出、标准错误输入重定向、输出重定向、错误重定向使用管道连接多条命令执行执行命令的集合,保存在文件中可重复执行脚本运行环境设置、注释行、执行语句三种脚本运行方式脚本文件的可执行属性实验任务1:使用历史命令和管道提示1在输入命令时,可先使用上下方向键查找历史命令中与要执行命令类似的命令,然后使用命令行编辑功能对命令进行编辑,这样可以快速输入命令任务2:Shell脚本的编写提示1在脚本文件保存后,需要设置脚本文件具有执行属性,才能执行脚本文件