Skip to content

Exercise: Scavenger hunt

Kenny Yu edited this page Sep 25, 2013 · 15 revisions

Getting the code

In a terminal, execute these commands:

git clone git://
cd bootcamp-unix

Scavenger Hunt: Part 1

Inside the bootcamp-unix directory, you should see an exercise-simple directory. Enter

cd exercise-simple

and you should see a file called data.txt. Now answer the following questions by writing a sequence of commands to do the work for you. Save your answers in a file called answers.txt in this directory.

  1. How many lines are in the file? (Hint: use cat to dump the contents of the file, and look at the man page for wc to see how to count the number of lines in a file.)

  2. How many times does Kenny appear in the file? (Hint: use grep "NAME" to print out the lines that contain NAME).

  3. How many times does Kenny OR Karen appear in the file (Hint: use grep "pattern1\|pattern2" to print out the lines that contain pattern1 OR pattern2.

  4. For the next few questions, you may find this information useful. If you feed in input (either using < or by piping input using |) to the expression awk '{print $2}', this will print out the second column of the input. To print out the a different column, change $2 to be the column number you want (e.g. to print out the first column replace $2 with $1). Print out the third column of data.txt.

  5. Print out the third column of data.txt, capitalize all the letters, and save it to a file named pokemon.txt.

  6. Print out the contents of pokemon.txt in sorted order. (Hint: look at the man page for the sort command).

  7. You give Goldduck a water stone and it evolves into Psyduck! Replace all instances of GOLDDUCK with PSYDYCK from pokemon.txt, and save the output in pokemon_evolved.txt. (Hint: sed s/old/new/g will replace all instances of old with new).

  8. How many distinct pokemon are there in pokemon.txt? (Hint: there is a very useful option you can pass to the sort command.

  9. For the next few questions, you may find this useful: If you feed in a file with one number on each line to this command: python -c "import sys; print sum(int(line) for line in sys.stdin)", this will sum all the numbers. Sum all the numbers in the second column of data.txt.

  10. Sum all the numbers in the second column of data.txt for any line containing Kenny OR Karen.

  11. curl LINK is a command that can download the html of a webpage. How many times does the word "google" appear in the html of (Hint: use the --only-matching option on grep PATTERN to only print the parts of the text that match PATTERN).

  12. How long is the word in word.txt?

  13. There is file called in the directory. Give it executable permissions, and run it. What is the output of the program? (Hint: to run a program in the current directory, you need to prefix it with ./, e.g. ./

Scavenger Hunt: Part 2

In the exercise-simple directory, you should find a directory called os161. This directory is the source code for the operating system you will become very familiar with if you decide to take CS161: Operating Systems (which you all should)! Go into this directory:

cd os161
  1. How many files are there in the os161 directory, including all subdirectories? (Hint: find DIRECTORY will list ALL the files in the directory, including subdirectories). Note that . refers to the current directory, and .. refers to the parent directory.

  2. Where is the file errno.h in the os161/kern directory? (Hint: find DIRECTORY -name FILE will attempt to find FILE somewhere in the directory hierarchy rooted at DIRECTORY).

  3. How many different values of errno are there in this file?

  4. Find all occurrences (all files and line numbers) of the string STACK_SIZE in any file (including subdirectories) in the os161 directory. (Hint: Use grep. Look at the man page for grep, and look for the words recursive and number).

  5. How big is STACK_SIZE?

  6. What is the numeric value of EFAULT? What does it mean to get an EFAULT? (look at the associated comment)

Finish the rest of bootcamp

Go back to the main page.