文档首页> 互联网资讯> Linux Shell 自动化实战指南

Linux Shell 自动化实战指南

发布时间:2026-08-31 18:26       

linux shell

什么是 Linux Shell

Linux Shell 是用户与 Linux 内核交互的命令行解释器。用户在终端中输入命令,Shell 负责解析命令、调用系统程序,并将执行结果返回给用户。对于服务器运维、自动化部署、日志分析、批量文件处理等场景,Shell 都是非常重要且实用的工具。

常见的 Shell 类型包括:

  • sh:早期 Unix Shell,语法较简单。
  • bash:Linux 中默认常用的 Shell,功能丰富。
  • zsh:交互体验较好,常用于开发环境。
  • fish:语法友好,适合交互式使用。

本文主要以 bash 为例介绍 Linux Shell 的常用知识和基础教程。


常用 Shell 命令

查看当前目录

pwd

该命令用于显示当前所在目录。

列出文件

ls
ls -l
ls -a
  • ls:列出当前目录内容。
  • ls -l:以详细信息显示文件。
  • ls -a:显示隐藏文件。

创建目录

mkdir project
mkdir -p project/src/config

-p 参数可以递归创建多级目录。

切换目录

cd project
cd ..
cd ~
  • cd ..:返回上级目录。
  • cd ~:回到用户家目录。

创建和编辑文件

touch app.sh
nano app.sh
vim app.sh

touch 可以创建空文件,nanovim 是常用的文本编辑器。


文件与目录管理

Shell 中常见的文件操作命令包括:

cp file.txt backup.txt
mv file.txt /tmp/
rm file.txt
rm -r directory

说明:

  • cp:复制文件。
  • mv:移动或重命名文件。
  • rm:删除文件。
  • rm -r:递归删除目录。

删除操作需要谨慎,尤其是使用 rm -rf 时,可能会造成不可恢复的数据丢失。


权限管理

Linux 文件权限由读、写、执行三种权限组成:

  • r:读权限。
  • w:写权限。
  • x:执行权限。

查看文件权限:

ls -l

修改权限:

chmod 755 app.sh
chmod +x app.sh

修改文件所有者:

chown user:group file.txt

在部署脚本或运行程序时,经常需要给脚本添加执行权限:

chmod +x run.sh

Shell 变量

Shell 中可以定义变量:

name="Linux"
echo $name

也可以定义环境变量:

export APP_ENV=production
echo $APP_ENV

变量赋值时,等号两边不能有空格。引用变量时通常使用 $变量名

示例:

#!/bin/bash

app_name="demo"
echo "应用名称:$app_name"

条件判断

Shell 脚本可以根据条件执行不同逻辑。

#!/bin/bash

age=18

if [ $age -ge 18 ]; then
  echo "成年人"
else
  echo "未成年人"
fi

常用判断条件:

[ -f file.txt ]   # 判断是否为普通文件
[ -d dir ]        # 判断是否为目录
[ -z "$var" ]     # 判断变量是否为空
[ "$a" = "$b" ]   # 判断字符串是否相等

循环结构

for 循环

#!/bin/bash

for i in 1 2 3 4 5; do
  echo "当前数字:$i"
done

遍历文件:

for file in *.txt; do
  echo "文件:$file"
done

while 循环

#!/bin/bash

count=1

while [ $count -le 5 ]; do
  echo "计数:$count"
  count=$((count + 1))
done

循环常用于批量处理文件、执行重复任务、监控服务状态等场景。


管道与重定向

管道符 | 可以把前一个命令的输出作为后一个命令的输入。

ps aux | grep nginx

这条命令用于查找 nginx 相关进程。

重定向可以控制命令输出的位置:

echo "hello" > log.txt
echo "world" >> log.txt
command > output.txt 2> error.txt

说明:

  • >:覆盖输出到文件。
  • >>:追加输出到文件。
  • 2>:将错误信息输出到指定文件。

文本处理命令

Shell 中经常需要处理文本内容,常用命令包括:

grep

grep "error" app.log

用于在文件中搜索指定内容。

awk

awk '{print $1}' data.txt

常用于按列提取数据。

sed

sed 's/old/new/g' file.txt

用于替换文本内容。

例如,将配置文件中的端口号替换掉:

sed -i 's/port=8080/port=9000/g' config.conf

编写一个简单脚本

下面是一个简单的 Shell 脚本,用于检查目录是否存在,不存在则创建,并写入日志。

#!/bin/bash

log_dir="./logs"

if [ ! -d "$log_dir" ]; then
  mkdir -p "$log_dir"
  echo "目录已创建:$log_dir"
else
  echo "目录已存在:$log_dir"
fi

echo "脚本执行完成" >> "$log_dir/run.log"

运行方式:

chmod +x check.sh
./check.sh

Shell 脚本调试技巧

调试脚本时,可以在脚本开头添加:

set -x

这样 Shell 会打印出实际执行的命令,便于排查问题。

常用调试参数:

set -e   # 遇到错误立即退出
set -u   # 使用未定义变量时报错
set -x   # 打印执行过程

推荐写法:

#!/bin/bash

set -euo pipefail

echo "脚本开始执行"

pipefail 可以让管道中任意命令失败时,整个管道返回失败状态。


Shell 使用注意事项

  1. 执行危险命令前要确认路径和参数。
  2. 删除文件时避免误用 rm -rf
  3. 变量引用建议使用双引号,例如 "$file"
  4. 脚本开头建议添加解释器声明:#!/bin/bash
  5. 日志输出要清晰,便于排查问题。
  6. 复杂逻辑可以拆分成多个脚本,提高可维护性。

总结

Linux Shell 是 Linux 系统管理和自动化处理的重要工具。通过掌握常用命令、变量、条件判断、循环、管道、重定向以及脚本编写方法,可以高效完成文件管理、日志分析、批量操作和自动化任务。学习 Shell 的关键在于多练习、多写脚本,并在实际场景中不断积累经验。对于开发者、运维人员和系统管理员来说,熟练使用 Shell 能显著提升工作效率。