Learning the shell - Lesson 2: Navigation (2024)

Home |

Previous | Contents | Next

In this lesson, we will introduce our first three commands: pwd (print workingdirectory), cd(change directory), and ls (list files and directories).

Those new to the command line will need to pay close attention to thislesson since the concepts will take some getting used to.

File System Organization

Like Windows, the files on a Linux system are arranged in what is called ahierarchical directory structure. This means that they are organized ina tree-like pattern of directories (called folders in other systems),which may contain files and subdirectories. The first directory in thefile system is called the root directory. The root directory containsfiles and subdirectories, which contain more files and subdirectories and so onand so on.

Most graphical environments include a file manager program used to view andmanipulate the contents of the file system. Often we will see the file systemrepresented like this:Learning the shell - Lesson 2: Navigation (1)

One important difference between Windows and Unix-like operating systemssuch as Linux is that Linux does not employ the concept of drive letters. WhileWindows drive letters split the file system into a series of different trees(one for each device), Linux always has a single tree. Different storagedevices may be different branches of the tree, but there is always just asingle tree.

pwd

Since the command line interface cannot provide graphic pictures of the filesystem structure, we must have a different way of representing it. To do this,think of the file system tree as a maze, and that we are standing in it. At anygiven moment, we are located in a single directory. Inside that directory, wecan see its files and the pathway to its parent directory and thepathways to the subdirectories of the directory in which we are standing.

The directory we are standing in is called the working directory. Tosee the name of the working directory, we use the pwdcommand.

[me@linuxbox me]$ pwd/home/me

When we first log on to our Linux system, the working directory is set toour home directory. This is where we put our files. On most systems,the home directory will be called /home/user_name, but it can be anythingaccording to the whims of the system administrator.

To list the files in the working directory, we use the ls command.

[me@linuxbox me]$ lsDesktop Downloads foo.txt Pictures TemplatesDocuments examples.desktop Music Public Videos

We will come back to ls in the next lesson. Thereare a lot of fun things you can do with it, but we have to talk about pathnamesand directories a bit first.

cd

To change the working directory (where we are standing in the maze) we usethe cd command. To do this, we type cd followed by the pathname of the desired workingdirectory. A pathname is the route we take along the branches of the tree toget to the directory we want. Pathnames can be specified two different ways;absolute pathnames or relative pathnames. Let's look withabsolute pathnames first.

An absolute pathname begins with the root directory and follows the treebranch by branch until the path to the desired directory or file is completed.For example, there is a directory on your system in which most programs areinstalled. The pathname of the directory is /usr/bin. This meansfrom the root directory (represented by the leading slash in the pathname)there is a directory called "usr" which contains a directory called "bin".

Let's try this out:

me@linuxbox me]$ cd /usr/binme@linuxbox bin]$ pwd/usr/binme@linuxbox bin]$ ls'[' mshortname 2to3-2.7 mshowfat 411toppm mtools a2ps mtoolstest a2ps-lpr-wrapper mtr aa-enabled mtrace aa-exec mtr-packet aclocal mtvtoppm aclocal-1.15 mtype aconnect mutter acpi_listen mxtar add-apt-repository mzip addpart nameiand many more...

Now we can see that we have changed the current working directory to/usr/bin and that it is full of files. Notice how the shell prompthas changed? As a convenience, it is usually set up to display the name of theworking directory.

Where an absolute pathname starts from the root directory and leads to itsdestination, a relative pathname starts from the working directory. To do this,it uses a couple of special notations to represent relative positions in thefile system tree. These special notations are "." (dot) and ".." (dot dot).

The "." notation refers to the working directory itself and the ".."notation refers to the working directory's parent directory. Here is how itworks. Let's change the working directory to /usr/bin again:

me@linuxbox me]$ cd /usr/binme@linuxbox bin]$ pwd/usr/bin

O.K., now let's say that we wanted to change the working directory to theparent of /usr/bin which is /usr. We could do thattwo different ways. First, with an absolute pathname:

me@linuxbox bin]$ cd /usrme@linuxbox usr]$ pwd/usr

Or, with a relative pathname:

me@linuxbox bin]$ cd ..me@linuxbox usr]$ pwd/usr

Two different methods with identical results. Which one should we use? Theone that requires the least typing!

Likewise, we can change the working directory from /usr to/usr/bin in two different ways. First using an absolutepathname:

me@linuxbox usr]$ cd /usr/binme@linuxbox bin]$ pwd/usr/bin

Or, with a relative pathname:

me@linuxbox usr]$ cd ./binme@linuxbox bin]$ pwd/usr/bin

Now, there is something important that we must point out here. In mostcases, we can omit the "./". It is implied. Typing:

me@linuxbox usr]$ cd bin

would do the same thing. In general, if we do not specify a pathname tosomething, the working directory will be assumed. There is one importantexception to this, but we won't get to that for a while.

A Few Shortcuts

If we type cd followed by nothing, cd will change the working directory to our homedirectory.

A related shortcut is to type cd~user_name. In this case, cd willchange the working directory to the home directory of the specified user.

Typing cd - changes the workingdirectory to the previous one.

Important facts about file names

  1. File names that begin with a period character are hidden. This only means that ls will not list them unless we say ls -a. When your account was created, several hidden files were placed in your home directory to configure things for your account. Later on we will take a closer look at some of these files to see how you can customize our environment. In addition, some applications will place their configuration and settings files in your home directory as hidden files.

  2. File names in Linux, like Unix, are case sensitive. The file names "File1" and "file1" refer to different files.

  3. Linux has no concept of a "file extension" like Windows systems. You may name files any way you like. However, while Linux itself does not care about file extensions, many application programs do.

  4. Though Linux supports long file names which may contain embedded spaces and punctuation characters, limit the punctuation characters to period, dash, and underscore. Most importantly, do not embed spaces in file names. If you want to represent spaces between words in a file name, use underscore characters. You will thank yourself later.

