Linux Shell 编程基础入门(一)
😀前言
本篇博文是关于自动化工具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 进行讲解。
Shell 编程的基础
1. Shell 脚本的基本结构
一个简单的 Shell 脚本通常由以下几部分组成:
-
脚本头部声明:
#!/bin/这行代码告诉系统使用哪种 Shell 来解释脚本。
-
注释:
注释以#开头,用于解释代码,不会被执行。# 这是一个注释 -
变量:
变量用于存储数据,可以通过=进行赋值。Linux Shell 中的变量分为:系统变量和用户自定义变量。
系统变量: H O M E 、 HOME、 HOME、PWD、 S H E L L 、 SHELL、 SHELL、USER 等等,比如:echo $HOME等等。
显示当前 shell 中所有变量:set
-
定义变量的规则
1)变量名称可以由字母、数字和下划线组成,但是不能以数字开头。5A=200(x)
2)等号两侧不能有空格
3)变量名称一般习惯为大写, 这是一个规范,我们需要遵守。 -
将命令的返回值赋给变量
1)A='date`反引号,运行里面的命令,并把结果返回给变量 A。
2)A=$(date)等价于反引号
name="Alice" -
-
条件语句:
用于根据条件执行不同的代码块。if [ "$name" == "Alice" ]; thenecho "Hello, Alice!" elseecho "Who are you?" fi -
循环:
用于重复执行某些操作。for i in {1..5}; doecho "Iteration $i" done
2. 常用 Shell 命令
在大数据处理中,以下 Shell 命令常被使用:
- 文件操作:
ls,cp,mv,rm,cat,touch,mkdir等命令用于文件和目录的管理。 - 数据处理:
grep、awk、sed等命令用于搜索、过滤和处理文本数据。 - 进程控制:
ps、top、kill用于管理系统进程。 - 任务调度:
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 脚本可以自动化这些过程,例如去除重复数据、过滤无效数据、格式转换等。
示例:利用 awk 和 sed 命令清洗 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_fileecho "Report generated: $report_file"
😄总结
Shell 编程是大数据处理中的一项基础技能,它能够帮助你自动化和优化数据处理任务,提高工作效率。通过掌握 Shell 脚本的基本语法和常用命令,可以轻松应对大数据处理中的各种挑战。从数据清洗、自动化任务调度到大规模数据处理,Shell 编程都是一个强大的工具。

