Linux Shell 编程基础入门(一)

news2024/12/26 23:58:40

😀前言
本篇博文是关于自动化工具Shell 编程的基本介绍,希望你能够喜欢

🏠个人主页:晨犀主页
🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是我的动力😉😉

💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,感谢大家的观看🥰
如果文章有什么需要改进的地方还请大佬不吝赐教 先在此感谢啦😊

文章目录

  • Shell 编程
    • 引言
    • 什么是 Shell 编程?
    • Shell 编程的基础
      • 1. Shell 脚本的基本结构
      • 2. 常用 Shell 命令
      • 3. Shell 脚本中的函数
      • 4.脚本的常用执行方式
        • 方式 1(输入脚本的绝对路径或相对路径)
        • 方式2(sh+脚本)
    • Shell 编程在大数据处理中的应用
      • 1. 数据清洗与预处理
      • 2. 自动化任务调度
      • 3. 大规模数据处理
      • 4. 数据分析与报告生成
    • 😄总结

Shell 编程

引言

在大数据处理领域,Shell 编程是一项不可或缺的技能。Shell 脚本作为 Unix 和 Linux 系统中强大的自动化工具,能够简化数据处理的流程、提升工作效率,并为复杂的任务提供灵活的解决方案。本文将探讨 Shell 编程在大数据处理中的应用,帮助你掌握如何通过编写 Shell 脚本来优化和自动化大数据工作流。

什么是 Shell 编程?

Shell 是一个命令行解释器,为用户提供了与操作系统交互的界面。在 Linux 和 Unix 系统中,Shell 是与内核交互的桥梁,用户可以通过 Shell 执行命令、运行程序、管理文件系统等。

Shell 编程指的是通过编写一系列 Shell 命令的脚本,自动化执行某些任务。常用的 Shell 包括 Bash(Bourne Again Shell)、Zsh(Z Shell)和 Ksh(Korn Shell)等。由于 Bash 是最常用的 Shell,本文将主要基于 Bash 进行讲解。

image-20240821114445452

Shell 编程的基础

1. Shell 脚本的基本结构

一个简单的 Shell 脚本通常由以下几部分组成:

  • 脚本头部声明:

    #!/bin/
    

    这行代码告诉系统使用哪种 Shell 来解释脚本。

  • 注释:
    注释以 # 开头,用于解释代码,不会被执行。

    # 这是一个注释
    
  • 变量:
    变量用于存储数据,可以通过 = 进行赋值。

    Linux Shell 中的变量分为:系统变量和用户自定义变量。

    系统变量: H O M E 、 HOME、 HOMEPWD、 S H E L L 、 SHELL、 SHELLUSER 等等,比如:echo $HOME等等。

    显示当前 shell 中所有变量:set

    • 定义变量的规则

      ​ 1)变量名称可以由字母、数字和下划线组成,但是不能以数字开头。5A=200(x)
      ​ 2)等号两侧不能有空格
      ​ 3)变量名称一般习惯为大写, 这是一个规范,我们需要遵守。

    • 将命令的返回值赋给变量
      1)A='date`反引号,运行里面的命令,并把结果返回给变量 A。
      2)A=$(date)等价于反引号

    name="Alice"
    
  • 条件语句:
    用于根据条件执行不同的代码块。

    if [ "$name" == "Alice" ]; then
        echo "Hello, Alice!"
    else
        echo "Who are you?"
    fi
    
  • 循环:
    用于重复执行某些操作。

    for i in {1..5}; do
        echo "Iteration $i"
    done
    

2. 常用 Shell 命令

在大数据处理中,以下 Shell 命令常被使用:

  • 文件操作:
    ls, cp, mv, rm, cat, touch, mkdir 等命令用于文件和目录的管理。
  • 数据处理:
    grepawksed 等命令用于搜索、过滤和处理文本数据。
  • 进程控制:
    pstopkill 用于管理系统进程。
  • 任务调度:
    crontab 用于定时执行脚本。

3. Shell 脚本中的函数

Shell 脚本中可以定义函数,用于组织和复用代码:

function greet() {
    echo "Hello, $1!"
}

greet "Alice"

4.脚本的常用执行方式

方式 1(输入脚本的绝对路径或相对路径)

说明:首先要赋予 helloworld.sh 脚本的+x权限,再执行脚本比如./hello.sh 或者使用绝对路径/root/shcode/hello.sh

方式2(sh+脚本)

说明:不用赋子脚本+x权限,直接执行即可比如 sh hello.sh,也可以使用绝对路径。

Shell 编程在大数据处理中的应用

1. 数据清洗与预处理

