194 lines
6.7 KiB
Bash
194 lines
6.7 KiB
Bash
#!/bin/bash
|
|
#==============================================================#
|
|
# Environment
|
|
export EDITOR="vi"
|
|
export PAGER="less"
|
|
#--------------------------------------------------------------#
|
|
# if bash is used, set shopt and prompt
|
|
if [ -n "$BASH_VERSION" ]; then
|
|
shopt -s nocaseglob # case-insensitive globbing
|
|
shopt -s cdspell # auto-correct typos in cd
|
|
set -o pipefail # pipe fail when component fail
|
|
shopt -s histappend # append to history rather than overwrite
|
|
for option in autocd globstar; do
|
|
shopt -s "$option" 2>/dev/null
|
|
done
|
|
export PS1="\[\033]0;\w\007\]\[\]\n\[\e[1;36m\][\D{%m-%d %T}] \[\e[1;31m\]\u\[\e[1;33m\]@\H\[\e[1;32m\]:\w \n\[\e[1;35m\]\$ \[\e[0m\]"
|
|
fi
|
|
#--------------------------------------------------------------#
|
|
# Bash settings
|
|
export MANPAGER="less -X"
|
|
export HISTSIZE=65535
|
|
export HISTFILESIZE=$HISTSIZE
|
|
export HISTCONTROL=ignoredups
|
|
export HISTIGNORE="l:ls:cd:cd -:pwd:exit:date:* --help"
|
|
#--------------------------------------------------------------#
|
|
# Path dedupe
|
|
if [ -n "$PATH" ]; then
|
|
old_PATH=$PATH:
|
|
PATH=
|
|
while [ -n "$old_PATH" ]; do
|
|
x=${old_PATH%%:*}
|
|
case $PATH: in
|
|
*:"$x":*) ;;
|
|
*) PATH=$PATH:$x ;;
|
|
esac
|
|
old_PATH=${old_PATH#*:}
|
|
done
|
|
PATH=${PATH#:}
|
|
unset old_PATH x
|
|
fi
|
|
#--------------------------------------------------------------#
|
|
# aliases & functions
|
|
alias c="clear"
|
|
alias p="pig"
|
|
alias pp="psql"
|
|
alias q="exit"
|
|
alias j="jobs"
|
|
alias k="kubectl"
|
|
alias h="history"
|
|
alias m="mcli"
|
|
alias mc="mcli"
|
|
alias d="docker"
|
|
alias dc="docker compose"
|
|
alias x="claude"
|
|
alias xx="IS_SANDBOX=1 claude --dangerously-skip-permissions"
|
|
alias oc="opencode"
|
|
alias gc='git checkout'
|
|
alias gst="git status"
|
|
alias gci="git commit"
|
|
alias gpm='git push origin main'
|
|
function v() {
|
|
[ $# -eq 0 ] && vi . || vi $@
|
|
}
|
|
alias hg="history | grep --color=auto "
|
|
alias py="python3"
|
|
alias cl="clear"
|
|
alias clc="clear"
|
|
alias rf="rm -rf"
|
|
alias ax="chmod a+x"
|
|
alias sd="sudo su - dba"
|
|
alias sa="sudo su - root"
|
|
alias sp="sudo su - postgres"
|
|
alias adm="sudo su - admin"
|
|
alias vl="sudo cat /var/log/messages"
|
|
alias ntps="sudo chronyc -a makestep"
|
|
alias node-mt="curl -sL localhost:9100/metrics | grep -v '#' | grep node_"
|
|
alias vec-mt="curl -sL localhost:9598/metrics | grep -v '#' | grep vector_"
|
|
#--------------------------------------------------------------#
|
|
# ls corlor
|
|
[ ls --color ] >/dev/null 2>&1 && colorflag="--color" || colorflag="-G"
|
|
[ "${TERM}" != "dumb" ] && export LS_COLORS='no=00:fi=00:di=01;34: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:'
|
|
alias sl=ls
|
|
alias ll="ls -lh ${colorflag}"
|
|
alias l="ls -lh ${colorflag}"
|
|
alias la="ls -lha ${colorflag}"
|
|
alias lsa="ls -a ${colorflag}"
|
|
alias ls="command ls ${colorflag}"
|
|
alias lsd="ls -lh ${colorflag} | grep --color=never '^d'" # List only directories
|
|
alias ~="cd ~"
|
|
alias ..="cd .."
|
|
alias cd..="cd .."
|
|
alias ...="cd ../.."
|
|
alias cd...="cd ../.."
|
|
alias ....="cd ../../.."
|
|
alias .....="cd ../../../.."
|
|
alias grep="grep --color=auto"
|
|
alias fgrep="fgrep --color=auto"
|
|
alias egrep="egrep --color=auto"
|
|
alias now='date +"DATE: %Y-%m-%d TIME: %H:%M:%S EPOCH: %s"'
|
|
alias today='date +"%Y%m%d "'
|
|
alias suod='sudo '
|
|
alias map="xargs -n1"
|
|
alias yaml2json='python -c "import yaml,json,sys; json.dump(yaml.safe_load(sys.stdin.read()), sys.stdout, indent=4)"'
|
|
alias json2yaml='python -c "import yaml,json,sys; yaml.safe_dump(json.load(sys.stdin), sys.stdout, indent=4)"'
|
|
alias urlenc='python -c "import sys, urllib as ul; print(ul.quote(sys.argv[1]));"'
|
|
alias urldec='python -c "import sys, urllib as ul; print(ul.unquote(sys.argv[1]));"'
|
|
alias b64enc='python -c "import sys,base64 as b;print(b.b64encode(sys.argv[1]));"'
|
|
alias b64dec='python -c "import sys,base64 as b;print(b.b64decode(sys.argv[1]));"'
|
|
#--------------------------------------------------------------#
|
|
# utils
|
|
function tz() {
|
|
if [ -t 0 ]; then # argument
|
|
tar -zcf "$1.tar.gz" "$@"
|
|
else # pipe
|
|
gzip
|
|
fi
|
|
}
|
|
function tx() {
|
|
if [ -t 0 ]; then # argument
|
|
tar -xf $@
|
|
else # pipe
|
|
tar -x -
|
|
fi
|
|
}
|
|
# log & color util
|
|
__CN='\033[0m' # no color
|
|
__CB='\033[0;30m' # black
|
|
__CR='\033[0;31m' # red
|
|
__CG='\033[0;32m' # green
|
|
__CY='\033[0;33m' # yellow
|
|
__CB='\033[0;34m' # blue
|
|
__CM='\033[0;35m' # magenta
|
|
__CC='\033[0;36m' # cyan
|
|
__CW='\033[0;37m' # white
|
|
function log_info() { printf "[${__CG} OK ${__CN}] ${__CG}$*${__CN}\n"; }
|
|
function log_warn() { printf "[${__CY}WARN${__CN}] ${__CY}$*${__CN}\n"; }
|
|
function log_error() { printf "[${__CR}FAIL${__CN}] ${__CR}$*${__CN}\n"; }
|
|
function log_debug() { printf "[${__CB}HINT${__CN}] ${__CB}$*${__CN}\n"; }
|
|
function log_input() { printf "[${__CM} IN ${__CN}] ${__CM}$*\n=> ${__CN}"; }
|
|
function log_hint() { printf "${__CB}$*${__CN}"; }
|
|
#--------------------------------------------------------------#
|
|
# systemctl
|
|
alias s="systemctl"
|
|
alias st="sudo systemctl status "
|
|
alias sr="sudo systemctl restart "
|
|
alias ssdr="sudo systemctl daemon-reload"
|
|
|
|
if [ -f /usr/share/bash-completion/completions/systemctl ] && ! type -f _alias_sr_completion &>/dev/null ; then
|
|
source /usr/share/bash-completion/completions/systemctl
|
|
|
|
complete -F _systemctl s
|
|
complete -F _alias_sr_completion sr
|
|
complete -F _alias_st_completion st
|
|
|
|
_alias_sr_completion() {
|
|
local cur compopt
|
|
_get_comp_words_by_ref -n : cur
|
|
comps=$( __get_restartable_units --system "$cur" )
|
|
compopt -o filenames
|
|
COMPREPLY=( $(compgen -o filenames -W '$comps' -- "$cur") )
|
|
return 0
|
|
}
|
|
|
|
_alias_st_completion() {
|
|
local cur compopt
|
|
_get_comp_words_by_ref -n : cur
|
|
comps=$( __get_non_template_units --system "$cur" )
|
|
compopt -o filenames
|
|
COMPREPLY=( $(compgen -o filenames -W '$comps' -- "$cur") )
|
|
return 0
|
|
}
|
|
fi
|
|
#--------------------------------------------------------------#
|
|
# journalctl
|
|
alias je="journalctl -xe"
|
|
alias ju="journalctl -u"
|
|
if [ -f /usr/share/bash-completion/completions/journalctl ] && ! type _alias_ju_completion &>/dev/null ; then
|
|
source /usr/share/bash-completion/completions/journalctl
|
|
_alias_ju_completion() {
|
|
local cur
|
|
_get_comp_words_by_ref -n : cur
|
|
comps=$(journalctl -F '_SYSTEMD_UNIT' 2>/dev/null)
|
|
if ! [[ $cur =~ '\\' ]]; then
|
|
cur="$(printf '%q' $cur)"
|
|
fi
|
|
compopt -o filenames
|
|
COMPREPLY=( $(compgen -o filenames -W '$comps' -- "$cur") )
|
|
return 0
|
|
}
|
|
complete -F _alias_ju_completion ju
|
|
fi
|
|
#==============================================================#
|
|
# vim:ts=2:sw=2
|