The Filesystem Hierarchy
Linux presents all storage as a single tree rooted at /, with standardized directories for standardized purposes - the Filesystem Hierarchy Standard (FHS) defines what goes where.
Unlike Windows' per-drive letters, Linux has exactly one directory tree,
rooted at /. Every disk, partition, network share, or removable device
gets attached (mounted) somewhere within that tree rather than getting its
own top-level namespace - see
Mounting and fstab for how that
attachment works.
Most distributions follow the Filesystem Hierarchy Standard (FHS) for
where things live, though adherence varies slightly by distro and has
loosened somewhat with newer conventions like /usr merges.
The directories that matter most
| Path | Purpose |
|---|---|
/bin, /usr/bin |
Executable programs. On most modern distros /bin is a symlink into /usr/bin (the "usr merge"). |
/etc |
System-wide configuration files, almost always plain text. |
/home |
Personal directories for regular users (/home/alice). |
/root |
The root user's home directory - deliberately outside /home. |
/var |
Data that changes at runtime: logs (/var/log), spool files, caches. |
/tmp |
Temporary files, typically cleared on reboot. |
/opt |
Self-contained third-party software packages. |
/proc |
A virtual filesystem exposing kernel and process information - see below. |
/sys |
A virtual filesystem exposing kernel and device state, used for hardware configuration. |
/dev |
Device files representing hardware (/dev/sda, /dev/null). |
/mnt, /media |
Conventional mount points for manual and removable media mounts, respectively. |
/proc and /sys aren't real files
Both are virtual filesystems generated by the kernel on the fly - nothing under them exists on disk. Reading them queries live kernel state:
cat /proc/cpuinfo | grep "model name" | head -1
model name : AMD Ryzen 9 7950X 16-Core Processor
cat /proc/uptime
128453.21 42011.83
(The first number is seconds since boot; the second is total idle time
across all cores.) /sys is used more often for writing - toggling device
settings - while /proc is read more often for inspection. Each process
also gets its own subdirectory under /proc/<pid>/, which is how tools
like ps and top get their data. See
Process Lifecycle.
Finding your way around
tree -L 1 -d /
/
├── bin -> usr/bin
├── boot
├── dev
├── etc
├── home
├── lib -> usr/lib
├── mnt
├── opt
├── proc
├── root
├── run
├── srv
├── sys
├── tmp
├── usr
└── var
If a distro's layout looks unfamiliar, man hier (available on most
systems) documents the FHS conventions that distro claims to follow.