Linux Shell基础常用脚本命令及应用案例

embedded/2024/9/24 11:29:15/

文章目录

    • 常用的 Shell 命令
      • 1. 变量
      • 2. 注释
      • 3. 输出
      • 4. 输入
      • 5. 条件判断
      • 6. 循环
      • 7. 函数
      • 8. 运算
      • 9. 流程控制
      • 10. 文件和目录操作
      • 11. 错误处理
    • Shell 脚本应用案例
      • 1. Hello World 脚本
      • 2. 创建系统账户及设置密码
      • 3. 日志文件备份
      • 4. 一键部署 LNMP 环境
      • 5. 检查磁盘空间
      • 6. 自动安装软件包
      • 7. 文件查找与删除
      • 8. 系统信息报告
      • 9. 网络监控脚本
      • 10. 文件内容替换
      • 11. 系统服务管理
      • 12. 系统更新脚本
      • 13. 备份数据库

Shell__2">常用的 Shell 命令

Shell>Linux Shell 脚本是一种强大的工具,可以用来自动化日常任务、系统管理、数据处理等。下面是一些常用的 Shell 命令和它们在脚本中的使用方法。

1. 变量

变量用于存储值或字符串。在 Bash shell 中定义变量非常简单:

variable_name=value

示例:

#!/bin/bash
name="John Doe"
echo "Hello, $name!"

2. 注释

# 符号之后的内容会被当作注释,不会被执行。

# This is a comment

3. 输出

echo 命令用于输出文本到标准输出(通常是终端)。

echo "This is an output message."

4. 输入

read 命令用于从用户获取输入。

echo "Enter your name:"
read name
echo "Hello, $name!"

5. 条件判断

if 语句用于基于条件执行代码块。

if [ "$number" -gt 10 ]; thenecho "Number is greater than 10."
elseecho "Number is less than or equal to 10."
fi

6. 循环

  • for 循环遍历列表中的元素。
  • while 循环在条件为真时重复执行。
# For loop
for i in {1..5}; doecho "Loop iteration: $i"
done# While loop
i=1
while [ $i -le 5 ]; doecho "Loop iteration: $i"((i++))
done

7. 函数

函数允许你将一系列命令组合起来,并且可以多次调用这些命令。

greet() {echo "Hello, $1"
}greet "Alice"

8. 运算

可以进行简单的数学运算。

a=5
b=3
sum=$((a + b))
echo "Sum is: $sum"

9. 流程控制

  • break 退出循环。
  • continue 跳过当前迭代并继续下一次迭代。
for i in {1..10}; doif [ $i -eq 5 ]; thenbreakfiecho $i
donefor i in {1..10}; doif [ $((i % 2)) -eq 0 ]; thencontinuefiecho $i
done

10. 文件和目录操作

  • mkdir 创建目录。
  • rm 删除文件。
  • cp 复制文件。
  • mv 移动或重命名文件。
  • grep 在文件中搜索模式。
  • wc 统计字节数、字数、行数等。
  • sort 对文件内容排序。
  • uniq 过滤重复的行。
  • sed 文本流编辑器。
  • awk 强大的文本处理工具。

示例:

mkdir new_directory
cp file.txt new_directory/
wc -l file.txt

11. 错误处理

通过检查命令的退出状态来处理错误。

command || echo "Command failed."
command && echo "Command succeeded."

以上就是一些基本的 Shell 脚本命令和结构。你可以根据需要组合这些命令来创建更复杂的脚本。

Shell__132">Shell 脚本应用案例

以下是几个具体的 Shell 脚本应用案例,这些案例基于之前提到的一些常见任务:

1. Hello World 脚本

这个脚本是最简单的例子,用于输出“Hello World!”。

#!/bin/bash
echo "Hello World!"

2. 创建系统账户及设置密码

这个脚本接受两个参数:用户名和密码,然后创建一个新用户并设置密码。

