Assignment 1. Getting to know your system

Laboratory: Linux scavenger hunt

Instructions: Use the commands that you learned in class to find answers to these questions. Don't use a search engine like Google, and don't ask your neighbor. If you need a hint, ask the TA. When you find a new command, run it so you can see exactly how it works. In addition to turning the answers to these questions, turn in a transcript of your session discovering them. As you do actions, use a Linux-based editor to record each action in a file lab1.log that you will submit as part of the assignment.

  1. How can you get man to print all the commands that have a specific word in their man page (or at least the description part of the man page)? (hint: man man)
  2. Where are the gzip and tr programs located in the file system?
  3. What executable programs have names that are just one character long, and what do they do?
  4. Suppose a command is scheduled by cron to execute at 02:30 every day. When daylight saving time begins, and the clock jumps forward from 02:00 to 03:00, when (if at all) is the command run? How about when daylight saving time ends, and the clock jumps backward from 03:00 to 02:00?
  5. When you execute the command named by the symbolic link /usr/bin/cc, which file actually is executed?
  6. The chmod program changes permissions on a file. What does the symbolic mode g+s mean, in terms of permissions?
  7. The find program lets you search for files. What program, related to find, lets you do the same thing faster?
  8. What option to find lets you search for files that have been modified in the last 3 days?
  9. Use the previous answer to find all directories modified in the last 3 days.
  10. Of the files in the same directory as find, how many of them are symbolic links?
  11. Who wrote the ls program?
  12. What is the oldest regular file in the /usr/lib directory?
  13. Several useful commands start with wh. Which one will tell me my name? Which one will tell me what the previous one does? Which one will tell me the location of the program that will run if where to type the program name at the prompt?
  14. In Vim, what does the dw command (in command mode) do?
  15. Where does the locale command get its data from?

Homework: Learning to use Vim and Emacs

For all the exercises, record the steps taken to accomplish the given tasks.

To start, download a copy of the web page you're looking at into a file named assign1.html. You can do this with Wget. Use cp to make three copies of this file. Call the copies exer1.html, exer2.html, and exer3.html.

Exercise 1.1v: Moving around in Vim

  1. Use Vim to edit the file exer1.html.
  2. Move the cursor to somewhere in the first line that contains the text "ASCII".
  3. Move the cursor to somewhere in the first line that contains the text "Instructions".
  4. Move the cursor to the first letter of first occurrence of the word "HTML".
  5. Move the cursor to the first letter of first occurrence of the word "hunt".
  6. Move the cursor to the end of the current line.
  7. Move the cursor to the beginning of the current line.
  8. Move the cursor back to somewhere in the first line of the file.
  9. Have you been moving the cursor using the arrow keys? If so, repeat the above, without using the arrow keys.
  10. Doing the above tasks with the arrow keys takes many keystrokes, or it involves holding down keys for a long time. Can you think of a way to do it with fewer keystrokes by using some of the commands available in Vim?
  11. When you are done, exit Vim.

Exercise 1.2v: Deleting text in Vim

  1. Use Vim to edit the file exer2.html. The idea is to delete its HTML comments; the resulting page should display the same text as the original.
  2. Delete the 16th line, which is an HTML comment. <!-- HTML comments look like this. -->
  3. Delete the HTML comment containing the text "DELETEME DELETEME DELETEME".
  4. Delete the HTML comment containing the text "http://en.wikipedia.org/wiki/HTML_comment#Comments".
  5. There's one more HTML comment; delete that one too.

Once again, try to accomplish the tasks using a small number of keystrokes. When you are done, save the file and exit back to the command line. You can check your work by using a browser to view exer2.html. Also, check that you haven't deleted something that you want to keep, by using the following command:

diff -u exer1.html exer2.html >exer2.diff

The output file exer2.diff should describe only text that you wanted to remove. Don't remove exer2.diff; you'll need it later.

Exercise 1.3v: Inserting text in Vim

  1. Use Vim to edit the file exer3.html.
  2. Change the first two instances of "Assignment 1" to "Assignment 35".
  3. Change the first instance of "US-ASCII" to "UTF-8".
  4. Insert a blank line after the first line containing "<ol>".
  5. When you finish, save the text file and exit Vim. As before, use the diff command to check your work.

Exercise 1.4v: Other common tasks in Vim

In additional to inserting and deleting text, there are other common tasks that you should know, like copy and paste, search and replace, and undo.

  1. Execute the command "cat exer2.html exer2.diff >exer4.html" to create a file exer4.html that contains a copy of exer2.html followed by a copy of exer2.diff.
  2. Use Vim to edit the file exer4.html. The idea is to edit the file so that it looks identical to exer1.html on a browser, but the file itself is a little bit different internally.
  3. Go to the end of the file. Copy the new lines in the last chunk of diff output, and paste them into the correct location earlier in the file.
  4. Repeat the process, until the earlier part of the file is identical to what was in the original.
  5. Delete the last part of the file, which contains the diff output.
  6. … except we didn't really want to do that, so undo the deletion.
  7. Turn the diff output into a comment, by surrounding it with "<--" and "-->".
  8. Now let's try some search and replaces. Search the text document for the pattern "<ol>". How many instances did you find? Use the search and replace function to replace them all with the capitalized equivalent "<OL>".
  9. Check your work with viewing exer4.html with an HTML browser, and by running the shell command "diff -u exer1.html exer4.html >exer4.diff". The only differences should be changes from "<ol>" to "<OL>", and a long HTML comment at the end.

Exercises 1.1e through 1.4e

These exercises are the same as Exercises 1.1v through 1.4v, except using Emacs rather than Vim. Start with fresh copies of the input file by re-copying them from the original.

Submit

Submit the following files.

lab1.log
as described above.
lab1.txt
Answers to each lab question, along with a very brief description of how you can easily find such the answer from a new Ubuntu system, the next time you need the answer.
hw1.txt
For each homework exercise, the set of keystrokes needed to do the exercise. Attempt to use as few keystrokes as possible. Do not bother to write down the keystrokes needed to start the editor (e.g., v i SP e x e r 1 . h t m l Enter). Write down the label of the key for each keystroke, e.g., "a", "A" (if you type "a" while holding down the shift key), "Tab", "Enter", "Esc". Use SP for space. Use prefix "C-" and "M-" for control and meta characters: e.g., C-f represents Control-F, and M-f represents Meta-F. Put a space between each pair of keystroke representations. For example: e m a c s < v i Backspace Backspace Backspace > v i. If you use some key not described above, invent your own ASCII name for the key and explain what key you mean, but don't put spaces in your key name.

The .txt files should be ASCII text files, with no carriage returns, and with no more than 80 columns per line. The shell command:

awk '/\r/ || 80 < length' lab1.txt hw1.txt

should output nothing.


© 2005, 2007–2011 Paul Eggert, Steve VanDeBogart, and Lei Zhang. See copying rules.
$Id: assign1.html,v 1.23 2011/04/01 18:35:02 eggert Exp $