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:
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 pwd
command.
[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]$ ls
Desktop 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/bin
me@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/bin
me@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 /usr
me@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/bin
me@linuxbox bin]$ pwd
/usr/bin
Or, with a relative pathname:
me@linuxbox usr]$ cd ./bin
me@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
File names that begin with a period character are hidden. This only means that
ls
will not list them unless we sayls -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.File names in Linux, like Unix, are case sensitive. The file names "File1" and "file1" refer to different files.
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.
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.