Back
56/65
Lesson 56
8 min
Modern CLI Toolkit
Level up with lazygit, atuin, zoxide, fzf, bat, and lsd
Ready to level up?
Mark complete to track your learning progress.
Level up with lazygit, atuin, zoxide, fzf, bat, and lsd
Mark complete to track your learning progress.
Level up your terminal with lazygit, atuin, zoxide, fzf, bat, and lsd — the modern CLI tools that make every command faster and every workflow smoother.
ACFS installs a curated set of modern CLI replacements. These tools are drop-in replacements that feel familiar but do more — better output, smarter defaults, and features you didn't know you were missing.
Git TUI with staging, branching, rebasing
Shell history with Ctrl-R search across machines
Smart cd that learns your habits
Fuzzy finder, better cat, better ls
A full-featured Git TUI for staging, committing, branching, and rebasing — all without leaving the terminal.
1# Launch lazygit in current directory2lazygit34# Key bindings inside lazygit:5# Space — stage/unstage file6# c — commit staged changes7# p — push8# P — pull9# b — checkout branch10# n — new branch11# M — merge12# r — rebase13# ? — full keybinding help1415# Launch for a specific repo16lazygit --path /path/to/repo1718# Custom config location19lazygit --use-config-dir ~/.config/lazygit
git add -p.Shell history search that syncs across machines with a SQLite backend. It replaces Ctrl-R with a fuzzy, context-aware search.
1# Search history (replaces Ctrl-R)2# Press Ctrl-R, then type to fuzzy-search34# Search from command line5atuin search "docker build"67# Show statistics about your command usage8atuin stats910# Filter by directory11atuin search --cwd /path/to/project "cargo"1213# Filter by exit code (find failed commands)14atuin search --exit 11516# Filter by time17atuin search --after "2024-01-01" "deploy"1819# Import existing shell history20atuin import auto
A smart directory jumper that ranks destinations by frequency and recency. After a few days of use, you'll never type a full path again.
1# Jump to a directory by partial name2z project # → /home/ubuntu/projects/my-project3z web # → /data/projects/acfs/apps/web4z api # → /data/projects/my-api56# Interactive selection when ambiguous7zi # Opens fzf picker for all known directories89# Add a directory manually10zoxide add /path/to/important/dir1112# List all known directories with scores13zoxide query --list1415# Remove a stale directory16zoxide remove /path/that/no/longer/exists1718# How it works:19# 1. Every cd is recorded with a frecency score20# 2. Frequent + recent directories rank highest21# 3. "z proj" matches the highest-scored dir containing "proj"
z becomes muscle memory.A universal fuzzy finder that integrates with everything. Pipe any list of strings into it and get instant, interactive filtering.
1# Interactive file finder2fzf34# Find and open a file in your editor5vim $(fzf)67# Preview files while browsing8fzf --preview 'bat --color=always {}'910# Search file contents (ripgrep + fzf)11rg --line-number "" | fzf --delimiter : --preview 'bat --color=always {1} --highlight-line {2}'1213# Git branch picker14git branch | fzf | xargs git checkout1516# Process killer17ps aux | fzf | awk '{print $2}' | xargs kill1819# Environment variable browser20env | fzf2122# Ctrl-T: paste selected file path23# Ctrl-R: search command history (overlaps with atuin)24# Alt-C: cd into selected directory
docker images | fzf, kubectl get pods | fzf, brew list | fzf. If it outputs lines, fzf can filter it.bat is cat with syntax highlighting and line numbers. lsd is ls with colors and icons. Both are drop-in replacements.
1# bat: cat with syntax highlighting and line numbers2bat src/main.rs3bat --diff src/main.rs # Show git changes inline4bat -l json config.yaml # Force language detection5bat --style=plain file.txt # No line numbers or grid67# lsd: ls with colors and icons8lsd # List current directory9lsd -la # Long format with hidden files10lsd --tree # Tree view11lsd --tree --depth 2 # Tree with depth limit1213# ACFS aliases (already configured):14# cat → bat (automatic)15# ls → lsd (automatic)16# ll → lsd -la17# tree → lsd --tree