There are at least three shell modes built in (there are probably more).
shell mode (M-x shell) - gives an interface to your system shell, can handle everything except programs like top, you can move around past commands which is a dream.
ansi-term - an actual terminal, better for top et al, can switch between terminal mode and emacs buffer mode
eshell - shell implemented in Elisp. have never used it, but i'm sure it's awesome.
Dired mode is also wonderful, navigate to a folder, simple one key commands to do most of the basic shell copy/rename/move commands, with simple searching and all the emacs shortcuts.
What makes eshell awesome is mostly that it blurs the lines between bash and elisp, you sort of kind of can use them together. Unfortunately the manual does not do this feature justice as it is largely incomplete. This article is the best i've found.
eshell - shell implemented in Elisp. have never used it, but i'm sure it's awesome.
Dired mode is also wonderful, navigate to a folder, simple one key commands to do most of the basic shell copy/rename/move commands, with simple searching and all the emacs shortcuts.