文章到这里就结束了,如果有什么疑问的地方请指出,诸大佬们一起来评论区一起讨论😁
希望能和诸大佬们一起努力,今后我们一起观看感谢您的阅读🍻
如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力🤞
相关文章:
Linux Shell 编程基础入门(一)
😀前言 本篇博文是关于自动化工具Shell 编程的基本介绍,希望你能够喜欢 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是我的动…...
大白话讲微服务的灾难性雪崩效应
讲在前面,为什么微服务需要有熔断等策略呢?今天我们用大白话来讲讲微服务的灾难性雪崩效应,熔断策略就是解决雪崩效应的有效解决方案。 什么是灾难性雪崩效应? 假设我们有两个访问量比较大的服务A和B,这两个服务分别依…...
配置 K3s 访问私有镜像仓库
1.修改 K3s 配置文件 1)对于较新的 K3s 版本,你可以通过编辑 K3s 的配置文件来指定镜像仓库。编辑 /etc/rancher/k3s/config.yaml 文件(如果不存在则需要创建),添加或修改以下配置: # /etc/rancher/k3s/config.yaml …...
数学建模之数据分析【七】:对Pandas DataFrame 进行切片
文章目录 一、切片简介二、创建Pandas数据框三、使用iloc进行切片3.1 对行进行切片3.2 对列进行切片3.3 Dataframe选中特定单元格 四、使用loc创建切片4.1 使用Python对Dataframe中的行进行切片4.2 指定单元格 五、在Python中使用布尔条件六、结论 对 Pandas DataFrames 进行切…...
删除 Docker 容器的日志文件
删除 Docker 容器的日志文件可以帮助释放磁盘空间。以下是步骤: 1、查找日志文件路径: Docker 容器的日志通常存储在 /var/lib/docker/containers/<container_id>/ 目录下。日志文件通常名为 container_id-json.log。 通过以下命令找到日志文件的位置: docker ins…...
DevOps入门(上)
1: DevOps概念 DevOps: Development 和 Operations 的组合 DevOps 看作开发(软件工程)、技术运营和质量保障(QA)三者的交集。 突出重视软件开发人员和运维人员的沟通合作,通过自动化流程来使…...
基于Python的网易民谣歌词数据分析的设计与实现
基于Python的网易民谣歌词数据分析的设计与实现 Design and Implementation of Data Analysis for NetEase Folk Song Lyrics Based on Python 完整下载链接:基于Python的网易民谣歌词数据分析的设计与实现 文章目录 基于Python的网易民谣歌词数据分析的设计与实现摘要第一章…...
趋动科技联合云轴科技推出GPU云原生超融合解决方案
近日,趋动科技VirtAITech携手云轴科技ZStack推出GPU云原生超融合联合解决方案,提供全面、可扩展的云原生GPU存算一体化解决方案。 该方案基于云原生超融合及GPU资源池化技术,使得GPU资源管理变得更加简便易用,能够帮助企业用户在…...
Dooring智图,一款开箱即用的图片海报编辑器
嗨, 大家好, 我是徐小夕. 之前一直在社区分享零代码&低代码的技术实践,也陆陆续续设计并开发了多款可视化搭建产品,比如: Nocode/Doc,可视化 零代码打造下一代文件编辑器爆肝1000小时, Dooring零代码搭建平台3.5正式上线可视化…...
苹果macbook电脑怎么玩《黑神话:悟空》游戏教程来了
火爆全网《黑神话:悟空》是一款基于中国神话故事《西游记》改编的动作角色扮演游戏,它在PC平台上的系统要求已经公布,但目前官方尚未发布Mac版本。不过,Mac用户可以通过使用系统兼容工具如CrossOver来尝试在Mac上运行这款游戏。Cr…...
git 目录提交代码
初始化 Git 仓库(如果尚未初始化): 如果还没有初始化 Git 仓库,运行以下命令: git init将远程仓库添加到目录 b 中: 如果尚未关联远程仓库,添加远程仓库: git remote add origin <…...
多商户商品下单限购问题修复
问题: 当商品设置限购为 1 时,够买数量未超过限购,但是还是提示超出限购数量 修复方法: 修改代码路径: app\common\repositories\store\order\StoreOrderCreateRepository.php 修改代码一: i s p a y s a r r a y u n i q u e ( a r r a y c o l u m n ( is_pays array_un…...
eNSP 华为ACL配置
华为ACL配置 需求: 公司保证财务部数据安全,禁止研发部门和互联网访问财务服务器,但总裁办不受影响 R1: <Huawei>sys [Huawei]sys Router1 [Router1]undo info-center enable [Router1]int g1/0/0 [Router1-GigabitEth…...
实现高效研发运营一体化:深度落地DevOps解决方案的探索与实践
前言与概述 伴随着企业业务的快速发展,为了支撑业务发展,提高 IT 对业务的支撑能力建设。在研发工程协同方面,希望加强代码管理,实现持续构建、自动化测试、自动化部署、自动化运维,同时加强产品的安全和质量管理&…...
Milvus向量数据库-磁盘索引简介
以下内容是自己在学习Milvus向量数据库时,在Milvus官方网站文档库中对索引的学习整理和翻译,通过自己和借助翻译软件进行了理解整合翻译,有可能有一些地方理解整理的不到位,还望大家理解。 一、磁盘索引 本文介绍了一种名为Disk…...
Web漏洞介绍和Sql注入漏洞
常规渗透测试流程 漏洞探测包括:web漏洞测试,系统漏洞测试 工具探测、手工验证 优先找的漏洞:中间(件)漏洞、框架漏洞...webserver 知道创宇 Seebug 漏洞平台 - 洞悉漏洞,让你掌握前沿漏洞情报ÿ…...
【Eureka】Eureka 介绍与实战
1. Eureka 简介 Eureka 是 Netflix 开发的一个服务注册和发现组件,主要用于微服务架构中。它的核心功能是帮助微服务之间进行通讯和管理,使得服务能够动态地发现彼此,实现灵活的服务调用和负载均衡。 1.1 核心概念 服务注册中心࿰…...
密码管理系统的自动化与集成:重塑安全与效率的双重飞跃
在数字化时代,密码作为保护个人信息、企业资产及敏感数据的第一道防线,其重要性不言而喻。然而,随着网络应用的激增和复杂性的提升,传统的密码管理方式——如使用简单密码、重复密码或依赖记忆——已难以满足现代安全需求…...
Outlook如何精确搜索邮件?
Outlook如何精确搜索邮件? 参考链接:https://jingyan.baidu.com/article/e75aca853148ba552edac6b6.html 我们在使用Outlook搜索功能时,直接输入关键词的话,会出来很多不相关的内容,那么有没有办法让搜索时更加精确呢…...
MambaCSR: 使用SSM的双交错扫描压缩图像超分辨率
MambaCSR: Dual-Interleaved Scanning for Compressed Image Super-Resolution With SSMs 2408.11758 (arxiv.org) GitHub - renyulin-f/MambaCSR: The code source of MambaCSR 摘要 本文提出了MambaCSR,这是一个基于Mamba的简单但有效的框架,用于解决…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...
JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...
Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...
day36-多路IO复用
一、基本概念 (服务器多客户端模型) 定义:单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用:应用程序通常需要处理来自多条事件流中的事件,比如我现在用的电脑,需要同时处理键盘鼠标…...
uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)
UniApp 集成腾讯云 IM 富媒体消息全攻略(地理位置/文件) 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型,核心实现方式: 标准消息类型:直接使用 SDK 内置类型(文件、图片等)自…...
热烈祝贺埃文科技正式加入可信数据空间发展联盟
2025年4月29日,在福州举办的第八届数字中国建设峰会“可信数据空间分论坛”上,可信数据空间发展联盟正式宣告成立。国家数据局党组书记、局长刘烈宏出席并致辞,强调该联盟是推进全国一体化数据市场建设的关键抓手。 郑州埃文科技有限公司&am…...
