CSE 333 - OPERATING SYSTEMS Programming Assignment # 1

Transcription

CSE 333 - OPERATING SYSTEMS Programming Assignment # 1
CSE 333 - OPERATING SYSTEMS
Programming Assignment # 1
DUE DATE: 05/11/2014 - 23:59 (No extension)
1.
(20 pts)Write a shell script that finds out the n largest files in a directory. Your program
will require one or two arguments. If one argument is given, this argument will be the
number of files (n) and it will list the n largest files in current directory. If we want to do
the same operation on a directory other than the working directory, the second argument
of the program will be provided. You are required to consider necessary argument and
error checking. The output of your program should be as in the following example.
Ex:
$ ls –l /home/std/Desktop
total 2328
-rw------1 std std 152144 Jun 20 2005 alice-in-wonderland.txt
-rw------1 std std 82140 Jun 20 2005 barleby-scrivener.txt
-rw------1 std std 13421 Jun 20 2005 calaveras-county.txt
-rw------1 std std 13107 Jun 20 2005 cask-of-amontillado.txt
-rw------1 std std 635 Jun 20 2005 french.txt
-rw------1 std std 496769 Jun 20 2005 hawthorne.txt
-rw------1 std std 172541 Jun 20 2005 looking-glass.txt
drwx-----14 std std 476 May 25 2007 shakespeare
-rw------1 std std 192710 Jun 20 2005 song-of-hiawatha.txt
-rw------1 std std 35238 Jun 20 2005 trees-and-other-poems.txt
$ ./myprog1.sh 1 /home/std/Desktop
496769 hawthorne.txt
$ ./myprog1.sh 2 /home/std/Desktop
496769 hawthorne.txt
192710 song-of-hiawatha.txt
$ cd /home/std/Desktop
$ ./myprog1.sh 3
496769 hawthorne.txt
192710 song-of-hiawatha.txt
172541 looking-glass.txt
2.
(10 pts)Write a shell script that takes a character set (pattern) as an argument and list the
modification dates (in chronological order) of files whose names contain the given
pattern in your current directory. Please note that you should consider all possible error
checking and related warnings.
Ex:
$ ./myprog2.sh sun
The file sun1.txt was modified on 2014-09-01 at 01:26.
The file morning-sun.txt was modified on 2014-10-01 at 02:53.
The file evening-sun.txt was modified on 2014-10-01 at 02:55.
The file sun2.txt was modified on 2014-10-16 at 19:10.
3.
(20 pts)Write a shell script that takes a character set (pattern) as an argument and list the
words which include the given pattern. If one argument is given, search the word in all
files in your current directory. If we want to do the same operation on a directory other
than the working directory, the second argument of the program will be provided. The
list should be in alphabetical order and should ignore the case. You can ignore the files
in the sub-directories. Please note that you should consider all possible error checking
and related warnings. The output of your program should be as in the following
example.
Ex:
$ ./myprog3.sh
deerfood
food
fooder
food
foodful
foodless
foodlessness
$ ./myprog3.sh
twas
miltwaste
twas /home/std/Desktop/dict
outwash
twas
outwaste
twasome
$ ./myprog3.sh a*rum*
Agarum
anoestrum
alabastrum
antirumor
alarum
antiserum
ambulacrum
antistrumatic
Anatherum
antistrumous
androphorum
antrum
4.
foodstuff
foody
nonfood
Aplectrum
archicerebrum
arcocentrum
Arrhenatherum
Arum
arumin
unfoodful
Asarum
Ascyrum
aurum
autoserum
(20 pts)Write a shell script that prints to the screen a sequence of numbers based on the
command line arguments. There might be different numbers of arguments:
 Three arguments: START STOP STEP
 Two arguments: START STOP (assume step is 1)
 One argument: STOP (assume start and step are both 1)
You may assume STEP is always positive. If STOP is smaller than START you
should subtract STEP at each interval, and if STOP is greater than START you
should add STEP at each interval. Please note that you should consider all possible error
checking and related warnings (If no/too many arguments are given, you should print
out a message and exit with a failure value).
Ex:
$ ./myprog4.sh
100
83
66
49
32
15
-2
-19
100 -20
$ ./myprog4.sh
10 20 4
17
10
14
18
$ ./myprog4.sh
Usage: ./myprog4.sh <start> <stop> <step>
./myprog4.sh <start> <stop>
./myprog4.sh <stop>
5.
# go from start to stop by step
# assume step is 1
# assume start and step are 1
(10 pts)Write a shell script that reads a sequence of integers from the standard input and
then prints out the total. You may assume that each number appears on its own line and
is an integer and that the total will not cause any overflow. The output of your program
should be as in the following example.
Ex:
$ ./myprog5.sh
10
16
-3
Total is 23.
$ ./myprog4.sh 100 -20
Total is 324.
6.
17
| ./myprog5.sh
(10 pts)Write a shell script that by default report the total number of lines in all of
the files in the current working directory (recursively). Your program should support
optional arguments. If only one argument is provided, that will be used as a pattern for
the files. If a pattern is specified and any other argument is supplied, use each of those as
the directories to recursively examine. The output of your program should be as in the
following example.
Ex:
$ ./myprog6.sh
Total is 1021.
$ ./myprog6.sh *.java
Total is 324.
$ ./myprog6.sh *.java courses/cse141 courses/cse142
Total is 10000.
Notes:
 You are required to consider all necessary error checking for the programs.
 No late homework will be accepted.
 In case of any form of copying and cheating on solutions, all parties will get ZERO
grade. You should submit your own work. In case of any forms of cheating or
copying, both giver and receiver are equally culpable and suffer equal penalties.
 You should work with a partner. Your partner will not be changed throughout the
semester.
 You are required to submit a 2-pages report and commented code (via e-mail:
cse333.projects@gmail.com).
 Your report should include explanations about implementations. Your
implementation detail should be provided in the source code comment.
 Please put your COMMENTED source codes and project report in a zip file and
make sure that your zip file contain s your names and student IDs!