--- name: bash-linux description: 当需要在 Linux/macOS Bash 环境或容器内查文件、搜文本、跑脚本、看日志、处理进程、使用管道、环境变量或编写小型 shell 命令时使用。它是辅助命令行规范,不属于 SQL 业务流水线。 --- # Bash Linux(命令行规范) ## 目标 让 agent 在 Bash/Linux/容器环境下用稳定、可解释、低风险的方式执行命令。先观察,再操作;先缩小范围,再修改。 ## 基本原则 - 查文件优先用 `rg --files`,不可用时用 `find`。 - 搜内容优先用 `rg -n`。 - 读文件用 `sed -n`、`head`、`tail` 控制输出量。 - 脚本使用 `set -euo pipefail`。 - 路径和变量要加引号。 - 删除、移动、改权限前必须确认目标范围。 - 长日志只摘关键部分,不整屏倾倒。 - 容器内的 `127.0.0.1` 指向容器自己,不等于宿主机。 ## 常用命令 ```bash pwd ls -la find . -type f -name '*.py' rg -n "keyword" . sed -n '1,120p' file.txt head -n 40 file.txt tail -n 100 app.log wc -l file.txt ``` ## Docker/容器排查 ```bash docker ps docker logs --tail 100 docker exec -it sh getent hosts host.docker.internal curl -fsS http://host.docker.internal:8000/health ``` ## 进程和端口 ```bash ps aux | grep '[p]ython' lsof -i :8000 kill ``` ## 脚本模板 ```bash #!/usr/bin/env bash set -euo pipefail main() { if [ "$#" -lt 1 ]; then echo "usage: $0 " >&2 exit 2 fi echo "arg=$1" } main "$@" ``` ## 输出报告 ```yaml command_report: purpose: "为什么运行" command: "命令摘要" result: success | failed | skipped important_output: "关键输出" next_step: "下一步" ``` ## 禁止行为 - 不要对未确认路径执行递归删除。 - 不要把不可信文件名直接拼进危险命令。 - 不要默认 GNU 命令参数在 macOS 上一定可用。 - 不要留下用户不需要的后台进程。 - 不要在没确认网络边界时把容器 localhost 当宿主机。