在大数据处理的初期,数据清洗与预处理是非常重要的一步。Shell 脚本可以自动化这些过程,例如去除重复数据、过滤无效数据、格式转换等。

示例:利用 awksed 命令清洗 CSV 数据:

#!/bin/

# 去除 CSV 文件中的空行
sed '/^$/d' data.csv > cleaned_data.csv

# 删除重复行
awk '!seen[$0]++' cleaned_data.csv > unique_data.csv

2. 自动化任务调度

在大数据项目中,定时执行某些任务(如数据备份、日志分析)是非常常见的需求。通过 crontab,可以轻松调度 Shell 脚本在指定的时间运行。

示例:每天凌晨 2 点自动备份数据:

0 2 * * * /path/to/backup_script.sh

3. 大规模数据处理

Shell 脚本还可以用于处理大规模数据集。例如,可以编写脚本分割大文件、并行处理多个数据文件,或调用 Hadoop、Spark 等大数据处理框架的命令接口。

示例:将大文件分割成小块并并行处理:

#!/bin/

# 将大文件分割为多个小文件
split -l 10000 large_data.csv part_

# 并行处理小文件
for file in part_*; do
    (process_data "$file" &)
done
wait

4. 数据分析与报告生成

通过 Shell 脚本,可以自动化运行数据分析任务,并生成定期的报告。例如,通过 Shell 脚本定期提取日志中的关键信息,并生成 HTML 或 CSV 格式的报告。

示例:生成访问日志报告:

#!/bin/

log_file="/var/log/access.log"
report_file="report_$(date +%Y%m%d).csv"

# 提取日志中的访问量信息
awk '{print $1}' $log_file | sort | uniq -c | sort -nr > $report_file

echo "Report generated: $report_file"

😄总结

Shell 编程是大数据处理中的一项基础技能,它能够帮助你自动化和优化数据处理任务,提高工作效率。通过掌握 Shell 脚本的基本语法和常用命令,可以轻松应对大数据处理中的各种挑战。从数据清洗、自动化任务调度到大规模数据处理,Shell 编程都是一个强大的工具。
img

文章到这里就结束了,如果有什么疑问的地方请指出,诸大佬们一起来评论区一起讨论😁
希望能和诸大佬们一起努力,今后我们一起观看感谢您的阅读🍻
如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力🤞

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

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

相关文章

微服务:配置管理和配置热更新

参考:黑马程序员之微服务 💥 该系列属于【SpringBoot基础】专栏,如您需查看其他SpringBoot相关文章,请您点击左边的连接 目录 一、引言 二、配置共享 1. 添加共享配置到nacos (1)jdbc的共享配置 shared…

点灯案例优化(三)宏定义特定位名称

前面利用位运算对代码进行二次优化以后,确实可读性更好,精确性更高了。但是吧,你乍一看这个代码 你可能一下都反应不过来这些的啥意思了,表达式右边上来就是一顿运算,可能刚开始大多数人都看不懂这写的什么&#xff0c…

用Python解决优化问题_模拟退火模板

一、模拟退火算法简介 模拟退火(Simulated Annealing)是一种启发式算法,用于在优化问题中找到一个好的解。启发式是指一种用于找到解决问题方法的原则或策略,它不保证找到最优解,但可以快速找到一个足够好的解。在许多…

资产全生命周期管理系统 固定资产全生命周期管理解决方案

什么是资产全生命周期管理系统 资产全生命周期管理系统是指对企业资产从采购、使用、维护、到报废的整个过程进行全方位管理的软件系统。通过这个系统,企业可以实现对资产的实时监控和管理,确保资产的利用率最大化。这个系统不仅能够跟踪资产的状态&…

C语言 数据存储

