iPython Like Command History For Shell

Bash does have that feature too, but it's not enabled by default. You can bind it to cursor up/down by sticking this into ~/.inputrc:

"\e[A": history-search-backward
"\e[B": history-search-forward

I prefer to bind it to Ctrl+up/down instead:

"\e[1;5A": history-search-backward
"\e[1;5B": history-search-forward

edit: To preserve ctrl+left and ctrl+right for moving back and forward in whole words, also include these lines in ~/.inputrc file:

# mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving
"\e[1;5C": forward-word
"\e[1;5D": backward-word
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word

Try hitting Ctrl + R, and typing a few letters. It works in the reverse order as well.