Das Bash-Tool ermöglicht es Claude, Shell-Befehle in einer persistenten Bash-Sitzung auszuführen und dabei Systemoperationen, Skriptausführung und Befehlszeilen-Automatisierung zu ermöglichen.

Überblick

Das Bash-Tool bietet Claude:

  • Persistente Bash-Sitzung, die den Zustand beibehält
  • Fähigkeit, jeden Shell-Befehl auszuführen
  • Zugriff auf Umgebungsvariablen und Arbeitsverzeichnis
  • Befehlsverkettung und Skripting-Funktionen

Tool-Versionen

ModellTool-Version
Claude 4 & Sonnet 3.7bash_20250124
Claude Sonnet 3.5bash_20241022

Claude Sonnet 3.5 erfordert den computer-use-2024-10-22 Beta-Header bei der Verwendung des Bash-Tools.

Das Bash-Tool ist allgemein verfügbar in Claude 4 und Sonnet 3.7.

Anwendungsfälle

  • Entwicklungsworkflows: Build-Befehle, Tests und Entwicklungstools ausführen
  • Systemautomatisierung: Skripte ausführen, Dateien verwalten, Aufgaben automatisieren
  • Datenverarbeitung: Dateien verarbeiten, Analyseskripte ausführen, Datensätze verwalten
  • Umgebungseinrichtung: Pakete installieren, Umgebungen konfigurieren

Schnellstart

import anthropic

client = anthropic.Anthropic()

response = client.messages.create(
    model="claude-sonnet-4-20250514",
    max_tokens=1024,
    tools=[
        {
            "type": "bash_20250124",
            "name": "bash"
        }
    ],
    messages=[
        {"role": "user", "content": "Liste alle Python-Dateien im aktuellen Verzeichnis auf."}
    ]
)

Funktionsweise

Das Bash-Tool behält eine persistente Sitzung bei:

  1. Claude bestimmt, welcher Befehl ausgeführt werden soll
  2. Sie führen den Befehl in einer Bash-Shell aus
  3. Geben Sie die Ausgabe (stdout und stderr) an Claude zurück
  4. Der Sitzungszustand bleibt zwischen Befehlen bestehen (Umgebungsvariablen, Arbeitsverzeichnis)

Parameter

ParameterErforderlichBeschreibung
commandJa*Der auszuführende Bash-Befehl
restartNeinAuf true setzen, um die Bash-Sitzung neu zu starten

*Erforderlich, außer bei Verwendung von restart

Beispiel: Mehrstufige Automatisierung

Claude kann Befehle verketten, um komplexe Aufgaben zu erledigen:

# Benutzeranfrage
"Installiere die requests-Bibliothek und erstelle ein einfaches Python-Skript, das einen Witz von einer API abruft, dann führe es aus."

# Claudes Tool-Verwendungen:
# 1. Paket installieren
{"command": "pip install requests"}

# 2. Skript erstellen
{"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. Skript ausführen
{"command": "python fetch_joke.py"}

Die Sitzung behält den Zustand zwischen Befehlen bei, sodass in Schritt 2 erstellte Dateien in Schritt 3 verfügbar sind.


Das Bash-Tool implementieren

Das Bash-Tool wird als schemaloses Tool implementiert. Bei der Verwendung dieses Tools müssen Sie kein Eingabeschema bereitstellen wie bei anderen Tools; das Schema ist in Claudes Modell eingebaut und kann nicht geändert werden.

1

Eine Bash-Umgebung einrichten

Erstellen Sie eine persistente Bash-Sitzung, mit der Claude interagieren kann:

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()
2

Befehlsausführung handhaben

Erstellen Sie eine Funktion zur Ausführung von Befehlen und Erfassung der Ausgabe:

def execute_command(self, command):
    # Befehl an Bash senden
    self.process.stdin.write(command + '\n')
    self.process.stdin.flush()
    
    # Ausgabe mit Timeout erfassen
    output = self._read_output(timeout=10)
    return output
3

Claudes Tool-Aufrufe verarbeiten

Befehle aus Claudes Antworten extrahieren und ausführen:

for content in response.content:
    if content.type == "tool_use" and content.name == "bash":
        if content.input.get("restart"):
            bash_session.restart()
            result = "Bash-Sitzung neu gestartet"
        else:
            command = content.input.get("command")
            result = bash_session.execute_command(command)
        
        # Ergebnis an Claude zurückgeben
        tool_result = {
            "type": "tool_result",
            "tool_use_id": content.id,
            "content": result
        }
4

Sicherheitsmaßnahmen implementieren

Validierung und Beschränkungen hinzufügen:

def validate_command(command):
    # Gefährliche Befehle blockieren
    dangerous_patterns = ['rm -rf /', 'format', ':(){:|:&};:']
    for pattern in dangerous_patterns:
        if pattern in command:
            return False, f"Befehl enthält gefährliches Muster: {pattern}"
    
    # Weitere Validierung nach Bedarf hinzufügen
    return True, None

Fehler behandeln

Bei der Implementierung des Bash-Tools verschiedene Fehlerszenarien behandeln:

Best Practices für die Implementierung befolgen

Sicherheit

Das Bash-Tool bietet direkten Systemzugriff. Implementieren Sie diese wesentlichen Sicherheitsmaßnahmen:

  • Ausführung in isolierten Umgebungen (Docker/VM)
  • Implementierung von Befehlsfilterung und Allowlists
  • Festlegung von Ressourcenlimits (CPU, Speicher, Festplatte)
  • Protokollierung aller ausgeführten Befehle

Wichtige Empfehlungen

  • ulimit verwenden, um Ressourcenbeschränkungen festzulegen
  • Gefährliche Befehle filtern (sudo, rm -rf, etc.)
  • Mit minimalen Benutzerberechtigungen ausführen
  • Alle Befehlsausführungen überwachen und protokollieren

Preise

The bash tool adds 245 input tokens to your API calls.

Additional tokens are consumed by:

  • Command outputs (stdout/stderr)
  • Error messages
  • Large file contents

Siehe Tool-Verwendung Preise für vollständige Preisdetails.

Häufige Muster

Entwicklungsworkflows

  • Tests ausführen: pytest && coverage report
  • Projekte erstellen: npm install && npm run build
  • Git-Operationen: git status && git add . && git commit -m "Nachricht"

Dateioperationen

  • Daten verarbeiten: wc -l *.csv && ls -lh *.csv
  • Dateien durchsuchen: find . -name "*.py" | xargs grep "Muster"
  • Backups erstellen: tar -czf backup.tar.gz ./data

Systemaufgaben

  • Ressourcen prüfen: df -h && free -m
  • Prozessverwaltung: ps aux | grep python
  • Umgebungseinrichtung: export PATH=$PATH:/neuer/pfad && echo $PATH

Einschränkungen

  • Keine interaktiven Befehle: Kann vim, less oder Passwort-Eingabeaufforderungen nicht handhaben
  • Keine GUI-Anwendungen: Nur Befehlszeile
  • Sitzungsbereich: Bleibt innerhalb der Unterhaltung bestehen, geht zwischen API-Aufrufen verloren
  • Ausgabenlimits: Große Ausgaben können gekürzt werden
  • Kein Streaming: Ergebnisse werden nach Abschluss zurückgegeben

Kombination mit anderen Tools

Das Bash-Tool ist am mächtigsten, wenn es mit dem Texteditor und anderen Tools kombiniert wird.

Nächste Schritte