TL;DR
- 系列方向: 从 Linux 基础命令开始,逐步掌握文件管理、用户权限、进程管理、网络排查、日志分析和 Shell 自动化,最终通过真实案例提升 Linux 工程实践能力。
- 本篇重点: 认识 Linux 系统、终端和 Shell,理解 Linux 命令的基本执行方式,并通过
pwd、whoami、uname、clear等命令完成第一次 Linux 环境信息检查。
一、为什么要学习 Linux 命令?
如果你从事软件测试、自动化测试或者后端开发,那么 Linux 基本上是绕不开的一项技能。
举几个工作中经常遇到的场景:
- 自动化测试执行失败,需要登录服务器查看日志。
- 测试环境无法访问,需要检查服务是否启动。
- 某个接口一直返回异常,需要定位服务端错误信息。
- 测试服务器磁盘空间不足,需要分析哪些目录占用了大量空间。
- 自动化测试程序运行异常,需要查看进程和系统资源。
这些问题看起来不一样,但最终都可能需要通过 Linux 命令来解决。
比如,当测试人员发现服务无法访问时,可能首先需要执行:
bash
ping 服务器IP
如果需要确认服务端口是否正常监听,可以执行:
bash
ss -lntp
如果需要查看服务运行日志,可以执行:
bash
tail -f app.log
这就是学习 Linux 命令的意义。
它不是为了记住多少条命令,而是当系统出现问题时,能够通过命令快速获取信息、分析问题并找到解决方向。
二、先认识 Linux、终端和 Shell
在正式执行命令之前,需要先理解三个概念。
1. Linux 是什么?
Linux 是一种开源操作系统内核。
我们平时接触的 Ubuntu、Debian、CentOS、Rocky Linux 等,都是基于 Linux 内核构建的操作系统发行版。
不同发行版在软件包管理、系统配置和部分工具使用上有所区别,但很多基础命令是通用的。
例如:
bash
pwd
ls
cd
mkdir
无论使用 Ubuntu 还是 CentOS,通常都可以使用这些命令。
2. 什么是终端(Terminal)?
终端可以理解为我们与 Linux 系统交互的入口。
以前操作计算机主要依靠图形界面,例如点击文件夹、打开软件、查看文件。
而在 Linux 中,我们也可以直接输入命令,让系统完成相应操作。
例如:
bash
pwd
输入命令并按下回车,就可以查看当前所在目录。
3. 什么是 Shell?
Shell 是命令解释器,负责接收用户输入的命令、解析命令并调用相应程序执行。
常见的 Shell 有:
| Shell | 说明 |
|---|---|
| Bash | Linux 中非常常见的 Shell |
| Zsh | 支持丰富的交互功能 |
| Sh | 常见的传统 Shell |
| Fish | 注重交互体验的 Shell |
可以简单理解为:
- Linux:操作系统内核。
- Terminal:输入和显示命令的窗口。
- Shell:负责解释和执行命令。
三者配合,完成我们日常的命令行操作。
三、准备 Linux 实验环境
本系列主要使用 Ubuntu 22.04/24.04 作为演示环境。
如果已经有 Linux 服务器,可以直接通过 SSH 登录。
如果没有 Linux 环境,可以选择以下方式:
方式一:使用虚拟机
安装 VMware 或 VirtualBox,然后安装 Ubuntu。
方式二:使用 WSL
Windows 用户可以通过 WSL 在 Windows 中运行 Linux 环境。
安装命令:
powershell
wsl --install -d Ubuntu
方式三:使用云服务器
购买或使用已有的 Linux 云服务器,通过 SSH 连接。
本系列的命令演示尽量使用普通用户执行,涉及系统管理的操作会单独说明权限要求。
四、第一次执行 Linux 命令
环境准备好之后,我们开始执行第一组命令。
1. 查看当前所在目录:pwd
执行:
bash
pwd
可能得到这样的结果:
text
/home/tester
这个结果表示当前用户所在的目录是 /home/tester。
这里需要理解一个概念:Linux 使用目录树结构组织文件,/ 表示根目录。
例如:
text
/
├── bin
├── boot
├── dev
├── etc
├── home
│ └── tester
├── opt
├── tmp
├── usr
└── var
不同目录有不同用途:
| 目录 | 主要用途 |
|---|---|
| / | 文件系统根目录 |
| /home | 普通用户的家目录 |
| /root | root 用户的家目录 |
| /etc | 系统配置文件 |
| /var | 日志及其他可变数据 |
| /tmp | 临时文件 |
| /usr | 系统程序及共享资源 |
| /opt | 可选软件及第三方应用 |
实际工作场景:
假设你登录测试服务器,准备查看自动化测试日志,但不确定当前在哪个目录。
这时候不需要猜测,直接执行 pwd 就能确认位置。
2. 查看当前登录用户:whoami
执行:
bash
whoami
输出:
text
tester
说明当前登录用户是 tester。
如果输出:
text
root
则说明当前使用的是 root 账户。
为什么需要关注当前用户?
因为 Linux 有用户权限控制机制。
普通用户不能随意修改系统文件,而 root 用户拥有很高的系统管理权限。
在实际工作中,很多命令执行失败,并不一定是命令写错了,也可能是当前用户没有对应权限。
例如:
bash
cat /etc/shadow
普通用户通常无法直接读取该文件。
3. 查看系统信息:uname
执行:
bash
uname
可能输出:
text
Linux
这只能说明当前系统内核名称为 Linux。
如果想查看更完整的信息,可以使用:
bash
uname -a
示例输出:
text
Linux test-server 5.15.0-xxx-generic #xxx-Ubuntu SMP x86_64 GNU/Linux
这里可以关注几个部分:
- Linux:内核名称。
- test-server:主机名。
- 5.15.0:内核版本示例。
- x86_64:系统架构。
- GNU/Linux:操作系统标识。
如果只想查看内核版本:
bash
uname -r
如果想查看系统架构:
bash
uname -m
常见输出:
text
x86_64
表示 64 位 x86 架构。
需要注意,uname 主要查看内核信息,并不能完整代表 Linux 发行版版本。
如果想知道当前使用的是 Ubuntu 22.04 还是 Ubuntu 24.04,可以执行:
bash
cat /etc/os-release
示例:
text
PRETTY_NAME="Ubuntu 24.04 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
VERSION="24.04 LTS"
ID=ubuntu
这才是查看发行版信息时更直接的方式。
4. 清理终端内容:clear
执行:
bash
clear
终端显示区域会被清理,让后续操作更加整洁。
这个命令不会删除文件,也不会清除系统历史记录。
另外,在很多终端中也可以使用快捷键:
text
Ctrl + L
达到类似的清屏效果。
五、把几个命令组合起来使用
前面分别学习了几个命令,现在我们尝试把它们组合成一个简单的 Linux 环境检查流程。
执行:
bash
echo "===== Linux 环境检查 ====="
echo "当前用户:"
whoami
echo "当前目录:"
pwd
echo "内核版本:"
uname -r
echo "系统架构:"
uname -m
echo "发行版信息:"
cat /etc/os-release | grep -E '^(PRETTY_NAME|VERSION_ID)='
执行后,可以得到类似结果:
text
===== Linux 环境检查 =====
当前用户:
tester
当前目录:
/home/tester
内核版本:
5.15.0-xxx-generic
系统架构:
x86_64
发行版信息:
PRETTY_NAME="Ubuntu 24.04 LTS"
VERSION_ID="24.04"
注意:上面的输出是示例,实际结果取决于你的 Linux 环境。
这个小练习虽然简单,但已经涉及了几个非常实用的知识点:
- 使用
echo输出文本。 - 使用命令获取系统信息。
- 使用管道符
|将前一个命令的输出传给后一个命令。 - 使用
grep对输出内容进行筛选。
这也是 Linux 命令学习中很重要的一种思路:不要只学习单个命令,还要逐渐掌握命令之间的组合。
六、常见问题与注意事项
1. 输入命令后提示 command not found
例如:
bash
abc123
输出:
text
command not found
说明 Shell 找不到对应的命令或可执行程序。
可能原因:
- 命令名称拼写错误。
- 对应软件没有安装。
- 程序所在目录没有加入 PATH 环境变量。
2. 输入命令后提示 Permission denied
例如:
bash
cat /etc/shadow
输出:
text
Permission denied
通常表示当前用户没有访问对应资源的权限。
不要遇到权限问题就习惯性使用 root。首先应该确认操作是否合理,以及当前用户是否应该拥有相应权限。
3. Linux 命令区分大小写吗?
区分。
例如:
bash
uname
和:
bash
UNAME
并不是同一个命令。
Linux 文件名通常也区分大小写,例如:
text
app.log
App.log
APP.log
可以是三个不同的文件。
七、本篇实战:完成一次 Linux 环境检查
现在可以不看前面的示例,自己完成下面几个任务。
任务一: 查看当前登录用户。
任务二: 查看当前所在目录。
任务三: 查看 Linux 内核版本。
任务四: 查看系统架构。
任务五: 查看 Linux 发行版版本。
任务六: 将以上信息组合起来,输出一份简单的环境检查结果。
参考命令:
bash
whoami
pwd
uname -r
uname -m
cat /etc/os-release
如果能够独立完成这些操作,就已经迈出了 Linux 命令学习的第一步。
八、本篇总结
这一篇没有涉及复杂的 Linux 操作,主要是帮助大家认识 Linux 命令行环境,并掌握几个最基础的命令。
| 命令 | 作用 |
|---|---|
| pwd | 查看当前目录 |
| whoami | 查看当前用户 |
| uname | 查看内核信息 |
| uname -a | 查看完整内核信息 |
| uname -r | 查看内核版本 |
| uname -m | 查看系统架构 |
| clear | 清理终端显示 |
| cat | 查看文件内容 |
| grep | 筛选匹配内容 |
| echo | 输出文本 |
我个人觉得,学习 Linux 最容易出现的问题就是一开始记住了不少命令,但真正遇到问题时,却不知道应该使用哪一个。
所以后续文章会尽量围绕具体场景展开,通过实际操作理解命令,而不是单纯背参数。
下一篇预告
Linux 命令实战(02):文件与目录操作,从 pwd、ls 到 cd,掌握 Linux 文件系统导航
下一篇将重点学习:
- Linux 文件系统目录结构。
pwd、ls、cd的详细用法。ls -l、ls -a、ls -lh的区别。- 绝对路径与相对路径。
- 如何快速定位服务器上的项目目录和日志目录。
从下一篇开始,我们正式进入 Linux 文件与目录管理的实战阶段。