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

Linux安全与高级应用(五)深入探讨Linux Shell脚本应用:从基础到高级

文章目录

      • 深入探讨Linux Shell脚本应用:从基础到高级
        • 引言
        • 一、Shell脚本基础知识
          • 1. Shell的作用与分类
          • 2. 编写第一个Shell脚本
        • 二、Shell变量的使用
          • 1. 变量的类型与定义
          • 2. 引号的使用
          • 3. 位置变量与预定义变量
        • 三、重定向与管道操作
          • 1. 重定向操作
          • 2. 管道操作
        • 四、计划任务与自动化管理
          • 1. 计划任务
          • 2. 自动化管理
        • 五、实例应用:编写并使用Shell脚本
          • 1. 编写登录欢迎脚本
          • 2. 服务控制脚本
        • 六、总结与展望

👍 个人网站:【 洛秋小站】【洛秋资源小站】

深入探讨Linux Shell脚本应用:从基础到高级

引言

Linux操作系统以其高效、安全和灵活的特点在服务器、开发和科研领域占据着重要地位。Shell作为Linux的命令解释器,提供了一种强大的脚本编程环境,使得用户可以通过编写脚本来实现自动化任务管理和系统维护。本文将详细介绍Shell脚本的基础知识、变量的使用、重定向与管道操作、计划任务与自动化管理等内容,旨在帮助读者全面掌握Linux Shell脚本的应用。

一、Shell脚本基础知识
1. Shell的作用与分类

Shell作为命令解释器,是用户与Linux内核之间的桥梁。它接收用户输入的命令,并将其翻译成内核能够理解的操作。常见的Shell包括Bash、Sh、Csh等,每种Shell在指令集和环境变量处理上都有一定的差异。

2. 编写第一个Shell脚本

在Linux中,编写Shell脚本通常通过文本编辑器进行,例如vinano。编写一个简单的脚本只需按顺序写入每条Linux命令,并保存为.sh文件。例如,以下是一个简单的Shell脚本:

#!/bin/bash
# This is my first Shell-Script.
cd /boot
echo "当前的目录位于:"
pwd
echo "其中以vml开头的文件包括:"
ls -lh vml*

保存文件后,需要赋予其可执行权限:

chmod +x first.sh

执行脚本的方式有多种,包括直接运行脚本路径、使用sh命令或使用source命令。

二、Shell变量的使用
1. 变量的类型与定义

Shell脚本中的变量分为自定义变量、环境变量、位置变量和预定义变量。自定义变量是用户定义的,格式为变量名=变量值,例如:

Product=Benet
Version=4.0
2. 引号的使用

在Shell脚本中,变量的赋值和引用可以使用单引号、双引号和反撇号,不同引号有不同的作用:

  • 单引号:禁止引用其他变量值,$符号视为普通字符。
  • 双引号:允许通过$符号引用其他变量值。
  • 反撇号:用于命令替换,提取命令执行后的输出结果。

例如:

echo "Product is $Product"
3. 位置变量与预定义变量

位置变量用于传递脚本参数,例如$1$2等。预定义变量如$#表示位置变量的个数,$*表示所有位置变量的内容,$?表示上一条命令的返回状态。

三、重定向与管道操作
1. 重定向操作

重定向用于控制命令的输入输出,常见的重定向符号包括>>><2>等。例如,将命令输出重定向到文件:

ls -lh > output.txt
2. 管道操作

管道操作符|用于将一个命令的输出作为另一个命令的输入。例如:

grep "bash$" /etc/passwd | awk -F: '{print $1 $7}'
四、计划任务与自动化管理
1. 计划任务

Linux中的计划任务由cron服务管理,通过crontab命令配置定时任务。以下是一个示例,设置每天凌晨2:30执行数据库备份脚本:

30 2 * * * /opt/qnzx_dbbak/qnzx_dbbak.sh
2. 自动化管理

通过编写脚本,用户可以实现系统的自动化管理,如定期备份、日志清理等。例如,编写一个自动备份脚本:

#!/bin/bash
TARFILE=backup-`date +%s`.tgz
tar zcf $TARFILE $* &> /dev/null
echo "已完成备份,备份文件为$TARFILE"
五、实例应用:编写并使用Shell脚本
1. 编写登录欢迎脚本

编写一个welcome.sh脚本,在用户登录时显示系统信息:

#!/bin/bash
echo "欢迎登录,当前时间为:`date`"
echo "系统信息如下:"
uname -a

并在用户的.bash_profile中添加调用脚本的命令:

if [ -f ~/welcome.sh ]; then. ~/welcome.sh
fi
2. 服务控制脚本

