BENET3.0第二学期课程第三章编写Shell管理脚本(一)——理论部分本资料由-大学生创业|创业|创业网提供资料在线代理|网页代理|代理网页|减肥药排行榜|淘宝最好的减肥药|什么减肥药效果最好|减肥瘦身药|课程回顾如何使系统开机后默认进入字符模式?如何禁止bluetooth等服务开机后自动运行?如何查看、终止系统中的进程?使用at、crontab计划任务的区别是什么?crontab的配置记录由哪几部分组成?本资料由-大学生创业|创业|创业网提供资料在线代理|网页代理|代理网页|减肥药排行榜|淘宝最好的减肥药|什么减肥药效果最好|减肥瘦身药|脚本本资料由-大学生创业|创业|创业网提供资料在线代理|网页代理|代理网页|减肥药排行榜|淘宝最好的减肥药|什么减肥药效果最好|减肥瘦身药|管理脚本(一)Shell变量应用编写并执行Shell脚本用户自定义变量环境变量位置变量、预定义变量Shell脚本应用实例执行Shell脚本5Shell的作用及常见种类Shell的作用——命令解释器,“翻译官”介于操作系统内核与用户之间,负责解释命令行Shell计算机用户应用程序Linux内核输入输入控制控制系统硬件输出输出6Shell的作用及常见种类KshBshCshBashZsh兼具Bsh的语法和Csh的交互特性70年代中期诞生于贝尔实验室,有较强的脚本编程功能80年代早期诞生于加利福尼亚大学,使用C语言风格,命令交互方便Bsh的升级版,Linux系统中的默认Shell兼具各种Shell程序优点,交互式操作效率更高7[root@localhost~]#cat/etc/shells/bin/sh/bin/bash/sbin/nologin/bin/tcsh/bin/csh/bin/ksh如何切换Shell环境临时切换:直接执行其他Shell程序,例如ksh、zsh等更改用户登录Shell:需修改/etc/passwd文件中用户记录的最后一个字段或执行:usermod-sShell程序路径用户名Shell环境的切换登录Shell指用户每次登录系统后自动加载的Shell程序,大多数Linux系统采用/bin/bash作为默认登录Shell/etc/shells文件记录了系统支持的有效登录Shell教员演示操作过程8Bash的常用功能Tab键自动补齐命令编辑快捷键命令历史命令别名标准输入输出重定向操作管道操作9Bash的命令历史命令历史保存用户曾经执行过的命令操作存放位置:~/.bash_history文件查看历史命令使用↑、↓按键逐条翻看,允许编辑并重复执行执行:history清除历史命令执行:history-c[root@localhostroot]#history……556useraddjerry557passwdjerry558crontab-e-ujerry559crontab-l-ujerry10Bash的命令历史调用历史命令!n:执行历史记录中的第n条命令!str:执行历史记录中以“str”开头的命令设置记录历史命令的条数修改HISTSIZE参数(默认为1000条)[root@localhostroot]#!562crontab-l-ujerrynocrontabforjerry[root@localhost~]#vi/etc/profileHISTSIZE=20011Bash的命令别名命令别名为使用频率较高的复杂命令行设置简短的调用名称存放位置:~/.bashrc查看命令别名格式:alias[别名]设置命令别名执行:alias别名='实际执行的命令'取消已设置的命令别名格式:unalias别名unalias-a[root@localhost~]#aliasaliascp='cp-i'aliasl.='ls-d.*--color=tty'aliasll='ls-l--color=tty'aliasls='ls--color=tty'aliasmv='mv-i'aliasrm='rm-i'……12Bash的标准输入输出交互式硬件设备标准输入:从该设备接收用户输入的数据标准输出:通过该设备向用户输出数据标准错误:通过该设备报告执行出错信息类型设备文件文件描述编号默认设备标准输入/dev/stdin0键盘标准输出/dev/stdout1显示器标准错误输出/dev/stderr2显示器13Bash的重定向操作改变标准输入、标准输出、标准错误的方向类型操作符用途重定向标准输入将命令中接收输入的途径由默认的键盘更改为指定的文件重定向标准输出将命令的执行结果输出到指定的文件中,而不是直接显示在屏幕上将命令执行的结果追加输出到指定文件重定向标准错误2清空指定文件的内容,并将标准错误信息保存到该文件中2将标准错误信息追加输出到指定的文件中重定向标准输出和标准错误&将标准输出、标准错误的内容全部保存到指定的文件中,而不是直接显示在屏幕上教员演示操作过程14Bash的管道操作管道操作符号“|”连接左右两个命令,将左侧的命令输出的结果,作为右侧命令的输入(处理对象)格式:cmd1|cmd2[...|cmdn][root@localhost~]#free-m|head-2totalusedfreesharedbufferscachedMem:503339163087199[root@localhost~]#free-m|grepMem|awk'{print$2,$4}'503163awk,以空格或制表位为分隔,输出指定第n列数据15Shell变量的应用Shell变量为灵活管理Linux系统提供特定参数,有两层意思:变量名:使用固定的名称,由系统预设或用户定义变量值:能够根据用户设置、系统环境变化而变化Shell变量的种类用户自定义变量:由用户自己定义、修改和使用环境变量:由系统维护,用于设置用户的Shell工作环境,只有极少数的变量用户可以修改预定义变量:Bash预定义的特殊变量,不能直接修改位置变量:通过命令行给程序传递执行参数16变量的赋值与引用定义新的变量变量名要以英文字母或下划线开头,区分大小写格式:变量名=变量值查看变量的值格式:echo$变量名[root@localhost~]#DAY=Sunday[root@localhost~]#echo$DAYSunday通过$符号引用指定名称的变量值17变量的赋值与引用从键盘输入内容为变量赋值格式:read[-p信息]变量名结合不同的引号为变量赋值双引号“”:允许通过$符号引用其他变量值单引号‘’:禁止引用其他变量值,$视为普通字符反撇号``:将命令执行的结果输出给变量教员演示操作过程18变量的赋值与引用设置变量的作用范围格式:export变量名...export变量名=变量值[...变量名n=变量值n]清除用户定义的变量格式:unset变量名[root@localhost~]#echo$FILESVRfilesvr.benet.com[root@localhost~]#exportFILESVR[root@localhost~]#zsh[root@localhost]~#echo$FILESVRfilesvr.benet.com[root@localhost]~#exit[root@localhostroot]#unsetFILESVR[root@localhostroot]#echo$_abc[root@localhostroot]#输出为全局变量清除该变量内容19数值变量的运算计算整数表达式的运算结果格式:expr变量1运算符变量2...[运算符变量n]expr的常用运算符加法运算:+减法运算:-乘法运算:\*除法运算:/求模(取余)运算:%教员演示操作过程20环境变量环境变量配置文件全局配置文件:/etc/profile用户配置文件:~/.bash_profile查看环境变量set命令可以查看所有的Shell变量,其中包括环境变量[root@localhostroot]#set……SHELL=/bin/bashTERM=xtermUID=0USER=rootconsoletype=pty21[root@localhost~]#echo$PATH/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin[root@localhost~]#PATH=/opt/bin:$PATH[root@localhost~]#echo$PATH/opt/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin环境变量常见的环境变量:$USER、$LOGNAME$UID、$SHELL、$HOME$PWD、$PATH$PS1、$PS222[root@localhost~]#./exam01onetwothreefourfivesix位置变量表示为$n,n为1~9之间的数字$1,第1个位置参数$2,第2个位置参数$6,第6个位置参数23预定义变量表示形式如下$#:命令行中位置参数的个数$*:所有位置参数的内容$?:上一条命令执行后返回的状态,当返回状态值为0时表示执行正常,非0值表示执行异常或出错$$:当前所在进程的进程号$!:后台运行的最后一个进程号$0:当前执行的进程/程序名[root@localhost~]#bash[root@localhost~]#echo$0$$bash5887[root@localhost~]#exxitbash:exxit:commandnotfound[root@localhost~]#echo$?127[root@localhost~]#exitexit[root@localhost~]#echo$?0查看当前所执行进程的名称、PID号执行一条错误命令返回非0值,表示上一条命令异常返回0值,表示上一条命令正常24小结请思考:RHEL5系统中默认使用哪种Shell?如何更改用户的登录Shell?在Shell的变量应用中,三种引号的作用有何区别?环境变量PWD的作用是什么,如何查看该变量的值?变量A的值为13,B的值为17,如何计算其乘积?位置变量$1~$9的作用是什么?25Shell脚本的概念Shell脚本用途:完成特定的、较复杂的系统管理任务格式:集中保存多条Linux命令,普通文本文件执行方式:按照预设的顺序依次解释执行26编写可执行的Shell脚本建立包含执行语句的脚本文件脚本文件中包括的内容运行环境设置:#!/bin/bash注释信息:以#开始的说明性文字可执行的Linux命令行为脚本文件添加可执行权限[root@localhost~]#virepboot.sh#!/bin/bash#Toshowusageof/bootdirectoryandmodeofkernelfile.echoUseageof/boot:du-sh/bootechoThemodeofkernelfile:ls-lh/bo