Unix Lab Manual For Jntu K

  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Unix Lab Manual For Jntu K as PDF for free.

More details

  • Words: 6,762
  • Pages: 46
A.K.R.G.C.E.T

UNIX & SHELL PROGRAMMING LAB MANUAL

INDEX

S.No

Contents

1

Lab Objective

2

Introduction About Lab

3

Guidelines To Students

4

List of Syllabus Programs (JNTU)

5

Basic Unix Commands

6

Solutions For Programs

Page No. 2 3 5 7 10 19

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

3.

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. 2. 3. 4. 5.

Log in to the system Use Vi editor to create a file called myfile.txt which contains some text. Correct typing errors during creation Save the file Logout of the file

Session 2 a) b) c) d) e) f) g)

Log into the system Open the file created in session 1 Add some text Change some text delete some text Save the changes 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 Syntax Description Examples

CAT cat [argument] [specific file] “cat" is short for concatenate. This command is used to create, view and concatenate files. 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

Command Syntax Description Examples

Command Syntax Description Examples

This command combines the contents of the first three files into the fourth file. pwd pwd "pwd" stands for print working directory. It displays your current position in the UNIX file system. pwd There are no options (or arguments) with the "pwd" command. It is simply used to report your current working directory. ls ls [options] [names] "ls" stands for list. It is used to list information about files and directories. 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 Syntax

Mv 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. mv Chapter1 Chapter1.bad

Examples

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

Command Syntax

Options

Assuming in this case that tmp is a directory, this example renames the directory tmp to the new name tmp.old. Rm rm [options] files

-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

Examples

The "rm" command is used to remove files and directories. (Warning - be very careful when removing files and directories!) 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 Syntax

Cp 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 Syntax

Grep grep [options] regular expression [files]

Options

-I -n -v

case-insensitive search show the line# along with the matched line invert match, e.g. find all lines that do NOT

-w

match entire words, rather than substrings

match

Description

Examples

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

Mkdir mkdir [options] directory name

Description

The "mkdir" command is used to create new directories (sub-directories). mkdir tmp

Examples

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 Command Syntax Description

Examples

UNIX & SHELL PROGRAMMING LAB MANUAL

Rmdir rmdir [options] directories The "rm" command is used to remove files and directories. (Warning - be very careful when removing files and directories!) 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 Syntax

cd, chdir 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. cd /usr

Examples

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 backand-forth between two directories.

Command Syntax

Kill 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 Syntax

Ps ps [options]

Description

The "ps" command (process statistics) lets you check the status of processes that are running on your Unix system. ps

Examples

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. 2. 3. 4. 5.

Log in to the system Use Vi editor to create a file called myfile.txt which contains some text. Correct typing errors during creation Save the file 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. 2. 3. 4. 5. 6. 7.

Log into the system Open the file created in session 1 Add some text Change some text delete some text Save the changes 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 4320 6830 1450

Ravi Ramu Sita Raju a. b. c. d. e. f. g.

15.65 26.27 36.15 21.86

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

Sol: $ login: <user name> $ password:****** $ cat > mytable 1425 4320 6830 1450

Ravi ramu sita Raju

15.65 26.27 36.15 21.86

a) $ cat myfile 1425 4320 6830 1450

Ravi ramu sita Raju

15.65 26.27 36.15 21.86

c) $ sort +0 -1 mytable

1425 1450 4320 6830

Dept. of CSE/CSIT

Ravi Raju ramu sita

15.65 21.86 26.27 36.15

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 1450 4320 6830

Dept. of CSE/CSIT

15.65 21.86 26.27 36.15

Ravi Raju ramu sita

Prepared By B.Srikanth (Asst Prof)

21

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

UNIX & SHELL PROGRAMMING LAB MANUAL

WEEK3 a. b. c. d. e.

f. g. h.

log in the system use the appropriate commands to determine ur login shell use the /etc/passwd file to verify the result of step b. uses the who command redirect the result to a file called myfile1.Use the more command to see the contents of myfile1. 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. write a sed command that deletes the first character in each line in a file write a sed command that deletes the character before the last character in each line in a file. 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

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

it

:0

it

:0

it

:0

it

:0

it

:0

it

:0

it

:0

it

:0

it

:0

Tue Sep 22 10:13 - 10:13 (00:00)

console

Wed Sep 16 15:12 - 15:45 (00:33) Wed Sep 16 15:12 - 15:12 (00:00)

console

Wed Aug 26 14:08 - 15:11 (01:02) Wed Aug 26 14:08 - 14:08 (00:00)

console

Wed Aug 19 14:41 - 16:02 (01:21) Wed Aug 19 14:41 - 14:41 (00:00)

console

Sat Aug 8 14:11 - 15:10 (00:58) Sat Aug 8 14:11 - 14:11 (00:00)

console

Fri Aug 7 14:09 - crash (1+05:30) 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. 2. 3. 4.

file type number of links read, write and execute permissions 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 #include 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 #include 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 #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

Related Documents