#!/bin/bash
# 通过位置变量创建 Linux 系统账户及密码
#$1 是执行脚本的第一个参数 (用户名)
#$2 是执行脚本的第二个参数 (密码)
useradd "$1"
echo "$2" | passwd --stdin "$1"

3. 日志文件备份

这个脚本每周五凌晨 3 点自动备份 /var/log 目录下的所有日志文件,并将它们压缩成一个 .tar.gz 文件。

#!/bin/bash
# 每周 5 使用 tar 命令备份/var/log 下的所有日志文件
tar -czf log-`date +%Y%m%d`.tar.gz /var/log

为了使这个脚本能够定期运行,你需要在 crontab 中添加一条定时任务:

# 打开 crontab 编辑器
crontab -e# 添加以下行
0 3 * * 5 /root/logbak.sh

4. 一键部署 LNMP 环境

这个脚本用于一键部署 LNMP(Linux, Nginx, MySQL, PHP)环境。

#!/bin/bash
# 一键部署 LNMP(RPM 包版本)
# 使用 yum 安装部署 LNMP,需要提前配置好 yum 源
yum -y install nginx
yum -y install mariadb-server mariadb-client
yum -y install php php-mysql
# 启动服务
systemctl start nginx mariadb
# 设置开机启动
systemctl enable nginx mariadb

5. 检查磁盘空间

这个脚本可以显示当前系统的磁盘使用情况。

#!/bin/bash
# 显示磁盘使用情况
df -h

6. 自动安装软件包

这个脚本可以根据提供的软件包列表自动安装所需的软件包。

#!/bin/bash
# 自动安装软件包
# 第一个参数是软件包列表,以逗号分隔
pkgs="$1"
for pkg in $(echo $pkgs | tr ',' ' '); doyum -y install $pkg
done

7. 文件查找与删除

这个脚本可以在指定目录中查找并删除特定类型的文件。

#!/bin/bash
# 查找并删除特定类型的文件
# 第一个参数是目录路径
# 第二个参数是文件扩展名
dir="$1"
ext="$2"
find "$dir" -type f -name "*.$ext" -delete

接下来 Shell 脚本应用案例,涵盖一些常见的系统管理和自动化任务。

8. 系统信息报告

这个脚本会收集系统的相关信息,如操作系统名称、内核版本、内存使用情况、磁盘空间等,并将这些信息打印出来。

#!/bin/bash
# 系统信息报告
echo "System Information Report:"
echo "---------------------------"
echo "Hostname: $(hostname)"
echo "OS: $(uname -s) $(uname -r)"
echo "Kernel Version: $(uname -v)"
echo "Memory Usage: $(free -m | grep Mem | awk '{print $3/$2 * 100.0"%"}')"
echo "Disk Space Usage: $(df -h | awk '/\/$/ {print $5}')"

9. 网络监控脚本

这个脚本每隔一分钟检查网络连接的状态,并记录到一个日志文件中。

#!/bin/bash
# 网络监控脚本
log_file="/var/log/network_monitor.log"while true; doping -c 1 google.com > /dev/null 2>&1if [ $? -eq 0 ]; thenecho "$(date): Network is UP" >> $log_fileelseecho "$(date): Network is DOWN" >> $log_filefisleep 60
done

10. 文件内容替换

这个脚本会在指定的文件中查找特定的字符串,并将其替换成新的字符串。

#!/bin/bash
# 文件内容替换
# 第一个参数是文件路径
# 第二个参数是旧字符串
# 第三个参数是新字符串
file_path="$1"
old_string="$2"
new_string="$3"sed -i "s/$old_string/$new_string/g" "$file_path"

11. 系统服务管理

这个脚本可以启动、停止或重启指定的服务。

#!/bin/bash
# 系统服务管理
# 第一个参数是服务名称
# 第二个参数是操作 (start, stop, restart)service_name="$1"
action="$2"case $action instart)systemctl start $service_name;;stop)systemctl stop $service_name;;restart)systemctl restart $service_name;;*)echo "Invalid action. Use start, stop, or restart."exit 1;;
esac

