Linux开发 -- 编写脚本

使用脚本可以提高工作效率、减少人为错误、简化复杂操作、增加系统自动化管理能力等,是 Linux 系统管理和开发中非常重要的工具之一。

1.常见指令

  1. 变量操作

    • =:赋值操作符,用于给变量赋值。
    • $:变量引用符号,用于获取变量的值。
    • export:将变量导出为环境变量,使其在脚本和子进程中可用。
  2. 条件语句

    • if:用于执行条件判断,并根据不同条件执行不同的代码块。
    • else:与 if 配合使用,在条件不满足时执行的代码块。
    • elif:用于添加额外的条件判断分支。
  3. 循环结构

    • for:用于遍历列表或指定范围的数值,并执行相应的操作。
    • while:在给定条件为真时重复执行一段代码块。
  4. 函数

    • function:定义一个函数。
    • return:从函数中返回值。
    • call:调用函数。
  5. 文件操作

    • ls:列出文件和目录列表。
    • cd:改变当前工作目录。
    • cp:复制文件或目录。
    • mv:移动文件或目录。
    • rm:删除文件或目录。
    • touch:创建空文件或更新文件的访问和修改时间。
  6. 输入输出

    • echo:打印文本到标准输出。
    • read:从标准输入读取用户输入。
    • >:重定向标准输出到文件,会覆盖文件内容。
    • >>:重定向标准输出到文件,追加到文件末尾。
    • <:重定向标准输入从文件中读取。
  7. 命令执行

    • `command` 或 $(command):执行命令并将其输出作为字符串。
  8. 条件判断

    • -eq-ne-lt-gt-le-ge:用于数值比较的运算符。
    • -e-f-d-r-w-x:用于测试文件属性的运算符。
  9. 其他

    • sleep:暂停脚本执行一段时间。
    • exit:退出脚本,并返回一个退出状态码。

2.CMake自动编译脚本

