当前位置: 首页 > news >正文

Linux的shell(极其粗糙版)

Shell脚本:

脚本主要是为了业务,辅助人工,实现自动化运维

Shell:介于用户和内核之间,充当翻译官的作用,当用户执行相关的命令,shell会把指令二进制传给内核,内核处理完毕以后通过shell把内核的执行结果,转换成人类能够识别的语言

Linux中的shell种类:

Sh:已淘汰

Bash:默认的shell,是sh的扩展

Csh:类C语言的shell

Tcsh:整合了csh的功能,也包括一部分shell的功能

在默认情况下,我们使用的shell都是bash解释器

Nologin:这也是一种shell,作用只有一个就是禁止用户登录主机

Shell语言又称脚本语言:动态语言,主要用来控制软件和应用程序,一般都是以文本的形式保存,运行时才会进行编译

Shell脚本的作用:

  1. 自动化运维
  2. 批量化重复操作
  3. 可以减轻管理人员的工作量
  4. 提供业务处理的速度
  5. 脚本写完之后,都是经过调试,没有问题才会上线部署,在配置的过程中减少了出错的概率

Shell脚本的构成:

三部分组成:

  1. 脚本申明(解释器)
  2. 注释信息,shell脚本已#为开头,表示注释信息不会被运行

注释:可以帮助工作人员更好的理解代码的架构

  1. 可执行语句

shell脚本当中:所有Linux的命令行可以执行命令,都可以做为脚本的可执行语句

Shell脚本的执行方式:

赋权执行:给脚本执行权限

Chmod 777 first.sh

./表示执行当前目录下的可执行文件,但是这个文件必须要有执行权限

./first.sh

/opt/first.sh

这两种不行要有执行权限不然不成功

直接执行:一般用于调试脚本的内容

Bash first.sh

Sh first.sh

Source:这是点命令,也就是符号,是bash的内部命令,重新执行刚修改完的初始化文件,可以让命令在配置文件中立刻生效,无须重启

Bash sh ./ 这三种都是运行,运行代码,反馈结果

Source:执行,执行脚本中的命令,脚本当中的代码会被真正的执行,展示真正的结果

都是有结果,一个没有过程,一个有过程

重定向:

交互式硬件设备的执行方式:

  1. 标准输入:设备是键盘,而且输入的结果符合编码规范
  2. 标准输出:设备是显示器,符合编码规范的命令,给予执行结果
  3. 标准错误输出:设备是显示器,不符合编码规范的结果,给予错误输出的执行结果

Echo 123 >123

这是重定向输出:> 把标准输入保存到指定的文件中,会覆盖原有内容

>> 把标准输入保存到指定文件的尾部,相当于行后追加,不覆盖原有内容

重定向错误输出:2> 将错误信息保存到指定的文件,会覆盖原有的内容

2>> 将错误信息保存到指定的文件的尾部,不会覆盖原有的内容

混合输出:&>既可以保存标准输出也可以保存标准错误输出到指定文件,会覆盖原有内容

&>>既可以保存标准输出也可以保存标准错误输出到指定文件的尾部,不会覆盖原有内容

重定向输入:< 从指定的文件读取数据

Shell的变量:

面向对象:

变量:描述对象属性或者参数。Shell的变量是存放系统和用户需要使用的特点参数与值

变量的类型:int:整数 string:字符串 truefalse:布尔类型 浮点:1.23

变量名称:有固定名称的变量,一般是系统预设

自定义的变量名:不要使用系统命令作为变量名

不要使用中文

不能使用特殊符合开头 ,只有_可以做开头

不要使用数字开头

不需要声明变量类型,直接赋值就可以

变量赋值时,引号的用法:

强引用和弱引用:

打印变量时。加上双引号是弱引用

加上单引号是强引用,¥text,就会被认为是普通字符串。打印的结果也是字符串

赋值变量时,双引号和单引号没有任何区别

反撇号:`` 先执行反撇号当中的命令,然后再命令运行的结果赋值变量

自定义变量的类型:

一般自定义:

A=1

B=2

只读变量:他是不可以重新赋值的

Readonly 他只能重启或者bash才能删除

Read 通过命令获取内容,然后给变量赋值