编写startstopstatus脚本,用于控制系统服务,例如:

#!/bin/bash
if [ -z "$1" ]; thenecho "Usage: $0 {start|stop|status} servicename"exit 1
fiACTION=$1
SERVICE=$2case $ACTION instart)/etc/init.d/$SERVICE start;;stop)/etc/init.d/$SERVICE stop;;status)/etc/init.d/$SERVICE status;;*)echo "Invalid action"exit 1;;
esac
六、总结与展望

本文详细介绍了Linux Shell脚本的基础知识、变量使用、重定向与管道操作以及计划任务与自动化管理。通过实例讲解,读者可以更好地理解Shell脚本的应用,并在实际工作中灵活运用。随着Linux的发展,Shell脚本将继续发挥其不可替代的作用,成为系统管理和开发中的重要工具。

👉 最后,愿大家都可以解决工作中和生活中遇到的难题,剑锋所指,所向披靡~

相关文章:

Linux安全与高级应用(五)深入探讨Linux Shell脚本应用:从基础到高级

文章目录 深入探讨Linux Shell脚本应用&#xff1a;从基础到高级引言一、Shell脚本基础知识1. Shell的作用与分类2. 编写第一个Shell脚本 二、Shell变量的使用1. 变量的类型与定义2. 引号的使用3. 位置变量与预定义变量 三、重定向与管道操作1. 重定向操作2. 管道操作 四、计划…...

Java中等题-解码方法(力扣)

一条包含字母 A-Z 的消息通过以下映射进行了 编码 &#xff1a; "1" -> A "2" -> B ... "25" -> Y "26" -> Z 然而&#xff0c;在 解码 已编码的消息时&#xff0c;你意识到有许多不同的方式来解码&#xff0c;因为有些…...

【Git】git 从入门到实战系列(二)—— Git 介绍以及安装方法

文章目录 一、前言二、git 是什么三、版本控制系统是什么四、本地 vs 集中式 vs 分布式本地版本控制系统集中式版本控制系统分布式版本控制系统 五、安装 git 一、前言 本系列上一篇文章【Git】git 从入门到实战系列&#xff08;一&#xff09;—— Git 的诞生&#xff0c;Lin…...

【QT 5 QT 6 构建工具qmake-cmake-和-软件编译器MSVCxxxvs MinGWxxx说明】

【QT 5报错&#xff1a;/xxx/: error: ‘class Ui::frmMain’ has no member named ‘xxx’-和-软件编译器MSVCxxxvs MinGWxxx说明】 1、前言2 、qt 中 Qmake CMake 和 QBS1-qmake2-Cmake3-QBS4-官网一些说法5-各自特点 3、软件编译套件1-Desktop Qt 6.7.2 llvm-mingw 64-bit2-…...

SD卡参数错误:深度解析与数之寻软件恢复实战

一、SD卡参数错误&#xff1a;数据与设备的隐形杀手 在数字化时代&#xff0c;SD卡作为便携存储设备&#xff0c;广泛应用于相机、手机、无人机及各类电子设备中&#xff0c;承载着人们珍贵的照片、视频、文档等重要数据。然而&#xff0c;SD卡在使用过程中&#xff0c;有时会…...

深入理解和应用RabbitMQ的Work Queues模型

文章目录 1. 场景模拟2. 消息发送3. 消息接收4. 测试5. 能者多劳6. 总结 当你在处理消息时&#xff0c;可能会遇到这样的问题&#xff1a;消息的生产速度远远大于消费速度&#xff0c;导致消息堆积。这时候&#xff0c;Work Queues&#xff08;工作队列&#xff09;模型就能派上…...

嵌入式面试八股文(三)·野指针产生原因和解决方法、指针函数和函数指针的区别

目录 1. 野指针产生原因和解决方法 1.1 产生的原因 1.1.1 指针未能初始化 1.1.2 指针指向的内存被释放 1.1.3 指针指向的对象被重复释放 1.2 解决方法 1.2.1 初始化指针 1.2.2 指针空置 1.2.3 避免悬挂指针 2. 指针函数和函数指针的区别 2.1 定义不同 2…...

OpenCV 中 CV_8UC1,CV_32FC3,CV_32S等参数的含义

在OpenCV中&#xff0c;创建图像时需要指定图像的类型&#xff0c;这些类型通常通过常量来表示&#xff0c;例如 CV_8UC1、CV_32FC3、CV_32S 等。这些常量定义了图像的数据类型和通道数&#xff0c;具体含义如下&#xff1a; CV_8UC1&#xff1a; CV_8U 表示每个像素由一个8位无…...

v 3 + vite + ts 自适应布局(postcss-pxtorem)

