-
Notifications
You must be signed in to change notification settings - Fork 1
/
.shrc
275 lines (234 loc) · 6.46 KB
/
.shrc
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
# vim: ft=bash
# shellcheck shell=bash
export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
NIXPKGS_ALLOW_UNFREE=1
export NIXPKGS_ALLOW_UNFREE
NIX_PATH="$HOME/.nix-defexpr/channels"
export NIX_PATH
# systemd variables
export SYSTEMD_PAGER=less
export PAGER=less
# Make python poetry work
export PYTHON_KEYRING_BACKEND=keyring.backends.null.Keyring
case "$-" in
*i*)
# execute the rest in interactive mode
;;
*)
return
;;
esac
# Autocompletion options
set show-all-if-ambiguous on
set show-all-if-unmodified on
set completion-ignore-case on
# Set vim mode
set -o vi
set editing-mode vi
set show-mode-in-prompt on
set vi-ins-mode-string +
set vi-cmd-mode-string :
# Remove note about using sudo
test -f ~/.sudo_as_admin_successful || touch ~/.sudo_as_admin_successful
# Ignore duplicates in .bash_history
export HISTCONTROL=ignoredups 2>/dev/null
# The maximum number of lines contained in the history file.
export HISTSIZE=99999 2>/dev/null
export HISTFILESIZE=99999 2>/dev/null
# Controls output of `history` command end enables time logging in .bash_history
export HISTTIMEFORMAT="%a, %d %b %Y %T %z " 2>/dev/null
function hs {
grep -a "$*" "${HISTFILE}"
}
# Disable auto prompt for virtualenv
export VIRTUAL_ENV_DISABLE_PROMPT=yes
case $(uname) in
FreeBSD)
export MD5SUM='md5'
export STAT_TIME='stat -f%m'
export LS_OPTIONS='-G'
if command -v dircolors >/dev/null 2>&1
then
eval "$(dircolors)"
fi
;;
Linux)
export MD5SUM='md5sum'
export STAT_TIME='stat -c%Z'
export LS_OPTIONS='--color=auto'
# shellcheck disable=SC2262
alias grep='grep --color=auto'
alias chown='chown --preserve-root'
alias chmod='chmod --preserve-root'
alias chgrp='chgrp --preserve-root'
;;
*)
export MD5SUM='md5sum'
export STAT_TIME='stat -c%Z'
;;
esac
# Aliases
# http://askubuntu.com/questions/22037/aliases-not-available-when-using-sudo
alias sudo='sudo '
# shellcheck disable=SC2262
alias mkdir='mkdir -p -v'
alias ls='ls $LS_OPTIONS'
alias ll='ls -lA $LS_OPTIONS'
if which eza >/dev/null 2>&1
then
alias ls='eza $LS_OPTIONS'
alias ll='eza -lA $LS_OPTIONS'
else
alias ls='ls $LS_OPTIONS'
alias ll='ls -lA $LS_OPTIONS'
fi
if which nvim >/dev/null 2>&1
then
alias vi='nvim'
alias vim='nvim'
fi
alias debuild='debuild -i; debuild clean'
alias acp='apt-cache policy'
alias acs='apt-cache show'
alias agi='apt-get -V install'
alias sqlplus='rlwrap sqlplus'
alias str='strace -s 999999999 -f -tt -T -y'
alias ltr='ltrace -s 999999999 -f -tt -T -n 2'
alias sudoe='sudo -E -H'
alias git-sup='git submodule init && git submodule update && git submodule status'
csv_view() {
column -s, -t "$1" | less -#2 -N -S
}
# safety features
alias cp='cp -i'
alias mv='mv -i'
alias ln='ln -i'
# Less options
LESS=' '
LESS=${LESS}'--line-numbers --ignore-case --underline-special '
LESS=${LESS}'--RAW-CONTROL-CHARS --chop-long-lines'
export LESS
# some functions
function mkdircd {
mkdir "$1"
cd "$1" || true
}
# add -i or -I (for newer coreutils versions) option to /bin/rm command
rmtemp=$(mktemp)
if rm -I "$rmtemp" &>/dev/null; then
# shellcheck disable=SC2262
alias rm="rm -I"
else
alias rm="rm -i"
rm "$rmtemp";
fi
EDITOR=nvim
export EDITOR
# kube config
if [ "${KUBECONFIG/:*}" = "$HOME/.kube/config" ]
then
export KUBECONFIG=$HOME/.kube/config
for file in "$HOME/.kube/configs"/*.yaml; do
export KUBECONFIG=$KUBECONFIG:$file
done
export KUBE_FUZZY_PREVIEW_ENABLED=true
fi
alias kubie="BASHRC_ALREADY_EXECUTED= ZSHRC_ALREADY_EXECUTED= kubie"
# Non-interactive static and idempotent configs
path_push_left() {
if [ -d "$1" ] && [[ ":$PATH:" != *":$1:"* ]]; then
path="$1:${PATH:+"$PATH"}"
export PATH=${path}
fi
}
path_push_right() {
if [ -d "$1" ] && [[ ":$PATH:" != *":$1:"* ]]; then
path="${PATH:+"$PATH"}:$1"
export PATH=${path}
fi
}
path_push_right /bin
path_push_right /sbin
path_push_right /usr/local/sbin
path_push_right /usr/local/bin
path_push_right /usr/sbin
path_push_right /usr/bin
path_push_right /sbin
path_push_right /bin
path_push_right /usr/games
path_push_right /usr/local/games
# Create systemd aliases
which systemctl >/dev/null 2>&1 && alias sctl='sudo systemctl'
which journalctl >/dev/null 2>&1 && alias jctl='sudo journalctl'
plz_path() {
FILE=$1
SHORTEST=100000
SHORTEST_PATH=""
BASE_DIR="${PLZ_BASE_DIR}"
BASE_DIR_LEN=${#BASE_DIR}
# Prune the base dir from the path if absolute
if [[ "${FILE}" == "${BASE_DIR}"* ]]
then
B=${FILE:BASE_DIR_LEN}
else
B=${FILE}
fi;
for path in $(plz query changes "$B" --include_dependees=transitive | grep -v ":_")
do
AC_PATH=$(echo "$path" | tr : /)
RELATIVE_PATH=$(realpath --relative-to="$BASE_DIR$B" "$BASE_DIR$AC_PATH")
LENGTH=$(echo "$RELATIVE_PATH" | grep -o "../" | wc -l)
if (( SHORTEST > LENGTH ));
then
SHORTEST=$LENGTH
SHORTEST_PATH=$path
fi;
done
echo "${SHORTEST_PATH}"
}
plz_build() {
path=$(plz_path "$1")
plz build "${path}"
}
plz_test() {
path=$(plz_path "$1")
plz test "${path}" "$2"
}
# shellcheck source=/dev/null
which plz >/dev/null 2>&1 && source <(plz --completion_script)
if [ "${GOPATH}" = "" ]
then
[ -d "${HOME}/go" ] && export GOPATH="${HOME}/go"
fi
if [ "${GOBIN}" = "" ]
then
[ -d "${HOME}/go/bin" ] && export GOBIN="${HOME}/go/bin"
fi
path_push_left "${GOBIN}"
[ -d "${KREW_ROOT:-$HOME/.krew}/bin" ] && path_push_left "${KREW_ROOT:-$HOME/.krew}/bin"
if which fd >/dev/null 2>&1
then
export FZF_DEFAULT_COMMAND="fd --type f --strip-cwd-prefix"
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
fi
FZF_BASE="$(which fzf)"
export FZF_BASE
funsay() {
if command -v ponysay >/dev/null 2>&1 && \
command -v fortune >/dev/null 2>&1 && \
command -v fmt >/dev/null 2>&1 && \
command -v shuf >/dev/null 2>&1
then
fortune -a | fmt -80 -s | ponysay -F 2>/dev/null
elif command -v cowsay >/dev/null 2>&1 && \
command -v fortune >/dev/null 2>&1 && \
command -v fmt >/dev/null 2>&1 && \
command -v shuf >/dev/null 2>&1
then
# shellcheck disable=SC2046
FORTUNE=$(fortune -a | fmt -80 -s | cowsay -"$(shuf -n 1 -e b d g p s t w y)" -f "$(shuf -n 1 -e $(cowsay -l | tail -n +2))" -n)
echo -e "\e[1;36m$FORTUNE"
fi
}