Okay, currently my bash_profile is in serious need of a refresh. This thing has been following me around for years, from job to job, laptop to laptop, and I'm not even sure what half of it does anymore. There are some bits I use frequently and some bits I've never used, so there's a lot of clean-up required.

Note to self: I'll try and write comments for each section to make it clear what each line does. That way people can cherry-pick the bits that seem useful and ignore the rest. It might even be a good idea to include screenshots of output.


bash_profile as of 21/01/2020


    # Color LS

    colorflag="-G"
    alias ls="command ls ${colorflag}"
    alias l="ls -lF ${colorflag}" # all files, in long format
    alias la="ls -laF ${colorflag}" # all files inc dotfiles, in long format
    alias lsd='ls -lF ${colorflag} | grep "^d"' # only directories


    # Quicker navigation

    alias ..="cd .."
    alias ...="cd ../.."
    alias ....="cd ../../.."
    alias .....="cd ../../../.."


    # Enable aliases to be sudo’ed

    alias sudo='sudo '


    # Git
    # You must install Git first

    alias gs='git status'
    alias ga='git add .'
    alias gc='git commit -m' # requires you to type a commit message
    alias gp='git pull origin master'
    alias grm='git rm $(git ls-files --deleted)'
    alias gl='git log'
    alias gf='git fetch origin master'
    alias gr='git rebase -i origin/master'


    # See memory load

    alias memstat='top -l 1 -o rsize | head -20'

    # See CPU load

    alias cpustat='ps wwaxr -o pid,stat,%cpu,time,command | head -10'

    # See Weather Forecast in London

    alias weather='curl wttr.in/london'


    ############################################################################# Misc

    # Only show the current directory's name in the tab

    export PROMPT_COMMAND='echo -ne "\033]0;${PWD##*/}\007"'


    # Fill with minuses
    # (this is recalculated every time the prompt is shown in function prompt_command):

    fill="--- "
    reset_style='\[\033[00m\]'
    status_style=$reset_style'\[\033[0;90m\]' # gray color; use 0;37m for lighter color
    prompt_style=$reset_style
    command_style=$reset_style'\[\033[1;29m\]' # bold black


    # Reset color for command output
    # (this one is invoked every time before a command is executed):

    trap 'echo -ne "\033[00m"' DEBUG

    function prompt_command {
        let fillsize=${COLUMNS}-15
        fill=""
        while [ "$fillsize" -gt "0" ]
        do
            fill="-${fill}"
        let fillsize=${fillsize}-1
        done
    }


    ### Prompt Colors
    # Modified version of @gf3’s Sexy Bash Prompt
    # (https://github.com/gf3/dotfiles/tree/v1.0.0)

    if [[ $COLORTERM = gnome-* && $TERM = xterm ]] && infocmp gnome-256color >/dev/null 2>&1; then
        export TERM=gnome-256color
    elif infocmp xterm-256color >/dev/null 2>&1; then
        export TERM=xterm-256color
    fi


    if tput setaf 1 &> /dev/null; then
        tput sgr0
        if [[ $(tput colors) -ge 256 ]] 2>/dev/null; then
            RED=$(tput setaf 9)
            ORANGE=$(tput setaf 172)
            YELLOW=$(tput setaf 185)
            PURPLE=$(tput setaf 140)
        else
            RED=$(tput setaf 5)
            ORANGE=$(tput setaf 4)
            YELLOW=$(tput setaf 2)
            PURPLE=$(tput setaf 1)
        fi
        BOLD=$(tput bold)
        RESET=$(tput sgr0)
    else
        RED="\033[1;31m"
        ORANGE="\033[1;33m"
        YELLOW="\033[0;33m"
        PURPLE="\033[0;35m"
        WHITE="\033[38;5;185m"
        BOLD=""
        RESET="\033[m"
    fi

    export RED
    export ORANGE
    export YELLOW
    export PURPLE
    export WHITE
    export BOLD
    export RESET


    # Change this symbol to something sweet.
    # (http://en.wikipedia.org/wiki/Unicode_symbols)

    symbol="⭕️  ❯ "

    export CLICOLOR=1
    export LSCOLORS=GxFxCxDxBxegedabagaced

    export PS1="\[${RED}\]\u \[$RESET\]in \[$YELLOW\]\w\[$RESET\]\$([[ -n \$(git branch 2> /dev/null) ]] && echo \" on \")\[$PURPLE\]\$(parse_git_branch)\[$RESET\]\n$symbol\[$RESET\]""$status_style"'$fill \t\n'"$reset_style"
    export PS2="\[$ORANGE\]\[$RESET\]"

    PROMPT_COMMAND=prompt_command

    export PATH="$HOME/.cargo/bin:$PATH"