Shell脚本学习(一):Shell入门与Shell变量

Shell学习章节目录

Shell入门与Shell变量。
Shell内置命令。
Shell运算符与执行运算命令。
流程控制语句。
Shell函数。
Shell重定向。
Shell好用的工具,cut sed awk sort。
大厂常见企业面试题。

Shell入门:介绍

对于入门,我们需要知道几个概念:
1、Shell是什么
2、Shell脚本是什么
3、为什么要学习Shell脚本,即Shell脚本程序的作用
4、Linux系统默认的Shell解析器

Shell介绍

先来看一个问题:Linux系统是如何操作计算机硬件的?如CPU、内存、磁盘和显示器等?

答案:是通过使用Linux的内核来进行计算机硬件的操作的。

那么要如何才能使用Linux的内核呢?当然就是通过编写Shell命令来调用Linux内核去执行对计算机硬件操作的啦。

所以Shell命令相当于是用户与计算机硬件之间进行交互的桥梁。

基于以上我们可以给出更精简的回答:Shell就是命令,也可以说Shell是一门程序设计语言,因为其内部含有变量、函数与逻辑控制语句等机制。

用一张图来进行解释:

在这里插入图片描述

Shell命令或应用程序就是我们写的命令文本或者一个以 .sh 后缀结尾的应用程序,这些内容会被一个Shell解析器给翻译成Linux系统内核所能听得懂的语言然后进行Linux内核的调用。

Shell脚本

Shell脚本就是通过Shell命令或者程序编程语言编写的Shell文本文件,也叫Shell程序。

为什么要学习Shell脚本

我们可以通过Shell命令与编程语言来提高Linux系统的管理工作效率。

Shell的运行过程

当用户下达指令给操作系统的时候,实际上是把指令告诉Shell,经过Shell解释处理后让内核做出相应的动作。系统的回应和输出的信息也由Shell处理,然后显式在用户屏幕上:
在这里插入图片描述

Shell解析器

可以通过下面的命令来查看Linux系统所支持的Shell解析器:
在这里插入图片描述
简单介绍一下解析器的各自类型:

在这里插入图片描述

对于上图中的/bin/bash是被标注了红色的,说明其非常重要,该解析器是所有Linux的发行版本所默认使用的Shell解析器。我们学习也是基于该类型。

使用下面的命令可以查看你当前系统所使用的Shell解析器类型:

# 含义:打印输出当前系统环境所使用的Shell解析器类型
# echo:用于打印输出数据到终端
# $SHELL:是全局共享的读取解析器类型环境变量,全局环境变量是所有的Shell程序都可以读取的变量
echo $SHELL

检查一下:
在这里插入图片描述

不难发现默认的就是bash类型。

Shell入门:编写格式与执行方式

这一节主要掌握两个事情:
1、掌握Shell脚本的编写规范
2、掌握执行Shell脚本文件的3种方式与区别

Shell脚本文件编写规范

脚本文件后缀名规范

shell脚本文件就是一个文本文件,后缀名建议以 .sh 结尾。

首行格式规范

在.sh文件的首行需要设置Shell解析器的类型,语法如下:

#!/bin/bash

含义是设置当前Shell脚本文件采用bash解析器运行脚本代码。

注释格式

单行注释,语法如下:

# 注释内容

多行注释,语法如下:

:<<!
asd
asd
asd
!

Shell脚本HelloWorld入门案例

需求:创建一个Shell脚本文件helloworld.sh,输出hello world字符串。

代码如下:
在这里插入图片描述

脚本文件的常用执行3种方式介绍

1、sh解析器执行方式

介绍:就是利用sh命令执行脚本文件,本质就是使用Shell解析器运行脚本文件。
语法:sh 脚本文件

执行效果:
在这里插入图片描述

除了上面的当前目录的执行形式,也可以写全路径文件的执行形式:

在这里插入图片描述

2、bash解析器执行方式

介绍:就是利用bash命令执行脚本文件,本质就是使用Shell解析器运行脚本文件。
语法:bash 脚本文件

执行效果:
在这里插入图片描述
bash和sh命令基本没差,同样可以使用全路径的形式,这里不再赘述。

3、仅路径执行方式

介绍:执行当前目录下的脚本文件。
注意:脚本文件自己执行时需要具有可执行权限,否则无法执行。
语法:./脚本文件

执行效果:
在这里插入图片描述
添加可执行权限的命令如下:

chmod a+x helloworld.sh

