Image by Author | Midjourney & Canva
It should come as no surprise to anyone reading this that the Unix/Linux filesystem is organized in a hierarchical structure. The topmost directory is the root directory, denoted by /
. All other directories and files are organized under this root. Beyond this, each user has a home directory, typically represented by ~
, where personal files and directories are stored.
While much file management can be handled via GUI file managers on Linux and other Unix-like systems, using the Bourne-Again Shell (bash) command line provides a way to do so that is simple, flexible, quick, and has the ability to interact with a variety of command line utilities and apps.
Let’s take a look at how to navigate the Unix/Linux filesystem using bash.
The pwd
Command
Purpose: Display the current working directory.
Usage: The pwd
command is straightforward to use. It shows the absolute path of your current location in the filesystem.
Example:
Navigating with cd
Purpose: Change directories.
Basic Usage: The cd
command allows you to move to a different directory.
Common Options:
- Moving to the home directory: You can quickly navigate to your home directory using
cd ~
or simplycd
. - Moving up one directory: To move up to the parent directory, use
cd ..
. - Navigating to a subdirectory: To enter a subdirectory within the current directory, just use
cd subdirectory_name
.
Listing Files with ls
Purpose: List files and directories.
Basic Usage: The ls
command lists the files and directories in the current directory.
Common Options:
- Detailed listing: For a detailed view, use
ls -l
. This provides information like file permissions, number of links, owner, group, file size, and timestamp. - Including hidden files: To include hidden files (those starting with a
.
), usels -a
. - Combining options: Combine options for a more comprehensive listing with
ls -la
.
Visualizing Directory Structure with tree
Purpose: Display directories in a tree-like format.
Basic Usage: The tree
command provides a visual representation of the directory structure.
Common Options:
- Limited depth: To limit the depth of the directory tree, use
tree -L
followed by the desired level. - Showing hidden files: Include hidden files in the tree with
tree -a
.
Practical Example
Let’s go through a practical example of navigating to a directory, listing its contents, and displaying its structure.
cd ~/projects
pwd
ls -la
tree -L 1
Explanation:
cd ~/projects
: Navigate to theprojects
directory in your home directory.pwd
: Confirm your current directory.ls -la
: List all files, including hidden ones, with detailed information.tree -L 1
: Display the directory structure up to one level deep.
Combining Commands for Efficient Navigation
You can chain commands using &&
to execute multiple commands in sequence. This can streamline your workflow.
cd ~/projects && ls -la && tree -L 2
This command sequence navigates to the projects
directory, lists all files with details, and then displays the directory structure up to two levels deep.
Final Thoughts
Practicing the commands introduced in this article will help you become more proficient in navigating the Unix/Linux filesystem. Once you’re comfortable with these basics, you can explore more advanced navigation and file manipulation commands.
Matthew Mayo (@mattmayo13) holds a master’s degree in computer science and a graduate diploma in data mining. As managing editor of KDnuggets & Statology, and contributing editor at Machine Learning Mastery, Matthew aims to make complex data science concepts accessible. His professional interests include natural language processing, language models, machine learning algorithms, and exploring emerging AI. He is driven by a mission to democratize knowledge in the data science community. Matthew has been coding since he was 6 years old.