Инструмент bash позволяет Claude выполнять команды оболочки в постоянной сессии bash, обеспечивая системные операции, выполнение скриптов и автоматизацию командной строки.
Инструмент bash предоставляет Claude:
| Модель | Версия инструмента |
|---|---|
| Claude 4 models и Sonnet 3.7 (deprecated) | bash_20250124 |
Старые версии инструмента не гарантируют обратную совместимость с новыми моделями. Всегда используйте версию инструмента, которая соответствует вашей версии модели.
import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-4-6",
max_tokens=1024,
tools=[
{
"type": "bash_20250124",
"name": "bash"
}
],
messages=[
{"role": "user", "content": "List all Python files in the current directory."}
]
)Инструмент bash поддерживает постоянную сессию:
| Параметр | Обязательный | Описание |
|---|---|---|
command | Да* | Команда bash для выполнения |
restart | Нет | Установите значение true для перезагрузки сессии bash |
*Обязательно, если не используется restart
Claude может объединять команды для выполнения сложных задач:
# Запрос пользователя
"Install the requests library and create a simple Python script that fetches a joke from an API, then run it."
# Claude's tool uses:
# 1. Install package
{"command": "pip install requests"}
# 2. Create script
{"command": "cat > fetch_joke.py << 'EOF'\nimport requests\nresponse = requests.get('https://official-joke-api.appspot.com/random_joke')\njoke = response.json()\nprint(f\"Setup: {joke['setup']}\")\nprint(f\"Punchline: {joke['punchline']}\")\nEOF"}
# 3. Run script
{"command": "python fetch_joke.py"}Сессия сохраняет состояние между командами, поэтому файлы, созданные на шаге 2, доступны на шаге 3.
Инструмент bash реализован как инструмент без схемы. При использовании этого инструмента вам не нужно предоставлять входную схему, как с другими инструментами; схема встроена в модель Claude и не может быть изменена.
Установка окружения bash
Создайте постоянную сессию bash, с которой Claude может взаимодействовать:
import subprocess
import threading
import queue
class BashSession:
def __init__(self):
self.process = subprocess.Popen(
['/bin/bash'],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
text=True,
bufsize=0
)
self.output_queue = queue.Queue()
self.error_queue = queue.Queue()
self._start_readers()Обработка выполнения команд
Создайте функцию для выполнения команд и захвата вывода:
def execute_command(self, command):
# Send command to bash
self.process.stdin.write(command + '\n')
self.process.stdin.flush()
# Capture output with timeout
output = self._read_output(timeout=10)
return outputОбработка вызовов инструментов Claude
Извлеките и выполните команды из ответов Claude:
for content in response.content:
if content.type == "tool_use" and content.name == "bash":
if content.input.get("restart"):
bash_session.restart()
result = "Bash session restarted"
else:
command = content.input.get("command")
result = bash_session.execute_command(command)
# Return result to Claude
tool_result = {
"type": "tool_result",
"tool_use_id": content.id,
"content": result
}Реализация мер безопасности
Добавьте валидацию и ограничения:
def validate_command(command):
# Block dangerous commands
dangerous_patterns = ['rm -rf /', 'format', ':(){:|:&};:']
for pattern in dangerous_patterns:
if pattern in command:
return False, f"Command contains dangerous pattern: {pattern}"
# Add more validation as needed
return True, NoneПри реализации инструмента bash обрабатывайте различные сценарии ошибок:
Инструмент bash предоставляет прямой доступ к системе. Реализуйте эти важные меры безопасности:
ulimit для установки ограничений ресурсовsudo, rm -rf и т.д.)The bash tool adds 245 input tokens to your API calls.
Additional tokens are consumed by:
Полные сведения о ценах см. в разделе pricing tool use.
pytest && coverage reportnpm install && npm run buildgit status && git add . && git commit -m "message"wc -l *.csv && ls -lh *.csvfind . -name "*.py" | xargs grep "pattern"tar -czf backup.tar.gz ./datadf -h && free -mps aux | grep pythonexport PATH=$PATH:/new/path && echo $PATHvim, less или запросы пароляИнструмент bash наиболее мощен при комбинировании с текстовым редактором и другими инструментами.
Узнайте об использовании инструментов с Claude
Просмотр и редактирование текстовых файлов с Claude
Was this page helpful?