shell编程基础命令解释
shell 编程
一、shell概括
1.先来简述一下shell的用途
1.shell可以用来自动化系统的初始化工作(update,软件的安装,时区的设置,安全策略...)
2.自动化批量软件部署程序(LAMP/LNMP/Tmcat/LVS/Nginx)
3.管理应用程序(KVM,集群管理)
4.日志分析处理程序(grep/awk)
5.自动化备份恢复程序(mysql完全备份/增量)
6.自动化管理程序(批量远程修改密码,软件升级,配置更新)
7.自动化信息采集及监控程序(收集系统/应用状态信息,CPU,Mem,disk,net,apache,mysql)
2.shell的作用
- 解释执行用户输入的命令
- 输入一条,shell解释一条
- 接盘输入命令,linux就给与响应的方式,称交互
3.shell概念
shell是一块包裹着系统核心的壳,处于操作系统的最外层,与用户之间对话,把用户输入的操作系统,然后处理操作系统的输出结结果,输出到屏幕给与用户看到结果
从我们登录linux,所有操作都是交给shell解释
4.什么是shell脚本
当命令或者程序语句写在文件中,我们执行文件,读取其中的带代码,这个程序文件就被称为shell脚本。
在shell脚本总定义多条linux以及循环控制语句,而linux命令一次性执行完毕,执行脚本文件的方式称为非交互式。
- 在window 中.bat 批处理脚本
- 在linux 中 .sh 脚本文件
shebang
#! /bin/bash #shebang
- 以 #!/bin/sh 开头的文件,程序在执行的时候会要调用/bin/sh,也就是bash解释器
- 以#! /usr/bin/python 开头的文件,代表指定python解释器去执行
- 以 #!/usr/bin/env 解释器名称,是一种在不同平台上都能正确找到解释器的方法
./执行脚本 需要chmod +x 权限
sh 文件名
脚本规范
- 在写shell脚本中,#后面写的是注释内容,给开发者和用户看的
- 注释可以单独写一行,也可以跟在命令后面
- 尽量报错爱写注释习惯,便于回顾代码含义,尽量使用英文
执行shell脚本方式
- bash 文件名.sh
- 使用绝对相对路径 执行脚本,需要文件有x执行文件
- source 文件名.sh 或者 . 文件名.sh
- 少见用法, sh<文件名.sh
shell和运维关系
shell脚本语言很适合处理纯文本类型数据,且linux的哲学思想就是一切皆文件,如日志、配置文件、文本、网页文件、大多数都是纯文本类型,因此shell可以方便的进行文本处理,例如强大的文本三剑客(grep、sed、awk)
二、走进shell
1.字符类型
shell语言定义的变量,数据类型默认字符串类型
类型 | 介绍 |
---|---|
弱类型语言 | 在定义变量的时候,不用主动声明改类型 |
强类型语言 | 需要指定变量类型,必须对应的上负责报错 |
centos7支持shell 种类
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
/bin/dash
其他脚本语言
运维必会语言:shell、python
因为大量的linux运维工具由python开发的。
变量的作用域
- 单引号变量,不识别特殊用法
- 双引号变量,能够识别特殊用法
注意:1.每次调用bash /sh这样解释器去执行脚本, 都会开启一个子shell,因此不保留当前shell的变量,通过pstree命令检查进程树
2.调用source或者. 在当前shelll环境加载脚本,因此保留
在linux反引号`
环境变量
环境变量一般指export,用于定义shell的运行环境,保证shell命令正确执行,shell通过环境变量确定登录用户莫、PATH路径、稳健性等能找出linux中各种变量。
- 每个用户都有自己的环境变量配置文件,~/.bash_profile ~/.bashhrc ,以个人配置文件优先加载变量,生效。,
- 当你需要给所有用户都使用某个变量,
检查系统环境变量的命令
- set 输出所有变量,包括全局变量、局部变量
- env,只显示全局变量
- declare,输出所有的变量,如同set
- export,显示和设置环境变量值
撤销环境变量
- unset 变量,删除变量或函数
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律