三种脚本文件执行方式的区别

sh或者bash执行脚本文件方式是直接使用Shell解析器运行脚本文件,不需要可执行权限。

而仅路径方式是执行脚本文件自己,需要可执行权限。

Shell入门:多命令处理

掌握Shell脚本文件中执行多命令处理的技术。

多命令处理介绍

就是在Shell脚本文件中编写多个Shell命令。

案例需求

已知目录~/shell_learn,执行batch.sh脚本,实现在该目录下创建一个one.txt,在one.txt文件中增加内容“Hello Shell”。

步骤分析

1、使用mkdir创建~/shell_learn目录
2、创建脚本文件batch.sh
3、编辑脚本文件

3.1、命令1:使用touch命令创建文件,文件名为~/shell_learn/one.txt
3.2、命令2:输出数据“Hello Shell”到one.txt文件中,输出数据到文件中的命令:“数据 >> 文件”

4、执行脚本文件

实现

在这里插入图片描述
执行效果如下:
在这里插入图片描述

Shell变量:环境变量

两个目标:
1、理解什么是系统环境变量
2、掌握常用的系统环境变量都有哪些

Shell变量的介绍

变量用于存储管理临时的数据,这些数据都是运行在内存中的。

变量类型的介绍

主要是下面三类:

1、系统环境变量
2、自定义变量
3、特殊符号变量

1、系统环境变量

系统环境变量是系统提供的共享变量,是Linux系统加载Shell的配置文件中定义的变量共享给所有的Shell程序使用。

Shell的配置文件分类:

