IntroToLinux

4. Linux File System Structure


🌳 File System Hierarchy Overview

                    / (Root Directory)
                    β”‚
    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚               β”‚               β”‚
   bin             etc            home
  (commands)   (configuration)  (user dirs)
    β”‚               β”‚               β”‚
    β”œβ”€ ls           β”œβ”€ passwd       β”œβ”€ alice/
    β”œβ”€ cat          β”œβ”€ hosts        β”œβ”€ bob/
    └─ grep         └─ fstab        └─ charlie/

   usr             var            tmp
 (programs)     (variable)   (temporary)
    β”‚               β”‚               β”‚
    β”œβ”€ bin/         β”œβ”€ log/         └─ (temp files)
    β”œβ”€ lib/         β”œβ”€ mail/
    └─ share/       └─ spool/

🌍 The Root Directory (/)

![Linux File System Root](/IntroToLinux/images/LinuxFileSystemRoot.jpg)

πŸͺŸ Windows vs 🐧 Linux

Windows Linux
Multiple roots: C:\, D:\, E:\ Single root: /
Drive letters Everything under one tree

Key Concept: Linux has a single root directory / that contains everything!


πŸ“‹ File System Hierarchy Standard (FHS)

![Linux File System Explained](/IntroToLinux/images/LinuxFileSystemExplained.jpg)

πŸ—‚οΈ Directory Tree Visualization

/                                    ← Root (everything starts here)
β”œβ”€β”€ bin/                             ← Essential user commands
β”‚   β”œβ”€β”€ ls, cat, grep, bash...
β”œβ”€β”€ boot/                            ← Boot loader files
β”œβ”€β”€ dev/                             ← Device files
β”‚   β”œβ”€β”€ sda (disk), tty (terminal)...
β”œβ”€β”€ etc/                             ← System configuration
β”‚   β”œβ”€β”€ passwd, hosts, fstab...
β”œβ”€β”€ home/                            ← User directories
β”‚   β”œβ”€β”€ alice/
β”‚   └── bob/
β”œβ”€β”€ lib/                             ← Shared libraries
β”œβ”€β”€ media/                           ← Removable media mount points
β”œβ”€β”€ mnt/                             ← Temporary mount points
β”œβ”€β”€ opt/                             ← Optional software
β”œβ”€β”€ proc/                            ← Process information (virtual)
β”œβ”€β”€ root/                            ← Root user's home
β”œβ”€β”€ run/                             ← Runtime data
β”œβ”€β”€ sbin/                            ← System administration commands
β”œβ”€β”€ srv/                             ← Service data
β”œβ”€β”€ sys/                             ← System information (virtual)
β”œβ”€β”€ tmp/                             ← Temporary files
β”œβ”€β”€ usr/                             ← User programs and data
β”‚   β”œβ”€β”€ bin/                         ← User commands
β”‚   β”œβ”€β”€ lib/                         ← User libraries
β”‚   β”œβ”€β”€ local/                       ← Local software
β”‚   └── share/                       ← Shared data
└── var/                             ← Variable data
    β”œβ”€β”€ log/                         ← Log files
    β”œβ”€β”€ mail/                        ← Mail files
    └── spool/                       ← Spool directories

πŸ”‘ Key Directories

πŸ–₯️ System Directories

Directory Purpose Examples
/ 🌳 Root directory (top level) Everything starts here
/bin πŸ”§ Essential user binaries ls, cat, cp, mv
/sbin βš™οΈ System binaries ifconfig, reboot, fdisk
/usr/bin πŸ“¦ User binaries Installed programs
/usr/sbin πŸ” User system binaries Admin tools
/lib /lib64 πŸ“š Shared libraries System libraries
/etc βš™οΈ Configuration files System settings
/var πŸ“Š Variable data Logs, databases
/tmp πŸ—‘οΈ Temporary files Cleared on reboot

πŸ‘€ User Directories

Directory Purpose Who Can Write
/home 🏠 User home directories Individual users
/root πŸ‘‘ Root user’s home Root only

πŸ”Œ Device and Virtual

Directory Purpose Type
/dev πŸ’Ύ Device files Hardware access
/proc πŸ”„ Process information Virtual (kernel)
/sys πŸ–₯️ System information Virtual (kernel)

🧭 Path Examples

πŸ“ Absolute Paths (start with /)

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ /home/alice/documents/report.txt        β”‚
β”‚ β”‚    β”‚     β”‚         β”‚                  β”‚
β”‚ β”‚    β”‚     β”‚         └─ πŸ“„ filename     β”‚
β”‚ β”‚    β”‚     └─ πŸ“ subdirectory           β”‚
β”‚ β”‚    └─ πŸ‘€ user directory               β”‚
β”‚ └─ 🌳 always starts from root           β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

🎯 Relative Paths (no leading /)

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ documents/report.txt                    β”‚
β”‚ β”‚         β”‚                             β”‚
β”‚ β”‚         └─ πŸ“„ filename                β”‚
β”‚ └─ πŸ“ relative to current location      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

✨ Special Path Symbols

Symbol Meaning Example
~ 🏠 Home directory /home/username
. πŸ“ Current directory ./script.sh
.. ⬆️ Parent directory ../file.txt
/ 🌳 Root directory /etc/hosts

πŸ“Š Directory Purpose Guide

Category Directories Purpose Icon
Essential /bin, /sbin Critical system commands πŸ”§
Configuration /etc System settings βš™οΈ
User Data /home, /root Personal files πŸ‘€
Programs /usr Installed software πŸ“¦
Variable Data /var Logs, mail, databases πŸ“Š
Temporary /tmp Temporary files πŸ—‘οΈ
Devices /dev Hardware access πŸ’Ύ
Virtual /proc, /sys Kernel information πŸ”„
Mount Points /media, /mnt External storage πŸ’Ώ

πŸ’Ώ Program Files Location

![Program Files](/IntroToLinux/images/programfiles.png)

πŸͺŸ Windows vs 🐧 Linux Program Structure

Component Windows Linux
Executables C:\Program Files\App\ /bin, /usr/bin
Libraries C:\Program Files\App\ /lib, /usr/lib
Configuration C:\Program Files\App\ /etc
Data Files C:\Program Files\App\ /usr/share

Key Difference: Windows keeps everything together; Linux distributes program components across the file system by type!


Next: β†’ Home Directory Concepts
Previous: ← User Types And Login
Lesson Home: ↑ Lesson 2: The Shell
Course Home: βŒ‚ Introduction to Linux