display current active kernel:

uname -r

display a list of all installed kernels:

dpkg --list | grep linux-image

remove old kernels (keep 2-3 previous versions for rollback purposes):

sudo apt-get purge linux-image-x.x.x-x-generic


# 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 grep=’grep –color=auto’
alias fgrep=’fgrep –color=auto’
alias egrep=’egrep –color=auto’

alias l=’ls -CF’
alias ll=’ls -alhF’
alias la=’ls -A’
alias cp=’cp -iR’
alias df=’df -h’
alias v=’vim’
alias md=’mkdir’
alias rd=’rmdir’

# Add an “alert” alias for long running commands. Use like so: sleep 10; alert
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$//’\”)”‘

# ~/.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;;

# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options

# append to the history file, don't overwrite it
shopt -s histappend

# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)

# 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)

# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
    xterm-color) color_prompt=yes;;

# 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

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.)

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\[email protected]\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
    PS1='${debian_chroot:+($debian_chroot)}\[email protected]\h:\w\$ '
unset color_prompt force_color_prompt

# If this is an xterm set the title to [email protected]:dir
case "$TERM" in
    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\[email protected]\h: \w\a\]$PS1"

# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases

# 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

An alias is simply a reference to a string, but it makes it possible to shorten a command (or set of commands) inclusive of any options for the command.

Why use aliases?

To save time. Programmers like to refer to themselves as a lazy bunch, but I prefer to think in terms of being efficient rather than lazy. By creating an alias you can save time on the command line. For instance, to view a list of the contents of a directory I like to use “ls -alhF” to generate a nice human readable list. I do this a lot when working from the command line, so it’s much easier to have a alias for this.

Creating aliases

Use the alias command to create your own aliases using the following general syntax: alias [-p] [name=”value”]. For example, to create an alias named ll that executes the command+options ls -alhF, you would execute the following:

alias ll="ls -alhF"

Using aliases

Using the ll alias created in the example above is as simple as typing:


Removing Aliases

Use the general syntax: unalias [-a] name(s). For Example, to remove the alias named ll execute the following:

unalias ll

My favorite 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 grep='grep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias egrep='egrep --color=auto'

alias l="ls -CF"
alias ll="ls -alhF"
alias la="ls -A"
alias cp="cp -iR"
alias df="df -h"
alias v="vim"
alias md="mkdir"
alias rd="rmdir"

# Add an "alert" alias for long running commands.  Use like so: sleep 10; alert
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$//'\'')"'

Making aliases permanent (survive sessions and reboot)

edit the file /etc/bashrc for system wide aliases 
edit the file ~/.bashrc for user specific aliases

For macOS
create the file ~/.bash_profile and add this:
if [ -f ~/.bashrc ]; then
source ~/.bashrc

Simple command line options to backup a MySQL database:

  1. backup a database locally using mysqldump, date and time in the filename, and compression
    mysqldump -uUSERNAME -pPASSWORD DATABASE | gzip -9 > ~/$(date +%Y-%m-%d-%H%M)_intiotpa_stage.sql
  2. import compressed file back into database
    gunzip < ~/backups/FILENAME.sql.gz | mysql -uUSERNAME -pPASSWORD DATABASE

Because it is available via Personal Package Archives for Ubuntu (PPA), installing KeePassX 2.0 Alpha 6 (look for the latest Alpha version/link in the “Latest News” section at the bottom of the home page) on Ubuntu is easier than you may think. All you have to do is add the correct PPA for KeePassX to your system, update the local repository index, and install the keepassx package. Here’s how:

sudo add-apt-repository ppa:keepassx/daily

Ignore warnings and press entere (note: since this is still in alpha state, it’s advisable to make backup copies of you database regularly. Fortunately KeePassX makes it easy to to this automatically. Adjust the preferences to your liking to accomplish this)

sudo apt-get update
sudo apt-get install keepassx

process steps:

  1. export the database
  2. updated the static entries of the hostname in the database
  3. import the database


  1. mysqldump -u _USERNAME_ -p _DBNAME_ > _DBNAME_.sql
  2. cat _DBNAME_.sql | sed -e ‘s/_HOSTNAME_/_NEWHOSTNAME/g’ > _DBNAME_UPDATED.sql
  3. mysql -u _USERNAME_ -p _DBNAME_ < _DBNAME_UPDATED.sql

options & variables:

  • _USERNAME_ = the the database user name
  • -p = will prompt for the password
  • _DBNAME_ = the name of the database
  • _HOSTNAME_ = the hostname of the existing server
  • _NEWHOSTNAME = the new hostname to use
  • _DBNAME_UPDATED = the name of the new updated SQL file

If you want to update git submodules, you will need to do this directly in your submodules directory

# download the submodule
git submodule add https://[email protected]/reponame.git submodule_dir/

# initialize the submodule
git submodule init
# update your submodule
cd submodule_dir/
git checkout master 
# or git checkout mybranch
git pull

# commit the submodule update from root directory
cd ../
git commit -am "update submodule_dir to commit Abc123"

Or if you like shortcuts:

git submodule foreach git pull origin master

Install Node.js from Git repository and NPM on  Ubuntu.

Make sure you have the necessary software

sudo apt-get update
sudo apt-get install git-core curl build-essential openssl libssl-dev g++

Install Node.js

git clone https://github.com/joyent/node.git
cd node
git tag (list released versions and select the version you want)
git checkout v0.10.26
sudo make install
node -v (check that node is installed correctly and version matches your choice)

Install NPM

curl -O -L https://npmjs.org/install.sh | sudo sh
npm -v (check that NPM is installed correctly)

Grab a coffee, you’re done.

Linux command to test mail() function:

echo "test email body." | mail -s "test email subject" [email protected]


  1. replace “test email body” with the body copy of your test email
  2. replace “test email subject” with the subject line for your test email
  3. replace [email protected] with the email address to send the test to
  4. optionally includ -c to CC another email address
  5. optionally include -b to BCC another email address
  6. For a longer email body message start with mail(), return, and Control+D as the escape sequence when finished