Read -p “一定要加上提示字符” 变量名

变量的作用范围:

自定义变量只在当前的shell环境生效

全局变量(自定义的):1.系统预设的全局变量,对所有用户都能生效

  1. 自定义全局变量
  2. 临时声明全局,也是在当前shell生效

一般来说,我们自定义变量可能需要根据条件时常修改,以满足不同的条件,一旦作为全局变量,引用的值或者参数不需要变的

全局变量是所有人都可以引用,会导致程序状态的不确定性

环境变量:1.系统预设,用来设置用户的工作环境

  1. 自定义环境变量,主要是用于满足个人需求的工作环境,可以随时创建,随时修改,随时删除

系统可以识别到用户所需的操作指定,可以直接运行调用

位置变量:命令行参数

在脚本运行时,从脚本的外部通过位置变量给脚本内部的程序传参

¥n 这的n是数字1-9

10以上要用{10}

传参的顺序是从左向右

$0,特殊的位置变量,表示命令本身

/first.sh 10 20

$0  $1  $2

预定义变量:编程语言或者脚本解释器提供的,自动设置,自动更新,只能用不能修改

$*  $@  $#  $?

$*与$@:表示命令或者脚本需要处理的参数

$*:不加引号,会把参数一个一个处理,加上引号,会当成整体处理

$@:加不加引号,都会将参数一个一个处理

$*与$@,在不加引号的时候表现一致

$#:特殊的预定义变量,表示传递给脚本有几个参数,就是统计传递了多少个参数

$?:表示前一条命令的返回状态码,只有0表示执行成功或者执行正确,所有非0一律表示执行出现异常

Shell当中的变量的运算符:

运算符:+ - * / % 加 减 乘 除整 取余

整数运算:

I=$((12+5))

I=$(expr 12 \* 5)#这边乘是特殊方式其他都是这种I=$(expr 12 + 5)

I=$[12/5] #此方式已经弃用

Let i=12*5

I++:每次自增1,先赋值,再加1

  1. -:

++i:每次自增1,先再加1,在赋值

--I:

非整数运算:

Bc linux自带的计算器  例如:echo 2*2 | bc

Awk                例如:num=$(awk 'BEGIN{print (45+87)*2+3}')

脚本执行实验

配置文件vim first.sh

#!/bin/bash

#this is my first shell!

Cd  /boot

Echo “当前的目录位置:”

Pwd

Echo “其中以vml开头的文件包括:”

Ls -lh vml*

:wq!保存

输出实验

Echo 123 > index.html

Cat index.html

Echo 123 >> index.html

Echo 123 &> index.html

Echo 123 &>> index.html

重定向输入实验

Echo “1” > pass.txt

Cat pass.txt

Passwd --stdin lmn < pass.txt

自定义变量实验

A=1

Echo $a #这是打印变量值

A=test

Echo $a

A=1

B=1

Echo $a $b

Echo ${a} ${b}

引号实验:

Text=’123’

Echo $text

Echo “$text”

反撇号实验:

A=`ls -lh`

Echo $a

只读变量实验:

A=1

Readonly a=1

Nuset b#这是删除变量

Read -p实验:

配置文件vim first.sh

Read -p “输入一个变量名:” num1

Read -p “请再输入一个变量名:” num2

Sum=$(($num1+$num2))

Echo $sum

:wq!

Export a=4

Export b=8

Vim text.sh

C=$(($a+$b))

e

Bash text.h

Vim /etc/profile #全局配置文件,对所有用户生效

Export a=10

Export b=20

Source /etc/profile

Evn #查看环境变量

Echo $USER#这是用户名环境变量

Echo $HOME#查询当前用户的家目录

Echo $LANG#查询语言和字符集

Echo $PWD#查询当前所在的目录

Echo $PATH

环境变量类似于全局变量。和全局变量作用一致,环境变量系统识别直接调用,

PATH=”$PATH:/root”

Export PATH=”$PATH:root”

Cd ~

Ls

Touch 123.sh

Chmod 777 123.sh

Cd /opt/

Cd /etc/

Cd /etc/sysconfig/

  1. Sh

$*与$@实验:

Vim first.sh

Abc() {

For i in “$@”

Do

Echo $i

done

}