整形在内存中的存储(之前的操作符讲过些许但不是很全,现在详细记录) 对于一个整型变量来说,在内存中需要怎样存储? 之前了解到内存中存放的是补码(正数的原反补都相同。回忆一下负数原码,反码…

IPD开发流程:项目风险画像

目录 1、内容简介 2、IPD 工具:项目风险画像 首先是独特性。 第二个是不确定性。 第三个是临时性。 第四个是跨职能性。 最后一个是变革性。 作者简介 1、内容简介 在 IPD 开发流程中, 经常会提到开发是一项投资行为、 产品/项目的商业价值等…

精细化管理和智慧化运营的智慧油站开源了

AI视频监控平台简介 AI视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。用…

【数据分享】2018-2023年全国范围10米分辨率的耕地利用强度数据(免费获取)

耕地利用强度数据是评估农业生产力、规划土地使用、监测粮食安全与环境可持续性的关键,对政策制定和资源管理具有重要指导意义。然而,目前国家范围的耕地利用数据集在时空连续性、分辨率和精度方面存在局限性。 本次我们分享的是2018年至2023年分辨率为…

Rocky 8.10安装流程步骤详细教程

Rocky 8.10安装流程步骤详细教程 1. Rocky 8.10 安装2. 登录3. 配置修改3.1 打开命令行窗口3.2 网卡配置3.3 修改网卡名3.4 配置镜像源3.5 删除网卡多余内容3.5.1 删除virbr03.5.2 删除altname enp3s03.5.3 删除ipv63.5.4 修改ip地址(这步没有需要可以忽略) 3.6 升级openssh3.7…

【文献阅读】Lorentzian Linear Graph Convolutional Networks For Node Classification

Abstract 大多数现有的线性GCN模型在欧几里得空间中执行神经网络操作,并未明确捕捉到真实世界数据集中以图形式建模的树状层次结构。本文尝试将双曲空间引入线性GCN,并提出了一种新的洛伦兹线性GCN框架。 具体而言,将图节点的学习特征映射到…

函数作为返回值

复习闭包时注意到的 function lazy_sum(arr) {let sum function () {return arr.reduce(function (x, y) {return x y;});}return sum; }当我们调用lazy_sum()时,返回的并不是求和结果,而是求和函数: let f lazy_sum([1, 2, 3, 4, 5]); …

uniapp在线视频监控开发

我这里是uniapp开发的H5项目 视频流是flv模式 用到的插件是flv.js Flv.js Flv.js 是 HTML5 Flash 视频(FLV)播放器,纯原生 JavaScript 开发,没有用到 Flash。。由 bilibili 网站开源。 常见直播协议 RTMP: 底层基于TCP&…

【WebSocket】websocket学习【一】

1.消息推送常见方式 轮询长轮询SSEwebsocket 1.1. 轮询方式 轮询:浏览器以指定的时间间隔向服务器发出HTTP请求,服务器实时返回数据给浏览器长轮询:浏览器发出HTTP请求,服务器端接收到请求后,会阻塞请求直到有数据或…

[003].第4节:RabbitMQ环境搭建

我的后端学习大纲 RabbitMQ学习大纲 1.rpm包方式搭建: 1.1.搭建RabbitMQ单体架构: 1.MQ下载地址2.这里是提前下载好后上传安装包到服务器得opt目录下: 3.安装MQ需要先有Erlang语言环境,安装文件的Linux命令(分别按照以下顺序安装…

RabbitMQ发布订阅模式Publish/Subscribe详解

订阅模式Publish/Subscribe 基于API的方式1.使用AmqpAdmin定制消息发送组件2.消息发送者发送消息3.消息消费者接收消息 基于配置类的方式基于注解的方式总结 SpringBoot整合RabbitMQ中间件实现消息服务,主要围绕3个部分的工作进行展开:定制中间件、消息发…

网络硬盘录像机NVR程序源码NVR全套运用方案

在当今社会,随着科技的飞速发展和人们对安全需求的日益增长,安防监控系统已成为保障公共安全、维护社会稳定的重要手段。其中,网络视频录像机(NVR)作为安防监控系统的核心设备,其智能化升级运用方案对于提高…

OpenLayers3, 加载鹰眼控件

文章目录 一、前言二、代码实现三、总结 一、前言 鹰眼图即地图显示范围的缩略图,可显示当前地图窗口在整幅地图中的位置。通过拖动鹰眼图对话框中的矩形框可改变当前地图的显示区域范围,是地图浏览中常用的功能之一。 本案例使用OpenLayers3框架&…

数字虚拟人原理

重磅推荐专栏: 《大模型AIGC》 《课程大纲》 《知识星球》 本专栏致力于探索和讨论当今最前沿的技术趋势和应用领域,包括但不限于ChatGPT和Stable Diffusion等。我们将深入研究大型模型的开发和应用,以及与之相关的人工智能生成内容(AIGC)技术。通过深入的技术解析和实践经…

振兴杯全国青年职业技能大赛信息通信网络线务员解决方案

一、引言 随着数字化时代的到来,信息技术的飞速发展正深刻改变着人们的生活与工作方式。智能楼宇作为这一时代的产物,以其提升生活和工作效率、改善居住和办公环境的特点,受到了广泛关注。智能安防作为智能楼宇的重要组成部分,其…

解决flutter运行项目后报错 java.util.zip.ZipException: zip END header not found

全新项目运行后直接报错 java.util.zip.ZipException: zip END header not found网上找了其他案例试了没有效果 根据官网说法,针对不同机型处理 我的是windows,然后按照图片说明的目录删除了文件夹之后重新运行项目了 注意.gradle文件夹是隐藏的&…