Skip to content

Tools Aliases and Functions

Gerrrt edited this page Jun 14, 2026 · 1 revision

Tools, Aliases & Functions

This is the day-to-day usage reference for what Core gives you in the shell: the modern-CLI stack and its aliases, the shell functions, the fzf widgets, and every custom keybinding.

Tip: run core-help (alias cheat) in any shell for this cheat sheet live, and core-doctor to see which tools were detected on the current box. Everything here degrades gracefully — on a bare box (fresh server, rescue shell) each alias falls back to the classic command instead of erroring.

The modern-CLI stack

Core detects each tool in tools.zsh and only wires up its alias if present. The classic command is always the fallback.

Modern tool Replaces Alias(es) Notes
eza ls ls, ll, la, lt, llt, tree icons + git-aware; dirs grouped first
bat cat cat (no-page), catp (paged) resolves batcat on Debian; also MANPAGER
fd find fd resolves fdfind on Debian
ripgrep grep rg (own command, smart-case) grep stays POSIX for scripts
zoxide cd cdz, cdizi learns your dirs; - jumps to previous
dust du du
procs ps ps
btop top/htop top, htop
duf df df (falls back to df -h)
viddy watch watch
yazi file manager fm, y
xh HTTPie / curl http, https curl stays for scripts
glow markdown view md renders markdown in the terminal
doggo dig dns dig stays as-is
gping ping ping
tealdeer quick man helptldr community quick-reference
lazygit git TUI lg
nvim vim vim

Tools that shadow nothing classic get HAVE_* detection but no alias — they're their own commands: jq, yq, gron, sd, hyperfine, shellcheck, shfmt.

Always-on quality-of-life aliases

Alias Expands to Why
diff diff --color=auto
rm rm -i safety net (interactive)
cp cp -i safety net
mv mv -i safety net
mkdir mkdir -p create parents
notes cd "$NOTES_DIR" && nvim . NOTES_DIR defaults to ~/Notes
myip curl … ifconfig.me your public IP
ports ss -tulpn (or netstat) listening sockets

Named directories are also set: ~dots~/.config, ~proj~/Projects.

Shell functions

Defined in functions.zsh (and fzf.zsh). Each takes -h/--help.

Function What it does
mkcd <dir> make a directory (and parents) and cd into it
cdup [n] climb n directories (cdup 3 == cd ../../..); default 1
extract <archive> unpack any archive (tar/zip/7z/rar/…); guards tarbombs + clobbers
mkbak <file> timestamped .bak copy of a file before you edit it
fcd fuzzy-cd into any subdirectory (needs fzf; degrades to find)
fif <text> find text inside files (rg + fzf + preview)
fbr fuzzy git-branch checkout (local + remote)
please re-run the last command with sudo (previews + confirms first)
serve [port] HTTP server in the CWD (default 8000), prints the reachable URLs

Safety-by-default

Several functions are deliberately careful, and the pattern is worth knowing:

  • extract peeks at the archive listing first. A tarbomb (multiple top-level entries) prompts to contain it in a subdir; an existing target prompts before clobbering. Because confirmation goes through _core_confirm (which declines with no TTY), a scripted run never silently overwrites, and a normal single-rooted archive sails straight through.
  • please previews the exact sudo <last command> and confirms before running — a fat-fingered history entry won't run privileged by accident.
  • serve warns that it binds 0.0.0.0 (all interfaces) on purpose, and prints the tunnel/LAN URLs it's actually reachable at.

Discoverability commands

Command What it shows
core-help / cheat scannable cheat sheet of functions, keybindings, and maint verbs
core-doctor which modern-CLI tools were detected here + resolved names (fd/fdfind)
core-version the vendored Core layer's version (which Core this OS repo carries)

core-doctor is the shell counterpart to Neovim's :checkhealth gerrrt — a read-only report that shows, per box, what's live and what degraded to a classic fallback.

Custom keybindings

Bound in bindings.zsh (via the zsh-vi-mode zvm_after_init hook). Vi-mode is on, with beam cursor in insert and block in normal/command mode.

Key Action Needs
Ctrl-F file picker → insert path at cursor fzf
Ctrl-R history search (custom fzf widget) fzf
Ctrl-E Atuin history TUI atuin
Ctrl-G session picker (sesh) sesh
Alt-Z zoxide project jump zoxide
Ctrl-\ toggle autosuggestions
Up/Down history-substring-search up/down
Ctrl-←/ backward-word / forward-word

The fzf widgets respect the resolved $BAT_BIN / eza for previews and fall back to cat / ls on a bare box, so a preview pane never shows a "command not found".

Git aliases

A curated, OMZ-compatible set lives in git.zsh. Highlights (naming matches oh-my-zsh so muscle memory transfers):

Alias Command
g git
gst git status
gss git status --short
ga / gaa git add / git add --all
gc / gcm git commit -v / git commit -m
gc! git commit -v --amend
gco / gcb git checkout / git checkout -b
gsw / gswc git switch / git switch --create
gcom / gswm checkout/switch the trunk (branch-aware)
gd / gds git diff / git diff --staged
glog / glol pretty one-line graph logs
gp / gl git push / git pull
gpu git push -u origin <current-branch>
gpf git push --force-with-lease (safe force)
gpf! git push --force (raw force, explicit)
grbi git rebase -i
gstaa git stash push --include-untracked

Two deliberate safety upgrades over OMZ: gpf is --force-with-lease (refuses to clobber commits you haven't seen), and there are no destructive aliases bound to bare letters that shadow common typos. Branch-aware aliases resolve the trunk via git_main_branch(), so they work whether a repo uses main, master, trunk, etc.

See also

Clone this wiki locally