My .bashrc Example File
My .bashrc and .help files. This is not meant to be plug and play, but more of an example. It will require editing depending on your system. For instance the update alias would be distro dependant, the shortcut locations and weather location would be personal, and some scripts and aliases rely on other software to be installed such as fzf and tools like zip/rar/7z.
Click on download to access the raw files for downloading or click on view to see the files with syntax highlighting right on this page. Thank you!
#
# ~/.bashrc
#
##########################
#Commands
##########################
#edit this file
alias bashrc="micro ~/.bashrc"
#search files in current dir and subdirs using fzf
alias search='find . -type f | fzf -m'
#show battery % on laptop
alias batt="echo 'BAT 1' ; upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep 'time to empty\|percentage:' ; echo 'BAT 2' ; upower -i /org/freedesktop/UPower/devices/battery_BAT1 | grep 'time to empty:\|percentage:'"
#fullcharges batteries one time instead of 40%
alias fullcharge="sudo tlp fullcharge BAT0 ; sudo tlp fullcharge BAT1"
#display the weather
alias wea="curl wttr.in/NewYork?u"
#display crypto prices
alias xrp="curl -s rate.sx/xrp > test.txt ; echo 'XRP Price:' ; grep --color=never avg: test.txt; rm test.txt"
alias btc="curl -s rate.sx/btc > test.txt ; echo 'BTC Price:' ; grep --color=never avg: test.txt; rm test.txt"
alias eth="curl -s rate.sx/eth > test.txt ; echo 'ETH Price:' ; grep --color=never avg: test.txt; rm test.txt"
#connect to home vpn
alias vpn='sudo wg-quick up home'
#reboot into windows for dual-boot systems, set to correct index
alias win='sudo grub-reboot 2 && sudo reboot now'
#sends a wol packet to my desktop so I can wake it if sleeping and ssh into it
alias wol-lianli='wol --verbose 04:7C:16:5B:DC:44'
#display help file for these commands
alias hlp='cat ~/.help | more'
#delete exif data from given files, warning overwrites original files
alias delex='exiftool -overwrite_original -all= '
#change some default command flags
alias cp="cp -i" # confirm before overwriting something
alias df='df -h' # human-readable sizes
alias free='free -m' # show sizes in MB
alias more=less
alias igrep='grep -i' # case insensitive
#speedtest, requires docker
alias speedtest="sudo docker run -it --rm --name fast-cli mschirrmeister/fast-cli:latest fast --upload"
##########################
#Directory Commands
##########################
alias ..='cd ..'
alias ..2='cd ../..'
alias ..3='cd ../../..'
alias ll='ls -lh --group-directories-first'
alias lla='ls -lah --group-directories-first'
alias lsa='ls -ah --group-directories-first'
alias l.='ls -d .* --color=auto --group-directories-first'
alias list='ls -halt | head'
##########################
#Directory Shortcuts
##########################
alias movies='cd /shared/media/movies/'
alias music='cd /shared/media/music/'
alias tv='cd /shared/media/tv'
alias public='cd /shared/public'
alias common='cd /shared/common'
##########################
#Software/Updates
##########################
alias update='sudo pacman -Syu --color=auto' #for arch based systems
alias psearch='pacman -Ss --color=auto ' #for arch based systems
#alias update='sudo apt update && sudo apt upgrade' #for debian based systems
#alias psearch='apt search' #for debian based systems
alias yolo='yes | update'
alias fps='flatpak search --columns=name:f,version:f,description:f,application:f'
##########################
#Terminal Options
##########################
#set prompt
PROMPT_COMMAND="echo -ne \"\033]0;$1 local\007\""
#set default editor
export VISUAL="micro"
#history settings
export HISTSIZE=1000
export HISTCONTROL=ignoredups
shopt -s histappend #enable history appending instead of overwriting.
#enable tab completion for sudo
complete -cf sudo
#checks if window size changed
shopt -s checkwinsize
#expand aliases in non-interactive shells
shopt -s expand_aliases
#appends / with tab on the end of symlinked dirs, careful with this and using rm, will delete actual directories instead of the symlinks, make sure to delete the appended / if you want to delete the symlink
bind 'set mark-symlinked-directories on'
##########################
#Set custom window title
##########################
function title() {
if [[ -z "$ORIG" ]]; then
ORIG=$PS1
fi
TITLE="\[\e]2;$*\a\]"
PS1=${ORIG}${TITLE}
}
[[ $- != *i* ]] && return
##########################
#Fuzzy Finder
##########################
#### ctrl+r - search bash history
bind '"\C-r": "\C-x1\e^\er"'
bind -x '"\C-x1": __fzf_history';
__fzf_history ()
{
__ehc $(history | fzf --tac --tiebreak=index | perl -ne 'm/^\s*([0-9]+)/ and print "!$1"')
}
__ehc()
{
if
[[ -n $1 ]]
then
bind '"\er": redraw-current-line'
bind '"\e^": magic-space'
READLINE_LINE=${READLINE_LINE:+${READLINE_LINE:0:READLINE_POINT}}${1}${READLINE_LINE:+${READLINE_LINE:READLINE_POINT}}
READLINE_POINT=$(( READLINE_POINT + ${#1} ))
else
bind '"\er":'
bind '"\e^":'
fi
}
#### fkill - kill process with fzf
fkill() {
local pid
if [ "$UID" != "0" ]; then
pid=$(ps -f -u $UID | sed 1d | fzf -m | awk '{print $2}')
else
pid=$(ps -ef | sed 1d | fzf -m | awk '{print $2}')
fi
if [ "x$pid" != "x" ]
then
echo $pid | xargs kill -${1:-9}
fi
}
#### fe - Open the selected file with the default editor
# - Bypass fuzzy finder if there's only one match (--select-1)
# - Exit if there's no match (--exit-0)
fe() {
IFS=$'\n' files=($(fzf-tmux --query="$1" --multi --select-1 --exit-0))
[[ -n "$files" ]] && micro "${files[@]}"
}
#### fdd - change dir
fdd() {
local dir
dir=$(find ${1:-.} -path '*/\.*' -prune \
-o -type d -print 2> /dev/null | fzf +m) &&
cd "$dir"
}
#### fd - change dir, list subdirs
fd() {
DIR=`find * -maxdepth 0 -type d -print 2> /dev/null | fzf-tmux` \
&& cd "$DIR" && fd
}
#### fda - change dir, including hidden directories
fda() {
local dir
dir=$(find ${1:-.} -type d 2> /dev/null | fzf +m) && cd "$dir"
}
##########################
#Colors
##########################
# Set colorful PS1 only on colorful terminals.
# dircolors --print-database uses its own built-in database
# instead of using /etc/DIR_COLORS. Try to use the external file
# first to take advantage of user additions. Use internal bash
# globbing instead of external grep binary.
safe_term=${TERM//[^[:alnum:]]/?} # sanitize TERM
match_lhs=""
[[ -f ~/.dir_colors ]] && match_lhs="${match_lhs}$(<~/.dir_colors)"
[[ -f /etc/DIR_COLORS ]] && match_lhs="${match_lhs}$(</etc/DIR_COLORS)"
[[ -z ${match_lhs} ]] \
&& type -P dircolors >/dev/null \
&& match_lhs=$(dircolors --print-database)
[[ $'\n'${match_lhs} == *$'\n'"TERM "${safe_term}* ]] && use_color=true
if ${use_color} ; then
# Enable colors for ls, etc. Prefer ~/.dir_colors #64489
if type -P dircolors >/dev/null ; then
if [[ -f ~/.dir_colors ]] ; then
eval $(dircolors -b ~/.dir_colors)
elif [[ -f /etc/DIR_COLORS ]] ; then
eval $(dircolors -b /etc/DIR_COLORS)
fi
fi
if [[ ${EUID} == 0 ]] ; then
PS1='\[\033[01;31m\][\h\[\033[01;36m\] \W\[\033[01;31m\]]\$\[\033[00m\] '
else
PS1='\[\033[01;32m\][\u@\h\[\033[01;37m\] \W\[\033[01;32m\]]\$\[\033[00m\] '
fi
alias ls='ls --color=auto'
alias grep='grep --colour=auto'
alias egrep='egrep --colour=auto'
alias fgrep='fgrep --colour=auto'
else
if [[ ${EUID} == 0 ]] ; then
# show root@ when we don't have colors
PS1='\u@\h \W \$ '
else
PS1='\u@\h \w \$ '
fi
fi
unset use_color safe_term match_lhs sh
##########################
# # ex - archive extractor script
# # usage: extract <file>
##########################
extract ()
{
if [ -f $1 ] ; then
case $1 in
*.tar.bz2) tar xjf $1 ;;
*.tar.gz) tar xzf $1 ;;
*.bz2) bunzip2 $1 ;;
*.rar) unrar x $1 ;;
*.gz) gunzip $1 ;;
*.tar) tar xf $1 ;;
*.tbz2) tar xjf $1 ;;
*.tgz) tar xzf $1 ;;
*.zip) unzip $1 ;;
*.Z) uncompress $1;;
*.7z) 7z x $1 ;;
*) echo "'$1' cannot be extracted via extract()" ;;
esac
else
echo "'$1' is not a valid file"
fi
}
##########################
#Other adds below
#################################################### ##########################
Directory Commands FZF Functions
########################## ##########################
.. - parent dir CTRL+R - command history
..2 - two parent dirs fkill - process killer
..3 - three parent dirs fd - change directory
ll - list long fdd - change directory, list subdirs
lla - list long all fda - change directory, list hidden
lsa - list all fe - open file with default editor
l. - list hidden search - search filenames in ./ dir
list - show top most recent files in dir
##########################
Commands
##########################
title - change terminal title
rg - find strings in files
delex - deletes all exif data from given image files, overwrites originals
igrep - grep, ignore case
extract <file> - extract any compressed filetype
batt - show battery percentages
fullcharge - set batteries to charge fully one time
wea - show weather
btc - show bitcoin price
eth - show ethereum price
xrp - show ripple price
wol-lianli - send magic packet to desktop
win - reboot into windows
vpn - connect to home wireguard vpn
hlp - show this help file
##########################
Software/Updates
##########################
update - system update
psearch - package search
yolo - adventurous update
fps - flatpak search
##########################
Shortcuts to Directories
##########################
movies tv public common
##########################
SSH
##########################
computer1 computer2