190 likes | 468 Views
LINUX 服务器管理技术. 田 钧. 第 6 章 S hell. 授课内容 Shell 简介 Shell 功能 Shell 变量、命令 Shell 编程简介 授课目标 学会使用 shell 的功能及变量的设置. Shell 简介. 什么是 Shell Shell 是一个独立于 OS 的应用程序,是一个具有交互性的命令行解释器。 S hell 的作用 解释键入的命令以及执行的一些特定的功能,并传到内核执行。. shell. shell 是计算机用来解释你输入的命令然后决定进行何种处理的程序。 shell 也可以在非交互模式下调用。
E N D
LINUX 服务器管理技术 田 钧
第6章 Shell • 授课内容 • Shell简介 • Shell功能 • Shell变量、命令 • Shell编程简介 • 授课目标 • 学会使用shell的功能及变量的设置 2
Shell简介 • 什么是Shell Shell是一个独立于OS的应用程序,是一个具有交互性的命令行解释器。 • Shell的作用 解释键入的命令以及执行的一些特定的功能,并传到内核执行。 3
shell • shell 是计算机用来解释你输入的命令然后决定进行何种处理的程序。shell 也可以在非交互模式下调用。 • 在Linux系统下有几个不同的shell: • bash "Bourne Again" shell • sh Bourne shell,在很多UNIX下是标准的shell • csh C shell,和C语言语法相近,大部分UNIX下有效 • pdksh public domain Korn shell • tcsh 微型C shell, 在小的系统里经常使用 • 一般的Linux系统都将bash作为默认的shell • 查看你自己的shell类型: • echo $SHELL 4
Shell功能(一) • Shell功能: • shell程序的执行 首先给文件加执行权限(chmod +x filename) 1、用sh执行 (sh filename) 2、./ 执行 (./filename) • 变量的值的替换 可以用set命令查看和设置变量值 用unset命令去除变量值 • 命令的替换 可以用``反引号替换(echo `date`) 例: rm -i `find ./ -size 0` 5
Shell功能(二) • Shell功能: • 自动补齐(按TAB键) • 通配符(?、*、{}) 6
Shell功能(三) • I/O重定向和管道 输出重定向(>、>>、1>、2>、2&>1) eg: /usr/sbin/rndc stop >/dev/null 2>&1 输入重定向(<、<<) eg: makemap hash /etc/mail/access.db < /etc/mail/access.db 管道(|) eg:netstat -antp |more |grep http • 提供解释性的编程接口(包括测试、分支和循环) 7
Shell功能(四) • 进程的前后台切换执行 ctrl+z:将进程调到后台执行 fg %n:将后台进程调到前台执行 bg %n:进程保持在后台执行 jobs:查看后台进程的个数 8
Shell常用控制组合键 • Ctrl - C 中止目前的命令 • Ctrl - \ 同上 • Ctrl - D 输入结束, 即 EOF 之意 • Ctrl - Z 暂停目前的命令 • Ctrl - M 相当按 Enter • Ctrl - S 暂停萤幕输出 • Ctrl - Q 恢复萤幕输出 • Ctrl - U 将命令列整列删除 • Ctrl - ? 删除最後一个字元, 相当於按 Del 9
Shell编程简介 Shell除了是一个命令行解释器外,同时还是一个功能相当强大的编程语言,大多数Linux系统的启动文件(rc files)都是使用shell script • Shell 程序: • Shell程序是按照一定的规则包含UNIX系统命令的文件。 • 要执行Shell程序,文件的权限至少是r-x。 • 可以传递给程序的数据:环境变量,命令行变量和用户输入的变量(read命令)。 • 编程注意事项: • 建议加注释(#后面的内容为注释)。 • 不要生成文件名为test的Shell程序(test是Shell命令)。 • export命令的使用(本地变量-->环境变量)。 • 子程序不能修改它上一级进程的环境变量。即使它对这个环境变量再次赋值,但在它的上一级进程里将不会受到影响。 10
shell程序设计(基础部分) • shell可以用来进行程序设计,它提供了定义变量和参数的手段以及丰富的程序控制结构。使用shell编程类似于DOS中的批处理文件,被称为shell script • shell基本语法 • shell程序的变量和参数 • shell程序的流程控制 • Shell程序调试方法 11
shell基本语法 • 输入输出重定向 • “>”和“<” • “>>”和“<<” • 1>:正确重定向 • 2>:错误重定向 • 2>&1:正确和错误一起重定向 • Command > file • 管道pipe • command1| command2[| command3...] • 前台和后台 • “;”和“&” • 过滤grep • 在某个文件中找到你想要的内容 12
shell变量与参数 • shell定义的环境变量 shell在开始执行时就已经定义了一些和系统的工作环境有关的变量,这些变量用户还可以重新定义;用户可以用set、env命令查看 • $HOME 使用者自己的目录 • $PATH 执行命令时所搜寻的目录 • $TZ 时区 • $MAILCHECK 每隔多少秒检查是否有新的信件 • $PS1 在命令列时的提示号 • $PS2 当命令尚未打完时,Shell 要求再输入时的提示号 • $MANPATH man 指令的搜寻路径 13
shell变量与参数 • 预定义变量 • 预定义变量和环境变量相类似,也是在shell一开始时就定义了的变量,所不同的是,用户只能根据shell的定义来使用这些变量,而不能重定义它。所有预定义变量都是由$符和另一个符号组成的 • $0 这个程序的执行名字 • $n 这个程序的第n个参数值,n=1..9 • $* 这个程序的所有参数的内容 • $# 这个程序的参数个数 • $$ 这个程序的PID • $! 上一个后台程序的PID • $? 上一个指令的返回值 14
shell变量与参数 • 用户定义的变量 • 变量名=变量值 • kk=kiss • 查看变量值:echo “$kk” 15
shell特殊符号使用 • shell使用两种引号和反斜线 • 双引号“”(让引号内的变量生效) • 单引号‘’(引号内的变量当作一个字符使用) • 反斜线\(禁用特殊字符功能\$) • 后引号``(让引号内的命令生效) • var=hello • echo “var is $var” • echo ‘var is $var’ • echo “var is \$var” • echo `ls` • var2=date; echo `$var2` 16
shell编程的流程控制 • if条件语句 • case条件选择 • for循环 • while和until循环 • shift语句 • select语句 • goto跳转控制 • test测试命令 17
shell 函数 • shell语言使用户能够定义自己的函数 • 同用户在C语言或其他编程语言中定义的函数一样工作 • bash和pdksh支持函数,tcsh不支持函数 • 以下是bash中一个函数的语法格式: fname (){ shell commands } • 定义函数后,程序中调用该函数的格式(bash中): fname [parm1 parm2 parm3…] 调用函数时,可以向函数传递任意多个参数,函数将这些参数看做是存放其命令行参数的位置变量。 18
练习 1、shell流程控制。 2、函数调用。 19