Why are some files and folders hidden?

You've misinterpreted the primary rationale for "hidden files". It is not

to prevent users from messing around with things.

Although it may have this consequence for very new users until they learn what a "dot file" is (dot file and dot directory are perhaps more appropriate and specific terms than "hidden"). All by itself it doesn't prevent you from messing around with things -- that's what permissions are for. It does perhaps help to indicate to new users that this is something they should not mess around with until they understand what it is for.

You could thus think of the dot prefix as a sort of file suffix -- notice they usually don't have one of those, although they can. It indicates this file is not of interest for general browsing, which is why ls and file browsers usually will not display it. However, since it's a prefix instead of a suffix, there is the added bonus, when you do display them (ls -a) in lexicographical order, to see them all listed together.

The normal purpose of a file like this is for use by an application (e.g. configuration). You don't have to use them directly or even be aware of them.

So, this "hiding" isn't so much intended to literally hide the file from the user as it is to reduce clutter and provide some organization conceptually.


/etc/skel contains files to be copied to new user's home directories, therefore the names are, of course, the same as in an user's home directory. This explains /etc/skel/.bash_profile. The directory /root also is a home directory, namely the home directory of the user root. This explains /root/.ssh and /root/.config.

/etc/.pwd.lock seems to be a lock file. You normally are not interested in lock files, therefore it makes sense for it to be hidden.

For the other files, I don't know what they are for, but I'm sure there's also a good explanation why they are hidden.

And of course goldilocks is right that dotfiles are hidden not in order to prevent anyone to mess with them (the basic idea of Unix is to assume that the user knows what he does), but in order to prevent them cluttering up your directory listings (although for configuration files in the home directory I would have considered an etc subdirectory a better solution).


This might be a highly opiniated answer, but I think the main reason dot files and dot directories are marked like that is not to hide or obscure them - I think it's just to let the user know that within those files and directories are program's and user's settings that can be changed by them or by the programs themselves.

The fact that dot files and dot directories are omitted by default by the command line ls and from the views in most file managers is just a commodity - you don't want to show the internal/details for everything, unless requested by the user; if the user wants to change a setting, and he/she can't do it through a GUI, then is very likely to find the setting he/she is looking for in a dot files.

e.g.> inside $HOME/.vimrc you will find the config setting for vim.