Linux directory commands for beginners
Lesson
On Linux, directories are places in the filesystem which can contain files and other directories. The Windows equivalent is a ‘folder’ - sometimes the words folder and directory are used interchangeably. Navigating between directories from the command line and exploring what they contain will quickly become second nature to you. Linux is structured according to the Filesystem Hierarchy Standard – but you don’t need to understand all of it at this stage.
On Linux, the filesystem has a root at /
(forward slash). All other
files and directories can be described with a path from the root – with forward
slashes used to separate the different levels of the hierarchy.
Directory structure example
For example, we might find user1’s Downloads directory at `/home/user1/Downloads’. Therefore, the Downloads directory is inside the ‘user1’ directory which is inside the ‘home’ directory which is inside the root (‘/’) directory:
/
home/
user1/
Downloads/
download1.ext
download2.file
Absolute and relative paths
A path can be absolute which specifies how to get there from the root directory or relative to the directory you are currently in. Absolute paths have a slash at the start (a leading forward slash) whereas relative paths do not.
Absolute and relative paths example
Continuing the example above, if you are in the user1 home directory (/home/user1
)
then the relative path to download1.ext in user1’s Downloads directory is
Downloads/download1.ext
.
The absolute path is /home/user1/Downloads/download1.ext
, and we can use this
absolute path without worrying what directory we are currently in.
What directory am I in?
Often the prompt (the text to the left of where you type in a terminal – ending
with a $ or a #) will display at least part of the directory that you’re in
– the current working directory. However, there is also a command that will print
the path to the current working directory - pwd
for ‘print working directory’.
$ pwd
/home/user1
Wherever you are in the filesystem on Linux, if you get lost use pwd
to
check the location!
Show the contents of a directory.
Now that you know what directory you’re in, you probably want to see what else is
here in terms of files and directories. You can list the contents of a directory
with ls
. Running just ls
on its own will list the contents of the current directory.
Running ls
with a path to another directory (either a relative path or an absolute
path) will list the contents of that directory.
Directory listing example
$ pwd
/home/user1
$ ls
Downloads
$ ls Downloads
download1.ext
download2.file
Furthermore, you can run ls
with various options to change what it
lists or how it displays that information.
Listing hidden files on Linux
The -a
option will include all files in the output of ls
, including hidden
files. Files can be ‘hidden’ on Linux by having a file name which starts with a
dot such as .hidden.txt
.
Hidden files example
$ ls
Downloads
$ ls -a
.
..
.hidden.txt
Downloads
But what are those ‘dot’ (.
) and ‘double dot’ (..
) entries shown by ls
? These
are special directories that we can interact with. The single dot refers to
the current directory, and the double dot refers to the directory one level up in
the hierarchy.
Example
$ pwd
/user1/home
$ ls .
Downloads
$ ls ..
user1
Navigating to files and directories
To move between folders (which we generally call directories), we can use the cd
command – ‘cd’ is short for change directory. Type ‘cd’ followed by the
name of the directory that you would like to move into. You can either move to
somewhere relative to your current directory or use an absolute path (starting
with a forward slash) to move anywhere.
Relative path example
$ pwd
/home/user1
$ cd Downloads
$ pwd
/home/user1/Downloads
Absolute path example
$ pwd
/tmp
$ cd /home/user1/Downloads
$ pwd
/home/user1/Downloads
Go back to the previous directory.
Sometimes you might want to navigate back to the last directory that you were in.
There is a hand shorthand for this; you can use cd
with a hyphen/dash -
like this cd -
.
Example
The following shows an example of moving back to the previous working directory.
$ pwd
/home/user1/Downloads
$ cd /tmp
$ pwd
/tmp
$ cd -
/home/user1/Downloads
Go up a directory
It is also simple to navigate up a level in the directory hierarchy. We can do
this using the special ‘double dot’ directory mentioned previously. To recap,
..
is just a link to the directory above.
Example
The following shows an example of moving into the directory above the current working directory.
$ pwd
/home/user1/Downloads
$ cd ..
$ pwd
/home/user1
What is the home directory on Linux?
As a user on Linux, you will typically have a ‘home’ directory in /home/
. The
home directory is where you’ll generally find yourself when you open a new shell
session and provides somewhere convenient to store your files. The shell has a
useful shorthand for the location of your home directory, the tilde character
~
. Whenever you type ~
at the command prompt, the shell will expand it to
the absolute path of your home directory when it interprets the command.
Navigate to the home directory
To get to your home directory, you can use the cd
command, with tilde ~
on the
command line. The shell will replace ~
with the path to your home directory before
completing the change directory command.
$ pwd
/tmp
$ cd ~
$ pwd
/home/user1
Print your home directory
You can use the echo command and the tilde shorthand to print the location
of your Linux home directory. There are various ways to achieve this but using
echo and ~
is an easy way to start.
$ echo ~
/home/user1
Tab Complete
When using a command which expects a directory as an argument (such as ls
or
cd
), we can use the tab key on the keyboard (<tab>
) to automatically complete
the rest of the path. If there is only one path that we could be typing, then it
will be expanded at the prompt. If there are multiple paths that the current line
could be expanded to then pressing <tab>
twice will print a list of the possible
directories that you could use. Tab completion at the command line works for both
absolute and relative paths.
Example
$ pwd
/home/user1
$ cd <tab><tab>
.
..
Downloads
References
Learn more about this topic by checking out these references.
Other Lessons
Learn more by checking out these related lessons