Linux教程 / 第 10 节
第1章:Linux系统基础认知
了解Linux系统,开启命令行之旅
本章目标
- 了解Linux系统的历史和特点
- 认识常见的Linux发行版
- 理解终端和Shell的概念
- 掌握命令行基本语法
- 学会使用帮助系统
1.1 Linux系统简介
1.1.1 什么是Linux?
Linux是一个免费开源的类Unix操作系统,由芬兰学生Linus Torvalds于1991年创建。
Linux的特点:
- 🆓 开源免费: 源代码完全开放
- 🔒 安全稳定: 权限管理严格,系统稳定
- 🚀 高性能: 资源占用少,运行高效
- 🌍 广泛应用: 服务器、嵌入式、超级计算机
- 👥 社区支持: 庞大的开发者社区
Linux vs Windows vs macOS
| 特性 | Linux | Windows | macOS |
|---|---|---|---|
| 开源 | ✅ 是 | ❌ 否 | ❌ 否 |
| 免费 | ✅ 是 | ❌ 否 | ❌ 否 |
| 命令行 | ✅ 强大 | ⚠️ 一般 | ✅ 强大 |
| 服务器占有率 | ✅ 90%+ | ⚠️ <10% | ❌ 很少 |
| 桌面易用性 | ⚠️ 一般 | ✅ 好 | ✅ 好 |
1.1.2 为什么开发者要学Linux?
1. 服务器环境
- 90%以上的服务器运行Linux
- 云服务器(阿里云、AWS、腾讯云)默认使用Linux
- 部署应用必须掌握Linux命令
2. 开发工具
- Docker、Kubernetes等容器技术基于Linux
- 大数据、AI框架主要运行在Linux上
- 开源项目大多在Linux环境开发
3. 职业发展
- 运维工程师必备技能
- 后端开发者核心能力
- DevOps工程师基础要求
4. 效率提升
- 命令行操作比图形界面更高效
- 自动化脚本节省大量时间
- 远程管理服务器更便捷
1.1.3 常见Linux发行版
Linux有很多发行版(Distribution),每个都有自己的特点:
🔵 Debian系
Debian (最稳定)
↓
Ubuntu (最流行,新手友好)
↓
Linux Mint (桌面体验好)
🔴 Red Hat系
Red Hat Enterprise Linux (企业级)
↓
CentOS (免费的企业级,已停止维护)
↓
Rocky Linux / AlmaLinux (CentOS替代品)
↓
Fedora (最新技术)
🟢 其他流行发行版
- Arch Linux: 极简主义,滚动更新
- openSUSE: 企业级,YaST配置工具
- Kali Linux: 安全测试专用
发行版选择建议
| 用途 | 推荐发行版 | 理由 |
|---|---|---|
| 新手学习 | Ubuntu | 文档丰富,社区活跃 |
| 服务器 | Ubuntu Server / Rocky Linux | 稳定可靠 |
| 云服务器 | Ubuntu / CentOS | 云厂商默认支持 |
| 桌面使用 | Ubuntu / Linux Mint | 界面友好 |
| 开发环境 | Ubuntu / Fedora | 软件包丰富 |
1.2 终端与Shell基础
1.2.1 什么是终端(Terminal)?
终端是与Linux系统交互的文本界面,也叫命令行界面(CLI)。
图形界面 vs 命令行
图形界面(GUI): [图标] [菜单] [按钮] ← 鼠标点击
命令行(CLI): $ command [options] [arguments] ← 键盘输入
为什么使用命令行?
- ⚡ 效率高: 一条命令完成复杂操作
- 🔄 可重复: 命令可以保存和重复执行
- 🤖 可自动化: 编写脚本批量处理
- 🌐 远程管理: SSH连接远程服务器
- 💪 功能强大: 很多功能只有命令行才有
打开终端的方法
Ubuntu/Debian:
- 快捷键:
Ctrl + Alt + T - 或搜索: “Terminal”
macOS:
- 快捷键:
Cmd + Space搜索 “Terminal” - 或: 应用程序 → 实用工具 → 终端
Windows (WSL):
- 开始菜单搜索: “Ubuntu” 或 “WSL”
1.2.2 什么是Shell?
Shell是命令解释器,负责接收用户输入的命令并执行。
常见的Shell
| Shell | 全称 | 特点 | 使用率 |
|---|---|---|---|
| bash | Bourne Again Shell | 最常用,功能强大 | ⭐⭐⭐⭐⭐ |
| zsh | Z Shell | 功能更强,可定制性高 | ⭐⭐⭐⭐ |
| fish | Friendly Interactive Shell | 用户友好,智能提示 | ⭐⭐⭐ |
| sh | Bourne Shell | 最原始,兼容性好 | ⭐⭐ |
查看当前使用的Shell
# 查看当前Shell
echo $SHELL
# 输出: /bin/bash
# 查看系统可用的Shell
cat /etc/shells
# 输出:
# /bin/sh
# /bin/bash
# /bin/zsh
# /usr/bin/fish
切换Shell
# 临时切换到zsh
zsh
# 永久切换默认Shell
chsh -s /bin/zsh
# 退出当前Shell
exit
1.2.3 认识命令提示符
当你打开终端时,会看到类似这样的提示符:
username@hostname:~$
提示符解析
username @ hostname : ~ $
↓ ↓ ↓ ↓
用户名 分隔符 主机名 当前目录 权限标识
$ = 普通用户
# = root用户(超级管理员)
示例
jack@ubuntu:~$ # 普通用户jack,在家目录
jack@ubuntu:/var/log$ # 普通用户jack,在/var/log目录
root@ubuntu:/home/jack# # root用户,在/home/jack目录
提示符中的特殊符号
~: 用户家目录 (等同于/home/username)/: 根目录$: 普通用户#: root用户
1.3 命令行基本语法
1.3.1 命令的基本结构
command [options] [arguments]
↓ ↓ ↓
命令名 选项 参数
示例解析
ls -l /home
↓ ↓ ↓
命令 选项 参数
ls # 列出文件
-l # 选项: 详细列表格式
/home # 参数: 要列出的目录
1.3.2 命令选项
短选项 (单个字符)
ls -l # 单个选项
ls -a # 另一个选项
ls -la # 组合多个选项
ls -l -a # 等同于上面
长选项 (完整单词)
ls --all # 长选项
ls --human-readable # 长选项
ls -l --all # 混合使用
带参数的选项
grep -n "hello" file.txt # -n 不需要参数
head -n 10 file.txt # -n 需要参数 10
tar -czf archive.tar.gz dir/ # -f 需要参数 archive.tar.gz
1.3.3 特殊字符
通配符
* # 匹配任意字符
? # 匹配单个字符
[abc] # 匹配a、b或c
[a-z] # 匹配a到z的任意字符
# 示例
ls *.txt # 列出所有.txt文件
ls file?.txt # 匹配file1.txt, fileA.txt等
ls [abc]*.txt # 匹配以a、b或c开头的.txt文件
重定向
> # 输出重定向 (覆盖)
>> # 输出重定向 (追加)
< # 输入重定向
2> # 错误输出重定向
# 示例
ls > files.txt # 将输出保存到文件
echo "hello" >> log.txt # 追加到文件
cat < input.txt # 从文件读取输入
管道
| # 将前一个命令的输出作为后一个命令的输入
# 示例
ls -l | grep ".txt" # 列出文件并筛选.txt
cat file.txt | wc -l # 统计文件行数
ps aux | grep nginx # 查找nginx进程
命令连接
; # 顺序执行
&& # 前一个成功才执行后一个
|| # 前一个失败才执行后一个
& # 后台执行
# 示例
cd /tmp; ls # 先切换目录,再列出文件
mkdir test && cd test # 创建成功才进入
cd /tmp || echo "失败" # 失败才输出
sleep 100 & # 后台运行
引号
'单引号' # 所有字符都是普通字符
"双引号" # 可以使用变量和转义字符
`反引号` # 命令替换 (已过时,推荐使用$())
# 示例
echo 'Hello $USER' # 输出: Hello $USER
echo "Hello $USER" # 输出: Hello jack
echo "Today is $(date)" # 输出: Today is Mon Jan 13 23:00:00 CST 2026
1.4 帮助系统
1.4.1 获取命令帮助的方法
方法1: –help 选项 (最快速)
ls --help
git --help
grep --help
# 输出简洁的帮助信息
方法2: man 手册 (最详细)
man ls
man grep
man bash
# 打开详细的手册页面
# 按q退出
man手册的章节
man 1 printf # 第1章: 用户命令
man 3 printf # 第3章: C库函数
man 5 passwd # 第5章: 文件格式
# 章节说明:
# 1 - 用户命令
# 2 - 系统调用
# 3 - C库函数
# 4 - 设备文件
# 5 - 文件格式
# 6 - 游戏
# 7 - 杂项
# 8 - 系统管理命令
man手册导航
空格键 # 下一页
b # 上一页
/keyword # 搜索关键字
n # 下一个搜索结果
N # 上一个搜索结果
q # 退出
h # 帮助
方法3: info 命令 (更详细)
info ls
info coreutils
# 比man更详细,有超链接
方法4: type 和 which (查找命令位置)
# 查看命令类型
type ls
# 输出: ls is aliased to `ls --color=auto'
type cd
# 输出: cd is a shell builtin
# 查看命令路径
which ls
# 输出: /usr/bin/ls
which python3
# 输出: /usr/bin/python3
方法5: apropos (搜索命令)
# 搜索与关键字相关的命令
apropos copy
# 输出:
# cp (1) - copy files and directories
# rsync (1) - a fast, versatile, remote file-copying tool
apropos "list directory"
# 输出:
# ls (1) - list directory contents
1.4.2 在线文档和资源
官方文档
中文资源
在线工具
- ExplainShell - 命令解释
- TLDR Pages - 简化的帮助文档
1.5 实战场景:首次登录服务器
场景描述
你购买了一台云服务器,第一次通过SSH登录,需要熟悉环境。
实战步骤
1. 连接服务器
# 使用SSH连接 (假设服务器IP是 192.168.1.100)
ssh username@192.168.1.100
# 输入密码后登录成功
# 看到提示符:
username@server:~$
2. 查看系统信息
# 查看系统版本
cat /etc/os-release
# 输出:
# NAME="Ubuntu"
# VERSION="22.04.1 LTS (Jammy Jellyfish)"
# 或使用
lsb_release -a
# 查看内核版本
uname -r
# 输出: 5.15.0-56-generic
# 查看系统架构
uname -m
# 输出: x86_64
# 查看主机名
hostname
# 输出: server
3. 查看当前用户和目录
# 查看当前用户
whoami
# 输出: username
# 查看当前目录
pwd
# 输出: /home/username
# 查看用户ID
id
# 输出: uid=1000(username) gid=1000(username) groups=1000(username),27(sudo)
4. 查看系统资源
# 查看内存使用
free -h
# 输出:
# total used free shared buff/cache available
# Mem: 7.7Gi 1.2Gi 5.1Gi 10Mi 1.4Gi 6.2Gi
# 查看磁盘使用
df -h
# 输出:
# Filesystem Size Used Avail Use% Mounted on
# /dev/sda1 50G 8.5G 39G 18% /
# 查看CPU信息
lscpu | grep "Model name"
# 输出: Model name: Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz
5. 测试网络连接
# 测试网络连通性
ping -c 3 baidu.com
# 输出:
# PING baidu.com (220.181.38.148) 56(84) bytes of data.
# 64 bytes from 220.181.38.148: icmp_seq=1 ttl=52 time=5.23 ms
# 查看网络接口
ip addr show
# 或
ifconfig
6. 查看帮助
# 如果不知道某个命令怎么用
ls --help
man ls
# 搜索相关命令
apropos file
7. 退出服务器
# 退出SSH连接
exit
# 或按 Ctrl+D
1.6 常用快捷键
1.6.1 命令行编辑
Ctrl + A # 移动到行首
Ctrl + E # 移动到行尾
Ctrl + U # 删除光标前的内容
Ctrl + K # 删除光标后的内容
Ctrl + W # 删除光标前的单词
Ctrl + L # 清屏 (等同于clear命令)
Ctrl + C # 终止当前命令
Ctrl + D # 退出当前Shell (等同于exit)
Ctrl + Z # 暂停当前命令
1.6.2 历史命令
↑ / ↓ # 浏览历史命令
Ctrl + R # 搜索历史命令 (反向搜索)
Ctrl + P # 上一条命令 (等同于↑)
Ctrl + N # 下一条命令 (等同于↓)
!! # 执行上一条命令
!n # 执行历史中第n条命令
!string # 执行最近以string开头的命令
# 查看历史命令
history
# 清空历史
history -c
1.6.3 Tab补全
Tab # 自动补全命令或文件名
Tab Tab # 显示所有可能的补全选项
# 示例
cd /ho[Tab] # 自动补全为 cd /home/
ls Doc[Tab] # 自动补全为 ls Documents/
git che[Tab] # 自动补全为 git checkout
1.7 常用命令速查
| 命令 | 说明 | 示例 |
|---|---|---|
whoami | 显示当前用户 | whoami |
hostname | 显示主机名 | hostname |
pwd | 显示当前目录 | pwd |
uname | 显示系统信息 | uname -a |
date | 显示日期时间 | date |
cal | 显示日历 | cal |
clear | 清屏 | clear |
history | 显示历史命令 | history |
man | 查看帮助手册 | man ls |
exit | 退出Shell | exit |
1.8 常见问题与解决
Q1: 如何知道我用的是什么Linux发行版?
# 方法1
cat /etc/os-release
# 方法2
lsb_release -a
# 方法3
uname -a
Q2: 命令输入错误怎么办?
# 使用Ctrl+C终止
# 或使用Ctrl+U删除整行
# 或按ESC键取消
Q3: 如何查看命令的完整路径?
which ls
# 输出: /usr/bin/ls
type -a python3
# 输出: python3 is /usr/bin/python3
Q4: 忘记命令怎么办?
# 搜索历史命令
Ctrl + R
# 搜索相关命令
apropos keyword
# 查看帮助
man command
command --help
Q5: 如何复制粘贴?
# 在终端中:
Ctrl + Shift + C # 复制
Ctrl + Shift + V # 粘贴
# 或使用鼠标:
# 选中即复制
# 中键粘贴 (或右键→粘贴)
1.9 本章小结
本章学习了Linux系统基础:
✅ Linux简介: 了解Linux的特点和应用场景
✅ 发行版: 认识常见的Linux发行版
✅ 终端与Shell: 理解终端和Shell的概念
✅ 命令语法: 掌握命令行基本语法和特殊字符
✅ 帮助系统: 学会使用man、–help等获取帮助
✅ 实战练习: 首次登录服务器的完整流程
关键要点
- Linux是开源免费的操作系统,广泛应用于服务器
- 终端是文本界面,Shell是命令解释器
- 命令格式:
command [options] [arguments] - 使用man、–help获取命令帮助
- 善用Tab补全和历史命令提高效率
下一步学习
- 第2章: 文件系统导航 - 学习在Linux中导航和定位文件
1.10 练习题
- 基础练习: 查看你的系统版本、当前用户、当前目录
- 进阶练习: 使用man查看ls命令的帮助,了解-l、-a选项的作用
- 实战练习: 使用apropos搜索与"copy"相关的命令
- 挑战练习: 自定义你的命令提示符 (提示: 修改PS1变量)
🎉 恭喜!你已经了解了Linux系统基础!
继续学习 → 第2章:文件系统导航