Abc “hello” “world” “!”

:wq!

Vim first.sh

Abc() {

For i in $@

Do

Echo $i

done

}

Abc “hello” “world” “!”

:wq!

Vim first.sh

Abc() {

For i in “$*”

Do

Echo $i

done

}

Abc “hello” “world” “!”

:wq!

Vim first.sh

Abc() {

For i in $*

Do

Echo $i

done

}

Abc “hello” “world” “!”

:wq!

相关文章:

Linux的shell(极其粗糙版)

Shell脚本&#xff1a; 脚本主要是为了业务&#xff0c;辅助人工&#xff0c;实现自动化运维 Shell:介于用户和内核之间&#xff0c;充当翻译官的作用&#xff0c;当用户执行相关的命令&#xff0c;shell会把指令二进制传给内核&#xff0c;内核处理完毕以后通过shell把内核的…...

没有英语要求的中国人大女王金融硕士有多香你可能还不知道

在当今全球化的世界中&#xff0c;英语已经成为了一种国际通用语言。对于许多学生来说&#xff0c;掌握英语是实现个人发展和职业成功的关键。尤其是在读研阶段&#xff0c;英语水平的要求更是不容忽视。但现实问题是我们没有相应的语言环境&#xff0c;直接导致的是大学的英语…...

低代码平台如何实现快速开发应用?

目录 一、低代码“快”在哪里&#xff1f; 下面分享低代码低代码平台实现快速开发的一些主要方式&#xff1a; 1.图形化编程&#xff1a; 2.预构建组件&#xff1a; 3.模板和插件&#xff1a; 4.自动化流程&#xff1a; 5.集成和扩展&#xff1a; 6.多端适配&#xff1a; 7.快速…...

iOS原生、Android 原生, flutter 三种方式给照片流添加文字(水印)

