Skip to content

Instantly share code, notes, and snippets.

@benyanke
Forked from ageis/.bashrc 02-25-2020
Created June 9, 2019 03:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save benyanke/185dca2a236750eae5d0f920f01039c8 to your computer and use it in GitHub Desktop.
Save benyanke/185dca2a236750eae5d0f920f01039c8 to your computer and use it in GitHub Desktop.
@ageis's ~/.bashrc 🖥️ with numerous useful functions, aliases and one-liners. ⚠️ NOTE: many paths in sourced scripts and environment variables are specific to my system, but if you dig in I hope you'll find something you can use!
#!/bin/bash
#~/.bashrc: executed by bash(1) for non-login shells.
# kevin gallagher (@ageis) <kevingallagher@gmail.com>
export MYUID=$(id -u)
export USER="$(id -un)"
if [[ "$TILIX_ID" ]] || [[ "$VTE_VERSION" ]]; then
source /etc/profile.d/vte.sh
fi
case $- in
*i*) ;;
*)
#clear
. /etc/profile
. ~/.profile
#return
;;
esac
[ -z "$PS1" ] && return
HISTCONTROL=ignoreboth
HISTSIZE=
HISTFILESIZE=
HISTIGNORE=?:??
#HISTTIMEFORMAT="[%d/%m/%y %T] "
shopt -s histappend
shopt -s lithist
shopt -s checkwinsize
shopt -s globstar
shopt -s dotglob
shopt -s cmdhist
shopt -s autocd
shopt -s cdspell
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
debian_chroot=$(cat /etc/debian_chroot)
fi
export color_prompt=yes
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
export force_color_prompt="yes"
export CLICOLOR=1
# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm* | rxvt*)
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
;;
*) ;;
esac
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
alias ls='ls --color=auto'
alias dir='dir --color=auto'
alias vdir='vdir --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
fi
alias ll='ls -l'
alias la='ls -A'
alias l='ls -CF'
# Alias definitions.
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
if [ -x /usr/lib/command-not-found -o -x /usr/share/command-not-found/command-not-found ]; then
function command_not_found_handle {
# check because c-n-f could've been removed in the meantime
if [ -x /usr/lib/command-not-found ]; then
/usr/lib/command-not-found -- "$1"
return $?
elif [ -x /usr/share/command-not-found/command-not-found ]; then
/usr/share/command-not-found/command-not-found -- "$1"
return $?
else
printf "%s: command not found\n" "$1" >&2
return 127
fi
}
fi
function activedisplay() {
#mapfile -t SESSIONS< <(loginctl list-sessions --nolegend | awk {'print $1'})
local ACTIVETTY="$(cat /sys/class/tty/tty0/active)"
mapfile -t PROCS< <(pgrep -t "${ACTIVETTY}")
for PROC in "${PROCS[@]}}"; do
#if [[ "$(loginctl show-session -p State --value ${SESS})" =~ "active" ]]; then local ACTIVESESS="${SESS}"; fi
local DISP="$(awk -v RS='\0' -F= '$1=="DISPLAY" {print $2}' /proc/${PROC}/environ 2>/dev/null)"; [[ -n "${DISP}" ]] && break;
done;
echo -e "${DISP}"
}
function apparmor_enable() {
systemctl start apparmor
profiles=$(find /etc/apparmor.d -type f | grep -v tunables | grep -v local | grep -v abstractions)
profiles+=$(find /etc/apparmor.d -type f -exec grep -E "^(\s+)?profile" {} \; | cut -d'{' -f1 | sed 's/[ \t]*//' | cut -d' ' -f2 | uniq -u)
for profile in $profiles; do
aa-enforce -d /etc/apparmor.d $profile
done
}
function apparmor_complain() {
systemctl start apparmor
profiles=$(find /etc/apparmor.d -type f | grep -v tunables | grep -v local | grep -v abstractions)
profiles+=$(find /etc/apparmor.d -type f -exec grep -E "^(\s+)?profile" {} \; | cut -d'{' -f1 | sed 's/[ \t]*//' | cut -d' ' -f2 | uniq -u)
for profile in $profiles; do
aa-complain -d /etc/apparmor.d $profile
done
}
function apparmor_disable() {
systemctl stop apparmor
systemctl disable apparmor
profiles=$(find /etc/apparmor.d -type f | grep -v tunables | grep -v local | grep -v abstractions)
profiles+=$(find /etc/apparmor.d -type f -exec grep -E "^(\s+)?profile" {} \; | cut -d'{' -f1 | sed 's/[ \t]*//' | cut -d' ' -f2 | uniq -u)
for profile in $profiles; do
aa-disable -d /etc/apparmor.d $profile
done
}
function blockip() {
sudo iptables -A INPUT -s "$1" -j DROP
sudo iptables -A OUTPUT -d "$1" -j DROP
}
function buildkerneldeb() {
unset MAKEFLAGS
unset ARCH
CONCURRENCY_LEVEL=16 make-kpkg --rootcmd=fakeroot --verbose --arch-in-name --arch amd64 -j16 --initrd --uc --us kernel_image kernel_headers
}
function buildkernel() {
unset ARCH
make oldconfig
#CONCURRENCY_LEVEL=8 screen fakeroot make-kpkg --us --uc --revision 1.KMG --initrd kernel_image kernel_headers
CONCURRENCY_LEVEL=16 fakeroot make -j16 deb-pkg
}
function bytestohuman() {
b=${1:-0}; d=''; s=0; S=(Bytes {K,M,G,T,P,E,Z,Y}iB)
while ((b > 1024)); do
d="$(printf ".%02d" $((b % 1024 * 100 / 1024)))"
b=$((b / 1024))
let s++
done
echo "$b$d ${S[$s]}"
}
function cache_gpg_pass() {
local TMPFILE=$(mktemp)
gpg --quiet --with-keygrip -K "${GPG_KEY}" > ${TMPFILE}
local GPG_KEYGRIP="$(ack '\sKeygrip = (?<keygrip>[a-zA-Z][0-9].*$)' ${TMPFILE} --output '$+{keygrip}')"
/usr/lib/gnupg/gpg-preset-passphrase --preset "${GPG_KEYGRIP}"
gpg-connect-agent reloadagent /bye
}
function certcheck() {
openssl s_client -showcerts -connect "$1":443
}
function certkeymatch() {
openssl x509 -in "$1" -noout -modulus
openssl rsa -in "$2" -noout -modulus
}
function certmatchkey() {
local certmd5=$(openssl x509 -noout -modulus -in "$1" | openssl md5)
local keymd5=$(openssl rsa -noout -modulus -in "$2" | openssl md5)
if [[ "$certmd5" == "$keymd5" ]]; then
echo -e "The certificate matches the key.\n"
elif [[ "$certmd5" != "$keymd5" ]]; then
echo -e "The certificate DOES NOT match the key.\n"
fi
}
function checkkey() {
openssl rsa -check -text -noout -in "$1"
}
function checkstarttls() {
openssl s_client -showcerts -connect "$1":25 -starttls smtp
}
function checktls() {
openssl s_client -showcerts -connect "$1"
}
function clean_repos() {
local CWD=$(pwd)
mapfile -t REPOS< <(find ${CWD} -type d -name '.git' -exec readlink -f {} \;)
unset GIT_CURL_VERBOSE
export GIT_PROMPT_DISABLE=1
for REPO in "${REPOS[@]}"; do
local REPO_PATH="${REPO%/.git}"
git -C "${REPO_PATH}" reset --hard HEAD
git -C "${REPO_PATH}" clean -fdx
done
}
function confirm() {
read -p "Are you sure you want to $1? (y/n): " -n 1 -r REPLY
echo -e "\n"
if [[ $REPLY =~ ^[Yy]$ ]]; then
return 0
else
return 1
fi
}
function copysite() {
local domain=$(echo "$@" | awk -F/ '{print $3}')
wget --recursive --page-requisites --html-extension --convert-links --domains "$domain" --no-parent "$@"
}
function cpanu() {
perl -MCPAN -e 'foreach (@ARGV) { CPAN::Shell->rematein("notest", "install", $_) }' $@
}
function disable() {
local PROGRAM="$1"
if confirm "disable ${PROGRAM}" -eq 0; then
sudo systemctl disable "${PROGRAM}"
local EXITSTATUS="$?"
sleep 1s
[[ ${EXITSTATUS} == 0 ]] && success "Disabled ${PROGRAM}." || failure "Failed to disable ${PROGRAM}."
else
failure "No action taken."
fi
}
function dns() {
dig +nocmd "$1" any +multiline +noall +answer
}
function clrdockerenv() {
unset DOCKER_TLS_VERIFY
unset DOCKER_HOST
unset DOCKER_CERT_PATH
unset COMPOSE_TLS_VERSION
}
function dockerexec() {
local container="$1"
docker exec --privileged -it "$1" /bin/bash
}
function dockernets() {
local containers=$(docker ps -a -q)
for container in $containers; do
docker inspect --format '{{ .NetworkSettings.IPAddress }}' "$container"
done
}
function dockerrm() {
local containers=$(docker ps -a -q)
local images=$(docker images -q)
for container in $containers; do
docker rm "$container"
done
for image in $images; do
docker rmi "$image"
done
}
function dockerstop() {
local containers=$(docker ps -a -q)
for container in $containers; do
docker stop "$container"
done
}
function dockervols() {
local containers=$(docker ps -a -q)
for container in $containers; do
docker inspect --format '{{ .Volumes }}' "$container"
done
}
function enable() {
local PROGRAM="$1"
if confirm "enable ${PROGRAM}" -eq 0; then
sudo systemctl enable "${PROGRAM}"
local EXITSTATUS="$?"
sleep 1s
[[ ${EXITSTATUS} == 0 ]] && success "Enabled ${PROGRAM}." || failure "Failed to enable ${PROGRAM}."
else
failure "No action taken."
fi
}
function encodemp3() {
local FULLPATH=$(readlink -e "$1")
local INPUTMEDIA=$(basename "$1")
local FNAME=$(echo "${INPUTMEDIA}" | cut -d'.' -f1)
local DESTDIR=$(dirname "${FULLPATH}")
ffmpeg -i "$1" -vn -ab 128k -acodec libmp3lame -ar 44100 -y "${DESTDIR}/${FNAME}.mp3"
}
function examinecert() {
openssl x509 -inform PEM -in "$1" -text -noout
}
function failure() {
ERR="$1"
echo -e "\e[01;31m* $ERR\e[0m" 1>&2
}
function f() {
find . -not -iwholename '*.svn*' -not -iwholename '*.git*' -iname "*$1*"
}
function find_dirty_repos() {
local CWD=$(pwd)
mapfile -t REPOS< <(find ${CWD} -type d -name '.git' -exec readlink -f {} \;)
declare -a DIRTY_REPOS=()
for REPO in "${REPOS[@]}"; do
local REPO_PATH=${REPO%/.git}
git -C "$REPO_PATH" diff-index --quiet HEAD -- &>/dev/null
local GITSTATUS=$?
if [ "$GITSTATUS" -eq 1 ]; then
DIRTY_REPOS+=($REPO_PATH)
failure "$REPO_PATH is dirty."
# modifications
# timelimit -q -t 3 -T 5 git -C $REPO_PATH diff --minimal --compact-summary | pr -to 4
# untracked files
# timelimit -q -t 3 -T 5 git -C $REPO_PATH ls-files . --abbrev --exclude-standard --others | pr -to 4
timelimit -q -t 3 -T 5 git -C $REPO_PATH status -su | pr -to 4
else
success "$REPO_PATH is clean."
fi
done
}
function fixpycode() {
autopep8 --max-line-length=120 --list-fixes -i "$1"
yapf -i -vv "$1"
black --line-length=120 -v "$1"
/usr/local/bin/reindent3 "$1"
}
function fixlogitech() {
# c52b :
# 046d : Logitech
find '/sys/devices/pci0000:00' -iname idProduct -exec cat {} \;
}
function flushiptables() {
declare -a iptcmds=("/usr/sbin/iptables" "/usr/sbin/ip6tables")
for i in "${iptcmds[@]}"; do
# [ ! -e $i -a ! -x $i ]
local ipt="sudo $i"
$ipt -P INPUT ACCEPT
$ipt -P FORWARD ACCEPT
$ipt -P OUTPUT ACCEPT
$ipt -F
$ipt -X
$ipt -t nat -F
$ipt -t nat -X
$ipt -t mangle -F
$ipt -t mangle -X
$ipt -t raw -F
$ipt -t raw -X
done
}
function freespace() {
local CWD=$(pwd)
mapfile -t BIGFILES< <(find ${CWD} -xdev -type f -size +50M -printf '%s\t%k\t%p\n' | numfmt --field=1 --from=iec --to=si --padding=8 | sort -rh | tail -100)
for f in "${BIGFILES[@]}"; do
local FNAME="$(echo $f | cut -d' ' -f3)"
local FSIZEKB="$(echo $f | cut -d' ' -f2)"
read -p "\nPress 'y' to delete ${FNAME}, 'm' to move it to another directory, and 'k' to keep: " -n 1 -r REPLY
if [[ $REPLY =~ ^[Mm]$ ]]; then
read -e -p "\nEnter new destination for ${FNAME}: " -n 64 -r DESTDIR
if [[ -d "${DESTDIR}" ]]; then
local FREESPACE="$(df -k --sync ${DESTDIR} | awk '{ print $4 }' | tail -n 1| cut -d'%' -f1)"
declare -i REMAINING=$(($FREESPACE - $FSIZEKB))
if [[ "${REMAINING}" -gt 1024 ]]; then
local REMAINING_HUMAN_READABLE=$(printf '%dK\t' "${REMAINING}" | numfmt --field=1 --format="%-10f" --zero-terminated --from=auto --to=iec --padding=8)
success "\nThere will be ${REMAINING_HUMAN_READABLE} kilobytes left available on that filesystem after migrating the file..."
sudo mv -ivun -t "${DESTDIR}/" "${FNAME}" &
fi
fi
elif [[ $REPLY =~ ^[Kk]$ ]]; then
success "\nKeeping ${FSIZEKB} ${FNAME} where it's located."
elif [[ $REPLY =~ ^[Yy]$ ]]; then
sudo rm --preserve-root=all --one-file-system -rfvi "${FNAME}"
fi
done
for job in $(jobs -p); do
wait -n "$job"
done
}
# the following function is a WIP (work-in-progress)
function gencert() {
cd /etc/pki
export EASYRSA=$(pwd)
./easyrsa --batch --req-cn="$1" gen-req "$1" nopass
read -e -p "Enter any DNS subject alternative names (SANs) for $1: " -n 24 -r REPLY
if [[ $REPLY =~ ^\.(com|org|net|pro)$ || $REPLY == 'localhost' ]]; then
AVGPING=$(printf '%-8.2f' "$(fping -c3 -t300 --ipv4 --iface=eth0 -i 100 -W 3 "$REPLY" | tail -1 | awk '{ print $4 }' | cut -d '/' -f 2)")
DIGTIME=$(dig +noall +stats +timeout=3 @"$REPLY" google.com | awk '/Query/{sum+=$4}END{print ""sum"ms"}')
echo "AVGPING: $AVGPING"
echo "DIGTIME: $DIGTIME"
if (( $(echo "$AVGPING == 0" | bc -l) )) && (( $(echo "$DIGTIME == 0" | bc -l) )); then
failure "Couldn't ping/dig $REPLY. Not adding SAN to certificate."
local SANS=""
echo "SANS1: ${SANS}"
else
local SANS="DNS:${REPLY}"
echo "SAN2S: ${SANS}"
fi
else
local SANS=""
echo "SANS3: ${SANS}"
fi
unset REPLY
read -e -p "Enter any IP subject alternative names (SANs) for $1: " -n 24 -r REPLY
if [[ $REPLY =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
AVGPING=$(printf '%-8.2f' "$(ping -c 10 -i 1 -W 3 "$REPLY" | tail -1 | awk '{ print $4 }' | cut -d '/' -f 2)")
if (( $(echo "$AVGPING == 0" | bc -l) )); then
failure "Couldn't ping $REPLY. Not adding SAN to certificate."
else
echo "SANS4: ${SANS}"
[[ -z "$SANS" ]] && local SANS="IP:${REPLY}"
[[ ! -z "$SANS" ]] && SANS+=",IP:${REPLY}"
fi
else
failure "${REPLY} is not a valid IP address. Not adding SAN to certificate."
fi
echo "SANS: ${SANS}"
# easyrsa --batch --subject-alt-name='${REPLY}' \
# sign-req server example.org
}
# the following function is a WIP (work-in-progress)
function gendhparam() {
local OUTDIR="/etc/ssl"
echo -e "Generating Diffie-Hellman parameters...\n"
dhdata=$(tempfile 2>/dev/null)
trap "rm -f $dhdata" 0 1 2 5 15
local ans="$(zenity --list --text "DH parameter size" --radiolist --height=256 --width=128 --column "Choose" --column "Bits" FALSE 1024 FALSE 2048 FALSE 3072 TRUE 4092)"
echo -e "$ans\n"
export ANS="/tmp/ans.$$"
mkfifo $ANS
dialog --backtitle "Parameter generation" --title "Diffie-Hellman key length" --output-fd 3 --stdout --radiolist "Choose:" 12 40 4 \
1 "1024" off \
2 "2048" off \
3 "3072" off \
4 "4096" on >&3
case $(cat $dhata) in
1) export DH_KEYLENGTH=1024;;
2) export DH_KEYLENGTH=2048;;
3) export DH_KEYLENGTH=3072;;
4) export DH_KEYLENGTH=4096;;
esac
return 0
while true; do
read -p "How many bytes? [1024] [2048] [4096] E[x]it: " -a array
for choice in "${array[@]}"; do
case "$choice" in
[1-1024]*)
export DHBITS="1024"; break;;
[20-2048]*)
export DHBITS="2048"; break;;
[30-3072]*)
export DHBITS="3072"; break;;
[40-4096]*)
export DHBITS="4096"; break;;
[x]* ) echo "Cancelled dhparam generation."; return 0;;
* ) failure "Invalid option."; return 0;;
esac
done
done
local numre="^[0-9]+$"
if [ "${DHBITS}" =~ $numre ]]; then
read -p "Chosen ${DHBITS} bits. Where do you want to write them? (${OUTDIR}): " -n 1 -r DHDEST
echo -e "\n"
if [[ $DHDEST =~ [^a-zA-Z0-9\ \/$] ]] && [ -d "$DHDEST" ]; then
openssl dhparam -out "${DHDEST}/dhparam-${DHBITS}.pem" "${DHBITS}"
fi
fi
}
function genpw() {
if hash diceware 2>/dev/null; then
local wordcount
wordcount=9
if hash xclip 2>/dev/null; then
diceware "$@" -n $wordcount | tee >(xclip -selection clipboard)
else
diceware "$@" -n $wordcount
fi
else
strings /dev/urandom | grep -o '[[:alnum:]]' | head -n 32 | tr -d '\n' | head -c 24
echo
fi
}
function getdigest() {
openssl x509 -pubkey <"$1" | openssl pkey -pubin -outform der | openssl dgst -sha256 -binary | base64
}
function getlinks() {
lynx -listonly -dump "$1" | awk '/^[ ]*[1-9][0-9]*\./{sub("^ [^.]*.[ ]*","",$0); print;}'| sort -u
}
function getoffline() {
NET_DEVICES=$(sudo lshw -short -C net -quiet -sanitize | tail +3 | awk {'print $2'})
for device in $NET_DEVICES; do
timelimit -q -t 3 -T 5 sudo ifdown "${device}"
done
}
function getonline() {
sudo systemctl restart systemd-networkd
sudo systemctl restart networking
sudo systemctl restart NetworkManager
NET_DEVICES=$(sudo lshw -short -C net -quiet -sanitize | tail +3 | awk {'print $2'})
for device in $NET_DEVICES; do
timelimit -q -t 3 -T 5 sudo dhclient "${device}"
timelimit -q -t 3 -T 5 sudo ifup "${device}"
done
sudo systemctl restart dnsmasq
sudo systemctl restart coredns
sudo systemctl restart systemd-resolved
}
function gitcommitdate() {
GIT_COMMITTER_DATE="$(date)"
git commit --amend --no-edit --date "$(date)"
}
function git_restore_deleted() {
local DELETED="$1"
local LAST_COMMIT="$(git rev-list -n 1 HEAD -- $DELETED)"
LAST_COMMIT+='^'
git checkout "${LAST_COMMIT}" -- "$DELETED"
}
function git_restore_previous() {
local PREVIOUS="$1"
local LAST_COMMIT="$(git rev-list -n 2 HEAD -- $PREVIOUS | tail -1)"
LAST_COMMIT+='^'
git checkout "${LAST_COMMIT}" -- "$PREVIOUS"
}
function headers() {
curl -I https://"$1"
}
function hiprio() {
local procs="$(pgrep -iw $1)"
for proc in $procs; do
sudo renice -n -19 -p "$proc"
sudo ionice -c 2 -n 0 -p "$proc"
done
}
function install_apt_depends() {
sudo apt-get install $(apt-cache depends $1 | grep Depends | sed "s/.*ends:\ //" | tr '\n' ' ')
}
function kicksysd() {
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl reset-failed
}
function killpulse() {
local PULSE_PID="$(pgrep pulseaudio)"
killall -wv pulseaudio
sleep 1
sudo kill -9 "$PULSE_PID"
}
function killvagrant() {
local VPID="$(pgrep vagrant)"
kill "${VPID}"
sleep 1
kill -9 "${VPID}"
}
function killvlc() {
local VPID="$(pgrep vlc)"
kill "$VPID"
sleep 1
kill -9 "$VPID"
}
function largefolders() {
if [ -z "$1" ]; then
local searchpath="$(pwd)"
else
local searchpath="$1"
fi
sudo find "${searchpath}" -xdev -maxdepth 5 -type d -print0 | xargs -0 du -bx --max-depth=5 2>/dev/null | perl -M'Number::Bytes::Human format_bytes' -lane 'my $SIZE = format_bytes ($F[0], bs=>1000, round_style => 'round', quiet => 1, precision => 2); shift @F; print $SIZE . "\t@F";' | sort -rh | head -20
}
function latlong() {
curl http://ipinfodb.com 2>/dev/null | perl -0777 -nE 'm/Latitude : (-?\d+\.\d+).+?Longitude : (-?\d+\.\d+)/ms; say "$1:$2" if $1 and $2'
}
function listvms() {
mapfile -t VBOX_VMS< <(VBoxManage list vms | sed -e 's/^"//' | cut -d'"' -f1)
mapfile -d '}' -t VBOX_VM_UUIDS< <(VBoxManage list vms | cut -d'{' -f2)
mapfile -d '}' -t VBOX_RUNNING_VMS< <(VBoxManage list runningvms | cut -d'{' -f2)
for i in ${!VBOX_VMS[@]}; do
local VBOXVM="${VBOX_VMS[$i]}"
local VBOXID="${VBOX_VM_UUIDS[$i]}"
if [[ "${VBOX_RUNNING_VMS[*]}" =~ ".*${VBOXID}.*" ]]; then
echo -e "\e[01;32m${VBOXVM} ${VBOXID} \n\e[0m"
else
echo -e "\e[01;31m${VBOXVM} ${VBOXID} \n\e[0m"
fi
done
}
function lock_resolv() {
sudo chattr +i /etc/resolv.conf
}
function loprio() {
local procs="$(pgrep -iw $1)"
for proc in $procs; do
echo "$proc"
sudo renice -n +19 -p "$proc"
sudo ionice -c 2 -n 7 -p "$proc"
done
}
function makecolors() {
pathpat="(/[^/]*)+:[0-9]+"
ccred=$(echo -e "\033[0;31m")
ccyellow=$(echo -e "\033[0;33m")
ccend=$(echo -e "\033[0m")
/usr/bin/make "$@" 2>&1 | sed -E -e "/[Ee]rror[: ]/ s%$pathpat%$ccred&$ccend%g" -e "/[Ww]arning[: ]/ s%$pathpat%$ccyellow&$ccend%g"
return ${PIPESTATUS[0]}
}
function maketarbz() {
# export TAR_OPTS="--auto-compress --one-file-system --quoting-style='literal' --utc --verbose --deference --compress --totals=SIGQUIT --ignore-failed-read --seek --wildcards --no-acls --no-selinux --no-xattrs --verify"
if [ -d "$1" ]; then
local ARCHIVENAME=$(basename "$1.tar.bz2")
export BZIP2="-9"; tar -pcvjf "${TAR_OPTS}" "$1" "${ARCHIVENAME}"
fi
}
function maketargz() {
# export TAR_OPTS="--auto-compress --one-file-system --quoting-style='literal' --utc --verbose --deference --compress --totals=SIGQUIT --ignore-failed-read --seek --wildcards --no-acls --no-selinux --no-xattrs --verify"
if [ -d "$1" ]; then
local ARCHIVENAME=$(basename "$1.tar.xz")
export XZ_OPT="-9"; tar -zpcvf "${TAR_OPTS}" "$1" "${ARCHIVENAME}"
fi
}
function maketarxz() {
# export TAR_OPTS="--auto-compress --one-file-system --quoting-style='literal' --utc --verbose --deference --compress --totals=SIGQUIT --ignore-failed-read --seek --wildcards --no-acls --no-selinux --no-xattrs --verify"
if [ -d "$1" ]; then
local ARCHIVEDIR=$(basename "$1.tar.gz")
export GZIP="-9"; tar -pcvJf "${TAR_OPTS}" "$1" "${ARCHIVENAME}"
fi
}
function newcert() {
openssl req -new -newkey rsa:4096 -nodes -sha512 -keyout domain.com.key -out domain.com.csr
}
function newlines() {
sed -i 's/\\n/\n/g' "$1"
}
function noblanklines() {
sed -i '/^$/d' "$1"
}
function nocomments() {
cat "$1" | egrep -v "(^#.*|^$)"
}
function noleading() {
sed -i "s/^[ \t]*//" "$1"
}
function parentproc() {
local PSTREE="$(mktemp)"
mkfifo "${PSTREE}"
local PID="$(sudo pgrep -inxw $1)"
for _pid in $PID; do
local PARENTPID="$(sudo ps -o ppid= -p $_pid)"
if [[ ! -z "${PARENTPID}" ]]; then
echo -e "Parent of $_pid is ${PARENTPID}.\n"
echo -e "$(sudo ps -p ${PARENTPID} -o command=)\n"
local PARENTOFPARENTPID="$(sudo ps -o ppid= -p $PARENTPID)"
if [ $? -eq 0 ]; then
echo -e "The parent's parent is ${PARENTOFPARENTPID}\n"
fi
fi
sudo pstree -ptshlU "${_pid}" >> $PSTREE 2>&1
done
sudo sed -rn "/.{$($PSTREE expand -t1 2>/dev/null | wc -L 2>/dev/null)}/{p;q}" $PSTREE 2>/dev/null
sudo rm -f "${PSTREE}"
}
function pdfshrink() {
local input=$1
local output=$2
if [ -e $1 ]; then
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.6 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile="$2" "$1"
fi
}
function proxy_on() {
if [ -z ${HTTP_PROXY+http://127.0.0.1:8123/} ]; then
failure "Proxy was not turned on."
export HTTP_PROXY="http://127.0.0.1:8123"
else
success "Proxy will be set to '$HTTP_PROXY'.";
fi
export HTTPS_PROXY="$HTTP_PROXY"
export SOCKS_PROXY="$HTTP_PROXY"
export FTP_PROXY="$HTTP_PROXY"
export NO_PROXY="localhost,127.0.0.1"
env | grep --color=always -e _PROXY | sort
}
function proxy_off() {
variables=("HTTP_PROXY" "HTTPS_PROXY" "FTP_PROXY" "SOCKS_PROXY" "NO_PROXY")
for i in "${variables[@]}"; do
unset $i
done
env | grep --color=always -e _PROXY | sort
success "Proxy turned off."
}
function proxy_switch() {
success "Switching proxy to http://127.0.0.1:8118."
export HTTP_PROXY="http://127.0.0.1:8118"
proxy_on
}
function rebuildcabundle() {
perlbrew switch-off
mk-ca-bundle -kmvf /etc/ssl/cacert.pem
local TMPCABUNDLE=$(mktemp)
grep -vE '^(#|================)' /etc/ssl/cacert.pem > ${TMPCABUNDLE}
mapfile -t CA_METADATA < <(sed -e 's/END CERTIFICATE-----\(.*\)-----BEGIN CERTIFICATE/\1/' ${TMPCABUNDLE} | grep -vE 'BEGIN CERTIFICATE|END CERTIFICATE')
mapfile -t CA_NAMES < <(sed -n '$!N;/BEGIN CERTIFICATE/P;D' ${TMPCABUNDLE} | grep -v 'BEGIN CERTIFICATE')
for i in "${!CA_NAMES[@]}" ; do CA_NAMES[$i]="${CA_NAMES[$i]:-''}"; done
for ca in "${CA_NAMES[@]}"; do
sed -i "/^${ca}$/d" ${TMPCABUNDLE}
done
noblanklines ${TMPCABUNDLE}
nocomments ${TMPCABUNDLE}
nopreceding ${TMPCABUNDLE}
clean ${TMPCABUNDLE}
mv ${TMPCABUNDLE} /etc/ssl/cacert.pem
chmod 640 /etc/ssl/cacert.pem
chown root:ssl-cert /etc/ssl/cacert.pem
}
function reload() {
sudo systemctl reload "$1"
}
function repackdeb() {
if [ -e "$1" ]; then
dpkg-deb -I "$1"
fi
export DPKGTMPDIR="$(mktemp -d)"
export DEBARCHIVE="$(basename $1)"
export FULLPATH="$(readlink -e $1)"
export DPKGDEST="$(dirname $FULLPATH)"
export NEWDEBARCHIVE=$(printf '%s\n' "${DEBARCHIVE%.deb}_repacked.deb")
trap "rm -rf ${DPKGTMPDIR}" EXIT
mkdir -pv ${DPKGTMPDIR}
fakeroot sh -c 'dpkg-deb -RvD "${FULLPATH}" "${DPKGTMPDIR}"; exit'
# guake -n guake -e 'cd ${DPKGTMPDIR}; ls -lrt ${DPKGTMPDIR}' guake -r 'dpkg editing session'
read -n 1 -s -r -p "${DEBARCHIVE} extracted to ${DPKGTMPDIR}. Press Enter when finished making modifications."
fakeroot sh -c 'dpkg-deb -bvD "${DPKGTMPDIR}" "${DPKGDEST}/${NEWDEBARCHIVE}"'
debdiff "${FULLPATH}" "${DPKGDEST}/${NEWDEBARCHIVE}"
rm -rf "${DPKGTMPDIR}"
}
function restart() {
local PROGRAM="$1"
if confirm "restart ${PROGRAM}" -eq 0; then
sudo systemctl restart "${PROGRAM}"
local EXITSTATUS="$?"
sleep 1s
[[ ${EXITSTATUS} == 0 ]] && success "Restarted ${PROGRAM}." || failure "Failed to restart ${PROGRAM}."
else
failure "No action taken."
fi
}
function rmdockerlogs() {
local container="$1"
local logpath="$(docker inspect --format='{{.LogPath}}' "$1"f)"
truncate -s 0 "$logpath"
}
function rpmextract () {
local RPMFILE=$1
rpm2cpio "${RPMFILE}" | cpio -idmv
}
function setuplocale() {
local l0c4l3=$(locale | cut -d '=' -f1)
for loc in $l0c4l3; do
export $loc=en_US.UTF-8
done
}
function showcert() {
openssl x509 -text -noout -dates -in "$1"
}
function show_module_settings() {
systool -m "$1" -a
systool -m "$1" -v
}
function signal() {
#local signal_app_id="bikioccmkafdpakkkcpdbppfkghcmihk"
#nohup /usr/bin/google-chrome --profile-directory=Default --app-id="${signal_app_id}" "$@" >/dev/null 2>&1 &
nohup /usr/local/bin/signal-desktop >/dev/null 2>&1 &
}
function smiley() {
RC=$?
[[ ${RC} == 0 ]] && echo '😊' || echo "😠 ${RC}"
}
function sqldump() {
local MYSQL_USERNAME="$1"
local MYSQL_DATABASE="$2"
local TODAYS_DATE="$(date +%F)"
mysqldump -u "${MYSQL_USERNAME}" -p "${MYSQL_DATABASE}" --single-transaction --quick --lock-tables=false > "${MYSQL_DATABASE}_${TODAYS_DATE}.sql"
gzip "${MYSQL_DATABASE}_${TODAYS_DATE}.sql"
}
function start() {
local PROGRAM="$1"
if confirm "start ${PROGRAM}" -eq 0; then
sudo systemctl start "${PROGRAM}"
local EXITSTATUS="$?"
sleep 1s
[[ ${EXITSTATUS} == 0 ]] && success "Started ${PROGRAM}." || failure "Failed to start ${PROGRAM}."
else
failure "No action taken."
fi
}
function startvm() {
VBoxManage startvm "$1" --type headless
VBoxManage controlvm "$1" reset
}
function status() {
sudo systemctl status "$1"
}
function stop() {
local PROGRAM="$1"
if confirm "stop ${PROGRAM}" -eq 0; then
sudo systemctl stop "${PROGRAM}"
local EXITSTATUS="$?"
sleep 1s
[[ ${EXITSTATUS} == 0 ]] && success "Stopped ${PROGRAM}." || failure "Failed to stop ${PROGRAM}."
else
failure "No action taken."
fi
}
function stopvm() {
VBoxManage controlvm "$1" savestate
VBoxManage controlvm "$1" poweroff
}
function strlen() {
echo "$@" | awk '{ print length }'
}
function success() {
MSG="$1"
echo -e "\e[01;32m* $MSG\e[0m"
}
function testssl() {
/usr/local/bin/testssl.sh --openssl='/usr/bin/openssl' "$1"
}
function update_bash_completions() {
mapfile -t COMPLETIONS < <(find /usr/share/bash-completion/completions -mindepth 1 -type f -exec readlink -sf {} \;)
for C in "${COMPLETIONS[@]}"; do
local COMPLETION="$(basename ${C})"
if [[ ! -f "${COMPLETION}" ]]; then
sudo ln -s "${C}" "/etc/bash_completion.d/${COMPLETION}"
fi
done
}
function update_repos() {
local CWD=$(pwd)
mapfile -t REPOS< <(find ${CWD} -type d -name '.git' -exec readlink -f {} \;)
unset GIT_CURL_VERBOSE
export GIT_PROMPT_DISABLE=1
for REPO in "${REPOS[@]}"; do
local REPO_PATH="${REPO%/.git}"
git -C "${REPO_PATH}" fetch -q -4 --all
local MAIN_REMOTE=$(git -C "${REPO_PATH}" remote show | head -1)
local REPO_URL=$(git -C "${REPO_PATH}" remote get-url "${MAIN_REMOTE}")
local REPO_NAME="$(basename ${REPO_URL})"
local DEFAULT_BRANCH=$(git -C "$REPO_PATH" symbolic-ref --short "refs/remotes/${MAIN_REMOTE}/HEAD" | sed "s@^${MAIN_REMOTE}/@@")
git -C ${REPO_PATH} checkout ${DEFAULT_BRANCH}
git -C ${REPO_PATH} pull ${MAIN_REMOTE} ${DEFAULT_BRANCH}
local EXITSTATUS="$?"
[[ ${EXITSTATUS} == 0 ]] && success "Updated ${REPO_NAME}." || failure "Failed to update ${REPO_NAME}."
done
}
function urlencode() {
old_lc_collate=$LC_COLLATE
LC_COLLATE=C
local length="${#1}"
for (( i = 0; i < length; i++ )); do
local c="${1:i:1}"
case $c in
[a-zA-Z0-9.~_-]) printf "$c" ;;
*) printf '%%%02X' "'$c" ;;
esac
done
LC_COLLATE=$old_lc_collate
}
function urldecode() {
local url_encoded="${1//+/ }"
printf '%b' "${url_encoded//%/\\x}"
}
function verifycert() {
openssl verify -verbose -CAfile <(cat "$2") "$1"
}
function viewlog() {
if [ -z "$1" ]; then
sudo journalctl -e
else
sudo journalctl -e -u "$1"
fi
}
function whatsmyip() {
local myipv4="$(dig +short -4 @resolver1.opendns.com myip.opendns.com A)"
local myipv6="$(dig +short -6 @resolver1.ipv6-sandbox.opendns.com myip.opendns.com AAAA)"
local reverse="$(dig +short -4 -x ${myipv4})"
echo -e "${myipv4}\n${myipv6}\n${reverse}"
}
function yml2json() {
python -c 'import json, sys, yaml ; y=yaml.safe_load(sys.stdin.read()) ; json.dump(y, sys.stdout)'
}
alias ansibledocs="nativefier --name 'Ansible Documentation' -e '4.2.3' --disable-dev-tools --verbose --clear-cache --icon '/home/kevin/dev/nativefier/ansible.png' --ignore-gpu-blacklist --show-menu-bar --single-instance --user-agent 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Safari/537.36' 'https://docs.ansible.com/ansible/latest/index.html'"
alias apt-cache="sudo apt-cache"
#alias apt-disable="sudo apt-disable"
#alias apt-enable="sudo apt-enable"
alias apt-get="sudo apt-get"
alias biosinfo="sudo dmidecode --type bios"
alias builddeb="dpkg-buildpackage -us -uc -b -D -rfakeroot -j16 -z9"
alias buildpy3mod="python3 setup.py sdist bdist_wheel"
alias buildpy3release="python3 setup.py egg_info -Db '' sdist bdist_egg"
alias chmod="sudo chmod"
alias chown="sudo chown"
alias clean="sed -i 's/[ \t]*$//'"
alias cleanenv="env -i bash --noprofile --norc"
alias code="/snap/bin/code"
alias clipboard="/usr/bin/xclip -selection clipboard"
alias dd="dd status=progress"
alias delpyc="find . -type f -iname "*.pyc" -exec rm -f {} \; && find . -type d -iname "__pycache__" -exec rm -rf {} \;"
alias diceware="diceware --no-caps --delimiter=' '"
alias dmesg="sudo dmesg"
alias dnslog="sudo less +G /var/log/dnsmasq.log"
alias dunderscores="find . -name \"* *\" -type d | /usr/local/bin/rename 's/ /_/g'"
alias editresolv="sudo chattr -i /etc/resolv.conf && sudo vim /etc/resolv.conf"
alias enablesearch="stty -ixon"
alias errs="sudo journalctl -p err -b"
alias exifprobe="exifprobe -c"
alias findstring="grep -Rnis"
alias fixscrn="xrandr --output HDMI-A-1 --right-of HDMI-A-0"
alias freshen="sudo apt-get -q -y install --reinstall -o Dpkg::Options::='--force-confold'"
alias funderscores="find . -name \"* *\" -type f | /usr/local/bin/rename 's/ /_/g'"
alias geoip2lookup='mmdblookup --file /usr/share/GeoIP/GeoLite2-ASN.mmdb --ip'
alias geoiplookup='geoiplookup -f /usr/share/GeoIP/GeoIPCity.dat'
alias getchmod="stat -c '%a %n' "
alias gitamend="git commit --amend --cleanup=strip --no-edit"
alias githist="git log --graph --topo-order --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset %C(cyan)<%an>%Creset' --abbrev-commit --date=relative"
alias gitlog_branches="git log --graph --all --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --"
alias gitlog="git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --"
alias gitlog_plain="git log --graph --pretty=format:'%h -%d %s (%cr) <%an>' --abbrev-commit --"
alias gitmodified="git diff --minimal --compact-summary ."
alias git_tags="git fetch -v --all --tags && git for-each-ref --sort=taggerdate --format '%(refname) %(taggerdate)' refs/tags"
alias gituntracked="git ls-files . --exclude-standard --others"
alias globalprefix="export CMAKE_PREFIX_PATH=/usr; export MAKE_PREFIX_PATH=/usr"
alias gpgreset='echo RELOADAGENT | gpg-connect-agent'
alias gpg='/usr/bin/gpg2'
alias hist="history | sed 's/^[ ]*[0-9]\+[ ]*//'"
alias ionice="sudo ionice"
alias journalctl="sudo journalctl"
alias kill="sudo kill"
alias largefiles="sudo find . -xdev -type f -size +50M -printf '%s\t%k\t%p\n' | numfmt --field=1 --from=iec --to=si --padding=8 | sort -rh | head -100"
alias listdbus_sess="dbus-send --session --dest=org.freedesktop.DBus --type=method_call --print-reply /org/freedesktop/DBus org.freedesktop.DBus.ListNames"
alias listdbus_sys="dbus-send --system --dest=org.freedesktop.DBus --type=method_call --print-reply /org/freedesktop/DBus org.freedesktop.DBus.ListNames"
alias listfailed="systemctl list-units --state=failed"
alias localprefix="export CMAKE_PREFIX_PATH=/usr/local; export MAKE_PREFIX_PATH=/usr;"
alias lockresolv="sudo chattr +i /etc/resolv.conf"
alias meminfo="sudo lshw -quiet -short -class memory"
alias mosh='mosh --server/usr/bin/mosh-server'
alias mount="sudo mount"
alias myip6="dig +short -6 @resolver1.ipv6-sandbox.opendns.com myip.opendns.com AAAA"
alias myip="dig -4 +short myip.opendns.com @resolver1.opendns.com"
alias mylocalip="ip addr show | grep -e 'inet' | awk {'print $2'} | grep -E '^192\.168\.*' | cut -d'/' -f1 | head -1"
alias myhost="dig +short -4 -x $(myip)"
alias newpw="pwgen -B 16 1 | tee >(xclip -selection clipboard)"
alias nocomment="sed -e 's/#.*//;/^\s*$/d'"
alias nopreceding="noleading"
alias ntpsync="sudo ntpdate -v -b -s -t 10 time.nist.gov 0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org"
alias optimize="export CFLAGS=\"-Ofast\"; export CPPFLAGS=\"-Ofast\";"
alias othercolumns="awk '{for (i=3; i<NF; i++) printf \"$i\" \" \"; print $NF}'"
alias pulseinputs="pacmd list-sources | grep -e 'index:' -e device.string -e 'name:'"
alias saveaudio="youtube-dl --extract-audio --audio-format best"
alias snd_default_input="pacmd list-sources | grep -e 'index:' -e device.string -e 'name:' | grep -A 1 '*' | tail -1 | cut -d':' -f2 | sed -E 's/(<|>)//g'"
alias snd_default_output="pacmd list-sinks | grep -e 'name:' -e 'index:' | grep -A 1 '*' | tail -1 | cut -d':' -f2 | sed -E 's/(<|>)//g'"
alias pulseoutputs="pacmd list-sinks | grep -e 'name:' -e 'index:'"
alias pulsemodules="pacmd list-modules | grep -e 'name:' | cut -d':' -f2 | sed -E 's/(<|>)//g'"
alias pulseenv="pax11publish -d -i"
alias promreload="curl -X POST http://127.0.0.1:9090/prometheus/-/reload"
alias perlupdate="cpan-outdated -p | cpanm --notest --quiet"
alias pkill="sudo pkill -e"
alias prevdir="cd -"
alias ps_mem="sudo ps_mem"
alias raminfo="sudo dmidecode --quiet --type 17 | more"
alias randhex="openssl rand -hex 16 | tee >(xclip -selection clipboard)"
alias renice="sudo renice"
alias restoreconf="sudo apt-get -q -y install --reinstall -o Dpkg::Options::='--force-confmiss'"
alias reverse="dig +short -4 -x"
alias rotatelogs="/usr/sbin/logrotate /etc/logrotate.conf"
alias routerlog="sudo less +G /var/log/router.log"
alias scanclam="sudo clamscan --block-encrypted --scan-mail=no --scan-archive=yes --max-scansize=500M --exclude-dir=/mnt --exclude-dir=/media --exclude-dir=smb4k --exclude-dir=/run/user/root/gvfs --exclude-dir=/root/.gvfs --exclude-dir=^\/root\/\.clamtk\/viruses --exclude-dir=^\/sys\/ --exclude-dir=^\/dev\/ --exclude-dir=^\/proc\/ --exclude-dir=.thunderbird --exclude-dir=.mozilla-thunderbird --exclude-dir=Mail --exclude-dir=kmail --exclude-dir=evolution --max-filesize=20M --recursive=yes -v"
alias shellformat="shfmt -ci -sr -s -f"
alias fwincoming="ufp -c -i -b | egrep -v '(172.17.0.1|169.254.0.1|224.0.0.[0-9]+|192.168.1.(1|2|255)|239.255.255.250)\s' | egrep -v '(SPT|DPT): 0\s'"
alias fwoutgoing="ufp -c -o -b | egrep -v '(172.17.0.1|169.254.0.1|224.0.0.[0-9]+|192.168.1.(1|2|255)|239.255.255.250)\s' | egrep -v '(SPT|DPT): 0\s'"
alias soundtest="speaker-test -t wav -c 2"
alias startdbus="/usr/bin/dbus-daemon --session --address=unix:path=/run/user/${MYUID}/bus --syslog --fork --systemd-activation"
alias startpulse="/usr/bin/pulseaudio --verbose --use-pid-file --disallow-exit=1 --fail=1 --daemonize -F /etc/pulse/default.pa"
alias suatom="sudo /usr/bin/atom --safe --new-window --clear-window-state"
alias susublime="sudo /opt/sublime_text/sublime_text --new-window"
alias sucat="sudo cat"
alias suchrome="sudo google-chrome --no-sandbox --user-data-dir=/root/.config/google-chrome"
alias sucode="sudo /usr/bin/code --user-data-dir='/root/.config/Code'"
alias sucp="sudo cp"
alias sudo="/usr/bin/sudo -E -H -n -S"
alias suln="sudo ln"
alias sumkdir="sudo mkdir"
alias sumv="sudo mv"
alias suppresserrors="export CFLAGS=\"-Wno-error\"; export CXXFLAGS=\"-Wno-error\""
alias surm="sudo rm"
alias suvim="sudo vim"
alias svncleanup="svn status --no-ignore | grep '^[I?]' | cut -c 9- | while IFS= read -r f; do rm -rf "$f"; done"
alias syslog="sudo less +G /var/log/syslog"
alias systemctl="sudo systemctl"
alias torrenttrackers="git -C /home/$USER/dev/trackerslist pull && cat /home/$USER/dev/trackerslist/trackers_best.txt | tee >(xclip -selection clipboard)"
alias torlog="sudo less +G /var/log/tor/notice.log"
alias totp="oathtool -b --totp $(cat ~/.google_authenticator | head -1)"
#alias totp_twitter="oathtool -b --totp REDACTED"
#alias totp2="oathtool -b --totp REDACTED"
alias ufwlog="sudo less +G /var/log/ufw.log"
alias updatecacerts="sudo mk-ca-bundle -kmvf /etc/ssl/cacert.pem"
alias updategotools="go get -u golang.org/x/tools/..."
alias updatenodejs="npm -g update --unsafe-perm=true --allow-root"
alias updatepy3="python3 -m pip_review --auto && pip-check -c pip3 -rfHu"
alias updatepy2="python2 -m pip_review --auto && pip-check -c pip2 -rfHu"
alias vlc="/usr/bin/vlc"
alias weather='curl wttr.in'
alias suptcp="ss -t -4 -l -r -n -p -f inet '( src 0.0.0.0 )'"
alias supudp="ss -u -4 -l -r -n -p -f inet '( src 0.0.0.0 )'"
alias sup6="ss -t -u -4 -l -r -n -p '( src 0.0.0.0 )'"
alias connections="ss -t -u -4 -n -p -f inet state ESTABLISHED src 192.168.1.200"
alias xwindows="xlsclients | awk {'print $2'} | sort -u && xwininfo -root -children"
alias getxwindowid="xwininfo"
alias zcalc="/usr/bin/zsh -c zcalc"
alias zcashwallet="java -jar /home/$USER/dev/zcash-swing-wallet/build/jars/ZCashSwingWalletUI.jar"
alias zero="truncate -s 0"
export SSH_ENV="$HOME/.ssh/environment"
if [[ -f "${SSH_ENV}" ]]; then
eval "$(cat "${SSH_ENV}")"
fi
if [[ -z "$SSH_AUTH_SOCK" ]] || [[ -z "$SSH_AGENT_PID" ]]; then
source ~/.ssh/agent.sh
fi
if [ -z "${GPG_AGENT_INFO}" ]; then
eval "$(gpg-agent --daemon --options ~/.gnupg/gpg-agent.conf)"
fi
if [[ ! -d "/run/user/$(id -u)" ]]; then
sudo mkdir -p "/run/user/$(id -u)"
sudo chown -R "$(id -u):$(id -u)" "/run/user/$(id -u)"
fi
if [ -z "${DIRMNGR_INFO}" ]; then
eval "$(dirmngr --daemon --options ~/.gnupg/dirmngr.conf)"
fi
#eval $(cat ~/.gnupg/gpg-agent-info)
export ANSIBLE_NOCOWS=1
export ANSIBLE_LOAD_CALLBACK_PLUGINS=1
#export ARCH=amd64
export ATOM_HOME="$HOME/.atom"
export AUTOMATED_TESTING=0
export AUTO_NTFY_DONE_IGNORE="vim screen tmux sudo ssh rsync byobu irssi nano"
export AUTO_NTFY_DONE_LONGER_THAN=-L30
export AUTO_NTFY_DONE_UNFOCUSED_ONLY=-b
export BROWSER="google-chrome"
export BZIP2="-9"
export CHARSET=UTF-8
export COLUMNS=100; export LINES=37;
export CPANSCRIPT_LOGLEVEL=WARN
export CPAN_RUN_SHELL_TEST_WITHOUT_EXPECT=1
export CURL_CA_BUNDLE="/etc/ssl/certs/ca-certificates.crt"
export CVSROOT="/home/$USER/dev/"
export DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/$(id -u)/bus"
export COMPOSE_TLS_VERSION="TLSv1_2"
export DEB_BUILD_HARDENING=1
export DEB_BUILD_MAINT_OPTIONS="hardening=+all"
#export DEBFULLNAME=""
#export DEBEMAIL=""
export DOCKER_CERT_PATH="/home/$USER/.docker"
export DOCKER_TLS_VERIFY=1
export DOCKER_HOST=tcp://localhost:2376
export DBUS_SYSTEM_BUS_ADDRESS="unix:path=/var/run/dbus/system_bus_socket"
export DISPLAY="$(activedisplay)"
export EDITOR="vim"
export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
export GIT_CURL_VERBOSE=1
export GIT_AUTHOR_NAME=''
export GIT_COMMAND="/usr/bin/git"
export GIT_COMMITTER_NAME=''
export GIT_DISCOVERY_ACROSS_FILESYSTEM=1
export GIT_EDITOR="vim"
export GIT_PROMPT_DISABLE=0
export GIT_PROMPT_ONLY_IN_REPO=0
export GIT_PROMPT_FETCH_REMOTE_STATUS=0
export GIT_PROMPT_SHOW_UPSTREAM=0
export GIT_PROMPT_IGNORE_SUBMODULES=1
export GIT_PROMPT_WITH_VIRTUAL_ENV=1
export GIT_PROMPT_SHOW_UPSTREAM=1
export GIT_PROMPT_SHOW_UNTRACKED_FILES=normal
export GIT_PROMPT_SHOW_CHANGED_FILES_COUNT=1
export GIT_PROMPT_COMMAND_FAIL="😠 ${Red}✘ "
export GIT_PROMPT_COMMAND_OK="😊 ${Green}✔ "
#export GIT_PROMPT_START="$(__vte_osc7)"
export GIT_PROMPT_THEME="Solarized_UserHost"
export GIT_PROMPT_WITH_USERNAME_AND_REPO=1
#export GIT_PROMPT_END="$(__vte_osc7) $(smiley)"
export GNOME_ACCESSIBILITY=0
export GOOGLE_APPLICATION_CREDENTIALS=''
export GOPATH="$HOME/go"
export GOCACHE="$HOME/.cache/go-build"
export GOARCH="amd64"
export GOHOSTARCH="amd64"
export GOHOSTOS="linux"
export GOOS="linux"
export GOROOT="/usr/local/go"
export GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
#export GREP_OPTIONS='--color=auto'
export CGO_CFLAGS="-g -Ofast -O3 -O2"
export CGO_CXXFLAGS="-g -Ofast -O3 -O2"
export CGO_FFLAGS="-g -Ofast -O3 -O2"
export CGO_LDFLAGS="-g -Ofast -O3 -O2"
export GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -Ofast -O3 -O2 -gno-record-gcc-switches"
export GPG_TTY=$(tty)
export GDK_SYNCHRONIZE=0
#export GTK_IM_MODULE_FILE=/etc/gtk-2.0/gtk.immodules
#export GTK_IM_MODULE_FILE=/usr/lib/gtk-3.0/3.0.0/immodules.cache
#export GTK_IM_MODULE=ibus
export GZIP="-9"
export INSTALL_MOD_STRIP=1
export JAVA_HOME="/opt/jre1.8.0_211"
export JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
export JAVA_OPTS="-XX:+IgnoreUnrecognizedVMOptions -Djava.net.preferIPv4Stack=true"
export JAVA_OPTIONS="${JAVA_OPTS}"
export KEYBASE_AUTOSTART=0
export KEYBASE_NO_GUI=0
export KEYBASE_NO_KBFS=0
export KEYBASE_SYSTEMD=1
export LIBGL_DEBUG=verbose
export VAAPI_MPEG4_ENABLED=true
export INTEL_NO_HW=1
export LIBGL_DRI3_DISABLE=false
export LIBGL_ALWAYS_SOFTWARE=false
export LIBGL_DRIVERS_PATH="/usr/local/lib/x86_64-linux-gnu/dri:/usr/lib/x86_64-linux-gnu/dri"
export MESA_LOG_FILE=/var/log/mesa.log
export LPASS_HOME="$HOME/.lpass"
export LPASS_AGENT_TIMEOUT=0
export LPASS_AGENT_DISABLE=0
export LPASS_ASKPASS="/usr/bin/zenity --password --title=Password --timeout 30"
export LPASS_CLIPBOARD_COMMAND=/usr/bin/xclip
export LPDEST="/dev/null"
#export LD_LIBRARY_PATH=/opt/qt/5.12.3/gcc_64/lib
#export MAKEFLAGS="-j$((NB_CORES)) -l${NB_CORES}"
export MALLOC_CHECK_=0
export MESON_TESTTHREADS=16
export NODE_EXTRA_CA_CERTS="/etc/ssl/cacert.pem"
export NONINTERACTIVE_TESTING=1
export NB_CORES=$(grep -c '^processor' /proc/cpuinfo)
export NO_AT_BRIDGE=1
export NPM_CONFIG_PREFIX=/usr/local
export NVM_DIR="$HOME/.nvm"
export OOO_FORCE_DESKTOP="gnome"
export OS=linux
export PACKER_LOG=1
export PAGER=less
export PARALLELMFLAGS="-j8"
export PERLBREW_CPAN_MIRROR="https://mirrors.sonic.net/cpan/"
export PERLBREW_HOME=/home/$USER/.perlbrew
export PERLBREW_ROOT=/usr/share/perl/perlbrew
export PERLBREW_PERL=perl-5.31.0
export PERL_CANARY_STABILITY_NOPROMPT=1
export PERL_CPANM_OPT="--verbose --notest --no-interactive --sudo --cascade-search --save-dists=/usr/share/perl/cpanm/cache --mirror=/usr/share/perl/cpanm/cache --mirror=https://mirrors.sonic.net/cpan"
#export CPAN_OPTS="-T -X"
export PERL_DEBUG_MSTATS=0
export PERL_MM_NONINTERACTIVE=1
export PERL_MM_USE_DEFAULT=1
export PERL_DL_NONLAZY=0
#export PERL5LIB="/home/$USER/perl5/lib/perl5${PERL5LIB:+:${PERL5LIB}}"; export PERL5LIB;
#export PERL_LOCAL_LIB_ROOT="/home/$USER/perl5${PERL_LOCAL_LIB_ROOT:+:${PERL_LOCAL_LIB_ROOT}}"; export PERL_LOCAL_LIB_ROOT;
#export PERL_MB_OPT="--install_base \"/home/$USER/perl5\""; export PERL_MB_OPT;
#export PERL_MM_OPT="INSTALL_BASE=/home/$USER/perl5"; export PERL_MM_OPT;
export PERLLIB="/usr/share/perl/5.24.1:/usr/share/perl/5.28.1:/usr/share/perl/5.29.8"
export PERL5LIB="${PERLLIB}"
export PLATFORM=$(uname -s | sed -e 's/ */-/g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/')
#export PKG_CONFIG_PATH="/usr/lib/x86_64-linux-gnu/pkgconfig"
export PKG_CONFIG_PATH="/opt/qt/5.12.3/gcc_64/lib/pkgconfig"
#export POSIXLY_CORRECT=1
#export PROMPT_COMMAND='echo -ne "$(smiley); PS1=$(\d \T\n[\u@\H\t\d\t\w\$)"'
#function custom_prompt() {
# __git_ps1 "\[\033[0;31m\]\u \[\033[0;36m\]\h:\w\[\033[00m\]" " \n\[\033[0;31m\]>\[\033[00m\] " " %s"
# VTE_PWD_THING="$(__vte_osc7)"
# PS1="$PS1$VTE_PWD_THING"
#}
export PROJECT_HOME="$HOME/dev"
#export PULSE_COOKIE="/tmp/pulse-cookie"
export PULSE_SERVER="unix:/tmp/pulse-socket"
export PYTHON="/usr/bin/python3.7"
export PYTHONDONTWRITEBYTECODE=0
export PYTHONHTTPSVERIFY=1
export QUOTING_STYLE=literal
export QT_ACCESSIBILITY=0
export QT_X11_NO_MITSHM=1
export QT_PLUGIN_PATH=/opt/qt/5.12.3/gcc_64/plugins/platforms
#export QT_IM_MODULE=ibus
export RELEASE_TESTING=0
export RUST_BACKTRACE=1
export S_COLORS=auto
export SDL_AUDIODRIVER='alsa'
export SDL_VIDEODRIVER='x11'
export SHELL="/bin/bash"
export SSH_ASKPASS="/usr/bin/ssh-askpass"
#export SOCKS5_PASSWORD="REDACTED"
export SOCKS5_SERVER="127.0.0.1:9050"
export SOCKS5_USER="$USER"
#export SSH_AUTH_SOCK="/home/$USER/.gnupg/S.gpg-agent.ssh"
#export SSH_AUTH_SOCK='/run/user/1000/gnupg/S.gpg-agent.ssh'
export TAR_OPTS="--auto-compress --one-file-system --quoting-style='literal' --utc --verbose --deference --compress --totals=SIGQUIT --ignore-failed-read --seek --wildcards --no-acls --no-selinux --no-xattrs --
--format=gnu --blocking-factor=20"
export TERM=xterm-256color
export TEXARCH=x86_64-linux
export TMPDIR="/var/tmp"
export TOR_CONTROL_HOST=127.0.0.1
#export TOR_CONTROL_PASSWD='"REDACTED"'
export TOR_CONTROL_PORT=9051
export TOR_CONTROL_COOKIE_AUTH_FILE=/var/run/tor/control.authcookie
export TOR_NO_DISPLAY_NETWORK_SETTINGS=0
export TOR_SKIP_CONTROLPORTTEST=1
export TOR_SKIP_LAUNCH=1
export TOR_SOCKS_HOST=127.0.0.1
export TOR_SOCKS_PORT=9050
#export TOR_TRANSPROXY=1
export TZ="America/Los_Angeles"
export USER="$(id -un)"
export CHECKPOINT_DISABLE=1
export VAGRANT_CHECKPOINT_DISABLE=1
export VAGRANT_DEFAULT_PROVIDER="virtualbox"
export VAGRANT_DISABLE_VBOXSYMLINKCREATE=1
export VAGRANT_INSTALL_LOCAL_PLUGINS=1
export VAGRANT_LOCAL_PLUGINS_LOAD=1
export VDPAU_DRIVER=va_gl
export VAGRANT_LOG=warn
export VAGRANT_DISABLE_RESOLV_REPLACE=1
export VAGRANT_FORCE_COLOR=1
export LIBVA_DRIVER_NAME=radeonsi_drv_video
export WINEARCH="win64"
export WINEPREFIX="$HOME/.wine"
export WORKON_HOME="/opt/venvs"
export XDG_RUNTIME_DIR="/run/user/$(id -u)"
#export XMODIFIERS=@im=ibus
export XZ_OPTS="-9"; export XZ_OPT="${XZ_OPTS}";
export XZ_DEFAULTS="-T 8"
# builds
export CFLAGS="-g -O3 -Wno-error -m64 -march=native"
export CPPFLAGS="-O3 -Wno-error"
export CXXFLAGS="-g -O3 -Wno-error -m64 -march=native -ftree-vectorize -pipe"
export FCFLAGS="-g -O3"
export FFLAGS="-g -O3"
export GCJFLAGS="-g -O3"
export LDFLAGS="-Wl,-z,relro"
export OBJCFLAGS="-g -O3 -Wno-error"
export OBJCXXFLAGS="-g -O3 -Wno-error"
export CPU_FLAGS_X86="aes avx avx2 f16c fma3 mmx mmxext pclmul popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3"
#export DEB_SIGN_KEYID=""
export DH_VERBOSE=1
# locale
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export LC_CTYPE="en_US.UTF-8"
export LC_NUMERIC="en_US.UTF-8"
export LC_TIME="en_US.UTF-8"
export LC_COLLATE="en_US.UTF-8"
export LC_MONETARY="en_US.UTF-8"
export LC_MESSAGES="en_US.UTF-8"
export LC_PAPER="en_US.UTF-8"
export LC_NAME="en_US.UTF-8"
export LC_ADDRESS="en_US.UTF-8"
export LC_TELEPHONE="en_US.UTF-8"
export LC_MEASUREMENT="en_US.UTF-8"
export LC_IDENTIFICATION="en_US.UTF-8"
export LC_ALL="en_US.UTF-8"
# PATH modifications
export PATH="/snap/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$HOME/.local/bin:$HOME/bin"
export PATH="$PATH:$HOME/go/bin"
export PATH="$PATH:$HOME/.cargo/bin"
export PATH="$HOME/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin:$PATH"
export PATH=$PATH:"/opt/imagemagick/bin"
export PATH=$PATH:"/opt/Android/SDK/platform-tools"
export PATH="/opt/jre-1.8.0_211/bin:$PATH"
export PATH="/opt/qt/5.12.3/gcc_64/bin:$PATH"
export PATH=$PATH:"/opt/Android/platform-tools"
export PATH="/usr/lib/ccache:$PATH"
export PATH="/opt/gradle-4.1/bin:$PATH"
export PATH="/snap/bin:$PATH"
#export PATH="/opt/node-v6.16.0-linux-x64/bin:$PATH"
export PATH="/opt/node-v10.15.3-linux-x64/bin:$PATH"
#export PATH="/opt/node-v11.13.0-linux-x64/bin:$PATH"
#export PATH="/opt/node-v8.16.0-linux-x64/bin:$PATH"
export PATH="/opt/wine64/bin:$PATH"
export PATH="/usr/local/texlive/2018/bin/x86_64-linux:$PATH"
#export PATH="$PATH:$HOME/.rvm/bin"
#export PATH="/home/$USER/.gem/ruby/2.6.0/bin:$PATH"
#export PATH="/home/$USER/.gem/ruby/2.6.3/bin:$PATH"
export PATH="/usr/lib/rstudio/bin:$PATH"
if [ -d ~/.bash-git-prompt ]; then source ~/.bash-git-prompt/gitprompt.sh; fi
source ~/.bash_profile
if [ -f /etc/profile.d/bash_completion.sh ]; then source /etc/profile.d/bash_completion.sh; fi
if [ -d ~/.homesick ]; then source ~/.homesick/repos/homeshick/homeshick.sh; fi
if [ -d /opt/perl5 ]; then source /opt/perl5/etc/bashrc; fi
if [ -f /usr/local/bin/virtualenvwrapper.sh ]; then source /usr/local/bin/virtualenvwrapper.sh; fi
if [ -f /etc/profile.d/nodejs.sh ]; then source /etc/profile.d/nodejs.sh; fi
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
[ -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
if $(python3 -c "import sys, pkgutil; sys.exit(0 if pkgutil.find_loader('ntfy') else 1)") && [[ $MYUID -ne 0 ]]; then
/bin/true #eval "$(ntfy shell-integration)"
fi
if [ -f '/opt/google-cloud-sdk/path.bash.inc' ]; then . '/opt/google-cloud-sdk/path.bash.inc'; fi
if [ -f '/opt/google-cloud-sdk/completion.bash.inc' ]; then . '/opt/google-cloud-sdk/completion.bash.inc'; fi
# [[ -f ~/.bash-preexec.sh ]] && source ~/.bash-preexec.sh
export __bp_enable_subshells="true"
function precmd_git_dirty() {
if [ -d "$PWD/.git" ]; then
git diff-index --quiet HEAD -- &>/dev/null
local GITSTATUS=$?
if [ "$GITSTATUS" -eq 1 ]; then
failure "The current working directory is a Git repository with unstaged changes."
fi
fi
}
#preexec_functions+=(precmd_git_dirty)
#precmd_functions+=(precmd_git_dirty)
# exit status emoji
#export PROMPT_COMMAND='echo -ne "$(smiley) \033]0;${USER}@${HOSTNAME}: ${PWD}\007"'
#export PROMPT_COMMAND='echo -ne "$(smiley)$(__vte_osc7) \033]0 ${USER}@${HOSTNAME}: ${PWD}\007"'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment