Download as pdf or txt
Download as pdf or txt
You are on page 1of 46

A.K.R.G.C.E.

T UNIX & SHELL PROGRAMMING LAB MANUAL

INDEX

S.No Contents Page No.


2
1 Lab Objective

3
2 Introduction About Lab

5
3 Guidelines To Students

7
4 List of Syllabus Programs (JNTU)

10
5 Basic Unix Commands

19
6 Solutions For Programs

Bibliography 55
7

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 1


A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL

LAB OBJECTIVE

Upon successful completion of this Lab the student will be able to:

1. Demonstrate how to use the following Bourne Shell commands: cat, grep, ls,
more, ps, chmod, finger, ftp, etc.

2. Use the following Bourne Shell constructs: test, if then, if then else, if then
elif, for, while, until, and case.
3. Learn tracing mechanisms (for debugging), user variables, Bourne Shell
variables, read-only variables, positional parameters, reading input to a Bourne
Shell script, command substitution, comments, and exporting variables. In
addition, test on numeric values, test on file type, and test on character strings
are covered.
4. Copy, move, and delete files and directories
5. Write moderately complex Shell scripts.

6. Make a Shell script executable.

7. Create a ".profile" script to customize the user environment.

8. Use advanced features of File Transfer Protocol (FTP)

9. Compile source code into object and executable modules.

10. Execute programs written in c under UNIX environment

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 2


A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL

INTRODUCTION ABOUT LAB

There are 66 systems ( Dell And Wipro ) installed in this Lab.


Their configurations are as follows :

Processor : Intel Core2 Duo

RAM : 1 GB

Hard Disk : 160 GB

Mouse : Optical Mouse

Network Interface card : Present

Software

 All systems are configured in DUAL BOOT mode i.e., Students can boot from
Windows XP or Linux as per their lab requirement.

This is very useful for students because they are familiar with different
Operating Systems so that they can execute their programs in different
programming environments.

 Each student has a separate login for database access

Oracle 9i client version is installed in all systems. On the server, account for
each student has been created.

This is very useful because students can save their work ( scenarios’,
pl/sql programs, data related projects ,etc) in their own accounts. Each student
work is safe and secure from other students.

 Latest Technologies like DOT NET and J2EE are installed in some
systems. Before submitting their final project, they can start doing mini
project from 2nd year onwards.

 MASM ( Macro Assembler ) is installed in all the systems

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 3


A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL

Students can execute their assembly language programs using MASM.


MASM is very useful students because when they execute their
programs they can see contents of Processor Registers and how each
instruction is being executed in the CPU.

 Rational Rose Software is installed in some systems

Using this software, students can depict UML diagrams of their


projects.

 Software’s installed : C, C++, JDK1.5, MASM, OFFICE-XP, J2EE and


DOT NET, Rational Rose.

 Systems are provided for students in the 1:1 ratio.

 Systems are assigned numbers and same system is allotted for students when
they do the lab.

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 4


A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL

Guidelines to Students

How to Run Shell Scripts

There are two ways you can execute your shell scripts. Once you have created a script
file:

Method 1
Pass the file as an argument to the shell that you want to interpret your script.

Step 1: create the script using vi, ex or ed

For example, the script file show has the following lines

echo Here is the date and time


date

Step 2: To run the script, pass the filename as an argument to the sh (shell )

$ sh show
Here is the date and time
Sat jun 03 13:40:15 PST 2006

Method 2:
Make your script executable using the chmod command.

When we create a file, by default it is created with read and write permission turned
on and execute permission turned off. A file can be made executable using chmod.

Step 1: create the script using vi, ex or ed

For example, the script file show has the following lines

echo Here is the date and time


date

Step 2: Make the file executable

$ chmod u+x script_file


$ chmod u+x show

Step 3: To run the script, just type the filename

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 5


A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL

$ show
Here is the date and time
Sat jun 03 13:40:15 PST 2006

How to run C programs

Step 1: Use an editor, such as vi, ex, or ed to write the program. The name of the file
containing the program should end in .c.

For example, the file show.c contains the following lines :

main()
{
printf(“ welcome to GNEC “);
}

Step 2: Submit the file to CC ( the C Compiler )

$ cc show.c

If the program is okay, the compiled version is placed in a file called a.out

Step 3: To run the program, type a.out

$ a.out

Welcome to GNEC

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 6


A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL

List of Lab Exercises

Syllabus Programs (JNTU K)

WEEK1
Session 1

