Loading...
    • Costruisci
    • Amministrazione
    • Modelli e prezzi
    • Client SDK
    • Riferimento API
    Search...
    ⌘K
    Log in
    Strumento Bash
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...

    Solutions

    • AI agents
    • Code modernization
    • Coding
    • Customer support
    • Education
    • Financial services
    • Government
    • Life sciences

    Partners

    • Amazon Bedrock
    • Google Cloud's Vertex AI

    Learn

    • Blog
    • Courses
    • Use cases
    • Connectors
    • Customer stories
    • Engineering at Anthropic
    • Events
    • Powered by Claude
    • Service partners
    • Startups program

    Company

    • Anthropic
    • Careers
    • Economic Futures
    • Research
    • News
    • Responsible Scaling Policy
    • Security and compliance
    • Transparency

    Learn

    • Blog
    • Courses
    • Use cases
    • Connectors
    • Customer stories
    • Engineering at Anthropic
    • Events
    • Powered by Claude
    • Service partners
    • Startups program

    Help and security

    • Availability
    • Status
    • Support
    • Discord

    Terms and policies

    • Privacy policy
    • Responsible disclosure policy
    • Terms of service: Commercial
    • Terms of service: Consumer
    • Usage policy
    Costruisci/Strumenti

    Strumento bash

    Abilita Claude a eseguire comandi shell in una sessione bash persistente per operazioni di sistema, esecuzione di script e automazione da riga di comando.

    This feature is eligible for Zero Data Retention (ZDR). When your organization has a ZDR arrangement, data sent through this feature is not stored after the API response is returned.

    Lo strumento bash consente a Claude di eseguire comandi shell in una sessione bash persistente, permettendo operazioni di sistema, esecuzione di script e automazione da riga di comando. L'accesso alla shell è una capacità fondamentale degli agenti. Su Terminal-Bench 2.0, un benchmark che valuta compiti terminali del mondo reale utilizzando la validazione solo shell, Claude mostra forti guadagni di prestazioni con accesso a una sessione bash persistente.

    Panoramica

    Lo strumento bash fornisce a Claude:

    • Sessione bash persistente che mantiene lo stato
    • Capacità di eseguire qualsiasi comando shell
    • Accesso alle variabili di ambiente e alla directory di lavoro
    • Capacità di concatenamento di comandi e scripting

    Per il supporto del modello, vedi il Riferimento degli strumenti.

    Casi d'uso

    • Flussi di lavoro di sviluppo: Eseguire comandi di build, test e strumenti di sviluppo
    • Automazione del sistema: Eseguire script, gestire file, automatizzare attività
    • Elaborazione dei dati: Elaborare file, eseguire script di analisi, gestire dataset
    • Configurazione dell'ambiente: Installare pacchetti, configurare ambienti

    Avvio rapido

    import anthropic
    
    client = anthropic.Anthropic()
    
    response = client.messages.create(
        model="claude-opus-4-7",
        max_tokens=1024,
        tools=[{"type": "bash_20250124", "name": "bash"}],
        messages=[
            {"role": "user", "content": "List all Python files in the current directory."}
        ],
    )
    
    print(response)

    Come funziona

    Lo strumento bash mantiene una sessione persistente:

    1. Claude determina quale comando eseguire
    2. Esegui il comando in una shell bash
    3. Restituisci l'output (stdout e stderr) a Claude
    4. Lo stato della sessione persiste tra i comandi (variabili di ambiente, directory di lavoro)

    Parametri

    ParametroObbligatorioDescrizione
    commandSì*Il comando bash da eseguire
    restartNoImpostare su true per riavviare la sessione bash

    *Obbligatorio a meno che non si utilizzi restart

    Esempio: Automazione multi-step

    Claude può concatenare comandi per completare compiti complessi:

    Richiesta dell'utente:
    "Installa la libreria requests e crea un semplice script Python che
    recupera una barzelletta da un'API, quindi eseguilo."
    
    Lo strumento di Claude utilizza:
    1. Installa il pacchetto
       {"command": "pip install requests"}
    
    2. Crea lo 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. Esegui lo script
       {"command": "python fetch_joke.py"}

    La sessione mantiene lo stato tra i comandi, quindi i file creati nel passaggio 2 sono disponibili nel passaggio 3.

    Implementare lo strumento bash

    Lo strumento bash è implementato come uno strumento senza schema. Quando utilizzi questo strumento, non è necessario fornire uno schema di input come con altri strumenti; lo schema è integrato nel modello di Claude e non può essere modificato.

    1. 1

      Configurare un ambiente bash

      Crea una sessione bash persistente con cui Claude può interagire:

      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. 2

      Gestire l'esecuzione dei comandi

      Crea una funzione per eseguire comandi e acquisire l'output:

      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
      
    3. 3

      Elaborare le chiamate degli strumenti di Claude

      Estrai ed esegui i comandi dalle risposte di 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,
              }
    4. 4

      Implementare misure di sicurezza

      Aggiungi validazione e restrizioni. Usa una lista di autorizzazione piuttosto che una lista di blocco, poiché le liste di blocco sono facili da aggirare. Rifiuta gli operatori shell in modo che i comandi concatenati non possano superare la lista di autorizzazione:

      import shlex
      
      ALLOWED_COMMANDS = {"ls", "cat", "echo", "pwd", "grep", "find", "wc", "head", "tail"}
      SHELL_OPERATORS = {"&&", "||", "|", ";", "&", ">", "<", ">>"}
      
      
      def validate_command(command):
          # Allow only commands from an explicit allowlist
          try:
              tokens = shlex.split(command)
          except ValueError:
              return False, "Could not parse command"
      
          if not tokens:
              return False, "Empty command"
      
          executable = tokens[0]
          if executable not in ALLOWED_COMMANDS:
              return False, f"Command '{executable}' is not in the allowlist"
      
          # Reject shell operators that would chain additional commands
          for token in tokens[1:]:
              if token in SHELL_OPERATORS or token.startswith(("$", "`")):
                  return False, f"Shell operator '{token}' is not allowed"
      
          return True, None

      Questo controllo è una prima linea di difesa. Per un isolamento più forte, esegui i comandi validati con shell=False e passa shlex.split(command) come elenco di argomenti, in modo che la shell non interpreti mai la stringa.

    Gestire gli errori

    Quando implementi lo strumento bash, gestisci vari scenari di errore:

    Seguire le migliori pratiche di implementazione

    Sicurezza

    Lo strumento bash fornisce accesso diretto al sistema. Implementa queste misure di sicurezza essenziali:

    • Esecuzione in ambienti isolati (Docker/VM)
    • Implementazione del filtraggio dei comandi e delle liste di autorizzazione
    • Impostazione dei limiti di risorse (CPU, memoria, disco)
    • Registrazione di tutti i comandi eseguiti

    Raccomandazioni chiave

    • Usa ulimit per impostare vincoli di risorse
    • Filtra i comandi pericolosi (sudo, rm -rf, ecc.)
    • Esegui con permessi utente minimi
    • Monitora e registra tutta l'esecuzione dei comandi

    Prezzi

    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

    Vedi prezzi dell'uso degli strumenti per i dettagli completi sui prezzi.

    Modelli comuni

    Flussi di lavoro di sviluppo

    • Esecuzione di test: pytest && coverage report
    • Costruzione di progetti: npm install && npm run build
    • Operazioni Git: git status && git add . && git commit -m "message"

    Checkpoint basato su Git

    Git serve come meccanismo di recupero strutturato nei flussi di lavoro degli agenti di lunga durata, non solo come modo per salvare le modifiche:

    • Acquisire una baseline: Prima che inizi qualsiasi lavoro dell'agente, esegui il commit dello stato attuale. Questo è il punto di partenza noto e funzionante.
    • Commit per funzionalità: Ogni funzionalità completata ottiene il proprio commit. Questi servono come punti di rollback se qualcosa va storto in seguito.
    • Ricostruire lo stato all'inizio della sessione: Leggi git log insieme a un file di progresso per capire cosa è già stato fatto e cosa viene dopo.
    • Ripristina in caso di errore: Se il lavoro va male, git checkout ripristina l'ultimo commit buono invece di provare a eseguire il debug di uno stato rotto.

    Operazioni su file

    • Elaborazione dei dati: wc -l *.csv && ls -lh *.csv
    • Ricerca nei file: find . -name "*.py" | xargs grep "pattern"
    • Creazione di backup: tar -czf backup.tar.gz ./data

    Compiti di sistema

    • Verifica delle risorse: df -h && free -m
    • Gestione dei processi: ps aux | grep python
    • Configurazione dell'ambiente: export PATH=$PATH:/new/path && echo $PATH

    Limitazioni

    • Nessun comando interattivo: Non può gestire vim, less o prompt di password
    • Nessuna applicazione GUI: Solo riga di comando
    • Ambito della sessione: Lo stato della sessione bash è lato client. L'API è senza stato. La tua applicazione è responsabile del mantenimento della sessione shell tra i turni.
    • Limiti di output: Gli output di grandi dimensioni possono essere troncati
    • Nessuno streaming: I risultati vengono restituiti dopo il completamento

    Combinazione con altri strumenti

    Lo strumento bash è più potente quando combinato con l'editor di testo e altri strumenti.

    Se stai anche utilizzando lo strumento di esecuzione del codice, Claude ha accesso a due ambienti di esecuzione separati: la tua sessione bash locale e il contenitore sandbox di Anthropic. Lo stato non è condiviso tra loro. Vedi Utilizzo dell'esecuzione del codice con altri strumenti di esecuzione per indicazioni su come indicare a Claude di distinguere tra gli ambienti.

    Passaggi successivi

    Panoramica dell'uso degli strumenti

    Scopri l'uso degli strumenti con Claude

    Strumento editor di testo

    Visualizza e modifica file di testo con Claude

    Was this page helpful?

    • Panoramica
    • Casi d'uso
    • Avvio rapido
    • Come funziona
    • Parametri
    • Esempio: Automazione multi-step
    • Implementare lo strumento bash
    • Gestire gli errori
    • Seguire le migliori pratiche di implementazione
    • Sicurezza
    • Raccomandazioni chiave
    • Prezzi
    • Modelli comuni
    • Flussi di lavoro di sviluppo
    • Operazioni su file
    • Compiti di sistema
    • Limitazioni
    • Combinazione con altri strumenti
    • Passaggi successivi