BIL 461 Summer 2015 Homework 1 The homework answers and

BIL 461
Summer 2015
Homework 1
The homework answers and code must be submitted to our Teaching Assistant Cansin Bayrak by email to
cansinbayrak@gmail.com by Friday, May 22 before 12:30.
Subject of the email should say “BIL461 Homework 1”. Name your homework directory as
“YourFullName-HW1”. Before submitting, put all your files in and zip your homework directory, and
email a single zipped file as attachment. You will lose %5 of your grade if you deviate from this
submission format. Remember also that for programming components, your code should be fully
documented.
For each of the steps in Part 1 through Part 5 below, you will run some Unix commands, and answer
questions. Type your answers in a file called Answers (text file or word document). For each step, run
the command, copy-paste the part of the shell including the line you ran the command and any output it
produces into your answers file, and answer any questions given. Submit your answers file with the rest
of your homework files. Part 6 requires you to write a C program, and you will submit your source code
(.h and .c files).
Part 1: Practice moving around the file system and paths
1. Enter the pwd command. What happens?
2. Which shell are you using? How do you find out?
3. Enter mkdir BIL461
4. Enter the command cd BIL461. What happens?
5.
Enter the cd command. What happens?
6.
Enter cd .. What happens?
7.
Display the content of this directory. What command did you use?
8. Try the command cd / Display the content of this directory. Which directory is this?
9. Repeat step 4. Do you know another possibility to get where you are now?
10. Display your search path.
11. What is the absolute path to your home directory?
12. Go to the tmp directory in /var using only one command.
13. Now go to bin in /usr using only one command.
What command did you use?
Part 2: Practice with the help utilities
1. Read man intro
What happens?
2. Read man ls
List some options available to ls that we did not cover
Part 3: Practice copying files.
1. Create two new directories in your home directory called TEST1 and TEST2
2. Change your working directory to TEST1 directory and create four files called test1.c test2.c
in1.txt in2.txt
3. List the files in alphabetical order. What command did you use?
4. Copy the files with .c extension to TEST2, list the files under TEST1 and TEST2
5. Change to your home directory. Delete the TEST1 directory and its entire content using a single
command. What command did you use?
Part 4. Practice with wildcards
Suppose your working directory contained the following files:
backgammon backpacking
biking
blackjack
baseball
boxing
basketball
bridge
camping
canoeing
checkers
crossword
dancing
eating
chess
fencing
fishing
football
golf
hearts
hiking
karate
poker
rugby
sailing
skiing
softball
swimming
team1
team2
team3
team4
teamA
teamB
teamM
teamW
1.
2.
3.
4.
teamC
teamX
teamD
teamY
How would you use cat to show the contents of the files ending in ing
How would you list any files containing x or X (in this case boxing and teamX)?
How would you show the contents of files with names containing o?
How would you show the contents of the files backgammon, backpacking, and blackjack using
just one command?
Part 5. Miscalleneous
1. What does the following command do? Explain it clearly. You may have to look at the man pages
to see what the various options are doing.
ls -as | sort -nr | head -5 > out.txt
2. Using your favorite editor, type the following into a text file called text.in
abcd
efgh
abcd
efgh
abcd
ef
ef
3. What command can you use to display text.in in alphabetical order?
4. How can you remove adjacent duplicate lines from text.in?
5. How would you set the file permissions for text.in so that user gets read, write and execute
access, group gets only read and execute access, others get only read access.
Part 6. C Programming
Write a C program that implements a new version of Unix's diff command (to be called newdiff.c).
Given two text files file1.txt and file2.txt,
newdiff -flag file1.txt file2.txt
should return



Zero (0) if the two files are exactly identical.
-1 if either one of the files is missing or cannot be opened.
A positive integer indicating
o the number of characters that are different in the two files (if -c flag is used)
o the number of words that are different in the two files (if -w flag is used)
o the number of lines that are different in the two files (if -l flag is used)
You will need to use C's string related functions (in string.h) and file I/O functions.