1. Log in to the system


2. Use Vi editor to create a file called myfile.txt which contains some text.
3. Correct typing errors during creation
4. Save the file
5. Logout of the file

Session 2

a) Log into the system


b) Open the file created in session 1
c) Add some text
d) Change some text
e) delete some text
f) Save the changes
g) Logout of the system

WEEK2

a) log into the system


b) Use the cat command to create a file containing the following data. Call it
mutable use tabs to separate the fields
1425 Ravi 15.65
4320 Ramu 26.27
6830 Sita 36.15
1450 Raju 21.86
c) use the cat command to display the file, my table
d) use the vi command to correct any errors in the file, my table
e) use the sort command to sort the file my table according to the first field. Call
the sorted file my table(same name)
f) print the file my table
g) use the cut & paste commands to swap fields 2 and 3 my table. Call it
mytable(same name)
h) print the new file, my table
i) logout of the system

WEEK3

a) log in the system


b) use the appropriate commands to determine ur login shell
c) use the /etc/passwd file to verify the result of step b.

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 7


A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL

d) uses the who command redirect the result to a file called myfile1.Use the more
command to see the contents of myfile1.
e) Use the date and who commands in sequence ?(in one line) such that the
output of date will display on the screen and the output of who will be
redirected to a file called my file2.Use the more command to check the
contents of myfile2.
a) write a sed command that deletes the first character in each line in a file
b) write a sed command that deletes the character before the last character in
each line in a file.
c) Write a sed command that swaps the files and second words in each line in a
file

WEEK4

a) pipe ur /etc/passwd file to awk and print out the home directory of each user.
b) Develop an interactive grep script that asks for a word and a file name and
then tells how many lines contain that word
c) Repeat
d) Part using awk

WEEK5

a) Write A shell script that takes a command –line argument and reports on whether it
is directry ,a file, or something else
b) Write a shell script that accepts one or more file name as a arguments and converts
all of then to uppercase, provided they exits in the current directory
c) Write a shell script that determines the period for which a specified user is working
on the system

WEEK6

a) write a shell script that accepts a file name starting and ending line numbers as
arguments and displays all the lines between the given line numbers
b) write a shell script that deletes all lines containing a specified word I one or
more files supplied as arguments to it.

WEEK7

a) Write a shell script that computes the gross salary of a employee according to the
following

1) if basic salary is <1500 then HRA 10% of the basic and DA =90% of the basic
2) if basic salary is >1500 then HRA 500 and DA =98% of the basic
The basic salary is entered interactively through the key board

b) Write a shell script that accepts two integers as its arguments and computes
the value of first number raised to the power of the second number

WEEK 8

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 8


A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL

a) Write an interactive file handling shell program. Let it offer the user the choice
of copying, removing, renaming or linking files. Once the use has made a
choice, have the program ask the user for necessary information, such as the
file name, new name and so on.
b) Write a shell script that takes a login name as command –line argument and
reports when that person logs in
c) Write a shell script which receives two files names as arguments. It should
check whether the two file contents are same or not. If they are same then
second file should be deleted.

WEEK 9

a) Write a shell script that displays a list of all files in the current directory to
which the user has read write and execute permissions
b) Develop an interactive script that asks for a word and file name and then tells
how many times that word occurred in the file.
c) Write a shell script to perform the following string operations.

1) To extract a sub string from a given string


2) To find the length of a given string

WEEK 10

Write a C program that takes one or more file or directory names as command line
input and reports the following information on the file.
1) file type
2) number of links
3) read, write and execute permissions
4) time of last access

(Note: use /fstat system calls)

WEEK 11

Write C program that simulate the following UNIX commands


a) mv
b) cp

WEEK 12

Write a c program that simulates ls command


(Use system calls /directory API)

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 9


A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL

Basic UNIX commands

Command CAT
Syntax cat [argument] [specific file]
Description “cat" is short for concatenate. This command is used
to create, view and concatenate files.
Examples cat /etc/passwd

This command displays the "/etc/passwd" file on your


screen.

cat /etc/profile

This command displays the "/etc/profile" file on your


screen. Notice that some of the contents of this file may
scroll off of your screen.

cat file1 file2 file3 > file4

This command combines the contents of the first


three files into the fourth file.
Command pwd
Syntax pwd
Description "pwd" stands for print working directory. It displays
your current position in the UNIX file system.
Examples pwd

There are no options (or arguments) with the "pwd"


