• Messaggi
  • Agenti gestiti
  • Amministrazione
Search...
⌘K
Primi passi
Introduzione a ClaudeGuida rapida
Sviluppare con Claude
Panoramica delle funzionalitàUtilizzo dell'API MessagesMotivi di interruzione e fallbackRifiuti e fallbackCredito di fallback
Capacità del modello
Pensiero estesoPensiero adattivoSforzoBudget delle attività (beta)Modalità veloce (anteprima di ricerca)Output strutturatiCitazioniStreaming dei messaggiElaborazione batchRisultati di ricercaStreaming dei rifiutiSupporto multilingueEmbedding
Strumenti
PanoramicaCome funziona l'uso degli strumentiTutorial: Creare un agente che usa strumentiDefinire gli strumentiGestire le chiamate agli strumentiUso degli strumenti in paralleloTool Runner (SDK)Uso degli strumenti rigorosoUso degli strumenti con cache dei promptStrumenti serverRisoluzione dei problemiStrumento di ricerca webStrumento di recupero webStrumento di esecuzione del codiceStrumento consulenteStrumento di memoriaStrumento BashStrumento di uso del computerStrumento editor di testo
Infrastruttura degli strumenti
Riferimento degli strumentiGestire il contesto degli strumentiCombinazioni di strumentiRicerca di strumentiChiamata programmatica degli strumentiStreaming granulare degli strumenti
Gestione del contesto
Finestre di contestoCompattazioneModifica del contestoCache dei promptMessaggi di sistema a metà conversazioneCreare una modalità di orchestrazioneDiagnostica della cache (beta)Conteggio dei token
Lavorare con i file
API FilesSupporto PDFImmagini e visione
Skill
PanoramicaGuida rapidaBest practiceSkill per le aziendeSkill nell'API
MCP
Server MCP remotiConnettore MCP
Claude su piattaforme cloud
Amazon BedrockAmazon Bedrock (legacy)Claude Platform su AWSMicrosoft FoundryVertex AI
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
Messaggi/Strumenti

Strumento Bash

Questa funzionalità è idonea per la Zero Data Retention (ZDR). Quando la tua organizzazione dispone di un accordo ZDR, i dati inviati tramite questa funzionalità non vengono conservati dopo che la risposta dell'API è stata restituita.

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 per gli agenti. Su Terminal-Bench 2.0, un benchmark che valuta attività reali da terminale utilizzando la validazione solo tramite shell, Claude mostra notevoli miglioramenti nelle prestazioni quando ha accesso a una sessione bash persistente.

Panoramica

Lo strumento bash fornisce a Claude:

  • Una sessione bash persistente che mantiene lo stato
  • La capacità di eseguire qualsiasi comando shell
  • Accesso alle variabili d'ambiente e alla directory di lavoro
  • Capacità di concatenazione di comandi e scripting

Per il supporto dei modelli, consulta il Riferimento degli strumenti.

Casi d'uso

  • Flussi di lavoro di sviluppo: Esegui comandi di build, test e strumenti di sviluppo
  • Automazione di sistema: Esegui script, gestisci file, automatizza attività
  • Elaborazione dati: Elabora file, esegui script di analisi, gestisci dataset
  • Configurazione dell'ambiente: Installa pacchetti, configura ambienti

Avvio rapido

import anthropic

client = anthropic.Anthropic()

response = client.messages.create(
    model="claude-opus-4-8",
    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. Tu 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 d'ambiente, directory di lavoro)

Parametri

ParametroObbligatorioDescrizione
commandSì*Il comando bash da eseguire
restartNoImposta a true per riavviare la sessione bash

*Obbligatorio a meno che non si utilizzi restart

Esempio: Automazione multi-step

Claude può concatenare comandi per completare attività complesse:

User request:
"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"}

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

    Configura 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

    Gestisci l'esecuzione dei comandi

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

    def execute_command(self, command):
        # Invia il comando a bash
        self.process.stdin.write(command + "\n")
        self.process.stdin.flush()
    
        # Cattura l'output con timeout
        output = self._read_output(timeout=10)
        return output
    
  3. 3

    Elabora le chiamate agli 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)
    
            # Restituisci il risultato a Claude
            tool_result = {
                "type": "tool_result",
                "tool_use_id": content.id,
                "content": result,
            }
  4. 4

    Implementa misure di sicurezza

    Aggiungi validazione e restrizioni. Usa una allowlist (lista di elementi consentiti) anziché una blocklist, poiché le blocklist sono facili da aggirare. Rifiuta gli operatori shell in modo che i comandi concatenati non possano eludere la allowlist:

    import shlex
    
    ALLOWED_COMMANDS = {"ls", "cat", "echo", "pwd", "grep", "find", "wc", "head", "tail"}
    SHELL_OPERATORS = {"&&", "||", "|", ";", "&", ">", "<", ">>"}
    
    
    def validate_command(command):
        # Consenti solo i comandi presenti in una allowlist esplicita
        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"
    
        # Rifiuta gli operatori di shell che concatenerebbero comandi aggiuntivi
        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 lista 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:

Segui le best practice di implementazione

Sicurezza

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

  • Esecuzione in ambienti isolati (Docker/VM)
  • Implementazione di filtri per i comandi e allowlist
  • Impostazione di limiti di risorse (CPU, memoria, disco)
  • Registrazione di tutti i comandi eseguiti

Raccomandazioni chiave

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

Prezzi

Lo strumento bash aggiunge 245 token di input alle tue chiamate API.

Token aggiuntivi vengono consumati da:

  • Output dei comandi (stdout/stderr)
  • Messaggi di errore
  • Contenuti di file di grandi dimensioni

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

Pattern comuni

Flussi di lavoro di sviluppo

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

Checkpointing basato su Git

Git funge da meccanismo di recupero strutturato nei flussi di lavoro degli agenti a lunga esecuzione, non solo come modo per salvare le modifiche:

  • Cattura una baseline: Prima che inizi qualsiasi lavoro dell'agente, esegui il commit dello stato corrente. Questo è il punto di partenza noto e funzionante.
  • Commit per funzionalità: Ogni funzionalità completata riceve il proprio commit. Questi servono come punti di rollback se qualcosa va storto in seguito.
  • Ricostruisci lo stato all'avvio della sessione: Leggi git log insieme a un file di avanzamento 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 valido invece di tentare di eseguire il debug di uno stato corrotto.

Operazioni sui file

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

Attività di sistema

  • Controllo 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 è stateless. La tua applicazione è responsabile del mantenimento della sessione shell tra i turni.
  • Limiti di output: Output di grandi dimensioni potrebbero 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 utilizzando anche lo strumento di esecuzione del codice, Claude ha accesso a due ambienti di esecuzione separati: la tua sessione bash locale e il container sandbox di Anthropic. Lo stato non è condiviso tra di essi. Consulta Utilizzo dell'esecuzione del codice con altri strumenti di esecuzione per indicazioni su come istruire Claude a distinguere tra gli ambienti.

Passaggi successivi

Panoramica sull'uso degli strumenti

Scopri di più sull'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
  • Segui le best practice di implementazione
  • Sicurezza
  • Raccomandazioni chiave
  • Prezzi
  • Pattern comuni
  • Flussi di lavoro di sviluppo
  • Operazioni sui file
  • Attività di sistema
  • Limitazioni
  • Combinazione con altri strumenti
  • Passaggi successivi