#!/usr/bin/env zsh # allow sudo-able aliases alias sudo="sudo " # colorful ls alias ls="ls -G --color=auto" alias ll="ls -lah" alias la="ls -a" alias l="ll" # easier dotfile tinkering alias shreload="exec \$SHELL" alias shdebug="DOTFILES_DEBUG=1 exec \$SHELL" # git alias g="git" alias gc="git commit -m" # + commit message alias gca="git add . && git commit -m" # + commit message alias gs="git status -sb" alias gl="git log --pretty=short" alias gd="git diff" alias gds="git diff --staged" alias gpom="git push origin main" alias glom="git pull origin main" alias gpo="git push origin" # + branch name alias glo="git pull origin" # + branch name alias glfm="git fetch && git reset origin/main --hard" alias gb="git checkout" # + existing branch name alias gbn="git checkout -b" # + new branch name alias grm="git rebase -i origin/main" alias gsub="git submodule update --recursive --remote" alias gundo="git reset --soft HEAD~1" alias gres="git reset" alias github="gh repo view --web" alias gist="gh gist create --web" # docker alias dps="docker ps -a" dbar() { # build a Dockerfile in the current directory and run it interactively: # https://stackoverflow.com/questions/45141402/build-and-run-dockerfile-with-one-command/59220656#59220656 docker run --rm -it "$(docker build --no-cache -q .)" } dsh() { docker exec -it "$1" /bin/sh } # alias dc="docker-compose" alias dc="docker compose" alias dcu="dc up -d" alias dcd="dc down" alias dcr="dcd && dcu" alias dcl="dc logs -f" # multipass alias mp="multipass" mpl() { # creates VM and opens its bash shell # `mpl test1 4G 20.04` multipass launch "${2:-jammy}" --cpus=4 --memory="${3:-2G}" --disk="${4:-20G}" --name="$1" && \ multipass shell "$1" } mpd() { multipass delete "$1" && multipass purge } alias mpls="multipass list" alias mpsh="multipass shell" alias mpk="multipass stop" # Node/NPM/Yarn alias npr="npm run" alias yar="yarn run" alias pnpr="pnpm run" alias fresh_npm="rm -rf node_modules package-lock.json && npm install" alias fresh_yarn="rm -rf node_modules yarn.lock && yarn install" alias fresh_pnpm="rm -rf node_modules pnpm-lock.yaml && pnpm install" # uncomment to use VS Code insiders build # alias code="code-insiders" # open current working directory in VS Code alias vs="code ." # an original creation, see https://github.com/jakejarvis/simpip alias ipv4="curl -4 simpip.com --max-time 1 --proto-default https --silent" alias ipv6="curl -6 simpip.com --max-time 1 --proto-default https --silent" alias ip="ipv4; ipv6" alias ip-local="ipconfig getifaddr en0" alias ips="ip; ifconfig -a | grep -o 'inet6\? \(addr:\)\?\s\?\(\(\([0-9]\+\.\)\{3\}[0-9]\+\)\|[a-fA-F0-9:]\+\)' | awk '{ sub(/inet6? (addr:)? ?/, \"\"); print }'" # youtube-dl alias youtube-dl="yt-dlp" # better youtube-dl fork: https://github.com/yt-dlp/yt-dlp alias ytdl="youtube-dl -f bestvideo+bestaudio" alias ytmp3="youtube-dl -f bestaudio -x --audio-format mp3 --audio-quality 320K" # Hugo: build & install from source as `hugo-dev` make_hugo() { if [[ ! -d "$GOPATH"/src/github.com/gohugoio/hugo ]]; then mkdir -p "$GOPATH"/src/github.com/gohugoio/hugo git clone https://github.com/gohugoio/hugo.git "$GOPATH"/src/github.com/gohugoio/hugo fi if ! command -v mage &>/dev/null; then go install github.com/magefile/mage@latest fi # parentheses lets us cd to Hugo path without changing our current location ( cd "$GOPATH"/src/github.com/gohugoio/hugo \ && "$GOPATH"/bin/hugo-dev env 2>/dev/null || true \ && git checkout master \ && mage uninstall \ && git pull origin master \ && git reset --hard HEAD \ && mage -v hugo \ && HUGO_BUILD_TAGS=extended mage -v install \ && mv -fv "$GOPATH"/bin/hugo "$GOPATH"/bin/hugo-dev \ && "$GOPATH"/bin/hugo-dev env ) } # run `hugo config` first to make sure we're in a Hugo directory: alias hugo_clean="hugo config 1>/dev/null && rm -rf public/ resources/ build/" # misc. alias screenfetch="neofetch" alias weather="curl 'https://wttr.in/?format=v2'"