command. It is simply used to report your current working
directory.
Command ls
Syntax ls [options] [names]
Description "ls" stands for list. It is used to list information about
files and directories.
Examples ls

This is the basic "ls" command, with no options. It provides


a very basic listing of the files in your current working
directory. Filenames beginning with a decimal are
considered hidden files, and they are not shown.

ls -a

The -a option tells the ls command to report information


about all files, including hidden files.

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 10


A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL

ls -l

The -l option tells the "ls" command to provide a long


listing of information about the files and directories it
reports. The long listing will provide important information
about file permissions, user and group ownership, file size,
and creation date.

ls -al

This command provides a long listing of information about


all files in the current directory. It combines the
functionality of the -a and -l options. This is probably the
most used version of the ls command.

ls -al /usr

This command lists long information about all files in the


"/usr" directory.

ls -alR /usr | more

This command lists long information about all files in the


"/usr" directory, and all sub-directories of /usr. The -R
option tells the ls command to provide a recursive listing of
all files and sub-directories.

ls -ld /usr

Rather than list the files contained in the /usr


directory, this command lists information about
the /usr directory itself (without generating a
listing of the contents of /usr). This is very useful
when you want to check the permissions of the
directory, and not the files the directory contains.

Command Mv
Syntax mv [options] sources target

Options -b backup files that are about to be overwritten or


removed
-I interactive mode; if dest exists, you'll be asked whether
to overwrite the file

Description The "mv" command is used to move and rename


files.
Examples mv Chapter1 Chapter1.bad

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 11


A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL

This command renames the file "Chapter1" to the new


name "Chapter1.bad".

mv Chapter1 garbage

This command renames the file "Chapter1" to the new


name "garbage". (Notice that if "garbage" is a directory,
"Chapter1" would be moved into that directory).

mv Chapter1 /tmp

This command moves the file "Chapter1" into the directory


named "/tmp".

mv tmp tmp.old

Assuming in this case that tmp is a directory, this example


renames the directory tmp to the new name tmp.old.
Command Rm
Syntax rm [options] files

Options -d, --directory


unlink FILE, even if it is a non-empty directory
(super-user only)

-f, --force
ignore nonexistent files, never prompt

-I, --interactive
prompt before any removal

-r, -R, --recursive


remove the contents of directories recursively

-v, --verbose
explain what is being done

Description The "rm" command is used to remove files and


directories. (Warning - be very careful when
removing files and directories!)
Examples rm Chapter1.bad

This command deletes the file named "Chapter1.bad"


(assuming you have permission to delete this file).

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 12


A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL

rm Chapter1 Chapter2 Chapter3

This command deletes the files named "Chapter1",


"Chapter2", and "Chapter3".

rm -I Chapter1 Chapter2 Chapter3

This command prompts you before deleting any of the three


files specified. The -I option stands for inquire. You must
answer y (for yes) for each file you really want to delete.
This can be a safer way to delete files.

rm *.html

This command deletes all files in the current directory


whose filename ends with the characters ".html".

rm index*

This command deletes all files in the current directory


whose filename begins with the characters "index".

rm -r new-novel

This command deletes the directory named "new-novel".


This directory, and all of it’s' contents, are erased from the
disk, including any sub-directories and files.

Command Cp
Syntax cp [options] file1 file2

cp [options] files directory

Options -b backup files that are about to be overwritten or


removed
-I interactive mode; if dest exists, you'll be asked whether
to overwrite the file
-p preserves the original file's ownership, group,
permissions, and timestamp

Description The "cp" command is used to copy files and directories.

Note that when using the cp command, you must always


specify both the source and destination of the file(s) to be

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 13


A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL

copied.

Examples cp .profile .profile.bak

This command copies your ".profile" to a file named


".profile.bak".

cp /usr/fred/Chapter1 .

This command copies the file named "Chapter1" in the


"/usr/fred" directory to the current directory. This example
assumes that you have write permission in the current
directory.

cp /usr/fred/Chapter1 /usr/mary

This command copies the "Chapter1" file in "/usr/fred" to


the directory named "/usr/mary". This example assumes
that you have write permission in the "/usr/mary" directory.

Command Grep
Syntax grep [options] regular expression [files]

Options -I case-insensitive search


-n show the line# along with the matched line
-v invert match, e.g. find all lines that do NOT
match
-w match entire words, rather than substrings

Description Think of the "grep" command as a "search"


command (most people wish it was named "search").
It is used to search for text strings within one or more
files.
Examples grep 'fred' /etc/passwd