12. 系统更新脚本

这个脚本会检查可用的软件包更新,并自动安装它们。

#!/bin/bash
# 系统更新脚本
# 使用 yum 更新系统
yum update -y

13. 备份数据库

这个脚本会备份指定的 MySQL 数据库,并将备份文件保存在一个指定的位置。

#!/bin/bash
# 备份 MySQL 数据库
# 第一个参数是数据库名称
# 第二个参数是数据库用户名
# 第三个参数是数据库密码
db_name="$1"
db_user="$2"
db_password="$3"
backup_dir="/var/backups/mysql"
backup_file="${backup_dir}/${db_name}-$(date +%Y%m%d%H%M%S).sql"mysqldump -u $db_user -p$db_password $db_name > $backup_file

这些脚本覆盖了从简单的系统信息报告到复杂的网络监控和数据库备份等任务。

😍😍 海量H5小游戏、微信小游戏、Web casualgame源码😍😍
😍😍试玩地址: https://www.bojiogame.sg😍😍
😍看上哪一款,需要源码的csdn私信我😍

————————————————

​最后我们放松一下眼睛
在这里插入图片描述


http://www.ppmy.cn/embedded/94917.html

相关文章

linux HBA驱动中scsi_host_template .shost_attrs

在Linux内核中,SCSI(Small Computer System Interface)是一种用于连接计算机和外围设备的接口。scsi_host_template是一个结构体,用于定义SCSI主机(host adapter)的属性和操作。这个模板用于初始化SCSI主机…

3. MQTT协议的架构

1 MQTT协议的层次结构 MQTT协议的架构设计简洁,主要由三个部分组成:客户端、代理和消息。理解这些组件及其交互是掌握MQTT协议的关键。 1.1 客户端(Client) 客户端是MQTT协议的核心组成部分,分为发布者和订阅者两种…

【vue3|第20期】vue3中Vue Router路由器工作模式

日期:2024年8月6日 作者:Commas 签名:(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方&#xff…

生活生鲜超市小程序系统开发方案

生活生鲜超市小程序系统是集商品浏览、在线下单、支付结算、物流配送、会员管理等功能于一体。是为了满足现代消费者对新鲜食品购买的便利性与即时性需求。 适用于:生鲜超市、百货、连锁、水果、批发、便民、果蔬、食品、食材、鲜果、特产、海鲜等店铺。一、目标用户…

Redis相关介绍

本文介绍了Redis,一种开源的内存数据结构存储系统,强调其高性能、多种数据结构支持、内存存储、持久化策略、发布订阅功能及工作原理。 Redis的介绍 Redis(Remote Dictionary Server),即远程字典服务,是一…

vue RSA加密解密(解决加密过长,解密过长返回为null的问题)

1安装 npm i jsencrypt2.rsa.js /* 引入jsencrypt实现数据RSA加密 */ import JSEncrypt from jsencrypt // 处理长文本数据时报错 jsencrypt.js Message too long for RSA /* 引入encryptlong实现数据RSA加密 */ //import Encrypt from encryptlong // encryptlong是基于jsen…

计算机视觉入门:OpenCV 人脸检测技术简介

计算机视觉入门:OpenCV 人脸检测技术简介 计算机视觉是让计算机“看”并理解图像或视频内容的技术领域。它在许多应用中扮演着重要角色,如自动驾驶、医疗影像分析和视频监控等。在计算机视觉中,人脸检测是一项基础而关键的技术,其…

【Kubernetes】Service 概念与实战

Service 概念与实战 1.通过 Service 向外部暴露 Pod2.Service 的多端口设置3.集群内部的 DNS 服务4.无头 Service 在 Kubernetes 中部署的应用可能对应一个或者多个 Pod,而每个 Pod 又具有独立的 IP 地址。Service(服务)能够为一组功能相同的…