1) time date and location (whereami) Write a simple script that reports the time, date and the current working directory. 2) Template Write a script that reads from input and substitutes the character sequence ## for the value of a parameter given to the script. Try to otherwise preserve the layout, especially line breaks. 3) Indent Write a script to indent the input on its way to the output. 4) Unindent Write a script to unindent the input on its way to the output. 5) Generate a sequence of numbers Write a script to generate sequences of numbers. These can be a) simple for like loop, giving the start and end numbers and the step. b) A complex sequence like the Fibonacci sequence 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, c) A sequence where each is a multiple of the last, for example paper sizes (http://en.wikipedia.org/wiki/Paper_size) 6) A script to maintain a simple diary of events such as a timetable A simple file can store events for a timetable day time duration what monday 9 2 En008 study skills friday 12 2 cm545 operating systems two script can be written, one to add and delete entries, the other to display the timetable in a more readable form, either as a list (with nice indents) simple, or as a grid more complex. 7) A simple address book program. Add, remove and display addresses. A simple file can hold an address book. A program script(s) can add, delete and search for entries. 8) A simple shell Shells can be intimidating to the new user. Write a simple shell with a simplified set of commands. Each command can be a function call, and meaningful names can be tested for in a switchyard. 9) Count words and lines in the input Read from standard input (or a file) and count the number of words and lines in the input. A word can be defined as a sequence of non space characters. 10) display information about a file, it's date, if it exists. For a given filename (or each file in a list) apply the following tests and print out the appropriate messages a) does it exist? b) is it writable? c) is it a file or directory? d) what is the file date? e) what is its size? 11) a wrapper for file operations, provides a menu and confirmation. New users can often inadvertently do things wrong, such as delete files, and forget commands. Write a script that takes a filename and provides a menu of actions that can be performed on the file. Apply the users choice and where appropriate ask for confirmation before doing anything drastic, like deleting the file. 12) Display a “message of the day” System managers often need to provide a message of the day with important information about the system. Write a script “motd” to display such a message. The message should be in a text file (to allow a manager to easily edit it),in a known location. 13) display the first n lines of the input. Write a script to display only the first n lines of its input. The number of lines should be given as a parameter to the script and the file read from standard input. 14) Generate a times table Write a script that given a number as a parameter writes out the times table for that number. CM0545 Operating Systems 15) generate a list of pixels Given the width and height of an image (as parameters) print out a list of the pixels coordinates. (0,0) (0,1) (0,2) ... etc .. (h,w) 16) very simple spell checker. Write a simple spell checker. Given a word list (in a known file) read from input and check to see if each word is in the word list. If a word cannot be found print it as output. For the ambitious. Prefix the word printed with the line number in the input where it was found. 17) Simple Make Given a list of files to create (each name ends in a .o) check to see if a corresponding source file exists (ending in .c). If it does, compile the file to generate the target (.o) file. For the purposes of this exercise you can just simply copy the source (.c) to the target (.o) rather than using a compiler. Extension: extend the exercise to use both .c and .s files. Files ending in .c are compiled (copied) into a .o file. Files ending in .s are assembled (copied) into a .o file. 18) Maintain a dictionary. Write a script to maintain a simple dictionary. Allow words to be added to the dictionary, ensuring that it is kept in the right order. For the ambitious include a definition of the word and write a script to look up the word and print its definition. 19) Backup management Within a set of files only some need to be backed up. Keep a list of files to be backed up in a text file. For a given directory find the filed to be backed up and copy them into a known backup directory (for example the cd-writer). 20) Version control Often it is useful to keep versions of a document to keep track of changes and archive older copies. A file needs to be checked into the version archive. A simple scheme is to add a version suffix number to the filename. memo.txt becomes memo.txt;1 memo.txt;2 memo.txt;3 etc Write two scripts (or one with a menu or parameter) that checks a file into the directory and automatically adds the next number in the sequence as a suffix. To check a version out of the archive, find the file with the requested version number and copy it out, removing the suffix. You may wish to ask before overwriting the existing file if it exists.