46
A.K.R.G.C.E.T UNIX & SHELL PROGRAMMING LAB MANUAL Dept. of CSE/CSIT Prepared By B.Srikanth (Asst Prof) 1 INDEX S.No Contents Page No. 1 Lab Objective 2 2 Introduction About Lab 3 3 Guidelines To Students 5 4 List of Syllabus Programs (JNTU) 7 5 Basic Unix Commands 10 6 Solutions For Programs 19 7 Bibliography 55

Unix Lab Manual For JNTU K

Embed Size (px)

DESCRIPTION

This is the lab manual for the all jntu kakinada students

Citation preview

Page 1: Unix Lab Manual For JNTU K

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

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

INDEX

S.No Contents Page No.

1 Lab Objective 2

2 Introduction About Lab 3

3 Guidelines To Students 5

4 List of Syllabus Programs (JNTU) 7

5 Basic Unix Commands 10

6 Solutions For Programs 19

7 Bibliography

55

Page 2: Unix Lab Manual For JNTU K

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

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

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

Page 3: Unix Lab Manual For JNTU K

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

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

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

Page 4: Unix Lab Manual For JNTU K

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

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

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.

Page 5: Unix Lab Manual For JNTU K

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

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

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

Page 6: Unix Lab Manual For JNTU K

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

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

$ 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

Page 7: Unix Lab Manual For JNTU K

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

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

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.

Page 8: Unix Lab Manual For JNTU K

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

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

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

Page 9: Unix Lab Manual For JNTU K

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

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

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)

Page 10: Unix Lab Manual For JNTU K

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

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

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.

Page 11: Unix Lab Manual For JNTU K

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

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

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

Page 12: Unix Lab Manual For JNTU K

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

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

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).

Page 13: Unix Lab Manual For JNTU K

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

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

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

Page 14: Unix Lab Manual For JNTU K

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

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

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

Page 15: Unix Lab Manual For JNTU K

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

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

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.

Page 16: Unix Lab Manual For JNTU K

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

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

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"

Page 17: Unix Lab Manual For JNTU K

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

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

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.

Page 18: Unix Lab Manual For JNTU K

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

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

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).

Page 19: Unix Lab Manual For JNTU K

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

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

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

Page 20: Unix Lab Manual For JNTU K

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

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

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

Page 21: Unix Lab Manual For JNTU K

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

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

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

Page 22: Unix Lab Manual For JNTU K

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

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

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

Page 23: Unix Lab Manual For JNTU K

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

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

h. $sed 's/^\(.[^ ]*\) \(.[^ ]*\) /\2 \1 /' demo name my is srikanth am I studying m.tech am I learning UNIX

Page 24: Unix Lab Manual For JNTU K

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

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

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

Page 25: Unix Lab Manual For JNTU K

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

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

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

Page 26: Unix Lab Manual For JNTU K

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

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

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"

Page 27: Unix Lab Manual For JNTU K

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

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

else

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

fi

done

Input:

$cat file2

hello

h r u

Output:

$sh week52.sh file2

HELLO

H R U

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

Page 28: Unix Lab Manual For JNTU K

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

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

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

Page 29: Unix Lab Manual For JNTU K

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

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

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

Page 30: Unix Lab Manual For JNTU K

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

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

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

Page 31: Unix Lab Manual For JNTU K

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

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

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"

Page 32: Unix Lab Manual For JNTU K

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

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

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

Page 33: Unix Lab Manual For JNTU K

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

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

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

Page 34: Unix Lab Manual For JNTU K

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

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

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

Page 35: Unix Lab Manual For JNTU K

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

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

(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

Page 36: Unix Lab Manual For JNTU K

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

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

Output:

$ sh week83.sh f2 sree

two files are identical

second file is deleted

$ sh week83.sh f2 demo

two files are not identical

Page 37: Unix Lab Manual For JNTU K

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

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

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

Page 38: Unix Lab Manual For JNTU K

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

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

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

1 3

sri

Page 39: Unix Lab Manual For JNTU K

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

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

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

Page 40: Unix Lab Manual For JNTU K

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

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

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));

}

}

}

Page 41: Unix Lab Manual For JNTU K

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

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

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

Page 42: Unix Lab Manual For JNTU K

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

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

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

Page 43: Unix Lab Manual For JNTU K

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

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

(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;

Page 44: Unix Lab Manual For JNTU K

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

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

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);

}

}

Page 45: Unix Lab Manual For JNTU K

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

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

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

Page 46: Unix Lab Manual For JNTU K

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

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

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