This set of notes assumes that you have never used Unix before. Upon completion, you should be able to understand the basics of entering commands, move around in the file system and view existing files, perform basic editing with the Emacs text editor, and know where to find help. To gain experience with these topics, try things out as you read.
Here are other useful commands related to files:
Often if a Unix command is successful, it will produce no output. If it fails, you will receive an error message. Of the list of commands above, only "ls" and "more" produce output when they succeed.
ls List the files in the current directory cp file1 file2 Copy the file named file1 to a new file named file2. If file2 is a directory (folder), then create a copy of file1 in that directory. mv file1 file2 Rename the file named file1 to have the name file2. If file2 is a directory, move file1 into file2. rm file1 Remove the file named file1 more file1 Display the contents of a file
The "more" command deserves some more comment because it is an interactive command. It displays your file one screenful at a time. You can try out "more" by typing
more ~schar/cs201/examples/unix/alice.txtAfter each screenful, it displays a prompt at which you have several options, the most useful being:
One useful tidbit: hitting the tab key will autocomplete directory and file names. Try typing "more ~schar/cs2" and then hitting the tab key several times.
space Display the next screenful b Display the previous screenful q Quit more, returning to a shell prompt.
When you use "ls" to list your files, you will see both regular files and directories (folders). At all times you have a current directory. Your commands are interpreted with respect to your current directory by default. So, for example, "ls" lists the files in your current directory if you give it no arguments. Here are some useful commands to manipulate directories:
Filenames should consist only of letters, numbers, underscores, and periods. (Try to avoid filenames with spaces!) A filename is typically divided into a descriptive name and an extension, separated by a period. Extensions are purely by convention but typically indicate the type of file. For example, "myfile.txt" would be a text file, while "myfile.java" would contain a Java program. Extensions are generally optional although some programs, such as the Java compiler, expect them to be there.
mkdir dir1 Create a new directory named dir1. rmdir dir1 Remove the directory named dir1. You can only do this if the directory is empty. cd dir1 Make dir1 be the current directory pwd Display the name of the current working directory
Filenames can be given as names that are relative to the current working directory or as absolute names from the special root directory. Thus far, we have assumed relative names that refer simply to files in the current directory. We can also use relative names to identify files in subdirectories. For example, "mydir/myfile" is the file named "myfile" in the directory named "mydir", where "mydir" is located in the current working directory.
There are two special directories: the current directory, denote with "." (a single period), and the parent (containing) directory, denoted with ".." (two periods).
Each user also has a home directory. This is the directory that is the current directory when you start a new shell window. No matter what the absolute pathname is to your home directory, you can always refer to it with the special relative pathname '~'. For example, no matter what your current directory is, if you type "ls ~", you will see a listing of the files in your home directory.
An absolute pathname always begins with / while a relative pathname never does. To find out the pathname that corresponds to your current directory, type pwd. Use pwd to find the absolute path for your home directory.
One last useful feature of the command line: Pressing the up arrow will give the last command you executed. Pressing return will run that command again. Try this. You can access older commands in your history by hitting the up arrow multiple times. To practice these commands, copy the alice.txt file to your home directory with the command
cp ~schar/cs201/examples/unix/alice.txt ~(Don't forget the trailing "~" - it is the second argument to the "cp" command, the destination directory. If you used "." instead of "~", it would copy the file to your current directory instead.)
Rename the file, move it into a newly created subdirectory, and practice the other basic Unix commands as well.
Emacs is a widely used text editor for Unix. To start Emacs, perform the following steps:
The last line of the Emacs window is where command prompts and messages appear. The embossed line immediately preceding it is a status line. It shows you the name of the file you are editing. Before that you should see -1:--. This means that the file is up-to-date. If it says, -1:**, it means the buffer has been changed since it was last saved. If it says -1:%%, it means that you cannot modify the file. After the filename is the current line number (L1 indicates the first line) and an indication of how far the current line is in the file in terms of percentage. "All" indicates that the entire file is showing. "Top" indicates that you are on the first screenful. "Bottom" indicates that you are on the last screenful. The final entry is is the "mode" that you are editing in. This should say "(Fundamental)", or "(Java)" when editing a Java file.
The area between the menu titles and the status line is the buffer that displays the contents of the file. Most of your typing goes directly into this buffer. Type some text. Notice the status line changes. You can move the cursor around using the arrow keys. Use the scrollbar to move through the file. Use the "Save" command from the File menu to save the buffer to a file. Use "Exit Emacs" from the File menu to exit Emacs. Notice the characters that appear in parentheses at the ends of command names in the menus. These tell you the keyboard characters to type to execute the commands without using the commands. For example, saving the buffer can be executed by typing Control-x Control-s. In the menu control characters appear as C-. Type these by holding the control key down at the same time as typing the second character. Another common way to enter commands is using the Escape key. This is abbreviated M-. In this case the escape key and the following key are typed separately. For example M-x represents typing the Escape key followed by the "x" key. You can also press the "Alt" key and "x" at the same time to achieve the same effect. Here are the keyboard sequences for the most common Emacs commands:
C-v Next screenful M-v Previous screenful C-d Delete next character Backspace Delete previous character C-x C-s Save buffer to a file C-x C-f Open a file C-x C-c Exit Emacs
You can find more Emacs commands in the CS 201 Emacs tutorial.
Using keyboard commands is generally faster than moving one's hands back and forth between the mouse and keyboard as one must do to use the menus and scrollbar. While it takes extra effort to learn, the payoff is worth it in the long run in terms of speed of using the editor.
Assuming the program is free of compilation errors, a class file "Hello.class" will be created. This files contains the compiled representation of the program. To execute the program, you run the Java virtual machine with the command
The command line argument to java is the name of the class whose main method you would like to run. To try it yourself, copy the file
~schar/cs201/examples/hello/Hello.javainto your own directory, compile it, and run it.
Acknowledgement: This content was adapated from materials published by the Williams College Computer Science Department. Thanks especially to Duane Bailey and Stephen Freund for sharing their materials.