1、 当pc端、移动端H5等项目中&#xff0c;需要根据当前浏览器窗口或屏幕尺寸&#xff0c;来自适应的改变页面内元素尺寸时&#xff0c;就可以借助下述插件和相关配置来实现。 2、适用范围&#xff1a;vue3 vite ts 步骤一&#xff1a;相关依赖下载下载相关依赖 npm inst…...

(MTK)java文件添加简单接口并配置相应的SELinux avc 权限笔记2

文章简介 承接上一篇笔记,该份笔记是笔者深思熟虑后根据实战应用所总结出来的精华内容,该文章内容主要包括配置avc权限的使用场景以及其上下环节所需的准备。 使用场景 1.底层驱动有无配置好相应的串口 2.开启相应的selinux avc 权限 3.在framework层配置相应的 (config…...

Linux安全与高级应用(六)Linux Shell脚本编程的高级应用:条件测试与if语句的妙用

文章目录 Linux Shell脚本编程的高级应用&#xff1a;条件测试与if语句的妙用一、条件测试操作详解1. 字符串比较2. 整数比较3. 文件测试4. 逻辑测试 二、if语句的结构与应用1. 单分支结构2. 双分支结构3. 多分支结构 三、实际应用案例1. 需求描述2. 实现思路3. 代码实现4. 设置…...

升级MacOS(Mojave)后使用git问题

将MacOS升级到Mojave版本后&#xff0c;使用git工具时&#xff0c;出现如下错误提示&#xff1a; guochongxindeMacBook-Pro:study guochongxin$ git status . xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Librar…...

基于PFC和ECN搭建无损RoCE网络的工作流程分析

无损RoCE网络概念 RDMA&#xff08;Remote Direct Memory Access&#xff0c;远程直接内存访问&#xff09;是一种为了解决网络传输中服务器端数据处理延迟而产生的技术。RDMA 将用户应用中的数据直接传入服务器的存储区&#xff0c;通过网络将数据从一个系统快速传输到远程系…...

射频功率放大器调测简略

射频功率放大器除了在设计时的难度外&#xff0c;其次就是调测阶段&#xff0c;设计时仿真可以通过不断更改仿真参数来达到理想状态&#xff0c;更关键的是不用提心吊胆的把烧器件&#xff0c;而处于调测阶段则很容易出现烧坏器件的情况&#xff0c;特别是功率大的射频功率放大…...

Linux使用docker搭建Redis 哨兵模式

1. Redis Sentinel 简介 Redis Sentinel 是 Redis 高可用解决方案的一部分。它提供了监控、通知和自动故障转移功能&#xff0c;确保 Redis 集群在主节点发生故障时仍然可以继续工作。以下是 Redis Sentinel 的主要功能和作用&#xff1a;监控&#xff1a; Sentinel 会不断检查…...

springboot给类进行赋初值的四种方式

目录 1. 使用Value和ConfigurationProperties2. 使用PropertySource创建Person.java写一个测试类 3. 使用ImportResourceStudent类创建beans.xml在主类中引入测试 其他心得 1. 使用Value和ConfigurationProperties 这里不加赘述了&#xff0c;前面我也发过&#xff0c;这里就放…...

Day32 | 1049. 最后一块石头的重量 II 494. 目标和 474.一和零

语言 Java 1049. 最后一块石头的重量 II 最后一块石头的重量 II 题目 有一堆石头&#xff0c;用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合&#xff0c;从中选出任意两块石头&#xff0c;然后将它们一起粉碎。假设石头的重量分别为 x 和 …...

linux 查看一个端口是否被占用

1 linux命令 要在Linux中查看一个端口是否被占用&#xff0c;可以按照以下步骤进行操作&#xff1a; 打开终端&#xff08;Terminal&#xff09;。 运行以下命令来列出系统上所有正在监听的端口及其对应的进程&#xff1a; sudo netstat -tuln | grep LISTEN这将显示所有正在…...

【Git】5. 配置 Git

配置.gitignore – 忽略特殊⽂件 在⽇常开发中&#xff0c;我们有些⽂件不想或者不应该提交到远端&#xff0c;⽐如保存了数据库密码的配置⽂件&#xff0c;那怎么让 Git 知道呢&#xff1f; 在 Git ⼯作区的根⽬录下创建⼀个特殊的 .gitignore ⽂件&#xff0c;然后把要忽略的…...

C语言:文件处理

文件处理 一、文件的类型&#xff08;一&#xff09;文本文件和二进制文件 &#xff08;二&#xff09;程序文件和数据文件数据文件按照二进制储存 二、文件的打开和关闭&#xff08;一&#xff09;文件指针&#xff08;二&#xff09;文件的打开和关闭1、fopen2、fclose &…...

【计算机视觉】Intel RealSense深度相机与OpenCV融合:从基础配置到实时交互应用

1. 深度相机与OpenCV的黄金组合 第一次接触Intel RealSense深度相机时&#xff0c;我被它同时获取RGB和深度数据的能力惊艳到了。这就像给普通摄像头装上了"立体视觉"&#xff0c;不仅能看见物体的颜色和形状&#xff0c;还能精确感知物体离相机有多远。而OpenCV作为…...

OpenClaw+千问3.5-9B自动化写作:技术博客大纲与初稿生成

OpenClaw千问3.5-9B自动化写作&#xff1a;技术博客大纲与初稿生成 1. 为什么需要自动化写作助手 作为一个技术博主&#xff0c;我经常面临这样的困境&#xff1a;明明对某个技术点有深刻理解&#xff0c;却卡在如何组织文章结构上。有时候花在列大纲上的时间比实际写作还长&…...

别再硬记索引了!Mujoco Python API实战:用`name`属性优雅读写机器人关节状态

别再硬记索引了&#xff01;Mujoco Python API实战&#xff1a;用name属性优雅读写机器人关节状态 在机器人仿真开发中&#xff0c;我们常常陷入这样的困境&#xff1a;面对一个20自由度的机械臂&#xff0c;需要反复查阅文档确认data.qpos[12]对应的是哪个关节&#xff1b;当X…...

交付验收前批量筛一遍配图质量:桌面工具用法记录

如果你经常遇到这种场景&#xff1a;项目交付包里附带大量截图、现场照片&#xff0c;甲方要求「明显糊的、过曝的别混进来」&#xff0c;但文件夹嵌套很深&#xff0c;人工抽查像抽奖。可以试一款只做「打分按档归类」的 Windows 桌面工具&#xff0c;全称【批量图片质量检测筛…...

STM32驱动X-NUCLEO-IHM02A1实现工业级步进电机控制

1. X-NUCLEO-IHM02A1 驱动开发深度解析&#xff1a;面向工业级步进电机控制的 STM32 底层实现 X-NUCLEO-IHM02A1 是意法半导体&#xff08;STMicroelectronics&#xff09;推出的高性能双通道步进电机驱动扩展板&#xff0c;专为 STM32 Nucleo 开发平台设计。该板基于 STSPIN22…...

爬虫对抗实战 - ZLibrary 反爬机制分析与突破

一、背景介绍1. 爬虫与反爬的永恒博弈网络爬虫的核心原理是通过程序模拟 HTTP/HTTPS 请求&#xff0c;获取网页数据并解析提取&#xff0c;广泛应用于数据采集、搜索引擎索引、数据分析等场景。网站部署反爬措施的核心必要性&#xff1a;保护服务器资源&#xff0c;避免恶意爬虫…...

IGBT驱动电路设计避坑指南:从选型到PCB布局的8个关键点

IGBT驱动电路设计避坑指南&#xff1a;从选型到PCB布局的8个关键点 在电力电子领域&#xff0c;IGBT驱动电路的设计质量直接决定了整个系统的可靠性和效率。我曾亲眼见过一个价值百万的变频器项目&#xff0c;因为驱动电阻选型不当导致批量烧毁&#xff0c;团队不得不连续加班三…...

OAK-D-S2/FFC系列深度校准实战:从原理到提升精度的几个关键技巧

OAK-D-S2/FFC系列深度校准实战&#xff1a;从原理到提升精度的几个关键技巧 深度相机校准是计算机视觉领域的一项基础但至关重要的技术。对于OAK-D-S2和FFC系列这样的高性能设备&#xff0c;校准质量直接决定了深度图的精度和可靠性。本文将带您深入理解校准背后的数学原理&am…...

《Foundation 网格 - 大型设备》

《Foundation 网格 - 大型设备》 引言 在当今科技日新月异的时代,大型设备在各个领域都扮演着至关重要的角色。其中,Foundation 网格作为一项创新技术,正在逐渐改变着我们的生产方式和生活质量。本文将深入探讨Foundation 网格的特点、应用以及未来发展趋势。 一、Founda…...

2026 年1月 13 日-KB5074109(OS内部版本 26200.7623 和 26100.7623)

&#x1f525;个人主页&#xff1a;杨利杰YJlio❄️个人专栏&#xff1a;《Sysinternals实战教程》《Windows PowerShell 实战》《WINDOWS教程》《IOS教程》《微信助手》《锤子助手》 《Python》 《Kali Linux》《那些年未解决的Windows疑难杂症》&#x1f31f; 让复杂的事情更…...