终端基础 #
一、终端与 Shell #
1.1 什么是终端 #
终端(Terminal)是与系统交互的文本界面,用户通过输入命令来操作系统。
终端类型:
- 物理终端:早期的硬件终端设备
- 虚拟终端:Ctrl+Alt+F1~F6
- 终端模拟器:图形界面中的终端软件
常见终端模拟器:
| 软件 | 特点 |
|---|---|
| GNOME Terminal | Ubuntu 默认终端 |
| Konsole | KDE 桌面终端 |
| iTerm2 | macOS 强大终端 |
| Alacritty | GPU 加速终端 |
| Terminator | 支持分屏 |
1.2 什么是 Shell #
Shell 是命令解释器,负责将用户输入的命令转换为系统能理解的操作。
常见 Shell:
bash
# 查看系统可用 Shell
cat /etc/shells
# 查看当前 Shell
echo $SHELL
# 查看所有 Shell
chsh -l
| Shell | 说明 |
|---|---|
| bash | 最常用的 Shell |
| zsh | 功能强大,配置丰富 |
| fish | 用户友好,自动补全 |
| dash | 轻量级,脚本执行快 |
1.3 Bash 配置文件 #
bash
# 系统级配置
/etc/profile # 所有用户
/etc/bash.bashrc # 所有用户 bash 配置
# 用户级配置
~/.bash_profile # 登录时执行
~/.bashrc # 打开新终端时执行
~/.bash_logout # 退出时执行
二、命令格式 #
2.1 基本格式 #
bash
命令 [选项] [参数]
示例:
bash
ls # 命令
ls -l # 命令 + 选项
ls -l /home # 命令 + 选项 + 参数
ls -la /home /var # 多个选项和参数
2.2 选项格式 #
短选项: 单个字符,使用单横线
bash
ls -l
ls -a
ls -la # 组合使用
长选项: 单词,使用双横线
bash
ls --all
ls --human-readable
ls --sort=time
2.3 参数类型 #
bash
# 文件参数
cat file.txt
# 目录参数
ls /home
# 用户参数
useradd username
# 多个参数
cp file1.txt file2.txt /backup/
三、常用快捷键 #
3.1 光标移动 #
| 快捷键 | 功能 |
|---|---|
| Ctrl + A | 移到行首 |
| Ctrl + E | 移到行尾 |
| Ctrl + B | 向左移动一个字符 |
| Ctrl + F | 向右移动一个字符 |
| Alt + B | 向左移动一个单词 |
| Alt + F | 向右移动一个单词 |
3.2 编辑操作 #
| 快捷键 | 功能 |
|---|---|
| Ctrl + U | 删除光标前所有内容 |
| Ctrl + K | 删除光标后所有内容 |
| Ctrl + W | 删除光标前一个单词 |
| Ctrl + D | 删除光标处字符 |
| Ctrl + H | 删除光标前一个字符 |
| Ctrl + T | 交换光标前两个字符 |
3.3 控制命令 #
| 快捷键 | 功能 |
|---|---|
| Ctrl + C | 终止当前命令 |
| Ctrl + D | 退出当前 Shell |
| Ctrl + Z | 暂停当前命令 |
| Ctrl + L | 清屏 |
| Ctrl + R | 搜索历史命令 |
3.4 历史命令 #
bash
# 查看历史命令
history
# 执行第 N 条历史命令
!N
# 执行上一条命令
!!
# 执行最近以 xxx 开头的命令
!xxx
# 搜索历史命令(Ctrl+R)
# 按 Ctrl+R 后输入关键词,继续按 Ctrl+R 查找下一个
四、基础命令 #
4.1 echo - 输出文本 #
bash
# 输出文本
echo "Hello World"
# 输出变量
echo $HOME
# 输出带转义字符
echo -e "Line1\nLine2"
# 输出不换行
echo -n "No newline"
4.2 pwd - 显示当前目录 #
bash
# 显示当前工作目录
pwd
# 显示物理路径(不包含符号链接)
pwd -P
4.3 clear - 清屏 #
bash
# 清除屏幕内容
clear
# 快捷键方式
Ctrl + L
4.4 type - 查看命令类型 #
bash
# 查看命令类型
type ls
type cd
type ll
# 查看命令位置
type -a ls
4.5 which - 查找命令位置 #
bash
# 查找命令所在位置
which ls
which python
# 查找所有匹配
which -a python
4.6 alias - 命令别名 #
bash
# 查看所有别名
alias
# 设置别名
alias ll='ls -la'
alias cls='clear'
alias grep='grep --color=auto'
# 删除别名
unalias ll
4.7 exit - 退出终端 #
bash
# 退出当前 Shell
exit
# 快捷键方式
Ctrl + D
五、特殊符号 #
5.1 通配符 #
| 符号 | 说明 |
|---|---|
| * | 匹配任意多个字符 |
| ? | 匹配单个字符 |
| [] | 匹配指定范围内的字符 |
| [!] | 匹配不在指定范围内的字符 |
bash
# 列出所有 .txt 文件
ls *.txt
# 列出 file1.txt, file2.txt, file3.txt
ls file?.txt
# 列出 file1.txt 到 file5.txt
ls file[1-5].txt
# 列出以 a 或 b 开头的文件
ls [ab]*
# 列出不以 a 开头的文件
ls [!a]*
5.2 引号 #
bash
# 单引号:原样输出
echo '$HOME' # 输出: $HOME
# 双引号:解析变量
echo "$HOME" # 输出: /home/user
# 反引号:执行命令
echo `date` # 输出: 当前日期时间
echo $(date) # 推荐写法
5.3 转义字符 #
bash
# 转义特殊字符
echo "Price: \$100" # 输出: Price: $100
# 转义空格
touch file\ name.txt # 创建带空格的文件名
六、输入输出重定向 #
6.1 标准流 #
| 文件描述符 | 名称 | 默认设备 |
|---|---|---|
| 0 | 标准输入 (stdin) | 键盘 |
| 1 | 标准输出 (stdout) | 屏幕 |
| 2 | 标准错误 (stderr) | 屏幕 |
6.2 输出重定向 #
bash
# 输出到文件(覆盖)
echo "Hello" > file.txt
# 输出到文件(追加)
echo "World" >> file.txt
# 重定向错误输出
ls /notexist 2> error.log
# 重定向标准输出和错误
ls /home /notexist > output.log 2>&1
# 简写形式
ls /home /notexist &> output.log
# 丢弃输出
ls /notexist 2>/dev/null
6.3 输入重定向 #
bash
# 从文件读取输入
wc -l < file.txt
# Here Document
cat << EOF
Line 1
Line 2
EOF
# Here String
grep "pattern" <<< "search in this string"
七、管道 #
7.1 管道基础 #
管道将一个命令的输出作为另一个命令的输入。
bash
# 基本语法
command1 | command2
# 统计文件数量
ls | wc -l
# 查找进程
ps aux | grep nginx
# 分页查看
ls -l | less
7.2 管道组合 #
bash
# 查找并排序
cat file.txt | sort | uniq
# 查找并统计
grep "error" /var/log/syslog | wc -l
# 多级过滤
ps aux | grep python | grep -v grep | awk '{print $2}'
八、命令替换 #
8.1 基本用法 #
bash
# 使用反引号(旧语法)
echo "Today is `date`"
# 使用 $()(推荐)
echo "Today is $(date)"
# 嵌套使用
echo "Kernel: $(uname -r)"
8.2 实际应用 #
bash
# 创建带时间戳的备份
tar -czf backup_$(date +%Y%m%d).tar.gz /home/user
# 获取文件行数
lines=$(wc -l < file.txt)
echo "File has $lines lines"
# 获取进程 PID
pid=$(pgrep nginx)
echo "Nginx PID: $pid"
九、实践练习 #
9.1 练习一:基础命令 #
bash
# 1. 显示当前目录
pwd
# 2. 显示当前用户
whoami
# 3. 显示日期
date
# 4. 显示日历
cal
# 5. 显示系统信息
uname -a
9.2 练习二:重定向与管道 #
bash
# 1. 将日期保存到文件
date > today.txt
# 2. 追加用户名到文件
whoami >> today.txt
# 3. 统计 /etc 目录下的文件数
ls /etc | wc -l
# 4. 查找包含 "root" 的行
cat /etc/passwd | grep root
9.3 练习三:历史与别名 #
bash
# 1. 查看最近 10 条历史命令
history 10
# 2. 创建常用别名
alias ll='ls -la'
alias cls='clear'
alias ..='cd ..'
# 3. 保存别名到配置文件
echo "alias ll='ls -la'" >> ~/.bashrc
十、小结 #
本章学习了终端的基本使用,包括 Shell、命令格式、快捷键、基础命令、特殊符号、重定向和管道等核心概念。
关键要点:
- 终端是与系统交互的文本界面
- Shell 是命令解释器,bash 最常用
- 掌握快捷键可以大大提高效率
- 通配符和引号有不同作用
- 重定向和管道是强大的组合工具
下一章预告: 文件操作 - 学习创建、复制、移动和删除文件的命令。
最后更新:2026-03-27