终端基础 #

一、终端与 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、命令格式、快捷键、基础命令、特殊符号、重定向和管道等核心概念。

关键要点:

  1. 终端是与系统交互的文本界面
  2. Shell 是命令解释器,bash 最常用
  3. 掌握快捷键可以大大提高效率
  4. 通配符和引号有不同作用
  5. 重定向和管道是强大的组合工具

下一章预告: 文件操作 - 学习创建、复制、移动和删除文件的命令。

最后更新:2026-03-27