Coming from the Windows world, I have found the majority of the folder directory names to be quite intuitive:
-
\Program Files
contains files used by programs (surprise!) -
\Program Files (x86)
contains files used by 32-bit programs on 64-bit OSes -
\Users
(formerlyDocuments and Settings
) contains users' files, i.e. documents and settings-
\Users\USER\Application Data
contains application-specific data -
\Users\USER\Documents
contains documents belonging to the user
-
-
\Windows
contains files that belong to the operation of Windows itself-
\Windows\Fonts
stores font files (surprise!) -
\Windows\Temp
is a global temporary directory
-
et cetera. Even if I had no idea what these folders did, I could guess with good accuracy from their names.
Now I'm taking a good look at Linux, and getting quite confused about how to find my way around the file system.
For example:
-
/bin
contains binaries. But so do/sbin
,/usr/bin
,/usr/sbin
, and probably more that I don't know about. Which is which?? What is the difference between them? If I want to make a binary and put it somewhere system-wide, where do I put it? -
/media
contains external media file systems. But so does/mnt
. And neither of them contain anything on my system at the moment; everything seems to be in/dev
. What's the difference? Where are the other partitions on my hard disk, like theC:
andD:
that were in Windows? -
/home
contains the user files and settings. That much is intuitive, but then, what is supposed to go into/usr
? And how come/root
is still separate, even though it's a user with files and settings? -
/lib
contains shared libraries, like DLLs. But so does/usr/lib
. What's the difference? -
What is
/etc
? Does it really stand for "et cetera", or something else? What kinds of files should go in there — global or local? Is it a catch-all for things no one knew where to put, or is there a particular use case for it? -
What are
/opt
,/proc
, and/var
? What do they stand for and what are they used for? I haven't seen anything like them in Windows*, and I just can't figure out what they might be for.
If anyone can think of other standard places that might be good to know about, feel free to add it to the question; hopefully this can be a good reference for people like me, who are starting to get familiar with *nix systems.
*OK, that's a lie. I've seen similar things in WinObj, but obviously not on a regular basis. I still don't know what these do on Linux, though.
Best Answer
Linux distributions use the FHS: http://www.pathname.com/fhs/pub/fhs-2.3.html
You can also try
man hier
.I'll try to sum up answers your questions off the top of my head, but I strongly suggest that you read through the FHS:
To access a system, you generally don't need /var, /opt, /usr, /home; some of potentially largest directories on a system.
One of my favorites, which some people don't use, is /srv. It's for data that is being hosted via services like http/ftp/samba. I've see /var used for this a lot, which isn't really its purpose.