When I started using Linux, the file system was nothing like the folder structures I’d been used to on Windows. I’ll admit that it took me a while to feel comfortable. However, with time, I realized that the more you understand the file system, the more control you have over your computer.

Basic Structure of the Linux File System

A view of the Linux root directories folders.

At its core, the Linux directory structure is straightforward once you understand the layout. Everything starts at the root directory, symbolized by /, and branches out from there.

Here’s a quick breakdown of the most important directories:

  • /home: Where your files live. Think of it like your “Users” directory on Windows.
  • /etc: System-wide configuration files live here, including everything from network settings to user account info.
  • /usr: This holds user-installed software and system utilities.
  • /var: Log files, databases, and other changing data go here.
  • /tmp: Temporary files, cleared on reboot.
Remove Ads

Understanding the purpose of these directories helps demystify the structure. Once I knew where things were supposed to go, the system felt much more intuitive.

Using commands to change directories and list out contents.

Here are some of the commands I use to navigate the Linux file system:

  • cd: Change directory. This is the bread and butter of navigation. Whether I’m jumping to my home directory (cd ~) or moving up a level (cd ..), cd is my most-used command.
  • ls: List directory contents. I add the -l flag for a detailed view or -a to see hidden files. ls keeps me oriented, and I often use it after changing directories just to see what I’m working with.
  • pwd: Print working directory. This command tells me exactly where I am in the system, which comes in handy if I’m deep in a directory tree and forget my location.
Remove Ads

Navigating efficiently with these commands saves me a ton of time and allows me to focus on more important tasks.

Using Wildcards and Globbing

An example of using wildcards in Linux.

When I’m managing large numbers of files, wildcards can be a lifesaver. They make bulk operations quick and painless. Here are a couple of tricks I use:

  • *: This matches any string of characters. For example, ls *.txt will list all TXT files in the current directory. I often use it to copy or move multiple files at once.
  • ?: This matches a single character. If I need to target files like file1.txt, file2.txt, etc., I use ls file?.txt.

Using wildcards lets me operate on large batches of files without needing to manually type out each name. It’s a simple trick but incredibly effective.

Remove Ads

Understanding Hidden Files and Directories

Using the ls -la command to show hidden directories and files.

One thing that surprised me when I first started using Linux was how many hidden files are scattered throughout the system. On Linux, any file or directory that begins with a dot (.) is by default hidden. These often hold configuration settings.

To view them, I use:

ls -la

This shows all the hidden files in a directory.

For example, .bashrc contains customizations for my shell environment. Editing this file can tweak how your terminal behaves, which is something I’ve used to streamline my workflow.

Creating a symbolic link in Linux.
Remove Ads

I often need access to the same files from different locations on my system. Rather than duplicating files and wasting space, I use symbolic links (symlinks) to create shortcuts. Here’s how I set them up:

ln -s target link_name

This creates a symbolic link to a file or directory. For instance, if I need a file on my desktop but don’t want to move it, I use a command like this:

ln -s /home/user/Documents/file.txt /home/user/Desktop/file.txt

Symlinks are great for organizing files without cluttering up directories or duplicating data.

File Permissions and Ownership

An example of file permissions in Linux.

If you’re concerned about security (and you should be), file permissions and ownership are vital. Each file in Linux has three permission types: read (r), write (w), and execute (x). Here’s how I manage them:

Remove Ads
  • chmod: This command changes file permissions. For example, chmod 755 file.txt gives me full control (read, write, execute) while others can only read and execute.
  • chown: This changes file ownership. If I need to assign a file to a specific user, I’ll use chown username:group file.txt.

Understanding permissions helps me ensure that only the right people have access to critical files, which is key for both personal and professional use.


Figuring out the Linux file system took some time, but once it clicked, everything got way easier. Now, moving around, managing files, and setting permissions feels second nature. These are the commands I use every day to stay on top of things. If you’re new to Linux or just want to level up, getting comfortable with the file system is the way to go. Stick with it, and before long, you’ll feel right at home.