Ever annoyed that you did something like
cp -r ~/foo/* .
only to discover that all the hidden dot-files inside foo/ where not copied along?
This is because shells (zsh and bash at least) exclude hidden files when expanding the wildcard character (*).
Zsh has an option  for you to include them:
In bash it’s a bit different :
Both mechanisms will again exclude the directories
.. from being matched.
This will affect any command you type using wildcard (*) at the beginning of the matching pattern, like
mv * and so on.