CentOS Stream 9入门学习教程,从入门到精通, CentOS Stream 9 命令行基础 —语法知识点与实战详解(4)

CentOS Stream 9 命令行基础 ---语法知识点与实战详解


一、Linux命令行概述

1.1 什么是 Shell?

  • Shell 是用户与操作系统内核之间的"接口程序",接收用户输入的命令并执行。
  • CentOS Stream 9 默认使用 Bash(Bourne Again Shell)
  • 其他常见 Shell:shzshfishcsh

✅ 示例:查看当前使用的 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 系统中,完成以下操作:

  1. 创建项目目录结构
  2. 生成测试文件并写入内容
  3. 备份文件并压缩
  4. 查找特定内容并统计
  5. 设置别名提高效率
  6. 记录操作历史

🧩 案例详解(带注释的完整脚本)

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 命令行基础的全部核心语法 + 实用技巧 + 综合案例,案例代码均含详细注释,可直接复制到终端执行或保存为脚本运行。建议配合虚拟机实操,效果更佳。

相关推荐
盐焗鹌鹑蛋16 分钟前
【Linux】权限
linux
caimouse23 分钟前
MM 学习笔记 10:页面文件与系统加载器
笔记·学习·reactos
一只小菜鸡..28 分钟前
南京大学 操作系统 (JYY) 学习笔记:Hello, OS World! (程序的机器视角)
java·笔记·学习
小此方32 分钟前
Re:Linux系统篇(四十六)信号篇·四:一文串联操作系统底层:时钟中断、内核态切换、系统调用与 Linux 信号处理全解析
linux·驱动开发·信号处理
lazy H1 小时前
从入门到日常开发,一篇文章掌握 Git 核心操作
git·后端·学习·github
无人生还别怕2 小时前
如何制作一个linux标准iso镜像
linux·iso·opencloudos·openanolisos
Yana.nice10 小时前
Linux 只保留 30 天内日志(find命令删除日志文件)
linux·运维·chrome
a11177613 小时前
2FA 验证码生成器(github登录验证 app)
笔记·学习
我的xiaodoujiao13 小时前
API 接口自动化测试详细图文教程学习系列32--Allure测试报告2
python·学习·测试工具·pytest
DFT计算杂谈13 小时前
无 Root 权限在 Tesla K80 零门槛部署 DeepSeek 大模型
linux·服务器·网络·数据库·机器学习