pet 命令行片段管理器使用教程
还在为记不住复杂命令而烦恼?每次都要翻历史记录找那个很少用但很重要的命令?pet 就是你的救星!这是一款用 Go 语言编写的简单而强大的命令行片段管理器,让你轻松保存、搜索和执行常用命令。
通过本教程,你将学会:
- ✅ 快速安装和配置 pet
- ✅ 创建和管理命令片段
- ✅ 使用参数和默认值
- ✅ 高效搜索和执行片段
- ✅ 同步片段到云端
- ✅ 集成到 shell 环境
什么是 pet?
pet 是一个命令行片段管理器,专门为解决开发者记忆复杂命令的痛点而生。它支持:
- 🎯 轻松注册命令片段
- 🔍 交互式搜索片段
- ⚡ 直接执行保存的命令
- 🏷️ 标签分类管理
- ☁️ 云端同步备份
- 🔧 变量参数支持
快速安装
二进制安装(推荐)
前往发布页面,下载对应系统的二进制文件,解压后放入 PATH 路径即可。
# 示例:下载 Linux 64位版本
wget https://github.com/knqyf263/pet/releases/download/v0.4.0/pet_0.4.0_linux_amd64.tar.gz
tar zxvf pet_0.4.0_linux_amd64.tar.gz
sudo mv pet /usr/local/bin/
包管理器安装
# macOS (Homebrew)
brew install knqyf263/pet/pet
# Ubuntu/Debian
wget https://github.com/knqyf263/pet/releases/download/v0.4.0/pet_0.4.0_linux_amd64.deb
sudo dpkg -i pet_0.4.0_linux_amd64.deb
# Arch Linux
yay -S pet-bin
源码编译
git clone https://github.com/knqyf263/pet.git
cd pet
make install
基础使用指南
创建第一个片段
$ pet new
Command> docker ps -a --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
Description> 显示所有容器状态
Tag> docker monitoring
查看所有片段
$ pet list
Command: docker ps -a --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
Description: 显示所有容器状态
Tag: [docker monitoring]
搜索片段
$ pet search
[显示所有容器状态]: docker ps -a --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" #docker #monitoring
执行片段
$ pet exec
# 选择要执行的片段后直接运行
高级功能详解
参数化片段
pet 支持在片段中使用参数,极大提高了命令的灵活性:
# 创建带参数的片段
$ pet new
Command> curl -s https://api.github.com/repos/<owner>/<repo> | jq '.stargazers_count'
Description> 获取 GitHub 仓库星标数
Tag> github api
# 使用时输入参数值
$ pet exec
# 系统会提示输入 owner 和 repo 参数
默认值支持
# 带默认值的参数
Command> ping <host=8.8.8.8> -c 4
Description> Ping 测试
Tag> network
# 多选默认值
Command> git checkout <branch=|_main_||_develop_||_feature/new-feature_|>
Description> 切换 Git 分支
Tag> git
多行命令
$ pet new --multiline
Command> #!/bin/bash
.......> echo "系统信息:"
.......> echo "主机名: $(hostname)"
.......> echo "内存使用: $(free -h | awk '/Mem:/{print $3\"/\"$2}')"
.......> echo "磁盘使用: $(df -h / | awk 'NR==2{print $5}')"
Description> 显示系统状态信息
Tag> system info bash
配置详解
运行 pet configure 编辑配置文件:
[General]
snippetfile = "~/.config/pet/snippet.toml" # 片段文件路径
editor = "vim" # 默认编辑器
column = 40 # 列表显示列宽
selectcmd = "fzf" # 选择器命令 (fzf 或 peco)
backend = "gist" # 同步后端
sortby = "description" # 排序方式
[Gist]
file_name = "pet-snippet.toml" # Gist 文件名
access_token = "your_token_here" # GitHub 访问令牌
gist_id = "" # Gist ID
public = false # 是否公开
auto_sync = false # 自动同步
多目录配置
[General]
snippetdirs = ["~/.config/pet/work/", "~/.config/pet/personal/"]
Shell 集成
Bash 集成
在 ~/.bashrc 中添加:
# 快速添加上一条命令到 pet
function prev() {
PREV=$(echo `history | tail -n2 | head -n1` | sed 's/[0-9]* //')
sh -c "pet new `printf %q "$PREV"`"
}
# 交互式搜索片段(类似 Ctrl+R)
function pet-select() {
BUFFER=$(pet search --query "$READLINE_LINE")
READLINE_LINE=$BUFFER
READLINE_POINT=${#BUFFER}
}
bind -x '"\C-x\C-r": pet-select'
Zsh 集成
在 ~/.zshrc 中添加:
function prev() {
PREV=$(fc -lrn | head -n 1)
sh -c "pet new `printf %q "$PREV"`"
}
function pet-select() {
BUFFER=$(pet search --query "$LBUFFER")
CURSOR=$#BUFFER
zle redisplay
}
zle -N pet-select
stty -ixon
bindkey '^s' pet-select
Fish 集成
安装 fish-pet 插件。
云端同步
GitHub Gist 同步
- 创建 GitHub 访问令牌(只需要 gist 权限)
- 配置访问令牌:
export PET_GITHUB_ACCESS_TOKEN="your_token_here"
# 或者直接在配置文件中设置
- 同步片段:
$ pet sync
Gist ID: 1cedddf4e06d1170bf0c5612fb31a758
Upload success
GitLab Snippets 同步
[General]
backend = "gitlab"
[GitLab]
file_name = "pet-snippet.toml"
access_token = "your_gitlab_token"
url = "https://gitlab.com"
id = ""
visibility = "private"
auto_sync = false
实用技巧和最佳实践
分类标签系统
# 按功能分类
pet new -t
Command> kubectl get pods -n <namespace>
Description> 查看 Kubernetes Pod
Tag> kubernetes monitoring
# 按项目分类
pet new -t
Command> docker-compose -f docker-compose.prod.yml up -d
Description> 启动生产环境容器
Tag> project-x production
搜索过滤
# 按标签搜索
pet search -t kubernetes
# 组合搜索
pet search --query "docker" -t production
输出片段
除了保存命令,还可以保存命令输出:
[[snippets]]
command = "echo | openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -dates -noout"
description = "显示 SSL 证书过期时间"
output = """
notBefore=Nov 3 00:00:00 2015 GMT
notAfter=Nov 28 12:00:00 2018 GMT"""
故障排除
常见问题
-
片段文件不存在
pet configure # 设置正确的片段文件路径 -
选择器命令未安装
# 安装 fzf git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf ~/.fzf/install -
同步失败
# 检查访问令牌权限 export PET_GITHUB_ACCESS_TOKEN="new_token_here"
性能优化
对于大量片段,建议:
- 使用
fzf作为选择器(性能更好) - 定期清理不再使用的片段
- 使用标签进行有效分类
进阶用法
自定义输出格式
[General]
format = "[$description]: $command $tags"
支持变量:
$description- 片段描述$command- 命令内容$tags- 标签列表$output- 输出内容
自动同步
启用自动同步后,每次编辑都会自动同步到云端:
[Gist]
auto_sync = true
多环境配置
创建不同的配置文件:
# 工作环境
PET_CONFIG=~/.config/pet/work.toml pet new
# 个人环境
PET_CONFIG=~/.config/pet/personal.toml pet list
总结对比
下表总结了 pet 的主要特性:
| 特性 | 描述 | 优势 |
|---|---|---|
| 片段管理 | 保存、搜索、执行命令 | 交互式界面,支持标签 |
| 参数支持 | 使用 <param> 或 <param=default> | 命令模板化,灵活复用 |
| 多行命令 | 支持复杂脚本保存 | 完整保存复杂操作流程 |
| 云端同步 | Gist/GitLab 同步 | 多设备间片段共享 |
| Shell 集成 | 快捷键绑定 | 无缝融入工作流程 |
实践案例
DevOps 工程师的日常
# 保存常用部署命令
pet new -t
Command> kubectl apply -f deployment.yaml && kubectl rollout status deployment/<app>
Description> 部署应用到 Kubernetes
Tag> kubernetes deployment
# 监控命令
pet new -t
Command> watch -n 2 'kubectl top pods | grep -E "(NAME|<app>)"'
Description> 实时监控应用资源使用
Tag> monitoring kubernetes
# 日志查询
pet new --multiline
Command> kubectl logs -f deployment/<app> \
.......> --tail=100 \
.......> --since=10m \
.......> | grep -i error
Description> 跟踪应用错误日志
Tag> logging troubleshooting
开发者的工具箱
# Git 快捷操作
pet new -t
Command> git log --oneline --graph --decorate --all -10
Description> 图形化显示 Git 历史
Tag> git visualization
# 数据库操作
pet new -t
Command> psql -h <host> -U <user> -d <database> -c "<query>"
Description> 执行 PostgreSQL 查询
Tag> database postgresql
# 代码质量检查
pet new --multiline
Command> #!/bin/bash
.......> echo "Running code quality checks..."
.......> flake8 .
.......> black --check .
.......> mypy .
Description> 代码质量自动化检查
Tag> python quality
扩展生态
相关工具集成
社区资源
结语
pet 不仅仅是一个命令片段管理器,更是提高开发效率的利器。通过合理的分类、标签系统和云端同步,你可以构建属于自己的命令知识库,让重复性工作变得简单高效。
开始使用 pet,告别命令记忆烦恼,专注于更有价值的创造性工作!
下一步行动:
- 立即安装 pet
- 保存你的第一个命令片段
- 配置 shell 集成快捷键
- 探索高级功能和云端同步
让你的命令行体验从此不同!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



