89 lines
2.0 KiB
Markdown
89 lines
2.0 KiB
Markdown
---
|
|
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 <container>
|
|
docker exec -it <container> sh
|
|
getent hosts host.docker.internal
|
|
curl -fsS http://host.docker.internal:8000/health
|
|
```
|
|
|
|
## 进程和端口
|
|
|
|
```bash
|
|
ps aux | grep '[p]ython'
|
|
lsof -i :8000
|
|
kill <pid>
|
|
```
|
|
|
|
## 脚本模板
|
|
|
|
```bash
|
|
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
main() {
|
|
if [ "$#" -lt 1 ]; then
|
|
echo "usage: $0 <arg>" >&2
|
|
exit 2
|
|
fi
|
|
echo "arg=$1"
|
|
}
|
|
|
|
main "$@"
|
|
```
|
|
|
|
## 输出报告
|
|
|
|
```yaml
|
|
command_report:
|
|
purpose: "为什么运行"
|
|
command: "命令摘要"
|
|
result: success | failed | skipped
|
|
important_output: "关键输出"
|
|
next_step: "下一步"
|
|
```
|
|
|
|
## 禁止行为
|
|
|
|
- 不要对未确认路径执行递归删除。
|
|
- 不要把不可信文件名直接拼进危险命令。
|
|
- 不要默认 GNU 命令参数在 macOS 上一定可用。
|
|
- 不要留下用户不需要的后台进程。
|
|
- 不要在没确认网络边界时把容器 localhost 当宿主机。
|