This command searches for all occurrences of the text


string 'fred' within the "/etc/passwd" file. It will find and
print (on the screen) all of the lines in this file that contain
the text string 'fred', including lines that contain usernames
like "fred" - and also "alfred".

grep '^fred' /etc/passwd

This command searches for all occurrences of the text

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 14


A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL

string 'fred' within the "/etc/passwd" file, but also requires


that the "f" in the name "fred" be in the first column of each
record (that's what the caret character tells grep). Using this
more-advanced search, a user named "alfred" would not be
matched, because the letter "a" will be in the first column.

grep 'joe' *

This command searches for all occurrences of the text


string 'joe' within all files of the current directory.

Command Mkdir
Syntax mkdir [options] directory name

Description The "mkdir" command is used to create new


directories (sub-directories).
Examples mkdir tmp

This command creates a new directory named "tmp" in


your current directory. (This example assumes that you
have the proper permissions to create a new sub-directory
in your current working directory.)

mkdir memos letters e-mail

This command creates three new sub-directories (memos,


letters, and e-mail) in the current directory.

mkdir /usr/fred/tmp

This command creates a new directory named "tmp" in the


directory "/usr/fred". "tmp" is now a sub-directory of
"/usr/fred". (This example assumes that you have the proper
permissions to create a new directory in /usr/fred.)

mkdir -p /home/joe/customer/acme

This command creates a new directory named


/home/joe/customer/acme, and creates any intermediate
directories that are needed. If only /home/joe existed to
begin with, then the directory "customer" is created, and the
directory "acme" is created inside of customer.

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 15


A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL

Command Rmdir
Syntax rmdir [options] directories
Description The "rm" command is used to remove files and
directories. (Warning - be very careful when
removing files and directories!)
Examples rm Chapter1.bad

This command deletes the file named "Chapter1.bad"


(assuming you have permission to delete this file).

rm Chapter1 Chapter2 Chapter3

This command deletes the files named "Chapter1",


"Chapter2", and "Chapter3".

rm -I Chapter1 Chapter2 Chapter3

This command prompts you before deleting any of the three


files specified. The -I option stands for inquire. You must
answer y (for yes) for each file you really want to delete.
This can be a safer way to delete files.

rm *.html

This command deletes all files in the current directory


whose filename ends with the characters ".html".

rm index*

This command deletes all files in the current directory


whose filename begins with the characters "index".

rm -r new-novel

This command deletes the directory named "new-novel".


This directory, and all of it’s' contents, are erased from the
disk, including any sub-directories and files.

Command cd, chdir


Syntax cd [name of directory you want to move to]

Description "cd" stands for change directory. It is the primary


command for moving around the file system.
Examples cd /usr

This command moves you to the "/usr" directory. "/usr"

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 16


A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL

becomes your current working directory.

cd /usr/fred

Moves you to the "/usr/fred" directory.

cd /u*/f*

Moves you to the "/usr/fred" directory - if this are the only


directory matching this wildcard pattern.

cd

Issuing the "cd" command without any arguments moves


you to your home directory.

cd -

Using the Korn shell, this command moves you back to


your previous working directory. This is very useful when
you're in the middle of a project, and keep moving back-
and-forth between two directories.

Command Kill
Syntax kill [options] IDs

Description kill ends one or more process IDs. In order to do this you
must own the process or be designated a privileged user. To
find the process ID of a certain job use ps.

Command Ps
Syntax ps [options]

Description The "ps" command (process statistics) lets you check


the status of processes that are running on your Unix
system.
Examples ps

The ps command by itself shows minimal information


about the processes you are running. Without any
arguments, this command will not show information about
other processes running on the system.

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 17


A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL

ps -f

The -f argument tells ps to supply full information about the


processes it displays. In this example, ps display full
information about the processes you are running.

ps -e

The -e argument tells the ps command to show every


process running on the system.

ps -ef

The -e and -f arguments are normally combined like this to


show full information about every process running on the
system. This is probably the most often-used form of the ps
command.

ps -ef | more

Because the output normally scrolls off the screen, the


output of the ps -ef command is often piped into the more
command. The more command lets you view one screenful
of information at a time.

ps -fu fred

This command shows full information about the processes


currently being run by the user named fred (the -u option
lets you specify a username).

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 18


A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL

SOLUTIONS

WEEK1
Session 1

1. Log in to the system


2. Use Vi editor to create a file called myfile.txt which contains
some text.
3. Correct typing errors during creation
4. Save the file
5. Logout of the file

Sol:

$ login: <user name>


$ password: ******

$ vi
~ Unix is Case Sensitive
~ Never leave the Computer without logging out when you are working in
a time sharing or network environments.

Type <Esc>
: wq myfile

$
Session 2
1. Log into the system
2. Open the file created in session 1
3. Add some text
4. Change some text
5. delete some text
6. Save the changes
7. Logout of the system
Sol:
$ login: <user name>
$ password: ******

$ vi myfile

~ Unix is Case Sensitive


~ Never leave the Computer without logging out when you are working in
a time sharing or network environments.
~ Shell Programming

: wq

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 19


A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL

WEEK2
Log into the system
Use the cat command to create a file containing the following data. Call it
mutable use tabs to separate the fields

1425 Ravi 15.65


4320 Ramu 26.27
6830 Sita 36.15
1450 Raju 21.86

a. use the cat command to display the file, my table


b. use the vi command to correct any errors in the file, my table
c. use the sort command to sort the file my table according to the
first field. Call the sorted file my table(same name)
d. print the file my table
e. use the cut & paste commands to swap fields 2 and 3 my table.
Call it mytable(same name)
f. print the new file, my table
g. logout of the system

Sol:

$ login: <user name>


$ password:******

$ cat > mytable

1425 <tab> Ravi <tab> 15.65 <tab>


4320 <tab> ramu <tab> 26.27 <tab>
6830 <tab> sita <tab> 36.15 <tab>
1450 <tab> Raju <tab> 21.86 <tab>

a) $ cat myfile

