If you know me, I live in the terminal! I also try to make it as efficient and homely as possible. So here are some bash settings, aliases and functions that make my life more joyful! Just copy them into your ~/.profile or ~/.bashrc source them: source ~/.[whichever bash profile file you use]

# Host and user shell environments
export COMP_ALIAS=moist-mobile
export USER_ALIAS=tony



# QOL
alias downloads='cd $HOME/Downloads'
alias desktop='cd $HOME/Desktop'
alias dev='cd $HOME/dev'

# easy alias to source bash profiles
alias reload="source ~/.profile"

# easy alias to edit the bash profile
alias bashme="vim ~/.profile"

# you messed up or overwrote a command? Just this to start a no new bash window with now profile
alias clean_bash='bash --noprofile --norc'



# Desired CLI colors
export CLICOLOR=1

# Desired `ls` command colors
export LSCOLORS=ExFxBxDxCxegedabagacad



# History Settings
export HISTSIZE=20000                 # Max history per shell
export HISTFILESIZE=200000            # Max lines stored for all shells
shopt -s histappend
shopt -s cmdhist                      # Combine multiline commands into one
export HISTCONTROL=ignoredups         # Ignore duplicates.
export HISTIGNORE="&:ls:[bf]g:exit"   # ls without options and builtin commands
export HISTCONTROL=ignorespace        # Commands with leading space do not get added to history
shopt -s histappend                   # Useful for sensitive commands



## Mac OSX aliases to show and hide hidden files in finder
alias showFiles='defaults write com.apple.finder AppleShowAllFiles YES; killall Finder /System/Library/CoreServices/Finder.app'
alias hideFiles='defaults write com.apple.finder AppleShowAllFiles NO; killall Finder /System/Library/CoreServices/Finder.app'


### Useful Aliases for common commands
alias ls='ls -GFhA'
alias ll='ls -FGlAhp'                 # Preferred ll
alias lltr='ls -FGlAhptr'             # ls with desired output sorted in descending order of time
alias llr='ls -FGlAhpt'               # ls with desired output in reverse
alias l='ls'                          # ls but for the lazy
alias grep='grep --color'             # default grep to have colors
alias cd..='cd ../'                   # Go back 1 directory level (for fast typers)
alias ..='cd ../'                     # Go back 1 directory level
alias ...='cd ../../'                 # Go back 2 directory levels
alias ~='cd ~'                        # ~:            Go Home
alias which='type -all'               # which:        Find executables
alias s="git status"                  # git status
alias gp="git pull"                   # git pull
alias gpu="git push"                  # git push
alias gb="git branch"                 # git push
alias find-it-dammit="sudo find / -name "   # qfind:    Quickly search for file

#   lr:  Full Recursive Directory Listing
alias lr='ls -R | grep ":$" | sed -e '\''s/:$//'\'' -e '\''s/[^-][^\/]*\//--/g'\'' -e '\''s/^/   /'\'' -e '\''s/-/|/'\'' | less'

alias why='echo "returned $?"'        # get return code for bash command that didn't return status code



#####################
###### Functions
#####################

### Colorize man pages
man() {
  env LESS_TERMCAP_mb=$'\E[01;31m' \
  LESS_TERMCAP_md=$'\E[01;38;5;74m' \
  LESS_TERMCAP_me=$'\E[0m' \
  LESS_TERMCAP_se=$'\E[0m' \
  LESS_TERMCAP_so=$'\E[38;5;246m' \
  LESS_TERMCAP_ue=$'\E[0m' \
  LESS_TERMCAP_us=$'\E[04;38;5;146m' \
  man "[email protected]"
}

### Lazy history - history wrapped in grep
function h(){
  if [[ -z $1 ]]; then
    history
  else
    history | grep --color  $1
  fi
}


### Random password generator
randpassw() {
  if [ -z $1 ]; then
    MAXSIZE=10
  else
    MAXSIZE=$1
  fi
  array1=(
  q w e r t y u i o p a s d f g h j k l z x c v b n m Q W E R T Y U I O P A S D
  F G H J K L Z X C V B N M 1 2 3 4 5 6 7 8 9 0
  \! \@ \$ \% \^ \& \* \! \@ \$ \% \^ \& \* \@ \$ \% \^ \& \*
  )
  MODNUM=${#array1[*]}
  pwd_len=0
  while [ $pwd_len -lt $MAXSIZE ]
  do
      index=$(($RANDOM%$MODNUM))
      echo -n "${array1[$index]}"
      ((pwd_len++))
  done
  echo
}

### Extracting method
extract () {
    if [ -f $1 ] ; then
      case $1 in
        *.tar.bz2)   tar xjf $1     ;;
        *.tar.gz)    tar xzf $1     ;;
        *.bz2)       bunzip2 $1     ;;
        *.rar)       unrar e $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
}

### replace buildtin cd with a combination of cd && ls
cd() { 
  builtin cd "[email protected]" && ls; 
}

### Create director and go inside immediately
mkcd() { 
   builtin mkdir -p "$*" && cd "$*";
 }

### open finder from terminal
function f() {
  ## open passed directory if it exists/valid
  if [[ -d $1 ]]; then
    open -a Finder $1
  else
  # open current directory
    open -a Finder ./
  fi
}

# ### Searching functions
# ff () { /usr/bin/find . -name "[email protected]" ; }      # ff:       Find file under the current directory
# ffs () { /usr/bin/find . -name "[email protected]"'*' ; }  # ffs:      Find file whose name starts with a given string
# ffe () { /usr/bin/find . -name '*'"[email protected]" ; }  # ffe:      Find file whose name ends with a given string

This last one started out as a change I made to show off. Now it has turned into a feature that I cannot live without. There is the basic changing of the PROMPT_COMMAND to change the terminal prefix [email protected] $ to something more personal: [email protected]: config$.

The extra part is to change the color of the username to green if the previous commands exit code was successful or purple if the previous exit code was unsuccessful (e.g. status code not equal to 0). Feel free to change the colors. But word to the wise, stray away from using red. There are still systems that use red to signify the user is acting as root or su.

# Host and user shell environments
export COMP_ALIAS=moist-mobile
export USER_ALIAS=tony

...

### Custom command pompt. Example:
### 
### [email protected]: config$
###
__prompt_command() {
    local EXIT="$?"             # This needs to be first

    local Red='\[\e[0;31m\]'
    local RCol='\[\e[0m\]'
    local Gre='\[\e[0;32m\]'
    local BYel='\[\033[33;1m\]'
    local BBlu='\[\033[36m\]'
    local Pur='\[\e[0;35m\]'
    local Pnk='\033]01;31\]'

    if [ $EXIT != 0 ]; then
        PS1="${Pur}"  # change to red-tint color for failure
    else
        PS1="${Gre}"  # change to green color for success
    fi

    PS1+="${USER_ALIAS}${BBlu}@${COMP_ALIAS}:${BYel} \W${Pur}$ ${RCol}"
}

PROMPT_COMMAND="__prompt_command;"

This change has the added benefit of catching failing scripts that don't notify you, cli tools that haven't properly implemented pumping out meaningful exit statements or even printing the exit code to standard out. It also creates a short term visual record of successful and unsuccessful commands you've run.

Try some of these out, work them into your daily terminal usage and hopefully they'll start to make your terminal experience a little more fluid.