从手动输入命令到实现自动化运维,掌握 Shell 脚本是 Linux 系统管理的关键一步。本章将带你深入理解 Shell 的核心概念,并学会如何编写、配置和执行脚本。
Shell 核心概念
1. 什么是 Shell?
Shell 本质上是命令行解释器,它是用户与 Linux 内核交互的接口。简单来说,你输入的命令由 Shell 接收,解释后调用内核执行,最后把结果返回给你。
工作流程大致如下:
- 接收用户输入(如
ls) - 解释命令含义
- 调用内核执行
- 返回执行结果
2. 常见的 Shell 类型
不同的 Shell 提供了不同的特性和语法风格:
- bash (Bourne Again SHell): Linux 默认 Shell,功能强大且兼容 sh。
- sh (Bourne Shell): 早期经典 Unix Shell,注重高兼容性。
- zsh (Z Shell): 功能比 bash 更丰富,提供强大的自动补全和插件系统。
- ksh (Korn Shell): 融合了 sh 和 csh 的特性。
- csh/tcsh (C Shell): 语法类似 C 语言。
查看当前使用的 Shell 很简单:
echo $SHELL
3. Shell 与 Shell 脚本的区别
- Shell (交互式): 直接在终端输入命令并立即获得结果的环境。
ls -l pwd - Shell 脚本 (非交互式): 一个包含一系列命令的文本文件,用于一次性执行以实现自动化。
#!/bin/bash echo "任务开始" date echo "任务结束"
编写第一个 Shell 脚本
1. 创建与命名
使用文本编辑器(如 vim)创建文件,编写命令后保存。建议文件名以 .sh 结尾(例如 backup.sh),这样能直观地表明这是一个脚本文件。
2. 指定解释器 (Shebang)
脚本文件的第一行必须定义解释器,格式为 #!解释器路径。这告诉操作系统在直接执行脚本时 (./script.sh) 使用哪个解释器。
常见选项对比:
#!/bin/bash: 指定使用 bash。优点是可用 bash 扩展功能;缺点是跨平台可移植性稍差。#!/bin/sh: 指定使用 sh。优点是符合 POSIX 标准,可移植性好;缺点是功能受限。#!/usr/bin/env bash: 强烈推荐。通过 命令在 PATH 环境变量中查找 bash,极大提高了脚本的可移植性。


