All the shells can echo things, which is a very safe way to verify that what you type in to a command line is in fact what you mean to. Say you want to list all the files that match a certain pattern:
ls /etc/r *In the above example, we have accidentally inserted a space between the r and the *. What we meant to type in was /etc/r*.
So, what the shell sees is that we want to ask the ls program for a listing of the (single) file /etc/r, and of all the files in the current directory (which is what the * expands to). For ls, this is a pretty harmless command line, and we will see the error and cause no problems. But what if we were using the rm command instead of ls? We would be attempting to delete /etc/r (which probably doesn't exist), and all the files in our current directory. Which is horrible! Especially seeing as files effectively cannot be recovered after being deleted under UNIX.
If we were to put echo at the beginning of the command line, it would allow the shell to expand the wildcards (regular expressions) in a safe manner, allowing us to examine what it was we were doing.
Get to know echo, she is your friend.
What the above example also demonstrates, is that much of the power of commands that supposedly parse directories actually comes from the shell expanding wildcards. You will often see this expansion of filename patterns referred to as a ``glob''. Apparently this name derives from a sub-program name used in the Unix shell which predates the Bourne shell.