CSE logo University of Washington Computer Science & Engineering
 CSE 374 Programming Concepts and Tools - Homework 1 - Winter 2011
  CSE Home   About Us    Search    Contact Info 

Due: Sunday, Jan. 9, at 11 pm.

The purpose of this assignment is for you to become familiar with the basics of the Linux shell and the range of commands that are included in most Linux distributions. This very definitely does not include all of the commands you will need for this course. Instead, it is aimed to help you learn about some basic commands as well as how to how to discover more on your own. You should use the Linux Pocket Guide and the Linux man command to find specific commands needed to answer these questions and use the Pocket Guide to read about related commands and topics.

There are two parts of the assignment. In Part I you are asked to run several commands and capture the terminal session in a script file to hand in. Part II consists of several questions to be answered in a separate file. You should turn in both files when you are done.

Part I

Use the command script hw1.part1 to start a shell and save the input and output into a file hw1.part1. Then run the commands needed to answer the following questions. It's ok if you make a few small mistakes - you don't need to start over - but either edit the file to remove any substantial errors or include comments (input lines starting with #) next to short goofs so we can follow your output easily. It would also be helpful if you included a few comments to make it easier to find answers to the different sets of questions, but there are no detailed requirements for how to do this.

Getting started

  1. Enter a command to print "Hello world" on the screen.
  2. Change your password. (You can change it back later if you want - don't forget it, though, you'll need it to log in next time.)
  3. Display the current date and time on the screen.

File paths and directory navigation

  1. Display the full path of your home directory.
  2. Go to your home directory.
  3. List all the files in your current directory.
  4. Now, create a new folder called ‘temp’.
  5. Rename this folder to ‘files’.
  6. Go to the ‘files’ folder.
  7. Run a command to get the current date and time and save the output to a file called 'now'
  8. Copy ‘now’ to a file called 'before'
  9. List all the files in this directory. Use a more detailed listing where you can see the files' permissions, creation date, time last accessed, etc.
  10. Create a file called 'temp' without using a text editor. (There are at least three easy ways to do this.)
  11. Rename 'temp' to 'test'
  12. Go up one directory.
  13. Delete the ‘files’ folder with a single command. (The command you use should also delete all of the files inside of it.)

Permissions

  1. Create a file called 'secretfile' containing the text “It's a secret!” using the echo command.
  2. Change the permission of this file in such a way so that no one can write to it. Use the ls command to show the file name and permissions.
  3. Try to add more text to 'secretfile' using the cat command.
  4. Change permission of this file so that no one can read it. Use the ls command again to show the file name and permissions.
  5. Try to read the file using cat.

Process Information

  1. Enter a command to display the version of the Linux kernel that you are you using.
  2. List all of the processes that are currently running.

Searching

  1. Use grep to display the entry with your username in the file '/etc/passwd'.

Part II

Use a text editor (emacs suggested - you should learn how to use it at some point, even if you later use something else) to create a plain text file named hw1.part2 containing answers to the following questions.

  1. Use the man pages to find out what wc does. Give a brief description of it here. What does the -l option for wc do?
  2. Run wc on the directory '/etc/passwd' and copy and paste your findings.
  3. What command would you use to a terminate (stop) a process?
  4. What information does the environment variable $HOME store? (Hint: use 'echo $HOME' to investigate.)
  5. List two other important environment variables on your computer and what they store. Why are these variables important?
  6. If you created a file 'bigredbutton' somewhere on your computer and couldn't remember what folder it was in, what command could you use to find it? Just give the name of the command. You do not need to describe all of the necessary arguments.
  7. How is the command in the answer to the previous question different from the 'which' command?
  8. How does the command “echo Hello World! > something” differ from “echo Hello World!”?
  9. Assume we have run the echo command from the previous question and now we execute “echo more text > something”. Describe what this does.

Assessment: Your solutions will be evaluated on how well they follow the instructions and produce the desired results in part I, and on the correctness and conciseness of your answers in part II.

Turn-in Instructions: Use the turn-in drop box link on the main course web page to turn the hw1.part1 file created in part I and the hw2.part2 file from part II. The drop box will allow you to turn in your homework up to two days late, if you choose to use one or two of your late days, but you are strongly advised to save your late days for later in the quarter when they may be much more useful.


CSE logo Computer Science & Engineering
University of Washington
Box 352350
Seattle, WA  98195-2350
(206) 543-1695 voice, (206) 543-2969 FAX
[comments to Hal Perkins]