Shell编程
Shell描述
-
shell 是一种脚本语言
-
脚本:本质是一个文件,文件里面存放的是 特定格式的指令,系统可以使用脚本解析器 翻译或解析 指令 并执行(它不需要编译)
-
shell 既是应用程序 又是一种脚本语言(应用程序 解析 脚本语言)
-
shell命令解析器:
系统提供 shell命令解析器: sh ash bash
查看自己linux系统的默认解析:echo $SHELL
shell脚本是一种脚本语言,我们只需使用任意文本编辑器,按照语法编写相应程序,增加可执行权限,即可在安装shell命令解释器的环境下执行
Shell脚本入门:介绍
- 理解Shell是什么
- 理解Shell脚本是什么
- 理解为什么学习Shell脚本(Shell脚本程序的作用)
- linux系统默认的Shell解析器
疑问
linux系统是如何操作计算机硬件、Cpu、内存、磁盘、显示器等?
答案:使用linux的内核操作计算机的硬件
Shell介绍
通过编写Shell命令发送给Linux内核去执行,操作计算机硬件,所以Shell命令是用户操作计算机的桥梁
Shell是命令,类似于windows系统的doc命令
Shell是一门程序设计语言,Shell里面含有变量,函数,逻辑控制语句等等
Shell脚本
通过Shell命令或程序编程语言编写的Shell文本文件,这就是Shell脚本,也叫Shell程序
为什么学习Shell脚本?
通过Shell命令与编程语言来提高linux的管理工作效率
Shell的运行过程
当用户下达指令给该操作系统的时候,实际上是把指令告诉Shell,经过Shell解释,处理后让内核做出相应的动作,系统的回应和输出的信息也是有Shell去处理的,然后显示在用户的屏幕上。
Shell解析器
解析类型
查看linux系统centos支持的Shell解析器
cat /etc/shells
效果:
解析器类型 | 介绍 |
---|---|
/ban/sh | Boune Shell,是linux最初使用的shell |
/ban/bash | Bourne Again Shell 它是Boune Shell 的扩展,简称bash,是Linux OS默认shell,有灵活和强大的编辑接口,同时又很友好的用户界面,交互性强 |
/sbin/nologin | 未登录解析器,shell设置为/sbin/nologin 适用于控制用户禁止登录系统的,有时候有些服务,比如邮件服务,大部分都是用来接收主机的邮件而已,并不需要登录 |
/ban/dash | dash(Debian AImquist Shell),也是一种Unix Shell,它比Bash小,只需要较少的磁盘控件,但是它的对话性功能也比较少,交互性极差 |
/bin/csh | C Shell是C语言风格Shell |
/bin/tcsh | 是C Shell的一个扩展版本 |
Centos的默认解析器是bash
语法:
echo $SHELL
含义:打印输出当前系统环境使用的Shell解析器类型
echo 用于打印数据输出到终端
$SHELL 是全局共享的读取解析器类型环境环境变量,全局变量时所有的shell程序都可以读取的变量
效果:
小结
- shell是什么?
是命令,类似于windows的doc命令
- shell脚本是什么?
是一个文本文件,里面可以编写shell命令或进行编程,形成一个可重用执行的脚本文件
- shell脚本的作用?
通过shell编程提高对linux系统管理工作效率
- lunix默认的shell解析器?
/bin/bash
Shell脚本入门:编写格式与执行方式
Shell脚本文件编写规范
脚本文件后缀名规范
shell脚本文件就是文本文件,后缀名建议使用.sh结尾
首行格式规范
首行需要设置shell解析器类型,语法
#!/bin/bash
含义:当前shell脚本采用bash解析器
注释格式
- 单行注释:语法
# 注释内容
- 多行注释
:<<!
# 注释内容1
# 注释内容2
shell脚本Hello Word入门案例
-
需求
创建一个shell脚本文件,输出hello word字符串 -
效果
-
实现步骤
- 创建shell脚本文件
touch helloword.sh
- 编辑文件
脚本文件执行方式
- sh解析器执行方式
- bash解析器执行方式
- 仅路径执行方式
sh解析器执行方式
相对路径效果
sh helloword.sh
绝对路径效果
sh /root/helloword.sh
bash解析器执行方式
相对路径效果
bash helloword.sh
绝对路径效果
bash /root/helloword.sh
仅路径执行方式
- 给用户添加可执行权限
chmod a+x 脚本文件
- 路径执行脚本文件
./helloword.sh
Shell脚本入门:多命令处理
shell脚本文件中编写多个shell命令
案例需求
已知目录 /root/demo目录,执行batch.sh脚本,实现该目录下创建一个one.text,在one.txt中添加内容 hello shell 字符串。
步骤分析
- 使用mkdir创建/root/demo目录
- 创建脚本文件batch.sh
- 编辑脚本文件
3.1 命令1:touch创建文件,文件名 /root/demo/one.txt
3.2 命令1:输出数据"hello shell"到one.txt中
“数据”>>文件
- 执行脚本
实现步骤
- 进入root目录,执行创建/root/demo目录命令
mkdir /root/demo
- 创建并编辑shell脚本
Shell变量
用于存储管理临时的数据,这些数据都是在运行内存中
系统环境变量
是系统提供的共享变量,是lunix系统加载Shell的配置文件中定义的变量共享给所有的Shell程序使用
全局配置文件
- /etc/profile
- /etc/profile.d/*.sh
- /etc/bashrc
个人配置文件
- 当前用户/.bash_profile
- 当前用户/.bashrc
环境变量分类
一般情况下,我们都是针对全局配置进行操作。