Creating and using directories

After working on your unix system for a while you will accumulate many files. Just like an unorganized desk, this creates a mess in which it is hard to work. The solution is to create directories in which to store related items. A directory is like a file folder which contains related documents (your files). As an example, suppose that when you list your files you see this:

 

 % ls
fred1 fred2 fred3 ch1 ch2 ch3 foo.c bar.c
%

 

This is really not badly organized: the files fred1, etc. are letters to fred, the files ch1, etc. chapters of a book, and foo.c, bar.c are C programs. Nonetheless, we decide that it is time to get organized, with one directory per project.


The mdkir command.

We create a new directory using the mkdir command ( m ake d irectory).

 

 % mkdir letters
% ls
fred1 fred2 fred3 ch1 ch2 ch3 foo.c bar.c letters

 

Notice that the directory letters shows up in the listing. If you are not sure what is a file and what is a directory, try this:

 

 % ls -F
fred1 fred2 fred3 ch1 ch2 ch3 foo.c bar.c letters/

 

Notice that letters is displayed somewhat differently.


The mv command

Now we move the letters into the directory letters using the mv command ( m o v e).

 

 % mv fred1 fred2 fred3 letters
% ls
ch1 ch2 ch3 foo.c bar.c letters

 

If we want to check that letters really contains the files it should, we do this:

 

 % ls letters
fred1 fred2 fred3

 

There is, by the way, a useful shortcut:

 

 % mv fred* letters

 

Here the character * matches any sequence of characters, including the null string. Thus files named fred, fred101, and freddy would all be moved into letters.


Paths

You can deal directly with files in a directory like this:

 

 % cat letters/fred1

 

This command displays the contents of the file fred1 , which is in the directory letters. Here are some other ways of doing the same thing:

 

 % cat letters/fred1
% more letters/fred1
% emacs letters/fred1

 

We could even do this:

 

 % cat l*f*1

 


Changing directories with cd

Sometimes it is better to work inside the directory letters. To do it we use the cd command ( ch hange d irectory).

 

 % cd letters
% ls
fred1 fred2 fred3

 

The letters are there, as they chould be. To go back to our home directory we do this:

 

 % cd

 

We check that our home directory contains what it should.

 

 % ls
ch1 ch2 ch3 foo.c bar.c letters

 

Now we make directories for the other files and move them into the right places:

 

 % mkdir book; mv ch* book
% mkdir cprogs; mv *.c cprogs
% ls -F
book/ cprogs/ letters/
% ls book
ch1 ch2 ch3
%

 


Where are we?

Sometimes in moving from one directory to another we lose track of where we are. To find out what the current directory is, use the pwd command ( p rint w orking d irectory).

 

 % pwd
jeremy
% cd book
% pwd
jeremy/book
%

 


Removing directories

To remove a directory we first remove all the file in it, then remove the directory with rmdir ( r emove d irectory).

 

 % pwd
jeremy
% cd letters
% pwd
jeremy/letters
% rm *
% cd ..
% rmdir letters

 

The command rm * removes all files in the current directory. The command cd .. changes the current directory to the parent of the current one. In this case, it changes us from jeremy/letters to jeremy . Remember that jeremy/letters is a path , as is jeremy/letters/fred1. The latter is the path which starts with Jeremy's home directory and ends with the file fred1.