SHELL编程模块课程目标
① Shell的基本语法结构
如:变量定义、条件判断、循环语句(for、until、while)、分支语句、函数和数组等;
② 基本正则表达式的运用;
③ 文件处理三剑客:grep、sed、awk工具的使用;
④ 使用shell脚本完成一些较复杂的任务,如:服务搭建、批量处理等。
一、SHELL介绍
前言:
计算机只能认识(识别)机器语言(0和1),如(11000000 这种)。但是,我们的程序猿们不能直接去写01这样的代码,所以,要想将程序猿所开发的代码在计算机上运行,就必须找"人"(工具)来翻译成机器语言,这个"人"(工具)就是我们常常所说的**编译器或者解释器**。
##1. 编程语言分类
编译型语言:
程序在执行之前需要一个专门的编译过程,把程序编译成为机器语言文件,运行时不需要重新翻译,直接使用编译的结果就行了。程序执行效率高,依赖编译器,跨平台性差些。如C、C++
解释型语言:
程序不需要编译,程序在运行时由**解释器**翻译成机器语言,每执行一次都要翻译一次。因此效率比较低。比如Python/JavaScript/ Perl /ruby/Shell等都是解释型语言。
总结
编译型语言比解释型语言速度较快,但是不如解释型语言跨平台性好。如果做底层开发或者大型应用程序或者操作系开发一般都用编译型语言;如果是一些服务器脚本及一些辅助的接口,对速度要求不高、对各个平台的兼容性有要求的话则一般都用解释型语言。
总结:
shell就是人机交互的一个桥梁
shell的种类
[root~]#cat/etc/shells/bin/sh#是bash的一个快捷方式/bin/bash#bash是大多数Linux默认的shell,包含的功能几乎可以涵盖shell所有的功能/sbin/nologin#表示非交互,不能登录操作系统/bin/dash#小巧,高效,功能相比少一些/bin/csh#具有C语言风格的一种shell,具有许多特性,但也有一些缺陷/bin/tcsh#是csh的增强版,完全兼容csh
思考:终端和shell有什么关系?
㈠ 什么是shell脚本?
一句话概括
简单来说就是将需要执行的命令保存到文本中,按照顺序执行。它是解释型的,意味着不需要编译。
准确叙述
若干命令 + 脚本的基本格式 + 脚本特定语法 + 思想= shell脚本
㈡ 什么时候用到脚本?
重复化、复杂化的工作,通过把工作的命令写成脚本,以后仅仅需要执行脚本就能完成这些工作。
㈢ shell脚本能干啥?
①自动化软件部署 LAMP/LNMP/Tomcat…
②自动化管理 系统初始化脚本、批量更改主机密码、推送公钥…
③自动化分析处理 统计网站访问量
④自动化备份 数据库备份、日志转储…
⑤自动化监控脚本
㈣ 如何学习shell脚本?
尽可能记忆更多的命令(记忆命令使用功能和场景)
掌握脚本的标准的格式(指定魔法字节、使用标准的执行方式运行脚本)
必须==熟悉掌握==脚本的基本语法(重点)
㈤ 学习shell脚本的秘诀
多看(看懂)——>模仿(多练)——>多思考(多写)
㈥ shell脚本的基本写法
1)脚本第一行,魔法字符==#!==指定解释器【必写】
#!/bin/bash 表示以下内容使用bash解释器解析
注意:
如果直接将解释器路径写死在脚本里,可能在某些系统就会存在找不到解释器的兼容性问题,所以可以使用:#!/bin/env 解释器
2)脚本第二部分,注释(#号)说明,对脚本的基本信息进行描述【可选】
#!/bin/envbash#以下内容是对脚本的基本信息的描述#Name: 名字#Desc:描述describe#Path:存放路径#Usage:用法#Update:更新时间#下面就是脚本的具体内容commands...
3)脚本第三部分,脚本要实现的具体代码内容
㈦ shell脚本的执行方法
标准脚本执行方法(建议)
1) 编写人生第一个shell脚本[rootshell01]#catfirst_shell.sh#!/bin/envbash#以下内容是对脚本的基本信息的描述#Name: first_shell.sh#Desc: num1#Path: /shell01/first_shell.sh#Usage:/shell01/first_shell.sh#Update:2019-05-05echo"hello world"echo"hello world"echo"hello world"2) 脚本增加可执行权限[rootshell01]#chmod+xfirst_shell.sh3) 标准方式执行脚本[rootshell01]#pwd/shell01[rootshell01]#/shell01/first_shell.sh或者[rootshell01]# ./first_shell.sh注意:标准执行方式脚本必须要有可执行权限。
非标准的执行方法(不建议)
直接在命令行指定解释器执行
[rootshell01]#bashfirst_shell.sh[rootshell01]#shfirst_shell.sh[rootshell01]#bash-xfirst_shell.sh+echo'hello world'helloworld+echo'hello world'helloworld+echo'hello world'helloworld-x:一般用于排错,查看脚本的执行过程-n:用来查看脚本的语法是否有问题
使用source命令读取脚本文件,执行文件里的代码
[rootshell01]#sourcefirst_shell.shhelloworldhelloworldhelloworld
**小试牛刀:**写一个木有灵魂的脚本,要求如下:
删除/tmp/目录下的所有文件
然后在/tmp目录里创建3个目录,分别是dir1~dir3
拷贝/etc/hosts文件到刚创建的dir1目录里
最后打印"报告首长,任务已于2019-05-05 10:10:10时间完成"内容
echo "报告首长,任务已于$(date +'%F %T')"