shell脚本入门教程

上传人:aa****6 文档编号:54806422 上传时间:2018-09-19 格式:PPT 页数:49 大小:728.50KB
返回 下载 相关 举报
shell脚本入门教程_第1页
第1页 / 共49页
shell脚本入门教程_第2页
第2页 / 共49页
shell脚本入门教程_第3页
第3页 / 共49页
shell脚本入门教程_第4页
第4页 / 共49页
shell脚本入门教程_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《shell脚本入门教程》由会员分享,可在线阅读,更多相关《shell脚本入门教程(49页珍藏版)》请在金锄头文库上搜索。

1、Shell脚本入门,正则表达式,背景:linux shell下用于文件查找的通配符如*和?等。如查找某个目录下的所有的C源代码的话,你会搜索*.c。在这里,*会被解释成任意的字符串。和通配符类似,正则表达式也是用来进行文本匹配的工具,只不过比起通配符,它能更精确地描述你的需求。在脚本语言中有着广泛的使用。linux中的文本处理命令vim、grep、sed、awk也使用正则表达式。 我们以linux下用grep中查找字符串的方式介绍正则表达式的使用。 grep默认支持的基础正则表达式,正则表达式,使用扩展的正则表示法,可以使用 grep E或egrep 练习: 匹配一个C语言变量名:C语言规定变

2、量名称只能由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线 匹配一个整数:整数可以是负数,可以为0,但不可以为0开头的数串如01,012等匹配变量名:a-zA-Z_a-zA-Z_0-9*$ 匹配整数:-?(0|1-90-9*)$,什么是shell?,命令解释器俗称外壳程序 用户通过shell向kernel发送指令,kernel再向硬件发送指令 Shell版本众多,例如常听到的 Bourne Shell (sh) 、在Sun中默认的C Shell、 商业上常用的K SHell以及TCSH 等,每一种Shell都各有其特点。 Linux 使用的是Bourne Again Shell

3、(简称 bash),这个 Shell是Bourne Shell的增强版本,是基于GNU的架构下发展出来的。,编译型语言和脚本编程语言,许多大中型程序是用编译型语言写的,例如:C/C+/java。这类程序只要从源代码转换成目标代码,就能直接在计算机上执行。(java类似。它是转换成字节码,在java虚拟机上执行) 编译型语言的好处是效率高,它的二进制代码可直接被cpu执行。缺点是它们直接处理的是字节、整数、浮点数等机器层的对象。例如,C+很难进行“将一个目录内的所有文件复制到另一个目录”这样简单的操作。 脚本编程语言通常是解释型的语言,这类程序的执行是由解释器读入程序代码,并将其转换成内部的形式

4、,再执行。这类语言有awk、perl、python、javascript、Ruby和shell。用脚本编程语言写的程序代码,称为脚本程序。 脚本编程语言的好处是,它多半运行在比编译器还高的层级,能轻易处理文件和目录之类的对象。缺点是:它的效率通常不如编译型语言高。它们并不能直接被cpu执行,执行时还需要进行转换。,SHELL脚本的优点,shell脚本常用于系统管理工作,或是结合现有的程序以完成小型的、特定的工作。通过把工作用到的命令串起来,放进一个独立的脚本中,以后只要执行该程序就能完成工作了。 shell是各类unix版本的通用功能,且经过了POSIX的标准化。一个编写良好的shell脚本,

5、可以应用到多个系统上。因此之所以使用shell脚本是基于: 简单性:shell是一个高级语言;通过它可以简洁地表达复杂的操作。 可移植性:使用POSIX所定义的功能,可以做到脚本无需修改就可在不同的类unix系统上运行。 开发容易:可以在较短时间内完成一个功能强大又好用的脚本。,SHELL脚本的格式,命令从上向下,从左向右 地分析和执行,如果读到一个 回车键,就尝试开始执行该行。 右图是一个shell脚本第一行#!/bin/bash指明这个 脚本使用的解释器是bash,脚本 的语法是用bash的语法。例如perl脚本的第一行是#!/usr/bin/perl shell脚本用#号作为一行注释开始

6、。#到行尾之间的内容被视为注释 接下来就是程序部分 告知执行的成功与否可以用命令exit 来结束脚本的执行,并且传回一个数值给系统。将来可以用$?来获取它传回的值。,rootlocalhost # cat helloworld.sh #!/bin/bash #my first shell script #history: 2012.01.01 echo “hello world” exit 0,Shell脚本执行方式一,父进程创建一个子进程,在子进程里运行命令解释器,由解释器读取脚本并执行相应的功能。 假设写完一个脚本文件/home/jim/123.sh后,该如何执行呢? 有以下几种方式: 以

7、bash进程来执行:通过“bash 123.sh” 来执行。 直接命令执行:123.sh文件必须要具备可读与可执行权限: 绝对路径:使用/home/jim/123.sh来执行命令; 相对路径:假设工作目录在/home/jim/,这可以使用./123.sh来执行; 变量“PATH”功能:将123.sh放在PATH指定的目录下,例如:放在/bin/里,则可直接通过文件名123.sh来执行。,Bash shell特点,命令记忆能力 Linux可以记忆以前输入过的命令,只要使用上下键就可以找到以前执行的指令来执行。 这些命令按照先后顺序记录在用户Home目录下的隐藏文件.bash_history中 .

8、bash_history里面记录了这一次登录以前执行过的命令,本次登录执行的命令都保存在内存中,只有成功注销之后,内存数据才会刷新到.bash_history文件中 有时候.bash_history文件中记录了你包含在指令中的密码,可能引起安全问题,所以最好还是设置命令的记录数量不要太大。,Bash shell特点,命令补全补全功能 如果在执行命令的时候不想按下太多的按键(例如命令pcprofiledump),在输入了 pcprofile 之后,再按下 Tab 键的话,那么 bash 马上会自动的将后面的dump接上来。 如果有重复的命令,那么按下两次 Tab 将会把所有重复的命令列出来。 直

