-
Notifications
You must be signed in to change notification settings - Fork 0
/
.bashrc
155 lines (125 loc) · 4.51 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
#!/bin/bash
################################################################################
# Shell Options
################################################################################
shopt -s histappend
shopt -s checkwinsize
shopt -s expand_aliases
################################################################################
# Environment Variables
################################################################################
export LANG="en_US.UTF-8"
export TERM="rxvt-unicode-256color"
export VISUAL="/usr/bin/vim -p -X"
export EDITOR="/usr/bin/vim"
export BROWSER="brave"
export HISTSIZE=5000
export HISTFILESIZE=10000
export HISTCONTROL=ignoreboth
export HISTIGNORE="pwd:clear"
export HISTTIMEFORMAT="| %d/%m/%Y %T | "
################################################################################
# Aliases
################################################################################
# Default
alias vi="vim -b"
alias vim="vim -b"
alias ls="ls --color=auto"
alias ll="ls -hails --color=auto"
alias grep="grep --color=auto --binary-files=without-match --devices=skip"
alias tree="tree -C --dirsfirst"
alias wan="dig +short myip.opendns.com @resolver1.opendns.com"
# Archlinux
alias pacman="sudo pacman --color auto"
alias yay="yay --color auto"
# Other
alias ip="ip -c"
alias docker="sudo docker"
################################################################################
# Colors
################################################################################
export W=$'\e[0m' # White
export R=$'\e[91m' # Red
export G=$'\e[92m' # Green
export B=$'\e[96m' # Blue
export Y=$'\e[93m' # Yellow
export P=$'\e[95m' # Purple
################################################################################
# Cloud / Kubernetes
################################################################################
# Aliases and autocomplete
# shellcheck disable=SC1090
[[ $(type kubectl) ]] && source <(kubectl completion bash)
alias k="kubectl"
complete -F __start_kubectl k
# Aliases to get & update the current context
alias kl="kubectl config get-contexts"
alias kc="kubectl config set current-context"
# Switch namespace for the current context
kns()
{
kubectl config set-context --current --namespace="${1}"
}
# Terraform
complete -C /usr/bin/terraform terraform
# AWS CLI
# shellcheck disable=SC1090
[[ $(type aws) ]] && complete -C /usr/bin/aws_completer aws
################################################################################
# Functions
################################################################################
# Molokai colors for man
man()
{
env LESS_TERMCAP_mb="$(printf "\e[38;5;202m")" \
LESS_TERMCAP_md="$(printf "\e[38;5;202m")" \
LESS_TERMCAP_me="$(printf "\e[0m")" \
LESS_TERMCAP_se="$(printf "\e[0m")" \
LESS_TERMCAP_so="$(printf "\e[48;5;82m\e[38;5;0m")" \
LESS_TERMCAP_ue="$(printf "\e[0m")" \
LESS_TERMCAP_us="$(printf "\e[38;5;82m")" \
man "$@"
}
# SSH to given host in a new TMUX tab
tab()
{
# $1 = user@host
# $2 = ssh port (default: 22)
[[ -n $2 ]] && port=$2 || port=22
name=$(echo "$1" | sed -e 's/.*@//' -e 's/\(.*\)/\U\1/')
tmux new-window -n "${name}" "ssh $1 -A -p ${port} -t 'TERM=xterm ; bash'"
}
################################################################################
# Prompt
################################################################################
WHITE=$(echo -e "\[\e[38;5;7m\]")
BLUE=$(echo -e "\[\e[38;5;45m\]")
GREEN=$(echo -e "\[\e[38;5;46m\]")
RED=$(echo -e "\[\e[38;5;204m\]")
# Display the current git branch
__git_ps1()
{
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
# Print return code if not 0
__prompt_command()
{
EXIT=$?
[[ ${EXIT} != 0 ]] && echo -e "${R}[ Return code : ${EXIT} ]${W}"
}
export PS1="${RED}\u${WHITE}@${GREEN}\h ${WHITE}\W${BLUE}\$(__git_ps1) $ ${WHITE}"
export PS2="${BLUE}>${WHITE} "
export PS4="${BLUE}Line ${LINENO} >${WHITE} "
export PROMPT_COMMAND=__prompt_command
################################################################################
# Automatic actions
################################################################################
# Start tmux automatically
if [[ ! "${TMUX_PANE}" && "${TERM_PROGRAM}" != "vscode" ]] ; then
tmux new-session -n LAPTOP
fi
################################################################################
# Source extra bash configuration
################################################################################
# shellcheck disable=SC1090,SC2015
[[ -f ~/.bashrc_extra ]] && . ~/.bashrc_extra || true