Linux Shell 编程基础入门(一)

😀前言

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

🏠个人主页:晨犀主页

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

💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,感谢大家的观看🥰

如果文章有什么需要改进的地方还请大佬不吝赐教 先在此感谢啦😊

文章目录

  • [Shell 编程](#Shell 编程)
    • 引言
    • [什么是 Shell 编程?](#什么是 Shell 编程?)
    • [Shell 编程的基础](#Shell 编程的基础)
      • [1. Shell 脚本的基本结构](#1. Shell 脚本的基本结构)
      • [2. 常用 Shell 命令](#2. 常用 Shell 命令)
      • [3. Shell 脚本中的函数](#3. Shell 脚本中的函数)
      • 4.脚本的常用执行方式
        • [方式 1(输入脚本的绝对路径或相对路径)](#方式 1(输入脚本的绝对路径或相对路径))
        • 方式2(sh+脚本)
    • [Shell 编程在大数据处理中的应用](#Shell 编程在大数据处理中的应用)
      • [1. 数据清洗与预处理](#1. 数据清洗与预处理)
      • [2. 自动化任务调度](#2. 自动化任务调度)
      • [3. 大规模数据处理](#3. 大规模数据处理)
      • [4. 数据分析与报告生成](#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" ]; 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 编程都是一个强大的工具。

文章到这里就结束了,如果有什么疑问的地方请指出,诸大佬们一起来评论区一起讨论😁

希望能和诸大佬们一起努力,今后我们一起观看感谢您的阅读🍻

如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力🤞

相关推荐
scoone6 分钟前
ssh登陆服务器后支持Tab键命令补全
linux·shell
运维佬1 小时前
CentOS 9 配置网卡
linux·centos
轩轩曲觞阁2 小时前
Linux网络——网络初识
linux·网络
2401_840192272 小时前
python基础大杂烩
linux·开发语言·python
weixin_438197382 小时前
K8S创建云主机配置docker仓库
linux·云原生·容器·eureka·kubernetes
舞动CPU8 小时前
linux c/c++最高效的计时方法
linux·运维·服务器
秦jh_10 小时前
【Linux】多线程(概念,控制)
linux·运维·前端
keep__go11 小时前
Linux 批量配置互信
linux·运维·服务器·数据库·shell
矛取矛求11 小时前
Linux中给普通账户一次性提权
linux·运维·服务器
Fanstay98511 小时前
在Linux中使用Nginx和Docker进行项目部署
linux·nginx·docker