{"id":"5c98829b-35d9-4280-a771-659c3b32b8c7","shortId":"wQHfrg","kind":"skill","title":"Bash Tool","tagline":"【系统级后备工具】仅用于网络诊断、进程管理等基础任务。代码搜索/数据分析等应使用专用 skill。","description":"# Execution Instructions\n\n## 基本流程\n1. **理解需求**:分析用户需要什么系统操作\n2. **构建命令**:选择合适的命令和参数\n3. **执行命令**:调用 `bash` 执行\n4. **分析结果**:解读输出,如需进一步操作则继续\n\n## ⚠️ 何时不应使用 Bash\nBash 是**系统级操作的通用工具**,但以下场景**必须使用专用 skill**:\n\n**禁用场景清单**:\n- ❌ 代码搜索/文件查找 → 使用 `codebase_search` skill\n- ❌ 数据分析/CSV处理 → 使用 `data_analyst` skill\n- ❌ PDF 文件操作 → 使用 `pdf` skill\n- ❌ MCP 服务连接 → 使用 `dynamic-mcp` skill\n- ❌ 项目代码理解/函数查找 → 使用 `codebase_search` skill\n\n## 适用场景\n仅当没有专用 skill 时,bash 才适用于:\n- 网络诊断 (ping, traceroute, netstat)\n- 进程管理 (kill, ps, tasklist)\n- 系统信息查询 (systeminfo, uname, df)\n- 简单文件操作 (cp, mv) - 不涉及搜索或分析\n\n## 可用工具\n\n### bash\n执行系统 Shell 命令，返回标准输出和错误输出。支持无状态执行。\n\n**Windows 多行命令支持**：命令字符串中包含字面换行符（`\\n`）时，会自动写入临时脚本文件再执行，支持 `python -c \"...多行脚本...\"` 写法。\n\n```python\n# 执行 Python 脚本片段\nbash(command='python -c \"import sys; print(sys.version)\"')\n\n# 执行多行 Python 脚本（含换行符，Windows 自动转为临时 .py 文件）\nbash(command='python -c \"import os\\nfor f in os.listdir(\\\".\\\"):\\n    print(f)\"')\n\n# 执行 CMD 命令\nbash(command='cmd /c dir /b /s *.py')\n\n# 执行 PowerShell 命令\nbash(command='powershell -Command \"Get-ChildItem -Recurse -Filter *.log | Select-Object Name, Length\"')\n\n# 执行 PowerShell 多行脚本\nbash(command='powershell -Command \"$files = Get-ChildItem .\\\\logs; $files | ForEach-Object { Write-Output $_.Name }\"')\n\n# 设置超时（默认 60 秒）\nbash(command='python -c \"import time; time.sleep(5); print(done)\"', timeout=10)\n```\n\n### get_system_info\n获取系统基本信息（操作系统、CPU、内存等）。\n\n### list_processes\n列出当前运行的进程。\n\n### get_network_info\n获取网络配置信息。\n\n## 常用命令参考\n\n### Windows\n- `ipconfig /all` - 网络配置\n- `netstat -an` - 网络连接状态\n- `ping -n 4 <host>` - 网络连通性\n- `tracert <host>` - 路由追踪\n- `tasklist` - 进程列表\n- `systeminfo` - 系统信息\n- `dir /s /b <path>` - 文件列表\n\n### Linux/macOS\n- `ifconfig` 或 `ip addr` - 网络配置\n- `netstat -tulpn` - 网络连接\n- `ping -c 4 <host>` - 网络连通性\n- `traceroute <host>` - 路由追踪\n- `ps aux` - 进程列表\n- `uname -a` - 系统信息\n- `find <path> -name <pattern>` - 查找文件\n\n## Windows 后台启动服务（重要）\n\n在 Windows 上启动 Flask/uvicorn 等服务时，**必须使用后台方式**，否则会阻塞对话。\n\n### 方式一：写临时启动脚本 + 执行（推荐，Windows 唯一可靠方式）\n\n> `python -c \"...\"` 内联多行代码在 Windows CMD 下会失败（换行符解析问题）。\n> **必须先用 `file_editor` 写脚本文件，再用 `bash` 执行。**\n\n```python\n# 第一步：创建启动脚本\nfile_editor(command=\"create\", path=\"D:\\\\myproject\\\\start_server.py\", file_text=\"\"\"\nimport subprocess\nimport os\n\nCREATE_NO_WINDOW = 0x08000000\nDETACHED_PROCESS = 0x00000008\n\nproc = subprocess.Popen(\n    ['python', 'app.py'],\n    creationflags=DETACHED_PROCESS | CREATE_NO_WINDOW,\n    stdout=open('flask.log', 'w', encoding='utf-8'),\n    stderr=subprocess.STDOUT,\n    cwd='D:\\\\\\\\myproject'\n)\nprint('PID:', proc.pid)\n\"\"\")\n\n# 第二步：执行脚本（会立即返回 PID，不阻塞）\nbash(command='python D:\\\\myproject\\\\start_server.py', timeout=10)\n```\n\n### 方式二：`START /B`（❌ 不推荐，bash 工具会等待子进程，导致卡住）\n\n> 此方式在 bash 工具中实测会阻塞，**不要使用**。\n\n### 验证服务已启动\n\n```python\nimport time, urllib.request\ntime.sleep(3)  # 等待服务就绪\ntry:\n    r = urllib.request.urlopen('http://localhost:5000/', timeout=3)\n    print('服务正常:', r.status)\nexcept Exception as e:\n    print('服务未就绪:', e)\n    # 查看日志排查原因\n    bash(command='type flask.log')\n```\n\n### 停止后台服务\n\n```python\n# 按 PID kill（首选，已知 PID 时）\nbash(command='taskkill /PID 12345 /F')\n\n# 仅在确认该端口就是你自己拉起的测试服务时，才按端口定点回收\nbash(command='powershell -Command \"Get-NetTCPConnection -LocalPort 5000 | Select-Object -ExpandProperty OwningProcess | ForEach-Object { Stop-Process -Id $_ -Force }\"')\n```\n\n**如果你是为集成测试临时拉起后台服务，优先在 Python 中持有进程句柄并优雅回收：**\n\n```python\nimport os\nimport subprocess\nimport sys\n\nproc = subprocess.Popen(\n    [sys.executable, \"app.py\"],\n    stdout=subprocess.DEVNULL,\n    stderr=subprocess.DEVNULL,\n    env={**os.environ, \"PYTHONIOENCODING\": \"utf-8\", \"PYTHONUTF8\": \"1\"},\n)\n\ntry:\n    # healthcheck / requests assertions\n    ...\nfinally:\n    proc.terminate()\n    try:\n        proc.wait(timeout=3)\n    except subprocess.TimeoutExpired:\n        proc.kill()\n        proc.wait(timeout=3)\n```\n\n> ❌ **禁止**以下所有前台阻塞写法：\n> - `bash(command='python app.py')`\n> - `bash(command='cd D:\\\\xxx && python app.py')`\n> - `bash(command='cmd /c start /b python app.py > app.log 2>&1')` ← start /b 在 bash 工具中同样会阻塞\n>\n> **唯一正确方式：方式一的 `subprocess.Popen + DETACHED_PROCESS`**\n\n> ❌ **同样禁止**以下高危关停方式：\n> - `proc.send_signal(signal.CTRL_C_EVENT)` ← 可能误伤同控制台/同进程组里的其他 Python 服务\n> - `Get-Process python | Stop-Process` / `Stop-Process -Name python` ← 会误杀无关 Python 进程\n> - `taskkill /F /IM python.exe` / `pkill -f python` ← 全局误杀\n> - 用 `stdout=PIPE`、`stderr=PIPE` 拉长跑后台进程但完全不消费输出 ← 容易卡死或留下未关闭 transport\n> - 用 `start /b`、`$!`、`jobs` 这类 shell 技巧管理测试服务生命周期 ← 在 Windows 和多壳环境里很不稳\n\n\n## 安全注意事项\n1. **禁止执行高危命令**（如 `rm -rf`, `mkfs`, `del /f /s /q` 等），工具会自动拦截。\n2. 对于耗时命令，设置合理的超时时间。\n3. 敏感信息（密码、密钥）不要在命令中明文传递。\n4. 需要停后台服务时，**优先持有 PID 或 `Popen` 句柄定点回收**，不要按进程名全杀。\n5. Windows 集成测试里，**不要**使用 `signal.CTRL_C_EVENT` 做 teardown。\n6. 长时间运行的后台服务，输出要么落日志文件，要么走 `subprocess.DEVNULL`；**不要**默认 `PIPE` 后放着不读。\n7. 只有在确认端口归属明确时，才允许按端口 `Stop-Process -Id`；避免误伤宿主机上的编排服务、代理节点或其他开发进程。\n\n## 示例\n\n**用户问题**:\"检查一下到 Google DNS 的网络连通性\"\n\n**执行流程**:\n```\nAction: bash(command=\"ping -n 4 8.8.8.8\", timeout=30)\nObservation:\n正在 Ping 8.8.8.8 具有 32 字节的数据:\n来自 8.8.8.8 的回复: 字节=32 时间=35ms TTL=117\n...\n数据包: 已发送 = 4，已接收 = 4，丢失 = 0 (0% 丢失)\n\nFinal Answer: 网络连通正常，到 8.8.8.8 的平均延迟约 35ms，无丢包。\n```\n\n---\n\n## Windows 实用命令示例\n\n### 进程与端口管理\n\n```python\n# 查看占用某端口的进程\nbash(command='powershell -Command \"Get-NetTCPConnection -LocalPort 5000 | Select-Object LocalPort, State, OwningProcess\"')\n\n# 按端口强制 kill 进程（仅在确认这是你自己拉起的测试服务时使用）\nbash(command='powershell -Command \"Get-NetTCPConnection -LocalPort 5000 | Select-Object -ExpandProperty OwningProcess | ForEach-Object { Stop-Process -Id $_ -Force }\"')\n\n# 查看所有 Python 进程\nbash(command='tasklist /fi \"imagename eq python.exe\"')\n\n# 按 PID kill\nbash(command='taskkill /PID 12345 /F')\n```\n\n### 文件与目录操作\n\n```python\n# 查看目录内容（含大小）\nbash(command='powershell -Command \"Get-ChildItem D:\\\\myproject | Select-Object Name, Length, LastWriteTime\"')\n\n# 递归查找特定文件\nbash(command='cmd /c dir /s /b D:\\\\myproject\\\\*.py')\n\n# 查看文件末尾 N 行（tail 等价）\nbash(command='powershell -Command \"Get-Content D:\\\\myproject\\\\app.log -Tail 20\"')\n\n# 实时监控日志文件（tail -f 等价，超时后停止）\nbash(command='powershell -Command \"Get-Content D:\\\\myproject\\\\flask.log -Wait -Tail 10\"', timeout=10)\n\n# 创建多级目录\nbash(command='cmd /c mkdir D:\\\\myproject\\\\static\\\\css')\n\n# 复制文件\nbash(command='cmd /c copy D:\\\\src\\\\file.py D:\\\\dst\\\\file.py')\n```\n\n### Python 环境\n\n```python\n# 检查已安装的包\nbash(command='pip list')\n\n# 安装依赖\nbash(command='pip install flask requests -q')\n\n# 从 requirements.txt 安装\nbash(command='pip install -r D:\\\\myproject\\\\requirements.txt -q')\n\n# 检查 Python 版本和路径\nbash(command='python --version && where python')\n\n# 运行 Python 脚本（前台，适合短命令）\nbash(command='python D:\\\\myproject\\\\init_db.py', timeout=30)\n```\n\n### 网络诊断\n\n```python\n# 检查端口是否监听\nbash(command='netstat -an | findstr :5000')\n\n# HTTP 请求测试（curl 等价）\nbash(command='powershell -Command \"Invoke-WebRequest -Uri http://localhost:5000/api/test -Method GET | Select-Object StatusCode, Content\"')\n\n# 发送 POST 请求\nbash(command='powershell -Command \"Invoke-WebRequest -Uri http://localhost:5000/api/items -Method POST -Body \\'{\\'\\\"title\\'\\\":\\'\\\"test\\'\\'\\\"}\\'\\' -ContentType application/json | Select-Object StatusCode\"')\n```\n\n### 系统信息\n\n```python\n# 查看磁盘空间\nbash(command='powershell -Command \"Get-PSDrive -PSProvider FileSystem | Select-Object Name, @{N=\\'Used(GB)\\';E={[math]::Round($_.Used/1GB,1)}}, @{N=\\'Free(GB)\\';E={[math]::Round($_.Free/1GB,1)}}\"')\n\n# 查看内存使用\nbash(command='powershell -Command \"Get-Process | Sort-Object WorkingSet -Descending | Select-Object -First 10 Name, @{N=\\'Mem(MB)\\';E={[math]::Round($_.WorkingSet/1MB,1)}}\"')\n\n# 查看环境变量\nbash(command='cmd /c set PATH')\nbash(command='powershell -Command \"$env:PYTHONPATH\"')\n```","tags":["bash","google","adk","agent","valkryhx","agent-development","agent-skills","agent-swarm","agent-team","agentic-ai","dynamic-skills","google-adk"],"capabilities":["skill","source-valkryhx","skill-bash","topic-agent-development","topic-agent-skills","topic-agent-swarm","topic-agent-team","topic-agentic-ai","topic-dynamic-skills","topic-google-adk","topic-vibe-coding"],"categories":["google_adk_agent"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/valkryhx/google_adk_agent/bash","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add valkryhx/google_adk_agent","source_repo":"https://github.com/valkryhx/google_adk_agent","install_from":"skills.sh"}},"qualityScore":"0.453","qualityRationale":"deterministic score 0.45 from registry signals: · indexed on github topic:agent-skills · 6 github stars · SKILL.md body (7,536 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:14:44.967Z","embedding":null,"createdAt":"2026-05-18T13:22:12.949Z","updatedAt":"2026-05-18T19:14:44.967Z","lastSeenAt":"2026-05-18T19:14:44.967Z","tsv":"'-8':335,460 '/all':222 '/b':148,239,359,497,504,557,762 '/c':146,495,759,807,817,992 '/csv':43 '/f':412,540,573,735 '/fi':723 '/im':541 '/pid':410,733 '/q':575 '/s':149,238,574,761 '0':660,661 '0x00000008':318 '0x08000000':315 '1':12,462,502,566,952,960,987 '10':204,356,800,802,978 '117':653 '12345':411,734 '2':15,501,578 '20':782 '3':18,374,382,472,478,581 '30':637,874 '32':643,649 '35ms':651,669 '4':23,229,252,586,634,656,658 '5':200,594 '5000':380,423,684,703,883 '5000/api/items':917 '5000/api/test':897 '6':604 '60':191 '7':613 '8.8.8.8':635,641,646,667 'action':629 'addr':245 'analyst':47 'answer':664 'app.log':500,780 'app.py':322,451,484,491,499 'application/json':924 'assert':466 'aux':257 'bash':1,21,28,29,71,90,111,127,143,154,172,193,293,349,361,365,394,407,415,481,485,492,506,630,676,695,720,730,740,756,771,788,804,814,829,834,844,856,867,878,888,908,932,962,989,995 'bodi':920 'c':104,114,130,196,251,282,518,600 'cd':487 'childitem':160,179,746 'cmd':141,145,285,494,758,806,816,991 'codebas':39,64 'command':112,128,144,155,157,173,175,194,300,350,395,408,416,418,482,486,493,631,677,679,696,698,721,731,741,743,757,772,774,789,791,805,815,830,835,845,857,868,879,889,891,909,911,933,935,963,965,990,996,998 'content':777,794,904 'contenttyp':923 'copi':818 'cp':86 'cpu':210 'creat':301,312,326 'creationflag':323 'css':812 'curl':886 'cwd':338 'd':303,339,352,488,747,763,778,795,809,819,822,849,870 'data':46 'del':572 'descend':973 'detach':316,324,511 'df':84 'dir':147,237,760 'dns':626 'done':202 'dst':823 'dynam':58 'dynamic-mcp':57 'e':389,392,948,956,983 'editor':290,299 'encod':333 'env':456,999 'eq':725 'event':519,601 'except':386,387,473 'execut':9 'expandproperti':427,707 'f':134,139,544,785 'file':176,181,289,298,306 'file.py':821,824 'filesystem':940 'filter':162 'final':467,663 'find':262 'findstr':882 'first':977 'flask':838 'flask.log':331,397,797 'flask/uvicorn':271 'forc':436,716 'foreach':183,430,710 'foreach-object':182,429,709 'free':954 'free/1gb':959 'gb':947,955 'get':159,178,205,215,420,525,681,700,745,776,793,899,937,967 'get-childitem':158,177,744 'get-cont':775,792 'get-nettcpconnect':419,680,699 'get-process':524,966 'get-psdriv':936 'googl':625 'healthcheck':464 'http':884 'id':435,619,715 'ifconfig':242 'imagenam':724 'import':115,131,197,308,310,370,442,444,446 'info':207,217 'init_db.py':872 'instal':837,847 'instruct':10 'invok':893,913 'invoke-webrequest':892,912 'ip':244 'ipconfig':221 'job':558 'kill':78,402,692,729 'lastwritetim':754 'length':168,753 'linux/macos':241 'list':212,832 'localhost':379,896,916 'localport':422,683,688,702 'log':163,180 'math':949,957,984 'mb':982 'mcp':54,59 'mem':981 'method':898,918 'mkdir':808 'mkfs':571 'mv':87 'myproject':304,340,353,748,764,779,796,810,850,871 'n':99,137,228,633,767,945,953,980 'name':167,188,263,534,752,944,979 'netstat':76,224,247,880 'nettcpconnect':421,682,701 'network':216 'nfor':133 'object':166,184,426,431,687,706,711,751,902,927,943,971,976 'observ':638 'open':330 'os':132,311,443 'os.environ':457 'os.listdir':136 'output':187 'owningprocess':428,690,708 'path':302,994 'pdf':49,52 'pid':342,347,401,405,589,728 'ping':74,227,250,632,640 'pip':831,836,846 'pipe':549,551,611 'pkill':543 'popen':591 'post':906,919 'powershel':152,156,170,174,417,678,697,742,773,790,890,910,934,964,997 'print':117,138,201,341,383,390 'proc':319,448 'proc.kill':475 'proc.pid':343 'proc.send':515 'proc.terminate':468 'proc.wait':470,476 'process':213,317,325,434,512,526,530,533,618,714,968 'ps':79,256 'psdrive':938 'psprovid':939 'py':125,150,765 'python':103,107,109,113,120,129,195,281,295,321,351,369,399,439,441,483,490,498,522,527,535,537,545,674,718,737,825,827,854,858,861,863,869,876,930 'python.exe':542,726 'pythonioencod':458 'pythonpath':1000 'pythonutf8':461 'q':840,852 'r':377,848 'r.status':385 'recurs':161 'request':465,839 'requirements.txt':842,851 'rf':570 'rm':569 'round':950,958,985 'search':40,65 'select':165,425,686,705,750,901,926,942,975 'select-object':164,424,685,704,749,900,925,941,974 'set':993 'shell':92,560 'signal':516 'signal.ctrl':517,599 'skill':8,34,41,48,53,60,66,69 'skill-bash' 'sort':970 'sort-object':969 'source-valkryhx' 'src':820 'start':358,496,503,556 'start_server.py':305,354 'state':689 'static':811 'statuscod':903,928 'stderr':336,454,550 'stdout':329,452,548 'stop':433,529,532,617,713 'stop-process':432,528,531,616,712 'subprocess':309,445 'subprocess.devnull':453,455,608 'subprocess.popen':320,449,510 'subprocess.stdout':337 'subprocess.timeoutexpired':474 'sys':116,447 'sys.executable':450 'sys.version':118 'system':206 'systeminfo':82,235 'tail':769,781,784,799 'taskkil':409,539,732 'tasklist':80,233,722 'teardown':603 'test':922 'text':307 'time':198,371 'time.sleep':199,373 'timeout':203,355,381,471,477,636,801,873 'titl':921 'tool':2 'topic-agent-development' 'topic-agent-skills' 'topic-agent-swarm' 'topic-agent-team' 'topic-agentic-ai' 'topic-dynamic-skills' 'topic-google-adk' 'topic-vibe-coding' 'tracerout':75,254 'tracert':231 'transport':554 'tri':376,463,469 'ttl':652 'tulpn':248 'type':396 'unam':83,259 'uri':895,915 'urllib.request':372 'urllib.request.urlopen':378 'use':946 'used/1gb':951 'utf':334,459 'version':859 'w':332 'wait':798 'webrequest':894,914 'window':96,123,220,265,269,279,284,314,328,563,595,671 'workingset':972 'workingset/1mb':986 'write':186 'write-output':185 'xxx':489 '上启动':270 '下会失败':286 '不推荐':360 '不涉及搜索或分析':88 '不要':597,609 '不要使用':367 '不要在命令中明文传递':585 '不要按进程名全杀':593 '不阻塞':348 '丢失':659,662 '中持有进程句柄并优雅回收':440 '仅在确认该端口就是你自己拉起的测试服务时':413 '仅在确认这是你自己拉起的测试服务时使用':694 '仅当没有专用':68 '仅用于网络诊断':4 '从':841 '代理节点或其他开发进程':621 '代码搜索':6,36 '以下所有前台阻塞写法':480 '以下高危关停方式':514 '优先在':438 '优先持有':588 '会立即返回':346 '会自动写入临时脚本文件再执行':101 '会误杀无关':536 '但以下场景':32 '何时不应使用':27 '使用':38,45,51,56,63,598 '做':602 '停止后台服务':398 '全局误杀':546 '具有':642 '内存等':211 '内联多行代码在':283 '再用':292 '写临时启动脚本':276 '写法':106 '写脚本文件':291 '函数查找':62 '分析用户需要什么系统操作':14 '分析结果':24 '列出当前运行的进程':214 '创建启动脚本':297 '创建多级目录':803 '到':666 '前台':865 '发送':905 '句柄定点回收':592 '只有在确认端口归属明确时':614 '可用工具':89 '可能误伤同控制台':520 '同样禁止':513 '同进程组里的其他':521 '后台启动服务':266 '后放着不读':612 '否则会阻塞对话':274 '含大小':739 '含换行符':122 '命令':93,142,153 '命令字符串中包含字面换行符':98 '和多壳环境里很不稳':564 '唯一可靠方式':280 '唯一正确方式':508 '在':268,505,562 '基本流程':11 '处理':44 '复制文件':813 '多行命令支持':97 '多行脚本':105,171 '如':568 '如果你是为集成测试临时拉起后台服务':437 '如需进一步操作则继续':26 '字节':648 '字节的数据':644 '安全注意事项':565 '安装':843 '安装依赖':833 '实时监控日志文件':783 '实用命令示例':672 '容易卡死或留下未关闭':553 '密码':583 '密钥':584 '对于耗时命令':579 '导致卡住':363 '工具中同样会阻塞':507 '工具中实测会阻塞':366 '工具会等待子进程':362 '工具会自动拦截':577 '已发送':655 '已接收':657 '已知':404 '常用命令参考':219 '必须使用专用':33 '必须使用后台方式':273 '必须先用':288 '或':243,590 '才允许按端口':615 '才按端口定点回收':414 '才适用于':72 '执行':22,108,140,151,169,277,294 '执行命令':19 '执行多行':119 '执行流程':628 '执行系统':91 '执行脚本':345 '技巧管理测试服务生命周期':561 '拉长跑后台进程但完全不消费输出':552 '按':400,727 '按端口强制':691 '换行符解析问题':287 '推荐':278 '操作系统':209 '支持':102 '支持无状态执行':95 '敏感信息':582 '数据分析':42 '数据分析等应使用专用':7 '数据包':654 '文件':126 '文件与目录操作':736 '文件列表':240 '文件操作':50 '文件查找':37 '方式一':275 '方式一的':509 '方式二':357 '无丢包':670 '时':70,100,406 '时间':650 '是':30 '服务':523 '服务未就绪':391 '服务正常':384 '服务连接':55 '来自':645 '构建命令':16 '查找文件':264 '查看内存使用':961 '查看占用某端口的进程':675 '查看所有':717 '查看文件末尾':766 '查看日志排查原因':393 '查看环境变量':988 '查看目录内容':738 '查看磁盘空间':931 '检查':853 '检查一下到':624 '检查已安装的包':828 '检查端口是否监听':877 '正在':639 '此方式在':364 '版本和路径':855 '环境':826 '理解需求':13 '用':547,555 '用户问题':623 '的回复':647 '的平均延迟约':668 '的网络连通性':627 '示例':622 '禁止':479 '禁止执行高危命令':567 '禁用场景清单':35 '秒':192 '第一步':296 '第二步':344 '等':576 '等价':770,786,887 '等待服务就绪':375 '等服务时':272 '简单文件操作':85 '系统信息':236,261,929 '系统信息查询':81 '系统级后备工具':3 '系统级操作的通用工具':31 '网络诊断':73,875 '网络连接':249 '网络连接状态':226 '网络连通性':230,253 '网络连通正常':665 '网络配置':223,246 '脚本':121,864 '脚本片段':110 '自动转为临时':124 '获取系统基本信息':208 '获取网络配置信息':218 '行':768 '要么走':607 '解读输出':25 '设置合理的超时时间':580 '设置超时':189 '请求':907 '请求测试':885 '调用':20 '超时后停止':787 '路由追踪':232,255 '输出要么落日志文件':606 '运行':862 '返回标准输出和错误输出':94 '这类':559 '进程':538,693,719 '进程与端口管理':673 '进程列表':234,258 '进程管理':77 '进程管理等基础任务':5 '适合短命令':866 '适用场景':67 '选择合适的命令和参数':17 '递归查找特定文件':755 '避免误伤宿主机上的编排服务':620 '重要':267 '长时间运行的后台服务':605 '集成测试里':596 '需要停后台服务时':587 '项目代码理解':61 '首选':403 '验证服务已启动':368 '默认':190,610","prices":[{"id":"c830b181-97ad-416d-a44d-f04bff275e12","listingId":"5c98829b-35d9-4280-a771-659c3b32b8c7","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"valkryhx","category":"google_adk_agent","install_from":"skills.sh"},"createdAt":"2026-05-18T13:22:12.949Z"}],"sources":[{"listingId":"5c98829b-35d9-4280-a771-659c3b32b8c7","source":"github","sourceId":"valkryhx/google_adk_agent/bash","sourceUrl":"https://github.com/valkryhx/google_adk_agent/tree/main/skills/bash","isPrimary":false,"firstSeenAt":"2026-05-18T13:22:12.949Z","lastSeenAt":"2026-05-18T19:14:44.967Z"}],"details":{"listingId":"5c98829b-35d9-4280-a771-659c3b32b8c7","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"valkryhx","slug":"bash","github":{"repo":"valkryhx/google_adk_agent","stars":6,"topics":["agent-development","agent-skills","agent-swarm","agent-team","agentic-ai","dynamic-skills","google-adk","vibe-coding"],"license":null,"html_url":"https://github.com/valkryhx/google_adk_agent","pushed_at":"2026-04-23T07:34:09Z","description":"a startup but not simple agent demo using  google adk.","skill_md_sha":"22bf60258eda035f102fa309b2a1935faf374280","skill_md_path":"skills/bash/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/valkryhx/google_adk_agent/tree/main/skills/bash"},"layout":"multi","source":"github","category":"google_adk_agent","frontmatter":{"name":"Bash Tool","description":"【系统级后备工具】仅用于网络诊断、进程管理等基础任务。代码搜索/数据分析等应使用专用 skill。"},"skills_sh_url":"https://skills.sh/valkryhx/google_adk_agent/bash"},"updatedAt":"2026-05-18T19:14:44.967Z"}}