You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
338 lines
9.4 KiB
Bash
338 lines
9.4 KiB
Bash
#!/usr/bin/env bash
|
|
# shellcheck disable=SC2230,SC2139
|
|
# vim:ts=4:sts=4:sw=4:et
|
|
#
|
|
# Author: Hari Sekhon
|
|
# Date: circa 2006 (forked from .bashrc)
|
|
#
|
|
# https://github.com/harisekhon/bash-tools
|
|
#
|
|
# License: see accompanying Hari Sekhon LICENSE file
|
|
#
|
|
# If you're using my code you're welcome to connect with me on LinkedIn and optionally send me feedback to help steer this or other code I publish
|
|
#
|
|
# https://www.linkedin.com/in/harisekhon
|
|
#
|
|
|
|
# ============================================================================ #
|
|
# G e n e r a l A l i a s e s
|
|
# ============================================================================ #
|
|
|
|
bash_tools="${bash_tools:-$(dirname "${BASH_SOURCE[0]}")/..}"
|
|
|
|
# shellcheck disable=SC1090
|
|
. "$bash_tools/.bash.d/os_detection.sh"
|
|
|
|
# shellcheck disable=SC1090
|
|
#. "$bash_tools/.bash.d/paths.sh"
|
|
|
|
# manual local aliases
|
|
# shellcheck disable=SC1090
|
|
[ -f ~/.aliases ] && . ~/.aliases
|
|
|
|
# bash_tools defined in .bashrc
|
|
# shellcheck disable=SC2154
|
|
export bashrc=~/.bashrc
|
|
export bashrc2="$bash_tools/.bashrc"
|
|
alias reload='. $bashrc'
|
|
alias r='reload'
|
|
alias rq='set +x; . $bashrc; set -x'
|
|
alias bashrc='$EDITOR $bashrc && reload'
|
|
alias bashrc2='$EDITOR $bashrc2 && reload'
|
|
alias bashrclocal='$EDITOR $bashrc.local; reload'
|
|
alias bashrc3=bashrclocal
|
|
alias vimrc='$EDITOR $bash_tools/.vimrc'
|
|
alias screenrc='$EDITOR $bash_tools/.screenrc'
|
|
alias aliases='$EDITOR $bashd/aliases.sh'
|
|
alias ae=aliases
|
|
alias be=bashrc
|
|
alias be2=bashrc2
|
|
alias be3=bashrc3
|
|
alias ve=vimrc
|
|
alias se=screenrc
|
|
# keep emacs with no window, use terminal, not X, otherwise I'd run xemacs...
|
|
#alias emacs="emacs -nw"
|
|
#em(){ emacs "$@" ; }
|
|
#alias em=emacs
|
|
#alias e=em
|
|
#xe(){ xemacs $@ & }
|
|
#alias x=xe
|
|
|
|
# from DevOps-Perl-tools repo which must be in $PATH
|
|
# done via functions.sh now
|
|
#alias new=new.pl
|
|
|
|
# not present on Mac
|
|
#type tailf &>/dev/null || alias tailf="tail -f"
|
|
alias tailf="tail -f" # tail -f is better than tailf anyway
|
|
alias mv='mv -i'
|
|
alias cp='cp -i'
|
|
#alias rm='rm -i'
|
|
# allows to re-use custommized less behaviour throughout profile without duplicating options
|
|
#less='less -RFXig'
|
|
#alias less='$less'
|
|
export LESS="-RFXig --tabs=4"
|
|
# will require LESS="-R"
|
|
if type -P pygmentize &>/dev/null; then
|
|
# shellcheck disable=SC2016
|
|
export LESSOPEN='| "$bash_tools/pygmentize.sh" "%s"'
|
|
fi
|
|
alias l='less'
|
|
alias m='more'
|
|
alias vi='vim'
|
|
# used by vagrant now
|
|
#alias v='vim'
|
|
alias grep='grep --color=auto'
|
|
# in functions.sh for multiple args now
|
|
#alias envg="env | grep -i"
|
|
alias dec="decomment.sh"
|
|
|
|
alias hosts='sudo $EDITOR /etc/hosts'
|
|
|
|
alias path="echo \$PATH | tr ':' '\\n' | less"
|
|
alias paths=path
|
|
|
|
alias tmp="cd /tmp"
|
|
|
|
# not as compatible, better to call pypy explicitly or in #! line
|
|
#if type -P pypy &>/dev/null; then
|
|
# alias python=pypy
|
|
#fi
|
|
|
|
# shellcheck disable=SC2139
|
|
bt="$(dirname "${BASH_SOURCE[0]}")/.."
|
|
export bt
|
|
alias bt='sti bt; cd $bt'
|
|
|
|
# shellcheck disable=SC2154
|
|
export bashd="$bash_tools/.bash.d"
|
|
alias bashd='sti bashd; cd $bashd'
|
|
|
|
#alias cleanshell='exec env - bash --rcfile /dev/null'
|
|
alias cleanshell='exec env - bash --norc --noprofile'
|
|
alias newshell='exec bash'
|
|
alias rr='newshell'
|
|
|
|
alias record=script
|
|
|
|
alias l33tmode='welcome; retmode=on; echo l33tm0de on'
|
|
alias leetmode=l33tmode
|
|
|
|
alias hist=history
|
|
alias clhist='HISTSIZE=0; HISTSIZE=5000'
|
|
alias nohist='unset HISTFILE'
|
|
|
|
export LS_OPTIONS='-F'
|
|
if isMac; then
|
|
export CLICOLOR=1 # equiv to using -G switch when calling
|
|
else
|
|
export LS_OPTIONS="$LS_OPTIONS --color=auto"
|
|
export PS_OPTIONS="$LS_OPTIONS -L"
|
|
fi
|
|
|
|
alias ls='ls $LS_OPTIONS'
|
|
# omit . and .. in listall with -A instead of -a
|
|
alias lA='ls -lA $LS_OPTIONS'
|
|
alias la='ls -la $LS_OPTIONS'
|
|
alias ll='ls -l $LS_OPTIONS'
|
|
alias lh='ls -lh $LS_OPTIONS'
|
|
alias lr='ls -ltrh $LS_OPTIONS'
|
|
alias ltr='lr'
|
|
alias lR='ls -lRh $LS_OPTIONS'
|
|
|
|
# shellcheck disable=SC2086
|
|
lw(){ ls -lh $LS_OPTIONS "$(type -P "$@")"; }
|
|
|
|
# shellcheck disable=SC2086,SC2012
|
|
lll(){ ls -l $LS_OPTIONS "$(readlink -f "${@:-.}")" | less -R; }
|
|
|
|
alias cd..='cd ..'
|
|
alias ..='cd ..'
|
|
alias ...='cd ../..'
|
|
alias ....='cd ../../..'
|
|
# use bare 'cd' instead, it's more standard
|
|
#alias ~='cd ~'
|
|
|
|
alias screen='screen -T $TERM'
|
|
#alias mt=multitail
|
|
#alias halt='shutdown -h now -P'
|
|
# my pytools github repo
|
|
alias ht='headtail.py'
|
|
|
|
# ============================================================================ #
|
|
# G i t H u b / B i t B u c k e t
|
|
# ============================================================================ #
|
|
|
|
export github=~/github
|
|
alias github="sti github; cd $github";
|
|
|
|
export bitbucket=~/bitbucket
|
|
alias bitb='cd $bitbucket'
|
|
# clashes with bitbucket-cli
|
|
#alias bitbucket='cd $bitbucket'
|
|
# used to gitbrowse to bitbucket now in git.sh
|
|
#alias bb=bitbucket
|
|
|
|
for basedir in "$github" "$bitbucket"; do
|
|
if [ -d "$basedir" ]; then
|
|
for directory in "$basedir/"*; do
|
|
[ -d "$directory" ] || continue
|
|
name="${directory##*/}"
|
|
name="${name//-/_}"
|
|
name="${name//./_}"
|
|
name="${name// /}"
|
|
# alias terraform /tf -> terra
|
|
if [[ "$name" =~ ^terraform|tf$ ]]; then
|
|
name="terra"
|
|
fi
|
|
export "$name"="$directory"
|
|
# don't clash with any binaries
|
|
if ! type -P "$name" &>/dev/null; then
|
|
# shellcheck disable=SC2139,SC2140
|
|
alias "$name"="sti $name; cd $directory"
|
|
fi
|
|
done
|
|
fi
|
|
done
|
|
|
|
|
|
doc_alias(){
|
|
local docpath="$1"
|
|
[ -f "$docpath" ] || return 1
|
|
docfile="${docpath##*/}"
|
|
# slows down shell creation, will drain battery
|
|
# if [ -L "$docpath" ]; then
|
|
# # brew install coreutils to get greadlink since Mac doesn't have readlink -f
|
|
# if type -P greadlink &>/dev/null; then
|
|
# docfile="$(greadlink -f "$docpath")"
|
|
# else
|
|
# docfile="$(readlink -f "$docpath")"
|
|
# fi
|
|
# fi
|
|
#local count=0
|
|
#[ -f ~/docs/$docfile ] && ((count+=1))
|
|
#[ -f "$github/docs/$docfile" ] && ((count+=1))
|
|
#[ -f "$bitbucket/docs/$docfile" ] && ((count+=1))
|
|
#if [ $count -gt 1 ]; then
|
|
# echo "WARNING: $docfile conflicts with existing alias, duplicate doc '$docfile' among ~/docs, ~/github/docs, ~/bitbucket/docs?"
|
|
# return
|
|
#fi
|
|
# shellcheck disable=SC2139,SC2140
|
|
alias "d$docfile"="ti ${docpath##*/}; \$EDITOR $docpath"
|
|
}
|
|
|
|
for x in ~/docs/* "$github"/docs/* "$bitbucket"/docs/*; do
|
|
doc_alias "$x" || :
|
|
done
|
|
|
|
# ============================================================================ #
|
|
|
|
# set in ansible.sh
|
|
#alias a='ansible -Db'
|
|
alias anonymize='anonymize.py'
|
|
alias an='anonymize -a'
|
|
alias bc='bc -l'
|
|
alias chromekill='pkill -f "Google Chrome Helper"'
|
|
alias eclipse='~/eclipse/Eclipse.app/Contents/MacOS/eclipse';
|
|
alias visualvm='~/visualvm/bin/visualvm'
|
|
|
|
alias tmpl=templates
|
|
|
|
# using brew version on Mac
|
|
pmd_opts="-R rulesets/java/quickstart.xml -f text"
|
|
if isMac; then
|
|
# yes evaluate $pmd_opts here
|
|
# shellcheck disable=SC2139
|
|
pmd="pmd $pmd_opts"
|
|
else
|
|
for x in ~/pmd-bin-*; do
|
|
if [ -f "$x/bin/run.sh" ]; then
|
|
# yes evaluate $x here, and don't export it's lazy evaluated in alias below
|
|
# shellcheck disable=SC2139,SC2034
|
|
pmd="$x/bin/run.sh pmd $pmd_opts"
|
|
fi
|
|
done
|
|
fi
|
|
alias pmd='$pmd'
|
|
|
|
# from DevOps Perl tools repo - like uniq but doesn't require pre-sorting keeps the original ordering
|
|
# Devops Golang tools uniq2 should be on path instead now
|
|
#alias uniq2=uniq_order_preserved.pl
|
|
|
|
# for piping from grep
|
|
alias uniqfiles="sed 's/:.*//;/^[[:space:]]*$/d' | sort -u"
|
|
|
|
export etc=~/etc
|
|
alias etc='cd $etc'
|
|
|
|
|
|
alias distro='cat /etc/*release /etc/*version 2>/dev/null'
|
|
alias trace=traceroute
|
|
alias t='$EDITOR ~/tmp'
|
|
# causes more problems than it solves on a slow machine missing the prompt
|
|
#alias y=yes
|
|
alias t2='$EDITOR ~/tmp2'
|
|
alias t3='$EDITOR ~/tmp3'
|
|
alias tg='traceroute www.google.com'
|
|
#alias sec='ps -ef| grep -e arpwatc[h] -e swatc[h] -e scanlog[d]'
|
|
|
|
|
|
export lab=~/lab
|
|
alias lab='cd $lab'
|
|
|
|
# Auto-alias uppercase directories in ~ like Desktop and Downloads
|
|
#for dir in $(find ~ -maxdepth 1 -name '[A-Z]*' -type d); do [ -d "$dir" ] && alias ${dir##*/}="cd '$dir'"; done
|
|
|
|
export Downloads=~/Downloads
|
|
export Documents=~/Documents
|
|
alias Downloads='cd "$Downloads"'
|
|
alias Documents='cd "$Documents"'
|
|
export down="$Downloads"
|
|
export docu="$Documents"
|
|
alias down='cd "$Downloads"'
|
|
alias docu='cd "$Documents"'
|
|
alias doc='cd ~/docs'
|
|
|
|
export desktop=~/Desktop
|
|
export desk="$desktop"
|
|
alias desktop='cd "$desktop"'
|
|
alias desk=desktop
|
|
|
|
export bin=~/bin
|
|
alias bin="cd $bin"
|
|
|
|
alias todo='ti T; $EDITOR ~/TODO'
|
|
alias TODO="todo"
|
|
alias don='ti D; $EDITOR ~/DONE'
|
|
alias DON=don
|
|
|
|
# drive => Google Drive
|
|
export google_drive=~/drive
|
|
export drive="$google_drive"
|
|
alias drive='cd "$drive"'
|
|
|
|
for v in ~/github/pytools/validate_*.py; do
|
|
z="${v##*/}"
|
|
z="${z#validate_}"
|
|
z="${z%.py}"
|
|
# needs to expand now for dynamic alias creation
|
|
# shellcheck disable=SC2139,SC2140
|
|
alias "v$z"="$v"
|
|
done
|
|
|
|
# in some environments I do ldap with Kerberos auth - see ldapsearch.sh script at top level which is more flexible with pre-tuned environment variables
|
|
#alias ldapsearch="ldapsearch -xW"
|
|
#alias ldapadd="ldapadd -xW"
|
|
#alias ldapmodify="ldapmodify -xW"
|
|
#alias ldapdelete="ldapdelete -xW"
|
|
#alias ldappasswd="ldappasswd -xW"
|
|
#alias ldapwhoami="ldapwhoami -xW"
|
|
#alias ldapvi="ldapvi -b dc=domain,dc=local -D cn=admin,dc=domain,dc=local"
|
|
|
|
alias fluxkeys='$EDITOR ~/.fluxbox/keys'
|
|
alias fke=fluxkeys
|
|
alias fluxmenu='$EDITOR ~/.fluxbox/mymenu'
|
|
alias fme=fluxmenu
|
|
alias mymenu=fluxmenu
|
|
alias menu=mymenu
|