1425 Ravi 15.65


4320 ramu 26.27
6830 sita 36.15
1450 Raju 21.86

c) $ sort +0 -1 mytable

1425 Ravi 15.65


1450 Raju 21.86
4320 ramu 26.27
6830 sita 36.15

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 20


A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL

e) $ cut –f1 mytable > temp1


$ cut –f2 mytable > temp2
$ cut –f1 mytable > temp3
$ paste temp1 temp3 temp2 > mytable

f) $ cat mytable

1425 15.65 Ravi


1450 21.86 Raju
4320 26.27 ramu
6830 36.15 sita

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 21


A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL

WEEK3

a. log in the system


b. use the appropriate commands to determine ur login shell
c. use the /etc/passwd file to verify the result of step b.
d. uses the who command redirect the result to a file called
myfile1.Use the more command to see the contents of myfile1.
e. Use the date and who commands in sequence ?(in one line)
such that the output of date will display on the screen and the
output of who will be redirected to a file called my file2.Use the
more command to check the contents of myfile2.
f. write a sed command that deletes the first character in each
line in a file
g. write a sed command that deletes the character before the last
character in each line in a file.
h. Write a sed command that swaps the files and second words in
each line in a file

Sol:

a. $echo “the login shell is $SHELL”

b. $echo “the login shell is $0”

c. $date ; who > myfile2

d. $more myfile2

f. Input file:
$ cat demo
my name is srikanth
I am studying m.tech
I am learning UNIX

$ sed "s/.//" demo


y name is srikanth
am studying m.tech
am learning UNIX

g. $ sed "s/.\(.\)$/\1/" demo


my name is srikanh
I am studying m.teh
I am learning unx

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 22


A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL

h. $sed 's/^\(.[^ ]*\) \(.[^ ]*\) /\2 \1 /' demo


name my is srikanth
am I studying m.tech
am I learning UNIX

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 23


A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL

WEEK4

a) pipe ur /etc/passwd file to awk and print out the home directory of each
user.
b) Develop an interactive grep script that asks for a word and a file name and
then tells how many lines contain that word

Solution:

a) pipe ur /etc/passwd file to awk and print out the home directory of each
user.

$vi 1.awk

BEGIN{
while("cat /etc/passwd" | getline)
{
var=index($0,"/home/")
wel =substr($0,var)
print wel
}
Esc:wq

$awk -f 1.awk

/home/cse:/bin/bash
/home/it:/bin/bash

b)Develop an interactive grep script that asks for a word and a file name and
then tells how many lines contain that word.

Input :

$cat demo
my name is srikanth
I am studying m.tech

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 24


A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL

I am learning UNIX

Code:

$vi week42.sh

echo "Enter the word"


read word
echo "Enter the filename"
read filename
grep -c "$word" "$filename"

Output:

$ sh week42.sh
Enter the word
srikanth
Enter the filename
demo
1

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 25


