100% found this document useful (1 vote)
4K views

Unix & Shell Programming Manual

The document provides instructions for several tasks related to logging into a UNIX system and using basic commands like vi, cat, sort, cut, and paste. It describes logging into the system, creating and editing a file called myfile.txt using vi, adding and deleting text, saving changes, and logging out. It then covers similar tasks in a second session, including opening the existing file, adding more text, and saving edits. The next section sorts a table created with cat according to the first field and uses vi to correct errors. The final section swaps fields in the table using cut and paste commands before logging out.
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
4K views

Unix & Shell Programming Manual

The document provides instructions for several tasks related to logging into a UNIX system and using basic commands like vi, cat, sort, cut, and paste. It describes logging into the system, creating and editing a file called myfile.txt using vi, adding and deleting text, saving changes, and logging out. It then covers similar tasks in a second session, including opening the existing file, adding more text, and saving edits. The next section sorts a table created with cat according to the first field and uses vi to correct errors. The final section swaps fields in the table using cut and paste commands before logging out.
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 48

WEEK 1

SESSION 1:

A) Aim: Log into the system

When we return on the system one screen will appear. In this we have to
type 100.0.0.9 then we enter into editor. It asks our details such as

Login : allem530
password:

Then we get log into the commands.

B) Aim: Use vi editor to create a file called myfile.txt which contains


some text.To create a file in vi editor we must follow the syntax given below

Syntax:-vi file name

Here we have to open a file named as my file text when we open the file by
using the above syntax one window will be opened in that we type text as
our wish.

Example: vi myfile.text.

C) Aim: Correct typing errors during creation.

In creating a file through vi editor an error an error will occur we


modify the file by opening the file again. An error will occur when
we don’t give space between filename and command name

Example: vi530

Other type of error is when any wrong typing in file.

UNIX & SHELL PROGRAMMING MANUAL 1


D) Aim: Save the File.

To save the file created in vi editor we press esc:WQ1.It means


that saves the file and Quits editing mode .then we come out from
the vi editor.

E) Aim: Logout the system.

In our current directory press exit to log out from the commands .In
desktop turn of f computer option will displayed Ok that option and then ok
shutdown option then windows will shutdown and we log out from the system.

SESSION 2:

A) Aim: Log into the system

When we turn on the system one screen will appear. In this we have to type
100.0.0.9 then we enter into editor. It asks

Login : allam530
password:

Then we log into the commands.

B) Aim: Open the file created in session -1

In the above session we create a file in vi editor To open the


file created in Session 1 we have to type as follows

Syntax: vi filename
It displays the file as follows

C) Aim: Add Some text:

To add some text to the file which is already created first we have to open
that file then add text.
vi filename. Text

UNIX & SHELL PROGRAMMING MANUAL 2


D) Aim: Change some text

To change the some text in myfile.text move the cursor where we


want to change the text After that replace the text under cursor with
other text first open the file as follows.

vi myfile.text

E) Aim: Delete some text :

To delete text in my file text we first move the cursor to end of


that line and then press delete then the line is erased to do this first we
open the file as

vi myfile.text

F) Aim: Save the changes:

To save the changes made in file myfile.text we press

esc:WQ

It means that saves the file and quits editing mode then we log out from the
vi Mode.

G) Aim: Logout of the System:

In our current directory press exit to logout from the commands in desktop
turn off computer option will appear ok that option and then ok shutdown
option then windows will shutdown we logout from the system.

UNIX & SHELL PROGRAMMING MANUAL 3


WEEK 2

A) Aim: Log into the system

When we turn on the system one screen will appear in this we have to type
100.0.0.9 then we log into the commends it asks

Login
Login : allam530

password:

then we log into the commands.

B) Aim: Use the cat command to create a file containing the following
data .Call it mytable use
tabs to separate the fields.
1425 Ravi 15.65
4320 Ramu 26.27
6830 Sita 36.15
1450 Raju 21.86

Cat command is used to create the files Here file name is mytable

Example: cat>mytable

Type the file as given above

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

To save the file press Ctrl + D

UNIX & SHELL PROGRAMMING MANUAL 4


C) Aim: Use the Cat command to display the file,mytable.

To display the text in my table we use the syntax as follows

Syntax: cat mytable

It display the file as follows

$ cat mytable

