Homework 1 (CSE 374 Spring 2018)

Due: Tuesday, April 3, 2018, at 11pm

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 discover more on your own. You should use the Linux Pocket Guide and the Linux man command or the online version of the Linux man pages (see the link on the course web site) to find specific commands needed to answer these questions, and use the Pocket Guide to read about related commands and topics. Google is also useful for locating things, but you need to learn your way around the Guide and the standard Linux documentation, which is the primary source.

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. If you make a few small mistakes you don't need to start over, but include comments (input lines starting with #) after non-trivial goofs so we can follow your output easily. Also don't worry about "invisible" control characters like tabs and backspaces that are captured in the script file. That is normal and not something that needs to be fixed.

It would also be helpful if you included some comments to identify answers to the different sets of questions to make it easier for the graders to navigate through the output.

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, date written, 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 the folder.)

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 belong to you (i.e., have your login id as the process user id) 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 - although it ok to use vim instead if you insist) 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 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 first echo command from the previous question and now we execute “echo more text > something”. Describe what this does.
  10. Now assume we have run the commands in the previous two questions and now we execute “echo yet 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. Note: Remember that we will check your solutions using CSE's CentOS Linux system. Be sure that your answers are valid on the CSE systems (either klaatu or the CSE home virtual machine).

Turn-in Instructions: Use the turn-in drop box link to turn the hw1.part1 file created in part I and the hw1.part2 file with your answers to the questions 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 are almost certain to be much more useful.