-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbashrc.sh
More file actions
288 lines (235 loc) · 6.71 KB
/
bashrc.sh
File metadata and controls
288 lines (235 loc) · 6.71 KB
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
282
283
284
285
286
287
#!/usr/bin/env bash
# Setup: {{{1 ================================================================
export TERM_PLATFORM=$(uname)
if [[ "$TERM_PLATFORM" == 'Linux' ]]; then
TERM_PLATFORM='linux'
elif [[ "$TERM_PLATFORM" == 'Darwin' ]]; then
TERM_PLATFORM='osx'
elif [[ "$TERM_PLATFORM" == 'MINGW64*' ]]; then
TERM_PLATFORM='cygwin'
else
TERM_PLATFORM='unknown'
fi
# Options: {{{1 ==============================================================
shopt -s cdspell # Correct minor cd spelling errors
shopt -s dotglob # Allow dot files to be returned in path expansion
shopt -s checkwinsize # Check size after each command
set -o vi # Make the prompt like vi
if [[ $- == *i* ]]
then
stty ixoff -ixon # Don't let CTRL S/Q work
fi
# Environment: {{{1 ==========================================================
export EDITOR=vim
export VISUAL=vim
export IGNOREEOF=1 # press ctrl+D twice to exit
export PROMPT_COMMAND=bash_prompt # Set up the command line
export GREP_OPTIONS="--exclude=\*.svn\*"
export HISTCONTROL=ignoreboth
if [[ "$TERM_PLATFORM" == "linux" ]]; then
#export TERM="xterm-256color"
export LOAD_CMD="cut -d ' ' -f 1-3 /proc/loadavg"
elif [[ "$TERM_PLATFORM" == "osx" ]]; then
export LOAD_CMD="uptime | cut -d ' ' -f 10-"
fi
if [[ $TERM_PLATFORM == 'osx' ]]; then
export HOMEBREW_NO_ANALYTICS=1
fi
# Aliases: {{{1 ==============================================================
# ls Commands
if [[ $TERM_PLATFORM == 'linux' ]]; then
alias ls='ls --color=auto'
elif [[ $TERM_PLATFORM == 'osx' ]]; then
alias ls='ls -G'
fi
alias lt='ls -ltr'
alias lta='ls -ltrA'
alias ll='ls -l'
alias lla='ls -lA'
# Navigation
alias up="cd ..; "
alias ..="cd ..; "
# Program shortcuts
alias vi=vim
alias l="less"
# Other Commands
alias psme='ps -Af | grep ${USER}'
alias dfme='df -h | egrep "${USER}|Filesystem"'
alias xterm='xterm -ls'
alias ipy='ipython -colors Linux'
alias grep='grep --color=auto'
alias ack='ack --color --color-match=red --color-filename=green --color-lineno=blue'
alias ag='ag --color --color-match=31 --color-path=32 --color-line-number=34'
# Functions: {{{1 ============================================================
function bash_prompt() {
local NONE="\[\033[0m\]"
local K="\[\033[0;30m\]" # black
local R="\[\033[0;31m\]" # red
local G="\[\033[0;32m\]" # green
local Y="\[\033[0;33m\]" # yellow
local B="\[\033[0;34m\]" # blue
local M="\[\033[0;35m\]" # magenta
local C="\[\033[0;36m\]" # cyan
local W="\[\033[0;37m\]" # white
# background colors
local BGK="\[\033[40m\]" # black
local BGR="\[\033[41m\]" # red
local BGG="\[\033[42m\]" # green
local BGY="\[\033[43m\]" # yellow
local BGB="\[\033[44m\]" # blue
local BGM="\[\033[45m\]" # magenta
local BGC="\[\033[46m\]" # cyan
local BGW="\[\033[47m\]" # white
if [ "${SHELL_TAG}" ]; then
PS1="\n${NONE}[${NONE}${Y}${SHELL_TAG}${NONE}${NONE}]${NONE} "
PS1="${PS1}${NONE}[${NONE}${C}\u@\h${NONE}${NONE}]${NONE} "
PS1="${PS1}${G}${PWD}${NONE}\n> "
else
PS1="\n${NONE}[${NONE}${C}${USER}@${HOSTNAME}${NONE}${NONE}]${NONE} ${G}${PWD}${NONE}\n> "
fi
}
function set_title {
echo -ne "\033]0;$@\007"
}
function dirdiff {
vim -c "DirDiff $1 $2"
}
function lscolors {
local header="no:global default;fi:normal file;di:directory;"
header="${header}ln:symbolic link;pi:named pipe;so:socket;"
header="${header}do:door;bd:block device;cd:character device;"
header="${header}or:orphan symlink;mi:missing file;su:set uid;"
header="${header}sg:set gid;tw:sticky other writable;"
header="${header}ow:other writable;st:sticky;ex:executable;"
eval $(echo ${header}|sed -e 's/:/="/g; s/\;/"\n/g')
{
IFS=:
for i in $LS_COLORS
do
echo -e "\e[${i#*=}m$( x=${i%=*}; [ "${!x}" ] && echo \
"${!x}" || echo "$x" )\e[m"
done
}
}
function print_colors() {
T='gYw' # The test text
echo -e "\n 40m 41m 42m 43m\
44m 45m 46m 47m";
for FGs in ' m' ' 1m' ' 30m' '1;30m' ' 31m' '1;31m'\
' 32m' '1;32m' ' 33m' '1;33m' ' 34m' '1;34m'\
' 35m' '1;35m' ' 36m' '1;36m' ' 37m' '1;37m';
do FG=${FGs// /}
echo -en " $FGs \033[$FG $T "
for BG in 40m 41m 42m 43m 44m 45m 46m 47m;
do echo -en "$EINS \033[$FG\033[$BG $T \033[0m";
done
echo;
done
echo
}
function tmux_compress {
tmux lsw |
awk -F: '/^[0-9]+/ { if ($1 != ++i) print "tmux move-window -s " $1 " -t " i }' |
sh
}
function tmuxn {
tmux new -s "$1"
}
function tmux_attach {
tmux attach -t "$1"
}
alias ta=tmux_attach
declare -A projects
projects["clear"]="unset SHELL_TAG"
function _proj() {
local cur=${COMP_WORDS[COMP_CWORD]}
local choices=${!projects[@]}
COMPREPLY=( $(compgen -W "${choices/clear/}" -- $cur) )
}
function proj() {
if [[ ${projects[$1]} ]]
then
eval ${projects[$1]}
else
echo "No project named '$1'."
fi
}
complete -F _proj proj
declare -A directories
function _chd() {
local cur=${COMP_WORDS[COMP_CWORD]}
local choices=${!directories[@]}
COMPREPLY=( $(compgen -W "${choices}" -- $cur) )
}
function chd() {
if [[ ${directories[$1]} ]]
then
eval ${directories[$1]}
else
echo "No directory shortcut named '$1'."
fi
}
complete -F _chd chd
function add_dir_to_variable() {
varname=$1
eval argvar=\$$varname
#dir=${2%/}
dir=$2
if [[ -z "$argvar" ]]
then
eval export $varname=$dir
return
fi
if [[ ":$argvar:" != *":$dir:"* ]]
then
if [[ -n "$3" ]] && [[ "$3" == "1" ]]
then
eval export $varname=$dir:\$$varname
else
eval export $varname=\$$varname:$dir
fi
fi
}
function add_to_path() {
for var in $@
do
add_dir_to_variable "PATH" $var
done
}
function prepend_to_path() {
for var in $@
do
add_dir_to_variable "PATH" $var 1
done
}
function add_to_ld_library_path() {
for var in $@
do
add_dir_to_variable "LD_LIBRARY_PATH" $var
done
}
function prepend_to_ld_library_path() {
for var in $@
do
add_dir_to_variable "LD_LIBRARY_PATH" $var 1
done
}
function add_to_python_path() {
for var in $@
do
add_dir_to_variable "PYTHON_PATH" $var
done
}
function prepend_to_python_path() {
for var in $@
do
add_dir_to_variable "PYTHON_PATH" $var 1
done
}
function vimdocx() {
pandoc -f docx -t markdown $1 | vim -
}
# Local: {{{1 ================================================================
if [ -f ~/.bashrc.local ]; then
source ~/.bashrc.local
fi