1425 Ravi 15.65


4320 Ramu 26.27
6830 Sita 36.15
1450 Raju 21.86

D) Aim: Use the vi command to correct any errors in the file ,mytable

By using vi editor we have to correct errors occurred in creating file .

Open the file in vi editor as

Vi mytable
Use vi command to correct errors

E) Aim: Use the sort command to sort the file mytable according to the
first field. Call the

sorted my table (same name)

short command is used to print the contents of the file in alphabetical


order

syntax: sort filename

example: sort mytable.

$ sort -k 1 mytable > sortfile;cp sortfile mytable

UNIX & SHELL PROGRAMMING MANUAL 5


cp: overwrite `mytable'? Y

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

F) Aim: print the file mytable

To print the file mytable we use cat command as follows


Syntax: cat filename

Example: cat myfile

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

G) Aim: use the cut and paste commands to swap fields 2 and 3 of
mytable.Call it my table(same name)

By using cut command we cut fields as well as characters from the


file cut command cuts mentioned characters and it is stored in another file
as follows
cut –c characters my table >my

the fields are removed by using the syntax as follows the out put
is stored in table

cut –f fields mytable >table

example: cut –f 1,3 mytable>my

UNIX & SHELL PROGRAMMING MANUAL 6


It means it cuts 1,3 fields the middle part is stored in my file

Cut –c 5,9 mytable>table

It means it cuts the characters from 5 to 9 the remaining 1,3


fields are stored in table .To paste these two files we use paste command

Syntax: paste file1,file2

$ cat mytable

1425 Ravi 15.65


4320 Ramu 26.27
6830 Sita 36.15
1450 Raju 21.86

$ cut -f 1 mytable >field1;cut -f 2 mytable >field2;cut -f 3 mytable>field3


$ paste field1 field3 field2 > mytable

$ cat mytable

1425 15.65 Ravi


4320 26.27 Ramu
6830 36.15 Sita
1450 21.86 Raju

H) Aim:Print the new file,mytable

The file swapped this file can be displayed as follows

$ lp mytable

1425 15.65 Ravi


4320 26.27 Ramu
6830 36.15 Sita
1450 21.86 Raju

UNIX & SHELL PROGRAMMING MANUAL 7


I) Aim: logout of the system.

In our current directory type exit to log out from the commands in desktop
turnoff computer option will appear ok that option and then ok shutdown
option then windows will shutdown we logout from the system.

Logout
[ctrl-d] or
Exit

UNIX & SHELL PROGRAMMING MANUAL 8


WEEK 3

1. A) Aim: login to the system

When we turn on the system one screen will appear in this we have to
type 100.0.0.9 then we enter into one window it asks

Login : allam530
password:

Then we login to the commands

B) Aim: use the appropriate command to determine your login shell

If we want to known in which shell you login shell the syntax is as follows

Syntax: $ echo $SHELL

$ echo $SHELL
/bin/bash
Unix contains a system variable shell that identifiers the path to your login
shell

C) Aim: use the /etc/passwd file to verify the result of step b.

By using cat command we can print who login in to the system

$ cd /
$ ls
bin dev lib media net root srv usr
boot etc home .............. linux tmp
$ cd etc
$ ls

UNIX & SHELL PROGRAMMING MANUAL 9


a2ps,a2ps.cfg, initlog.conf,......... , passwd, passwd-
................................
$ cat passwd

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
....................................................
...................................................

allam:x:501:501:Allamnarasingarao:/home/allam:/bin/bash

D) Aim: use the who command and redirect the result to a file called
myfile1.Use the more command to see the contents of myfile1.

When we redirect the standard output the command output is


copy to a file rather than displayed on the monitor the redirection
operator for output is >

Command >file name


Who>myfile1

The result of who command is stored in myfile1


By using more command we print the myfile1 contents as follows
More myfile1

$ who >myfile1
$ more myfile1
allam tty7 2008-08-23 09:08 (:0)
allam pts/1 2008-08-23 09:09 (:0.0)
.......... ....... .......................................
.......... ....... .......................................

E) Aim: 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 myfile2. use the more command to check
the contents of myfile2.

UNIX & SHELL PROGRAMMING MANUAL 10


In sequence command sequence of commands can be entered on oneline

$ date;who > myfile2


Sat Aug 23 09:38:05 IST 2008
$ more myfile2
allam tty7 2008-08-23 09:08 (:0)
allam pts/1 2008-08-23 09:09 (:0.0)
......... . ....... .......................................
......... . ........ .......................................

2. A) Aim: Write a sed command that deletes the first character


in each line in a file.

#Delete the first character in each line in a file.

$ cat mytable
1425 Ravi 15.65
4320 Ramu 26.27
6830 Sita 36.15
1450 Raju 21.86
7820 Anil 23.34
9000 Allam 35.56

$ sed 's/^./ / ' mytable


425 Ravi 15.65
320 Ramu 26.27
830 Sita 36.15
450 Raju 21.86
820 Anil 23.34
000 Allam 35.56
B) Aim: Write a sed command that deletes the character before the
last character in each line in a file.

# Delete the last character in each line in a file.

$ sed 's/.$/ /' mytable


1425 Ravi 15.6
4320 Ramu 26.2

UNIX & SHELL PROGRAMMING MANUAL 11


6830 Sita 36.1
1450 Raju 21.8
7820 Anil 23.3
9000 Allam 35.5

D) Aim: Write a sed command that swaps the first and second words in a
file.

# Swaps the first and second words in each line in a file.

$ sed ‘s/ \([^ ]*\) *\([^ ]*\)/ \2 \1 /g’ mytable


Ravi 1425 15.65
Ramu 4320 26.27
Sita 6830 36.15
Raju 1450 21.86
Anil 7820 23.34
Allam 9000 35.56

UNIX & SHELL PROGRAMMING MANUAL 12


WEEK 4

A) Aim: pipe your /etc/passwd file to awk , and print out the home directory
of each user.

First we go to vi editor by using

$ vi home.awk
{
if(match ($0, /^.*home/) > 0)
{
split( $0, user)
split(user[1],homedir, ":")
print homedir[1]
}
}

To compile the program use


Sh filename.sh
To return the program

awk command :
$ cat /etc/passwd | awk -f home.awk
Administrator
Guest
sys1
cse
cse123
it
cse501
cse502
it1201
it1202

UNIX & SHELL PROGRAMMING MANUAL 13


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

First we create a file with filename grep.sh

$ vi grep.sh
echo "Enter the pattern to be searched: "
read pattern
echo "Enter the file to be used: "
read filename
echo "Searching for $pattern from file $filename"
echo "The selected records are: "
grep "$pattern" $filename
echo "The no.of lines contains the word( $pattern ) :"
grep -c "$pattern" $filename

Output :

$ sh grep.sh
Enter the pattern to be searched:
computer
Enter the file to be used:
sales.dat
Searching for computer from file sales.dat
The selected records are:
10 computer 2345
10 computer 7685
The no.of lines contains the words ( computer ) :

UNIX & SHELL PROGRAMMING MANUAL 14


WEEK 5

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

$ vi filetype.sh
echo "Enter the file name: "
read file
if [ -f $file ]
then
echo $file "---> It is a ORDINARY FILE."
elif [ -d $file ]
then
echo $file "---> It is a DIRCTORY."
else
echo $file "---> It is something else."
fi

outputs:
$ sh filetype.sh
Enter the file name:
sales.dat
sales.dat ---> It is a ORDINARY FILE.
$ sh filetype.sh
Enter the file name:
cse
cse---> It is a DIRCTORY.

UNIX & SHELL PROGRAMMING MANUAL 15


B) Aim: 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.

$vi upper.sh
for file in *
do
if [ -f $file ]
then
echo $file | tr '[a-z]' '[A-Z]'
fi
done
Reading input :
$ ls
afile
afile1.tar
afile.tar
aped.sed
errfile
exch.dat
exsed.sed
f1
f2
for.sh
grep.sh
Output:

$ sh upper.sh
AFILE
AFILE.TAR
APED.SED
ERRFILE
EXCH.DAT
EXSED.SED
F1
F2
FOR.SH
GREP.SH

UNIX & SHELL PROGRAMMING MANUAL 16


C) Aim: Write a shell script that determines the period for which a
specified user is working On the system.

$vi logtime.sh
echo "Enter the USER NAME : "
read user
last $user

Output :

$ sh logtime.sh
Enter the USER NAME :
cse123
cse123 tty7 :0 Fri Sep 26 13:27 still logged in
cse123 pts/1 :0.0 Thu Sep 25 15:08 - 15:45 (00:37)
cse123 tty7 :0 Thu Sep 25 14:53 - 16:32 (01:39)
cse123 tty7 :0 Thu Sep 25 14:13 - 14:25 (00:11)
cse123 tty7 :0 Tue Sep 23 13:54 - 15:30 (01:36)
cse123 pts/2 :20.0 Mon Sep 22 17:02 - 17:23 (00:21)

UNIX & SHELL PROGRAMMING MANUAL 17


WEEK 6

A) Aim: 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.

$ vi range.sh
echo " Enter the file name :"
read file
if [ -f $file ]
then
echo "Enter the Starting line number:"
read snum
echo "Enter the Ending line number:"
read enum
if [ $snum -lt $enum ]
then
echo "The selected lines from $snum line to $enum line in $file :"
sed -n ' ' $snum','$enum' 'p' ' $file
else
echo "Enter proper starting & ending line numbers."
fi
else
echo "The file ' $file ' doesn't exists. "
fi
Output:

$sh range.sh
Enter the file name :
sales.dat
Enter the Starting line number:
2
Enter the Ending line number:
4
The selected lines from 2 line to 4 line in sales.dat :
11 tvsets 8765
10 computer 7685
12 mouse 6785

UNIX & SHELL PROGRAMMING MANUAL 18


B) Aim: write a shell script that deletes all lines containing a specified
word in one or more files supplied as arguments to it.

$ vi detline.sh
echo "Enter the word to search for all lines :"
read word
echo "the file name are $* ."
for i in $*
do
echo "The name of the file :" $i
grep -v $word $i
done

Output :
$ sh detline.sh sales.dat sales1.dat sales2.dat
Enter the word to search for all lines :
computer
the file name are sales.dat sales1.dat sales2.dat
The name of the file : sales.dat
11 tvsets 8765
12 mouse 6785
13 keyboard 2341
The name of the file : sales1.dat
11 tvsets 8765
12 mouse 6785
13 keyboard 2341
The name of the file : sales2.dat
11 tvsets 8765
12 mouse 6785
13 keyboard 2341

UNIX & SHELL PROGRAMMING MANUAL 19


WEEK 7

A) Aim: 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 the basic salary is>=1500 then HRA=500/- and DA=98% of the basic

The basic salary is entered interactively through the key board.


$ vi gsalary.sh
echo "enter the basic salary:"
read bsal
if [ $bsal -lt 1500 ]
then
gsal=$((bsal+((bsal/100)*10)+(bsal/100)*90))
echo "The gross salary : $gsal"
fi
if [ $bsal -ge 1500 ]
then
gsal=$(((bsal+500)+(bsal/100)*98))
echo "the gross salary : $gsal"
fi

Output :

$ sh gsalary.sh
enter the basic salary:
1200
The gross salary : 2400
$ sh gsalary.sh
enter the basic salary:
2400
the gross salary : 5252

UNIX & SHELL PROGRAMMING MANUAL 20


B) Aim: 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.

$ vi pow.sh
echo "Enter the integer value :"
read int1
echo "Enter the power of that integer:"
read int2
pv=$int1
i=1
while [ $i -lt $int2 ]
do
pv=`expr $pv \* $int1`
i=`expr $i + 1 `
done
echo "The value of first number to the power of the second number
:"
echo "$pv"

output:

$ sh pow.sh
Enter the integer value :
2
Enter the power of that integer:
5
The value of first number to the power of the second number :
32

UNIX & SHELL PROGRAMMING MANUAL 21


WEEK 8

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

$ cat 8a.sh
echo "*******MENU*********"
echo "
1. List of files.
2. Copying files.
3. Removing files.
4. Renaming files.
5. Linking files."
Echo "enter your choice "
read ch
case "$ch" in
1 ) echo "The list of file names."
ls –l
2 ) echo "Enter the old filename."
read ofile
echo "Enter the new file name."
read nfile
cp $ofile $nfile && echo "Copied sucessfully." || echo
"Copied is not possible." ;;
3 ) echo "Enter the file name to remove."
read rfile
rm -f $rfile && echo "Successfully removed." ;;

4 ) echo "Enter the old file name."


read ofile
echo "Enter the new file name."
read nfile
mv $ofile $nfile && echo "The file $ofile name renamed
to $nfile." || echo "You cann't Rename the file. “;;

UNIX & SHELL PROGRAMMING MANUAL 22


5 ) echo "Enter the original filename."
read ofile
echo "Enter the new filename to link a file."
read lfile
ln $ofile $lfile && echo "Creat the linking file
Sccessfully." || echo "You cann't Linking the file.";; * )
echo "Invalid option."
Echo " Enter correct choice."
esac

Output :
$ sh 8a.sh
*******MENU*********
1. List of files.
2. Copying files.
3. Removing files.
4. Renaming files.
5. Linking files.
enter your choice
2
Enter the old filename.
f1
Enter the new file name.
f0
Copied sucessfully.

B) Aim: Write shell script that takes a login name as command-line


argument and reports when that person logs in.

$vi login.sh
echo "Enter the USER NAME : "
read user
last $user

UNIX & SHELL PROGRAMMING MANUAL 23


Output :

$ sh logtime.sh
Enter the USER NAME :
cse123
cse123 tty7 :0 Fri Sep 26 13:27 still logged in
cse123 pts/1 :0.0 Thu Sep 25 15:08 - 15:45 (00:37)
cse123 tty7 :0 Thu Sep 25 14:53 - 16:32 (01:39)
cse123 tty7 :0 Thu Sep 25 14:13 - 14:25 (00:11)
cse123 tty7 :0 Tue Sep 23 13:54 - 15:30 (01:36)
cse123 pts/2 :20.0 Mon Sep 22 17:02 - 17:23 (00:21)

(or)

echo “ The Login repots of the user : $* .”


last $*
output :
$sh login.sh cse123
cse123 tty7 :0 Fri Sep 26 13:27 still logged in
cse123 pts/1 :0.0 Thu Sep 25 15:08 - 15:45 (00:37)
cse123 tty7 :0 Thu Sep 25 14:53 - 16:32 (01:39)
cse123 tty7 :0 Thu Sep 25 14:13 - 14:25 (00:11)

C) Aim: Write a shell script which receives two file 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.

$vi cheek.sh
echo "enter the first file name"
read file1
echo "enter the second file name"
read file2
cmp $file1 $file2 && rm $file2
if [ -e $file1 ]

UNIX & SHELL PROGRAMMING MANUAL 24


then
if [ ! –e $file2 ]
then
echo "The two files contents are same."
echo "The second file is deleted successfully."
else
echo "The two files contents are not same."
echo "You cann't remove the file '$file2' ."
fi
else
echo "You should enter the existing file names."
fi

Output:

$ sh cheek.sh
enter the first file name
file1.dat
enter the second file name
file3.dat
The two files contents are same.
The second file is deleted successfully.

$ sh 8c.sh
enter the first file name
file1.dat
enter the second file name
file2.dat
file1.dat file2.dat differ: byte 1, line 1
The two files contents are not same.
You cann't remove the file 'file2.dat' .

$ sh 8c.sh
enter the first file name
file5.dat
enter the second file name
file3.dat
cmp: file3.dat: No such file or directory

UNIX & SHELL PROGRAMMING MANUAL 25


You should enter the existing file names.
WEEK 9

A) Aim: write a shell script that displays a list of all the files in the current
directory to which the use has read ,write and execute permissions.

$vi perm.sh
echo "The list of File Names in the curent directory."
echo "Which have Read,Write and Execute permisions. "
for file in *
do
if [ -f $file ]
then
if [ -r $file -a -w $file -a -x $file ]
then
ls -l $file
fi
fi
done

Output :

$chmod 777 file1


$chmod 777 file2
$chmod 777 file3
$chmod 777 file4
$ sh perm.sh
The list of File Names in the curent directory.
Which have Read,Write and Execute permisions.
-rwxrwxr-x 1 allam allam 6722 2008-08-21 10:00 a.out
-rwxrwxrwx 1 allam allam 4 2008-08-18 16:48 file1
-rwxrwxrwx 1 allam allam 9 2008-08-18 16:48 file2
-rwxrwxr-x 1 allam allam 4 2008-08-19 14:33 file3
-rwxrwxrwx 1 allam allam 14 2008-08-18 16:48 file4

UNIX & SHELL PROGRAMMING MANUAL 26


B) Aim: Develop an interactive script that ask for a word and a file name
and then tells how many times that word occurred in the file.

$ vi wcount.sh
echo " Enter the word to be searched"
read word
echo "Enter the filename to be used"
read flname
echo "the no. of times the word occured in the file."
grep -c $word $flname

Output:
$ sh wcount.sh
Enter the word to be searched
computers
Enter the filename to be used
sales.dat
the no. of times the word occured in the file.
2

C) Aim: Write a shell script to perform the following string operations:


I) To extract a sub-string from a given string.
II) To find the length of a given string.

$ vi strlen.sh
echo "To find the length of the given string."
echo "Enter the string."
read string
strlen=${#string}
echo "The string length is : $strlen"
Output :
$ sh strlen.sh
To find the length of the given string.
Enter the string.
computer science and engineering.
The string length is : 33

UNIX & SHELL PROGRAMMING MANUAL 27


WEEK 10

A) Aim: 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:
I)file type

#include<stdio.h>

#include<unistd.h>

#include<sys/stat.h>

#include<sys/types.h>

int main(int argc,char *argv[])

struct stat b;

int i;

for(i=1;i<argc;i++)

if(lstat(argv[i],&b)==-1)

printf("%s",argv[i]);

fflush(stdout);

perror("lstat error");

continue;

else if(S_ISREG(b.st_mode))

printf("regular file\n");

else if(S_ISDIR(b.st_mode))

UNIX & SHELL PROGRAMMING MANUAL 28


printf("directory file \n");

else if(S_ISCHR(b.st_mode))

printf("character special file\n");

else if(S_ISBLK(b.st_mode))

printf("block special file \n");

else if(S_ISFIFO(b.st_mode))

printf("pipefile \n");

else if(S_ISLNK(b.st_mode))

printf("symbloic link file");

else if(S_ISSOCK(b.st_mode))

printf("socket file \n");

else

printf("unknown file");

OUTPUT :

$./a.out lab1.sh

regular file

B) Aim: 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:
(i)number of links
(ii) read, write and execute permission

(iii) time of last access

UNIX & SHELL PROGRAMMING MANUAL 29


#include<sys/stat.h>

#include<stdio.h>

#include<unistd.h>

#include<stdlib.h>

int main(int argc,char *argv[])

struct stat statbuf;

int i;

if(argc<2)

printf("usage:./a.out< filename(s)");

exit(1);

for(i=1;argc!=i;i++)

if(access(argv[i],F_OK)<0)

printf(" \n %s,File/dir not exists",argv[i]);

continue;

else

if(lstat(argv[i],&statbuf)<0)

UNIX & SHELL PROGRAMMING MANUAL 30


printf("unable to read Status of file :%s",argv[i]);

continue;

printf("No of links :%d \t",statbuf.st_nlink);

return(0);

OUTPUT :

No of links :1

Last access time is 1207834720

Read permissions for the user

Write permissions for the user

Execute permissions for the user

UNIX & SHELL PROGRAMMING MANUAL 31


WEEK 11

A) Aim: Write a C program that simulate the following UNIX commands:


a) mv

#include<unistd.h>

#include<stdio.h>

#include<stdlib.h>

int main(int argc,char *argv[])

if(argc!=3)

printf("usage:a.out <old name> <new name>");

exit(1);

if(access(argv[1],F_OK)<0)

if("File not found");

exit(2);

if(rename(argv[1],argv[2])<0)

printf("Rename Error");

exit(3);

UNIX & SHELL PROGRAMMING MANUAL 32


}

printf("%s renamed as %s",argv[1],argv[2]);

return 0;

OUTPUT :

$./a.out lab8c.c lab8b.c

lab8c.c renamed as lab8b.c

B) Aim: Write a C program that simulate the following UNIX commands:


b) cp (use system calls)

#include<stdio.h>

Int main(int argc,char *argv[])

FILE *fp1,*fp2;

int ch;

fp1=fopen(argv[1],”r”);

fp2=fopen(argv[2],”r”);

while((ch=fgtc(fp1))!=-1)

fputc(ch,fp2);

OUT PUT:

Cc filename c

La out ab abc

This is QIS College.

UNIX & SHELL PROGRAMMING MANUAL 33


WEEK 12

A) Aim: Write a C program that simulates ls command


(use system calls/directory API)

#include<stdio.h>
#include<conio.h>
#include<unistd.h>
#include<derent.h>
Int main()
{
DIR *dirp;
Struct dirent *dp;
Dirp=opendir(“”);
If(dirp==NULL)
Printf(“error”);
else
for(dp=readdir(dirp);dp!=NULL;dp=readdir(dirp))
printf(“%s\n”,dp->d=name);
}

Output:

cc filename c
la.output

a.out
ramesh
file1
file2

UNIX & SHELL PROGRAMMING MANUAL 34


WEEK 13

Aim:Execute the following commands


i) mkdir ii)rmdir iii) cd iv) man

Descriptin:

To create a new directory we use the make directory command it has two
options
1) permission mode
2) parent mode

we can control the permission for the new directory with the mode
(-m) optin

Purpose:
To create a new directory we use the make directory command

Syntax: mkdir directory name

Example: mkdir Saturn


Ls –ld Saturn

Drwxr-xr-x 2 gilberg staff 512 may 19 14:03

Name: rmdir

Syntax:-rmdir directory name

Purpose:- it is used to remove directory

Example: rmdir Saturn

Description: To remove a directory the rmdir can’t delete a directory


unless it is empty then first it deletes the file and delete directory.

UNIX & SHELL PROGRAMMING MANUAL 35


Name: cd
Syntax: cd directory name

Purpose: it is used to change the directory

Example: cd anu

Description: we have multiple directories we need some way to among them


that is to change our working directory.

Name: MAN

Syntax: MAN command name

Purpose: it is used for online help

Example: man

Description: it is an online documentation command it is most used unix


command.

$ man cal

NAME
Cal –display a calendar

Snopsis: cal display a simple calendar if arguments are not specified the
current month is displayed.

-1 display single month output

-3 display prev/current/next month output.

-m display Monday as the first day of the week

UNIX & SHELL PROGRAMMING MANUAL 36


WEEK 14

Aim : Execute the network commands


a) ps b) du c) df

ps

name: ps command

syntax: ps

purpose: to known login name terminal ID, time, command

example: ps
PID TTY TIME CMD
659 tty3 00:00:01 sh

Description: it is used to known the process status

du

Name: du command

Syntax: du[option] subdirectory name

Purpose: extimate the file space usage.

Description: this command purpose a list containing the usage of each


subdirectory of its arguments and finally produces a summary.

Example: du/home/dir1/dir2
11554/home/dir1/dir2/prg1
12820/home/dir1/dir2/prg2

UNIX & SHELL PROGRAMMING MANUAL 37


df

Name: df

Syntax: df

Purpose: finding the free disk space

Description: it is very much useful for finding the free disk space

Example: df

/ (dir1/dir2/file1):41224888 blocks

/ pi (pi) :blocks 15861 files

/d1/f1 (f1):blocks ofiles.

UNIX & SHELL PROGRAMMING MANUAL 38


Week 15

Execute the following commands


a) head b)tail

Name: head

Syntax: head [option][file]

Purpose: output first part of the file.

Example: head abc


If we want to display first 15 lines use head -15 abc

Name: tail

Syntax: tail [option][file]

Purpose: output last part of the file

Description: it prints the cast part of the file

Example: tali.abc
Cat abc
562
561
563
564
565
566
567
568
569
570
571

UNIX & SHELL PROGRAMMING MANUAL 39


572
573
574
575
Head -3 abc
562
561
563

Head -4 abc
562
561
563
564

Tail -6
570
571
572
573
574
575

Tail -3 abc
573
574
575

UNIX & SHELL PROGRAMMING MANUAL 40


WEEK 16

Execute the following utility commands


1. Common 2. Compare
Common
Name: comm

Purpose: to find lines that are identical in two files

Description: it compare the files line by line and display the results in three
column contains lines which are unique the center column contains unique
lines in file2 and the right column contains line found in both files.

Syntax: comm. Options file1 file2

Example: comm Comm1 comm2


One same
Two same
Different comm1
Different comm2
Cmp

Name:cmp

purpose: the cmp command examines two

description: the action it takes depends on the option code when cmp
command is executed with out any options it stops at the first byte that is
different.
$ cat cmpfile1
123456
7890
$ cmp cmpfile1 cmpfile1.cpy
$ cat cmpfile2
123456
As9u
$cmp cmpfile1 cmpfile2

UNIX & SHELL PROGRAMMING MANUAL 41


Cmpfile1 cmpfile2 differ:8,line2
WEEK 17

Aim: Write a command s to implement input output error redirection.

Redirecting input:

We can redirect the standard input from the keyboard to any text file the
input redirection operator is the less than characters (<).

Syntax: command 0<files1

Or
Command<file1

Redirecting output

When we redirect standard standard output the commands output is copied


to a file rather than displayed on monitor the output redirection operator is
greater than chatacter (>).

Syntax: command 1>file1 or command >file1


command 1>|file1 or command >|file1
command 1>>file1 or command >>file1

example:

1. who>whooct2
ksh:whooct2:file already exists

1. who >|whooct2

$ more whooct2
Abc 52408 ttyq3 oct 2 15:24 (atc2west -17/atc.fhda)

UNIX & SHELL PROGRAMMING MANUAL 42


Redirecting errors:

One of the difficulties with the standard errors stream is that it is by


default combined with standard output stream on the minitor

Example: $ ls –l file1 nofile


Cannot access nofile:no such file or redirectory.
-rw-r—r-- |gilberg staff 1234 oct 218:16 file1

UNIX & SHELL PROGRAMMING MANUAL 43


WEEK 18

Write a sed script to perform the following


a) count the no of lines
b) delete the first line of a file
c) delete the last line of a file
d) display the select line number
e) delete all blank lines of a file

a) Aim: count no of lines


$ sed –f countlines.sed filename

Example: input
This is raining today
Today is very hot
God morning

Output:

The no of lines are 3

b) Aim: delete first line of a file:

To delete first line the syntax is as follows

Syntax: sed ‘id’ file1

Input:
Raj 1234 abc
Ram 7892 xyz
Ram 7782 ykm
Output:
Ram 7892 xyz
Ram 7782 ykm

c) Aim:delete last line of a file

UNIX & SHELL PROGRAMMING MANUAL 44


im

sed ‘$d’ file1


input:
Raj 1234 abc
Ram 7892 xyz
Rani 6672 pqr
Rash 7782 ykm

Output:

Raj 1234 abc


Ram 7892 xyz
Rani 6672 pqr

d) Aim: display the select lines:

sed ‘3,4,2’ file1.


Input:

Raj 1234 abc


Ram 7892 xyz
Rash 7782 ykm
Rani 6672 pqr

Output:

Rash 7782 ykm


Rani 6672 pqr

d) Aim: delete all blank lines:

sed ‘/$/d’ file1

UNIX & SHELL PROGRAMMING MANUAL 45


Input:
Raj 1234 abc
Ram 7892 xyz
Rash 7782 ykm
Rani 6672 pqr

Output:
There are no blank lines.

UNIX & SHELL PROGRAMMING MANUAL 46


WEEK 19

Aim: Write an awk script to find sum of numbers record wise

$ awk –f total.awk total.dat


BEGIN{print “print totals”}
{total=$1+$2+$3}
{print $1 “+”$2”+”$3”+”total}
END{print”end totals”}

Input:

22 78 44
66 31 70
52 30 44
88 31 66

Output:

Print totals
22+78+44=144
66+31+70=167
52+30+44=126
88+31+66=185
End totals

UNIX & SHELL PROGRAMMING MANUAL 47


WEEK 20

Aim: write a shell script to perform arithmetic operations on two numbers

$ echo “enter two numbers a,b”


Read a
Read b
$ echo “enter your choice”
Read ch
Case “$ch”in
1. sum=$a+$b
echo “sum is:”$sum
2. diff=$a-$b
echo “difference is :”$diff
3. mul=$a*$b
echo “multiplication is :”$mul
4. divide=$a/$b
echo ”division is :”$divide
5. moddivide=$a%$b
echo “modulodivision is:”$moddivide
echo “enter invalid option
echo “enter correct choice”
esac

Output:

enter two numbers a,b


4
5
Enter your choice 1
Sum is : 9
Enter your choice 3
Multiplication is :20

UNIX & SHELL PROGRAMMING MANUAL 48

You might also like