Source: http://www.cas.mcmaster.ca/~franek/courses/se2xa3/slides/02-bash.pdf