OK, the following applies to bash, which is
probably your shell. To check this type:
If it says something about bash, keep reading
In bash, * means 'all files in the current working directory whose name does no begin with a "."'. It's an old unix convention that files starting with a "." should be considered hidden in a superficial sort of way, and not clutter up normal directory listings. It's an entirely aethetic thing - there's no enforcement of this except that some programs respect this convention, the shell usually being one of them.
When you type a command, e.g. "mv * /some/place", it's the shell that expands this pattern and then passes the expanded list of files to the specified command, in this case mv.
If you want to specify the hidden files as well as the non-hidden ones, you could say this:
Code:
mv * .* /some/place
But there is a problem - the special directory names "." and ".." match the list .* as well as any other hidden names. "." means the current directory, and ".." means the parent directory. passing these to the mv command will result in an ugly error message.
Fortunately, bash has a mechanism for changing what * means. The shell option
dotglob can be set so that * matches hidden files as well as non-hidden ones, but it won't include "." and "..", to set it entere this command:
Note that this will only apply to the shell in which you typed it. To make this setting work in all new shells, add it to your .bashrc file. One more thing to note - you can specify patterns to exclude from the * pattern with the GLOBIGNORE variable. See the bash manual page for more details.