LinuxCommand
Learning the
shell
Writing
shell scripts
Script
library
SuperMan
pages
Who, What,
Where, Why
|
Navigation
In this lesson, I will introduce your first
three commands: pwd (print
working directory), cd
(change directory), and ls (list files and
directories).
If you have not worked with a command line
interface before, you will need to pay close
attention to this lesson, since the concepts will
take some getting used to.
Like that legacy operating system, the files on
a Linux system are arranged in what is called a
hierarchical directory structure. This means
that they are organized in a tree-like pattern of
directories (called folders in other systems),
which may contain files and other directories. The
first directory in the file system is called the
root directory. The root directory contains
files and subdirectories which contain more files
and subdirectories and so on and so on.
Most graphical environments today include a file
manager program to view and manipulate the contents
of the file system. Often you will see the file
system represented like this:

One important difference between the legacy
operating system and Unix/Linux is that Linux does
not employ the concept of drive letters. While
drive letters split the file system into a series
of different trees (one for each drive), Linux
always has a single tree. Different storage devices
may contain different branches of the tree, but
there is always a single tree.
Since a command line interface cannot provide
graphic pictures of the file system structure, it
must have a different way of representing it. Think
of the file system tree as a maze, and you are
standing in it. At any given moment, you stand in a
single directory. Inside that directory, you can
see its files and the pathway to its parent
directory and the pathways to the subdirectories of
the directory in which you are standing.
The directory you are standing in is called the
working directory. To find the name of the
working directory, use the pwd command.
|
|
[me@linuxbox me]$ pwd
/home/me
|
|
When you first log on to a Linux system, the
working directory is set to your home directory.
This is where you put your files. On most systems,
your home directory will be called
/home/your_user_name, but it can be anything
according to the whims of the system
administrator.
To list the files in the working directory, use
the ls command.
|
|
[me@linuxbox me]$ ls
Desktop GUILG00.GZ bin linuxcmd nsmail
GNUstep Xrootenv.0 hitni123.jpg nedit.rpm wp8
|
|
I will come back to ls in
the next lesson. There are a lot of fun things you
can do with it, but I have to talk about pathnames
and directories a bit first.
To change your working directory (where you are
standing in the maze) you use the cd command. To do this, type cd followed by the pathname of
the desired working directory. A pathname is the
route you take along the branches of the tree to
get to the directory you want. Pathnames can be
specified in one of two different ways; absolute
pathnames or relative pathnames. Let's
deal with absolute pathnames first.
An absolute pathname begins with the root
directory and follows the tree branch by branch
until the path to the desired directory or file is
completed. For example, there is a directory on
your system in which programs are installed for the
X window system. The pathname of the directory is
/usr/X11R6/bin. This means from the root directory
(represented by the leading slash in the pathname)
there is a directory called "usr" which contains a
directory called "X11R6" which contains a directory
called "bin".
Let's try this out:
|
|
[me@linuxbox me]$ cd /usr/X11R6/bin
[me@linuxbox bin]$ pwd
/usr/X11R6/bin
[me@linuxbox bin]$ ls
Animate import xfwp
AnotherLevel lbxproxy xg3
Audio listres xgal
Auto lndir xgammon
Banner makedepend xgc
Cascade makeg xgetfile
Clean mergelib xgopher
Form mkdirhier xhexagons
Ident mkfontdir xhost
Pager mkxauth xieperf
Pager_noxpm mogrify xinit
RunWM montage xiterm
RunWM.AfterStep mtv xjewel
RunWM.Fvwm95 mtvp xkbbell
RunWM.MWM nxterm xkbcomp
and many more...
|
|
Now we can see that we have changed the current
working directory to /usr/X11R6/bin and that it is
full of files. Notice how your prompt has changed?
As a convenience, it is usually set up to display
the name of the working directory.
Where an absolute pathname starts from the root
directory and leads to its destination, a relative
pathname starts from the working directory. To do
this, it uses a couple of special symbols to
represent relative positions in the file system
tree. These special symbols are "." (dot) and ".."
(dot dot).
The "." symbol refers to the working directory
and the ".." symbol refers to the working
directory's parent directory. Here is how it works.
Let's change the working directory to
/usr/X11R6/bin again:
|
|
[me@linuxbox me]$ cd /usr/X11R6/bin
[me@linuxbox bin]$ pwd
/usr/X11R6/bin
|
|
O.K., now let's say that we wanted to change the
working directory to the parent of /usr/X11R6/bin
which is /usr/X11R6. We could do that two different
ways. First, with an absolute pathname:
|
|
[me@linuxbox bin]$ cd /usr/X11R6
[me@linuxbox X11R6]$ pwd
/usr/X11R6
|
|
Or, with a relative pathname:
|
|
[me@linuxbox bin]$ cd ..
[me@linuxbox X11R6]$ pwd
/usr/X11R6
|
|
Two different methods with identical results.
Which one should you use? The one that requires
less typing!
Likewise, we can change the working directory
from /usr/X11R6 to /usr/X11R6/bin in two different
ways. First using an absolute pathname:
|
|
[me@linuxbox X11R6]$ cd /usr/X11R6/bin
[me@linuxbox bin]$ pwd
/usr/X11R6/bin
|
|
Or, with a relative pathname:
|
|
[me@linuxbox X11R6]$ cd ./bin
[me@linuxbox bin]$ pwd
/usr/X11R6/bin
|
|
Now, there is something important that I must
point out here. In almost all cases, you can omit
the "./". It is implied. Typing:
|
|
[me@linuxbox X11R6]$ cd bin
|
|
would do the same thing. In general, if you do
not specify a pathname to something, the working
directory will be assumed. There is one important
exception to this, but we won't get to that for a
while.
A couple of shortcuts
If you type cd followed by
nothing, cd will change the
working directory to your 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.
|
|
|
Previous | Contents |
Top | Next
|
|
© 2000-2002, William
Shotts, Jr. Verbatim copying and distribution
of this entire article is permitted in any medium,
provided this copyright notice is preserved.
|