A ferramenta bash permite que Claude execute comandos shell em uma sessão bash persistente, permitindo operações de sistema, execução de scripts e automação de linha de comando.
A ferramenta bash fornece a Claude:
| Modelo | Versão da ferramenta |
|---|---|
| Modelos Claude 4 e Sonnet 3.7 (descontinuado) | bash_20250124 |
Versões mais antigas da ferramenta não são garantidas como compatíveis com versões mais recentes de modelos. Sempre use a versão da ferramenta que corresponde à sua versão de modelo.
import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
tools=[
{
"type": "bash_20250124",
"name": "bash"
}
],
messages=[
{"role": "user", "content": "List all Python files in the current directory."}
]
)A ferramenta bash mantém uma sessão persistente:
| Parâmetro | Obrigatório | Descrição |
|---|---|---|
command | Sim* | O comando bash a executar |
restart | Não | Defina como true para reiniciar a sessão bash |
*Obrigatório a menos que esteja usando restart
Claude pode encadear comandos para completar tarefas complexas:
# Solicitação do usuário
"Install the requests library and create a simple Python script that fetches a joke from an API, then run it."
# A ferramenta de Claude usa:
# 1. Instalar pacote
{"command": "pip install requests"}
# 2. Criar 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. Executar script
{"command": "python fetch_joke.py"}A sessão mantém o estado entre comandos, portanto, os arquivos criados na etapa 2 estão disponíveis na etapa 3.
A ferramenta bash é implementada como uma ferramenta sem esquema. Ao usar esta ferramenta, você não precisa fornecer um esquema de entrada como com outras ferramentas; o esquema é incorporado ao modelo de Claude e não pode ser modificado.
Configurar um ambiente bash
Crie uma sessão bash persistente com a qual Claude possa interagir:
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()Lidar com execução de comandos
Crie uma função para executar comandos e capturar a saída:
def execute_command(self, command):
# Enviar comando para bash
self.process.stdin.write(command + '\n')
self.process.stdin.flush()
# Capturar saída com timeout
output = self._read_output(timeout=10)
return outputProcessar chamadas de ferramentas de Claude
Extraia e execute comandos das respostas de 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)
# Retornar resultado para Claude
tool_result = {
"type": "tool_result",
"tool_use_id": content.id,
"content": result
}Implementar medidas de segurança
Adicione validação e restrições:
def validate_command(command):
# Bloquear comandos perigosos
dangerous_patterns = ['rm -rf /', 'format', ':(){:|:&};:']
for pattern in dangerous_patterns:
if pattern in command:
return False, f"Command contains dangerous pattern: {pattern}"
# Adicionar mais validação conforme necessário
return True, NoneAo implementar a ferramenta bash, trate vários cenários de erro:
A ferramenta bash fornece acesso direto ao sistema. Implemente estas medidas de segurança essenciais:
ulimit para definir restrições de recursossudo, rm -rf, etc.)The bash tool adds 245 input tokens to your API calls.
Additional tokens are consumed by:
Veja preços de uso de ferramentas para detalhes completos de preços.
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 ou prompts de senhaA ferramenta bash é mais poderosa quando combinada com o editor de texto e outras ferramentas.