소개
McFly는 셸 히스토리 검색을 개선한 명령줄 도구로, Andrew Cantino가 GitHub를 통해 공개한 MIT 라이선스 프로젝트입니다. 기본 Ctrl+R 역방향 히스토리 검색을 작업 디렉터리와 최근 실행 맥락을 반영하는 지능형 검색 엔진으로 대체하며, 작은 신경망이 후보 명령을 실시간으로 우선순위 정렬합니다. PowerShell 7+를 포함한 여러 셸에서 동작하므로 같은 셸 안에서 더 의미 있는 히스토리 검색을 원하는 사용자에게 적합합니다.
상세정보
스마트 우선순위 기반 히스토리 검색
Ctrl+R을 누르면 전체 화면 형태의 역방향 히스토리 검색이 나타나며, 작은 신경망이 후보를 실시간으로 정렬합니다. 추천 시 현재 작업 디렉터리, 직전 명령 맥락, 실행 빈도, 최근 실행 시각, 이전 선택 이력, 과거 종료 상태를 함께 반영합니다.
확장된 히스토리 저장
기존 셸 히스토리 파일을 그대로 유지하면서 종료 상태, 타임스탬프, 실행 디렉터리를 SQLite 데이터베이스에 추가로 기록합니다. 따라서 McFly 사용을 중단하더라도 일반 셸 히스토리 검색은 계속 동작합니다.
검색 편의 기능
검색 시 %로 임의 개수의 문자를 매칭할 수 있고, Unicode가 전체적으로 지원됩니다. 특정 항목을 McFly 데이터베이스와 셸 히스토리 파일 양쪽에서 제거하는 간단한 작업도 제공됩니다.
셸 호환성
Zsh, Bash 3 이상, PowerShell 7 이상을 지원하며, 향후 다른 셸로 확장할 수 있도록 설계되어 있습니다. 구현은 Rust로 작성되어 빠르고 안전한 실행을 목표로 합니다.
기록 제외 및 데이터 위치
ls, cd, pwd 같은 잡음 명령과 앞에 공백을 두고 실행한 명령은 기본적으로 기록하지 않으며, 정규식 기반의 MCFLY_IGNORE_PATTERN으로 추가 제외가 가능합니다. SQLite 데이터베이스는 OS 표준 위치(macOS: ~/Library/Application Support/McFly, Linux: $XDG_DATA_DIR/mcfly/history.db, Windows: %LOCALAPPDATA%McFlydatahistory.db)에 저장됩니다.
Windows에서 설치
WinGet으로 설치한 뒤 PowerShell $PROFILE에 init 줄을 추가하고 터미널을 재시작하는 것이 README에 안내된 절차입니다. 예시는 다음과 같습니다.
- 설치:
winget install AndrewCantino.McFly - $PROFILE에 추가:
Invoke-Expression -Command $(mcfly init powershell | Out-String) - 터미널 재시작
- 제거:
winget uninstall AndrewCantino.McFly후 $PROFILE에서 init 줄 제거
소스에서 직접 빌드
Rust 1.40 이상을 설치한 뒤 저장소를 클론해 cargo로 빌드할 수 있습니다. 이후 사용하는 셸의 시작 파일에 해당 셸용 init 줄을 추가하고 터미널을 재시작합니다.
활용 예시
매장 같은 프로젝트에서 반복적으로 사용하는 git 명령을 빠르게 다시 호출할 때, 이전에 실패한 명령보다 성공했던 명령이 우선 노출되도록 신경망이 정렬하므로 노이즈가 줄어듭니다. 또한 mcfly dump를 사용해 특정 기간의 명령 히스토리를 JSON 또는 CSV로 내보내 백업이나 분석에 활용할 수 있습니다.
제한 및 확인사항
McFly는 HISTTIMEFORMAT를 파싱하거나 사용하지 않습니다. WinGet 설치 스크립트는 프로젝트에서 유지·보수하지 않으며 정확성과 안전성을 보증하지 못한다는 점이 README에 명시되어 있습니다. Bash의 경우 Linux 커널 6.2 이후 일부 환경에서 TIOCSTI가 비활성화된 경우가 있어, 두 개의 더미 키바인딩을 사용한 우회 방식으로 동작합니다.
화면으로 보는 주요 기능
Git 명령어 자동완성 목록

터미널 창에서 'git st'를 입력한 후 자동완성 기능이 활성화되어, 'git add -p', 'git push origin head –tags', 'git add -A', 'git ci –amend', 'git push', 'git pull', 'git push origin head -u -f', 'git add README.md', 'git add Cargo.toml' 등의 명령어 목록이 녹색 텍스트로 표시되어 있다. 상단에는 'McFly | ESC – Exit | ← – Run | TAB – Edit | F2 – Delete'라는 키보드 단축키 안내가 포함된 헤더가 있다.
시스템 요구사항
Rust로 작성되었으며, PowerShell 7 이상에서 사용 시 PowerShell 환경에 init 스크립트가 등록되어야 합니다. 셸 시작 파일(~/.bashrc, ~/.zshrc, ~/.config/fish/config.fish, PowerShell $PROFILE)에 해당 init 줄을 추가해야 동작합니다. Windows에서는 WinGet으로 설치하는 방식이 README에 안내되어 있으며, 이 설치 스크립트는 프로젝트에서 유지·보수하지 않는다는 점이 명시되어 있습니다.