Top | Previous | Contents | Next

© 2000-2024,William E. Shotts, Jr.Verbatim copying and distribution of this entire article ispermitted in any medium, provided this copyright notice is preserved.

Linux® is a registered trademark of Linus Torvalds.

Learning the shell - Lesson 2: Navigation (2024)

FAQs

What is a shell script that changes the working directory to the user's home directory? ›

If we type cd followed by nothing, cd will change the working directory to our home directory. A related shortcut is to type cd ~user_name . In this case, cd will change the working directory to the home directory of the specified user. Typing cd - changes the working directory to the previous one.

How do I navigate to a working directory? ›

To display the full pathname of the present working directory, use the pwd command. To navigate to a subdirectory relative to your current working directory, use the cd command followed by the target directory.

How do I navigate into Unix? ›

Navigation in Unix is the same thing as pointing and clicking in a typical graphical user interface. For example, if you have the folder “ExperimentFolder” on my Desktop, you can point and double-click to open it.

How do I access a directory in Unix? ›

Changing directories
  1. To change to another directory, use the cd command. ...
  2. To change to your previous directory, use the cd - command:
  3. The user above has changed from one directory to another, then used the cd - command to return to their previous directory.
  4. You can go to the parent directory quickly by using the ../.
Mar 26, 2024

Which command should you use to change directory in shell navigation? ›

cd [path] changes the current working directory. Most commands take options that begin with a single - . Directory names in a path are separated with / on Unix, but \ on Windows. / on its own is the root directory of the whole file system.

How do I navigate to a directory in shell script? ›

cd path-to-directory : The command followed by a path allows you to change into a specified directory (such as a directory named documents ). cd .. (two dots). The .. means “the parent directory” of your current directory, so you can use cd .. to go back (or up) one directory.

What is shell navigation? ›

It allows you to run programs, manage files, and perform other tasks using commands that you type into the shell. Navigating the Shell. To navigate the shell, you'll need to use commands.

What is the difference between home directory and working directory? ›

Answer: Home directory is the default working directory when a user logs in. On the other hand, working directory is the user's current directory. Working directory can be changed.

Which command is used to navigate into a directory or folder? ›

cd or change directory

The cd command allows you to move between directories. The cd command takes an argument, usually the name of the folder you want to move to, so the full command is cd your-directory . Now that we moved to your Desktop, you can type ls again, then cd into it.

Which command is used to create a directory? ›

Use the mkdir command to create one or more directories specified by the Directory parameter. Each new directory contains the standard entries dot (.) and dot dot (..). You can specify the permissions for the new directories with the -m Mode flag.

What command is used to navigate Linux? ›

To effectively navigate the Linux file system, you will need to know how to change directories using the cd command. The cd command allows you to move from one directory to another, enabling you to explore and access various parts of the file system.

Which command will allow you to change your current directory? ›

Use the cd command to move from your present directory to another directory.

Which command is used to compress files? ›

The gzip command compresses files. Each single file is compressed into a single file.

Which Linux command is used to display the content of a file? ›

The cat command is the simplest way to view the contents of a file. It displays the contents of the file(s) specified on to the output terminal. Sometimes, we might want to number the lines in the output.

How to create a file in Unix? ›

If you're using a window manager, you can usually press Ctrl + Alt + T to open a new terminal window. If not, log into the system on which you want to create a file through the console. Type cat > newfilename and press ↵ Enter . Replace newfilename with whatever you'd like to call your new file.

How to change working directory in shell script? ›

In the shell, the command cd - is a special case that changes the current working directory to the previous working directory by exchanging the values of the variables PWD and OLDPWD. Note: Repeating this command toggles the current working directory between the current and the previous working directory.

What is the shell command for home directory? ›

Use cd to start from the $HOME directory. Note that 'ls', 'ls . ' and 'ls $HOME' have the same output. They each show the contents of the home directory.

Which command changes directory to home directory from any another directory? ›

Changing to another directory (cd command)
  • To change to your home directory, type the following: cd.
  • To change to the /usr/include directory, type the following: cd /usr/include.
  • To go down one level of the directory tree to the sys directory, type the following: cd sys.

How do I run a shell script from home directory? ›

Step-by-step shell script execution
  1. Create a directory to store your shell script.
  2. Create a file in your scripts folder with a . ...
  3. Add an execute permission to the file to avoid permission denied errors during execution.
  4. Use the ./ (dot slash) notation and run the shell script by name in the Terminal window.
Jan 14, 2022

Top Articles
Latest Posts
Article information

Author: Kareem Mueller DO

Last Updated:

Views: 5602

Rating: 4.6 / 5 (66 voted)

Reviews: 89% of readers found this page helpful

Author information

Name: Kareem Mueller DO

Birthday: 1997-01-04

Address: Apt. 156 12935 Runolfsdottir Mission, Greenfort, MN 74384-6749

Phone: +16704982844747

Job: Corporate Administration Planner

Hobby: Mountain biking, Jewelry making, Stone skipping, Lacemaking, Knife making, Scrapbooking, Letterboxing

Introduction: My name is Kareem Mueller DO, I am a vivacious, super, thoughtful, excited, handsome, beautiful, combative person who loves writing and wants to share my knowledge and understanding with you.