Dotfiles for Mac PowerBook (maya, cronus, seawater).
 
 

439 lines
12 KiB

#!/usr/bin/env bash
git() {
if [[ $@ == "push origin master" ]]; then
echo "nope"
else
command git "$@"
fi
}
# get rid of stupid annoying badges
# ---------------------------------
alias clearbadges='defaults write com.apple.systempreferences AttentionPrefBundleIDs 0 && killall Dock'
# lazy af
# -------
alias mk='make'
alias smk='snakemake'
alias smake='snakemake'
alias py='python3'
alias ipy='ipython --pylab'
alias ip="curl -4 icanhazip.com"
alias ipaddr="curl -4 icanhazip.com"
# uuid generator
alias uuid="uuidgen"
# python stuff
# ------------
# https://unix.stackexchange.com/a/459586
alias vp="[ -d vp ] || virtualenv -p python3 vp && source vp/bin/activate"
if [[ "${HOSTNAME}" == "aptos" ]]; then
alias vpp="[ -d vpp ] || virtualenv --python ${HOME}/.pyenv/versions/pypy3.9-7.3.9/bin/pypy3 vpp && source vpp/bin/activate"
else
alias vpp="[ -d vpp ] || virtualenv -p pypy3 vpp && source vpp/bin/activate"
fi
# one-letter aliases
# ---------------
alias h='echo ""; echo $HOSTNAME; echo ""'
alias p='echo -e ${PATH//:/\\n}'
alias e='exit'
alias u='cd ..'
alias v='vim'
# utility wrappers
# ---------------
alias pp='python setup.py build && python setup.py install'
alias sha1='openssl sha1'
alias du='du -kh'
alias dh='dh -kTh'
alias pc='pelican content'
alias lsop='lsof -nP +c 15 | /usr/bin/grep LISTEN'
# don't clobber
# -----------------
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
# ls aliases
# --------------------
# Detect which `ls` flavor is in use
LS=$(which ls)
if $LS --color > /dev/null 2>&1; then # GNU `ls`
colorflag="--color"
export LS_COLORS='no=00:fi=00:di=01;31:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.ogg=01;35:*.mp3=01;35:*.wav=01;35:'
groupflag="--group-directories-first"
else # macOS `ls`
colorflag="-G"
export LSCOLORS='BxBxhxDxfxhxhxhxhxcxcx'
groupflag="--group-directories-first"
fi
alias ls="$LS -1 ${colorflag} ${groupflag}"
alias sl='ls'
# List all files colorized in long format
alias l="$LS -lhAF ${colorflag}"
alias ll="l"
# List all files colorized in long format, including dot files
alias la="l -a"
# List only directories
alias lsd="$LS -lF ${colorflag} | grep --color=never '^d'"
alias lr='ls -r' # reverse
alias llr='ll -r' # reverse
alias lt='$LS -lhAFt -G' # time
alias lt='ls -t' # time
alias llt='ll -t' # time
alias ltr='ls -tr' # reverse time
alias lltr='ll -tr' # reverse time
alias lk='ls -lSr' # by size (small to big)
# clear
# ---------------
alias clc='clear; pwd'
alias cl='clc; ll'
alias cll='clear; ll'
alias cls='clear; ls'
alias lcs='clear; ls'
alias csl='cls'
alias cla='clear; la'
alias c='clear'
# socks proxy thru seawater for private wiki access
# (use with foxyproxy, point to localhost:5778)
# ---------------
alias socks='ssh -D 5778 -p 5778 charles@charlesreid1.party -f -N'
# tinc vpn
# ---------------
alias seawatervpn="seawatervpn"
function seawatervpn() {
ssh-agent > ~/ssh.file # env vars in ssh.file
chmod +x ~/ssh.file # execute file
~/ssh.file > /dev/null
rm -f ~/ssh.file
export IP="192.168.30.1"
ssh -p 5778 -Y charles@${IP} # the actual ssh call
}
alias randalvpn="randalvpn"
function randalvpn() {
ssh-agent > ~/ssh.file # env vars in ssh.file
chmod +x ~/ssh.file # execute file
~/ssh.file > /dev/null
rm -f ~/ssh.file
export IP="192.168.30.10"
ssh -p 5778 -Y charles@${IP} # the actual ssh call
}
alias mayavpn="mayavpn"
function mayavpn() {
ssh-agent > ~/ssh.file # env vars in ssh.file
chmod +x ~/ssh.file # execute file
~/ssh.file > /dev/null
rm -f ~/ssh.file
export IP="192.168.30.20"
ssh -Y charles@${IP} # the actual ssh call
}
alias bearvpn="bearvpn"
function bearvpn() {
ssh-agent > ~/ssh.file # env vars in ssh.file
chmod +x ~/ssh.file # execute file
~/ssh.file > /dev/null
rm -f ~/ssh.file
export IP="192.168.30.40"
ssh -p 5778 -Y charles@${IP} # the actual ssh call
}
alias emmettvpn="emmettvpn"
function emmettvpn() {
ssh-agent > ~/ssh.file # env vars in ssh.file
chmod +x ~/ssh.file # execute file
~/ssh.file > /dev/null
rm -f ~/ssh.file
export IP="192.168.30.55"
ssh -p 5778 -Y charles@${IP} # the actual ssh call
}
# Local machines
# ---------------
alias randal="randal"
function randal() {
ssh-agent > ~/ssh.file # env vars in ssh.file
chmod +x ~/ssh.file # execute file
~/ssh.file > /dev/null
rm -f ~/ssh.file
export IP="192.168.0.10"
ssh -p 5778 -Y charles@${IP} # the actual ssh call
}
# Remote machines
# ---------------
alias charles="charles"
function charles() {
ssh-agent > ~/ssh.file # env vars in ssh.file
chmod +x ~/ssh.file # execute file
~/ssh.file > /dev/null
rm -f ~/ssh.file
export IP="charlesreid1.com"
ssh -p 5778 -Y charles@${IP} # the actual ssh call
}
alias bear="bear"
function bear() {
ssh-agent > ~/ssh.file # env vars in ssh.file
chmod +x ~/ssh.file # execute file
~/ssh.file > /dev/null
rm -f ~/ssh.file
export IP="173.255.249.79"
ssh -p 5778 -Y charles@${IP} # the actual ssh call
}
alias emmett="emmett"
function emmett() {
ssh-agent > ~/ssh.file # env vars in ssh.file
chmod +x ~/ssh.file # execute file
~/ssh.file > /dev/null
rm -f ~/ssh.file
export IP="173.255.252.181"
ssh -p 5778 -Y charles@${IP} # the actual ssh call
}
alias seawater="seawater"
function seawater() {
ssh-agent > ~/ssh.file # env vars in ssh.file
chmod +x ~/ssh.file # execute file
~/ssh.file > /dev/null
rm -f ~/ssh.file
export IP="charlesreid1.party"
ssh -p 5778 -Y charles@${IP} # the actual ssh call
}
alias burro="burro"
function burro() {
ssh-agent > ~/ssh.file # env vars in ssh.file
chmod +x ~/ssh.file # execute file
~/ssh.file > /dev/null
rm -f ~/ssh.file
export IP="173.255.210.178"
ssh -p 5778 -Y charles@${IP} # the actual ssh call
}
# tmux shortcuts
# constructed with help from https://robots.thoughtbot.com/a-tmux-crash-course
# tmux sessions
# ---------------
# tmux list sessions: tls = tmux list-sessions
alias tls='tmux list-sessions'
# tmux new session: tns [name] = tmux new session named [name]
alias tns='tmux new -s'
# tmux deatch session: td = tmux detach (detach current session)
alias td='tmux detach'
# tmux windows
# ---------------
# tmux list windows
# tmux new window: tnw [name] = PREFIX + C
alias tnw='tmux new-window'
# tmux attach window
# taw [number]
# PREFIX + (0-9)
alias taw='tmux select-window -t'
# tmux rename window
# trw [name]
# PREFIX + ,
alias trw='tmux rename-window '
# tmux vertical split window
# tvsp
# PREFIX + "
tvsp='tmux split-window'
# tmux horizontal split window
# thsp
thsp='tmux split-window -h'
# typo aliases
# ---------------
alias lll='ll'
alias mdkir='mkdir'
alias mdir='mkdir'
alias celar='clear'
alias cealr='clear'
# cd
# ---------------
alias back='cd $OLDPWD'
####################
# modified mathias
# Easier navigation: .., ..., ...., ....., ~ and -
alias ..="cd .."
alias ...="cd ../.."
alias ....="cd ../../.."
alias .....="cd ../../../.."
alias ~="cd ~" # `cd` is probably faster to type though
alias -- -="cd -"
# Shortcuts
alias d="cd ~/Desktop"
alias g="git"
alias gs="git status"
alias h="history"
#alias s="screen"
# Always enable colored `grep` output
# Note: `GREP_OPTIONS="--color=auto"` is deprecated, hence the alias usage.
alias grep='grep -i --color=auto --exclude-dir=vp'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
# Get week number
alias week='date +%V'
# Stopwatch
alias timer='echo "Timer started. Stop with Ctrl-D." && date && time cat && date'
### # Get macOS Software Updates
### #, and update installed Ruby gems, Homebrew, npm, and their installed packages
### alias update='sudo softwareupdate -i -a; brew update; brew upgrade; brew cleanup'
### # Google Chrome
### alias chrome='/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome'
### alias canary='/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary'
# IP addresses
alias localip="ipconfig getifaddr en0"
alias ips="ifconfig -a | grep -o 'inet6\? \(addr:\)\?\s\?\(\(\([0-9]\+\.\)\{3\}[0-9]\+\)\|[a-fA-F0-9:]\+\)' | awk '{ sub(/inet6? (addr:)? ?/, \"\"); print }'"
# Show active network interfaces
alias ifactive="ifconfig | pcregrep -M -o '^[^\t:]+:([^\n]|\n\t)*status: active'"
### # Flush Directory Service cache
### alias flush="dscacheutil -flushcache && killall -HUP mDNSResponder"
###
### # Clean up LaunchServices to remove duplicates in the “Open With” menu
### alias lscleanup="/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user && killall Finder"
###
### # Canonical hex dump; some systems have this symlinked
### command -v hd > /dev/null || alias hd="hexdump -C"
###
### # macOS has no `md5sum`, so use `md5` as a fallback
### command -v md5sum > /dev/null || alias md5sum="md5"
###
### # macOS has no `sha1sum`, so use `shasum` as a fallback
### command -v sha1sum > /dev/null || alias sha1sum="shasum"
###
### # JavaScriptCore REPL
### jscbin="/System/Library/Frameworks/JavaScriptCore.framework/Versions/A/Resources/jsc";
### [ -e "${jscbin}" ] && alias jsc="${jscbin}";
### unset jscbin;
###
### # Trim new lines and copy to clipboard
### alias c="tr -d '\n' | pbcopy"
###
### # Recursively delete `.DS_Store` files
### alias cleanup="find . -type f -name '*.DS_Store' -ls -delete"
###
### # Empty the Trash on all mounted volumes and the main HDD.
### # Also, clear Apple’s System Logs to improve shell startup speed.
### # Finally, clear download history from quarantine. https://mths.be/bum
### alias emptytrash="sudo rm -rfv /Volumes/*/.Trashes; sudo rm -rfv ~/.Trash; sudo rm -rfv /private/var/log/asl/*.asl; sqlite3 ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV* 'delete from LSQuarantineEvent'"
###
### # Show/hide hidden files in Finder
### alias show="defaults write com.apple.finder AppleShowAllFiles -bool true && killall Finder"
### alias hide="defaults write com.apple.finder AppleShowAllFiles -bool false && killall Finder"
###
### # Hide/show all desktop icons (useful when presenting)
### alias hidedesktop="defaults write com.apple.finder CreateDesktop -bool false && killall Finder"
### alias showdesktop="defaults write com.apple.finder CreateDesktop -bool true && killall Finder"
###
### # URL-encode strings
### alias urlencode='python -c "import sys, urllib as ul; print ul.quote_plus(sys.argv[1]);"'
###
### # Merge PDF files
### # Usage: `mergepdf -o output.pdf input{1,2,3}.pdf`
### alias mergepdf='/System/Library/Automator/Combine\ PDF\ Pages.action/Contents/Resources/join.py'
###
### # Disable Spotlight
### alias spotoff="sudo mdutil -a -i off"
### # Enable Spotlight
### alias spoton="sudo mdutil -a -i on"
###
### # PlistBuddy alias, because sometimes `defaults` just doesn’t cut it
### alias plistbuddy="/usr/libexec/PlistBuddy"
# Airport CLI alias
alias airport='/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport'
# Lock the screen (when going AFK)
alias afk="/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend"
# Reload the shell (i.e. invoke as a login shell)
alias reload="exec ${SHELL} -l"
# Print each PATH entry on a separate line
alias path='echo -e ${PATH//:/\\n}'