Skip to main content

🧈 ghee

ghee

License Shell Python

Like Indian clarified butter — pure, rich, and makes everything better.

🌍 Read in your language: 🇪🇸 Español · 🇨🇳 中文 · 🇮🇳 हिन्दी · 🇰🇷 한국어 · 🇸🇦 العربية

ghee is a collection of 616+ shell shortcuts for developers, devops engineers, and power users. It layers smoothly on top of your existing shell, making your CLI crispy and fast — just like the real thing.

Covers: Git, Docker, Kubernetes, AWS, GCP, Terraform, Heroku, Vercel, Fly.io, Railway, GitHub CLI, npm/yarn/pnpm, Python/pip/uv/ruff/poetry, Rust, Go, Java/Maven/Gradle, Homebrew, SSH/SCP, Redis, PostgreSQL, MongoDB, Nginx, systemd, tmux, networking, cybersecurity/recon, AI/LLM tools, media (ffmpeg/yt-dlp), JSON/YAML/CSV, macOS power tools, and more.


📑 Table of Contents


✨ Features

  • 🔍 G — Interactive Python TUI to fuzzy-search all 616+ commands with live preview
  • ⚡ G 'docker logs' — Best-guess any shell command, copies match to clipboard
  • ➕ G -a olist 'ollama list' — Add your own custom shortcut, instantly available.
  • 🛡️ Clash Detection — Automatically warns if an alias clashes with a system command or existing Ghee shortcut, asking for confirmation before overwriting.
  • ➖ G -rm olist — Remove a custom shortcut
  • 📋 G ls — List all your custom shortcuts
  • 🔄 G update — Self-update ghee via git pull
  • 📦 Modular — 32 topic-based modules, auto-sourced into your shell
  • 🐍 Python-powered — Beautiful Rich TUI with fuzzy matching and color formatting
  • 🔌 Plug-and-play — ./setup-ghee sets everything up in under 30 seconds

✅ Prerequisites

  • OS: macOS or Linux
  • Shell: bash or zsh
  • Python: python3 (3.8 or newer recommended)
  • Git: Required to clone the repository

🚀 Installation

Quick Setup

git clone https://github.com/juleshenry/ghee.git
cd ghee
chmod +x setup-ghee
./setup-ghee
source ~/.zshrc   # or source ~/.bashrc

Manual Setup

Add this block to your ~/.bashrc or ~/.zshrc:

export PATH="/path/to/ghee/bin:/path/to/ghee/tools:$PATH"
source "/path/to/ghee/ghee-functions.sh"
for _gg_mod in "/path/to/ghee/modules"/*.sh; do
    source "$_gg_mod"
done

What the Installer Does

  • Detects your shell (bash or zsh) and backs up your RC file
  • Creates a Python virtualenv (ghee-venv) with rich for the interactive TUI
  • Exports bin/ and tools/ to your $PATH
  • Sources all 32 modules from modules/*.sh into your shell

Uninstall

./setup-ghee --remove && source ~/.zshrc

🎮 Using the G Command

G                            # Interactive fuzzy finder — search all 616+ commands
G 'docker logs'              # Best-guess, copies best match to clipboard
G -a olist 'ollama list'     # Add a custom shortcut (works instantly)
G -rm olist                  # Remove a custom shortcut
G ls                         # List all custom shortcuts
G -q 'find large files'     # Ask Ollama AI (alias for -o)
G -q 'find large files' --model qwen2.5 # Ask specific Ollama model
G info docker                # Show all aliases for a specific module
G update                     # Self-update ghee via git pull
G --sync <gist_url>          # Sync custom shortcuts from a GitHub Gist
G --help                     # Show help and module list

In interactive mode: arrows to navigate · Enter to select · Tab to copy · Esc to quit.


📦 Project Structure

ghee/
├── setup-ghee              # Installer / uninstaller
├── ghee-functions.sh       # Core init: colors, G() wrapper, registry declaration
├── ghee.py                 # Python TUI (rich-powered fuzzy search CLI)
├── modules/                # 32 bash modules, auto-sourced on shell start
│   ├── git_workflow.sh       # Advanced git functions (gwip, presto, gtag...)
│   ├── git_aliases.sh        # 90+ standard git aliases (gs, gco, glog...)
│   ├── docker.sh             # Docker & Compose
│   ├── kubernetes.sh         # kubectl shortcuts
│   ├── aws_cli.sh            # AWS CLI
│   ├── gcp_gcloud.sh         # GCP gcloud
│   ├── terraform.sh          # Terraform
│   ├── cloud_deploy.sh       # Heroku, Vercel, Fly.io, Railway
│   ├── github_cli.sh         # gh CLI (PRs, issues, releases)
│   ├── npm_yarn_pnpm.sh      # JS package managers
│   ├── python_pip_venv.sh    # Python / pip / venv / uv / ruff / poetry
│   ├── rust_go.sh            # Cargo + Go tools
│   ├── java_jvm.sh           # Java / Maven / Gradle
│   ├── homebrew.sh           # Homebrew (macOS package manager)
│   ├── ssh_scp.sh            # SSH tunnels, keys, SCP
│   ├── redis.sh              # Redis CLI
│   ├── postgresql.sh         # psql shortcuts
│   ├── mongodb.sh            # MongoDB CLI
│   ├── nginx.sh              # Nginx management
│   ├── systemd_services.sh   # systemctl / journalctl
│   ├── networking.sh         # curl, dig, DNS, speed
│   ├── cybersecurity_network_recon.sh  # nmap, tcpdump, ssl, ncat
│   ├── ai_llm.sh             # Ollama, OpenAI API
│   ├── media_tools.sh        # ffmpeg, yt-dlp, imagemagick
│   ├── data_tools.sh         # jq, YAML, CSV processing
│   ├── macos_power_tools.sh  # macOS-specific utilities
│   ├── super_utilities.sh    # cheat, weather, UUID, timer
│   ├── tmux.sh               # tmux session management
│   └── shell_file_utilities.sh  # history, extract, ports, swap...
├── bin/                    # Standalone bash scripts (added to PATH)
└── tools/                  # Python scripts (added to PATH)

📖 Command Reference

Ai Llm

Alias Runs Description
ollrun ollama run MODEL Run a local LLM model via Ollama
ollmls ollama list List locally downloaded Ollama models
ollpull ollama pull MODEL Download an Ollama model
ollamaserv ollama serve Start Ollama API server on port 11434
llmchat curl localhost:11434/api/generate with JSON Chat with local Ollama model via curl
tokcount python3 -c tiktoken count tokens Count tokens in a string (requires tiktoken)
openai_ask curl api.openai.com/v1/chat/completions Send a prompt to OpenAI API via curl

Aws Cli

Alias Runs Description
awsid aws sts get-caller-identity Show current AWS identity
awsls aws s3 ls List S3 buckets
awscp aws s3 cp FILE s3://BUCKET/ Copy file to S3
awssync aws s3 sync DIR s3://BUCKET/ Sync directory to S3
awsec2 aws ec2 describe-instances List EC2 instances
awsecr aws ecr get-login-password | docker login ECR docker login
awslam aws lambda list-functions List Lambda functions
awslog aws logs tail LOG_GROUP --follow Tail CloudWatch logs
awseb aws elasticbeanstalk describe-environments List EB environments
awscf aws cloudformation list-stacks List CloudFormation stacks
awseks aws eks list-clusters List EKS clusters
awsrds aws rds describe-db-instances List RDS instances
awsssm aws ssm start-session --target INSTANCE SSM session to instance
awswho aws iam get-user Show current IAM user
awsregions aws ec2 describe-regions --output table List all AWS regions

Cloud Deploy

Alias Runs Description
vdeploy vercel --prod Deploy to Vercel production
vdev vercel dev Start local Vercel dev server
venvpull vercel env pull .env.local Pull Vercel environment variables to local
hdeploy git push heroku main Deploy to Heroku via git
hlogs heroku logs --tail Tail Heroku app logs
hbash heroku run bash Open bash shell on Heroku dyno
hrestart heroku restart Restart all Heroku dynos
rdeploy railway up Deploy to Railway
rlogs railway logs Show Railway deployment logs
fldeploy fly deploy Deploy to Fly.io
fllogs fly logs Show Fly.io logs
flssh fly ssh console SSH into Fly.io machine
flscale fly scale count N Scale Fly.io instance count

Cybersecurity Network Recon

Alias Runs Description
tn telnet HOST Telnet to a host
tnp telnet HOST PORT Telnet to host:port
nsa netstat -an Netstat all connections
nstcp netstat -tlnp Netstat listening TCP ports
nsudp netstat -ulnp Netstat listening UDP ports
nsproc netstat -tulnp Netstat with process info
nsest netstat -an | grep ESTABLISHED Netstat established connections
nquick nmap -F HOST Nmap quick scan (top 100 ports)
nfull nmap -p- HOST Nmap full TCP port scan
nsvc nmap -sV HOST Nmap service version detection
nos sudo nmap -O HOST Nmap OS detection
nagg sudo nmap -A HOST Nmap aggressive scan (OS+ver+scripts)
nsyn sudo nmap -sS HOST Nmap stealth SYN scan
nudp sudo nmap -sU HOST Nmap UDP scan
nsweep nmap -sn SUBNET Nmap ping sweep (discover hosts)
nvuln nmap --script vuln HOST Nmap vulnerability scan
nports nmap -p PORTS HOST Nmap scan specific ports
nscript nmap -sC HOST Nmap scan with default scripts
nmapxml nmap -oX output.xml HOST Nmap XML output for parsing
ncl nc -lvp PORT Netcat listen on port
ncs nc HOST PORT Netcat connect to host:port
ncscan nc -zv HOST START-END Port scan with netcat
sslcheck openssl s_client + x509 DOMAIN Check SSL certificate info
sslchain openssl s_client -showcerts DOMAIN Show full SSL cert chain
sslciphers nmap ssl-enum-ciphers -p 443 DOMAIN Enumerate SSL ciphers
bannergrab nc -w 3 HOST PORT Banner grab via netcat
myports lsof -i -P -n | grep LISTEN Show open ports on this host
arptable arp -a Show ARP table
routes netstat -rn / ip route show Show routing table
fwrules sudo iptables -L / pfctl -sr Show firewall rules
sniff sudo tcpdump -i any -nn Packet sniffing (tcpdump)
tcapt sudo tcpdump -w capture.pcap Capture packets to file
tcport sudo tcpdump port PORT tcpdump filter by port
tchost sudo tcpdump host HOST tcpdump filter by host
secheaders curl -sI URL | grep security headers Check HTTP security headers
hashpw echo -n PW | openssl dgst -sha512 Hash a password (SHA-512)
genpw tr -dc A-Za-z0-9... < /dev/urandom Generate random password
worldwrite find / -perm -0002 Find world-writable files
findsuid find / -perm -4000 Find SUID binaries
whoson who -a / w Show all logged-in users
b64e echo -n STR | base64 Base64 encode string
b64d echo -n STR | base64 --decode Base64 decode string
jwtdecode jq -R 'split(\".\") | .[0],.[1] | @base64d | fromjson' Decode JWT token
shodanip curl -s https://internetdb.shodan.io/IP Fast Shodan IP lookup
sshkey ssh-keygen -t ed25519 -C EMAIL Generate modern secure SSH key

Data Tools

Alias Runs Description
jqpp cat file.json | jq . Pretty-print JSON
jqkeys jq 'keys' List top-level JSON keys
jqlen jq 'length' Get length of JSON array or object
jqm jq 'map(.FIELD)' Map/extract a field from JSON array
jqsel jq '.[] | select(.key==val)' Filter JSON array by field value
yamlcheck python3 -c yaml.safe_load Validate YAML file syntax
yaml2json python3 yaml to json Convert YAML file to JSON
json2yaml python3 json to yaml Convert JSON file to YAML
csvhead head -1 FILE.csv | tr ',' '\n' Show CSV column headers
csvcol cut -d, -f N FILE.csv Extract column N from CSV
sortjson jq 'sort_by(.KEY)' Sort JSON array by a key

Docker

Alias Runs Description
dps docker ps List running containers
dpsa docker ps -a List all containers
di docker images List images
drm docker rm Remove a container
drmi docker rmi Remove an image
drmf docker rm -f \$(docker ps -aq) Force remove all containers
drmia docker rmi \$(docker images -q) Remove all images
dex docker exec -it CONTAINER bash Exec into container
dl docker logs -f CONTAINER Follow container logs
dstop docker stop \$(docker ps -aq) Stop all containers
dprune docker system prune -af Prune everything (containers, images, networks)
dcom docker compose Docker Compose shortcut
dcu docker compose up -d Compose up (detached)
dcd docker compose down Compose down
dcb docker compose build Compose build
dcl docker compose logs -f Follow compose logs
dcr docker compose restart Restart compose services
dvls docker volume ls List volumes
dnls docker network ls List networks
dbuild docker build -t NAME . Build image from Dockerfile

Gcp Gcloud

Alias Runs Description
gcpid gcloud config get-value project Show current GCP project
gcpset gcloud config set project PROJECT Set GCP project
gcpls gcloud compute instances list List GCE instances
gcpssh gcloud compute ssh INSTANCE SSH into GCE instance
gcpgke gcloud container clusters list List GKE clusters
gcpgkecreds gcloud container clusters get-credentials CLUSTER Get GKE kubeconfig
gcpbq bq ls List BigQuery datasets
gcpgsutil gsutil ls List GCS buckets
gcpcp gsutil cp FILE gs://BUCKET/ Copy file to GCS
gcpsync gsutil -m rsync -r DIR gs://BUCKET/ Sync directory to GCS
gcprun gcloud run services list List Cloud Run services
gcpfn gcloud functions list List Cloud Functions
gcpsql gcloud sql instances list List Cloud SQL instances
gcplog gcloud logging read FILTER --limit=50 Read GCP logs
gcpauth gcloud auth login Authenticate with GCP

Git Aliases

Alias Runs Description
gs git status Show working tree status
gss git status -s Short-format status
ga git add . Stage all changes
gaf git add FILE Stage a specific file
gc git commit -m MSG Commit with message
gca git commit -a -m MSG Commit all tracked files
gcam git commit --amend -m MSG Amend last commit message
gcan git commit --amend --no-edit Amend last commit, keep message
gp git push Push to origin
gpf git push --force Force push
gpfl git push --force-with-lease Force push (safer)
gpu git push -u origin BRANCH Push and set upstream
gl git pull Pull from origin
glr git pull --rebase Pull with rebase
glp git pull --prune Pull and prune dead refs
gb git branch List local branches
gba git branch -a List all branches (local+remote)
gbd git branch -d BRANCH Delete a branch
gbdf git branch -D BRANCH Force delete a branch
gco git checkout BRANCH Checkout a branch
gcob git checkout -b BRANCH Create + checkout new branch
gcop git checkout - Checkout previous branch
gcom git checkout main || git checkout master Checkout main/master
gsw git switch BRANCH Switch to branch (modern)
gswc git switch -c BRANCH Create + switch to new branch
gm git merge BRANCH Merge a branch
gmnf git merge --no-ff BRANCH Merge with no fast-forward
gma git merge --abort Abort a merge
gbm git branch --merged Show merged branches
glog git log --oneline --decorate --graph Pretty commit graph
gloga git log --oneline --decorate --graph --all Pretty graph, all branches
glogd git log --pretty=format:'%h %ad %s' --date=short Log with dates
glogs git log --stat Log with file stats
glogp git log -p Log with patches
glast git log -1 HEAD Show last commit
gblame git blame FILE Show who changed each line
gshow git show Show last commit details
gauthor git log --author NAME Filter log by author
gsearch git log --all --grep TERM Search commit messages
gbv git branch -v Branches with last commit
gbvv git branch -vv Branches with tracking info
grl git reflog Show reflog
gd git diff Show unstaged diff
gds git diff --staged Show staged diff
gdst git diff --stat Diff with stats
gdw git diff --word-diff Word-level diff
gdc git diff --color-words Color word diff
gdfiles git diff --name-only List changed filenames
gdstat git diff --name-status Changed files with status
gdlc git diff HEAD^ HEAD Diff of last commit
glst git ls-files List tracked files
glsu git ls-files --others List untracked files
gcontrib git shortlog -sn Show contributors
gfh git log --follow -p -- FILE Show full file history
gst git stash Stash changes
gstm git stash push -m MSG Stash with message
gstu git stash -u Stash including untracked
gsta git stash -a Stash all (including ignored)
gstl git stash list List stashes
gsts git stash show -p Show stash content
gstap git stash apply Apply last stash
gstpo git stash pop Pop last stash
gstd git stash drop Drop a stash
gstc git stash clear Clear all stashes
gr git remote Show remotes
grv git remote -v Show remotes with URLs
gra git remote add NAME URL Add a remote
grr git remote remove NAME Remove a remote
gf git fetch Fetch from origin
gfa git fetch --all Fetch all remotes
gfp git fetch --prune Fetch with prune
gcl git clone URL Clone a repository
gcld git clone --depth 1 URL Shallow clone
grss git reset --soft HEAD~1 Soft reset last commit
grsm git reset HEAD~1 Mixed reset last commit
grsh git reset --hard HEAD~1 Hard reset last commit
grso git reset --hard origin/BRANCH Reset to origin
gus git reset HEAD Unstage all files
gusf git reset HEAD -- FILE Unstage a specific file
gcn git clean -n Clean dry run
gcf git clean -f Clean untracked files
gcfd git clean -fd Clean untracked files + dirs
gdis git checkout -- FILE Discard changes in file
gcpy git cherry-pick HASH Cherry-pick a commit
gcpc git cherry-pick --continue Continue cherry-pick
gcpa git cherry-pick --abort Abort cherry-pick
grbi git rebase -i HASH Interactive rebase
grbc git rebase --continue Continue rebase
grba git rebase --abort Abort rebase
grbs git rebase --skip Skip rebase step
gt git tag Show tags
gta git tag -a TAG Create annotated tag
gpht git push --tags Push all tags

Git Workflow

Alias Runs Description
gg git add . && git commit -m MSG && git push Add all, commit, push in one shot
gclo git clone https://github.com/USER/REPO Clone a GitHub repo
jclo git clone https://github.com/juleshenry/REPO Clone a juleshenry repo
presto git checkout --orphan && force-push DESTRUCTIVE: wipe all git history
gwip git add . && git commit -m 'wip: TIME' Quick work-in-progress commit (no push)
gunwip git reset --soft HEAD~1 Undo last WIP commit, keep changes staged
gpristine git reset --hard origin/BRANCH && git clean -fd Hard-reset to match remote exactly
gtag git tag -a TAG -m MSG && git push origin TAG Create and push a git tag
ghprc gh pr create --title TITLE --fill Create a GitHub PR via gh CLI
gdiff-fancy git diff --stat + git diff --shortstat Pretty diff summary with stats
gacp git add . && git commit -m MSG && git push Add, commit, push (same as gg)
ginit git init && git add . && git commit -m 'Initial commit' Init repo with first commit
ghcl git clone https://github.com/USER/REPO Clone from GitHub
gbc git checkout -b BRANCH Create and switch to new branch
gbdall git branch -d B && git push origin --delete B Delete branch locally + remotely
gundo git reset --soft HEAD~1 Undo last commit, keep changes staged
gbs git for-each-ref --sort=-committerdate Show branches sorted by last modified
gquick git add . && git commit -m 'Quick update: TIME' && git push Commit+push with auto-timestamp
gchanged git diff --name-only HEAD~N..HEAD Show changed files in last N commits
gsearchtext git log -S TEXT Search for text across git history
gnew git fetch origin && git checkout -b B origin/main Create branch from origin/main
gupdateall git fetch --all && git pull Fetch all remotes and pull
greposize git count-objects -vH Show repo object storage size
gfilesize git ls-tree -r -t -l --full-name HEAD | sort List files by size in repo
glarge git rev-list --objects --all | ... Find N largest blobs in history
gsyncfork git fetch upstream && merge upstream/main Sync fork with upstream/main
gsquash git reset --soft HEAD~N && git commit -m MSG Squash last N commits
gstats git shortlog -sn --all --no-merges Commit count by author
garchive git tag archive/B && delete branch Archive a branch as a tag
galias alias | grep '^g' List all g* aliases
ginfo repo name, branch, remote, last commit Show repo info summary
gbackup tar -czf backup.tar.gz . Tar.gz backup of current repo

Github Cli

Alias Runs Description
ghpr gh pr create Create a GitHub pull request
ghprs gh pr status Show status of PR for current branch
ghprl gh pr list List open pull requests
ghprd gh pr diff Show diff of current PR
ghprm gh pr merge Merge current pull request
ghprco gh pr checkout NUMBER Checkout a pull request by number
ghil gh issue list List open GitHub issues
ghic gh issue create Create a new GitHub issue
ghiv gh issue view NUMBER View a specific issue
ghrl gh release list List GitHub releases
ghrc gh release create Create a new GitHub release
ghrepo gh repo view --web Open current repo in browser
ghrun gh run list List recent GitHub Actions workflow runs
ghrw gh run watch Watch GitHub Actions run live
ghssh gh auth refresh -h github.com -s admin:public_key Add SSH key to GitHub
ghclone gh repo clone OWNER/REPO Clone repo using gh (auto SSH)
ghfork gh repo fork --clone Fork and clone a GitHub repo

Homebrew

Alias Runs Description
brewi brew install PACKAGE Install a Homebrew package
brewic brew install --cask APP Install a Homebrew cask (GUI app)
brewu brew upgrade Upgrade all Homebrew packages
brewup brew upgrade PACKAGE Upgrade a specific package
brewun brew uninstall PACKAGE Uninstall a Homebrew package
brewls brew list List installed Homebrew packages
brewlsc brew list --cask List installed casks
brews brew search TERM Search Homebrew packages
brewinfo brew info PACKAGE Show info about a package
brewout brew outdated List outdated packages
brewdr brew doctor Check Homebrew for issues
brewcl brew cleanup Remove old versions and cache
brewpin brew pin PACKAGE Pin a package to prevent upgrades
brewupin brew unpin PACKAGE Unpin a package
brewsv brew services list List all Homebrew services
brewstart brew services start SERVICE Start a Homebrew service
brewstop brew services stop SERVICE Stop a Homebrew service
brewre brew services restart SERVICE Restart a Homebrew service
brewdeps brew deps --tree PACKAGE Show dependency tree for a package
brewsize brew info PACKAGE | grep -i 'installed' Show installed size of a package
brewup-all brew update && upgrade && cleanup Update, upgrade, and clean up everything

Java Jvm

Alias Runs Description
jver java -version Show Java version
jcc javac FILE.java Compile Java source file
jrun java CLASS Run compiled Java class
mci mvn clean install Maven clean install
mcp mvn clean package Maven clean package
mt mvn test Maven run tests
mcl mvn clean Maven clean
mdeps mvn dependency:tree Maven dependency tree
mspring mvn spring-boot:run Maven Spring Boot run
grb gradle build Gradle build
grcl gradle clean Gradle clean
grt gradle test Gradle run tests
grrun gradle run Gradle run application
grdeps gradle dependencies Gradle dependency tree
grspring gradle bootRun Gradle Spring Boot run

Kubernetes

Alias Runs Description
k kubectl kubectl shortcut
kgp kubectl get pods List pods
kgpa kubectl get pods --all-namespaces List all pods across namespaces
kgs kubectl get svc List services
kgn kubectl get nodes List nodes
kgd kubectl get deployments List deployments
kgi kubectl get ingress List ingresses
kgns kubectl get namespaces List namespaces
kga kubectl get all List all resources
kdp kubectl describe pod POD Describe a pod
kds kubectl describe svc SVC Describe a service
kdd kubectl describe deployment DEP Describe a deployment
kl kubectl logs -f POD Follow pod logs
klp kubectl logs -f POD -p Previous pod logs
kex kubectl exec -it POD -- bash Exec into a pod
kaf kubectl apply -f FILE Apply a manifest
kdf kubectl delete -f FILE Delete from manifest
kctx kubectl config get-contexts Show kube contexts
kuse kubectl config use-context CTX Switch kube context
kns kubectl config set-context --current --namespace=NS Set default namespace
kpf kubectl port-forward POD LOCAL:REMOTE Port-forward to a pod
kscale kubectl scale deployment DEP --replicas=N Scale a deployment
krollout kubectl rollout status deployment DEP Check rollout status
krestart kubectl rollout restart deployment DEP Restart a deployment
ktop kubectl top pods Pod resource usage
ktopn kubectl top nodes Node resource usage

Macos Power Tools

Alias Runs Description
caf caffeinate -d Prevent Mac from sleeping
hidefiles defaults write com.apple.finder AppleShowAllFiles NO; killall Finder Hide hidden files in Finder
showfiles defaults write com.apple.finder AppleShowAllFiles YES; killall Finder Show hidden files in Finder
flushui killall Dock; killall Finder Restart Dock and Finder to fix UI glitches
copyurl osascript -e 'tell app \"Safari\" to get URL of front document' | pbcopy Copy URL of active Safari tab
copycwd pwd | tr -d '\n' | pbcopy Copy current directory path to clipboard
locks /System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend Lock mac screen immediately
emptytrash rm -rf ~/.Trash/* Empty the Trash immediately

Media Tools

Alias Runs Description
ytdl yt-dlp URL Download a YouTube video (best quality)
ytmp3 yt-dlp -x --audio-format mp3 URL Download YouTube video as MP3
ytpl yt-dlp -i URL Download entire YouTube playlist
ffconv ffmpeg -i INPUT OUTPUT Convert video with ffmpeg
ff2mp4 ffmpeg -i INPUT -c:v libx264 output.mp4 Convert any video to H.264 mp4
fftrim ffmpeg -i INPUT -ss START -to END -c copy OUTPUT Trim video by time range
ffcomp ffmpeg -i INPUT -crf 28 -preset fast OUTPUT.mp4 Compress video (CRF 28)
ffvid2gif ffmpeg -i INPUT -vf scale=480:-1 OUTPUT.gif Convert video to GIF
ffaudio ffmpeg -i INPUT -vn -q:a 0 OUTPUT.mp3 Extract audio from video
imgres convert INPUT -resize WxH OUTPUT Resize image with ImageMagick
imgstrip convert INPUT -strip OUTPUT Strip EXIF metadata from image
imgnorm mogrify -auto-orient -strip FOLDER/*.jpg Normalize images in folder

Meta

Alias Runs Description
G G [cmd] or G -a <alias> <cmd> Ghee hot-doc shell
gheelp print reference table Full command reference
gupdate git pull && ./setup-ghee Auto-update ghee to latest version

Misc Cli Tools

Alias Runs Description
duh du -sh * | sort -rh Disk usage summary (sorted)
dfh df -h Disk free (human-readable)
fmem free -h Free memory
cpuinfo lscpu CPU info
w2 watch -n 2 CMD Watch a command every 2 seconds
lsofp lsof -c PROCESS List open files by process
killname pkill -f NAME Kill process by name
hist history | tail -50 Last 50 history entries
cl clear Clear terminal
reload exec \$SHELL -l Reload shell config
erc \${EDITOR:-vi} ~/.<shell>rc Edit shell RC file
path echo \$PATH | tr : newline Show PATH (one per line)
cx chmod +x FILE Make file executable
isodate date -u +%Y-%m-%dT%H:%M:%SZ Print ISO 8601 timestamp
sh256 shasum -a 256 FILE SHA256 hash of file
md5s md5 FILE MD5 hash of file

Misc Devops

Alias Runs Description
hup helm upgrade --install RELEASE CHART Helm upgrade/install
hls helm list List Helm releases
hdel helm uninstall RELEASE Uninstall Helm release
ans ansible-playbook PLAYBOOK.yml Run Ansible playbook
vup vagrant up Start Vagrant VM
vsh vagrant ssh SSH into Vagrant VM
vhalt vagrant halt Stop Vagrant VM

Mongodb

Alias Runs Description
mongosh mongosh Launch MongoDB shell
mstart brew services start mongodb-community Start MongoDB (macOS Homebrew)
mstop brew services stop mongodb-community Stop MongoDB (macOS Homebrew)
mrestart brew services restart mongodb-community Restart MongoDB
mdump mongodump --db DB --out ./dump Dump a MongoDB database
mrestore mongorestore --db DB ./dump/DB Restore a MongoDB database
mexport mongoexport --db DB --collection COL --out file.json Export collection to JSON
mimport mongoimport --db DB --collection COL --file file.json Import JSON into collection

Networking

Alias Runs Description
curlt curl with timing breakdown curl with DNS/connect/TLS timing
curlh curl -I URL Show HTTP response headers
curlj curl -X POST -H JSON -d DATA URL curl POST with JSON body
wgetm wget --mirror URL Mirror/download entire site
myip curl ifconfig.me Show public IP address
localip ipconfig getifaddr en0 Show local IP address
ping5 ping -c 5 HOST Ping with 5 packets
digs dig +short DOMAIN Quick DNS lookup
digr dig -x IP Reverse DNS lookup
nsl nslookup DOMAIN nslookup shortcut
trce traceroute HOST Traceroute to host
nstat netstat -tlnp Show listening ports (netstat)
ssl ss -tlnp Show listening ports (ss)
conns ss -s Show connection summary
portcheck nc -zv HOST PORT Check if a port is open
speedtest speedtest-cli via python Internet speed test
ifls ifconfig / ip addr show List network interfaces
headers curl -sI URL Show HTTP headers for URL
dlf curl -L -O --progress-bar URL Download file with progress
macspoof sudo ifconfig en0 ether \$(openssl rand -hex 6 | sed 's/\(.*\)/\1:/g; s/.$//') Spoof MAC address (macOS)
dnsflush sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder Flush DNS cache (macOS)
listenpy python3 -m http.server 8000 Quick HTTP server to share files
urlencode python3 -c 'import urllib.parse, sys; print(urllib.parse.quote(sys.argv[1]))' URL Encode string
urldecode python3 -c 'import urllib.parse, sys; print(urllib.parse.unquote(sys.argv[1]))' URL Decode string

Nginx

Alias Runs Description
ngt sudo nginx -t Test nginx config
ngr sudo nginx -s reload Reload nginx
ngstart sudo systemctl start nginx Start nginx
ngstop sudo systemctl stop nginx Stop nginx
ngrestart sudo systemctl restart nginx Restart nginx
ngstatus sudo systemctl status nginx Nginx service status
ngedit sudo vi /etc/nginx/nginx.conf Edit nginx config
ngacc sudo tail -f /var/log/nginx/access.log Tail nginx access log
ngerr sudo tail -f /var/log/nginx/error.log Tail nginx error log
ngsites ls /etc/nginx/sites-enabled/ List nginx sites-enabled
ngconf sudo nginx -T Dump full nginx config

Npm Yarn Pnpm

Alias Runs Description
ni npm install npm install
nid npm install --save-dev npm install as dev dependency
nig npm install -g npm install globally
nrd npm run dev npm run dev server
nrb npm run build npm run build
nrs npm run start npm run start
nrt npm run test npm run test
nrl npm run lint npm run lint
nls npm list --depth=0 List top-level npm packages
nout npm outdated Show outdated npm packages
nup npm update Update npm packages
naf npm audit fix Fix npm audit vulnerabilities
ncc npm cache clean --force Clear npm cache
ninit npm init -y Initialize new npm project
nx npx npx shortcut
yi yarn install Yarn install dependencies
ya yarn add PACKAGE Yarn add package
yad yarn add --dev PACKAGE Yarn add dev dependency
yrd yarn dev Yarn dev server
yrb yarn build Yarn build
yrs yarn start Yarn start
yrt yarn test Yarn test
yga yarn global add PACKAGE Yarn global install
pni pnpm install pnpm install dependencies
pad pnpm add PACKAGE pnpm add package
padd pnpm add -D PACKAGE pnpm add dev dependency
prd pnpm dev pnpm dev server
prb pnpm build pnpm build
prs pnpm start pnpm start
prt pnpm test pnpm test

Postgresql

Alias Runs Description
pg psql PostgreSQL CLI
pgsu sudo -u postgres psql psql as postgres superuser
pgls psql -l List PostgreSQL databases
pgdb psql -d DB [-U user] Connect to a database
pgdump pg_dump DATABASE Dump a database
pgrestore pg_restore FILE Restore a database dump
pgcreate createdb DATABASE Create a database
pgdrop dropdb DATABASE Drop a database
pgroles psql -c '\\du' List PostgreSQL roles
pgconn SELECT from pg_stat_activity Show active connections
pgsize SELECT relname, pg_size_pretty(...) Show table sizes
pgrunning SELECT from pg_stat_activity WHERE active Show running queries
pgvacuum VACUUM FULL Run full vacuum
pgstatus systemctl status postgresql PostgreSQL service status
pgver psql --version PostgreSQL version

Python Pip Venv

Alias Runs Description
py python3 Python3 shortcut
py2 python2 Python2 shortcut
pip3i pip3 install PACKAGE pip install a package
pipr pip3 install -r requirements.txt pip install from requirements
pipf pip3 freeze > requirements.txt Freeze pip deps to requirements
pipl pip3 list List installed pip packages
pipo pip3 list --outdated List outdated pip packages
pipu pip3 install --upgrade PACKAGE Upgrade a pip package
pipun pip3 uninstall PACKAGE Uninstall a pip package
venv python3 -m venv venv Create a virtual environment
va source venv/bin/activate Activate venv
vd deactivate Deactivate venv
pt pytest Run pytest
ptv pytest -v Run pytest verbose
ptc pytest --cov Run pytest with coverage
pym python3 -m MODULE Run Python module
ipy ipython Launch IPython
jnb jupyter notebook Launch Jupyter Notebook
jlab jupyter lab Launch Jupyter Lab
pide pip3 install -e . pip install in editable mode

Redis

Alias Runs Description
rd redis-cli Redis CLI
rdping redis-cli ping Ping Redis server
rdinfo redis-cli info Redis server info
rdmon redis-cli monitor Monitor Redis commands in real-time
rdkeys redis-cli keys '*' List all Redis keys
rdget redis-cli get KEY Get a Redis key value
rdset redis-cli set KEY VAL Set a Redis key
rddel redis-cli del KEY Delete a Redis key
rdflush redis-cli flushdb Flush current Redis DB
rdflushall redis-cli flushall Flush all Redis DBs
rdsize redis-cli dbsize Show Redis DB key count
rdshut redis-cli shutdown Shutdown Redis server

Rust Go

Alias Runs Description
cb cargo build Build Rust project
cbr cargo build --release Build Rust project in release mode
cr cargo run Build and run Rust project
ct cargo test Run Rust tests
ccheck cargo check Fast syntax/type check (no compile)
cclippy cargo clippy Run Rust linter (clippy)
cfmt cargo fmt Format Rust code
cadd cargo add CRATE Add a Rust crate dependency
gbuild go build ./... Build Go project
grun go run . Run Go main package
gotst go test ./... Run all Go tests
gvet go vet ./... Run Go static analysis
gmod go mod tidy Tidy Go module dependencies
gofm gofmt -w . Format all Go files
gget go get PACKAGE Install a Go package

Shell File Utilities

Alias Runs Description
h history | grep TERM Grep shell history
hl history lucky match + exec Run penultimate history match
dst find . -name '.DS_Store' -exec rm Remove .DS_Store files recursively
dust-kash find . -name '*.kash' -exec rm Remove .kash cache files recursively
date-file-maker touch MM-DD-YY-HH:MM:SS.txt Create a UTC-timestamped file
swap mv file1 tmp && mv file2 file1 && mv tmp file2 Swap names of two files
mkcd mkdir -p DIR && cd DIR mkdir + cd in one step
extract tar/unzip/7z/etc Universal archive extractor
tre tree -I '.git|node_modules' tree with junk dirs ignored
ports lsof -iTCP -sTCP:LISTEN Show listening TCP ports
sizeof du -sh PATH Human-readable size of file/dir
blk python3 -m black FILE Run Python Black formatter
serve python3 -m http.server PORT Quick HTTP server
jql jq -C '.' FILE | less -R Pretty-print JSON with less
rmdstore find . -name '.DS_Store' -delete Remove .DS_Store with feedback
rmnodemodules find+rm node_modules Interactively remove node_modules dirs
countext find . -type f | sed/sort/uniq Count files by extension
findlarge find . -type f -size +N Find files larger than N

Ssh Scp

Alias Runs Description
sshtun ssh -L LOCAL_PORT:localhost:REMOTE_PORT USER@HOST SSH local port forwarding tunnel
sshrtun ssh -R REMOTE_PORT:localhost:LOCAL_PORT USER@HOST SSH reverse tunnel
sshcopy ssh-copy-id USER@HOST Copy SSH key to remote host
sshv ssh -vvv USER@HOST SSH with verbose output
sshedit ${EDITOR:-vim} ~/.ssh/config Edit SSH config
sshkeygen ssh-keygen -t ed25519 -C EMAIL Generate ed25519 SSH key
sshadd ssh-add ~/.ssh/id_ed25519 Add SSH key to agent
sshls ssh-add -l List keys loaded in SSH agent
sshjump ssh -J JUMP_HOST USER@DEST_HOST SSH via jump host / proxy
sshtest ssh -o ConnectTimeout=5 -q USER@HOST exit Test SSH connection
scpto scp FILE USER@HOST:REMOTE_PATH SCP file to remote
scpfrom scp USER@HOST:REMOTE_FILE LOCAL_PATH SCP file from remote
scptor scp -r DIR USER@HOST:REMOTE_PATH SCP directory to remote (recursive)
scpfromr scp -r USER@HOST:REMOTE_DIR LOCAL_PATH SCP directory from remote (recursive)

Super Utilities

Alias Runs Description
cheat curl cheat.sh/CMD Get cheat sheet for any CLI command
weather curl wttr.in/LOCATION Get the weather forecast in terminal
qrgen curl qrencode.com/STRING Generate a QR code in the terminal
uuid uuidgen | tr '[:upper:]' '[:lower:]' Generate a random UUIDv4
epoch date +%s Get current Unix Epoch timestamp
stopwatch time read Start a simple stopwatch (press Enter to stop)
timer sleep N && echo 'Time is up!' Simple countdown timer
matrix Pure Bash Matrix Effect Run the Matrix digital rain in your terminal

Systemd Services

Alias Runs Description
scs sudo systemctl status SERVICE Show service status
scstart sudo systemctl start SERVICE Start a service
scstop sudo systemctl stop SERVICE Stop a service
screstart sudo systemctl restart SERVICE Restart a service
scenable sudo systemctl enable SERVICE Enable service at boot
scdisable sudo systemctl disable SERVICE Disable service at boot
screload sudo systemctl reload SERVICE Reload service config
scdaemon sudo systemctl daemon-reload Reload systemd daemon
jctl sudo journalctl -f Follow system journal
jctlu sudo journalctl -u SERVICE Journal for a specific unit
jctlt sudo journalctl --since today Journal since today
scls systemctl list-units --type=service List active services
scfail systemctl --failed List failed services
scactive systemctl is-active SERVICE Check if service is active
scenabled systemctl is-enabled SERVICE Check if service is enabled

Terraform

Alias Runs Description
tf terraform Terraform shortcut
tfi terraform init Initialize Terraform
tfp terraform plan Plan changes
tfa terraform apply Apply changes
tfaa terraform apply -auto-approve Apply without prompt
tfd terraform destroy Destroy infrastructure
tfs terraform state list List state resources
tfo terraform output Show outputs
tfv terraform validate Validate config
tff terraform fmt -recursive Format all .tf files
tfw terraform workspace list List workspaces

Tmux

Alias Runs Description
tnew tmux new -s NAME Create a new named tmux session
tls tmux ls List tmux sessions
tat tmux attach -t NAME Attach to a tmux session
tkill tmux kill-session -t NAME Kill a tmux session
tkillall tmux kill-server Kill all tmux sessions
treload tmux source ~/.tmux.conf Reload tmux config
tsplit tmux split-window -h Split tmux pane horizontally
tsplitv tmux split-window -v Split tmux pane vertically

🛠️ Adding Custom Shortcuts

# Add a custom shortcut — alias first, then the command
G -a olist 'ollama list'        # Now 'olist' works instantly in your shell

# Remove a custom shortcut
G -rm olist                     # Removes alias immediately

# Saved to ~/.ghee-custom — shows up in G search immediately
# Edit ~/.ghee-custom directly for bulk additions:
# alias_name|||the actual command|||description

Custom aliases are live instantly — no need to restart your shell.


🤝 Contributing

Contributions are welcome! If you want to add new commands or modules, please follow these steps:

  1. Fork the repository and create your branch (git checkout -b feature/new-module).
  2. Add your aliases to an existing module in modules/ or create a new .sh file if it's a completely new category.
  3. Make sure you use the standard structure for your aliases and keep descriptions clear and concise.
  4. Test the installer script (./setup-ghee) locally to ensure your changes don't break existing setups.
  5. Submit a Pull Request.

🍴 Forking & Personalizing

ghee is designed to be forked. The best way to use it long-term is to maintain your own fork with your personal shortcuts, then sync upstream improvements when they land.

Quick Fork Setup

# 1. Fork on GitHub, then clone your fork
gh repo fork juleshenry/ghee --clone
cd ghee

# 2. Install
chmod +x setup-ghee && ./setup-ghee
source ~/.zshrc

# 3. Add your own shortcuts
G -a myalias 'my-custom-command'

# 4. Or add a whole new module
cat > modules/my_team.sh << 'EOF'
#!/bin/bash
# ============================================================================
# Module: My Team
# Description: Custom shortcuts for my team's workflow.
# ============================================================================
_GG_REGISTRY["deploy-staging"]="./scripts/deploy.sh staging|||Deploy to staging"
_GG_REGISTRY["db-migrate"]="rails db:migrate|||Run database migrations"
EOF
chmod +x modules/my_team.sh

Syncing Upstream Changes

# Add upstream remote (one-time)
git remote add upstream https://github.com/juleshenry/ghee.git

# Pull latest from upstream
git fetch upstream
git merge upstream/main

# Resolve any conflicts in your custom modules, then:
./setup-ghee && source ~/.zshrc

Your custom shortcuts in ~/.ghee-custom are always safe — they live outside the repo and survive any update or reinstall.


🎨 Why "ghee"?

Ghee is clarified Indian butter — everything impure is removed, leaving only the richest, purest fat. That's this toolkit. No bloat, no noise — just the good stuff, clarified down to its most useful essence, making everything it touches smoother and more delicious. 🧈


📄 License

MIT — use it, fork it, spread it like butter.

Metadata

Release files for ghee-cli 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ghee-cli 0.1.2
File Size Uploaded
ghee_cli-0.1.2.tar.gz 109.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ghee-cli 0.1.2
File Interpreter ABI Platform
ghee_cli-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 181.1 kB

Release files / ghee_cli-0.1.2.tar.gz

Download URL ghee_cli-0.1.2.tar.gz
Size 109.4 kB
Tags Source
SHA-256 checksum
How to use checksums
c5dbe9164568dae18cac65d66d65114d2dfc3917b8a44edcde0cb961abffc0ea
BLAKE2b-256 checksum
How to use checksums
544e59a577373a2b64ebc12d0da942ccdf93e9e7190f8b94afcb588181498cc5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / ghee_cli-0.1.2-py3-none-any.whl

Download URL ghee_cli-0.1.2-py3-none-any.whl
Size 71.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
105bfef7589161e4f658fbf01b56761cd597b62f14e9a2c7512f29ce0bc07aef
BLAKE2b-256 checksum
How to use checksums
8da35d1e30cca110ddbfe4b46af3904ff50f90e6bb9435b8c370974d9b88f878
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page