L'outil bash permet à Claude d'exécuter des commandes shell dans une session bash persistante, permettant les opérations système, l'exécution de scripts et l'automatisation en ligne de commande.
L'outil bash fournit à Claude :
| Modèle | Version de l'outil |
|---|---|
| Modèles Claude 4 et Sonnet 3.7 (dépréciés) | bash_20250124 |
Les versions d'outils plus anciennes ne sont pas garanties d'être rétro-compatibles avec les modèles plus récents. Utilisez toujours la version de l'outil qui correspond à votre version de modèle.
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."}
]
)L'outil bash maintient une session persistante :
| Paramètre | Requis | Description |
|---|---|---|
command | Oui* | La commande bash à exécuter |
restart | Non | Définir à true pour redémarrer la session bash |
*Requis sauf si vous utilisez restart
Claude peut chaîner des commandes pour accomplir des tâches complexes :
# Demande de l'utilisateur
"Install the requests library and create a simple Python script that fetches a joke from an API, then run it."
# L'outil de Claude utilise :
# 1. Installer le package
{"command": "pip install requests"}
# 2. Créer un 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. Exécuter le script
{"command": "python fetch_joke.py"}La session maintient l'état entre les commandes, donc les fichiers créés à l'étape 2 sont disponibles à l'étape 3.
L'outil bash est implémenté comme un outil sans schéma. Lors de l'utilisation de cet outil, vous n'avez pas besoin de fournir un schéma d'entrée comme avec d'autres outils ; le schéma est intégré au modèle de Claude et ne peut pas être modifié.
Configurer un environnement bash
Créez une session bash persistante avec laquelle Claude peut 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()Gérer l'exécution des commandes
Créez une fonction pour exécuter des commandes et capturer la sortie :
def execute_command(self, command):
# Envoyer la commande à bash
self.process.stdin.write(command + '\n')
self.process.stdin.flush()
# Capturer la sortie avec délai d'attente
output = self._read_output(timeout=10)
return outputTraiter les appels d'outils de Claude
Extrayez et exécutez les commandes des réponses 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)
# Retourner le résultat à Claude
tool_result = {
"type": "tool_result",
"tool_use_id": content.id,
"content": result
}Implémenter des mesures de sécurité
Ajoutez la validation et les restrictions :
def validate_command(command):
# Bloquer les commandes dangereuses
dangerous_patterns = ['rm -rf /', 'format', ':(){:|:&};:']
for pattern in dangerous_patterns:
if pattern in command:
return False, f"Command contains dangerous pattern: {pattern}"
# Ajouter plus de validation selon les besoins
return True, NoneLors de l'implémentation de l'outil bash, gérez divers scénarios d'erreur :
L'outil bash fournit un accès direct au système. Implémentez ces mesures de sécurité essentielles :
ulimit pour définir les contraintes de ressourcessudo, rm -rf, etc.)The bash tool adds 245 input tokens to your API calls.
Additional tokens are consumed by:
Consultez tarification de l'utilisation des outils pour les détails complets de la tarification.
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 les invites de mot de passeL'outil bash est plus puissant lorsqu'il est combiné avec l'éditeur de texte et d'autres outils.
En savoir plus sur l'utilisation des outils avec Claude
Afficher et modifier des fichiers texte avec Claude
Was this page helpful?