Sometimes when working we don't always have a fully featured keyboard. Whether using a small portable bluetooth keyboard, old software, or you just want to be a command line ninja, these shortcuts are very important to know to increase productivity and to work through technical limitations on keyboards.
Moving and editing
Ctrl + a Go to the beginning of the line (Home)
Ctrl + e Go to the End of the line (End)
Ctrl + p Previous command (Up arrow)
Ctrl + n Next command (Down arrow)
Alt + b Back (left) one word
Alt + f Forward (right) one word
Ctrl + f Forward one character
Ctrl + b Backward one character
Ctrl + xx Toggle between the start of line and current cursor position
Esc + b
Esc + f
Esc + del Escape key words similar to above except on whole words
Esc + Ctrl + h
Esc + d
Ctrl + L Clear the Screen, similar to the clear command
Ctrl + u Cut/delete the line before the cursor position
Alt + Del Delete the Word before the cursor.
Alt + d Delete the Word after the cursor.
Ctrl + d Delete character under the cursor
Ctrl + h Delete character before the cursor (Backspace)
Ctrl + w Cut the Word before the cursor to the clipboard.
Ctrl + k Cut the Line after the cursor to the clipboard.
Alt + t Swap current word with previous
Ctrl + t Swap the last two characters before the cursor (typo).
Esc + t Swap the last two words before the cursor.
Ctrl + y Paste the last thing to be cut (yank)
Alt + u UPPER capitalize every character from the cursor to the end of the current word.
Alt + l Lower the case of every character from the cursor to the end of the current word.
Alt + c Capitalize the character under the cursor and move to the end of the word.
Alt + r Cancel the changes and put back the line as it was in the history (revert).
Ctrl + _ Undo
History
history Lists history of commands with numbers
!420 Repeat history command number 420
Ctrl + r Recall the last command including the specified character(s)
Ctrl + p Previous command in history (i.e. walk back through the command history)
Ctrl + n Next command in history (i.e. walk forward through the command history)
Ctrl + s Go back to the next most recent command.
(beware to not execute it from a terminal because this will also launch its XOFF).
Ctrl + o Execute the command found via Ctrl+r or Ctrl+s
Ctrl + g Escape from history searching mode
!! Repeat last command
!nano Run last command starting with nano
!nano:p Print last command starting with nano
!$ Last argument of previous command
ALT + . Last argument of previous command (ESC then . also works)
!* All arguments of previous command
^abc^def Run previous command, replacing abc with def
Process control
Ctrl + C Interrupt/Kill whatever you are running (SIGINT)
Ctrl + l Clear the screen
Ctrl + s Stop output to the screen (for long running verbose commands)
Ctrl + q Allow output to the screen (if previously stopped using command above)
Ctrl + D Send an EOF marker, unless disabled by an option, this will close the current shell (EXIT)
Ctrl + Z Send the signal SIGTSTP to the current task, which suspends it. bg will send it to run in the background. To return to it later enter fg 'process name' (foreground).
Misc
cd -
Return you to the last working directory.
cd ~
Returns you to your home directory
ls -lh
Human readable file sizes
cp settings.{php,bak}
Brace expansion: Equivalent to cp settings.php settings.bak
cp settings.php{,.bak}
Brace expansion: Equivalent to cp settings.php settings.php.bak
mv settings.php{.bak,}
Brace expansion: Equivalent to mv settings.php.bak settings.php
ls | grep settings
Piping commands: Passes the output of ls through grep looking for keyword "settings"