A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL

WEEK5

a) Write a shell script that takes a command –line argument and reports on
whether it is directory, a file, or something else.

Code:
$vi week51.sh
if test -d $1
then
echo "$1 is a directory"
elif test -f $1
then
echo "$1 is a file"
else
echo "$1 is not a file or a directory"
fi

Output:

$sh week51.sh demo


demo is a file

b) Write a shell script that accepts one or more file name as arguments and
converts all of them to uppercase, provided they exist in the current directory.

Code:
$vi week52.sh
clear
for file1 in $* ;
do
if [ ! -e file1 ]
then
echo "$file1 doesn't exists"

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 26


A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL

else
tr "[a-z]" "[A-Z]"< $file1
fi
done

Input:

$cat file2
hello
hru

Output:

$sh week52.sh file2


HELLO
HRU

c) Write a shell script that determines the period for which a specified user is
working on the system.

Code:
$vi week53.sh
echo "enter user name"
read uname
echo "the user has logged in from"
last $uname

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 27


A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL

Output:

$sh week53.sh
enter user name
it

the user has logged in from


it :0 console Tue Sep 22 10:13 still logged in
it :0 Tue Sep 22 10:13 - 10:13 (00:00)
it pts/1 :0.0 Wed Sep 16 15:25 - 15:44 (00:19)
it pts/1 :0.0 Wed Sep 16 15:15 - 15:25 (00:09)
it :0 console Wed Sep 16 15:12 - 15:45 (00:33)
it :0 Wed Sep 16 15:12 - 15:12 (00:00)
it :0 console Wed Aug 26 14:08 - 15:11 (01:02)
it :0 Wed Aug 26 14:08 - 14:08 (00:00)
it :0 console Wed Aug 19 14:41 - 16:02 (01:21)
it :0 Wed Aug 19 14:41 - 14:41 (00:00)
it :0 console Sat Aug 8 14:11 - 15:10 (00:58)
it :0 Sat Aug 8 14:11 - 14:11 (00:00)
it :0 console Fri Aug 7 14:09 - crash (1+05:30)
it :0 Fri Aug 7 14:09 - 14:09 (00:00)

wtmp begins Wed Aug 5 19:21:35 2009

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 28


A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL

WEEK6

a)Write a shell script that accepts a file name starting and ending line numbers
as arguments and displays all the lines between the given line numbers.

Code:

$vi week61.sh
clear
if [ ! -e $mytable ]
then
echo "$mytable does not exist"
else
echo " displayed lines from 2 to 3"
head -3 $1 | tail -2
fi

Input:

$cat mytable
1425 15.65 Ravi
1450 21.86 Raju
4320 26.27 Ramu
6830 36.15 Sita

Output:

$sh week61.sh mytable


displayed lines from 2 to 3
1450 21.86 Raju
4320 26.27 Ramu

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 29


A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL

b)Write a shell script that deletes all lines containing a specified word in one or
more files supplied as arguments to it.

Code:

$vi week62.sh demo


clear
for demo in $* ; do
if [ ! -e $demo ]
then
echo "$file doesn’t exist"
else
egrep -v UNIX $demo > temp
echo "Original File"
cat $demo
echo "Modified file i.e., lines which do not have word UNIX"
cat temp
fi
done

Input:
$ cat demo
my name is srikanth
I am studying m.tech
I am learning UNIX
Output:
$sh week62.sh demo
Original File
my name is srikanth
I am studying m.tech
Modified file i.e. lines which do not have word UNIX
my name is srikanth
I am studying m.tech

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 30


A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL

WEEK7

a)Write a shell script that computes the gross salary of a employee according to
the following rules:
I)If basic salary is < 1500 then HRA =10% of the basic and DA =90% of the
basic.
ii)If basic salary is >=1500 then HRA =Rs500 and DA=98% of the basic
The basic salary is entered interactively through the key board.

Code:
$vi week71.sh
clear
echo " Enter The Basic Salary"
read basic
if [ $basic -lt 1500 ]
then
da=`expr $basic \* 90 / 100`
hra=`expr $basic \* 10 / 100`
else
da=`expr $basic \* 98 / 100`
hra=500
fi

gross=`expr $basic + $da + $hra`


echo "Basic:$basic"
echo "Gross:$gross "
echo "DA:$da"
echo "HRA:$hra"

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 31


A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL

Output:
$sh week71.sh
Enter The Basic Salary
1500
Basic:1500
Gross:3470
DA:1470
HRA:500