效果图:三中代码实现的效果差不多 Swift:代码 import UIKitclass ImageWatermarking: NSObject {static func textToImage(drawText text: String, inImage initImage: UIImage, atPoint point: CGPoint) -> UIImage {let textColor = UIColor.whitelet textFont = UIFon…...

数据结构: 红黑树

目录 1.红黑树概念 2.红黑树性质 3.调整 1.如果p和u都是红色&#xff0c;将其都改为黑色即可,然后向上调整 2.如果p红&#xff08;u黑/u不在&#xff09;&#xff0c;这时候左子树两红&#xff0c;于是给右子树一个红&#xff08;旋转变色&#xff09; 2.1右单旋 变色- …...

如何搭建开源ERP平台Odoo并实现公网远程访问?——“cpolar内网穿透”

文章目录 前言1. 下载安装Odoo&#xff1a;2. 实现公网访问Odoo本地系统&#xff1a;3. 固定域名访问Odoo本地系统 前言 Odoo是全球流行的开源企业管理套件&#xff0c;是一个一站式全功能ERP及电商平台。 开源性质&#xff1a;Odoo是一个开源的ERP软件&#xff0c;这意味着企…...

什么是马尔科夫随机场?

马尔科夫随机场&#xff0c;也称为马尔可夫网&#xff08;Markov Network&#xff09;&#xff0c;是一种概率图模型&#xff0c;用于表示随机变量之间的依赖关系。它是由若干个随机变量组成的无向图&#xff0c;其中节点代表随机变量&#xff0c;边代表它们之间的相互作用或依…...

自然语言处理---huggingface平台使用指南

1 huggingface介绍 Huggingface总部位于纽约&#xff0c;是一家专注于自然语言处理、人工智能和分布式系统的创业公司。他们所提供的聊天机器人技术一直颇受欢迎&#xff0c;但更出名的是他们在NLP开源社区上的贡献。Huggingface一直致力于自然语言处理NLP技术的平民化(democr…...

修炼k8s+flink+hdfs+dlink(六:学习k8s-pod)

一&#xff1a;增&#xff08;创建&#xff09;。 直接进行创建。 kubectl run nginx --imagenginx使用yaml清单方式进行创建。 直接创建方式&#xff0c;并建立pod。 kubectl create deployment my-nginx-deployment --imagenginx:latest 先创建employment&#xff0c;不…...

ARM映像文件组成

引言 ARM编译器将各种源文件&#xff08;汇编文件、C语言程序文件、C语言程序文件&#xff09;编译生成ELF格式的目标文件&#xff08;后缀为.o文件&#xff0c;以下将目标文件简称为.o文件&#xff09;&#xff0c;.o文件经过连接器&#xff0c;和C/C运行时库一起编译生成ELF格…...

redis怎么设计一个高性能hash表

问题 redis 怎么解决的hash冲突问题 &#xff1f;redis 对于扩容rehash有什么优秀的设计&#xff1f; hash 目标是解决hash冲突&#xff0c;那什么是hash冲突呢&#xff1f; 实际上&#xff0c;一个最简单的 Hash 表就是一个数组&#xff0c;数组里的每个元素是一个哈希桶&…...

《软件方法》强化自测题-总纲(6)

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 按照业务建模、需求、分析、设计工作流考察&#xff0c;答案不直接给出&#xff0c;可访问自测链接或扫二维码自测&#xff0c;做到全对才能知道答案。 知识点见《软件方法》&#x…...

vue2中,下拉框多选和全选的实现

vue2中&#xff0c;下拉框多选和全选的实现 代码布局在methods: 中添加功能函数较为完整的一个整体代码&#xff1a; 如图所示点击全选即可完成下拉框中全部子项的全部的选中&#xff0c;同时取消全选即可全部取消选择。 代码布局 <div class"chos-box2"><…...

Android-Framework 默认音乐音量最大

代码位置&#xff1a;frameworks/base/services/core/java/com/android/server/audio/AudioService.java -712,6 712,9 public class AudioService extends IAudioService.Stub}} // force music max volume AudioSystem.DEFAULT_STREAM_VOLUME[AudioSystem.STREAM_MUSIC] MA…...

formData对象打印不出来

用el-upload上传图片 以流的形式传给后台 所以用formData对象带数据 let formData new FormData() formData.append(name&#xff0c;monkey7) console.log(formData) 明明已经把数据append进去了 console.log在控制台却打印不出 后来发现他得用formData.get("xxx"…...

【Web安全】SQL注入攻击几种常见防御手法总结

文章目录 前言一、使用参数化查询二、输入验证和过滤三、使用存储过程四、最小权限原则五、使用ORM框架六、使用准备语句七、使用安全的数据库连接八、避免动态拼接SQL语句九、使用防火墙和入侵检测系统(一)防火墙(二)入侵检测系统(Intrusion Detection System,简称IDS)十、定期…...

Linux网络编程杂谈(聊聊网络编程背后的故事)

数据是如何传输到物理网络上的&#xff1f; 以TCP为例&#xff0c;当 TCP 决定发送数据时&#xff0c;这些数据需要经过多个处理阶段才能真正被传输到物理网络。其中一个关键步骤是将数据移动到网络接口卡 (NIC)。以下是这个过程的详细描述&#xff1a; 数据序列化: TCP 会为要…...

执行Maven项目时,无法解析项目的依赖关系

报错[ERROR] Failed to execute goal on project pdms-services: Could not resolve dependencies for project ..... 在IDEA ----> setting ---->Remote Jar Repositories ----> Maven jar repositories中添加远程仓库的http地址。 再次进行maven的clean和install就好…...

索引有哪些缺点以及具体有哪些索引类型

索引的优缺点 优点&#xff1a; 合理的增加索引&#xff0c;可以提高数据查询的效率&#xff0c;减少查询时间 有一些特殊的索引&#xff0c;可以保证数据的完整性&#xff0c;比如唯一索引 缺点&#xff1a; 创建索引和维护索引需要消耗时间 索引需要额外占用物理空间 对创建…...

前端学成在线项目详细解析二

12-banner区域-课程表布局 HTML布局 <div class"right"><h3>我的课程表</h3><div class"content">1</div> </div> CSS样式 /* 课程表 */ .banner .right {margin-top: 60px;width: 218px;height: 305px;background-…...

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

EtherNet/IP转DeviceNet协议网关详解

一&#xff0c;设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络&#xff0c;本网关连接到EtherNet/IP总线中做为从站使用&#xff0c;连接到DeviceNet总线中做为从站使用。 在自动…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...