set -x
rm -rf `pwd`/build/*
cd `pwd`/build &&cmake .. &&make
  1. set -x

    • 这是一个 shell 脚本的调试选项,它会打开脚本的调试模式,使得在终端上显示每个命令在执行之前先打印出来。
  2. rm -rf pwd/build/*

    • 这个命令会删除当前目录下 build 文件夹内的所有文件和子文件夹。
    • pwd 表示获取当前目录的路径。
  3. cd pwd/build

    • 这个命令会进入当前目录下的 build 文件夹。
  4. cmake ..

    • 这个命令会在 build 文件夹内执行 CMake 命令,使用上一级目录(即当前目录)中的 CMakeLists.txt 文件来配置项目的构建。
  5. make

    • 这个命令会在 build 文件夹内执行 make 命令,编译项目生成可执行文件或库文件。

 3.虚拟机网络报文重放

# 源IP和MAC地址
SRCIP=192.168.137.1
SRCMAC=00:0c:29:9a:a8:12# 目标IP和MAC地址
DSTIP=192.168.137.100
DSTMAC=90:df:7d:dc:43:f9# 为重放的test.pcap创建缓存
# tcpprep -a client -i test.pcap -o test.cache 
tcpprep -a client -i $1 -o test.cache # 重写目标IP和Mac地址
# tcprewrite --infile test.pcap --outfile test_1.pcap --dstipmap=0.0.0.0/0:$DSTIP --enet-dmac=$DSTMAC
tcprewrite --infile $1 --outfile test_1.pcap --dstipmap=0.0.0.0/0:$DSTIP --enet-dmac=$DSTMAC# 重写源IP和Mac地址
tcprewrite --infile test_1.pcap --outfile test_2.pcap --srcipmap=0.0.0.0/0:$SRCIP --enet-smac=$SRCMAC# 更新数据包校验和
tcprewrite --infile test_2.pcap --outfile testFinal.pcap --fixcsum# 重放包
sudo tcpreplay -v -i ens33 -x 1 testFinal.pcap

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

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

相关文章

【已解决】MySQL:常用的除法运算+精度处理+除数为0处理

目录 问题现象&#xff1a; 问题分析&#xff1a; 拓展&#xff1a; 1、除法运算&#xff1a; 拓展&#xff1a;MySQL中常用的几种除法运算 1、取整除法 2、浮点数除法 3、取余除法 4、向上取整除法 5、向下取整除法 2、运算结果的精度处理 1.1、浮点数 1.2、总位数 1.3、…

【NLP10-fasttext工具】

了解fasttext工具的作用 了解fasttext工具的优势及其原因 掌握fasttext的安装方法 1、认识fasttext工具 1.1、作用&#xff1a; 进行文本分类 训练词向量 1.2、工具包优势 正如它的名字&#xff0c;在保持较高精度的情况下&#xff0c;快速的进行训练和预测是fasttext的…

android 怎么自定义view

首先了解view的绘制流程: 所以onmeasure ---测量view onlayout---确定view大小----》所以继承ViewGroup必须要重写onlayout,确定子view 而onDraw----是继承view时候需要操作的。 所以:自定义ViewGroup一般是利用现有的组件根据特定的布局方式来组成新的组件。 自定义Vi…

python打包时遇见第三方包有隐藏依赖或者出现依赖错误

使用pyinstaller 打包成exe 文件步骤&#xff1a; 1.创建虚拟环境&#xff0c;并激活虚拟环境 #创建虚拟环境 python -m venv myenv #激活虚拟环境&#xff08;windows&#xff09; myenv\Scripts\activate2.导出需要的依赖 pip freeze > requirements.txt 或者 pip list …

社会规范和个人规范

世界有两套规范&#xff1a;社会规范和个人规范。 社会规范&#xff1a;友好&#xff0c;界限不明&#xff0c;不要求及时回报。 市场规范&#xff1a; 没有友情&#xff0c;没有爱情&#xff0c;没有小市民伤感&#xff0c;只有交易。 在传统经济学中&#xff0c;交易覆盖了…

AutoCAD 2020:三维建模与渲染,设计未来的建筑蓝图

AutoCAD 2020是一款功能强大且广泛应用的计算机辅助设计软件&#xff0c;它以其卓越的性能和丰富的功能&#xff0c;满足了机械、建筑、家居、纺织等诸多行业的设计需求。以下是AutoCAD 2020的一些主要功能介绍&#xff1a; 保存和安装优化&#xff1a;AutoCAD 2020在性能上进…

观成科技-基于自适应学习的人工智能加密流量检测技术

1.前言 人工智能技术的广泛应用正在深刻改变我们的生活。在网络安全领域&#xff0c;基于机器学习的检测技术也应用在许多场景中。随着信息技术的迅猛发展和数字化转型的深入推进&#xff0c;加密技术逐渐成为保障网络安全和数据隐私的核心手段&#xff0c;而基于机器学习的检…

企业HR怎么看待PMP证书?

企业HR在招聘和选拔人才时&#xff0c;往往会参考各种证书和资格来评估候选人的专业能力和素质。PMP&#xff08;Project Management Professional&#xff09;证书作为全球公认的项目管理专业人士认证&#xff0c;对于企业HR来说&#xff0c;无疑具有一定的参考价值。那么&…

每日五道java面试题之mybatis篇(四)

目录&#xff1a; 第一题. 映射器#{}和${}的区别第二题. 模糊查询like语句该怎么写?第三题. 在mapper中如何传递多个参数?第四题. Mybatis如何执行批量操作第五题 MyBatis框架适用场景 第一题. 映射器#{}和${}的区别 #{}是占位符&#xff0c;预编译处理&#xff1b;${}是拼接…

windows 安装cuda 11.2过程记录

参考&#xff1a; https://blog.csdn.net/m0_45447650/article/details/123704930 https://zhuanlan.zhihu.com/p/99880204?from_voters_pagetrue 在显卡驱动被正确安装的前提下&#xff0c;在命令行里输入nvidia-smi.exe 下载CUDA Toolkit: https://developer.nvidia.com/…

CrossEntropyLoss 和NLLLoss的关系

交叉熵损失在做一件什么事? 看公式: x是预测(不需要softmax归一化),y是label, N是batch维度的数量,交叉熵损失,干了三件事. 1. 对输入在类别维度求softmax 2. 多softmax后的数,求log 3. 对(样本数, 类别数)为shape的tensor计算NLLLoss. 其中,NLLloss做的就是log取负, 和o…

基础小白快速入门web前端开发技术----------->htm基础

HTML的文档结构 HTML 文档以<html>标记开始&#xff0c;以</html>标记结束 文档类型声明&#xff08;Doctype&#xff09;&#xff1a;告知浏览器正在使用哪个HTML版本 <!DOCTYPE html>根元素&#xff08;Root element&#xff09;&#xff1a;通常是<h…

java入门 - 规范你的代码注释

java基础语法-代码注释 注释只是为了提高可读性&#xff0c;不会被计算机编译。代码注释是架起程序设计者与程序阅读者之间的通信桥梁,最大限度的提高团队开发合作效率。也是程序代码可维护性的重要环节之一。 开发中注释可以分为三种方式&#xff1a; 行注释块注释类/方法注释…

Linux 大页内存 Huge Pages 虚拟内存

Linux 大页内存 Huge Pages 虚拟内存 - 秋来叶黄 - 博客园 (cnblogs.com) Linux为什么要有大页内存&#xff1f;为什么DPDK必须要设置大页内存&#xff1f;这都是由系统架构决定的。一开始为了解决一个问题&#xff0c;设计了对应的方案&#xff0c;随着事物的发展&#xff0c…

汽车信息安全--安全调试功能在量产后是否必须禁用(1)

目录 1.芯片生命周期与调试接口 2. 安全调试安全在哪里 2.1 常见安全调试解锁手段

Splitpanes拆分窗格插件使用

目录 基本用法 纵向排列 遍历渲染 动态拆分宽度 项目开发中用到了拆分窗格(就是下面的效果&#xff0c;可以拆分网页&#xff0c;我们项目通常都是用左右两块拆分&#xff0c;可以通过拖动图标进行左右拖动)&#xff0c;于是就发现了一个很好用的插件&#xff1a;Splitpane…

上位机图像处理和嵌入式模块部署(qmacvisual畸变矫正)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 大部分同学在开始做计算机图像的时候&#xff0c;是没有意识到畸变矫正这个问题的。当然不仅仅是畸变矫正&#xff0c;很多同学还会忽略光源的问题…

python异常:Exception、BaseException接收异常,并打印异常信息msg

except IOEerror 只能接收到 IO 类型的错误&#xff0c;对于抛出的 NameError 类型的错误&#xff0c;在 Python 中所有的异常类都继承 Exception&#xff0c;所以我们可以使用它来接收所有的异常。 1.Exception接收异常 源码&#xff1a; open("test1.py",r) pr…

Qt散文一

Qt的事件分为普通事件和系统事件&#xff0c;普通事件比如用户按下键盘&#xff0c;系统事件比如定时器事件。事件循环的开始是从main函数的QApplication&#xff0c;然后调用exec()开始的&#xff0c;在执行exec()函数之后&#xff0c;程序将进入事件循环来监听应用程序的事件…

4款智能文章生成器推荐,为你创作文章效率高

智能文章生成器的出现为创作者带来了很多方便&#xff0c;尤其是在当今信息爆炸的时代&#xff0c;内容创作已经成为许多人日常工作中不可或缺的一部分。无论是博客、新闻报道、营销文案还是学术论文&#xff0c;高质量的文章往往需要耗费大量的时间和精力来撰写。但有了智能文…