# CLI Tools Scripts and tools to set up and manage the terminal environment across systems. **Entry point:** `cli-tools` --- ## Install ```bash git clone && cd cli-tools source init.sh # installs uv if needed, syncs deps, activates venv ``` ```bash cli-tools install bootstrap # install everything (first-time setup) cli-tools install apt-packages # git, curl, ripgrep, fd, btop, tldr, ... cli-tools install uv # uv package manager cli-tools install fzf # fzf + bat cli-tools install zoxide # zoxide (z navigation) cli-tools install eza # modern ls replacement cli-tools install lazygit # terminal UI for git cli-tools install docker # Docker + add user to group cli-tools install claude # Claude Code cli-tools install helpers # symlink bash_helpers.sh + aliases.sh into ~ ``` ## Docker ```bash cli-tools docker build # build python-dev image cli-tools docker build --tag v1.2 --push # build and push with tag ``` ## Credentials ```bash cli-tools credentials encrypt-env # .env → .env.gpg cli-tools credentials decrypt-env # .env.gpg → .env ``` --- ## Installed Tools ### [eza](https://github.com/eza-community/eza) — modern `ls` replacement Fast, colorized file listing with Git integration and icons. | Command | Description | |--------------------|------------------------------------------| | `ls` | list files (aliased to `eza`) | | `ll` | long list with git status (`eza -la --git`) | | `eza --tree` | tree view of directory | | `eza -la --sort=modified` | sort by modification time | --- ### [fzf](https://github.com/junegunn/fzf) — fuzzy finder Interactive fuzzy search for files, history, and more. Integrates with shell key bindings. | Shortcut / Command | Description | |-------------------------|------------------------------------------| | `Ctrl+R` | fuzzy search shell history | | `Ctrl+T` | fuzzy find file and insert path | | `Alt+C` | fuzzy cd into a directory | | `fzf` | pipe any list into interactive selector | | `vim $(fzf)` | open fuzzy-selected file in editor | --- ### [lazygit](https://github.com/jesseduffield/lazygit) — terminal UI for Git Full-featured Git UI in the terminal. Run `lazygit` in any repo. | Key (inside lazygit) | Description | |----------------------|--------------------------------------| | `space` | stage / unstage file | | `c` | commit | | `P` (cap) | push | | `P` | pull | | `?` | help / key bindings | | `q` | quit | --- ### [zoxide](https://github.com/ajeetdsouza/zoxide) — smarter `cd` Tracks your most-visited directories and lets you jump to them with partial names. | Command | Description | |----------------|--------------------------------------------------| | `z foo` | jump to the most frecent dir matching `foo` | | `z foo bar` | match multiple terms | | `zi` | interactive selection with fzf | | `z -` | jump to previous directory | --- ## Shell aliases (`aliases.sh`) | Alias | Expands to | |------------------|-----------------------------------| | `reload` | `source ~/.bashrc` | | `venv` | `source .venv/bin/activate` | | `uvs` | `uv sync --all-extras` | | `cat` | `batcat` (syntax-highlighted cat) | | `bat` | `batcat` | | `ls` | `eza` | | `ll` | `eza -la --git` | | `fd` | `fdfind` | | `clip` | `xclip -selection clipboard` | | `open_ports` | `sudo ss -tulwn \| grep LISTEN` | | `docker_stop_all`| stop all running containers | | `claude-allow` | claude --dangerously-skip-permissions | ## Shell functions (`bash_helpers.sh`) | Function | Usage | |------------------|--------------------------------------------| | `attach ` | exec into a running Docker container | | `python-dev` | start/attach python-dev container (`-p` pull, `-n` fresh) | | `mount_ssh `| mount remote dir via SSHFS | | `canview` | launch CAN bus viewer (uses `$CAN_CHANNEL`) | | `repl` | connect to serial device via picocom (uses `$AMPY_PORT`) | | `find_and_cat ` | find file by name and print contents | | `record_window` | record a window to mp4 via ffmpeg |