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

【运维】运维常用命令

shell大全

  • 读取文件每一行内容
  • 文件是否存在
  • 数组定义和循环取值
  • 变量循环
  • 流程控制语句:case
  • 判断数值相等/大于/小于
  • 判断字符串相等
  • awk求和、平均、最大、最小
  • sed用法
  • expr
  • bc计算器

读取文件每一行内容

while read line
doecho $line
done < a.txt

文件是否存在

if [ ! -d "/data/" ];thenmkdir /data
elseecho "文件夹已经存在"
fi

说明

-e 判断对象是否存在
-d 判断对象是否存在,并且为目录
-f 判断对象是否存在,并且为常规文件
-L 判断对象是否存在,并且为符号链接
-h 判断对象是否存在,并且为软链接
-s 判断对象是否存在,并且长度不为0
-r 判断对象是否存在,并且可读
-w 判断对象是否存在,并且可写
-x 判断对象是否存在,并且可执行
-O 判断对象是否存在,并且属于当前用户
-G 判断对象是否存在,并且属于当前用户组
-nt 判断file1是否比file2新  [ "/data/file1" -nt "/data/file2" ]
-ot 判断file1是否比file2旧  [ "/data/file1" -ot "/data/file2" ]

数组定义和循环取值

arr=(a b c)echo ${arr[0]}	#获取第一个元素的值
echo ${arr[-1]}	#获取最后一个元素的值
# 获取所有元素的值
echo ${arr[*]}
echo ${arr[@]}
# 统计数组的长度
echo ${#arr[*]}
# 打印数组的下标值
echo ${!arr[@]}# 循环 方式一 直接取值
for i in ${arr[@]}
doecho $i
done
# 循环 方式二 下标取值
for i in ${!arr[@]}
doecho ${arr[i]}
done
# 循环 方式三
for((i=0;i<${#arr[@]};i++))
doecho ${arra[i]}
done

变量循环

for i in $(seq 1 $1)
doecho $i
donefor (( i = 1; i < $line; i++ ))
doecho $i
done

流程控制语句:case

  case $1 in"start")op start $2;;"stop")op stop $2;;"status")op status $2;;*)echo "Usage: service $2 start|stop|status";;esac

判断数值相等/大于/小于

# 整数比较
-eq     等于,如:if ["$a" -eq "$b" ]
-ne     不等于,如:if ["$a" -ne "$b" ]
-gt     大于,如:if ["$a" -gt "$b" ]
-ge    大于等于,如:if ["$a" -ge "$b" ]
-lt      小于,如:if ["$a" -lt "$b" ]
-le      小于等于,如:if ["$a" -le "$b" ]
<  小于(需要双括号),如:(("$a" < "$b"))
<=  小于等于(需要双括号),如:(("$a" <= "$b"))
>  大于(需要双括号),如:(("$a" > "$b"))
>=  大于等于(需要双括号),如:(("$a" >= "$b"))

判断字符串相等

if [ "$test"x = "test"x ]; then# = 等于,如:if [ "$a" = "$b" ]# == 等于,如:if [ "$a" == "$b" ],与 = 等价

