Alat Bash
Alat bash memungkinkan Claude untuk menjalankan perintah shell dalam sesi bash yang persisten, memungkinkan operasi sistem, eksekusi skrip, dan otomasi baris perintah.
Ikhtisar
Alat bash menyediakan Claude dengan:
- Sesi bash persisten yang mempertahankan status
- Kemampuan untuk menjalankan perintah shell apa pun
- Akses ke variabel lingkungan dan direktori kerja
- Kemampuan perantaian perintah dan skrip
Kompatibilitas model
| 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.
Kasus penggunaan
- Alur kerja pengembangan: Jalankan perintah build, tes, dan alat pengembangan
- Otomasi sistem: Jalankan skrip, kelola file, otomatisasi tugas
- Pemrosesan data: Proses file, jalankan skrip analisis, kelola dataset
- Penyiapan lingkungan: Instal paket, konfigurasi lingkungan
Mulai cepat
import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
tools=[
{
"type": "bash_20250124",
"name": "bash"
}
],
messages=[
{"role": "user", "content": "List all Python files in the current directory."}
]
)curl https://api.anthropic.com/v1/messages \
-H "content-type: application/json" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-sonnet-4-5",
"max_tokens": 1024,
"tools": [
{
"type": "bash_20250124",
"name": "bash"
}
],
"messages": [
{
"role": "user",
"content": "List all Python files in the current directory."
}
]
}'Cara kerjanya
Alat bash mempertahankan sesi yang persisten:
- Claude menentukan perintah apa yang akan dijalankan
- Anda menjalankan perintah di shell bash
- Kembalikan output (stdout dan stderr) ke Claude
- Status sesi bertahan di antara perintah (variabel lingkungan, direktori kerja)
Parameter
| Parameter | Diperlukan | Deskripsi |
|---|---|---|
command | Ya* | Perintah bash yang akan dijalankan |
restart | Tidak | Atur ke true untuk memulai ulang sesi bash |
*Diperlukan kecuali menggunakan restart
Contoh: Otomasi multi-langkah
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."
# 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"}Sesi mempertahankan status di antara perintah, jadi file yang dibuat di langkah 2 tersedia di langkah 3.
Implementasikan alat bash
Alat bash diimplementasikan sebagai alat tanpa skema. Saat menggunakan alat ini, Anda tidak perlu menyediakan skema input seperti alat lainnya; skema dibangun ke 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): # 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 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) # Return result to 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): # Block dangerous commands dangerous_patterns = ['rm -rf /', 'format', ':(){:|:&};:'] for pattern in dangerous_patterns: if pattern in command: return False, f"Command contains dangerous pattern: {pattern}" # Add more validation as needed return True, None
Tangani kesalahan
Saat mengimplementasikan alat bash, tangani berbagai skenario kesalahan:
Ikuti praktik terbaik implementasi
Keamanan
Alat bash menyediakan akses sistem langsung. Implementasikan langkah-langkah keamanan penting ini:
- Berjalan di lingkungan terisolasi (Docker/VM)
- Mengimplementasikan pemfilteran perintah dan daftar izin
- Menetapkan batas sumber daya (CPU, memori, disk)
- Mencatat semua perintah yang dijalankan
Rekomendasi utama
- Gunakan
ulimituntuk menetapkan batasan sumber daya - Filter perintah berbahaya (
sudo,rm -rf, dll.) - Jalankan dengan izin pengguna minimal
- Pantau dan catat semua eksekusi perintah
Harga
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
Lihat harga penggunaan alat untuk detail harga lengkap.
Pola umum
Alur kerja pengembangan
- Menjalankan tes:
pytest && coverage report - Membangun proyek:
npm install && npm run build - Operasi Git:
git status && git add . && git commit -m "message"
Operasi file
- Memproses data:
wc -l *.csv && ls -lh *.csv - Mencari file:
find . -name "*.py" | xargs grep "pattern" - Membuat cadangan:
tar -czf backup.tar.gz ./data
Tugas sistem
- Memeriksa sumber daya:
df -h && free -m - Manajemen proses:
ps aux | grep python - Penyiapan lingkungan:
export PATH=$PATH:/new/path && echo $PATH
Keterbatasan
- Tidak ada perintah interaktif: Tidak dapat menangani
vim,less, atau prompt kata sandi - Tidak ada aplikasi GUI: Hanya baris perintah
- Cakupan sesi: Bertahan dalam percakapan, hilang di antara panggilan API
- Batas output: Output besar mungkin dipotong
- Tidak ada streaming: Hasil dikembalikan setelah selesai
Menggabungkan dengan alat lain
Alat bash paling kuat ketika digabungkan dengan editor teks dan alat lainnya.