Table of Contents

CS 370 List of Assignments


Collection Setup

During the semester, I will collect your homework and projects from your school UNIX home directory.

After logging into a lab machine or server, create either a cs370 or se370 directory inside your home directory (~) by running the command:

mkdir ~/cs370

or

mkdir ~/se370

Then run either of the following commands:

submit.cs370

or

submit.se370

The submit… command should be run after you add any new files or directories under your cs370 or se370 subdirectory. This will make your class directory available to me; they will not be accessible to other students.


Assignment 1

Deadline: Mon, May 27, 11:59pm

Setup: You will need to access your UNIX account. Create the assignments/1/ directory inside your course directory (cs370 or se370).

1.

A key principle of UNIX design is that everything is (or should be) text. See p. 17 of the textbook (Determining a File's Type with file and What is “Text”?). Identify an ASCII text file in your home directory (not one that you created or modified), and copy that file into the assignments/1/ directory. Note: The ls -a command finds hidden files.

2.

See pp. 34-41 of the textbook. To learn basic UNIX file management commands, run all the commands given in the “Let's Build A Playground” exercise. To prove that you have gone through the entire exercise, run

history -w playground_history

to write your shell command history to the file playground_history, and then copy playground_history into the assignments/1/ directory.

3.

Login to the plato.monmouth.edu server (A.K.A. aristotleii). Leave a trace of your visit in the /tmp directory of plato, i.e., create a small file in the /tmp directory before you log out. The filename must contain your student id.


Assignment 2

Deadline: Tue, Jun 4, 11:59pm

Setup: You will need to access your school Unix account. Create the assignments/2/ directory inside your course directory (cs370 or se370).

Write your name, student ID and your answers in the plain text file asn2.txt. Number each answer. Save asn2.txt in the directory for Assignment 2. Note: Some questions require you to create an additional file or symbolic link in the Assignment 2 directory.

1.

Include the hostname of the Linux machine you are using for this question. Does the nano editor have undo/redo functionality? If it does, how do you use it? How did you figure it out?

2.

Backup your shell config (~/.bashrc) using cp. The backup copy must have the name .bashrc.bak. Copy .bashrc.bak to the directory for Assignment 2.

3.

If you have not generated a SSH key pair in your UNIX account, do so now. Create a valid symbolic link to your ssh public key file (not the private key file) in the directory for Assignment 2. (See the book, page 38.)

4.

How can you use ls without any colorization of output? How did you find the correct ls command line option?

5.

Commands such as ls, cp, mkdir, mv, rm and ps have a command line option that shows command usage and a listing and description of all command options. What is that command line option? (See the book, chapter 5.)

6.

Say that your present working directory is

/usr/local/src/system/unison-2.48.3/uimac14/Frameworks/Growl.framework/Versions/Current/Resources

What is the easiest (shortest) way to change to the directory

/usr/local/src/system/unison-2.48.3/uimac14/Frameworks/Growl.framework/Versions

? (See the book, chapter 2.)

7.

Say that you have defined the alias

alias confshell='nano ~/.bashrc'

In that alias, is ~/.bashrc an absolute or relative pathname?

Why is it a good idea to use ~/.bashrc instead of just .bashrc with this alias? (See the book, chapter 2.)

8.

My ~/.bashrc file has the following lines in it

# Commands to run with every new shell (jchung, 9/2017)
echo; fortune 2> /dev/null

What would be the purpose of ending the fortune command with 2> /dev/null. (See the book, chapter 6.)


Assignment 3

Deadline: Thu, Jun 20, 11:59pm

Setup: You will need to access your UNIX account. Create the assignments/3/ directory inside your course directory (cs370 or se370).

Write your name, student ID and your answers (where applicable) in the plain text file asn3.txt. Number each answer. Save asn3.txt in the directory for Assignment 3. Note: Some questions require you to copy a file into your Assignment 3 directory.

1.

How can grep be used to see if a text pattern exists in a shell variable? For example, say that the variable $LANGUAGE can contain the name of some language. How could grep be used to check if $LANGUAGE contains “portugese”?

2.

The fortune command has an option that allows searching for fortunes that match a text or regular expression pattern. How can fortune be run to find all fortunes that contain the word “bulwer”, ignoring case? How do you use grep and wc to count the number of fortunes that contain the word “bulwer”?

3.

(See chapter 13 of the book.) The $HOSTNAME environment variable contains the hostname of the Unix system that you are logged into. Write an if or case structure that changes the color of your command prompt $PS1 depending on which host you are logged into. Use the following table:

        Hostname	Color in PS1
        --------        ------------
        rockhopper	Light Gray
        aristotleii	Light Blue
        all others	Green

Your $PS1 environment var must continue to show your userid@hostname and pwd (present working directory), but with added color.

Add the if or case structure to your ~/.bashrc. Copy your modified ~/.bashrc to your Assignment 3 directory. The modified ~/.bashrc is your answer for question 3.

4.

Modify the script in the for structure Example 3 (ping-hh305.sh script) so that the script's only output consists of machines in HH305 that do not respond to a ping. Example script output:

      HH305-19ML65677 not responding
      HH305-18ML65676 not responding
      HH305-17ML65675 not responding

Notes: In the modified ping-hh305.sh script, suppress all output (stdout & stderr) from ping. Use the ping exit status ($?). Use an if statement or conditional chaining. Copy your modified ping-hh305.sh script into your Assignment 3 directory.

5.

Complete the roster processing exercise, without using awk. Write your new pipeline as your answer.

6.

How can the seq command be used in a command substitution to make the variable $list_of_hostnums contain

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

?

See the --help command line option or the seq command's manual page.

7.

Write the definition of a shell function called anticaps that takes a string as an argument and converts all but the first character to lower case. The function would work as follows:

anticaps "BUZZFEED"

Output: Buzzfeed

Use the cut and tr text processing utilities in your function definition. You may also use parameter expansion as an alternative to cut.