On Unix-like operating systems, the cd command (“change directory”) changes the shell’s current working directory.

This page covers the bash built-in version of cd.

Description

cd is among the commands you use most on the command line. It changes your working directory. Use it to move around in the hierarchy of your file system.

  • Description

  • Syntax

  • Options

  • Directories

  • How directories are represented

  • The root directory

  • The working directory

  • The parent directory

  • Your home directory

  • The previous working directory

  • Using a trailing slash

  • Examples

  • Related commands

  • Linux commands help

  • Options

  • How directories are represented

  • The root directory

  • The working directory

  • The parent directory

  • Your home directory

  • The previous working directory

  • Using a trailing slash

Syntax

cd [-L | -P [-e]] directory

Options

Directories

To help you organize your files, your file system contains special files called directories. Think of them like folders in a file cabinet: they have names, like files, but their function is to “contain” other files, and other directories. In this way, you can keep the files on your system separate and sorted according to their function or purpose.

All files and directories on your system stem from one main directory: the root directory. There are no directories “above” the root directory; all other directories are “below” the root directory.

Any directory contained inside another directory is called a subdirectory. Subdirectories “branch” off the “root” of the directory “tree.” Unlike a real tree, directory trees are upside-down: the root is at the top and the branches reach down. When you move into a subdirectory, you are moving “down” the tree; when you move into a directory’s parent directory, you are moving “up” the tree.

All directories on your file system are subdirectories of the root directory.

How directories are represented

Directories are separated by a forward slash ("/"). For instance, the directory name “documents/work/accounting” means “the directory named accounting, which is in the directory named work, which is in the directory named documents, which is in the current directory.”

By default, when you open a terminal and begin using the command line, you are placed in your home directory.

To change into this directory, and make it our working directory, we would use the command:

cd documents/work/accounting

If the first character of a directory name is a slash, that denotes that the directory path begins in the root directory. So, in contrast to the example above, the directory name “/documents/work/accounting” (note the beginning slash) means “the directory named accounting, which is in the directory named work, which is in the directory named documents, which is in the root directory.”

To change into this directory, making it our working directory, we would use the command:

cd /documents/work/accounting

The root directory

The root directory is the first directory in your filesystem hierarchy. All other directories are subdirectories of the root directory.

The root directory is represented by a single slash ("/").

To change into the root directory, making it your working directory, use the command:

cd /

The working directory

The current directory, regardless of which directory it is, is represented by a single dot (".").

You cannot make any changes to the root directory on your system unless you are logged in as root, or using the sudo command. Unless you are certain of what you’re doing, don’t make any changes here. Making a mistake could destroy your system!

So, running this command:

cd .

…would change us into the current directory. In other words, it would do nothing.

What’s actually happening is the dot represents the “assumed” directory; it’s a placeholder, and you can use the dot anywhere in a directory name. So, the command:

cd documents

…is the same as the command:

cd ./documents

…and also the same as:

cd documents/.

…as well as:

cd ./documents/.

In all of these examples, the dot represents “the directory assumed to be there”. You can use it as a placeholder anywhere you want to tell the shell that a directory goes in that place, and to assume the appropriate value.

The parent directory

The parent directory of the current directory — in other words, the directory one level up from the current directory, which contains the directory we’re in now — is represented by two dots ("..").

So, If we were in the directory /home/username/documents, and we executed the command:

cd ..

…we would be placed in the directory /home/username.

The double-dot ("..") directory notation can be used anywhere in a directory name to represent going up one level. For instance, if we have two directories, /home/username/documents and /home/username/downloads, and we are currently in /home/username/documents, we could type the following:

cd ../downloads

…and we would be placed in /home/username/downloads.

Another “useless” command, but one that illustrates the way you can use the double-dot notation, is this one:

cd documents/..

…which will place us in the directory one level above the subdirectory documents — in other words, the current directory. Note that this only work if the subdirectory documents already exists.

Similarly, the command:

cd documents/../documents

…is functionally the same as this command:

cd documents

Your home directory

Your home directory is the directory you’re placed in, by default, when you open a new terminal session. It’s the directory that holds all your settings, your mail, your default documents and downloads folder, and other personal items. It has a special representation: a tilde ("~").

So, if our username is username, and our home directory is /home/username, the command:

cd ~

…is functionally the same as the command:

cd /home/username

…and we can always access the subdirectories of our home directory by placing the tilde as the first component of the directory name. For instance, if your documents folder is named /home/username/documents, you can always move into that directory using the command:

cd ~/documents

The previous working directory

After you change directory, you can change back to the previous working directory by representing it with a dash ("-"). When you do this, the shell automatically tells you the new directory name.

So, for instance:

cd ~

pwd

/home/hope

cd Documents/financial

/home/hope/Documents/financial

cd -

Using a trailing slash

Using a slash at the end of a directory name is optional. Directories are treated as files, so you don’t need to put it there; but if you do put it there, the system knows for sure you’re expecting that file to be a directory. For example, if there is a subdirectory in the current directory named dirname, the command:

cd dirname

cd dirname/

The second form of the command explicitly states that dirname is a directory, but both commands are equivalent.

Examples

cd hope

The above example would change the working directory to the hope subdirectory if it exists.

cd ../computerhope

The above example would traverse up one level to the parent directory and then down into the directory computerhope.

cd ../../

Traverse two directories up the directory tree. In other words, move into the directory which contains the directory which contains the current working directory.

pwd — Print the name of the working directory.ln — Create a link, or a symbolic link, to a file or directory.mkdir — Create a directory.rmdir — Remove a directory.

  • How to change a directory or open a folder.
  • What is the difference between cd .. and cd\ or cd / commands?