Alat bash memungkinkan Claude untuk menjalankan perintah shell dalam sesi bash yang persisten, memungkinkan operasi sistem, eksekusi skrip, dan otomasi baris perintah.
Alat bash menyediakan Claude dengan:
| Model | Versi Alat |
|---|---|
| Model Claude 4 dan Sonnet 3.7 (deprecated) | bash_20250124 |
Versi alat yang lebih lama tidak dijamin kompatibel mundur dengan model yang lebih baru. Selalu gunakan versi alat yang sesuai dengan versi model Anda.
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."}
]
)Alat bash mempertahankan sesi yang persisten:
| Parameter | Diperlukan | Deskripsi |
|---|---|---|
command | Ya* | Perintah bash yang akan dijalankan |
restart | Tidak | Atur ke true untuk memulai ulang sesi bash |
*Diperlukan kecuali menggunakan restart
Claude dapat merantai perintah untuk menyelesaikan tugas kompleks:
# Permintaan pengguna
"Install the requests library and create a simple Python script that fetches a joke from an API, then run it."
# Alat Claude menggunakan:
# 1. Instal paket
{"command": "pip install requests"}
# 2. Buat skrip
{"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. Jalankan skrip
{"command": "python fetch_joke.py"}Sesi mempertahankan status antar perintah, jadi file yang dibuat di langkah 2 tersedia di langkah 3.
Alat bash diimplementasikan sebagai alat tanpa skema. Saat menggunakan alat ini, Anda tidak perlu menyediakan skema input seperti alat lainnya; skema sudah tertanam dalam model Claude dan tidak dapat dimodifikasi.
Siapkan lingkungan bash
Buat sesi bash persisten yang dapat berinteraksi dengan Claude:
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()Tangani eksekusi perintah
Buat fungsi untuk menjalankan perintah dan menangkap output:
def execute_command(self, command):
# Kirim perintah ke bash
self.process.stdin.write(command + '\n')
self.process.stdin.flush()
# Tangkap output dengan timeout
output = self._read_output(timeout=10)
return outputProses panggilan alat Claude
Ekstrak dan jalankan perintah dari respons 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)
# Kembalikan hasil ke Claude
tool_result = {
"type": "tool_result",
"tool_use_id": content.id,
"content": result
}Implementasikan langkah-langkah keamanan
Tambahkan validasi dan pembatasan:
def validate_command(command):
# Blokir perintah berbahaya
dangerous_patterns = ['rm -rf /', 'format', ':(){:|:&};:']
for pattern in dangerous_patterns:
if pattern in command:
return False, f"Command contains dangerous pattern: {pattern}"
# Tambahkan validasi lebih lanjut sesuai kebutuhan
return True, NoneSaat mengimplementasikan alat bash, tangani berbagai skenario kesalahan:
Alat bash menyediakan akses sistem langsung. Implementasikan langkah-langkah keamanan penting ini:
ulimit untuk menetapkan batasan sumber dayasudo, rm -rf, dll.)The bash tool adds 245 input tokens to your API calls.
Additional tokens are consumed by:
Lihat harga penggunaan alat untuk detail harga lengkap.
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, atau prompt kata sandiAlat bash paling kuat ketika digabungkan dengan editor teks dan alat lainnya.
Pelajari tentang penggunaan alat dengan Claude
Lihat dan edit file teks dengan Claude
Was this page helpful?