Files

121 lines
4.5 KiB
Markdown

# CLI Tools
Scripts and tools to set up and manage the terminal environment across systems.
**Entry point:** `cli-tools`
---
## Install
```bash
git clone <repo> && cd cli-tools
source init.sh # installs uv if needed, syncs deps, activates venv
```
```bash
cli-tools install --help # show available commands
```
## 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 <name>` | exec into a running Docker container |
| `python-dev` | start/attach python-dev container (`-p` pull, `-n` fresh) |
| `mount_ssh <host>`| 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 <file>` | find file by name and print contents |
| `record_window` | record a window to mp4 via ffmpeg |