Mike Rockétt

Let’s Shorten those Shell Commands

Some useful shell aliases for your development pleasure.

#Shell — 20 December 2020

Much like moving from Windows to a Mac, using Bash/​ZSH shortcuts is something you start and don’t change your mind on. Well, that’s at least my case.

To setup yours, all you need to do is define them in your shell config (be it Bash or ZSH). I use ZSH with a sourced aliases file (containing aliases to edit both of these).

To start, create a new aliases file (touch ~/.aliases) and then open up ~/.bash_profile or ~/.bashrc if you’re using Bash, ~/.zshrc if it’s ZSH, and add the following anywhere in the file:

source ~/.aliases

Next, open up the aliases file and add each alias. Here are some I’ve gathered over the last two years. Admittedly, I don’t use them all, and sometimes forget half of them exist, but they’re useful to have nonetheless.

General stuff

alias sshconfig="vi ~/.ssh/config"
alias copyssh="pbcopy < ~/.ssh/id_ed25519.pub" # pbcopy is mac-only
alias showssh="cat ~/.ssh/id_ed25519.pub"
alias publicip="curl icanhazip.com"

Git

alias gs="git status"
alias gss="git status -s"
alias gc="git commit -m"
alias gb="git branch"
alias gco="git checkout"
alias gpl="git pull"
alias ga="git add ."
alias gd="git diff"
alias gds="git diff --stat"
alias gps="git push"
alias nah='git reset --hard;git clean -df'

NPM

alias ni="npm i"
alias nu="npm update"
alias num="npm uninstall"
alias nrw="npm run watch"
alias nrh="npm run hot"
alias nrd="npm run dev"
alias nrs="npm run serve"
alias nrso="npm run serve -- --open"
alias nrp="npm run production"
alias nrb="npm run build"
alias nvp="npm version patch"
alias npp="npm publish"

Laravel

alias art="php artisan"
alias migrate="art migrate --seed"
alias fresh="art migrate:fresh --seed"
alias rollback="art migrate:rollback"
alias routes="art route:list"
alias seed="art db:seed"
alias copyenv="cp .env.example .env"
alias artkey="art key:generate"
alias clearcache="art cache:clear"
alias ds="art dump-server"
alias tinker="art tinker"

Composer

alias ci="composer install"
alias cu="composer update"
alias cr="composer require"
alias cda="composer dumpautoload"

Functions

mcd() {
# make a new directory (nested) and cd into it
mkdir -p -- "$1" && cd -- "$1"
}
 
commit() {
# git add and git commit
ga && gc "$1"
}
 
 
push() {
# git add, git commit, and git push
commit "$1" && gps
}
 
take() {
# take a new branch and push it to origin
gco -b $1 && gps -u origin $1
}
 
editme() {
# edit and source the ZSH profile
vi ~/.zshrc
source ~/.zshrc
echo "$(tput setaf 2).zshrc sourced$(tput sgr0)"
}
 
editaliases() {
# edit and source this file
vi ~/.aliases
source ~/.aliases
echo "$(tput setaf 2).aliases sourced$(tput sgr0)"
}
 
tailthelog() {
# tail the laravel log, trimming out the stack trace and adding some color
tail -f -n 450 storage/logs/laravel*.log | grep -i -E "^\[\d{4}\-\d{2}\-\d{2} \d{2}:\d{2}:\d{2}\]|Next [\w\W]+?\:" --color
}