这个 skill 的目的是帮助用户学习 bash 命令。每次执行命令后,用简洁清晰的方式解释命令的每个组成部分。
每次执行 bash 命令后,在命令执行结果之后添加解释:
📋 命令解释:`<原始命令>`
目的:<一句话概括这个命令要做什么>
组成部分:
• `部分1` - 含义
• `部分2` - 含义
• `部分3` - 含义
当用户明确要求详细解释时使用:
🔍 详细解释:`<原始命令>`
📌 整体目的
<2-3 句话详细说明命令的目的和效果>
🔧 逐部分分解
| 组件 | 含义 |
|------|------|
| <组件1> | <详细解释> |
| <组件2> | <详细解释> |
💡 实用示例
• <示例1>
• <示例2>
📚 延伸学习
• 相关命令:<命令列表>
• 手册页:man <命令>
解释时按以下分类识别和说明组件:
| 类别 | 常见命令 |
|------|----------|
| 文件操作 | ls, cd, cp, mv, rm, mkdir, touch, cat, find, ln |
| 文本处理 | grep, sed, awk, head, tail, wc, sort, uniq, cut, tr |
| 系统信息 | pwd, whoami, date, uname, df, du, hostname |
| 进程管理 | ps, kill, top, htop, bg, fg, jobs, nohup |
| 权限管理 | chmod, chown, sudo, su |
| 网络相关 | curl, wget, ping, ssh, scp, rsync, netstat |
| 压缩解压 | tar, zip, unzip, gzip, gunzip |
| 类型 | 格式 | 示例 |
|------|------|------|
| 短选项 | -x | -l, -a, -r, -f, -v |
| 长选项 | --xxx | --help, --version, --all |
| 组合短选项 | -xyz | -la (等同于 -l -a) |
| 带值选项 | -x value | -f filename, -o output |
| 符号 | 名称 | 含义 |
|------|------|------|
| \| | 管道 | 将前一命令的输出作为后一命令的输入 |
| > | 重定向(覆盖) | 将输出写入文件(覆盖原有内容) |
| >> | 重定向(追加) | 将输出追加到文件末尾 |
| < | 输入重定向 | 从文件读取输入 |
| << | Here Document | 多行输入 |
| && | 与连接 | 前一命令成功才执行下一个 |
| \|\| | 或连接 | 前一命令失败才执行下一个 |
| ; | 顺序执行 | 无论成败,依次执行各命令 |
| & | 后台执行 | 在后台运行命令 |
| 符号 | 含义 |
|------|------|
| $ | 变量引用前缀,如 $HOME, $PATH |
| $(...) | 命令替换,执行括号内命令并返回结果 |
| ~ | 当前用户的主目录 |
| . | 当前目录 |
| .. | 上级目录 |
| - | 上一个工作目录(用于 cd -) |
| * | 通配符,匹配任意多个字符 |
| ? | 通配符,匹配单个字符 |
| [...] | 字符集,匹配括号内的任意一个字符 |
| {...} | 大括号展开,如 {a,b,c} 或 {1..10} |
| '...' | 单引号,原样保留内容(不解释变量) |
| "..." | 双引号,允许变量展开 |
| \ | 转义符,取消特殊含义 |
| # | 注释开始 |
命令: ls -la
📋 命令解释:`ls -la`
目的:以详细格式列出当前目录的所有文件(包括隐藏文件)
组成部分:
• `ls` - 列出目录内容
• `-l` - 长格式,显示权限、所有者、大小、时间等详细信息
• `-a` - 显示所有文件,包括以 . 开头的隐藏文件
命令: cat log.txt | grep "error" | wc -l
📋 命令解释:`cat log.txt | grep "error" | wc -l`
目的:统计 log.txt 文件中包含 "error" 的行数
组成部分:
• `cat log.txt` - 读取并输出 log.txt 文件的内容
• `|` - 管道,将前一命令的输出传给后一命令
• `grep "error"` - 筛选包含 "error" 的行
• `|` - 管道,继续传递结果
• `wc -l` - 统计行数
💡 数据流向:文件内容 → 筛选错误行 → 计数
命令: mkdir dir && cd dir
📋 命令解释:`mkdir dir && cd dir`
目的:创建目录 dir,成功后进入该目录
组成部分:
• `mkdir dir` - 创建名为 dir 的目录
• `&&` - 与连接符,只有前一命令成功(退出码为0)才执行下一命令
• `cd dir` - 切换到 dir 目录
💡 如果 mkdir 失败(如目录已存在),cd 不会执行
命令: find . -name "*.js" -type f -exec rm {} \;
📋 命令解释:`find . -name "*.js" -type f -exec rm {} \;`
目的:在当前目录及子目录中查找所有 .js 文件并删除它们
组成部分:
• `find` - 文件查找命令
• `.` - 从当前目录开始搜索
• `-name "*.js"` - 按文件名匹配,查找所有 .js 文件
• `-type f` - 只匹配普通文件(不含目录)
• `-exec ... \;` - 对每个匹配的文件执行指定命令
• `rm {}` - 删除文件,{} 代表找到的文件路径
• `\;` - exec 命令的结束标志
⚠️ 注意:此命令会永久删除文件,请谨慎使用
命令: echo "当前目录: $(pwd)"
📋 命令解释:`echo "当前目录: $(pwd)"`
目的:输出当前工作目录的路径
组成部分:
• `echo` - 输出文本
• `"..."` - 双引号,保留内容但允许变量展开
• `$(pwd)` - 命令替换,执行 pwd 命令并获取其输出结果
• `pwd` - 打印当前工作目录
💡 双引号内会展开 $(...) 和 $变量,单引号则不会
命令: ls -la > files.txt 2>&1
📋 命令解释:`ls -la > files.txt 2>&1`
目的:将目录列表(包括错误信息)保存到 files.txt 文件
组成部分:
• `ls -la` - 详细列出当前目录所有文件
• `>` - 输出重定向,将标准输出写入文件(覆盖)
• `files.txt` - 目标文件名
• `2>&1` - 将标准错误(2)重定向到标准输出(1)
💡 文件描述符:0=标准输入, 1=标准输出, 2=标准错误
共 1 个版本