141 lines
5.7 KiB
Bash
141 lines
5.7 KiB
Bash
#!/usr/bin/env bash
|
||
|
||
# Easier navigation: .., ..., ...., ....., ~ and -
|
||
alias ..="cd .."
|
||
alias ...="cd ../.."
|
||
alias ....="cd ../../.."
|
||
alias .....="cd ../../../.."
|
||
alias ~="cd ~" # `cd` is probably faster to type though
|
||
alias -- -="cd -"
|
||
|
||
# Shortcuts
|
||
alias dl="cd ~/Downloads"
|
||
alias dt="cd ~/Desktop"
|
||
alias p="cd ~/Projects"
|
||
alias g="git"
|
||
|
||
# Detect which `ls` flavor is in use
|
||
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:'
|
||
else # macOS `ls`
|
||
colorflag="-G"
|
||
export LSCOLORS='BxBxhxDxfxhxhxhxhxcxcx'
|
||
fi
|
||
|
||
# List all files colorized in long format
|
||
alias l="ls -lF ${colorflag}"
|
||
|
||
# List all files colorized in long format, including dot files
|
||
alias la="ls -laF ${colorflag}"
|
||
|
||
# List only directories
|
||
alias lsd="ls -lF ${colorflag} | grep --color=never '^d'"
|
||
|
||
# Always use color output for `ls`
|
||
alias ls="command ls ${colorflag}"
|
||
|
||
# Always enable colored `grep` output
|
||
# Note: `GREP_OPTIONS="--color=auto"` is deprecated, hence the alias usage.
|
||
alias grep='grep --color=auto'
|
||
alias fgrep='fgrep --color=auto'
|
||
alias egrep='egrep --color=auto'
|
||
|
||
# Enable aliases to be sudo’ed
|
||
alias sudo='sudo '
|
||
|
||
# Get week number
|
||
alias week='date +%V'
|
||
|
||
# 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 ip="dig +short myip.opendns.com @resolver1.opendns.com"
|
||
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'
|
||
|
||
|
||
# Intuitive map function
|
||
# For example, to list all directories that contain a certain file:
|
||
# find . -name .gitattributes | map dirname
|
||
alias map="xargs -n1"
|
||
|
||
# One of @janmoesen’s ProTip™s
|
||
for method in GET HEAD POST PUT DELETE TRACE OPTIONS; do
|
||
alias "${method}"="lwp-request -m '${method}'"
|
||
done
|
||
|
||
|
||
# Stuff I never really use but cannot delete either because of http://xkcd.com/530/
|
||
alias stfu="osascript -e 'set volume output muted true'"
|
||
alias pumpitup="osascript -e 'set volume output volume 100'"
|
||
|
||
# Kill all the tabs in Chrome to free up memory
|
||
# [C] explained: http://www.commandlinefu.com/commands/view/402/exclude-grep-from-your-grepped-output-of-ps-alias-included-in-description
|
||
alias chromekill="ps ux | grep '[C]hrome Helper --type=renderer' | grep -v extension-process | tr -s ' ' | cut -d ' ' -f2 | xargs kill"
|
||
|
||
# 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}'
|
||
|
||
# AWS aliases for profile management
|
||
. ~/bin/awsAliases
|
||
alias awsall="_awsListAll"
|
||
alias awsp="_awsSwitchProfile"
|
||
alias awswho="aws configure list"
|