Homework 1 (CSE 374 Spring 2019)

Due: Thursday, April 10, 2018, at 11:59pm

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. The intent is to help you learn about some basic commands as well as how to discover more on your own. This assignment will not teach you all the commands you many need to complete this course. 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 should be your 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 (using the '#' marker) 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 "Greetings, CSE374" 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 'HWFiles'
  6. Go to the 'HWFiles' 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 'tmpdata' without using a text editor. (There are at least three easy ways to do this.)
  11. Rename 'tmpdata' to 'test'
  12. Go up one directory.
  13. Delete the 'HWFiles' 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 'For my eyes only' 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. Include a line that contains your name
  2. Specify which text editor you used to create this file.
  3. 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?
  4. Run wc on the directory '/etc/passwd' and copy and paste your findings.
  5. What command would you use to terminate (stop) a process?
  6. What information does the environment variable $HOME store? (Hint: use 'echo $HOME' to investigate.)
  7. List two other important environment variables on your computer and what they store. Why are these variables important?
  8. If you created a file 'donotloseme' 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 and how it would work, you don't need to type the command in detail.
  9. How is the command in the answer to the previous question different from the 'which' command?
  10. How does the command echo Hello World! > hello differ from echo Hello World!?
  11. Assume we have run the first echo command from the previous question and now we execute echo happy week > hello. Describe what this does.
  12. Now assume we have run the commands in the previous two questions and now we execute echo wonderful day >> hello. 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: Turn in the two files created above to the Canvas assignment HW1. 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.