b)Write a shell script that accepts two integers as its arguments and computers
the value of first number raised to the power of the second number.
Code:
$sh week72.sh
clear
a=$1
b=$2
pow=1
count=1
if [ ! $b -eq 0 ]
then
while [ $count -le $b ]
do
pow=`expr $pow \* $a`
count=`expr $count + 1`
done
fi
echo "$a power $b is : $pow"

Output:

$sh week72.sh 5 2
5 power 2 is : 25

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 32


A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL

WEEK 8

(a) Write an interactive file handling shell program. Let it offer the user the
choice of copying ,removing ,renaming or linking files. Once the use has
made a choice, have the program ask the user for necessary information,
such as the file name ,new name and so on.

Code:

$ vi week81.sh
clear
ch=1
while [ $ch -eq 1 ]
do
echo "1.copy"
echo "2.remove"
echo "3.rename"
echo "4.linking file"
echo "enter your choice"
read choice
case "$choice" in
1)echo "enter source file"
read source
echo "enter destination file"
read dest
cp $source $dest
echo "source copied successfully to $dest" ;;
2)echo "enter filename to remove"
read file
rm $file
echo "$file is successfully removed" ;;
3)echo "enter filename to remove"
read file

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 33


A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL

echo "enter new name"


read new
mv $file $new
echo "$file is removed as $new" ;;
4)echo "enter filename"
read file
echo "enter link file"
read lname
ln $file $lname
echo "link is provided between $file and $lname" ;;
*)echo "invalid option"
esac
echo "do u want to continue \n 1.contine \n 2.stop"
read ch
done

Output:
$ sh week81.sh
1.copy
2.remove
3.rename
4.linking file
enter your choice
1
enter source file
f2
enter destination file
sree
source copied successfully to sree
do u want to continue \n 1.contine \n 2.stop

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 34


A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL

(b) Write a shell script that takes a login name as command –line argument
and reports when that person logs in

Code:
$vi week82.sh
clear
who | grep $1 > temp
echo -n "$1 logs at"
cut -c 23-28 < temp

Output:
$ sh week82.sh it
it logs atOct 1
Oct 1

(c) Write a shell script which receives two files names as arguments. It should
check whether the two file contents are same or not. If they are same then
second file should be deleted.

Code:
$ vi week83.sh
clear
cmp -s $1 $2
if [ $? -eq 0 ]
then
echo "two files are identical"
rm $2
echo "second file is deleted"
else
echo "two files are not identical"
fi

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 35


A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL

Output:

$ sh week83.sh f2 sree
two files are identical
second file is deleted
$ sh week83.sh f2 demo
two files are not identical

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 36


A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL

WEEK 9
(a) Write a shell script that displays a list of all files in the current directory
to which the user has read write and execute permissions

Code:
$ vi week91.sh

ls -l |grep "^.rwx"

Output:
$ sh week91.sh
-rwxrwxr-x 1 it it 5202 Sep 30 16:15 a.out
drwxrwxr-x 2 it it 4096 Jul 22 15:58 backup
drwxrwxr-x 2 it it 4096 Jul 22 16:18 cat
drwxr-xr-x 4 it it 4096 Oct 1 11:23 Desktop
drwxrwxr-x 3 it it 4096 Jul 22 16:11 lndir

(b) Develop an interactive script that asks for a word and file name and then
tells how many times that word occurred in the file.

Code:
$vi week92.sh
clear
ch=0
while [ $ch -eq 0 ]
do
echo "enter word and filename"
read word file
if test -f $file
then
count=`cat $file | grep -c $word`
echo "found $count times"
else

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 37


A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL

echo "$file doesn’t exist"


fi
echo "anymore ? (0-yes,1-no)"
read ch
done

Output:
$sh week92.sh
enter word and filename
srikanth demo
found 1 times
anymore ? (0-yes,1-no)
1

(c) Write a shell script to perform the following string operations.


1) To extract a sub string from a given string

Code:
$ vi week93.sh
clear
echo "enter string"
read str
echo "enter starting position and no. of characters to be extracted"
read str n char
tot=`expr $start + $char -1`
substr=`echo $str | cut -c $start - $tot`
echo "$substr"
Output:
$ sh week93.sh
enter string
srikanth
enter starting position and no. of characters to be extracted
13
sri

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 38


A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL

2) To find the length of a given string

Code:
$vi week94.sh
clear
echo "enter string to find length"
read str
len=`expr "$str"'.*'`
echo "length is:$len"

