# Bash

영속적인 작업 디렉토리 안에서 셸 명령을 실행하고 stdout/stderr를 반환합니다. git, npm, docker, 빌드 스크립트 실행과 같이 전용 Claude Code 도구로 표현할 수 없는 작업에 예약되어 있습니다.

## 사용 시점

- git 작업 실행 (`git status`, `git diff`, `git commit`, `gh pr create`)
- 패키지 매니저 및 빌드 도구 실행 (`npm install`, `npm run build`, `pytest`, `cargo build`)
- `run_in_background`를 사용하여 백그라운드에서 장시간 실행되는 프로세스 (개발 서버, watcher) 시작
- 내장된 동등한 것이 없는 도메인별 CLI (`docker`, `terraform`, `kubectl`, `gh`) 호출
- 순서가 중요한 경우 `&&`로 의존적인 단계를 함께 연결

## 매개변수

- `command` (string, 필수): 실행할 정확한 셸 명령.
- `description` (string, 필수): 짧고 능동적인 어조의 요약 (간단한 명령의 경우 5-10단어; 파이프되거나 모호한 명령의 경우 더 많은 컨텍스트).
- `timeout` (number, 선택): 밀리초 단위의 타임아웃, 최대 `600000` (10분). 기본값은 `120000` (2분)입니다.
- `run_in_background` (boolean, 선택): `true`인 경우 명령이 분리되어 실행되며 완료 시 알림을 받습니다. `&`를 직접 추가하지 마십시오.

## 예시

### 예시 1: 커밋 전 저장소 상태 검사
같은 메시지에서 두 개의 병렬 `Bash` 호출로 `git status`와 `git diff --stat`을 실행하여 컨텍스트를 빠르게 수집한 다음, 후속 호출에서 커밋을 구성합니다.

### 예시 2: 의존적인 빌드 단계 연결
각 단계가 이전 단계가 성공한 후에만 실행되도록 `npm ci && npm run build && npm test`와 같은 단일 호출을 사용합니다. 실패 후에도 나중의 단계가 의도적으로 실행되기를 원할 때만 `;`를 사용하십시오.

### 예시 3: 장시간 실행되는 개발 서버
`run_in_background: true`로 `npm run dev`를 호출합니다. 종료 시 알림을 받습니다. `sleep` 루프로 폴링하지 마십시오. 맹목적으로 재시도하는 대신 실패를 진단하십시오.

## 참고사항

- 작업 디렉토리는 호출 간에 유지되지만 셸 상태 (내보낸 변수, 셸 함수, 별칭)는 유지되지 않습니다. 절대 경로를 선호하고 사용자가 요청하지 않는 한 `cd`를 피하십시오.
- 파이프된 셸 동등물보다 전용 도구를 선호하십시오: `find`/`ls` 대신 `Glob`, `grep`/`rg` 대신 `Grep`, `cat`/`head`/`tail` 대신 `Read`, `sed`/`awk` 대신 `Edit`, `echo >` 또는 히어독 대신 `Write`, 사용자에게 표시되는 출력의 경우 `echo`/`printf` 대신 일반 어시스턴트 텍스트.
- 공백이 포함된 경로는 큰따옴표로 묶으십시오 (예: `"/Users/me/My Project/file.txt"`).
- 독립 명령의 경우 단일 메시지 내에서 여러 `Bash` 도구 호출을 병렬로 수행하십시오. 한 명령이 다른 명령에 의존하는 경우에만 `&&`로 연결하십시오.
- 30000자 이상의 출력은 잘립니다. 큰 로그를 캡처할 때는 파일로 리다이렉트한 다음 `Read` 도구로 읽으십시오.
- `git rebase -i`나 `git add -i`와 같은 대화형 플래그를 사용하지 마십시오. 이 도구를 통해 입력을 받을 수 없습니다.
- 사용자가 명시적으로 요청하지 않는 한 git 후크를 건너뛰거나 (`--no-verify`, `--no-gpg-sign`) 파괴적인 작업 (`reset --hard`, `push --force`, `clean -f`)을 수행하지 마십시오.
