Linux Assgnment (System Calls, Shell Scripting, Filter)
Linux Assgnment (System Calls, Shell Scripting, Filter)
System Calls
1. Write a shell script that gets executed the moment user logs in. It should display the message: Good
Morning / Good afternoon /Good Evening depending upon the time user logs in.
7. Write a shell script that checks whether the user has write permission to a specified file. If yes,
prompt the user to type a message which then gets appended to the file.
8. Write a shell script that stores names and phone numbers of customers and displays menu options
to add more records and search by customer name.
9. Write a shell script contacts.sh that places copies of contacts to contacts.bk and if copy operation is
successful, it displays contents of backup file else it reports file not found.
10. Write a shell script that offers a menu based program for performing addition, subtraction,
multiplication, division, modulo and exponentiation based arithmetic operations.
11. A class has given three tests of 50marks each. Sum of two best two tests was taken as
aggregate(agg) award of a letter grade as per the following criterion:
1) Grade A for agg >=75
2) Grade B for 60 <= agg <753) Grade C for 50 <= agg <60
4) Grade F otherwise.
Write a shell script which when given the roll no., the three test marks via command line arguments
displays the roll no., three test scores, sum of best two and letter grade.
Filters
Filters are programs that take plain text(either stored in a file or produced by another program) as standard
input, transforms it into a meaningful format, and then returns it as standard output. Linux has a number of
filters.
Some of the most commonly used filters are explained below:
2. head: Displays the first n lines of the specified text files. If the number of lines is not specified then by
default prints first 10 lines.
Syntax: head [-number_of_lines_to_print] [path]
3. tail :It works the same way as head, just in reverse order. The only difference in tail is, it returns the lines
from bottom to up.
Syntax: tail [-number_of_lines_to_print] [path]
4. sort: Sorts the lines alphabetically by default but there are many options available to modify the sorting
mechanism. Be sure to check out the man page to see everything it can do.
5. uniq: Removes duplicate lines. uniq has a limitation that it can only remove continuous duplicate
lines(although this can be fixed by the use of piping). Assuming we have the following data.
We can see that applying uniq doesn’t remove any duplicate lines, because uniq only removes duplicate lines
which are together.
When applying uniq to sorted data, it removes the duplicate lines because, after sorting data, duplicate lines
come together.
6. wc: wc command gives the number of lines, words and characters in the data.
In above image the wc gives 4 outputs as:
•number of lines
•number of words
•number of characters
•path
8. tac: tac is just the reverse of cat and it works the same way, i.e., instead of printing from lines 1 through
n, it prints lines n through 1. It is just reverse of cat command.
9. sed: sed stands for stream editor. It allows us to apply search and replace operation on our data
effectively. sed is quite an advanced filter and all its options can be seen on its man page.
The expression we have used above is very basic and is of the form ‘s/search/replace/g’
10. nl: nl is used to number the lines of our text data.
It can clearly bee seen in the above image that the lines have been numbered.