The Linux Filesystem and Structure Explained

by | Jan 24, 2023 | BASH, Linux

If you’re new to Linux, the filesystem can seem a bit overwhelming at first. There are a lot of different directories and files, and it can be hard to know what they’re all for. In this article, we’ll take a look at the Linux filesystem and explain what all the different directories and files are for.

What is a filesystem?

Before we get into the specifics of the Linux filesystem, let’s define what a filesystem is. A filesystem is a way of organizing and storing files on a computer. It’s like a big tree, with the root (/) at the top and all the other directories branching off of it. Each file and directory has a unique location within the filesystem, and this location is called its path.

The Linux Filesystem

The Linux filesystem is organized into a series of directories and subdirectories, with the top-level directory being the root directory (/) . All other directories and files are located within the root directory.

Here are some of the most important directories and their functions:

/bin: This directory contains essential command-line programs. These are programs that are necessary for the system to function properly. Examples of programs found here include ls, cp, and mv.

/boot: This directory contains files that are necessary for the system to boot up. These files include the Linux kernel and the initial RAM disk image.

/dev: This directory contains special files that represent devices on the system. These files are used by the system to communicate with devices such as the keyboard, mouse, and hard drive.

/etc: This directory contains configuration files for the system. These files are used to configure various aspects of the system, such as user accounts and network settings.

/home: This directory contains the home directories for each user on the system. Each user has their own directory under /home, where they can store their personal files and settings.

/lib: This directory contains library files. Library files are collections of code that can be used by multiple programs. These files are used to make it easier for developers to write programs.

/media: This directory is used to mount removable storage devices such as USB drives and CDs. When a removable storage device is connected to the system, it will be mounted (made accessible) in the /media directory.

/mnt: This directory is similar to the /media directory, but it is typically used for temporary mounts. For example, if you’re installing software from a CD, the CD will be mounted in the /mnt directory.

/opt: This directory is used for “optional” software. Software that is not essential for the system to function can be installed in this directory.

/proc: This directory contains special files that represent processes running on the system. These files are used by the system to communicate with processes, and they can be used to get information about running processes.

/root: This directory is the home directory for the root user. The root user is the system administrator and has full access to the system.

/sbin: This directory contains system programs that are used for system administration. Examples of programs found here include fsck and shutdown.

/tmp: This directory is used for temporary files. These files are often created by programs and are deleted when the system is rebooted.

/usr: This directory contains user-related files and programs. This includes programs that are not essential for the system to function, as well as documentation and other files.

/var: This directory contains variable files. These files are files that change frequently, such as log files and space for temporary files. This directory also contains files for services such as web servers and mail servers.

/sys: This directory contains information about the system’s hardware and devices. This information is represented as files and can be used to get information about the system’s hardware and devices.

/srv: This directory contains data for services such as web servers and FTP servers. This directory is used to store the files that are served by these services.

/opt: This directory is used for “optional” software. Software that is not essential for the system to function can be installed in this directory.

/lib64: This directory contains library files for 64-bit systems. It is similar to the /lib directory, but it contains files that are specific to 64-bit systems.

It’s worth noting that not all of these directories will exist on every Linux system. The exact layout of the filesystem can vary depending on the distribution and the specific configuration of the system.

Examples

Let’s take a look at some examples of how the Linux filesystem is used in practice.

Let’s say you want to create a new file called “example.txt” in your home directory. The path to your home directory is /home/username, so the path to the new file would be /home/username/example.txt.

If you wanted to install a new program, it would typically be installed in the /usr/local/ directory.

If you wanted to check the system logs, you would look in the /var/log/ directory.

If you wanted to change a configuration file for the system, you would look in the /etc/ directory.

Conclusion

The Linux filesystem can be a bit overwhelming at first, but it’s actually quite simple once you understand the basic structure and purpose of the different directories. The root directory (/) is the top-level directory and all other directories and files are located within it. Each directory has its own specific purpose, and understanding this can help you navigate the filesystem and find what you’re looking for. With a little bit of practice, you’ll be a pro at navigating the Linux filesystem in no time.