Not sure if this has been done before, but would you care to share your bashrc commands.
Below I have listed all my bashrc
Note mac user's, i'm running Ubuntu 18.04
cat ~/.bashrc
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
# Define a few Colours
BLACK='\e[0;30m'
BLUE='\e[0;34m'
GREEN='\e[0;32m'
CYAN='\e[0;36m'
RED='\e[0;31m'
PURPLE='\e[0;35m'
BROWN='\e[0;33m'
LIGHTGRAY='\e[0;37m'
DARKGRAY='\e[1;30m'
LIGHTBLUE='\e[1;34m'
LIGHTGREEN='\e[1;32m'
LIGHTCYAN='\e[1;36m'
LIGHTRED='\e[1;31m'
LIGHTPURPLE='\e[1;35m'
YELLOW='\e[1;33m'
WHITE='\e[1;37m'
NC='\e[0m' # No Color
# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROL=ignoreboth
# append to the history file, don't overwrite it
shopt -s histappend
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=9999999999999000000
HISTFILESIZE=900000000999999999
PROMPT_COMMAND="history -a"
export HISTSIZE PROMPT_COMMAND
# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize
# If set, the pattern "**" used in a pathname expansion context will
# match all files and zero or more directories and subdirectories.
#shopt -s globstar
# make less more friendly for non-text input files, see lesspipe(1)
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
debian_chroot=$(cat /etc/debian_chroot)
fi
# set a fancy prompt (non-color, unless we know we "want" color)
# case "$TERM" in
# xterm-color) color_prompt=yes;;
# esac
# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
# force_color_prompt=yes
# if [ -n "$force_color_prompt" ]; then
# if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
# # We have color support; assume it's compliant with Ecma-48
# # (ISO/IEC-6429). (Lack of such support is extremely rare, and such
# # a case would tend to support setf rather than setaf.)
# color_prompt=yes
# else
# color_prompt=
# fi
# fi
# if [ "$color_prompt" = yes ]; then
# PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
# #PS1="\u@\h:\w\\$ \[$(tput sgr0)\]"
# else
# PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
# fi
# unset color_prompt force_color_prompt
# # 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
# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
# functions definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_functions, instead of adding them here directly.
if [ -f ~/.bash_functions ]; then
. ~/.bash_functions
fi
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
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 [ -f /etc/bash_completion.d/git-prompt ]; then
. /etc/bash_completion.d/git-prompt
fi
if [ -f /var/run/reboot-required ]; then
printf "$(tput smso)$(tput setaf 1)[*** Hello ${USER}, you must reboot your machine ***]$(tput sgr0)\n";
fi
if [[ $- == *i* ]]; then
bind '"\e[A": history-search-backward'
bind '"\e[B": history-search-forward'
bind '"\e[1;5C": forward-word'
bind '"\e[1;5D": backward-word'
bind '"\e[5C": forward-word'
bind '"\e[5D": backward-word'
bind '"\e\e[C": forward-word'
bind '"\e\e[D": backward-word'
bind 'set show-all-if-ambiguous on'
bind 'set completion-ignore-case on'
fi
hash -r
export PATH=$PATH:$HOME/bin
########### Welcome Message ###########
IP_ADD=`ip addr | grep -w inet | gawk '{if (NR==2) {$0=$2; gsub(/\//," "); print $1;}}'`
printf "${LIGHTGREEN}Hello, $USER@${IP_ADD}\n"
printf "Today is, $(date)\n";
printf "Sysinfo: $(uptime)${NC}\n"
I moved all my aliases to a different file
cat .bash_aliases
# enable color support of ls and also add handy aliases
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
# some more ls aliases
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
alias lh='ls -lh'
# Network Start, Stop, and Restart
alias light='xbacklight -set'
# Apt
alias update='sudo apt -y update'
alias upgrade='sudo apt-get -y update && sudo apt-get -y --allow-unauthenticated upgrade && sudo apt-get autoclean && sudo apt-get autoremove && exit 0'
alias search='sudo apt search'
alias links='links2'
# Install and Remove Packages
alias install='sudo apt-get -y install'
alias uninstall='sudo apt-get --purge autoremove '
alias search-installed='sudo dpkg --get-selections '
alias upgrade-pips='sudo pip freeze --local | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 sudo pip install -U
'
#alias cleanPC='sudo apt-get -y autoclean && sudo apt-get -y clean && sudo apt-get -y autoremove'
alias lsdir='ls -ld */'
alias display='eog -w'
alias emptyDir='find . -empty -type d -delete'
alias meng='cd ${HOME}/Dropbox/MEng_Stuff/MEng-Progress'
alias media='sshfs -o reconnect media@192.168.1.10:/mnt /home/"${USER}"/mnt/media_srv'
alias reboot='sudo shutdown -r now'
alias shutdown='sudo shutdown -h now'
alias paux='ps aux | grep'
alias cd.='cd ..'
alias ..='cd ..'
alias ...='cd ../../../'
alias ....='cd ../../../../'
alias .....='cd ../../../../'
alias .4='cd ../../../../'
alias .5='cd ../../../../..'
alias cd..='cd ..'
alias youtube="youtube-dl"
# Useful Alias
# Add an "alert" alias for long running commands. Use like so:
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
alias killfirefox="pkill -9 firefox"
alias killslack="pkill -9 slack"
alias CD='cd'
# Log into to Server
I moved all my functions to a different file
cat .bash_functions
# Useful Function
function commiter() {
# Add file, commit and push
git add -f "$1";
if [ "$2" == "" ]; then
git commit -m"Updated $1";
else
git commit -m"$2";
fi;
$(git push -q >> /dev/null 2>&1) &
}
function ssh() {
# Always ssh with -X
command ssh -X "$@"
}
function rsync(){
command rsync --progress "$@"
}
function extract () {
if [ -f $1 ] ; then
case $1 in
*.tar.bz2) tar xjf $1 ;;
*.tar.gz) tar xzf $1 ;;
*.bz2) bunzip2 $1 ;;
*.rar) rar 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
}
function psgrep() {
if [ ! -z $1 ] ; then
echo "Grepping for processes matching $1..."
ps aux | grep $1 | grep -v grep
else
echo "!! Need name to grep for"
fi
}
#source $HOME/.opt/Xilinx/Vivado/2017.2/settings64.sh
#source $HOME/.opt/Vivado/2018.1/settings64.sh
#export YOCTODIR=$HOME/Documents/Xilinx/EmbeddedLinux/Yocto/poky
#export PETADIR=$HOME/Documents/Xilinx/EmbeddedLinux/Petalinux
function cd {
# The 'builtin' keyword allows you to redefine a Bash builtin without
# creating a recursion. Quoting the parameter makes it work in case there are spaces in
# directory names.
builtin cd "$@"
# if [ "$PWD" == "$YOCTODIR" ] ;
# then
# bash $YOCTODIR/.source_yocto
# elif [ "$PWD" == "$PETADIR" ] ;
# then
# bash $PETADIR/.source_petalinux
# else
ls -thor ;
# fi
}
function pip() {
if [[ "$1" == "install" ]]; then
shift 1
command pip install --no-cache-dir -U "$@"
else
command pip "$@"
fi
}
#function sudo() {
# if [[ "$1" == "su" ]]; then
# shift 1
# printf "$(tput smso)$(tput setaf 1) [*** With great power comes great responsibility ***] $(tput sgr0)\n\n\n"
# command sudo bash -l
# else
# command sudo "$@"
# fi
#}
git_branch () {
# Get current Git branch
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}
git_last_update () {
# Get last update on current Git branch
git log 2> /dev/null | head -n 3 | grep ^Date | cut -f4- -d' ';
}
export PS1="\[\033[0;32m\]\[\033[0m\033[0;38m\]\u\[\033[0;36m\]@\[\033[0;36m\]\h:\w\[\033[0;32m\] \$(git_branch) \$(git_last_update)\n\[\033[0;32m\]└─\[\033[0m\033[0;31m\] [\D{%F %T}] \$\[\033[0m\033[0;32m\] >>>\[\033[0m\] "
function disconnect() {
# Disconnect all mounted disks
for DIR in $(ls "${HOME}/mnt"); do
/bin/fusermount -u -z "${DIR}" || true
done
}
function connectSSHFS(){
if timeout 2 ping -c 1 -W 2 192.168.4.23 &> /dev/null; then
timeout 2 sshfs -o reconnect,ServerAliveInterval=5,ServerAliveCountMax=5 \
192.168.4.23:/ /home/"${USER}"/mnt/dbelab04 &>/dev/null ;
else
fusermount -u -z ~/mnt/dbelab04 ;
fi
}
function dbelab06mount(){
if timeout 2 ping -c 1 -W 2 192.168.4.14 &> /dev/null; then
timeout 2 sshfs -o reconnect,ServerAliveInterval=5,ServerAliveCountMax=5 \
192.168.4.14:/ /home/"${USER}"/mnt/dbelab06 &>/dev/null ;
else
fusermount -u -z ~/mnt/dbelab06 ;
fi
}
function cmc2mount(){
if timeout 2 ping -c 1 -W 2 10.103.254.3 &> /dev/null; then
timeout 2 sshfs -o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3 \
"${USER}"@10.103.254.3:/ /home/"${USER}"/mnt/cmc2 &>/dev/null
else
fusermount -u -z ~/mnt/cmc2 ;
fi
}
function cmc3mount(){
if timeout 2 ping -c 1 -W 2 10.103.254.6 &> /dev/null; then
timeout 2 sshfs -o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3 \
"${USER}"@10.103.254.6:/ /home/"${USER}"/mnt/cmc3 &>/dev/null
else
fusermount -u -z ~/mnt/cmc3 ;
fi
}
Top comments (11)
Not really a bashrc but my zshrc is available on GitHub (aliases; functions).
I've got some on a github repo, under dotfiles/bash that you can look at if you like, though they're nothing special.
... I'm glad you commented that one!
Hahaha I just grew tired off committing and pushing Everytime, hence the comment...
This one is huge. If you ask me, I'd abstract away
*mount
functions. And I prefer git aliases to live in.gitconfig
- they feel as custom commands this way, which is kinda cool.Also, seems this is not what it claims to be:
Thanks for the tip, I should probably remove that alias, haven't used it in a while .
May I humbly submit an addition to your welcome message?
Hahahaha well thank you.
I tried
fortune | cowsay -f tux
I like your setup! Not unlike what I've got going on in my
.emacs
, with concerns fully separated - don't know why I never thought to split this up either. Thanks for the ideas!You are more than welcome.
Initially my bashrc was cluttered, I just recently tried to separate the aliases and functions and it turned out alright - I suppose.
I put my zshrc on GitHub along with a bunch of miscellaneous functions.
Never gave zsh a chance, maybe I should look into it.
Thanks for the link ;-)