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

相关推荐
码界奇点1 小时前
Java Web学习 第15篇jQuery从入门到精通的万字深度解析
java·前端·学习·jquery
车载测试工程师2 小时前
CAPL学习-ETH功能函数-通用函数
网络·学习·tcp/ip·capl·canoe
OAoffice2 小时前
智能学习培训考试平台如何驱动未来组织:重塑人才发展格局
人工智能·学习·企业智能学习考试平台·学练考一体化平台
烤鱼骑不快2 小时前
linux 软Raid
linux
hhwyqwqhhwy2 小时前
Linux file->private
linux·运维·服务器
WongKyunban2 小时前
在Linux下制作软件安装包
linux·运维·服务器
linly12192 小时前
ERP学习笔记-频域分析之小波变换fieldtrip
笔记·学习
QiZhang | UESTC2 小时前
学习日记day40
学习
IT 乔峰3 小时前
Centos7中部署DNS服务器
linux