对于 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

七、新手常见误区总结

  1. 赋值等号不能加空格:Shell 变量定义 a=1 正确,a = 1 报错
  2. if 判断括号必须留空格:[ -f test.txt ] 正确,括号内侧必须有空格
  3. 禁止随意使用 rm -rf:该命令强制删除无回收站,切勿误删系统目录
  4. 脚本必须加执行权限:写完脚本后需 chmod +x 授权,否则无法运行

八、总结

Shell 是 Linux 操作的基石,学习路径可总结为:熟悉基础命令 → 掌握脚本规范 → 学会变量/判断/循环语法 → 实操自动化场景

掌握 Shell 不仅能提升服务器操作效率,更是运维、后端开发、自动化测试的必备能力。后续可以深入学习 Shell 函数、数组、正则匹配、日志处理等进阶内容,实现复杂自动化脚本开发。

posted on 2026-09-14 15:10  若霜  阅读(8)  评论(0)    收藏  举报