Linux 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 ]; then
    echo "Number is greater than 10."
else
    echo "Number is less than or equal to 10."
fi

6. 循环

  • for 循环遍历列表中的元素。
  • while 循环在条件为真时重复执行。
# For loop
for i in {1..5}; do
    echo "Loop iteration: $i"
done

# While loop
i=1
while [ $i -le 5 ]; do
    echo "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}; do
    if [ $i -eq 5 ]; then
        break
    fi
    echo $i
done

for i in {1..10}; do
    if [ $((i % 2)) -eq 0 ]; then
        continue
    fi
    echo $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 脚本应用案例

以下是几个具体的 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 ',' ' '); do
    yum -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; do
    ping -c 1 google.com > /dev/null 2>&1
    if [ $? -eq 0 ]; then
        echo "$(date): Network is UP" >> $log_file
    else
        echo "$(date): Network is DOWN" >> $log_file
    fi
    sleep 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 in
    start)
        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私信我😍

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

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

  • 10
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极致人生-010

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值