-
Notifications
You must be signed in to change notification settings - Fork 0
/
bashrc
442 lines (364 loc) · 9.7 KB
/
bashrc
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
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
####################################################################################
#
# bashrc
#
# Author: Joao Pargana
#
# Requirements:
# - fzf
# - rg
# - sd
# - fd
# - ged
# - bat
# - exa
# - hub
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
# launch tmux only on graphical environment and check if no session is started
# if [[ $DISPLAY ]]; then
# if which tmux >/dev/null 2>&1; then
# test -z "$TMUX" && (tmux attach || tmux new-session)
# fi
# fi
# path
export GOPATH=$HOME/go
export PATH=$PATH:~/.cargo/bin # rust binaries
export PATH=$PATH:~/.local/bin # python binaries
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin # go binaries
export TERM="screen-256color"
#binds
bind '"\C-g":"cd_with_fzf\n"'
bind '"\C-o":"open_with_fzf\n"'
# ALIASES
# basic
alias fd=fdfind
alias diff='diff --color=auto'
alias dmesg="dmesg --color=always"
alias ip="ip -color=auto"
alias open="xdg-open"
alias ipa="ip addr show"
alias bat='bat --color=always --theme="OneHalfLight" --style=numbers'
# alias vim="nvim"
alias v="nvim"
alias vi="nvim"
alias vim="nvim"
# use colorful versions of cmd utilities if available
if type exa > /dev/null 2>&1; then
alias ls="exa"
else
alias ls="ls --color"
fi
alias grep="grep --color=auto"
# if type rg > /dev/null 2>&1; then
# alias grep="rg"
# else
# alias grep="grep --color=auto"
# fi
if type bat > /dev/null 2>&1; then
alias cat="bat"
fi
if type hub > /dev/null 2>&1; then
alias git="hub"
fi
# editing
alias vb='vim ~/.bashrc'
alias sb="source ~/.bashrc"
alias vf="vim ~/.config/fish/config.fish"
alias sf="source ~/.config/fish/config.fish"
alias va="vim ~/.config/alacritty/alacritty.yml"
alias sv="sudo vim"
alias vv="vim ~/.vimrc"
alias vz="vim ~/.zshrc"
alias sz="source ~/.zshrc"
# navigation -> up() function is also very powerful
alias ..="cd .."
alias ...="cd ../.."
alias ....="cd ../../.."
alias ll="ls -l"
alias lo="ls -o"
alias lh="ls -lh"
alias la="ls -a"
# ARCH
alias pac="sudo pacman -S"
alias pacr="sudo pacman -R"
alias ya="yay -S"
alias upt="yay -Syu --devel --timeupdate"
alias sss="sudo systemctl start"
alias sse="sudo systemctl enable"
alias ssr="sudo systemctl restart"
alias ssd="sudo systemctl disable"
alias ssst="sudo systemctl stop"
# WINDOW MANAGERS
alias i3c="vim ~/.config/i3/config"
alias obc="vim ~/.config/openbox/rc.xml"
# MOTIONS
alias gh="cd ~"
alias gp="cd ~/Documents/Personal"
alias gP="cd ~/Documents/ProgrammingLanguages"
alias gu="cd ~/Documents/Uni"
alias gt="cd ~/Documents/Testing"
alias gw="cd ~/Documents/Work"
alias gD="cd ~/Downloads"
alias gL="cd ~/Documents/Languages"
alias gba="cd ~/Documents/Bachelor/Bachelorarbeit"
alias gk="cd ~/.KaliLinux"
# PROGRAMMING
# rust
alias cr="cargo run"
alias ci="cargo init"
alias ct="cargo test"
alias cn="cargo new"
alias cdo="cargo doc --open"
alias cf="cargo fmt"
alias cws="cargo web start"
alias cn="cargo_new"
alias cnl="cargo_new_lib"
# python
alias py="python"
alias prp="pipenv run python"
alias pis="pipenv shell"
alias ppi="pipenv install"
alias pid="pipenv install --dev"
alias ppp="pipenv --python python"
alias b="black"
# git
alias gaa="git add ."
alias gcm="git commit -m"
alias gpu="git push -u origin HEAD"
alias gs="git status"
alias gc="git commit"
alias gb="git branch"
alias gck="git checkout"
# js
alias ys="yarn start"
alias nt="npm test"
alias nps="npm start"
alias ni="npm i -S"
alias yc="yarn compile"
alias yb="yarn build"
alias yt="yarn test"
alias ytu="yarn test:unit"
# heroku
alias gph="git push heroku master"
alias hlt="heroku logs -t"
alias hcp="heroku container:push web"
alias hcr="heroku container:release"
# docker
alias dr="docker run"
alias drir="docker run -it --rm"
alias drm="docker rm"
alias drmv="docker rm -v"
alias dcr="docker create"
alias de="docker exec"
alias dps="docker ps"
alias dpsa="docker ps -a"
alias di="docker images"
alias ds="docker search"
alias dp="docker pull"
# go
alias gb="go build"
alias gr="go run"
alias gf="go fmt"
alias gd="go doc"
alias gi="go install"
# arch
# ssh toggler
alias sssh="sudo systemctl start sshd.service"
alias stssh="sudo systemctl stop sshd.service"
# kali
alias kali="docker run -ti --rm \
-v type=bindsrc=/home/icm/.KaliLinux/Pentest/root,dst=/root \
-v type=bindsrc=/home/icm/.KaliLinux/Pentest/postgresqldst=/var/lib/postgresql \
kali \
bash"
# EXTRAS
alias n="neofetch"
alias s="sensors"
alias nv="nvidia-smi"
alias p="ping 8.8.8.8 -c 3"
alias ns="nordvpn status"
alias nus="nordvpn c us"
alias rmd="rm -d"
alias rmf="rm -rf"
alias cx="chmod +x"
alias sa="systemd-analyze"
alias sab="systemd-analyze blame"
export EDITOR=vim
export VISUAL=vim
# Colors
COLOR_NC='\e[0m' # No Color
COLOR_WHITE='\e[1;37m'
COLOR_BLACK='\e[0;30m'
COLOR_BLUE='\e[0;34m'
COLOR_LIGHT_BLUE='\e[1;34m'
COLOR_GREEN='\e[0;32m'
COLOR_LIGHT_GREEN='\e[1;32m'
COLOR_CYAN='\e[0;36m'
COLOR_LIGHT_CYAN='\e[1;36m'
COLOR_RED='\e[0;31m'
COLOR_LIGHT_RED='\e[1;31m'
COLOR_PURPLE='\e[0;35m'
COLOR_LIGHT_PURPLE='\e[1;35m'
COLOR_BROWN='\e[0;33m'
COLOR_YELLOW='\e[1;33m'
COLOR_GRAY='\e[0;30m'
COLOR_LIGHT_GRAY='\e[0;37m'
# ENV
PS1='\['"$COLOR_LIGHT_CYAN"'\]\u@\['"$COLOR_LIGHT_CYAN"'\]\h \['"$COLOR_LIGHT_RED"'\]\W\[\e[0m\]\$ '
PS2='> '
# LESS COLORS
export LESS=-R
export LESS_TERMCAP_mb=$'\E[1;31m'
export LESS_TERMCAP_md=$'\E[1;36m'
export LESS_TERMCAP_me=$'\E[0m'
export LESS_TERMCAP_so=$'\E[01;44;33m'
export LESS_TERMCAP_se=$'\E[0m'
export LESS_TERMCAP_us=$'\E[1;32m'
export LESS_TERMCAP_ue=$'\E[0m'
export FZF_DEFAULT_COMMAND="rg --files"
# include .files when globbing
shopt -s dotglob
# fix spelling errors for cd
shopt -s cdspell
bind "set completion-ignore-case on" # note: bind used instead of sticking these in .inputrc
bind "set bell-style none" # no bell
mkcd() {
if [ ! -n "$1" ]; then
echo "Enter a directory name"
elif [ -d $1 ]; then
echo "$1"' already exists'
else
mkdir -p $1 && cd $1
fi
}
# quick backup
bu () { cp $1 ~/.backup/`basename $1`-`date +%Y%m%d%H%M`.backup ; }
# change builtin cd to list directories after being called
cd() {
if [ -n "$1" ]; then
builtin cd "$@" && ls --group-directories-first
else
builtin cd ~ && ls --group-directories-first
fi
}
# beautiful script to extract files according to format
extract () {
if [ -f $1 ] ; then
case $1 in
*.tar.bz2) tar xvjf $1 ;;
*.tar.gz) tar xvzf $1 ;;
*.bz2) bunzip2 $1 ;;
*.rar) unrar x $1 ;;
*.gz) gunzip $1 ;;
*.tar) tar xvf $1 ;;
*.tbz2) tar xvjf $1 ;;
*.tgz) tar xvzf $1 ;;
*.zip) unzip $1 ;;
*.Z) uncompress $1 ;;
*.7z) 7z x $1 ;;
*) echo "don't know how to extract '$1'..." ;;
esac
else
echo "'$1' is not a valid file!"
fi
}
# go up n directories instead of ../../..
up(){
local d=""
limit=$1
for ((i=1 ; i <= limit ; i++)) do
d=$d/..
done
d=$(echo $d | sed 's/^\///')
if [ -z "$d" ]; then
d=..
fi
cd $d
}
# ripgrep fzf
rgf() {
RG_PREFIX="rg --files-with-matches"
}
# print given column from pipeline
fawk() {
first="awk '{print "
last="}'"
cmd="${first}\$${1}${last}"
eval $cmd
}
# alias for sudo or sudo last command
s() {
if [[ $# == 0 ]]; then
sudo $(history -p '!!')
else
sudo "$@"
fi
}
# great navigation with fzf
cd_with_fzf() {
builtin cd $HOME && cd "$(fd -I -t d | fzf --preview="tree -L 2 {}")"
}
# no need to ranger with this
open_with_fzf() {
fd -t f -H -I | fzf -m --preview='bat --color=always --theme="OneHalfLight" --style=numbers --line-range :500 {}' | xargs -ro -d "\n" xdg-open 2>&-
}
# pacman search and install
pacs() {
sudo pacman -S $(pacman -Ssq | fzf -m --preview="pacman -Si {}" | xargs)
}
cargo_new() {
if [ ! -n "$1" ]; then
"Enter a project name"
elif [ -d $1 ]; then
echo "$1"' already exists'
else
cargo new $1 && cd $1
fi
}
cargo_new_lib() {
if [ ! -n "$1" ]; then
"Enter a project name"
elif [ -d $1 ]; then
echo "$1"' already exists'
else
cargo new --lib $1 && cd $1
fi
}
kp() {
local pid=$(ps -ef | sed 1d | eval "fzf -m --header='[kill:process]'" | awk '{print $2}')
if [ "x$pid" != "x" ]; then
echo $pid | xargs kill -$(1:-9)
fi
}
# rga (ripgrep-all) uses grep in all types of files pdf, ebooks, zip, odt, etc.
# this function redirects the output to fzf
# rga-fzf() {
# RG_PREFIX="rga --files-with-matches"
# local file
# file="$(
# FZF_DEFAULT_COMMAND="$RG_PREFIX '$1'" \
# fzf --sort --preview="[[ ! -z {} ]] && rga --pretty --context 5 {q} {}" \
# --phony -q "$1" \
# --bind "change:reload:$RG_PREFIX {q}" \
# --preview-window="70%:wrap"
# )" &&
# echo "opening $file" &&
# xdg-open "$file"
# }
# FZF config
source /usr/share/doc/fzf/examples/key-bindings.bash
source /usr/share/doc/fzf/examples/completion.bash
[ -f ~/.fzf.bash ] && source ~/.fzf.bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
[ -f ~/.fzf.bash ] && source ~/.fzf.bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
source "$HOME/.cargo/env"
export PATH=/home/icm/.bin:$PATH
[[ -e "/home/icm/.lib/orecle-cli/lib/python3.8/site-packages/oci_cli/bin/oci_autocomplete.sh" ]] && source "/home/icm/.lib/orecle-cli/lib/python3.8/site-packages/oci_cli/bin/oci_autocomplete.sh"
export C=ocid1.tenancy.oc1..aaaaaaaag646tppsnid2yhrn4nsz4fbixh6dmbpxpjih4jojfud5f4tsumzq
export KUBECONFIG=$HOME/.kube/config