第八章shell编程PPT文件格式下载.pptx
《第八章shell编程PPT文件格式下载.pptx》由会员分享,可在线阅读,更多相关《第八章shell编程PPT文件格式下载.pptx(46页珍藏版)》请在冰豆网上搜索。
向上移动10行,5h:
向左移动5个字符插入或添加i:
光标前插入字符,a:
光标后插入字符,o:
当前行后添加新行。
删除x:
删光标后的字符,X:
删光标前的字符,D:
删除光标后的整行。
8.1vi编辑器行编辑命令保存,退出保存:
w,退出:
q,强制退出:
q!
,保存并退出:
wq执行shell命令挂载U盘:
!
mount/dev/sdb1/mnt/usb从文件中读取rfile_name将指定内容写入文件将第3行至10行内容写到另一个文件中:
3,10wfile_name8.1vi编辑器实验8(A)vi编辑器的使用实验目的掌握编辑器vi的基本用法练习三种模式的切换练习光标定位,删除,插入练习行命令模式下读入,写入,执行shell实验方法(可将/etc/a2ps.cfg复制到/mnt进行编辑测试)实验原理实验步骤实验报告记录下每一步骤的过程,包括所有改的信息、遇到的问题和解决方法等。
概念Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。
它接收用户输入的命令并把它送入内核去执行。
实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。
不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。
Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。
8.2shell概述shell有两种执行指令的方式,一种方法是用户事先编写一个sh脚本文件,内含shell脚本,而后使用shell程序执行该脚本,这种方式,我们习惯称为shell编程。
第二种形式,则是用户直接在shell界面上执行shell命令,由于shell界面的关系,大家都习惯一行行的书写,很少写出成套的程序来一起执行,所以也称命令行。
8.2shell概述1命令行解释;
过滤去除多余的空格、Tab、换行符2保留字;
shell编程中的关键字,do、done、for、if、then等3通配符;
*,?
,.,-,!
ls*列出当前目录下的所有文件、目录及该目录中的文件,文件名以.开头的隐含文件除外,因为*不匹配这类字符串。
lsz?
txt列出当前目录下以z字符开始、以txt字符串结束,中间为任意两个字符的所有文件,如z0.txt、z1.txt等等。
lsa.c*列出当前目录下所有以a或c字符开头的文件、目录及该目录中的文件。
该命令实际上与lsa,c*命令等价。
ls!
a-t*列出当前目录下所有不以a到t字符开头的文件、目录及该目录中的文件。
4访问和处理程序及命令;
8.3shell的功能5文件处理:
输入/出重定向和管道;
1管道符|管道符“|”使你可以将一个命令的输出作为另一个命令的输入。
参考示例:
ls|grepzxj执行该命令时,shell将首先执行ls命令,并将ls的输出传递给grep命令,由于grep命令的功能是查找内容包含指定表达式或字符串(zxj)的文件,因此、这个包含管道符的命令将显示出当前目录中所有文件名包含zxj字符串的文件。
2输入重定向符输入重定向符的功能是使命令从给定的文件中读取数据。
wcl输出重定向符的功能是使命令的输出存入指定的文件。
whouserlog把命令who的输出重定向到文件userlog中。
4输出附加重定向符输出附加重定向符的功能是将命令输出的内容附加到指定文件的末尾。
lsfilelist把当前目录中的文件、目录名附(添)加到文件filelist的末尾。
8.3shell的功能6命令组合;
表示按顺序执行命令;
&
表示根据条件(true)执行其后面的命令;
|表示根据条件(false)执行其后面的命令;
表示该符号前面的命令在后台执行。
参考示例1:
rootlocalhostbin#ls;
who;
ps该命令组合表示三个命令顺序执行,等价于分别执行三条命令。
参考示例2:
rootlocalhostbin#ls*.txt&
rmf*.txt该命令组合表示如果在当前目录下找到.txt(备份)文件,则强制删除之;
如果找不到这些文件,则删除命令不会执行。
参考示例3:
rootlocalhostbin#cd/root;
lsl;
rootlocalhostroot#该命令表由当前shell执行,先进入/root目录,然后执行lsl命令,命令表执行完毕后当前目录已经改变为root目录。
8.3shell的功能7命令替换命令的替换是将一个命令的输出作为另外一个命令的参数,而不是作为另外一个命令的输入;
这是与重定向不同的地方。
使用格式:
command1command2arguments参考示例:
rootlocalhostroot#cpls*.txtzxj先列出当前目录下所有.txt文件并将它们作为cp命令的参数之一(源文件),复制到当前目录下名为zxj的目标目录中。
8变量维护;
9环境设置;
10shell编程8.3shell的功能实验8(B)熟悉shell常用功能实验目的理解shell的概念练习通配符功能练习输入输出和重定向和管道功能练习命令组合功能练习命令替换功能实验方法(测试练习书中参考示例)实验原理实验步骤实验报告记录下每一步骤的过程,包括所有改的信息、遇到的问题和解决方法等。
Bash特色1.命令行自动补齐按键2.命令历史记录上下方向键3.为命令起别名4.系统提示符5.设置功能键8.4常用shell8.5.1shell程序的基本结构1.命令语句:
shell命令,赋值,输出等2.流程控制语句:
if,while,for等3.注释语句:
#开头为使程序兼容性高,一般在开头加#!
/bin/sh-一般将程序存放在用户目录下的bin文件夹下,例如/root/bin8.5shell程序设计8.5.2shell程序的编辑与运行1.编辑常用vi编辑2.运行方式一:
a.现将shell文件权限设置为可执行:
chmod+xfilenameb.在当前目录下输入./filename,按回车即可执行方式二:
在当前目录下直接输入:
shfilename,按回车即可执行8.5shell程序设计8.5.3shell命令的构成在本小节开始部分,我们讲过shell程序的语句可以是Shell命令,而命令的构成又可以分为简单命令、命令和命令清单。
它们既可以用在命令行方式下从键盘直接输入又可以用在shell程序中。
1简单命令这种命令实际上就是单个可执行文件的名称和参数,在这种命令中可以使用输入、输出的重定向功能。
2命令由简单命令和shell控制命令组合而成。
命令实际上是将简单命令用某种方式将输入、输出连接起来,大多数情况是使用管道。
Shell将分别创建进程去处理管道前后的命令。
这种命令的返回码是管道中最后一个被执行的简单命令的返回码。
rootlocalhostroot#ls|wcl8.5shell程序设计8.5.3shell命令的构成3命令清单这种特殊的清单是由分号(;
)、与号(&
)、and-if(&
)号、or-if(|)号分隔的一个或多个命令列表。
(1)分号分隔的各个命令,shell将按先后顺序执行。
这种有先后顺序的执行方式称为异步执行方式。
(2)shell将把与号(&
)前面的那条命令在后台执行。
(3)&
号的语法格式为:
命令1&
命令2&
命令n&
前的命令执行成功后才执行&
后面的命令(4)|号的语法格式为:
命令1|命令2|命令n|前的命令执行不成功后才执行|后面的命令8.5shell程序设计8.5.4变量1.用户变量与赋值在shell程序中,你可以将任何一个无空格的字符串作为一个用户变量,而且不必预先声明就可以用等号对用户变量赋值,但是有两点需要注意(bash下):
第一,在等号前后均不能有空格。
第二,当需要将一个包含空格的字符串赋给用户变量时,应用单引号将该字符串括起来。
OS=LinuxProgrammer=zhangxiaojinNumber=158.5shell程序设计8.5.4变量1.用户变量与赋值shell还提供了另外两种赋值方式。
第一,从标准输入设备读入用户变量的值。
这是由read命令来实现的。
具体用法为:
read用户变量名当shell程序执行到该行时,将等待用户从键盘输入,当用户按下回车键时shell把你输入的内容赋给用户变量。
第二,将一个命令执行后输出的内容赋给指定的变量。
用户变量=命令8.5shell程序设计8.5.4变量2.引用变量与echo命令在shell语言中,对所有的变量(用户变量、环境变量、位置变量、内部变量)的引用方法都是一样的,只要在变量前加“$”符号就意味着是引用变量。
如果要在屏幕上显示字符、字符串或变量的内容,则可以使用echo命令。
8.5shell程序设计8.5.4变量3.环境变量与设置环境变量是用户环境变量的简称。
前面我们讲到的HOME、PATH、HISTSIZE、PS1和PS2等都是常常用到的环境变量,查看所有的环境变量可以用set命令。
输入命令:
echo$PATH输出结果:
PATH=/usr/kerberos/sbin:
/usr/kerberos/bin:
/zxj:
/usr/local/sbin:
/usr/local/bin:
/sbin:
/bin:
/usr/sbin:
/usr/bin:
/usr/X11R6/bin:
/root/bin下面两条命令的区别:
输入:
PATH=/root/xj输入:
PATH=echo$PATH:
/root/xj8.5shell程序设计8.5.4变量4.位置变量与相关命令在shell中有一种特殊的变量,称为位置变量。
位置变量用于存放那些传递给命令行上shell程序或shell脚本函数的参数。
这些变量是数字0到9,shell将命令行中的参数依次赋给变量1、2、9,将命令(程序)名赋给变量0。
这种位置变量的功能与MS-DOS操作系统中的位置变量的功能是类似的。
用户不能简单地用等号给它们赋值,但是可以用set命令来赋值。
假设某个shell程序名为test,执行带3个参数,则shell解释执行时位置变量0的内容为test,位置变量1的内容为参数1,依此类推。
shift命令shift命令的功能是使第一个命令行参数无效,并将位置变量2的值移给位置变量1,将位置变量3的值移给位置变量2,将位置变量10的值移给位置变量9。
该命令不会改变位置变量0的值。
8.4shell程序设计编写的程序名为testshift,程序内容为:
echo$1$2$3shiftecho$1$2$3shiftecho$1$2$3rootlocalhostroot#testshiftXYZ显示结果为:
XYZYZZ8.5.4变量4.位置变量与