对于 Linux 运维、后端开发、自动化测试从业者来说,Shell 是必须掌握的核心技能。它是连接用户与 Linux 系统内核的桥梁,无论是日常服务器操作、文件管理,还是批量自动化脚本执行,都离不开 Shell。
本文将从零开始,带你系统学习 Shell 基础,涵盖核心概念、常用命令、脚本基础、变量与流程控制,全程通俗易懂、实操性强,适合零基础小白入门收藏。
一、什么是 Shell?
1.1 核心定义
Shell 俗称命令行解释器,是用户和 Linux 内核交互的接口。我们在终端输入的每一条命令,都会被 Shell 解析、翻译,再交给系统内核执行,最后将执行结果返回给用户。
1.2 常见 Shell 类型
Linux 系统默认自带多种 Shell,最常用的有两种:
- bash(Bourne-Again Shell):绝大多数 Linux 发行版(CentOS、Ubuntu)默认 Shell,功能最全、使用最广,本文所有案例均基于 bash。
- sh(Bourne Shell):早期经典 Shell,功能精简,兼容性强,现在基本被 bash 替代。
- 其他:zsh、csh 等,多用于个性化终端环境。
1.3 查看当前 Shell
终端输入以下命令,可查看当前系统使用的 Shell:
echo $SHELL
输出示例(默认 bash):
/bin/bash
二、Shell 命令基础规范
2.1 命令基本格式
Shell 命令通用格式:命令 + 选项 + 参数
command [-options] [arguments]
- command:核心命令(必备),如 ls、cd、mkdir
- -options:可选参数,用于细化命令功能,短参数单横杠 -,长参数双横杠 --
- arguments:操作对象(文件、目录、路径等)
示例:
# 查看当前目录所有文件(包含隐藏文件)
ls -a
2.2 基础操作技巧
- Tab 补全:输入命令/文件前缀,按 Tab 自动补全,双击 Tab 显示所有匹配内容,大幅提升输入效率
- 历史命令:history 查看所有历史命令,上下方向键快速切换历史命令
- 命令清屏:clear 或快捷键 Ctrl+L
- 终止命令:Ctrl+C 强制终止当前执行的命令
三、高频 Shell 基础命令(实操必备)
整理日常使用频率最高的文件、目录、权限操作命令,新手直接熟记即可满足 90% 基础需求。
3.1 目录操作命令
# 1. 查看当前工作目录
pwd
# 2. 切换目录
cd /home # 绝对路径切换
cd ./test # 相对路径切换
cd .. # 返回上一级目录
cd ~ # 回到用户家目录
cd / # 回到根目录
# 3. 创建目录
mkdir test_dir # 创建单层目录
mkdir -p a/b/c # 递归创建多层目录
# 4. 删除目录
rmdir 空目录名 # 仅删除空目录
rm -rf 目录名 # 强制删除非空目录(慎用!)
3.2 文件操作命令
# 1. 创建空文件
touch test.txt
# 2. 查看文件内容
cat test.txt # 一次性查看全部内容(适合小文件)
more test.txt # 分页查看,空格翻页,q退出
less test.txt # 高级分页查看,支持上下滚动
head -n 5 test.txt # 查看前5行
tail -n 5 test.txt # 查看后5行
tail -f test.txt # 实时监控文件更新(日志查看神器)
# 3. 文件复制/移动/重命名
cp test.txt ./bak/ # 复制文件到指定目录
mv test.txt new.txt # 重命名文件
mv test.txt /home/ # 移动文件到指定目录
# 4. 删除文件
rm -f test.txt # 强制删除文件
3.3 文件权限基础
Linux 文件权限分为:所有者(u)、所属组(g)、其他用户(o),权限分为读(r)、写(w)、执行(x)。
# 修改文件权限
chmod 755 test.sh # 数字权限:所有者读写执行,组/其他读+执行
chmod +x test.sh # 给所有用户添加执行权限
# 修改文件所属用户组
chown 用户名:组名 文件名
四、Shell 脚本入门(从零写第一个脚本)
Shell 最大的价值是批量自动化执行命令,将多条命令写入文件,一键执行,告别重复手动操作。
4.1 脚本基本规范
1. Shell 脚本后缀一般为 .sh;
2. 脚本首行必须指定解释器:#!/bin/bash;
3. # 开头为注释内容,不会被执行。
4.2 第一个 Shell 脚本
步骤1:创建脚本文件
touch hello.sh
步骤2:编辑脚本内容
vim hello.sh
写入以下内容:
#!/bin/bash
# 我的第一个Shell脚本
echo "Hello Shell!入门成功!"
echo "当前系统时间:$(date)"
步骤3:添加执行权限
chmod +x hello.sh
步骤4:执行脚本
./hello.sh
执行结果:
Hello Shell!入门成功!
当前系统时间:2025年XX月XX日 XX:XX:XX
五、Shell 核心基础语法
5.1 变量定义与使用
Shell 变量无需声明类型,直接赋值即可,默认均为字符串类型。
#!/bin/bash
# 定义变量(等号两边不能有空格)
name="Shell入门"
version="1.0"
# 使用变量
echo "教程名称:$name"
echo "版本:$version"
# 只读变量(不可修改)
readonly author="admin"
# 系统内置变量
echo "当前脚本路径:$0"
echo "当前用户:$USER"
echo "当前目录:$PWD"
5.2 条件判断语句(if)
用于判断文件是否存在、变量值、权限等场景,是脚本自动化的核心。
#!/bin/bash
# 判断文件是否存在
if [ -f "test.txt" ];then
echo "文件存在"
else
echo "文件不存在,正在创建..."
touch test.txt
fi
常用文件判断参数:
- -f:判断是否为普通文件
- -d:判断是否为目录
- -x:判断是否有执行权限
- -w:判断是否有写入权限
5.3 循环语句(for)
用于批量操作文件、遍历数据,高效处理重复任务。
#!/bin/bash
# 批量创建10个文件
for i in {1..10}
do
touch "file_$i.txt"
echo "创建文件:file_$i.txt 成功"
done
六、新手必备 Shell 实操技巧
6.1 管道符 |
将前一个命令的输出结果,作为后一个命令的输入,实现命令联动。
# 查看当前进程中包含nginx的进程
ps -ef | grep nginx
# 统计当前目录文件数量
ls | wc -l
6.2 重定向符号
- >:覆盖重定向,将命令输出写入文件(清空原有内容)
- >>:追加重定向,将命令输出追加到文件末尾
echo "测试内容" > test.txt
echo "新增内容" >> test.txt
七、新手常见误区总结
- 赋值等号不能加空格:Shell 变量定义 a=1 正确,a = 1 报错
- if 判断括号必须留空格:[ -f test.txt ] 正确,括号内侧必须有空格
- 禁止随意使用 rm -rf:该命令强制删除无回收站,切勿误删系统目录
- 脚本必须加执行权限:写完脚本后需 chmod +x 授权,否则无法运行
八、总结
Shell 是 Linux 操作的基石,学习路径可总结为:熟悉基础命令 → 掌握脚本规范 → 学会变量/判断/循环语法 → 实操自动化场景。
掌握 Shell 不仅能提升服务器操作效率,更是运维、后端开发、自动化测试的必备能力。后续可以深入学习 Shell 函数、数组、正则匹配、日志处理等进阶内容,实现复杂自动化脚本开发。
浙公网安备 33010602011771号