这里的关键有几点:

  • 使用单个等号
  • 注意到等号两边各有一个空格:这是unix shell的要求
  • 注意到"$test"x最后的x,这是特意安排的,因为当$test为空的时候,上面的表达式就变成了x = testx,显然是不相等的。而如果没有这个x,表达式就会报错:[: =: unary operator expected

awk求和、平均、最大、最小

# 科学计数法打印
bin/hdfs dfs -du  /warehouse/hive/ | awk '{sum+=$1} END {print "Sum = ", sum/1024/1024}'# 非科学计数法打印
bin/hdfs dfs -du  /warehouse/hive/ | awk '{sum+=$1} END {printf("%d\n", sum/1024/1024)}'1、求和
awk '{sum+=$1} END {print "Sum = ", sum}' number.txt2、求平均
awk '{sum+=$1} END {print "Average = ", sum/NR}' number.txt3、求最大值
awk 'BEGIN {max = 0} {if ($+0 > max+0) max=$1} END {print "Max=",max}' number.txt4、求最小值(min的初始值设置一个超大数即可)
awk 'BEGIN {min = 1999999} {if ($1<min) min=$1 fi} END {print "Min=", min}' number.txt5. 输出排序最大值所在行内容如下,以第一列排序cat num.txt
858   mail
1858  nginx
8502  tomcat
1145  zabbix
3457  mongodb
1356  redis
974   Mysql记录最大值的时候,同时记录一下当前行,后面输出这个变量即可      此处的的content可随意定义awk 'BEGIN {max = 0} {if ($1+0 > max+0) {max=$1 ;content=$0} } END {print content}' num.txt

sed用法

# 取 1到3 行的内容 重定向到 b.txt
sed -n "1,3p" a.txt > b.txt# 替换
sed -i "s/abc/def/g" ./a.txt

如果我们使用sed命令时,如果出现特殊字符,可能会报错,示例如下:

# /不可以作为界定符,因为会与里面的内容冲突
sed -i 's/flink//etc/g' # 井号#不可以作为界定符,因为会与里面的内容冲突
sed -i 's#jdbc://127.0.0.1&password=1#aa$username=root#g' # @不可以作为界定符,因为会与里面的内容冲突
sed -i 's@jdbc://127.0.0.1&password=1@aa$username=root@g'

那该如何解决呢?

我们得看来里面的内容来选择特定的界定符,例如:

里面含有"/",可以选择“#”或“ @”作为界定符;
里面含有“#”,可以选择“@”或“/”作为界定符;
里面含有“@”,可以选择“/”或“#”作为界定符。
那么如果都有以上的内容呢?只能在被替换文本中使用转义符号 “\”了,如:

sed -i 's/oracle/\/etc\/oracle/g'

expr

expr支持普通的算术操作,算式表达式优先级低于字符串表达式,高于逻辑关系表达式。

  • + - 加减运算。两端参数会转换为整数,如果转换失败则报错;
  • * / % 乘,除,取模运算。两端参数会转换整数,如果转换失败则报错;
  • () 可以用来表示优先级,但需要用反斜杠转义。
a=3
b=4echo `expr $a + $b`        #输出7
echo `expr $a - $b`        #输出-1
echo `expr $a \* $b`       #输出12,*需要转义
echo `expr $a / $b`        #输出0,整除
echo `expr $a % $b`        #输出3
echo `expr \($a + 1\)\*\($b+1\)` #输出20,值为(a+1)*(b+1)

bc计算器

echo '6.5/2.7' | bc
2echo 'scale=5;6.5/2.7' | bc    #其中scale是控制小数点位数
2.40740echo "5+3" | bc
8echo "(2+6)*3" | bc
24#关系运算符
||, &&, !, =, ==
#基本数学运算
+, -, *, /, %, ^,
#自增,自减
++, --
#逻辑运算符
<, >, <=, >=, !=length()    #用于求表达式的结果长度
length(300)
3scale()  #用于获取表达式小数点后位数
scale(3.14)
2sqrt()  #求平方根
scale=6;sqrt(21)
4.582575#如果使用了bc -l,可以将预置的数学运算导入
s(x)    	#sin函数,x为弧度
s(3.14)
.00159265291648695254c(x)		#cos函数
c(0)
1.00000000000000000000a(x)		#arctang函数
a(sqrt(2)/2)
0.61547970867038734106l(x)		#自然对数
l(10)
2.30258509299404568401e(x)		#自然数为底的指数函数
e(2)
7.38905609893065022723j(n,x)	#Basel函数,n阶
j(1,3)
0.33905895852593645892

相关文章:

【运维】运维常用命令

shell大全读取文件每一行内容文件是否存在数组定义和循环取值变量循环流程控制语句&#xff1a;case判断数值相等/大于/小于判断字符串相等awk求和、平均、最大、最小sed用法exprbc计算器读取文件每一行内容 while read line doecho $line done < a.txt文件是否存在 if [ …...

MYSQL常用命令大全

文章目录 基本语句链接数据库显示已有数据库创建数据库选择数据库显示数据库中的表显示当前数据库的版本信息,链接用户名删除数据库创建表表 增加将查询结果插入到新表中:表 删除表 修改表 查询in子查询between ~ and ~ 模糊查询模糊查询regexp中的OR:多个信息查询同义词:删…...

锚点定位方案

一 背景知识: 1.1 #号的作用 #代表网页中的一个位置。其右面的字符&#xff0c;就是该位置的标识符。比如&#xff0c;http://www.example.com/index.html#print 就代表网页index.html的print位置。浏览器读取这个URL后&#xff0c;会自动将print位置滚动至可视区域。 为网页…...

Flink学习--第一章 初识Flink

Flink是Apache基金会旗下的一个开源大数据处理框架&#xff0c;如今已被很多人认为是大数据实时处理的方向和未来&#xff0c;许多公司也都在招聘和储备掌握Flink技术的人才。 1.1 Flink的源起和设计理念 Flink起源于一个叫作Stratosphere的项目&#xff0c;它是由3所地处柏林的…...

电脑技巧:常见的浏览器内核介绍

浏览器是大家日常使用电脑必备的软件&#xff0c;网上查资料、听音乐、办公等等&#xff0c;都不离不开浏览器给我们提供的方便&#xff0c;今天小编来给大家介绍一下常见的浏览器内核&#xff0c;一起来学习一下吧&#xff01;1、Chromium 内核Google Chrom内核&#xff1a;统…...

【数据分析之道①】字符串

文章目录专栏导读1、字符串介绍2、访问字符串中的值3、字符串拼接4、转义字符5、字符串运算符6、字符串格式化7、字符串内置函数专栏导读 ✍ 作者简介&#xff1a;i阿极&#xff0c;CSDN Python领域新星创作者&#xff0c;专注于分享python领域知识。 ✍ 本文录入于《数据分析之…...

网络安全之防火墙

目录 网络安全之防火墙 路由交换终归结底是联通新设备 防御对象&#xff1a; 定义&#xff1a; 防火墙的区域划分&#xff1a; 包过滤防火墙 --- 访问控制列表技术 --- 三层技术 代理防火墙 --- 中间人技术 --- 应用层 状态防火墙 --- 会话追踪技术 --- 三层、四层 UTM …...

STM32之点亮一个LED小灯(轮询法)

目录 一、初始化GPIO口 二、按键点亮LED灯&#xff08;轮询法&#xff09; 一、初始化GPIO口 1、点亮LED小灯前&#xff0c;需要先初始化GPIO口 HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init) GPIO_TypeDef *GPIOx&#xff1a; //指初始化GPIO…...

pandas读CSV、读JSON、Excel

学习让我快乐 pandas的数据读取基本操作 pandas是Python中非常流行的数据处理库&#xff0c;它提供了许多强大的工具来读取、处理和分析数据。在本文中&#xff0c;我们将介绍pandas中的一些基本数据读取操作。 读取CSV文件 CSV文件是最常见的数据文件格式之一&#xff0c;p…...

企业站项目

企业站项目 一、项目实现结果 该项目共分为七大类&#xff1a;头部区域&#xff08;logo图片、输入框&#xff09;、导航区域、轮播图区域、内容区域、市场项目区域、产品中心区域、尾部区域 如图所示&#xff1a; http://企业站项目源码http://xn--vhquvo17e18gllbz7h2v9d …...

STM32开发(九)STM32F103 通信 —— I2C通信编程详解

文章目录一、基础知识点二、开发环境三、STM32CubeMX相关配置四、Vscode代码讲解GPIO模拟I2C代码SHT30相关代码main函数中循环代码五、结果演示方式一、示波器分析I2C数据方式2、通过Modbus将获取到的数据传到PC上一、基础知识点 本实验通过I2C通信获取SHT30温湿度值&#xff…...

手撕数据结构—栈

Tips不得不再次提一下这个语法问题&#xff0c;当数组创建的时候&#xff0c;进行初始化的时候&#xff0c;分为全部初始化或者说部分初始化&#xff0c;对于不完全初始化而言&#xff0c;剩下的部分就全部默认为零。现在比如说你想对整型数组的1万个元素把它全部变成-1&#x…...

【java刷题】排序子序列

这里写目录标题问题描述解决思路实现代码问题描述 牛牛定义排序子序列为一个数组中一段连续的子序列,并且这段子序列是非递增或者非递减排序的。牛牛有一个长度为n的整数数组A,他现在有一个任务是把数组A分为若干段排序子序列,牛牛想知道他最少可以把这个数组分为几段排序子序…...

Springboot怎么快速集成Mybatis和thymeleaf?

前言有时候做方案&#xff0c;需要模拟一些业务上的一些场景来验证方案的可行性&#xff0c;基本上每次都是到处百度如何集成springbootmybatisthymeleaf这些东西的集成平时基本上一年也用不了一次&#xff0c;虽然比较简单&#xff0c;奈何我真得记不住详细的每一步&#xff0…...

shell常见面试题一

&#xff08;1&#xff09;、set //查看系统变量 &#xff08;2&#xff09;、chsh -s /bin/zsh test //修改用户登录shell &#xff08;3&#xff09;、2>&1 //标准错误重定向到标准输出 &> //同样可以将标准错误重定向到标准输出 如下&#xff1a; ls test.…...

python如何快速采集美~女视频?无反爬

人生苦短 我用python~ 这次康康能给大家整点好看的不~ 环境使用: Python 3.8 Pycharm mou歌浏览器 mou歌驱动 —> 驱动版本要和浏览器版本最相近 <大版本一样, 小版本最相近> 模块使用: requests >>> pip install requests selenium >>> pip …...

kali内置超好用的代理工具proxychains

作者&#xff1a;Eason_LYC 悲观者预言失败&#xff0c;十言九中。 乐观者创造奇迹&#xff0c;一次即可。 一个人的价值&#xff0c;在于他所拥有的。所以可以不学无术&#xff0c;但不能一无所有&#xff01; 技术领域&#xff1a;WEB安全、网络攻防 关注WEB安全、网络攻防。…...

Java栈和队列·下

Java栈和队列下2. 队列(Queue)2.1 概念2.2 实现2.3 相似方法的区别2.4 循环队列3. 双端队列 (Deque)3.1 概念4.java中的栈和队列5. 栈和队列面试题大家好&#xff0c;我是晓星航。今天为大家带来的是 Java栈和队列下 的讲解&#xff01;&#x1f600; 继上一个讲完的栈后&…...

b01lers CTF web 复现

warmup 按照提示依次 base64 加密后访问&#xff0c;可以访问 ./flag.txt&#xff0c;也就是 Li9mbGFnLnR4dA 。 from base64 import b64decode import flaskapp flask.Flask(__name__)app.route(/<name>) def index2(name):name b64decode(name)if (validate(name))…...

三月份跳槽了,历经字节测开岗4轮面试,不出意外,被刷了...

大多数情况下&#xff0c;测试员的个人技能成长速度&#xff0c;远远大于公司规模或业务的成长速度。所以&#xff0c;跳槽成为了这个行业里最常见的一个词汇。 前几天&#xff0c;我看到有朋友留言说&#xff0c;他在面试字节的测试开发工程师的时候&#xff0c;灵魂拷问三小…...

springboot+vue驾校管理系统 idea科目一四预约考试,练车

加大了对从事道路运输经营活动驾驶员的培训管理力度&#xff0c;但在实际的管理过程中&#xff0c;仍然存在以下问题&#xff1a;(1)管理部门内部人员在实际管理过程中存在人情管理&#xff0c;不进行培训、考试直接进行发证。(2)从业驾驶员培训机构不能严格执行管理部门的大纲…...

【pytorch】使用deepsort算法进行目标跟踪,原理+pytorch实现

目录deepsort流程一、匈牙利算法二、卡尔曼滤波车速预测例子动态模型的概念卡尔曼滤波在deepsort中的动态模型三、预测值及测量值的含义deepsort在pytorch中的运行deepsort流程 DeepSORT是一种常用的目标跟踪算法&#xff0c;它结合了深度学习和传统的目标跟踪方法。DeepSORT的…...

Python 基础教程【3】:字符串、列表、元组

本文已收录于专栏&#x1f33b;《Python 基础》文章目录&#x1f315;1、字符串&#x1f95d;1.1 字符串基本操作&#x1f34a;1.1.1 字符串创建&#x1f34a;1.1.2 字符串元素读取&#x1f34a;1.1.3 字符串分片&#x1f34a;1.1.4 连接和重复&#x1f34a;1.1.5 关系运算&…...

(数据结构)八大排序算法

目录一、常见排序算法二、实现1. 直接插入排序2.&#x1f31f;希尔排序3. 选择排序4.&#x1f31f;堆排序5. 冒泡排序7. &#x1f31f;快速排序7.1 其他版本的快排7.2 优化7.3 ⭐非递归7. &#x1f31f;归并排序7.1 ⭐非递归8. 计数排序三、总结1. 分析排序 (Sorting) 是计算机…...

构建GRE隧道打通不同云商的云主机内网

文章目录1. 环境介绍2 GRE隧道搭建2.1 华为云 GRE 隧道安装2.2 阿里云 GRE 隧道安装3. 设置安全组4. 验证GRE隧道4.1 在华为云上 ping 阿里云云主机内网IP4.2 在阿里云上 ping 华为云云主机内网IP5. 总结1. 环境介绍 华为云上有三台云主机&#xff0c;内网 CIDR 是 192.168.0.0…...

48天C++笔试强训 001

作者&#xff1a;小萌新 专栏&#xff1a;笔试强训 作者简介&#xff1a;大二学生 希望能和大家一起进步&#xff01; 本篇博客简介&#xff1a;讲解48天笔试强训第一天的题目 笔试强训 day1选择题12345678910编程题12选择题 1 以下for循环的执行次数是&#xff08;&#xff…...

Android 11新增系统服务

1.编写.aidl文件存放位置&#xff1a;frameworks/base/core/java/android/ospackage android.os;interface ISystemVoiceServer {void setHeightVoice(int flag);void setBassVoice(int flag);void setReverbVoice(int flag);}2.将.aidl文件添加到frameworks/base/Android.bp f…...

“你要多弄弄算法”

开始瞎掰 ▽ 2月的第一天&#xff0c;猎头Luna给我推荐了字节的机会&#xff0c;菜鸡我呀&#xff0c;还是有自知之明的&#xff0c;赶忙婉拒&#xff1a;能力有限&#xff0c;抱歉抱歉。 根据我为数不多的和猎头交流的经验&#xff0c;一般猎头都会稍微客套一下&#xff1a…...

【数据结构】千字深入浅出讲解队列(附原码 | 超详解)

&#x1f680;write in front&#x1f680; &#x1f4dd;个人主页&#xff1a;认真写博客的夏目浅石. &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd; &#x1f4e3;系列专栏&#xff1a;C语言实现数据结构 &#x1f4ac;总结&#xff1a;希望你看完…...

vue面试题(day04)

vue面试题vue插槽&#xff1f;vue3中如何获取refs&#xff0c;dom对象的方式&#xff1f;vue3中生命周期的和vue2中的区别&#xff1f;说说vue中的diff算法&#xff1f;说说 Vue 中 CSS scoped 的原理&#xff1f;vue3中怎么设置全局变量&#xff1f;Vue中给对象添加新属性时&a…...