Output:
$ sh week94.sh
enter string to find length
srikanth
length is:8

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 39


A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL

WEEK 10

Write a C program that takes one or more file or directory names as command
line input and reports the following information on the file.

1. file type
2. number of links
3. read, write and execute permissions
4. time of last access

(Note: use /fstat system calls)

PROGRAM

$vi week10.c
#include<stdio.h>
#include<sys/stat.h>
#include<sys/types.h>
int main(int argc,char **argv)
{
struct stat st ;
int k;
for(k=1;k<argc;k++)
{
if((stat(argv[k],&st)==-1))
printf("can't stat file\n");
else
{
printf("\nFile=%s",argv[k]);
printf("\nInode Number: %u",st.st_ino);
printf("\n Owner User ID : %d",st.st_uid);
printf("\nOwner Group ID : %d",st.st_gid);
printf("\nType and permission =%o",st.st_mode);
printf("\nNo. of links=%d",st.st_nlink);
printf("\n Time of last access :%s",ctime(&st.st_atime));
}
}
}

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 40


A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL

Output:
$ cc week10.c
$ ./a.out week10.c
File=week10.c
Inode Number: 4473752
Owner User ID : 1000
Owner Group ID : 100
Type and permission =100644
No. of links=1
Time of last access :Wed Sep 30 10:33:47 2009

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 41


A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL

WEEK 11

Write C program that simulate the following UNIX commands


(a) mv
PROGRAM
$vi week111.c
#include<stdio.h>
main()
{
char old[34],new[43];
int r;
printf("Enter the old name");
scanf("%s",old);
printf("Enter the new name");
scanf("%s",new);
r=rename(old,new);
if(r==0)
printf("\nSucess");
else
printf("\nError");
}
Output:
$ cc week11a.c
$ ./a.out week11a.c
Enter the old name
file1
Enter the new name
file2

Success

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 42


A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL

(b) Write C program that simulate the following UNIX commands


cp

PROGRAM
$ vi week11b.c
#include<stdio.h>
#include<fcntl.h>
#include<unistd.h>
main(int argc, char **argv)
{
char c;
int n,size,fd1,fd2;
fd1=open(argv[1],O_RDONLY);
fd2=open(argv[2],O_WRONLY);
size=lseek(fd1,-1,SEEK_END);
n=lseek(fd1,0,SEEK_SET);
while(n++ <size)
{
read(fd1,&c,1);
write(fd2,&c,1);
}
}

Output:
$ cc week11b.c
$ ./a.out week11b.c file2
$ cat file2
#include<stdio.h>
#include<fcntl.h>
#include<unistd.h>
main(int argc, char **argv)
{
char c;
int n,size,fd1,fd2;

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 43


A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL

fd1=open(argv[1],O_RDONLY);
fd2=open(argv[2],O_WRONLY);
size=lseek(fd1,-1,SEEK_END);
n=lseek(fd1,0,SEEK_SET);
while(n++ <size)
{
read(fd1,&c,1);
write(fd2,&c,1);
}
}

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 44


A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL

WEEK 12

Write a c program that simulates ls command


(Use system calls /directory API)

PROGRAM:

#include<dirent.h>
#include<stdio.h>
int main(int argc, char ** argv)
{
DIR *dir;
struct dirent *direnty;
if((dir=opendir(argv[1]))==NULL)
puts("Directory Not found");
while((direnty=readdir(dir))!=NULL)
printf("%10d %s \n",direnty -> d_ino,direnty -> d_name);
closedir(dir);
return(0);
}

Out put:
$ cc week12.c
$ ./a.out sree
4473913 week11.c
4481968 week12.c
4472833 ..
4481966 a.out
4481965 .
4473752 week103.c
4473847 week111.c

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 45


A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL

BIBLIOGRAPHY

1. David Medinets, Unix Shell Programming Tools, McGraw-Hill,

2. Bill Rosenblatt, Learning the Korn Shell, O'Reilly and Associates

3. Arnold Robbins, Effective Awk Programming, Free Software Foundation /

O'Reilly and Associates

4. Anatole Olczak, Bourne Shell Quick Reference Guide, ASP, Inc.,

5. UNIX Shell Programming, 4th Edition , Lowell Jay Arthur, Ted Burns

6. Mastering Unix Shell Scripting , by Randal K. Michael

7. The UNIX Operating System, 3rd Edition, by Kaare Christian, Susan Richter

Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 46

You might also like