Updated: June 11th, 2015

imageDuring my day-to-day activities, I use the Bash shell a lot. My #1 policy is to optimize the most frequently used activities as much as possible, so I’ve compiled these handy bash shortcuts and hints (tested in SecureCRT on Windows and Konsole on Linux). The article only touches on the default bash mode – emacs, not vi. If you haven’t specifically assigned your shell mode to vi (set –o vi), you’re almost certainly using the emacs mode. Learn these and your shell productivity will skyrocket, I guarantee it.

Update #1: In response to a few people saying this list is too short and “[he] could've added something to it, to atleast make it look longer” (quote from one of Stumbleupon reviewers), I want to clarify something. I deliberately did not include every single bash shortcut there is. I included what I personally thought were the best and most useful commands. I did not want to make the list too cluttered and wanted the cheat sheet to fit on one page without going to a smaller font size.

image 

Download Version 1.3 (03/22/12):

And, for quick reference, here's the ugly html version:

Keyboard shortcut

Action

Navigation

Ctrl-A

Go to the beginning of the line (note that if you use GNU screen, you can use the Home button to do this, especially considering that Ctrl-A is a special control character in screen).

Ctrl-E

Go to the end of the line (note that if you use GNU screen, you can use the End button to do this).

Alt-B (or ESC, left arrow)

Jump back one word using a non-alphanumeric character as delimiter.

Alt-F (or ESC, right arrow)

Jump forward one word using a non-alphanumeric character as delimiter.

Ctrl-PGUP or Shift-PGUP

This may or may not work, and it works differently on different console apps. It will either scroll up one line at a time, 1 page at a time, or it may not work at all. I'm inclined to think it's not a bash shortcut at all.

Ctrl-PGDN or Shift-PGDN

Same as the above but scrolling is done in the opposite direction.

Up/Down

Previous/Next command in history. This one is way too obvious but I'm including it for completeness.

Ctrl-R

History search. For example, Ctrl-R svn Ctrl-R Ctrl-R … will cycle through all recently run commands with the ‘svn’ in them. It is one of the most useful shortcuts in bash.

Ctrl-O

Takes whatever line was after the line you selected with Ctrl-R and makes it your next command.

Command Line Manipulation

Ctrl-W

Cut one word backwards using white space as delimiter.

Alt-BACKSPACE

Cut one word backwards using a non-alphanumeric character as delimiter (different from Ctrl-W, for example, abc;bcd will cut to abc;).

Ctrl-K

Cut everything forward to end of line.

Ctrl-U

Cut everything backwards to beginning of line.

Ctrl-T

Transpose the current character with the previous one. I almost never use this. Never mind, I never use it, but someone might find it useful.

Alt-T

Transpose the word at cursor with the one before cursor. In other words, swap them around.

Ctrl-Y

Paste whatever was cut by the last cut command.

Ctrl-V

Insert the next character literally. For example, Ctrl-V TAB inserts the actual TAB character. This shortcut is often misunderstood because of mistyping Ctrl-V and not realizing what it does.

Ctrl-_

Undo the last command. Don’t forget – it’s Ctrl-Shift-MINUS, not Ctrl-MINUS.

Alt-R

Revert all changes to current line. Very useful if you accidentally modify a command in history.

Alt-U/Alt-L/Alt-C

Uppercase/lowercase/capitalize from cursor to end of word and move cursor past end of word.

Terminal control

Ctrl-L

Clear screen while keeping whatever is already typed in the command line intact.

Ctrl-S

Suspend currently running terminal.

Ctrl-Q

Unsuspend the terminal suspended by Ctrl-S. You need to be aware of this shortcut because 99% of the time you’ve accidentally pressed Ctrl-S and need to undo its effects.

Ctrl-Z

Suspend the currently running process (usually followed by bg to resume it in the background or fg to resume in the foreground).

TAB

Autocomplete. Start typing, then hit TAB. You will either get a list of possible completion values (2 TABs needed) or the only choice will be filled in (only 1 TAB is needed). This shortcut is quite obvious and well known, so I put it at the bottom of the list.

Tip: By the way, as duly noted in the comments, all of these tricks work on the mysql command line, so you can, for example, ctrl-R through your previously executed mysql commands.

Hope you guys will find this list helpful. I think it is relatively complete, but feel free to add any omissions.

● ● ●
Artem Russakovskii is a San Francisco programmer and blogger. Follow Artem on Twitter (@ArtemR) or subscribe to the RSS feed.

In the meantime, if you found this article useful, feel free to buy me a cup of coffee below.