The filesystem hierarchy
Key takeaways
Linux keeps everything in one tree that starts at the root, / — there
are no C: or D: drive letters. Learn the few neighbourhoods you’ll actually
visit, then learn to name any spot two ways: an absolute path from /
(/home/you/notes.txt) or a relative path from where you’re standing
(notes.txt). ~ is always shorthand for your home directory. Get these
and the terminal stops feeling like a maze. New to the shell? Start with
your first commands.
When you came from Windows or a Mac’s Finder, files felt scattered across drives
and folders with no obvious order. Linux is tidier than it first looks: there is
exactly one tree, every location has a name, and the layout follows a shared
convention. Once you can picture the tree, cd and ls become a walk through a
neighbourhood you know.
One tree, no drive letters
On Windows each disk gets its own letter — C:, D:, a USB stick as E:. Linux
does it differently. There is a single tree, and its top is the root
directory, written as a plain forward slash: /. Everything — programs, your
documents, system settings, even hardware — hangs off / somewhere.
So where do extra disks go? They are mounted into the tree at an empty
folder, rather than becoming a separate drive. A USB stick might appear at
/media/you/USB, an extra hard disk at /mnt/data. To you it’s just another
folder deeper in the same tree; there’s no separate E: to switch to. One tree,
many places — that’s the whole model.
The folders that matter
The tree has many branches, but a beginner only meets a handful. Here are the neighbourhoods worth knowing by name:
/home— where your files live. Each user gets a folder here, e.g./home/matt. This is where you’ll spend almost all your time./etc— system-wide configuration. Plain-text settings files for the machine and its services live here (the name is often read as “et cetera”)./var— variable data that changes as the system runs: logs, mail queues, caches. When something misbehaves,/var/logis where you look — see monitoring & logs./usrand/bin— the programs. Most installed software and the commands you type (likelsandcd) live under these./tmp— scratch space for temporary files. Anything here may be wiped on reboot, so never keep something you care about in/tmp./root— the administrator’s home directory. Note this is not the same as/; it just happens to share the word “root”./dev— devices. Disks, terminals, and other hardware appear here as special files (more on that below)./optand/mnt—/optholds some optional add-on software;/mntis a common spot to mount extra disks.
You don’t need to memorise every branch. Recognising these on sight is enough to navigate confidently. This layout is a shared convention — the Filesystem Hierarchy Standard (FHS) — which is why most Linux systems put things in the same places.
Absolute vs. relative paths
A path is just the name of a location in the tree. There are two ways to write one, and knowing which is which saves a lot of confusion.
An absolute path starts at the root, /, and spells out the full route:
/home/you/notes.txt
Because it begins at /, it means the same file no matter where you currently
are. Absolute paths are unambiguous.
A relative path starts from your current directory — wherever you happen to
be standing. If you’re already in /home/you, then:
notes.txt the file in this directory
./notes.txt the same thing — . means "here"
../up go up one level first, then into "up"
Two special names show up constantly:
.means this directory (the one you’re in)...means the parent directory, one level up toward the root.
And one very handy shorthand:
~(tilde) means your home directory, usually/home/yourname. So~/notes.txtis the same file as/home/yourname/notes.txt, from anywhere.
A quick rule of thumb: if a path starts with / it’s absolute; if it starts with
~ it’s home-relative; anything else is relative to where you are right now.
Everything is a file
Linux takes a striking shortcut: almost everything is presented as a file. Not
just your documents — hardware and system information show up as files too. A disk
appears under /dev (for example /dev/sda); live details about the running
system appear under /proc. You won’t touch these on day one, but it’s worth
knowing the idea exists, so that reading from a “file” to talk to a device later
doesn’t come as a surprise. It’s part of what makes the command line so
composable: the same tools that read text files can often read a device too.
Try it
Open a terminal and walk the tree. pwd (print working directory)
tells you where you are; cd (change directory) moves you:
$ pwd
/home/you
$ cd /etc # jump somewhere by absolute path
$ pwd
/etc
$ cd .. # go up one level (to /)
$ pwd
/
$ cd home/you # relative path from here (no leading slash)
$ pwd
/home/you
$ cd ~ # ~ takes you straight home
$ pwd
/home/you
Notice the pattern: a leading / means “start from the root,” while a name
without one means “start from here.” .. steps up, ~ warps home.
Quick check: where do system-wide configuration files conventionally live?
Recap
- Linux has one tree starting at the root
/— no drive letters; disks mount into the tree. - Key neighbourhoods:
/home(your files),/etc(config),/var(logs and changing data),/usrand/bin(programs),/tmp(scratch). - An absolute path starts at
/and means the same thing everywhere; a relative path starts from your current directory. ~is your home;.is here;..is one level up.- Almost everything is a file, including devices (
/dev) and system info (/proc).
Next up: navigating & listing files