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

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 进行讲解。

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" ]; 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 等命令用于文件和目录的管理。
  • 数据处理:
    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_fileecho "Report generated: $report_file"

😄总结

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

文章到这里就结束了,如果有什么疑问的地方请指出,诸大佬们一起来评论区一起讨论😁
希望能和诸大佬们一起努力,今后我们一起观看感谢您的阅读🍻
如果帮助到您不妨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概念 &#xfeff;&#xfeff;DevOps: Development 和 Operations 的组合 DevOps 看作开发&#xff08;软件工程&#xff09;、技术运营和质量保障&#xff08;QA&#xff09;三者的交集。 突出重视软件开发人员和运维人员的沟通合作&#xff0c;通过自动化流程来使…...

基于Python的网易民谣歌词数据分析的设计与实现

基于Python的网易民谣歌词数据分析的设计与实现 Design and Implementation of Data Analysis for NetEase Folk Song Lyrics Based on Python 完整下载链接:基于Python的网易民谣歌词数据分析的设计与实现 文章目录 基于Python的网易民谣歌词数据分析的设计与实现摘要第一章…...

趋动科技联合云轴科技推出GPU云原生超融合解决方案

近日&#xff0c;趋动科技VirtAITech携手云轴科技ZStack推出GPU云原生超融合联合解决方案&#xff0c;提供全面、可扩展的云原生GPU存算一体化解决方案。 该方案基于云原生超融合及GPU资源池化技术&#xff0c;使得GPU资源管理变得更加简便易用&#xff0c;能够帮助企业用户在…...

Dooring智图,一款开箱即用的图片海报编辑器

嗨, 大家好, 我是徐小夕. 之前一直在社区分享零代码&低代码的技术实践&#xff0c;也陆陆续续设计并开发了多款可视化搭建产品&#xff0c;比如&#xff1a; Nocode/Doc&#xff0c;可视化 零代码打造下一代文件编辑器爆肝1000小时, Dooring零代码搭建平台3.5正式上线可视化…...

苹果macbook电脑怎么玩《黑神话:悟空》游戏教程来了

火爆全网《黑神话&#xff1a;悟空》是一款基于中国神话故事《西游记》改编的动作角色扮演游戏&#xff0c;它在PC平台上的系统要求已经公布&#xff0c;但目前官方尚未发布Mac版本。不过&#xff0c;Mac用户可以通过使用系统兼容工具如CrossOver来尝试在Mac上运行这款游戏。Cr…...

git 目录提交代码

初始化 Git 仓库&#xff08;如果尚未初始化&#xff09;&#xff1a; 如果还没有初始化 Git 仓库&#xff0c;运行以下命令&#xff1a; git init将远程仓库添加到目录 b 中&#xff1a; 如果尚未关联远程仓库&#xff0c;添加远程仓库&#xff1a; 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配置 需求&#xff1a; 公司保证财务部数据安全&#xff0c;禁止研发部门和互联网访问财务服务器&#xff0c;但总裁办不受影响 R1&#xff1a; <Huawei>sys [Huawei]sys Router1 [Router1]undo info-center enable [Router1]int g1/0/0 [Router1-GigabitEth…...

实现高效研发运营一体化:深度落地DevOps解决方案的探索与实践

前言与概述 伴随着企业业务的快速发展&#xff0c;为了支撑业务发展&#xff0c;提高 IT 对业务的支撑能力建设。在研发工程协同方面&#xff0c;希望加强代码管理&#xff0c;实现持续构建、自动化测试、自动化部署、自动化运维&#xff0c;同时加强产品的安全和质量管理&…...

Milvus向量数据库-磁盘索引简介

以下内容是自己在学习Milvus向量数据库时&#xff0c;在Milvus官方网站文档库中对索引的学习整理和翻译&#xff0c;通过自己和借助翻译软件进行了理解整合翻译&#xff0c;有可能有一些地方理解整理的不到位&#xff0c;还望大家理解。 一、磁盘索引 本文介绍了一种名为Disk…...

Web漏洞介绍和Sql注入漏洞

常规渗透测试流程 漏洞探测包括&#xff1a;web漏洞测试&#xff0c;系统漏洞测试 工具探测、手工验证 优先找的漏洞&#xff1a;中间&#xff08;件&#xff09;漏洞、框架漏洞...webserver 知道创宇 Seebug 漏洞平台 - 洞悉漏洞&#xff0c;让你掌握前沿漏洞情报&#xff…...

【Eureka】Eureka 介绍与实战

1. Eureka 简介 Eureka 是 Netflix 开发的一个服务注册和发现组件&#xff0c;主要用于微服务架构中。它的核心功能是帮助微服务之间进行通讯和管理&#xff0c;使得服务能够动态地发现彼此&#xff0c;实现灵活的服务调用和负载均衡。 1.1 核心概念 服务注册中心&#xff0…...

密码管理系统的自动化与集成:重塑安全与效率的双重飞跃

在数字化时代&#xff0c;密码作为保护个人信息、企业资产及敏感数据的第一道防线&#xff0c;其重要性不言而喻。然而&#xff0c;随着网络应用的激增和复杂性的提升&#xff0c;传统的密码管理方式——如使用简单密码、重复密码或依赖记忆——已难以满足现代安全需求&#xf…...

Outlook如何精确搜索邮件?

Outlook如何精确搜索邮件&#xff1f; 参考链接&#xff1a;https://jingyan.baidu.com/article/e75aca853148ba552edac6b6.html 我们在使用Outlook搜索功能时&#xff0c;直接输入关键词的话&#xff0c;会出来很多不相关的内容&#xff0c;那么有没有办法让搜索时更加精确呢…...

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&#xff0c;这是一个基于Mamba的简单但有效的框架&#xff0c;用于解决…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好&#xff0c;欢迎来到《云原生核心技术》系列的第七篇&#xff01; 在上一篇&#xff0c;我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在&#xff0c;我们就像一个拥有了一块崭新数字土地的农场主&#xff0c;是时…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图&#xff0c;该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序&#xff0c;确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数&#xff0c;分别表示n 和 e 的值&#xff08;1…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败&#xff0c;具体原因是客户端发送了密码认证请求&#xff0c;但Redis服务器未设置密码 1.为Redis设置密码&#xff08;匹配客户端配置&#xff09; 步骤&#xff1a; 1&#xff09;.修…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

管理学院权限管理系统开发总结

文章目录 &#x1f393; 管理学院权限管理系统开发总结 - 现代化Web应用实践之路&#x1f4dd; 项目概述&#x1f3d7;️ 技术架构设计后端技术栈前端技术栈 &#x1f4a1; 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 &#x1f5c4;️ 数据库设…...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器&#xff1a;Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...