forked from mathiasbynens/dotfiles
-
Notifications
You must be signed in to change notification settings - Fork 14
/
.aliases
281 lines (219 loc) · 10.4 KB
/
.aliases
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
#!/usr/bin/env bash
# Easier navigation: .., ..., ...., ....., ~ and -
alias ..="cd .."
alias cd..="cd .."
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 db="cd ~/Dropbox"
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
if which vim > /dev/null 2>&1; then
alias vi=vim
fi
# alternative to tail -f
alias lessf="less +F"
# List all files colorized in long format
alias l="ls -lF ${colorflag}"
alias ll="ls -lahF ${colorflag}"
# List all files colorized in long format, excluding . and ..
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'
# Stopwatch
alias timer='echo "Timer started. Stop with Ctrl-D." && date && time cat && date'
# Dice for the undecided
alias dice='echo $[ 1 + $RANDOM % 6 ]'
alias yn='[ $[ $RANDOM % 2 ] == 0 ] && echo "Yes" || echo "No"'
# IP addresses
alias myip="dig +short myip.opendns.com @resolver1.opendns.com"
alias ips="ifconfig -a | grep -o 'inet6\? \(addr:\)\?\s\?\(\(\([0-9]\+\.\)\{3\}[0-9]\+\)\|[a-fA-F0-9:]\+\)' | awk '{ sub(/inet6? (addr:)? ?/, \"\"); print }'"
# Scanning networks
# scan network with arp requests (parameter: local network like 192.168.1.0/24)
alias nmap-arp="nmap -r -sn -PR"
# 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"
# Recursively delete `.DS_Store` files
alias cleanup="find . -type f -name '*.DS_Store' -ls -delete"
# URL-encode strings
alias urlencode='python -c "import sys, urllib.parse as ulp; print(ulp.quote_plus(sys.argv[1]));"'
# Merge PDF files, preserving hyperlinks
# Usage: `mergepdf input{1,2,3}.pdf`
alias mergepdf='gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=_merged.pdf'
# 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
# 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"
# Reload the shell (i.e. invoke as a login shell)
alias reload="exec ${SHELL} -l"
# generic colouriser
GRC="$(type -p grc)"
if [ "$TERM" != dumb ] && [ -n "$GRC" ]
then
alias colourify="$GRC -es --colour=auto"
alias configure='colourify ./configure'
alias df='colourify df'
alias diff='colourify diff'
alias docker='colourify docker'
alias docker-machine='colourify docker-machine'
alias du='colourify du'
alias env='colourify env'
alias make='colourify make'
alias gcc='colourify gcc'
alias g++='colourify g++'
alias as='colourify as'
alias gas='colourify gas'
alias ld='colourify ld'
alias netstat='colourify netstat'
alias ping='colourify ping'
alias traceroute='colourify /usr/sbin/traceroute'
alias traceroute6='colourify traceroute6'
alias head='colourify head'
alias tail='colourify tail'
alias dig='colourify dig'
alias mount='colourify mount'
alias ps='colourify ps'
alias mtr='colourify mtr'
alias ifconfig='colourify ifconfig'
if [ $(uname) == "Linux" ]
then
alias blkid='colourify blkid'
alias free='colourify free'
alias iptables='colourify iptables'
alias lsblk='colourify lsblk'
alias lspci='colourify lspci'
alias ip='colourify ip'
alias semanage='colourify semanage'
alias getsebool='colourify getsebool'
fi
fi
if [ $(uname) == "Darwin" ]
then
# Get macOS Software Updates, and update installed App Store apps, Homebrew, npm, and their installed packages
alias update='sudo -- sh -c "softwareupdate -i -a; /Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -license accept ; if hash mas 2>/dev/null; then mas upgrade; fi; brew update; brew upgrade; brew cleanup; npm install npm -g; npm update -g; '
# Get local ip address
alias localip="ipconfig getifaddr $LOCAL_NET_IFACE"
# Lock the screen (when going AFK)
alias afk="/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend"
# 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'"
# View HTTP traffic
alias sniff="sudo ngrep -d $LOCAL_NET_IFACE -t '^(GET|POST) ' 'tcp and port 80'"
# 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'
# make "ip" an alias to myip (on Linux, ip is a system command)
alias ip=myip
# random mac address for wifi adapter (sometimes DHCP server stops liking you for a weird reason
# and this helps)
alias randmac='sudo ifconfig $LOCAL_NET_IFACE ether `openssl rand -hex 6 | sed "s/\(..\)/\1:/g;s/.$//"`'
# Show active network interfaces
GRCAT=`which grcat 2>/dev/null`
if [ "$TERM" != dumb ] && [ -n "$GRCAT" ] && [ -r "$(brew --prefix)/share/grc/conf.ifconfig" ]; then
alias ifactive="ifconfig | pcregrep -M -o '^[^\t:]+:([^\n]|\n\t)*status: active' | grcat $(brew --prefix)/share/grc/conf.ifconfig"
else
alias ifactive="ifconfig | pcregrep -M -o '^[^\t:]+:([^\n]|\n\t)*status: active'"
fi
# 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"
# Google Chrome
alias chrome='/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome'
alias canary='/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary'
# 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"
# 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"
# Linux users are used to "locate" command
alias locate="mdfind"
# Set a DNS server to locally running dnscrypt
alias dnson="networksetup -setdnsservers Wi-Fi 127.0.0.1"
# Set DNS servers to DHCP provided to be able to go through captive portal
alias dnsoff="networksetup -setdnsservers Wi-Fi empty"
elif [ $(uname) == "Linux" ]
then
# View HTTP traffic
alias sniff="sudo ngrep -d $LOCAL_NET_IFACE -t '^(GET|POST) ' 'tcp and port 80'"
# ifactive on macOS shows only active interfaces, that's the default behavior on Linux
alias ifactive="ifconfig"
# Get local ip address
alias localip="ifconfig $LOCAL_NET_IFACE | grep 'inet addr' | cut -d ':' -f 2 | cut -d ' ' -f 1"
if which yum >/dev/null 2>&1
then
alias update='sudo yum update; npm install npm -g; npm update -g; sudo gem update --system; sudo gem update; sudo gem cleanup'
elif which apt-get >/dev/null 2>&1
then
alias update='sudo apt-get update ; sudo apt-get -u upgrade; npm install npm -g; npm update -g; sudo gem update --system; sudo gem update ; sudo gem cleanup'
fi
if which xsel >/dev/null 2>&1
then
alias pbcopy='xsel -i -b'
alias pbpaste='xsel -o -b'
elif which xclip >/dev/null 2>&1
then
alias pbcopy='xclip -selection clipboard -i'
alias pbpaste='xclip -selection clipboard -o'
fi
alias chrome='google-chrome'
fi
# Print each PATH entry on a separate line
alias path='echo -e ${PATH//:/\\n}'
# compatibility with older version of dotfiles, but we switched to ffsend (send.firefox.com)
alias transfer='ffsend upload --copy'
alias json='jq'
# generate password
alias pw='pwgen -cns -r "yzYZ" -B -1 16 1 | tee /dev/stderr | pbcopy'