- Linux Directory Structure Explained for Beginners
- Linux directory structure
- / – The root directory
- /bin – Binaries
- /dev – Device files
- /etc – Configuration files
- /usr – User binaries and program data
- /home – User personal data
- /lib – Shared libraries
- /sbin – System binaries
- /tmp – Temporary files
- /var – Variable data files
- /boot – Boot files
- /proc – Process and kernel files
- /opt – Optional software
- /root – The home directory of the root
- /media – Mount point for removable media
- /mnt – Mount directory
- /srv – Service data
- Directory structure of the Linux operating system explained
- The directory structure of Linux
- User Binaries (/bin)
- Boot Loader (/boot)
- Device Files (/dev)
- Configuration Files (/etc)
- Home Directory (/home)
- System Libraries (/lib)
- Mount Directory (/mnt)
- Optional for add-on application (/opt)
- Process Info (/proc)
- Root Home Directory (/root)
- Run-time Varibale (/run)
- System Binaries (/sbin)
- Sysfs File System (/sys)
- Temporary Files (/tmp)
- User Programs (/usr)
- Variable Files (/var)
- Conclusion
- Search
- About This Site
- Latest Tutorials
Linux Directory Structure Explained for Beginners
This tutorial explains the Linux directory structure. You’ll learn the Linux filesystem hierarchy along with the purpose of the various directories on a Linux system.
If you are even faintly acquainted with Linux, you might have heard the terms root, lib, bin etc. These are various directories that you’ll find in all Linux distributions.
In fact, the Linux Foundation maintains a Filesystem Hierarchy Standard (FHS). This FHS defines the directory structure and the content/purpose of the directories in Linux distributions. Thanks to this FHS, you’ll find the same directory structure in (almost) all the Linux distributions.
Let’s see the Linux directory structure in detail.
Linux directory structure
Linux is based on UNIX and hence it borrows its filesystem hierarchy from UNIX. You’ll fine a similar directory structure in UNIX-like operating systems such as BSD and macOS. I’ll be using the term Linux hereafter instead of UNIX though.
/ – The root directory
Everything, all the files and directories, in Linux are located under ‘root’ represented by ‘/’. If you look at the directory structure, you’ll realize that it is similar to a plant’s root.
Since all other directories or files are descended from root, the absolute path of any file is traversed through root. For example, if you have a file in /home/user/documents, you can guess that the directory structure goes from root->home->user->documents.
The cruel rm -rf / joke
You may have come across some jokes on internet that mentions “rm -rf /” . rm command is used for removing files and directories in Linux.
With rm -rf /, you ask your system to forcefully and recursively delete the contents of the root directory. Since root directory has everything underneath, you end up deleting everything and your Linux system just vanishes (theoretically).
Most Linux distribution won’t run this command unless you provide –no-preserve-root. In any case, don’t be curious to run this command. Curiosity killed the cat, after all.
/bin – Binaries
The ‘/bin’ directly contains the executable files of many basic shell commands like ls, cp, cd etc. Mostly the programs are in binary format here and accessible by all the users in the Linux system.
/dev – Device files
This directory only contains special files, including those relating to the devices. These are virtual files, not physically on the disk.
Some interesting examples of these files are:
- /dev/null: can be sent to destroy any file or string
- /dev/zero: contains an infinite sequence of 0
- /dev/random: contains an infinite sequence of random values
/etc – Configuration files
The /etc directory contains the core configuration files of the system, use primarily by the administrator and services, such as the password file and networking files.
If you need to make changes in system configuration (for example, changing the hostname), this is where you’ll find the respective files.
/usr – User binaries and program data
in ‘/usr’ go all the executable files, libraries, source of most of the system programs. For this reason, most of the files contained therein is readonly (for the normal user)
- ‘/usr/bin’ contains basic user commands
- ‘/usr/sbin’ contains additional commands for the administrator
- ‘/usr/lib’ contains the system libraries
- ‘/usr/share’ contains documentation or common to all libraries, for example ‘/usr/share/man’ contains the text of the manpage
/home – User personal data
Home directory contains personal directories for the users. The home directory contains the user data and user-specific configuration files. As a user, you’ll put your personal files, notes, programs etc in your home directory.
When you create a user on your Linux system, it’s a general practice to create a home directory for the user. Suppose your Linux system has two users, Alice and Bob. They’ll have a home directory of their own at locations /home/alice and /home/bob.
Do note that Bob won’t have access to /home/alice and vice versa. That makes sense because only the user should have access to his/her home. You may read about file permissions in Linux to know more on this topic.
/lib – Shared libraries
Libraries are basically codes that can be used by the executable binaries. The /lib directory holds the libraries needed by the binaries in /bin and /sbin directories.
Libraries needed by the binaries in the /usr/bin and /usr/sbin are located in the directory /usr/lib.
/sbin – System binaries
This is similar to the /bin directory. The only difference is that is contains the binaries that can only be run by root or a sudo user. You can think of the ‘s’ in ‘sbin’ as super or sudo.
/tmp – Temporary files
As the name suggests, this directory holds temporary files. Many applications use this directory to store temporary files. Even you can use directory to store temporary files.
But do note that the contains of the /tmp directories are deleted when your system restarts. Some Linux system also delete files old files automatically so don’ store anything important here.
/var – Variable data files
Var, short for variable, is where programs store runtime information like system logging, user tracking, caches, and other files that system programs create and manage.
The files stored here are NOT cleaned automatically and hence it provides a good place for system administrators to look for information about their system behavior. For example, if you want to check the login history in your Linux system, just check the content of the file in /var/log/wtmp.
/boot – Boot files
The ‘/boot’ directory contains the files of the kernel and boot image, in addition to LILO and Grub. It is often advisable that the directory resides in a partition at the beginning of the disc.
/proc – Process and kernel files
The ‘/proc’ directory contains the information about currently running processes and kernel parameters. The content of the proc directory is used by a number of tools to get runtime system information.
For example, if you want to check processor information in Linux, you can simply refer to the file /proc/cpuinfo. You want to check memory usage of your Linux system, just look at the content of /proc/meminfo file.
/opt – Optional software
Traditionally, the /opt directory is used for installing/storing the files of third-party applications that are not available from the distribution’s repository.
The normal practice is to keep the software code in opt and then link the binary file in the /bin directory so that all the users can run it.
/root – The home directory of the root
There is /root directory as well and it works as the home directory of the root user. So instead of /home/root, the home of root is located at /root. Do not confuse it with the root directory (/).
/media – Mount point for removable media
When you connect a removable media such as USB disk, SD card or DVD, a directory is automatically created under the /media directory for them. You can access the content of the removable media from this directory.
/mnt – Mount directory
This is similar to the /media directory but instead of automatically mounting the removable media, mnt is used by system administrators to manually mount a filesystem.
/srv – Service data
The /srv directory contains data for services provided by the system. For example, if you run a HTTP server, it’s a good practice to store the website data in the /srv directory.
I think this much information is enough for you to understand the Linux directory structure and its usage.
In the end, if you want, you can download and save this image for quick reference to the directory structure in Linux systems.
Directory structure of the Linux operating system explained
Unlike the Windows system, Linux does have a lot of different directory structures which we will be discussing today. In Linux, all the directories retain from the root or base directory (/). Inside the base directory, if you use the ls command to list the file and dir you could also see some symlinks that point to other directories using ( → ). The symlinks also known for symbolic links is the type of file in Linux that points to another file or directory in the system. It is kind of similar to shortcuts in windows.
If you are new to Linux understanding directory structure is the initial phase. Without it, you might get headaches while managing the files and directories. So this article will help you cover up and understanding the directory structure of Linux OS. To demonstrate this article I have used Ubuntu 20.04 LTS system.
The directory structure of Linux
User Binaries (/bin)
This directory contains executable binaries of different command and system programs that are being used for single-user modes. For example ls, ping, cp, grep, etc.
Boot Loader (/boot)
All the boot loader files and their associated files are located in this directory. Such as kernels, initrd, grub, etc related files located here.
Device Files (/dev)
All the hardware-related files do contain inside this directory. This directory contains system all hardware devices related files which let the different programs interact with devices on the system.
Configuration Files (/etc)
This directory consists of all configuration files, shutdown as well ad startup shell scripts of the programs. Whenever you install the application on the system by default its configuration file will be created in this directory.
Home Directory (/home)
This is the default home directory of all the users that consist of their own respective environmental setup and personal files. A new directory under its username is created on this directory when we create a new user.
System Libraries (/lib)
The lib directory contains libraries need for binaries file located at /bin and /sbin to run different commands in the root file system.
Mount Directory (/mnt)
The mnt directory is used for temporary mounting of the filesystem.
Optional for add-on application (/opt)
Opt generally refers to optional which is the installation location for the third-party software. Different third-party software is located in this directory.
Process Info (/proc)
The proc directory contains information about the running process along with their PID or process id. A pseudo and virtual file system that holds text-based information about the system resource and process.
Root Home Directory (/root)
You shouldn’t mix the root directory (/) with /root both are completely different. ‘/root’ is the root user default home directory just like other user home directories.
Run-time Varibale (/run)
This directory contains system information since it was last booted that describes currently running daemons and logged-in users.
System Binaries (/sbin)
The sbin directory also contains executable binary files that are used for maintaining the system by the system administrator. System maintenance commands like fdisk, iptables, ifconfig, reboot, etc are executed from it.
Sysfs File System (/sys)
The pseudo file system that stores various information devices connected to the system and about various kernel subsystems especially in the latest Linux distro.
Temporary Files (/tmp)
The temporary filesystem in Linux is accessible by root as well as other users that tend to store temporary files and documents. Once the system is rebooted all the files inside the tmp directory will be deleted.
User Programs (/usr)
For second-level programs, this directory holds source code, documentation, executable binaries, libraries. It contains binary files for user programs as well as system binary files for system administrators.
Variable Files (/var)
The var is the short form for the variable that is used to store lock, mail, log, temp, and spool files. During the normal operation of the system, the content of the files inside this directory is expected to grow.
Conclusion
Understanding the Linux file system may lead to efficient workflow while managing software, logs files, documents, etc. I hope now you had a clear concept of the directory structure of Linux.
Search
About This Site
Vitux.com aims to become a Linux compendium with lots of unique and up to date tutorials.