CentOS Stream 9 命令行基础 ---语法知识点与实战详解
一、Linux命令行概述
1.1 什么是 Shell?
- Shell 是用户与操作系统内核之间的"接口程序",接收用户输入的命令并执行。
- CentOS Stream 9 默认使用 Bash(Bourne Again Shell)。
- 其他常见 Shell:
sh、zsh、fish、csh。
✅ 示例:查看当前使用的 Shell
bash
echo $SHELL
# 输出:/bin/bash
二、Linux命令行界面
2.1 登录方式
- 本地终端(Ctrl+Alt+F1~F6)
- SSH远程登录:
ssh username@ip_address - 图形界面终端(如 GNOME Terminal、Konsole)
三、Linux命令提示符
3.1 提示符组成
默认格式:[用户名@主机名 当前目录]$
-
$表示普通用户 -
#表示 root 用户 -
格式 :
[用户名@主机名 当前工作目录]权限标识符- 例如:
[user@centos9 ~]$ user:当前登录的用户名。centos9:主机名。~:表示当前在用户的家目录(/home/user)。$:表示当前是普通用户。#:表示当前是超级用户(root)。
- 例如:
✅ 示例:
bash
[user@centos9 ~]$ # 普通用户
[root@centos9 ~]# # root用户
🛠️ 自定义提示符(临时):
bash
PS1="[\u@\h \W]⚡ " # \u=用户名,\h=主机名,\W=当前目录名
四、Linux命令行基本操作
4.1 常用基础命令
| 命令 | 作用 | 示例 |
|---|---|---|
pwd |
显示当前工作目录 | pwd |
ls |
列出目录内容 | ls -l /home |
cd |
切换目录 | cd /etc |
mkdir |
创建目录 | mkdir mydir |
touch |
创建空文件 | touch file.txt |
cp |
复制文件/目录 | cp file1.txt file2.txt |
mv |
移动或重命名 | mv old.txt new.txt |
rm |
删除文件/目录 | rm -rf mydir |
cat |
查看文件内容 | cat /etc/hosts |
clear |
清屏 | clear |
✅ 示例:创建目录并查看
bash
mkdir ~/test_dir # 在家目录创建 test_dir
cd ~/test_dir # 进入该目录
pwd # 显示当前路径
ls -la # 列出所有文件(含隐藏)
五、Linux命令语法格式
5.1 通用格式
bash
command [options] [arguments]
command:命令名options:选项(短选项-a,长选项--all)arguments:参数(文件名、路径等)
✅ 示例:带选项的 ls 命令
bash
ls -l --human-readable /var/log
# -l: 长格式显示
# --human-readable: 以易读单位显示大小(如K/M/G)
六、命令自动补全
6.1 Tab键自动补全
- 输入命令或文件名前几个字母 → 按
Tab键自动补全 - 若有多个匹配 → 连按两次
Tab显示所有候选
✅ 示例:
bash
cd /et<Tab> # 自动补全为 /etc/
ls /usr/bi<Tab> # 若唯一则补全,否则列出候选如 bin/、bing/
⚠️ 注意:文件名含空格时需用引号或反斜杠转义:
bash
cd My\ Documents # 或 cd "My Documents"
七、强制中断命令执行
7.1 Ctrl + C
- 终止当前正在运行的前台进程
✅ 示例:中断 ping 命令
bash
ping www.baidu.com
# 按 Ctrl+C 终止
7.2 Ctrl + Z + bg/fg(挂起与恢复)
bash
ping www.baidu.com
# 按 Ctrl+Z 挂起 → 输出 [1]+ Stopped ping www.baidu.com
bg # 放入后台继续运行
fg # 恢复到前台
jobs # 查看后台作业
八、使用 root 权限
8.1 sudo(推荐)
- 临时以 root 权限执行命令
- 需用户在
/etc/sudoers中授权
✅ 示例:
bash
sudo systemctl restart sshd
# 输入当前用户密码(非root密码)
8.2 su(切换用户)
bash
su - root # 切换到root,需输入root密码
whoami # 查看当前用户
exit # 退出root,返回原用户
🛡️ 安全建议:日常操作避免直接使用 root,用
sudo更安全。
九、Linux命令行帮助信息
9.1 man(manual)
bash
man ls # 查看 ls 命令手册
man -k keyword # 搜索相关命令(如 man -k copy)
9.2 --help
bash
ls --help # 查看简要帮助
grep --help
9.3 info(更详细文档)
bash
info ls
✅ 示例:查看 cp 命令帮助
bash
man cp # 完整手册
cp --help # 快速帮助
十、历史命令记录
10.1 history 命令
bash
history # 显示所有历史命令
history 10 # 显示最近10条
!n # 重新执行第n条命令(如 !23)
!! # 重新执行上一条命令
!string # 执行最近以string开头的命令(如 !ls)
10.2 上下方向键
- ↑:上一条命令
- ↓:下一条命令
10.3 清除历史
bash
history -c # 清空当前会话历史
history -w # 写入 ~/.bash_history(永久保存需此步)
✅ 示例:快速重用历史命令
bash
ls /var/log
history | grep ls # 查找含ls的历史命令
!ls # 重新执行最近的ls命令
十一、Linux命令行高级技巧
11.1 管道(|)
- 将前一个命令的输出 作为后一个命令的输入
✅ 示例:查看运行中的 ssh 进程
bash
ps aux | grep ssh
# ps aux 输出所有进程 → 通过 grep 筛选含 "ssh" 的行
✅ 示例:分页查看大文件
bash
cat /var/log/messages | less
11.2 重定向
| 符号 | 作用 | 示例 |
|---|---|---|
> |
覆盖写入文件 | echo "Hello" > file.txt |
>> |
追加写入文件 | echo "World" >> file.txt |
< |
从文件读取输入 | mail -s "test" user < msg.txt |
2> |
重定向错误输出 | ls /nonexist 2> error.log |
&> |
重定向标准+错误输出 | command &> all.log |
✅ 示例:保存命令输出与错误
bash
ls /etc/passwd /nonexist &> result.log
# 正确输出和错误信息都写入 result.log
11.3 命令排列(逻辑控制)
| 符号 | 含义 | 示例 |
|---|---|---|
; |
顺序执行,无论前一条是否成功 | echo A; echo B |
&& |
前一条成功才执行后一条 | mkdir dir && cd dir |
| ` | ` |
✅ 示例:安全创建并进入目录
bash
mkdir myproject && cd myproject && touch README.md
# 只有 mkdir 成功,才执行 cd;cd 成功才 touch
11.4 命令续行(\)
- 当命令太长,可用
\换行继续输入
✅ 示例:
bash
find /var/log -name "*.log" \
-mtime -7 \
-size +1M \
-exec ls -lh {} \;
# 查找7天内、大于1MB的日志文件并列出详细信息
11.5 命令别名(alias)
- 为常用命令设置简短别名
✅ 临时别名:
bash
alias ll='ls -alF'
ll # 等同于 ls -alF
✅ 永久别名(写入 ~/.bashrc):
bash
echo "alias cls='clear'" >> ~/.bashrc
source ~/.bashrc # 重新加载配置
cls # 清屏
✅ 查看和删除别名:
bash
alias # 查看所有别名
unalias cls # 删除别名 cls
十二、综合案例:命令行基础综合实践
🎯 案例概述
任务目标 :
在 CentOS Stream 9 系统中,完成以下操作:
- 创建项目目录结构
- 生成测试文件并写入内容
- 备份文件并压缩
- 查找特定内容并统计
- 设置别名提高效率
- 记录操作历史
🧩 案例详解(带注释的完整脚本)
bash
#!/bin/bash
# 文件名:project_setup.sh
# 功能:综合演练命令行基础操作
echo "=== 开始项目初始化 ==="
# 1. 创建项目目录结构
mkdir -p ~/myproject/{src,docs,backup,logs} # -p:递归创建,存在不报错
echo "[✓] 项目目录结构创建完成"
# 2. 进入 src 目录,创建测试文件
cd ~/myproject/src
echo "Hello, CentOS Stream 9!" > main.txt
echo "This is a test file." >> main.txt
echo "Linux command line is powerful." >> main.txt
echo "[✓] 测试文件 main.txt 创建并写入完成"
# 3. 复制文件到 backup 并压缩
cp main.txt ../backup/
cd ../backup
gzip main.txt # 压缩为 main.txt.gz
echo "[✓] 文件备份并压缩完成"
# 4. 回到项目根目录,查找包含 "Linux" 的行并统计
cd ~/myproject
grep -n "Linux" src/main.txt # -n 显示行号
echo "包含 'Linux' 的行数:"
grep -c "Linux" src/main.txt # -c 统计匹配行数
# 5. 设置常用别名(仅当前会话)
alias ll='ls -alF'
alias h='history'
echo "[✓] 别名 ll 和 h 已设置"
ll src/ # 测试别名
# 6. 记录本次操作到日志
history | tail -5 > logs/setup_history.log
echo "[✓] 最近5条命令已保存到 logs/setup_history.log"
# 7. 显示最终结构
echo "=== 项目结构预览 ==="
tree ~/myproject 2>/dev/null || echo "请安装 tree: sudo dnf install tree"
echo "=== 项目初始化完成 ==="
💡 使用方法:
bash
chmod +x project_setup.sh # 添加执行权限
./project_setup.sh # 运行脚本
🧪 扩展综合案例:日志分析自动化
bash
#!/bin/bash
# 文件名:log_analyzer.sh
# 功能:分析系统日志,提取错误信息并邮件通知(模拟)
LOG_FILE="/var/log/messages"
OUTPUT_DIR="~/myproject/logs"
REPORT_FILE="$OUTPUT_DIR/error_report_$(date +%Y%m%d).txt"
mkdir -p $OUTPUT_DIR
echo "=== 系统错误日志分析报告 ===" > $REPORT_FILE
echo "生成时间: $(date)" >> $REPORT_FILE
echo "============================" >> $REPORT_FILE
# 提取含 "error" 或 "ERROR" 的行(忽略大小写)
grep -i "error" $LOG_FILE >> $REPORT_FILE
# 统计错误数量
ERROR_COUNT=$(grep -i "error" $LOG_FILE | wc -l)
echo ">>> 总共发现 $ERROR_COUNT 条错误信息" >> $REPORT_FILE
# 如果错误超过10条,标记为严重
if [ $ERROR_COUNT -gt 10 ]; then
echo "【警告】错误数量过多,请立即检查!" >> $REPORT_FILE
fi
# 发送报告(模拟)
echo "报告已生成:$REPORT_FILE"
# mail -s "系统错误报告" admin@example.com < $REPORT_FILE # 实际环境可启用
# 附加:将报告内容同时输出到终端
cat $REPORT_FILE
✅ 学习建议
- 每天练习10个基础命令,熟练使用
Tab、↑↓、history。 - 管道与重定向是脚本编写的核心,务必掌握。
- 别名和函数可大幅提升工作效率,建议个性化配置
~/.bashrc。 - 多写小脚本整合命令,培养自动化思维。
📚 附录:常用快捷键速查
| 快捷键 | 功能 |
|---|---|
Ctrl + A |
移动到行首 |
Ctrl + E |
移动到行尾 |
Ctrl + U |
删除光标前所有内容 |
Ctrl + K |
删除光标后所有内容 |
Ctrl + L |
清屏(同 clear) |
Ctrl + R |
反向搜索历史命令 |
Alt + . |
插入上一条命令的最后一个参数 |
这份文档覆盖了 CentOS Stream 9 命令行基础的全部核心语法 + 实用技巧 + 综合案例,案例代码均含详细注释,可直接复制到终端执行或保存为脚本运行。建议配合虚拟机实操,效果更佳。