Shell Linux学习笔记
注意:该文章摘抄之百度,仅当做学习笔记供小白使用,若侵权请联系删除!
目录
什么是shell ?
Linux正则匹配
grep
tar与unzip
echo
history
重定向
shell 单双引号
位置参数
预定义变量
运算
正则表达式
字符截取命令
awk 命令
seq 命令
整数比较
多重条件判断
if 判断
case 判断
for 循环
while 循环
until 循环
什么是shell ?
定义:shell是一个命令行解释器,为用户提供一个向linux 内核发送请求以便远程程序的界面系统级程序,用户可以用shell来启动、挂起、停止及编写程序
Linux正则匹配
正则表达式又称为正规表达式、常规表达式、在代码中常简写为regex、regex或RE。正则表达式是使用单个字符串来描述、匹配一系列符合某个句法规则的字符串,简单来说,是一种匹配字符串的方法,通过一些特殊符号,实现快速查找、删除、替换某个特定的字符串。
shell三剑客:grep,sed,awk
grep
grep [选项] [查找条件(正则)] [目标文件]-E:开启扩展的正则表达式
-c:计算找到'搜寻字符串'的次数
-i:忽略大小写的不同,所以大小写视为相同
-o:只显示被漠视匹配到的字符串
-v:反向选择,即输出没有匹配到的那些字符
--color=auto:可以将找到的关键词部分加上颜色的显示!
-n:顺便输出行号
-w:表示精确匹配一个字符
元字符
^ 匹配输入字符串的开始位置。除非在方括号表达式中使用,表示不包含该字符集合。要匹配"^"字符本身,需要转移"^"
$ 匹配输入字符串的结尾位置。如果设置了RegExp对象的Multiline属性,则"$"也匹配'\n'或'r'
. “.”代表除"\n\s"之外的任何单个字符
\ 反斜杠,又叫转义字符,去除其后紧跟的元字符或通配符的 特殊意义
匹配前面的子表达式零次或多次。要匹配"*"字符,要进行\转移
n和m均为非负整数,其中n<=m,最少匹配n次,最多匹配m次
grep查找特定的字符
grep -n 'the' test.txt grep -vn 'the' test.txt #匹配除了包含the的行
使用[]来查找集合字符
eg: 要查找short和shirt时
比如我们要查找“shirt”与“short”这两个字符串时,可以发现这两个字符串均包含sh与rt。 此时执行下面命令可以提示查找到“shirt”和“short”这两个字符串,其中“[]”无论有几个字符,都代表一个字符, 但是会按照[]内的每个字符都去做一次匹配,比如[io]表示要匹配i或者o。 grep -n "sh[io]rt" test.txt
查找oo前面不是w的字符串
若查找“oo”前面不是“w”的字符串,只需要通过集合字符的反向选择“[A]”来实现该目的。 例如执行“grep -n‘[^w]oo’test.txt”命令表示在 test.txt 文本中查找“oo”前面不是“w”的字符串。 grep -n '[^w]oo' test.txt
tar与unzip
tar
-f<备份文件>或--file=<备份文件> 指定备份文件。
-v或--verbose 显示指令执行过程。
-x或--extract或--get 从备份文件中还原文件。
-z或--gzip或--ungzip 通过gzip指令处理备份文件。
unzip
-l 显示压缩文件内所包含的文件。
-v 执行时显示详细的信息。
echo
echo [param] [content]
-e # 开启转义,对反斜杠控制的字符转换
echo -e '\n' # 显示换行
echo `date` # 显示命令执行的结果
history
history [param][file]
-c # 清空历史命令
-w # 写入文件
历史命令的调用:
!n # 重复执行第n条历史命令
!! # 重复执行上一条命令
!字符串 # 重复执行最后一条以该字符串开头的命令
- Bash快捷键
- crtl+A 转前 crtl+E 转后 crtl+R 搜索历史命令 crtl+Z 放到后台运行
- crtl+K 剪切光标后 crtl+U 剪切光标前 crtl+Y 粘贴前面的内容
重定向
# 输入输出重定向
# # 标准类型
> # 重定向文件,会覆盖
>> # 追加向文件,会追加
# # 错误类型
error command 2> 文件 # 覆盖,命令的错误输出
error command 2>> 文件 # 追加,命令的错误输出
# # 正常和错误同时保存
command > file 2>&1 # 覆盖,错误及正常的保存同一文件
command >> file 2>&1 # 追加,错误及正常的保存同一文件
command $> file # 覆盖,错误及正常的保存同一文件
command $>> file # 追加,错误及正常的保存同一文件
command >> file1 2>>file2 # 正确的追加到文件1,错误追加到文件2
shell 单双引号
# shell 的单双引号
[root@localhost ~]# name=abc
[root@localhost ~]# echo '$name'
$name
[root@localhost ~]# echo ''$name''
abc
变量设置规则
变量名称可以由字母、数字和下划线组成,但不能以数字开头。
变量的默认类型都是字符串型
变量用等号连接值,等号左右两侧不能有空格。
变量的值如果有空格,需要使用单引号或者双引号苦括起来。
不能使用标点符号
位置参数
# 熟悉
$n # 对应参数
$* # 所有的参数,作为一个整体
$@ # 所有的参数,单独作为
$# # 所有参数的个数
[root@localhost ~]# vim canshu02.sh
#!/bin/bashecho $0 #表示接受命令本身
echo $1 #接受第一个参数
echo $2 #接受第二个参数
echo $3 #接受第三个参数[root@localhost ~]# ./canshu02.sh 111 222 333
./canshu02.sh
111
222
333
[root@localhost ~]# vim canshu03.sh
#!/bin/bashsum=$(( $1+$2 ))
echo "sum is : $sum"#举例说明$*和$@的区别
[root@localhost ~]# vim canshu04.sh
#!/bin/bash
for i in "$*"doecho $idonefor y in "$@"doecho $ydone[root@localhost ~]# ./canshu04.sh 111 222 333 444
111 222 333 444
111
222
333
444
#$*将所有参数看成一个整体,$@传递的每个参数区分对待
预定义变量
$? # 上一次执行结果的状态,
$$ # 当前进程的PID
$! # 后台运行的最后一个进程号 PID
运算
# 数值运算
declare [param] name
- # 给变量设定类型属性
+ # 取消变量的类型属性
-i # 声明整型
-x # 将变量声明未环境变量
-p # 显示被声明的类型#给变量aa和bb赋值
[root@localhost ~]# aa=111
[root@localhost ~]# bb=222
[root@localhost ~]# declare -i cc=$aa+$bb 同 cc=$(expr $aa + $bb ) [注意“+”号左右两侧必须有空格]同 cc=$(( $aa+$bb ))
正则表达式
* # 匹配0次或多次
. # 匹配除换行符的任意一个字符
[] # 匹配中括号中指定一个任意一个字符,只匹配一个
[^] # 匹配除中括号的字符以外的任意一个字符
\{n\} # 表示前面的字符恰好出现n次,eg: [0-9]\{4\} 匹配4位数字
\{n,\} # 表示至少匹配字符不少于n次
\{n,m\} # 匹配字符出现在[n-m]次
注意:grep 匹配加\,egrep 转义无需加 \
字符截取命令
cut [param] filename
-f # 列号
-d # 分隔符,第一列从1开始
eg: command | cut -d '|' -f 1 # 匹配以|分隔的第一列字符
注意:cut 不可以用空格作为分隔符,只用作制表符分割
awk 命令
awk 'pattern' file '{print $n}' # 打印第n列数据
eg: df -h | awk '{print $1 "\t" $5}' # 打印提取第一列和第二列eg: df -h | awk '{print $5}' | cut -d "%" -f 1 # 查看占用百分比截取%
seq 命令
sed [param] `action` filename
# param
-n # 只打印经过sed命令处理的数据
-e # 容许输入多条sed命令编辑
-i # 用sed修改结果直接修改读取数据,文件改变
# action
a\ # 追加
c\ # 行替换
i\ # 插入
d # 删除指定的行
p # 打印指定的行
s # 字符串替换,格式:'行范围+s/old_str/new_str/g'eg:
sed -n '2p' test.log # 查看第二行数据
sed '1,3d' test.log # 查看除1-3行的数据
sed '3a hello' test.log # 增加第三行的hello输出数据
# replace
sed '3s/oot/eet/g' my.log # 将第三行的oot改变为eet输入
sed -i '3s/oot/eet/g' my.log # 将第三行的oot改变为eet,文件改变
整数比较
[1 -param 2] && ehco yes || echo no
# param
-eq # ==
-ne # !=
-gt # >
-lt # <
-ge # >=
-lt # <=
多重条件判断
# 字符判断
-z str # 判断是否为空
-n str # 判断是否非空
-a # &
-o # |
eg:
[ -n "$aa" -a "$aa" -gt 23 ] && echo yes || echo no # 打印 yes
if 判断
if [conition];thenpass
fieg:
#统计首个程序根分区使用率
rate=$(df -h | awk '{print $5}' | cut -d "%" -f 1 | head -n 1)if [ $rate -ge 20 ]then
echo "error 10"
fi
# if--else多条件
if [conition]thenpass
elifthenpass
else thenpass
fi
# 单条件
if [conition]thenpasselsepass
fi
case 判断
# case语句case $变量名 in"值1")如果变量的值等值1,则执行程序1;;"值2")如果变量的值等值2,则执行程序2;; ……省略其他分支*)如果变量的值都不是以上的值,则执行程序;;
esac举例:#!/bin/bash
#测试case语句echo "如果想去上班,请输入“1”"
echo "如果不想上班,请输入“2”"
echo "如果想居家办公,请输入“3”"read -t 30 -p "请输入你的选择:" choose
case "$choose" in"1")echo "想去上班!";;"2")echo "不想去上班!";;"3")echo "居家办公!";;*)echo "只能输入1或者2或者3";;
esac
for 循环
# 语法1
for i in 值1 值2 值3 # 同 for ((初始值;循环控制条件;变量变化))dopassdone
eg1: done # for循环完毕后,最后执行一次
for i in 1 2 3 4 5 6doecho $idone
eg2:
s=0
for (( i=1;i<=100;i=i+1 ))dos=$(( $s+$i ))done echo "$s"
while 循环
while [condition]do passdoneeg:
#从1加到100 i=1
s=0while [ $i -le 100 ]
#如果变量i的值小于等于100,则执行循环 dos=$(( $s+$i ))i=$(( $i+1 ))doneecho "The sum is: $s"
until 循环
# 循环,和while循环相反,until循环时,只要条件判断式不成立,则进行循环
#从1加到100i=1
s=0until [ $i -gt 100 ]
#循环直到变量i的值大于100,循环就停止了 dos=$(( $s+$i ))i=$(( $i+1 ))doneecho "The sum is : $s "
相关文章:
Shell Linux学习笔记
注意:该文章摘抄之百度,仅当做学习笔记供小白使用,若侵权请联系删除! 目录 什么是shell ? Linux正则匹配 grep tar与unzip echo history 重定向 shell 单双引号 位置参数 预定义变量 运算 正则表达式 字符截取命令 …...
kingbase常用SQL总结之锁等待信息
锁信息与等待事件 分析kingbase(pg)数据库锁等待、死锁时需要我们准确的定位等锁或者死锁相关的事务。关于获取锁等待信息或者死锁信息已有经典的SQL可以直接使用,但是需要我们先了解sql语句获取的每个字段的意义。 获取到锁等待事务不能完全…...
「优选算法刷题」:长度最小的子数组
一、题目 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。 示例 1: 输…...
RuoYi-Cloud本地部署--详细教程
文章目录 1、gitee项目地址2、RuoYi-Cloud架构3、本地部署3.1 下载项目3.2 idea打开项目3.3 启动nacos3.4 若依数据库准备3.5 启动redis3.6 修改nacos中的各个模块的配置文件3.7 启动ruoyi前端项目3.8 启动各个微服务模块 4、启动成功 1、gitee项目地址 https://gitee.com/y_p…...
如何优雅的发布一个 TypeScript 软件包?
向 NPM 发布软件包本身并不是一个特别困难的挑战。但是,配置你的 TypeScript 项目以取得成功可能是一个挑战。你的软件包能在大多数项目上运行吗?用户能否使用类型提示和自动完成功能?它能与 ES Modules (ESM) 和 CommonJS (CJS) 风格的导入一…...
总结的太到位:python 多线程系列详解
前言: 上vip课的时候每次讲到框架的执行,就会有好学的同学问用多线程怎么执行,然后我每次都会说在测开课程会详细讲解,这并不是套路,因为如果你不理解多线程,不清楚什么时候该用什么时候不该用,…...
惬意上手Python —— 装饰器和内置函数
1. Python装饰器 Python中的装饰器是一种特殊类型的函数,它允许用户在不修改原函数代码的情况下,增加或修改函数的行为。 具体来说,装饰器的工作原理基于Python的函数也是对象这一事实,可以被赋值给变量、作为参数传递给其他函数或者作为其他…...
python 调用dll
在Python中,可以使用ctypes库来调用DLL文件。ctypes库是一个标准库,用于在Python中加载共享库(例如DLL文件)并调用其中的函数。 以下是一个简单的示例,演示如何使用ctypes库调用DLL文件中的函数: import c…...
docker里Java服务执行ping命令模拟流式输出
文章目录 业务场景处理解决实现ping功能并实时返回输出实现长ping和中断请求docker容器找不到ping命令处理 业务场景 我们某市的客户,一直使用CS版本的信控平台,直接安装客户Windows server服务器上,主要对信号机设备进行在线管理、方案配时…...
代码随想录算法训练营第十三天| 239. 滑动窗口最大值 、347.前 K 个高频元素
239. 滑动窗口最大值 思路: 用遍历区间的元素时,维护一个单调队列,从大到小排列。 要找到最大值,实际单调队列保存区间内最大值及最大值右侧的第二大值(用于当前最大值处于区间左端,在区间右移时更新临时最…...
旋转花键的使用寿命与机械原理分析
旋转花键是一种传动部件,广泛应用于各种机械设备中。对于厂商来说,如何保证使用寿命是重中之重,而旋转花键的使用寿命与其机械原理密切相关,了解其机械原理有助于更好地维护和使用旋转花键,从而提高其使用寿命。 旋转花…...
互联网摸鱼日报(2024-01-22)
互联网摸鱼日报(2024-01-22) 开源中国资讯 Stability AI 推出更小、更高效的 1.6B 语言模型 X 正面向 Android 推出音频和视频通话 Extism —— WebAssembly 插件实现框架 Gitee 推荐 | 龙蜥社区最佳安全加固实践指南 security-benchmark 每日一博 | 得物云原生容器技术探…...
CentOS 7 安装配置MySQL
目录 一、安装MySQL编辑编辑 1、检查MySQL是否安装及版本信息编辑 2、卸载 2.1 rpm格式安装的mysql卸载方式 2.2 二进制包格式安装的mysql卸载 3、安装 二、配置MySQL 1、修改MySQL临时密码 2、允许远程访问 2.1 修改MySQL允许任何人连接 2.2 防火墙的问题 2…...
Gold-YOLO(NeurIPS 2023)论文与代码解析
paper:Gold-YOLO: Efficient Object Detector via Gather-and-Distribute Mechanism official implementation:https://github.com/huawei-noah/Efficient-Computing/tree/master/Detection/Gold-YOLO 存在的问题 在过去几年里,YOLO系列已经…...
多个coco数据标注文件合并
一、coco数据集是什么? COCO(Common Objects in Context)是一个用于目标检测和图像分割任务的标注格式。如果你有多个COCO格式的JSON文件,你可能需要将它们合并成一个文件,以便更方便地处理和管理数据。在这篇博客中&…...
Kubernetes(K8S)拉取本地镜像部署Pod 实现类似函数/微服务功能(可设置参数并实时调用)
以两数相加求和为例,在kubernetes集群拉取本地的镜像,实现如下效果: 1.实现两数相加求和 2.可以通过curl实时调用,参数以GET方式提供,并得到结果。(类似调用函数) 一、实现思路 需要准备如下的…...
k8s使用ingress实现应用的灰度发布升级
v1是1.14.0版本nginx ,实操时候升级到v2是1.20.0版本nginx,来测试灰度发布实现过程 一、方案:使用ingress实现应用的灰度发布 1、服务端:正常版本v1,灰度升级版本v2 2、客户端:带有请求头versionv2标识的请求访问版…...
最新热门商用GPT4.0带MJ绘画去授权版本自定义三方接口(开心版)
一台VPS 搭建宝塔 解析域名 上传程序至根目录 访问首页在线安装配置数据库 PHP版本选择:7.3 安装完成后访问网站首页即可! 配置APIKEY,登录网站后台自定义配置,不然网站无法使用! 网站后台地址/admin 默认账号:admin 密码…...
Halcon基于形状的模板匹配inspect_shape_model
Halcon基于形状的模板匹配 基于形状的匹配,就是使用目标对象的轮廓形状来描述模板。Halcon中有操作助手,可以直观 地进行形状模板匹配的参数选择以及效果测试。如果使用算子编写,步骤如下。 (1)从参考图像上选择检测的…...
html中根元素以及根元素字体的含义
在 HTML 中,根元素是指 <html> 标签,可以使用 CSS 来设置根元素的字体大小。根元素的字体大小会影响整个页面的文本内容,默认情况下,根元素的字体大小是浏览器默认的大小。 要设置根元素的字体大小,你可以使用 …...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用
在工业制造领域,无损检测(NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统,以非接触式光学麦克风技术为核心,打破传统检测瓶颈,为半导体、航空航天、汽车制造等行业提供了高灵敏…...
uniapp 小程序 学习(一)
利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 :开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置,将微信开发者工具放入到Hbuilder中, 打开后出现 如下 bug 解…...
Docker拉取MySQL后数据库连接失败的解决方案
在使用Docker部署MySQL时,拉取并启动容器后,有时可能会遇到数据库连接失败的问题。这种问题可能由多种原因导致,包括配置错误、网络设置问题、权限问题等。本文将分析可能的原因,并提供解决方案。 一、确认MySQL容器的运行状态 …...
ui框架-文件列表展示
ui框架-文件列表展示 介绍 UI框架的文件列表展示组件,可以展示文件夹,支持列表展示和图标展示模式。组件提供了丰富的功能和可配置选项,适用于文件管理、文件上传等场景。 功能特性 支持列表模式和网格模式的切换展示支持文件和文件夹的层…...
数据库正常,但后端收不到数据原因及解决
从代码和日志来看,后端SQL查询确实返回了数据,但最终user对象却为null。这表明查询结果没有正确映射到User对象上。 在前后端分离,并且ai辅助开发的时候,很容易出现前后端变量名不一致情况,还不报错,只是单…...
Python环境安装与虚拟环境配置详解
本文档旨在为Python开发者提供一站式的环境安装与虚拟环境配置指南,适用于Windows、macOS和Linux系统。无论你是初学者还是有经验的开发者,都能在此找到适合自己的环境搭建方法和常见问题的解决方案。 快速开始 一分钟快速安装与虚拟环境配置 # macOS/…...