1、全局配置文件
/etc/profile
/etc/profile.d/*.sh
/etc/bashrc
2、个人配置文件
当前用户:/.bash_profile
当前用户:/.bashrc

一般情况下,我们都是直接针对全局配置进行操作。

环境变量分类

在Linux系统中,环境变量按照其作用范围不同大致可以分为系统级环境变量和用户级环境变量。

系统级环境变量:

Shell环境加载全局配置文件中的变量共享给所有用户所有Shell程序使用。

用户级环境变量:

Shell环境加载个人配置文件中的变量共享给当前用户的Shell程序使用,登录用户使用。

查看当前Shell系统环境变量

查看命令:

env

效果如下:
在这里插入图片描述

查看Shell变量(系统环境变量+自定义变量+函数)

查看命令:

set

效果如下:
在这里插入图片描述

常用系统环境变量

在这里插入图片描述
环境变量输出演示,就演示几个重要的,其它都差不多:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Shell变量:自定义变量

本节目标两个:
1、理解自定义变量的分类
2、能够自定义变量进行CRUD

自定义变量介绍

就是自己定义的变量。

分类

1、自定义局部变量
2、自定义常量
3、自定义全局变量

自定义局部变量

就是定义在一个脚本文件中的变量,只能在这个脚本文件中使用的变量,就是局部变量。

定义语法如下:

var_name=value

变量定义规则:

1、变量名可以由字母数字下划线组成,但不能以数字开头
2、等号两侧不能有空格
3、在bash环境中,变量的默认类型都是字符串类型,无法直接进行数值运算
4、变量的值如果有空格,必须使用双引号括起来
5、不能使用Shell的关键字作为变量名称

在命令行中定义变量:
在这里插入图片描述

查询变量值语法如下:

# 语法1:直接使用变量名查询
$var_name
# 语法2:使用花括号
${var_name}

两种方式区别:花括号方式更适合拼接字符串,马上会演示一下为什么这么说。

在命令行中查询我们刚刚定义的变量值:

在这里插入图片描述

那么为什么花括号方式更适合拼接字符串呢,举个例子:

在这里插入图片描述

可以看见当我们在变量后面想拼接一些字符串的时候,Shell将不再认识我们的变量,而使用大括号则不会有这种问题:

在这里插入图片描述

上面的增加和查询都说了,那么修改呢?其实修改就是对一个变量重新进行赋值即可,举个例子,修改刚刚定义的name:

在这里插入图片描述

这就进行了修改,还剩一个删除命令,删除命令语法定义如下:

unset var_name

演示删除我们刚刚的name变量:

在这里插入图片描述

自定义常量

常量其实就是一个变量设置值了之后不可以进行修改的变量叫常量,也就是只读变量。

语法定义如下:

readonly var_name

演示如下:

在这里插入图片描述

可以看见无法对name变量进行修改。

自定义全局变量

父子Shell环境介绍

假如有两个Shell脚本文件 A.sh 和 B.sh ,在 A.sh 脚本文件中执行了 B.sh 脚本文件,那么 A.sh 就是父Shell环境,而 B.sh 就是子Shell环境。

自定义全局变量介绍

就是在当前脚本文件中定义全局变量,这个全局变量可以在当前Shell环境与Shell子环境中都可以使用。

自定义全局变量语法

语法定义如下:

export var_name1 var_name2 var_name3=hahah...
案例需求

测试全局变量在子Shell中是否可用,在父Shell中是否可用。

案例演示

1、创建demo2.sh 和 demo3.sh文件

在这里插入图片描述

2、编辑demo2.sh:

在这里插入图片描述

3、编辑demo3.sh

在这里插入图片描述

4、执行demo2.sh发现demo3.sh读取不到var_1变量:

在这里插入图片描述

因此我们使用上述说的自定义全局变量的方法来进行验证,修改一下demo2.sh:

在这里插入图片描述

测试发现完全正确:

在这里插入图片描述

注意此时这个变量只能在demo2.sh和demo3.sh中使用,其它位置都是使用不了的:

在这里插入图片描述

Shell变量:特殊符号变量

了解常用的特殊变量有哪些。

特殊变量:$n(n表示一个数字)

语法:

$n

含义:用于接收脚本文件执行时传入的参数。

$0 是用于获取当前脚本文件名称的
$1~$9,代表获取第一个输入参数到第九个输入参数

第十个参数以上的格式:${数字},否则无法获取

执行脚本文件传入参数的语法如下:

sh 脚本文件 输入参数1 输入参数2 ...

案例需求

创建脚本文件demo4.sh,并在脚本文件内部打印脚本文件名字,第一个输入参,第二个输入参数。

案例实现

在这里插入图片描述

执行效果如下:

在这里插入图片描述

特殊变量:$#

语法定义如下:

$#

含义:获取所有输入参数的个数。

案例需求

在demo4.sh中输出输入参数的个数

案例实现

在这里插入图片描述

实现效果如下:

在这里插入图片描述

特殊变量:$* 、$@

语法定义如下:

$*
$@
# 含义都是获取所有输入参数,用于以后输出所有参数

$*与$@的区别:

1、不使用双引号括起来,二者功能一样
$*和$@都是获取所有输入参数,格式为:$1 $2 … $n

2、使用双引号括起来
“$*” 获取的所有参数拼接为一个字符串,格式为:“$1 $2 … $n”

“$@” 获取一组参数列表对象,格式为:“$1” “$2” “$3” … “$n”

我们可以使用循环打印所有输入参数可以看出区别。

循环语法先提前说一下:

for var in 列表变量
do		# 循环开始命令 # 循环体
done 	# 循环结束

案例需求

在demo4.sh中循环打印输出所有输入参数,体验$*和$@的区别。

案例实现

在这里插入图片描述

运行效果如下:

在这里插入图片描述

可以看见二者不带双引号时输出是一样的,就是所有的输入参数组成的列表;而带双引号的$*循环输出时依然是直接输出一个参数字符串列表,只循环一次。而带双引号的$@则是一个一个参数的打印输出,循环了不止一次。

特殊符号变量:$?

语法定义如下:

$?

含义:用于获取上一个Shell命令的退出状态码,或者是函数的返回值。

每个Shell命令的执行都会有一个返回值,这个返回值用于说明命令是否执行成功。
一般来说,返回 0 代表命令执行成功,非 0 代表执行失败。

简单演示一下:

在这里插入图片描述

特殊符号变量:$$

语法定义如下:

$$

含义:用于获取当前 Shell 环境的进程 ID 号。(因为每个Shell脚本文件的执行都会启动一个进程)

简单演示一下:

在这里插入图片描述

对于上面 ps -aux | grep bash 这条命令的解释:

这条命令 ps -aux | grep bash 在Unix或Linux系统中用于查找与bash相关的进程。这里涉及了两个主要部分:ps -aux 和 grep bash,以及它们之间的管道符 |。
ps -aux:
ps 是一个显示系统中当前运行的进程的命令。
-a 选项表示显示所有终端下的进程,不仅仅是当前终端的。
-u 选项表示显示用户/拥有者信息。
-x 选项表示显示没有控制终端的进程。
综合起来,ps -aux 会列出系统上所有用户的所有进程,并显示它们的详细信息,包括用户、PID(进程ID)、CPU使用率、内存使用率、启动时间、TTY(控制终端)、进程状态以及命令行。
|:
这是一个管道符,用于将一个命令的输出作为另一个命令的输入。在这里,ps -aux 的输出被传递给 grep bash。
grep bash:
grep 是一个用于文本搜索的命令,它会搜索指定的模式(这里是“bash”)并在输入中查找匹配的行。
因此,grep bash 会从输入中筛选出所有包含“bash”的行。
综合起来,ps -aux | grep bash 命令会列出所有包含“bash”的进程。这通常用于查找bash shell的实例,以便了解哪些用户正在使用bash,或者查看bash进程的状态等。
注意:由于 grep bash 本身也会作为一个进程运行,因此这条命令的输出中通常会包含一行与 grep bash 相关的进程信息。如果你只想看到其他bash进程,可以使用 ps -aux | grep bash | grep -v grep,这样 grep -v grep 会从输出中排除包含“grep”的行。

Shell环境变量深入:自定义系统环境变量

目标是能够自定义系统级环境变量。

全局配置文件/etc/profile应用场景

当前用户进入Shell环境初始化的时候会加载全局配置文件/etc/profile里面的环境变量,供给所有Shell程序使用。

以后只要是所有Shell程序或者命令使用的变量,就可以定义在这个文件中。

案例演示

需求

/etc/profile定义存储自定义系统级环境变量数据。

创建环境变量步骤

1、编辑/etc/profile全局配置文件

# 增加命令:定义变量VAR1=VAR1 并导出为全局变量
#(因为是在profile文件中定义的全局变量,所以所有Shell程序都可以使用该变量,该变量同时也是环境变量)

2、重载配置文件/etc/profile,因为配置文件修改后要立刻加载里面的数据所以需要重载,语法:

source /etc/profile

3、在Shell环境中读取系统级环境变量VAR1

创建环境变量演示

注意,一般情况下,我们进入profile文件后光标默认在顶端,但我们如果要添加自己的环境变量的话一般是追加在底端,所以使用VIM的G快捷命令来到profile文件的底端进行操作(小写的gg则可以返回顶端):

在这里插入图片描述

记得source一下:

在这里插入图片描述

现在我们就可以读到该变量名了:

在这里插入图片描述

Shell环境变量深入:加载流程原理介绍

目标两个:
1、明白交互式Shell与非交互式Shell
2、明白登录Shell环境与非登录Shell环境

Shell工作环境介绍

用户进入Linux系统就会初始化Shell环境,这个环境会加载全局配置文件和用户个人配置文件中的环境变量。

同时进入系统后还会执行一些脚本文件,而每个脚本文件都会有自己的Shell环境。

Shell工作环境分类

交互式Shell

与用户进行交互,互动。效果就是用户输入一个命令,Shell环境立刻反馈响应一个命令(给一个命令显示一个结果)。

非交互式Shell

不需要用户参与就可以执行多个命令的形式,比如一个脚本文件含有多个命令,直接执行并给出结果。

登录Shell环境与非登录Shell环境

在这里插入图片描述

注意:不同的工作环境加载环境变量流程不一样。

环境变量加载初始化过程:

在这里插入图片描述

补充:切换Shell环境执行脚本文件介绍

在执行一个脚本文件时可以指定具体Shell环境进行执行脚本文件,这个就是切换Shell环境执行脚本。

Shell登录环境执行脚本文件语法

sh/bash -l/--login 脚本文件

注意上面的斜杠意思是或的意思,并非是命令的一部分。

含义:先加载Shell登录环境流程初始化环境变量,再执行脚本文件。

Shell非登录环境变量执行脚本文件语法

bash # 加载Shell非登录环境
sh/bash 脚本文件 # 直接执行脚本文件

注意上面的斜杠意思是或的意思,并非是命令的一部分。

含义:先执行加载Shell非登录环境流程初始化环境变量,再执行脚本文件。

Shell环境变量深入:识别Shell环境类型

目标是理解如何识别Shell登录环境与非登录环境。

语法

使用 $0 识别环境语法:

echo $0

输出 -bash 代表:Shell登录环境
输出 bash 代表:Shell非登录环境
注意:这个 $0 环境变量如果用在子Shell中(也就是Shell脚本文件)输出Shell脚本本身的文件名

bash 命令语法:

bash

bash命令:用于切换为Shell非登录环境

演示

在这里插入图片描述
上图的情况是因为我一开始使用用户名与密码登录的ubuntu,然后在ubuntu用户的Shell窗口中切换到了root用户,因此在root用户的Shell窗口中使用$0查询得到的是bash非登录环境,而exit出去回到ubuntu用户中再查询时就是-bash即登录环境了。

Shell环境变量深入:详细切换Shell环境

理解切换Shell环境的命令。

切换Shell环境命令介绍

1、直接登录加载Shell登录环境
2、su切换用户加载Shell登录与Shell非登录环境
3、bash加载Shell登录与Shell非登录环境

切换Shell环境命令演示

切换环境方式1:直接登录系统

就是直接在虚拟机上使用用户名与密码登录Linux系统或使用客户端直接连接远程Linux系统。

切换环境方式2:su切换用户登录

使用命令:

命令1:

su 用户名 --login
或者
su 用户名 -l
# 切换到指定用户,加载Shell登录环境变量

命令2:

su 用户名
# 切换到指定用户,加载Shell非登录环境变量

切换环境方式3:bash切换

命令1:

bash # 加载【Shell非登录环境】

命令2:

bash -l shell脚本文件 / bash --login shell脚本文件
sh -l shell脚本文件 / sh --login shell脚本文件
# 先加载【shell登录环境】然后运行指定Shell脚本文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/812406.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2011年认证杯SPSSPRO杯数学建模A题(第一阶段)客机水面迫降时的姿态全过程文档及程序

2011年认证杯SPSSPRO杯数学建模 A题 客机水面迫降时的姿态 原题再现&#xff1a; 2009 年 1 月 15 日下午&#xff08;美国东部时间&#xff09;&#xff0c;US Airways 所属第 1549 航班&#xff08;空中客车 A320 客机&#xff09;在起飞后不久在纽约哈德逊河紧急迫降。经及…

开发有哪些常见陷阱?

引言 在当今数字化时代&#xff0c;软件开发已成为推动科技进步和商业发展的重要引擎。然而&#xff0c;软件开发并非一帆风顺&#xff0c;其中蕴藏着许多陷阱和挑战。如何避免这些陷阱&#xff0c;提高软件开发的效率和质量&#xff0c;成为开发者们面临的重要问题 本文将深…

【linux深入剖析】动态库的使用(续) | 动静态库的链接

&#x1f341;你好&#xff0c;我是 RO-BERRY &#x1f4d7; 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f384;感谢你的陪伴与支持 &#xff0c;故事既有了开头&#xff0c;就要画上一个完美的句号&#xff0c;让我们一起加油 目录 回顾1. 打包库的使用2. 动…

智能体Agent是AI时代普通人可参与的第一个红利机会

自从生成式 AI 兴起&#xff0c;掌握 prompt 能让 AI 工具更好为我们服务。而智能体的出现&#xff0c;让 AI 的使用门槛更是不断降低——都不用写 Prompt 了&#xff0c;直接用智能体就行了。 智能体Agent是AI时代普通人可参与的第一个红利机会© 由 ZAKER科技 提供 前几…

ActiveMQ 01 消息中间件jmsMQ

消息中间件之ActiveMQ 01 什么是JMS MQ 全称&#xff1a;Java MessageService 中文&#xff1a;Java 消息服务。 JMS 是 Java 的一套 API 标准&#xff0c;最初的目的是为了使应用程序能够访问现有的 MOM 系 统&#xff08;MOM 是 MessageOriented Middleware 的英文缩写&am…

4.9总结(Stream流,方法引用概述 || 乘法逆元,组合数)

Stream流 基本概念&#xff1a;以更简便的方式操作集合数据的形式&#xff1b; Steam流的操作步骤&#xff1a; 获取Stream流 中间方法&#xff1a;去重&#xff0c;跳过&#xff0c;获取&#xff0c; 过滤&#xff0c; 合并流&#xff0c;转换类型&#xff1b; 终结方法&…

2024-4-12-实战:商城首页(下)

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; 文章目录 作业小结 作业 .bg-backward {width: 60px; height: 60px;background: url(..…

SpringMVC--02--上下文工具类(RequestContextHolder)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 RequestContextHolder背景1.RequestContextHolder的使用2.request和response怎么和当前请求挂钩?3.request和response等是什么时候设置进去的? 案例应用---用户信…

最新常见的图数据库对比,选型,架构,性能对比

图数据库排名 地址&#xff1a;https://db-engines.com/en/ranking/graphdbms 知识图谱查询语言 SPARQL、Cypher、Gremlin、PGQL 和 G-CORE 语法 / 语义 / 特性SPARQLCypherGremlinPGQLG-CORE图模式匹配查询语法CGPCGPCGP(无可选)1CGPCGP语义子图同态、包 2无重复边、包 2子…

C语言之九九乘法表||素数||最小公倍数

一、九九乘法表 &#xff08;1&#xff09;思路 1、九九乘法表中存在三个变量&#xff0c;以 x1 ; x2 ; y 为例&#xff08;这里也可以使用两个变量&#xff0c;用x1和x2来表示y&#xff0c;方法一样&#xff09; 2、想好了变量之后&#xff0c;我们要想怎样将他实现呢&#x…

智能售货机:引领便捷生活

智能售货机&#xff1a;引领便捷生活 在这个科技迅速进步的时代&#xff0c;便捷已成为生活的必需。智能售货机作为技术与便利完美结合的产物&#xff0c;正逐渐改变我们的购物方式&#xff0c;为都市生活增添新的活力。 智能售货机的主要优势是它的极致便利性。不论是在地铁…

变量---

一、变量概述 1、什么是变量 变量是用于存放数据的容器。通过变量名 获取数据&#xff0c;甚至数据可以修改。 变量的本质&#xff1a;变量是程序在内存中申请的一块用来存放数据的空间。 二、变量的使用 变量在使用时分两步&#xff1a;1、声明变量 2、赋值 三、变量语法…

【c 语言】结构体的定义格式及变量初始化

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;C语言 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进步&…

Vue2 —— 学习(三)

目录 一、绑定 class 样式 &#xff08;一&#xff09;字符串写法 1.流程介绍 2.代码实现 &#xff08;二&#xff09;数组写法 1.流程介绍 2.代码实现 &#xff08;三&#xff09;对象写法 1.流程介绍 2.代码实现 二、绑定 style 样式&#xff08;了解&#xff…

备忘录模式:恢复对象状态的智能方式

在软件开发中&#xff0c;备忘录模式是一种行为型设计模式&#xff0c;它允许捕获并外部化对象的内部状态&#xff0c;以便在未来某个时刻可以将对象恢复到此状态。这种模式是撤销操作或者回滚操作的关键实现机制。本文将详细介绍备忘录模式的定义、实现、应用场景以及优缺点。…

【linux深入剖析】深入理解基础外设--磁盘以及理解文件系统

&#x1f341;你好&#xff0c;我是 RO-BERRY &#x1f4d7; 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f384;感谢你的陪伴与支持 &#xff0c;故事既有了开头&#xff0c;就要画上一个完美的句号&#xff0c;让我们一起加油 目录 前言1.磁盘物理结构2.磁盘…

SpringAI初体验之HelloWorld

目录 前言1.准备工作2.初始化项目3.解决问题3.1 Connection Time out 连接超时问题3.2 You exceeded your current quota 额度超限问题 4.访问调用5.总结 前言 在逛SpringBoot页面时突然看到页面上新增了一个SpringAI项目,于是试了一下&#xff0c;感觉还行。其实就是封装了各家…

Harmony鸿蒙南向外设驱动开发-Audio

Audio驱动概述 多媒体系统是物联网设备开发中不可缺少的一部分&#xff0c;Audio作为其中重要的一个模块&#xff0c;Audio驱动模型的构建显得尤为重要。 本文主要介绍基于HDF&#xff08;Hardware Driver Foundation&#xff09;驱动框架开发的Audio驱动&#xff0c;包括Aud…

是时候开启Copilot下一篇章:Microsoft AI

微软总裁兼首席执行官萨提亚纳德拉欢迎 Mustafa Suleyman 和 Karn Simonyan 加入微软公司&#xff0c;领导一个新成立的部门 —— Microsoft AI&#xff0c;旨在开发 Copilot 和其他的面向消费者的 AI 产品和研究。 Mustafa Suleyman 将担任 Microsoft AI 执行副总裁&#xf…

基于单片机的智能居家火灾报警系统

摘要:采用STC15L2K32单片机设计了一种智能火灾报警系统,它是控制中心与多个不同功能的探测模块构成,实现了一个中心、多点辐射的火灾检测和报警功能。 关键词:智能居家,火灾报警系统,单片机,模块化设计。 0 引言 近些年电子技术、计算机技术为火灾报警系统和灭火系统在…