원문 캡처 · github.com
원문 캡처 · github.com

Stenographer는 리눅스에서 백그라운드 데몬으로 여러 터미널의 명령 기록을 모으고, CLI에서 검색해 다시 실행할 수 있는 도구다. Linux amd64와 arm64를 지원하며, 검색 결과에서 명령을 프롬프트에 넣거나 현재 셸에서 바로 실행할 수 있다.

Stenographer 저장소에서 정적 바이너리 steno와 stenographerd를 내려받아 PATH에 넣은 뒤 steno install을 실행하면 systemd 사용자 서비스와 셸 연동을 설정한다. 설치가 끝나면 안내되는 source 명령을 직접 실행해야 현재 셸에 설정이 적용된다.

sh
arch=amd64 # or arm64
base=https://github.com/Niche-Knack-Apps/stenographer/releases/latest/download
curl -LO $base/steno_linux_$arch -LO $base/stenographerd_linux_$arch -LO $base/SHA256SUMS
sha256sum --ignore-missing -c SHA256SUMS
install -m 0755 steno_linux_$arch ~/.local/bin/steno
install -m 0755 stenographerd_linux_$arch ~/.local/bin/stenographerd
steno install

기존 셸 기록은 steno prime으로 가져올 수 있다. 기본 가져오기 한도는 10,000개이며 --limit으로 높이거나 --dry-run으로 가져오기 전에 확인할 수 있다. ls, clear, cd .. 같은 명령은 가져오기 과정에서 걸러지고 중복 기록은 제거된다.

steno 또는 steno history는 기록 전체를 검색하고, steno here는 현재 디렉터리에서 실행한 명령만 검색한다. 기본 검색 범위는 최근 500개 명령이며, --limit으로 검색 한도를 조정할 수 있다. 0 또는 -1은 보관된 기록 전체를 불러오지만, 기록 보존 기간 설정인 retention_days를 넘어서 저장되지는 않는다. 어느 프롬프트에서든 Ctrl-R을 누르면 검색을 열 수 있다. Enter는 선택한 명령을 프롬프트에 넣고, Alt-Enter는 현재 셸에서 즉시 실행한다.

검색기의 오른쪽 패널에는 명령 전체와 작업 디렉터리, 종료 코드, 실행 시간, Git 브랜치 및 주변 기록이 표시된다. 상대 경로 인수는 명령 실행 당시 작업 디렉터리를 기준으로 절대 경로로 바꾸지만, 이는 파일 존재 여부를 확인하는 공백 구분 토큰 기반 추정 방식이다. 전체 셸 파서는 아니므로 공백이 들어간 따옴표 경로, 구두점에 붙은 경로, 글로브, 명령 치환은 바꾸지 않는다. 슬래시나 확장자가 없는 cargo test, make build 같은 단어도 그대로 둔다.

데몬과 CLI는 각각 stenographerd와 steno로 구성된다. 셸 훅이 명령 실행 전후 이벤트를 파일에 기록하면 데몬이 이를 SQLite에 저장하고, CLI가 유닉스 소켓으로 데몬에 질의한다. 저장소는 Apache License 2.0으로 공개돼 있다.

설치·사용법과 전체 명령 안내 · 라이선스 · NOTICE