9、接在提示字符后面连按两次 键,则系统会将所有可以使用的命令都列出来。 例如,如果想要知道目前系统里面,所有以b开头的命令呢?就是按下 b 之后,连按两次就ok。,Bash shell特点,文件名称补全功能 如果用 vim 来读取某个文件,例如 /etc/man.config 这个文件,那么可以输入 vim /etc/man之后,直接按下 键,该文件名称就会被自动的补上。 同样,出现文件多个匹配项时,可以按下两个TAB键来显示所有匹配项。 这样大大增加了指令输入的正确率。,Bash shell特点,命令别名设置功能 假如我需要知道某个目录底下的所有文件信息(包含隐藏文件)及所有的文件属性,那么我

10、就必须要输入ls -al 这样的指令。 每次都输入多麻烦! 可以通过为自己经常使用的命令(包括参数)定义别名来避免过多输入。 例如:alias lm=ls -al (注意=两边不要有空格) 那么以后lm就等于执行ls -al 直接输入alias,可以显示目前以及定义好的所有别名,Shell环境变量,环境变量的形式通常如:name=value Linux内核并不查看这些字符串,他们的解释完全依赖于各个应用程序。例如,shell就使用了大量的环境变量,其中一些在登录时自动设置,如HOME和USER等,有些则由用户设置。 我们在shell中设置环境变量以控制shell的动作。例如设置了MAIL就告诉

11、shell应该到哪里去取邮件。 显示变量值的命令:echo 用法:echo $variable 例如:在环境变量前加上$就代表使用该变量的值echo $PATHecho $HOME 查看当前所有Linux环境变量的命令:env,Shell配置文件,shell在启动时会读取一些配置文件。下面是bash的配置文件,实际上他们也是shell脚本。/etc目录下的是系统级的配置文件,用户家目录下的两个配置文件是用户的个性化。 /etc/profile 设置系统级的环境变量 PATH、HOME、HISTSIZE等。第一次登录时运行该脚本。 /.bash_profile 用户可在这里设置环境变量或启动程序

12、。当用户登录时,该文件仅仅执行一次 。 /.bashrc 用户可在这里设定别名和函数。启动shell时都会执行该配置文件。 /etc/bashrc 启动shell时运行该脚本。 /.bash_logout 退出shell时执行。,根据启动shell的方式不同,配置好脚本的执行也有不同: 对于login shell:即通过输入用户名和密码登陆或用su - 获得的shell。在shell启动时会按14的顺序依次执行这四个配置脚本。这时获得的是一个完全和用户名相符的shell环境。 对于non-login shell:不需登录流程或以su的方式切换用户获得的shell。这种情况下,启动shell时只

13、执行和两个配置脚本。例如,图形界面下启动一个终端,或者在原来的bash环境下再输入bash,都不需要用户名和密码;这两次获得的shell就称为non-login shell。这时许多环境还未改变。比如PATH,因为它是在和中设置的。,Shell 历史命令,命令名称: history 用法:history number显示最近 number个命令,不指定number则选择全部。 执行历史命令: 方法1:!number 执行历史命令中编号为number的那个命令 方法2:!command 执行历史命令中最近一次以command开头的命令,命令无须打全,只要匹配前面几个字符即可。 方法3:! 执行上

14、一条命令,变量类型,变量是用一固定的字符串或符号来表示一个可变的值。和C语言中相似。有以下几种变量: 用户自定义变量 位置变量 预定义的特殊变量 环境变量(export),用户自定义变量,变量无须事先声明 变量的可以用字符(a-z A-z)数字和下划线组成,但必须以字符开头。 变量与变量内容(值)用等号连接,等号左右不能有空格,对变量赋值 #a=“hello shell” 打印变量 #echo $a,变量引用,$加变量名即可引用该变量的值。例如:$var 使用 可以使变量名和后续字母分开。例如:var=de$varabc的值为deabc$varabc是取变量varabc的值,若之前没有创建过v

15、arabc那么它的值为空 未定义的变量值为空,Shell变量赋值,双引号内的字符如 $ ” 等以特殊字符解读。 单引号内的特殊字符全部当做普通字符处理。,a=“aa” b=“$a bb” c=$a cc echo $a echo $b echo $c,Shell变量赋值,把命令的执行结果赋值给变量(例如ls),用command,或$(command) 注意:是反引号(backquote), 不是单引号(quote),将ls的输出结果作为变量a的值 #a=ls 等价于 a=$(ls) 打印变量 #echo $a,环境变量,环境变量是指能被子进程所继承的变量。子进程只会继承父进程的环境变量 (1)

16、HOME:用户主目录的全路径名。如/home/myname (2)LOGNAME:即用户注册名 (3)PWD:当前工作目录的路径。 (4)PATH:shell查找命令的路径(目录)列表,各个目录用冒号( : )隔开。 (5)PS1:shell的主提示符。 $ PS1=“$LOGNAME “ (6)SHELL:当前使用的shell。通常,它的值是/bin/bash。 (7)TERM:终端类型。 可以用env命令列出当前环境下的所有环境变量及其值,也可用echo命令察看任何一个环境变量的值。 当更改了环境变量的值以后,往往利用export命令将这些变量输出,使它们成为公用量。例如:$ export HOME PATH PS1 用户自定义变量可以通过export命令,变成环境变量。例如: # asdf=1234 执行env,查看是否有变量asdf # export asdf 执行env ,查看是否有变量asdf,这一次asdf变成环境变量,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号