stinkpot - SQLite 기반 Bash 셸 히스토리 검색기
1 hour ago
1
- stinkpot은 Bash 명령 기록을 SQLite에 저장해 세션과 무관하게 관리하고, 검색 TUI로 빠르게 찾을 수 있게 함
- Atuin에서 동기화 서버, AI, dotfiles·스크립트 관리자, KV 저장소를 덜어내고 필요한 기능만 약 400줄의 Go로 구현함
- 기존 Bash 히스토리는 stinkpot import로 가져오며, Ctrl+R을 누르면 역방향 검색 TUI가 열림
- NixOS에서는 home-manager 모듈을 제공하고, 그 외 환경에서는 .bashrc에서 eval "$(stinkpot init)"으로 초기화함
- 데이터베이스는 ~/.local/share/stinkpot에 저장되며, 업그레이드 후 손상되면 삭제한 뒤 히스토리를 다시 가져올 수 있음
Atuin에서 필요한 기능만 분리
- stinkpot은 Atuin을 사용하면서 세션 독립적 히스토리 관리와 검색 TUI만 필요했던 경험에서 출발함
- 동기화 서버, Atuin AI, dotfiles 관리자, 스크립트 관리자, KV 저장소는 포함하지 않음
- 머신마다 설정과 실행 명령이 크게 달라 동기화 기능도 사용하지 않았음
- 프로젝트는 약 400줄의 Go로 작성됐으며, 저장소 언어 비중은 Go 82.5%, Nix 17.5%임
- 이름은 작은 거북 종인 stinkpot에서 따옴
- 역방향 검색 속도를 높이기 위해 SQLite 실행 계획이 정렬용 임시 B-tree 대신 커버링 인덱스(covering index) 를 사용함
설치와 히스토리 검색
go build -o stinkpot .
- NixOS home-manager 사용자는 제공되는 homeManagerModules.default 모듈을 가져올 수 있음
- 다른 환경에서는 .bashrc에 다음 초기화 명령을 추가함
eval "$(stinkpot init)"
- 기존 Bash 히스토리는 다음 명령으로 가져옴
stinkpot import
- 셸에서 Ctrl+R을 누르면 검색 TUI가 열림
- ↑·↓로 이동하고 Tab 또는 Enter로 선택함
- 선택 후 Enter를 다시 누르면 명령을 실행함
- Esc로 취소함
- 히스토리 DB는 ~/.local/share/stinkpot에 저장됨
- 업그레이드 후 DB가 깨지면 파일을 삭제하고 stinkpot import를 다시 실행함
-
Homepage
-
개발자
- stinkpot - SQLite 기반 Bash 셸 히스토리 검색기