shell
一:简介
shell相当于解释器,用于用户和内核之间的语言翻译
概念
将要执行的命令按顺序保存到另一个文本文件
给该文件可执行权限
可结合各种shell控制语句以完成更复杂的操作
应用场景
重复性操作
交互性任务
批量事务处理
服务运行状态监控
定时任务执行
缓冲与缓存的区别
缓冲用于写,缓存用于读
缓冲:减缓压力
A的速度是1000每秒,B的速度是500每秒,相当于A工作一秒B工作两秒有这一秒的时间差,则会影响A的工作效率。当有了缓冲区之后,A把已完成的工作送到缓冲区,这样A、B双方的工作都不会被影响。高速到低速,高性能到低性能
缓存:例如看视频时出现的加载,进度条下方出现的灰色部分,是临时性加载到内存中的
shell的作用
(1):用户借助shell,控制内核,内核依托硬件存在,硬件收到请求后,将用户所需要的资源输出
(2):用户启动程序,程序控制内核,内核再向系统硬件申请资源,硬件输出资源给用户
(3):shell和应用程序之间相互控制
shell的运行环境
shell的类型,常用的是—/bin/bash
不同的shell具备了不同的功能,shell默认登陆时/bin/bash,流行的shell还有ash、bash、ksh、csh、zsh等,不同的shell有不同的功能和用途。想要修改时可以使用chmod -s或chsh -s来重新指定。
shell脚本
定义:就是把我们原来的命令或语句整合到一起,按照一定的顺序和逻辑放入文件中,然后通过这个程序文件去执行,我们称这样的程序文件为shell脚本。
初阶shell脚本功能
自动化完成软件的安装部署,如批量部署LAMP架构服务
自动化完成系统的管理,如批量添加用户
自动化完成备份,如数据库定时备份
自动化的分析处理,如网站访问量
shell脚本使用场景
在需要完成大量复杂、重复性的工作时,不需要再命令行重复执行命令,直接运行shell脚本即可,大大的节省了时间提高了效率
shell脚本的构成
第一行:#!/bin/bash(脚本申明,表示此行一下的代码语言时通过/bin/bash程序来执行)
除第一行之外以下行开头有#号都表示注释
输出结果
echo:可执行语句,用于输出 " " 之间的字符串。引号之间需要作为字符串才能被输出,单纯的字符串可以不用加引号就可以直接输出
但是依然能输出
但是如果有一些特殊符号,就需要用引号引起,将其变成字符串才能输出
输出失败
下面开始玩一个脚本
查看内容
输出
查看下,创建成功
脚本的执行方式
1:在当前路径下(相对路径和绝对路径)执行脚本
./first.sh或/home/first.sh
此方法需要有执行权限:chmod +x first.sh
2:sh、bash执行文件,
sh first.sh、bash first.sh
此方法不需要对脚本添加权限
(当脚本太长时,sh -x可以对脚本进行调试,可以把每一条执行的结果打出来)
3:source脚本文件路径
source first.sh
可以没有执行权限
source表示加载/刷新环境,所以会把脚本加载一遍,所以不需要执行权限
4:sh < first.sh或者 cat first.sh
(看看就好)
二:重定向与管道
重定向
用户通过操作系统处理信息的过程中,包含以下几类交互设备文件
标准输入(stdin):默认的设备是键盘,文件编号0,命令将从标准输入文件中读取在执行过程中需要的输入数据。
标准输出(stdout):默认的设备是显示器,文件编号1,命令将执行后的输出结果发送到标准输出文件。
标准错误(stderr):默认的设备是显示器,文件编号为2,命令将执行期间的各种错误信息发送到标准错误文件。
从键盘接收用户输入的各种命令字串,辅助控制信息,并将命令结果输出到屏幕上;如果命令执行错误,也会将错误信息反馈到屏幕上
不管是标准性输还是标准性错误输出,都会以追加的方式写入系统日志中,分别写入标准输出日志和标准错误输出日志中。
重定向输出
将命令的正常输出结果保存到指定的文件中,而不是直接显示在显示屏上
符号
(>):当文件中没有信息时,会把信息注入进去,如果文件有内容,则表示将原有内容覆盖,把旧内容改为新内容
(>>):表示追加,文件有内容时,不会将原有内容覆盖,而是继续写入新内容
覆盖