Regarding how to go about getting a decent setup you can go two different ways:
- blindly use customizations from other people/web pages (e.g. Emacs starter kit)
- actually think about what you want, ask questions, learn, and customize your
.emacs yourself
In my experience, many take the first route, and that's fine. You get some handy customizations with little work. However, you don't really know any more than you did before you did the big cut/paste.
If you take the time and ask questions (like you did about shell and ls), you'll end up with a customized Emcas experience that actually meets your needs. Plus, you'll have a much better idea of what is possible and how you can get there. The downside is that it takes a litle work (not much, but it's non-zero and that scares many).
So, to start you off down the path of enlightenment (if you decide to take the red pill), I'll give solutions to your particular issue. Note: With so little information about your setup, I'll make some educated guesses about your specific problems.
The ls is showing all sorts of funky characters because you have the ls command output special characters for colors in your regular terminals (perhaps you have it aliased to ls --color). M-x term does handle this correctly, but this also works:
(ansi-color-for-comint-mode-on)
Instead of using the arrow keys, you can use M-p and M-n to go to previous/next commands. Or, you can bind the arrow keys to do what you want:
(add-hook 'shell-mode-hook
(lambda ()
(define-key shell-mode-map (kbd "<up>") 'comint-previous-input)
(define-key shell-mode-map (kbd "<down>") 'comint-next-input)))