云计算(第二阶段):mysql后的shell
-
第一章:变量
-
前言
-
什么是shell
- Shell 是一种提供用户与操作系统内核交互的工具,它接受用户输入的命令,解释后交给操作系统去执行。它不仅可以作为命令解释器,还可以通过脚本完成一系列自动化任务。
-
shell的特点
- 跨平台:大多数 Shell 都可以在不同的类 UNIX 系统上运行,包括 Linux 和 macOS。
- 易于编写脚本:用户可以通过编写脚本来实现自动化操作,大大简化了复杂任务的执行。
- 灵活性:Shell 支持多种内置命令,并允许通过管道、重定向等机制,将多个命令组合起来使用。
- 用户友好:Shell 允许用户自定义环境变量、快捷命令和别名,增强了用户体验。
- 强大的命令处理:支持控制流、条件判断、循环等逻辑操作,具备一定的编程功能。
-
shell可以做什么
- 文件管理:通过命令创建、删除、复制、移动文件或目录。
- 系统管理:执行系统管理任务,如查看和终止进程、监控系统状态、管理用户和权限。
- 自动化任务:通过编写 Shell 脚本,自动执行批量任务,比如备份、日志管理等。
- 程序执行:可以调用和运行各种程序、脚本或应用,并能处理它们的输出结果。
- 网络操作:通过命令控制网络接口,进行 FTP、SSH 等网络操作。
-
shell的执行方式
-
交互式执行:用户在命令行提示符下输入一条命令,Shell 立即解释并执行该命令。执行结束后,返回命令行等待下一条输入。
-
脚本式执行:用户将多个命令写入一个文件(脚本文件),然后让 Shell 执行该文件中的命令。通过这种方式,用户可以将重复性任务自动化。
-
先写一个简单的脚本
-
#简单的不标准test使用 echo 'nihao' #shell没有结束符,换行结束,有些用;结束但是很少,还常用
用下面的方式执行
-
-
sh 文件名.sh
-
bash 文件名.sh
-
. 文件名(.+空格).sh
-
soucre 文件名.sh
-
./文件名.sh
-
区别
-
sh,bash是告诉计算机无论脚本的 Shebang 行是什么是什么都用sh,bash执行,当然其实/usr/bin/sh是/usr/bin/bash的软连接(脚本在新的子 Shell 中执行,不会影响当前 Shell 的环境变量和设置)
-
-
.表示source:直接在当前 Shell 环境中执行脚本文件。
.
是一个 Shell 内置命令,等同于source
-
./:在一个新的子 Shell 中执行脚本,并且会根据脚本中的 Shebang 行指定的解释器来运行,要执行权限
-
-
-
-
shell的解释器在哪
- 查看当前使用的 Shell:在命令行输入
echo $SHELL
可以查看当前使用的 Shell 解释器路径。 - 常见 Shell 解释器路径:
/bin/bash
:Bash 的路径。/bin/sh
:Bourne Shell 的路径。
- 查看当前使用的 Shell:在命令行输入
-
shell脚本的建议格式
-
#!/bin/bash #Shebang行:使用 #!/bin/bash 指定脚本应由 Bash 解释器运行。 #----------------------------------- # 脚本名称: backup_script.sh # 描述: 该脚本用于将指定的源目录备份到目标目录, # 并记录操作日志,处理潜在的错误。 # 作者: Your Name # 日期: 2024-10-13 # 版本: 1.0 #-----------------------------------# 调试模式设置: # 开启严格模式,确保脚本执行时遇到错误会立即退出: # -e: 当命令执行失败时退出脚本。 # -u: 使用未定义的变量时退出。 # -o pipefail: 如果管道中的任一命令失败,整个管道失败。 set -euo pipefail#-----------自己的代码写在下面-------------
这只是建议,可以不管,但是建议这么写
-
-
-
变量
-
简介
- 如果你用过其它语言你就了解,如果你没有用过。那么变量就是酒店门牌号,具体的操作如下:有一家酒店住人(就是内存放数据),你定了一间房(告诉内存准备空间),觉得444门牌不吉利但不愿意换房,换了门牌号666(告诉系统变量名),你住了(向变量内放了内容),第二天退房(变量死亡)。
-
自定义变量
- 用户自定义变量是用户在脚本中定义的变量,用于存储数据、路径、配置等信息。与系统预定义的变量不同,用户自定义变量通常以用户的需求为基础。
-
定义变量
- 变量名=值(文本引号内,数字没引号){变量名的要求:可以用字母大小写,数字,下划线组成,但是数字不开头也不能是全数字,不要用bash中的关键字,最好见名知意}
-
使用变量
- echo $变量名(echo表示打印,$表示调出变量内容,加起来就是调出变量内容然后打印出来)
-
重复定义变量
- 已有变量名=新值(会覆盖旧值)
-
变量查看set
- set可以查看当前系统所有变量
-
变量删除
- unset 变量名(一般来说变量没用了就不用管了,除非对内存要求严格,比如嵌入式)
-
交互式定义变量
- read 变量名(read函数从控制台读数据,意思是将读到的数据给变量)
- read -p "在-p的条件下,你可以向终端输出一些语句" 变量名
-
注意:三种引号
- 单引号(
'
):将其中的文本视为字面量,不进行任何变量替换或命令替换。 - 双引号(
"
):允许变量替换和命令替换。在引号内使用$
或反引号(`
)会被解释。 - 反引号(
`
):用于命令替换。反引号内的命令会被执行,其输出结果会替换原位置。现代 Shell 还支持使用$(...)
语法来实现命令替换反引号,这种方式更清晰且更易于嵌套。
- 单引号(
-
整数运算(只能用整数,都支持变量$变量)
-
$(())方法
- 用途:用于进行算术运算,是现代 Shell 中最常用的方式。
- 格式:表达式写在
$((...))
内部,不需要空格。 - 优点:支持多种运算,包括加法+、减法-、乘法*、除法/和取余%。
-
$[]方法
- 用途:也是进行算术运算的一种方式,但不推荐使用,因为在某些 Shell 中可能会被弃用。
- 格式:表达式写在
$[...]
内部,不需要空格。
- let方法(在声明变量的同时完成计算)
- 注意:不支持浮点数运算。
- 格式:可以省略
$
符号,直接使用变量名。比如let 变量c=变量1+变量2 - 用途:用于计算算术表达式,支持多种运算,常用于循环和条件语句中。
- expr方法
- 用途:用于计算表达式,支持整数运算。
- 格式:需要在
expr
和运算数之间使用空格,要放在$()内。+-/%,\*(乘有点特殊) - 注意:通常用于较旧的 Shell 脚本,现代脚本中更常用
$(())
。
-
-
小数运算(了解){需要用到bc(计算器)命令,没有就yum -y install bc}
- echo “表达式”|bc:因为bc是命令,所以通过echo将表达式输出到终端,使用管道符传递给bc处理
-
环境变量(了解)
- 可以被子shell继承下去。
- 直接声明:
- export 变量=值(有等号就重新定义,没有就表示将已有变量提升为环境变量或者提升)
- 转换声明:
- 在当前用户的/.bash_profile(预制bash文件,登录运行这个脚本,所以在这个文件内写入export 变量=值)
- 当你想让所有用户使用时/etc/profile(root下,这表示开机运行这个脚本)
- 可以被子shell继承下去。
-
位置变量与预定义变量(了解)
- 位置变量
- 位置变量用于表示脚本的参数。当你运行一个 Shell 脚本并向它传递参数时,位置变量会自动存储这些参数。常见的包括
$0
、$1
、$2
等。$0
:表示当前脚本的名称。$1``$2
...$n
:表示传递给脚本的第 1 个参数、第 2 个参数……依次类推。不要跳(比如$1 $10是错的)$#
:表示传递给脚本的参数个数。$*
:表示脚本的所有参数(作为单个字符串)。$@
:表示脚本的所有参数(每个参数作为独立的字符串)。
- 位置变量用于表示脚本的参数。当你运行一个 Shell 脚本并向它传递参数时,位置变量会自动存储这些参数。常见的包括
- 预定义变量
- Shell 提供了一些预定义的特殊变量,用来帮助处理脚本执行中的各种状态信息。
$$
:表示当前 Shell 脚本的进程 ID(PID)。$!
:表示最后一个后台运行的进程的进程 ID。$?
:表示上一个命令的退出状态,0 表示成功,非 0 表示失败。$-
:表示当前 Shell 使用的选项标志。$_
:表示上一个命令的最后一个参数,或当前命令的完整路径。
- Shell 提供了一些预定义的特殊变量,用来帮助处理脚本执行中的各种状态信息。
- 位置变量
-
-
-
第二章:判断
-
shell条件测试【真返回0假返回1】
-
数值比较:【 整数1 操作符 整数2 】--注意空格
- 操作符:-gt大于,-lt小于,-eq等于,-ne不等于,-ge大于等于,-le小于等于。
-
文件测试:【 操作符 文件或目录 】--注意空格
-
1. 文件存在性测试:
-f
:判断文件是否存在且为普通文件(非目录或特殊文件)。-d
:判断目录是否存在。-e
:判断文件或目录是否存在(通用测试)。-b
:判断文件是否存在且为块设备文件(如硬盘设备)。-c
:判断文件是否存在且为字符设备文件(如终端设备)。-p
:判断文件是否存在且为命名管道(FIFO)。-S
:判断文件是否存在且为 socket 文件。-h
或-L
:判断文件是否存在且为符号链接(软链接)。
-
2. 权限相关测试:
-r
:判断当前用户是否对文件或目录有可读权限。-w
:判断当前用户是否对文件或目录有可写权限。-x
:判断当前用户是否对文件或目录有可执行权限。-O
:判断文件是否存在且被当前用户拥有。-G
:判断文件是否存在且属于当前用户的组。
-
3. 文件属性测试:
-s
:判断文件是否存在且文件大小大于 0。-g
:判断文件或目录是否存在且**设置了 SGID(Set Group ID)**权限位。-k
:判断文件或目录是否存在且设置了粘滞位(sticky bit)。
-
-
字符串比较:【 “字符串1” 操作符 “字符串2”】--注意空格
- 操作符,=等于,!=不等于,-z字符串是否为0,=n字符串是否不为0
- 操作符,=等于,!=不等于,-z字符串是否为0,=n字符串是否不为0
-
and(-a,&&)和or(-o,||)(多条件测试)
- and表示多个条件同时满足,当前面条件不满足就不会检测后面的条件
- or表示多个条件有一个满足就绪,当前面的条件满足就不会检测后面的条件
-
-
流程控制:if
-
模式匹配:case
-
相关文章:

云计算(第二阶段):mysql后的shell
第一章:变量 前言 什么是shell Shell 是一种提供用户与操作系统内核交互的工具,它接受用户输入的命令,解释后交给操作系统去执行。它不仅可以作为命令解释器,还可以通过脚本完成一系列自动化任务。 shell的特点 跨平台:…...

Debian12离线部署Mysql全网最详细教程
一、下载安装所需要的库 1、所需要的库 # 所需要的库有 libc6_2.36-9deb12u8_amd64.deb libgcc-s1_12.2.0-14_amd64.deb libstdc6_12.2.0-14_amd64.deb gcc-12-base_12.2.0-14_amd64.deb psmisc_23.6-1_amd64.deb libnuma1_2.0.18-1_amd64.deb libmecab2_0.996-14b14_amd64.d…...
文本生成视频技术:艺术与科学的交汇点
在人工智能技术的飞速发展下,文本生成视频(Text-to-Video)技术已经成为现实。这项技术能够根据文本描述生成相应的视频内容,极大地拓展了内容创作的边界。本文将从三个主要方面对文本生成视频技术进行深入探讨:技术能达…...

【Windows】【DevOps】Windows Server 2022 采用WinSW将一个控制台应用程序作为服务启动(方便)
下载WinSW 项目地址: GitHub - winsw/winsw: A wrapper executable that can run any executable as a Windows service, in a permissive license. 下载地址: https://github.com/winsw/winsw/releases/download/v2.12.0/WinSW-x64.exe 参考配置模…...

OpenAI董事会主席Bret Taylor的Agent公司Sierra:专注于赋能下一代企业用户体验
本文由readlecture.cn转录总结。ReadLecture专注于音、视频转录与总结,2小时视频,5分钟阅读,加速内容学习与传播。 视频来源 youtube: https://www.youtube.com/watch?vriWB5nPNZEM&t47s 大纲 介绍 欢迎与介绍 介绍Bret Taylor&#x…...

【linux】信号(下)
8. 阻塞信号 (一)信号其他相关常见概念 实际执行信号的处理动作称为信号递达(Delivery)信号从产生到递达之间的状态,称为信号未决(Pending)进程可以选择阻塞 (Block )某个信号被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作(即被阻塞的信…...
Notepad++ 初学者指南
引言 对于初学者来说,选择合适的编程工具很重要,特别是考虑到易用性和计算机资源的需求。 虽然集成开发环境(IDE)如 Eclipse、IntelliJ IDEA 和 Visual Studio 提供了许多强大的功能,但对于刚开始学习编程的人来说&a…...

Web Socket 使用详解
在信息爆炸的时代,用户对网页的期待早已超越了静态内容的展示。实时聊天、股票报价、协同编辑等功能的实现,都离不开服务器与客户端之间持续、高效的数据交互。传统的HTTP请求-响应模型难以满足这种需求,而WebSocket的出现,为构建…...

【Python Web开发】Python Web开发知识全解析
Python Web开发知识全解析 Python 是一种强大的编程语言,以其简洁和高效而闻名,尤其在 Web 开发领域,它有着广泛的应用。Python 提供了许多功能强大且灵活的 Web 框架,如 Flask、Django、FastAPI 等,使得构建现代 Web…...

Android开发展开收起功能
Android开发展开收起功能 文字过长展开收起功能很普通,也很需要。 一、思路: 自定义控件MoreTextView 二、效果图: 三、关键代码: public class MoreTextView2 extends LinearLayout {/*** TextView的实际高度*/private int …...

Sealos Devbox 发布,珍爱生命,远离 CI/CD
水滴攻击太阳系用的是最原始的攻击方式:撞击!却又如此有效率。 当我们搞了一堆容器、编排、CI/CD、DevOps,发明了一大堆没什么用的名词之后,最终发现这些操作都是花里胡哨,让开发者越陷越深。 最终你会发现一个真理&…...

数据结构——遍历二叉树
目录 什么是遍历二叉树 根据遍历序列确定二叉树 例题(根据先序中序以及后序中序求二叉树) 遍历的算法实现 先序遍历 中序遍历 后序遍历 遍历算法的分析 二叉树的层次遍历 二叉树遍历算法的应用 二叉树的建立 复制二叉树 计算二叉树深度 计算二…...

【Ubuntu】在Ubuntu上安装IDEA
【Ubuntu】在Ubuntu上安装IDEA 零、前言 最近换了Ubuntu系统,但是还得是要写代码,这样就不可避免地用到IDEA,接下来介绍一下如何在Ubuntu上安装IDEA。 壹、下载 这一步应该很容易的,直接打开IDEA的下载页面,点击下…...

解决:gpg: 从公钥服务器接收失败:服务器故障
当你添加密钥时报错,可以按照下面的步骤,依次输入。 # 停止 Network Manager 服务 sudo service network-manager stop# 删除 Network Manager 的状态文件 sudo rm /var/lib/NetworkManager/NetworkManager.state# 重新启动 Network Manager 服务 sudo …...

支持向量机SVM
目录 1 SVM直觉理解2. 软硬间隔3. 升维转换及核技巧入门 参考资料 1 SVM直觉理解 通过一条直线将两类数据分开,并且当有新的数据加入时,通过该条直线就能判别其属于哪一类 为了区分两类数据,N为数据的样本数,M为维度数…...
斯坦福UE4 C++课学习补充25:AI感知组件
文章目录 一、引入感知组件并绑定委托二、优化角色旋转 一、引入感知组件并绑定委托 PawnSensingComponent是UE中用于感知其他 Pawn(或 Actor)存在的一个组件,常用于 AI 角色的视觉、听觉等感知功能。它为 AI 提供了基础的感知能力ÿ…...
大模型 memory 记忆 缓存的应用
在探讨大模型的“memory”(记忆)功能时,我们通常会涉及缓存、存储以及如何有效管理和利用这些记忆来增强模型的性能。以下是对大模型memory记忆、缓存及相关概念的详细分析: 一、大模型的记忆功能 大模型,特别是大型…...
perl 给特定文件加上特定内容
perl 给特定文件加上特定内容 给所有的输入文件,加上特定的内容 本例中,给所有的输入文件内加入## Copyright xxx 如果检测到已经有## Copyright字样的行,那么不添加,具体代码如下。 可以使用该脚本,给所有的verilog文…...

全面解析网络性能监控系统与网络故障排除技巧,助力IT运维高效管理
目录 一、什么是网络性能监控系统? 1.1 网络性能监控系统的定义与作用 二、网络性能监控的关键指标 三、网络故障排除的重要性 3.1 为什么网络故障排除至关重要? 3.2 网络故障的常见类型 四、如何高效进行网络故障排除? 4.1 系统化的…...

Centos7 搭建单机elasticsearch
以下是在 CentOS 7 上安装 Elasticsearch 7.17.7 的完整步骤:(数据默认保存在/var/lib/elasticsearch下,自行更改) 一、装 Java 环境 Elasticsearch 是用 Java 编写的,所以需要先安装 Java 运行环境。 检查系统中是…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
#Uniapp篇:chrome调试unapp适配
chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器:Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...

Netty从入门到进阶(二)
二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机
这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感…...

计算机基础知识解析:从应用到架构的全面拆解
目录 前言 1、 计算机的应用领域:无处不在的数字助手 2、 计算机的进化史:从算盘到量子计算 3、计算机的分类:不止 “台式机和笔记本” 4、计算机的组件:硬件与软件的协同 4.1 硬件:五大核心部件 4.2 软件&#…...