You are on page 1of 52

What is UNIX?

UNIX is an operating system which was first developed in the 1960s, and has been under constant development ever since. By operating system, we mean the suite of programs which make the computer work. It is a stable, multi-user, multi-tasking system for servers, desktops and laptops. UNIX systems also have a graphical user interface (GUI) similar to Microsoft Windows which provides an easy to use environment. However, knowledge of UNIX is required for operations which arent cover ed by a graphical program, or for when there is no windows interface available, for example, in a telnet session. Types of UNIX There are many different versions of UNIX, although they share common similarities. The most popular varieties of UNIX are Sun Solaris, GNU/Linux, and MacOS X. The UNIX operating system The UNIX operating system is made up of three parts; the kernel, the shell and the programs.

The kernel
The kernel of UNIX is the hub of the operating system: it allocates time and memory to programs and handles the filestore and communications in response to system calls. As an illustration of the way that the shell and the kernel work together, suppose a user types rm myfile (which has the effect of removing the file myfile). The shell searches the filestore for the file containing the program rm, and then requests the kernel, through system calls, to execute the program rm on myfile. When the process rm myfile has finished running, the shell then returns the UNIX prompt % to the user, indicating that it is waiting for further commands.

The shell
The shell acts as an interface between the user and the kernel. When a user logs in, the login program checks the username and password, and then starts another program called the shell. The shell is a command line interpreter (CLI). It interprets the commands the user types in and arranges for them to be carried out. The commands are themselves programs: when they terminate, the shell gives the user another prompt (% on our systems). The adept user can customise his/her own shell, and users can use different shells on the same machine. Staff and students in the school have the tcsh shell by default. The tcsh shell has certain features to help the user inputting commands. Filename Completion By typing part of the name of a command, filename or directory and pressing the [ Tab] key, the tcsh shell will complete the rest of the name automatically. If the shell finds more than one name beginning with those letters you have typed, it will beep, prompting you to type a few more letters before pressing the tab key again. History The shell keeps a list of the commands you have typed in. If you need to repeat a command, use the cursor keys to scroll up and down the list or type history for a list of previous commands. Files and processes Everything in UNIX is either a file or a process. A process is an executing program identified by a unique PID (process identifier). A file is a collection of data. They are created by users using text editors, running compilers etc. Examples of files:

a document (report, essay etc.) the text of a program written in some high-level programming language instructions comprehensible directly to the machine and incomprehensible to a casual user, for example, a collection of binary digits (an executable or binary file); a directory, containing information about its contents, which may be a mixture of other directories (subdirectories) and ordinary files.

Basic UNIX Commands


alias back cat C-d C-q Allows you to substitute a preferred name for a UNIX command. Move back to the directory you were in before your last cd command. Concatenate an input file to an output file. Can be used to create a new file. Under cat, tells the program that you are done entering information. Under cat, tells the program to resume scrolling after a C-s.

C-s -Under cat, tells the program to pause cd Move to a new directory (change directory).

cp head jobs kill less b y g G lp lpstat ls ls -a ls -l ls -F man mkdir more Space Bar Return q mv passwd ps pwd rm

Copy a file to another directory. Displays the first ten lines of a file. Tells you what jobs are in the background. Terminates a background job. Similar to more, less displays the contents of a file but allows backwards movement. Under less, scrolls back one page. Under less, scrolls back one line. Under less, jumps back to the start of the file. Under less, jumps to the end of the file. Print command that prints output horizontally. Shows you how many print jobs are queued to the printer. Displays the contents of a directory. Displays files that start with a (.) as well as the rest of the contents of the directory. Displays the same files as ls but includes more information. Tells whether a file listed in an ls is an executable program, directory, or file. Displays short message about a particular UNIX command (e.g. man ls). The create directory command. Displays the first screens worth of a file. Under more, scrolls to the next page. Under more scrolls one line. Under more, quits displaying the file and returns to UNIX Move a file from one directory to another. Change your password. lists out all of the processes that are running on your machine. Print out the current directory. The remove command for eliminating files.

-r A switch for the rm command that allows you to remove all files and directories in a particular directory, and then remove the directory itself. rmdir The remove directory command.

Starting vi and Saving Files


vi filename start editing filename , create it if necessary Saving the file youre working on and/or leaving vi: :wq write the file to disk and quit :q! quit without saving any changes :w! newfile write all lines from the entire current file into the file newfile, overwriting any existing newfile :n,m w! newfile write the lines from n to m, inclusive, into the file newfile, overwriting any existing newfile

Useful vi Commands Cut/Paste Commands:

x dw dd D

delete delete delete delete

one the the all

character (destructive backspace) current word (Note: ndw deletes n numbered words) current line (Note: ndd deletes n numbered lines) content to the right of the cursor

d$ :u p,P location J "[a-z]nyy "[a-z]p/P line

same as above undo last command paste line starting one line below/above current cursor combine the contents of two lines yank next n lines into named buffer [a-z] place the contents of selected buffer below/above the current

Extensions to the Above Commands:

:3,18d 16,25m30 23,29co62

delete lines 3 through 18 move lines 16 through 25 to after line 30 copy specified lines and place after line 62

Cursor Relocation commands:

:[n] shift g h/l/j/k ^f/^b ^u/^d $ 0

goto line [n] place cursor on last line of text move cursor left, right, down and up move forward, backward in text, one page move up, down one half page move to end of line move to beginning of line

Extensions to the Above:

b words) e ( )

move backwards one word (Note: nb moves back n number of move to end of current word move to beginning of curent block move to the end of current block

Searching and Substitution commands:

/ [string] ? [string] n N cw c$ c0 :1,$s/s1/s2/g r

search forward for string search backwards for string repeat last search repeat search in opposite direction change the contents of the current word, (use ESC to stop replacement mode) Replace all content to the right of cursor (exit replacement mode with ESC) Replace all content to the left of cursor (exit with ESC) (Yow!) global replacement of string1 with string2 replace current character with next character typed

Entering the Insert Mode:

Begin inserting text at current cursor location

I a A o/O ESC
Exiting and Entering vi

Begin inserting text at the beginning of the current line Begin appending text, one character to the right of current cursor location Begin appending text at the end of the current line Begin entering text one line below\above current line Exit insertion mode and return to command mode

ZZ :wq :e! :q made) :w

save file and exit VI same as above return to last saved version of current file quit without save, (Note :q! is required if changes have been write without exit (:w! to force write)

Miscellaneous Commands: :1,10w file write lines 1 through 10 to file newfile :340,$w >> file write lines 340 through the end of the file and append to file newfile :sh escape temporarily to a shell ^d return from shell to VI :![command] execute UNIX command without leaving VI :r![command] read output of command into VI :r[filename] read filename into VI :$r newfile read in newfile and attach at the end of current document :r !sort file read in contents of file after it has been passed through the UNIX sort :n open next file (works with wildcard filenames, ex: vi file*) :^g list current line number :set number show line numbers :set showinsert show flag ("I") at bottom of screen when in insert mode :set all display current values of VI variables :set ai set autoindent; after this enter the insert mode and tab, from this point on VI will indent each line to this location. Use ESC to stop the indentations. ^T set the autoindent tab one tab stop to the right ^D set the autoindent tab one stop to the left :set tabstop=n sets default tab space to number n >> shift contents of line one tab stop to the right << shift contents of line one tab stop to the left

Entering Text
To begin entering text in an empty file, you must first change from the command mode to the insert mode. To do this, type the letter i. When you start typing, anything you type will be entered into the file. Type a few short lines and hit Return at the end of each of line. Unlike word processors, vi does not use word wrap. It will break a line at the edge of the screen. If you make a mistake, you can use the Backspace key to remove your errors. If the Backspace key doesnt work properly on your system, try using the Ctrl h key combination.

Cursor Movement
You must be in command mode if you wish to move the cursor to another position in your file. If youve just finished typing t ext, youre still in insert mode and will need to press ESC to return to the command mode.

Moving One Character at a Time


Try using your direction keys to move up, down, left and right in your file. Sometimes, you may find that the direction keys dont work. If that is the case, to move the cursor one character at the time, you may use the h, j, k, and l keys. These keys move you in the following directions:

h j

left one space down one space

l k

right one space up one space

If you move the cursor as far as you can in any direction, you may see a screen flash or hear a beep.

Moving among Words and Lines


While these four keys (or your direction keys) can move you just about anywhere you want to go in your file, there are some shortcut keys that you can use to move a little more quickly through a document. To move more quickly among words, you might use the following:

w b e

moves moves word, moves

the cursor forward one word the cursor backward one word (if in the middle of a b will move you to the beginning of the current word). to the end of a word.

To build on this further, you can precede these commands with a number for greater movement. For example, 5w would move you forward five words; 12b would move you backwards twelve words. [You can also use numbers with the commands mentioned earlier. For example, 5j would move you down 5 characters.]

Command Keys and Case


You will find when using vi that lower case and upper case command keys are interpreted differently. For example, when using the lower case w, b, and e commands, words will be defined by a space or a punctuation mark. On the other hand, W, B, and E commands may be used to move between words also, but these commands ignore punctuation.

Shortcuts
Two short cuts for moving quickly on a line include the $ and the 0 (zero) keys. The $ key will move you to the end of a line, while the 0 will move you quickly to the beginning of a line.

Screen Movement
To move the cursor to a line within your current screen use the following keys:

H M L

moves the cursor to the top line of the screen. moves the cursor to the middle line of the screen. moves the cursor to the last line of the screen.

To scroll through the file and see other screens use:

ctrl-f ctrl-b ctrl-u ctrl-d

scrolls scrolls scrolls scrolls

down one screen up one screen up a half a screen down a half a screen

Two other useful commands for moving quickly from one end to the other of a document are Gto move to the end of the file and 1G to move to the beginning of the file. If you precede Gwith a number, you can move to a specific line in the document (e.g. 15G would move you to line 15).

Moving by Searching

One method for moving quickly to a particular spot in your file is to search for specific text. When you are in command mode, type a / followed the text you wish to search for. When you press Return, the cursor will move to the first incidence of that string of text. You can repeat the search by typing n or search in a backwards direction by using N.

Basic Editing
To issue editing commands, you must be in command mode. As mentioned before, commands will be interpreted differently depending upon whether they are issued in lower or upper case. Also, many of the editing commands can be preceded by a number to indicate a repetition of the command.

Deleting (or Cutting) Characters, Words, and Lines


To delete a character, first place your cursor on that character. Then, you may use any of the following commands:

x X dw dd D

deletes deletes deletes deletes deletes

the character under the cursor. the character to the left of your cursor. from the character selected to the end of the word. all the current line. from the current character to the end of the line.

Preceding the command with a number will delete multiple characters. For example, 10x will delete the character selected and the next 9 characters; 10X will delete the 10 characters to the left of the currently selected character. The command 5dw will delete 5 words, while 4dddeletes four lines.

Pasting Text using Put


Often, when you delete or cut text, you may wish to reinsert it in another location of the document. The Put command will paste in the last portion of text that was deleted since deleted text is stored in a buffer. To use this command, place the cursor where you wish the deleted text to appear. Then use p to reinsert the text. If you are inserting a line or paragraph use the lower case p to insert on the line below the cursor or upper case P to place in on the line above the cursor.

Copying Text with Yank


If you wish to make a duplicate copy of existing text, you may use the yank and put commands to accomplish this function. Yank copies the selected text into a buffer and holds it until another yank or deletion occurs. Yank is usually used in combination with a word or line object such as the ones shown below:

yw yy

copies a word into a buffer (7yw copies 7 words) copies a line into a buffer (3yy will copy 3 lines)

Once the desired text is yanked, place the cursor in the spot in which you wish to insert the text and then use the put command (p for line below or P for line above) to insert the contents of the buffer.

Replacing or Changing Characters, Words, and Lines


When you are using the following commands to replace text, you will be put temporarily into insert mode so that you can change a character, word, line, or paragraph of text.

r replaces the current character with the next character you enter/type. Once you enter the character you are returned to command mode. R puts you in overtype mode until you hit ESC which will then return you to command mode. cw changes and replaces the current word with text that you type. A dollar sign marks the end of the text you're changing. Pressing ESC when you finish will return you to command mode.
Inserting Text
If you wish to insert new text in a line, first position the cursor to the right of where you wish the inserted text to appear. Type i to get into insert mode and then type in the desired text (note that the text is inserted before the cursor). Press ESC to return to command mode.

Inserting a Blank Line

To insert a blank line below the line your cursor is currently located on, use the o key and then hit ESC to return to the command mode . Use O to insert a line above the line the cursor is located on.

Appending Text
You can use the append command to add text at any place in your file. Append ( a) works very much like Insert (i) except that it insert text after the cursor rather than before it. Append is probably used most often for adding text to the end of a line. Simply place your cursor where you wish to append text and press a. Once youve finished appending, press ESC to go back to command mode.

Joining Lines
Since vi does not use automatic word wrap, it is not unusual in editing lines to end up with lines that are too short and that might be improved if joined together. To do this, place your cursor on the first line to be joined and type J. As with other commands, you can precede Jwith a number to join multiple lines (4J joins 4 lines).

Undoing
Be sure to remember this command. When you make a mistake you can undo it. DO NOTmove the cursor from the line where you made the change. Then try using one of the following two commands:

u U moved

undoes the last change you made anywhere in the file. Using u again will "undo the undo". undoes all recent changes to the current line. You can not have from the line to recover the original line.

Closing and Saving Files


When you edit a file in vi, you are actually editing a copy of the file rather than the original. The following sections describe methods you might use when closing a file, quitting vi, or both.

Quitting and Saving a File


The command ZZ (notice that it is in uppercase) will allow you to quit vi and save the edits made to a file. You will then return to a Unix prompt. Note that you can also use the following commands:

:w :q :wq

to save case of to quit to quit

your file but not quit vi (this is good to do periodically in machine crash!). if you haven't made any edits. and save edits (basically the same as ZZ).

Quitting without Saving Edits


Sometimes, when you create a mess (when you first start using vi this is easy to do!) you may wish to erase all edits made to the file and either start over or quit. To do this, you can choose from the following two commands:

:e! :q!

reads the original file back in so that you can start over. wipes out all edits and allows you to exit from vi.

Categories:GE2155 computer labTags:CP LAB II, UNIX LAB

GE2155 COMPUTER PRACTICE LABORATORY II


February 2, 2010SUDHAKAR2 comments

GE2155 COMPUTER PRACTICE LABORATORY II LIST OF EXPERIMENTS 1. UNIX COMMANDS Study of UNIX OS Basic Shell Commands Unix Editor

0 1 2 2 15

2. SHELL PROGRAMMING Simple Shell program Conditional Statements Testing and Loops 3. C PROGRAMMING ON UNIX Dynamic Storage Allocation-Pointers-Functions-File Handling TOTAL: 45 PERIODS HARDWARE / SOFTWARE REQUIREMENTS FOR A BATCH OF 30 STUDENTS

15

15

Hardware
1 UNIX Clone Server 33 Nodes (thin client or PCs) Printer 3 Nos. Software OS UNIX Clone (33 user license or License free Linux) Compiler C

CP Lab II Program
April 21, 2012SUDHAKARLeave a comment

Display the files starting with the alphabet echo enter the alphbet read ch find -name $ch* -print > tmp if [ -s tmp ] then echo the files starting with $ch are cat tmp else echo there are no files starting with $ch fi rm tmp find xn echo -n enter the value of x read x echo -n enter the power of x read n sum=1 i=1 while [ $i -le $n ] do sum=`expr $sum \* $x` i=`expr $i + 1` done echo the value of $x power $n is $sum Find the Class of the Character if test $# -ne 1 then echo enter the character data exit 1 fi char=$1 case $char in [0-9] ) echo the given arg is digit :$char;; [a-z] ) echo the given arg is lowercase letter $char;; [A-Z] ) echo the given arg is uppercase letter $char;; ? ) echo the given arg is special character $char;; * ) echo enter a single character;; esac Copy one string to another string echo -n enter the stirng read as l=`echo $as | wc -c` i=1 while [ $i -le $l ] do es2=`echo $as | cut -c $i` i=`expr $i + 1`

cs3=`echo $cs3$es2` done echo the actual string is $as echo the copied string is $cs3 Count the number of digit echo -n enter the number read n sd=0 while [ $n -gt 0 ] do a=`expr $n % 10` sd=`expr $sd + 1` n=`expr $n / 10` done echo the total number of digits in the given number is $sd Calculate the HRA echo -n enter employees basic salary read bsal if [ $bsal -gt 5000 ] then hra=`expr $bsal / 5` echo HRA = $hra elif [ $bsal -ge 4000 -a $bsal -le 5000 ] then hra=`expr $bsal / 7` echo HRA = $hra else hra=`expr $bsal / 10` echo HRA = $hra fi Find the Length of the String echo -n enter the string read string l=`expr $string | wc -c` l=`expr $l 1` echo the length of the given string $string is $l Check the Login echo enter your login name read lname if [ $LOGNAME = $lname ] then echo your login name is $lname else echo your login name is not $lname current login name is $LOGNAME fi Occurrence of the Character in a String echo -n enter the string: read s1 echo -n enter the character to be searched read c1 l=`echo $s1 | wc -c` l=`expr $l 1` c=0 while [ $l -gt 0 ] do t=`echo $s1 | cut -c $l` if [ $t = $c1 ] then c=`expr $c + 1` fi l=`expr $l 1` done echo the total number of occurrence of $c1 char in the given stirng $s1 is $c

Display the Owner of the File echo -n enter the file name read name ls -l > tmp if (grep $name tmp > tmp1) then line=`cat tmp1 | tr -s | cut -d -f3` ##echo line:$line fi check=`echo $line | wc -c` echo $check if test $check -gt 1 then echo the owner of the file $name is $line else echo the file $name doest exists fi Change the file permission echo enter the file name read fname ls -l $fname echo do you want to assign read,write and execute for particular file[ y/n] read ch if [ $ch = y ] then chmod 777 $fname echo permissions are given ls -l $fname else echo permission are not given fi Replace the character in a string echo -n enter the string read s1 echo -n enter the char to be replaced read ocr echo -n enter the new char for replacement read ncr l=`echo $s1 | wc -c` l=`expr $l 1` c=0 j=1 while [ $j -le $l ] do t=`echo $s1 | cut -c $j` if [ $t = $ocr ] then ns=`echo $ns$ncr` else ns=`echo $ns$t` fi j=`expr $j + 1` done echo the old string is $s1 echo the new string is $ns Reverse the given number echo enter the number read n rn=0 while [ $n -gt 0 ] do a=`expr $n % 10` rn=`expr $rn * 10 + $a`

n=`expr $n / 10` done echo the reversed given number is $rn Calculate the Simple interest echo -n enter the principal amount : Rs read p echo -n enter the number of years read n echo -n enter the rate of interest read r si=`expr scale=2; ($p * $n * $r) / 100 | bc` echo simple interest = Rs.$si Find square and cube echo enter the value read a sq=`expr $a \* $a` cu=`expr $sq \* $a` echo square of $a is $sq echo cube of $a is $cu STUDENT DETAILS echo STUDENT DETAILS echo enter the name read name echo enter the roll number read rno echo enter the marks of 3 subjects read m1 m2 m3 total=`expr $m1 + $m2 + $m3` avg=`expr $total / 3` echo NAME $name echo ROLL NUMBER $rno echo MARK1 $m1 echo MARK2 $m2 echo MARK3 $m3 echo TOTAL $total echo AVERAGE $avg if [ $avg -ge 90 ] then echo GRADE A elif [ $avg -ge 80 ] then echo GRADE B elif [ $avg -ge 70 ] then echo GRADE C elif [ $avg -ge 60 ] then echo GRADE D else echo GRADE E fi OUTPUT enter the name A enter the roll number 10 enter the marks of 3 subjects 60 70 80 NAME A ROLL NUMBER 10 MARK1 60 MARK2 70

MARK3 80 TOTAL 210 AVERAGE 70 GRADE C TO FIND SUM OF FIRST N NATURAL NUMBER echo enter the value for n read n i=1 sum=0 until [ $i -gt $n ] do sum=`expr $sum + $i` i=`expr $i + 1` done echo sum of $n natural number $sum OUTPUT enter the value for n 4 sum of 4 natural number 10 TO FIND NUMBER OF VOWELS IN GIVEN STRING echo enter the string read s1 l=`echo $s1 | wc -c` l=`expr $l 1` v=0 while [ $l -gt 0 ] do t=`echo $s1 | cut -c $l` if [ $t = a ] then v=`expr $v + 1` elif [ $t = e ] then v=`expr $v + 1` elif [ $t = i ] then v=`expr $v + 1` elif [ $t = o ] then v=`expr $v + 1` elif [ $t = u ] then v=`expr $v + 1` fi OUTPUT enter the string engineer the total vowels 4 SUM OF DIGITS OF A NUMBER echo ENTER THE NUMBER read a sum=0 i=0 while [ $a -ne 0 ] do i=`expr $a % 10` a=`expr $a / 10` sum=`expr $sum + $i` done echo THE SUM OF THE DIGITS IS $sum

SAMPLE OUTPUT ENTER THE NUMBER 45 THE SUM OF THE DIGITS IS 9 SUM AND PRODUCT OF TWO NUMBERS Echo enter the number read a b c = ` expr $a + $b` d = `expr $a \* $b` echo the sum is : $c echo the product is: $d OUTPUT enter the number 2 4 the sum is : 6 the product is: 8 String operation PROGRAM echo ENTER THE CHOICE echo 1.STRING LENGTH echo 2.STRING CONCATENATION echo 3.STRING COMPARISION read ch case $ch in 1)c=$1 | wc -c c=`expr $1 -1` echo LENGTH OF $1 IS $c;; 2)c=`expr$1$2` echo CONCATENATED STRING IS $c;; 3)if [ $1 -eq $2 ] then echo STRINGS ARE EQUAL else echo STRINGS ARE NOT EQUAL fi;; *)echo WRONG CHOICE Esac OUTPUT [eeepss08@eeelinum]$sh string.sh super man ENTER THE CHOICE 1.STRING LENGTH 2.STRING CONCATENATION 3.STRING COMPARISON 2 THE CONCATENATED STRING IS SUPERMAN STRING PALINDROME echo Enter a string read str l=`expr $str | wc -c` l=`expr $l 1` while [ $l -gt 0 ] do s=`expr $str | cut -c $l` new=`expr $new$s` l=`expr $l 1` done if [ $new = $str ] then echo It is a Palindrome else echo It is not a Palindrome

fi SAMPLE OUTPUT Enter a string refer It is a Palindrome FACTORIAL OF A GIVEN NUMBER echo enter the limit read a f=0 s=1 t=`expr $f + $s` echo the fibonacci series is echo $f echo $s i=1 while [ $i -le $a ] do echo $t f=$s s=$t t=`expr $f + $s` i=`expr $i + 1` done OUTPUT enter the limit 5 the fibonacci series is 0 1 1 2 3 5 8 FACTORIAL OF A GIVEN NUMBER echo enter the number read a fact=1 i=1 while [ $i -le $a ] do fact=`expr $fact \* $i` i=`expr $i + 1` done echo the factorial of $a is $fact OUTPUT enter the number 5 the factorial of 5 is 120 COUNTING VOWELS echo enter the string read str l=`expr $str | wc -c` l=`expr $l 1` while [ $l -gt 0 ] do s=`expr $str | cut -c$l` if [ $s = a -o $s = A ]

then count=`expr $count + 1` elif [ $s = e -o $s = E ] then count=`expr $count + 1` elif [ $s = i ] then count=`expr $count + 1` elif [ $s = o ] then count=`expr $count + 1` elif [ $s = u ] then count=`expr $count + 1` fi l=`expr $l 1` done if [ $count -eq 0 ] then echo No Vowel else echo $count fi ARITHMETIC OPERATIONS USING SWITCH CASE h=1 while [ $h -eq 1 ] do echo enter two numbers read a b echo enter your choice echo 1.add 2.subtract 3.multiply 4.divide read ch case $ch in 1)c=`expr $a + $b` echo the sum is $c;; 2)c=`expr $a $b` echo the difference is $c;; 3)c=`expr $a \* $b` echo the product is $c;; 4)c=`expr $a / $b` echo the quotient is $c;; echo wrong choice entered;; echo enter 1 to continue read h done OUTPUT enter two numbers 33 enter your choice 1.add 2.subtract 3.multiply 4.divide 1 the sum is 6 enter 1 to continue 1 enter two numbers 42 enter your choice 1.add 2.subtract 3.multiply 4.divide 3 the product is 8 enter 1 to continue 2

Categories:GE2155 computer lab

GE 2155 COMPUTER PRACTICE LABORATORY


February 19, 2010SUDHAKARLeave a comment

GE2155 COMPUTER PRACTICE LABORATORY II 0 1 2 2 LIST OF EXPERIMENTS 1. UNIX COMMANDS 15 Study of UNIX OS Basic Shell Commands Unix Editor 2. SHELL PROGRAMMING 15 Simple Shell program Conditional Statements Testing and Loops 3. C PROGRAMMING ON UNIX 15 Dynamic Storage Allocation-Pointers-Functions-File Handling TOTAL: 45 PERIODS HARDWARE / SOFTWARE REQUIREMENTS FOR A BATCH OF 30 STUDENTS

Hardware
1. 2. 3. 1. 2. 1 UNIX Clone Server 33 Nodes (thin client or PCs) Printer 3 Nos. Software OS UNIX Clone (33 user license or License free Linux) Compiler C MISRIMAL NAVAJEE MUNOTH JAIN ENGINEERING COLLEGE

THORAPAKKAM, CHENNAI-600 096


DEPARTMENT OF INFORMATION TECHNOLOGY
Code/Subject: GE 2155 COMPUTER PRACTICE LABORATORY II List of experiments

INDEX Sl. Name of the Experiments No 1 Study of UNIX Operating system 2 Study of Basic Shell Commands 3 Study of UNIX vi editor 4 1. Write a shell program to find sum and product for the given two numbers. 2. Write a shell program to check whether the given number is odd or even. 3. Write a shell program to generate student mark details. 5 1. Write a shell program to perform arithmetic operations. 2. Write a shell program to read N numbers from the user with command line arguments and display its sum. 3. Write a shell program to find the sum of first N natural numbers. 6 1. Write a shell program to find the factorial of a given numbers. 2. Write a shell program to generate Fibonacci Series. 3. Write a shell program to count the number of vowels in the given String. 7 1. Write a C program to perform linear search using function. 2. Write a C program to perform binary search using function. 8 1. Write a C program to print the elements of an array using pointers. 2. Write a C program to find the length of the string. 9 1. Write a C program to concatenate two strings. 2. Write a C program to copy the contents of one string to another.

Page No.

10 1. Write a C program to copy the contents of one file to another. 2. Write a C program to count the characters and lines in a file.
Study of UNIX OS EX. NO. : DATE : AIM: To study the UNIX OS.

What is UNIX? UNIX is an operating system which was first developed in the 1960s, and has been under constant development ever since. By operating system, we mean the suite of programs which make the computer work. It is a stable, multi-user, multi-tasking system for servers, desktops and laptops. UNIX systems also have a graphical user interface (GUI) similar to Microsoft Windows which provides an easy to use environment. However, knowledge of UNIX is required for operations which arent covered by a graphical program, or for when there is no windows interface available, for example, in a telnet session.
Types of UNIX There are many different versions of UNIX, although they share common similarities. The most popular varieties of UNIX are Sun Solaris, GNU/Linux, and MacOS X. The UNIX operating system

The UNIX operating system is made up of three parts; the kernel, the shell and the programs. The kernel The kernel of UNIX is the hub of the operating system: it allocates time and memory to programs and handles the filestore and communications in response to system calls. As an illustration of the way that the shell and the kernel work together, suppose a user typesrm myfile (which has the effect of removing the file myfile). The shell searches the filestore for the file containing the program rm, and then requests the kernel, through system calls, to execute the program rm on myfile. When the process rm myfile has finished running, the shell then returns the UNIX prompt % to the user, indicating that it is waiting for further commands. The shell The shell acts as an interface between the user and the kernel. When a user logs in, the login program checks the username and password, and then starts another program called the shell. The shell is a command line interpreter (CLI). It interprets the commands the user types in and arranges for them to be carried out. The commands are themselves programs: when they terminate, the shell gives the user another prompt (% on our systems). The adept user can customise his/her own shell, and users can use different shells on the same machine. Staff and students in the school have the tcsh shell by default. The tcsh shell has certain features to help the user inputting commands. Filename Completion By typing part of the name of a command, filename or directory and pressing the [Tab] key, the tcsh shell will complete the rest of the name automatically. If the shell finds more than one name beginning with those letters you have typed, it will beep, prompting you to type a few more letters before pressing the tab key again. History The shell keeps a list of the commands you have typed in. If you need to repeat a command, use the cursor keys to scroll up and down the list or type history for a list of previous commands.
Files and processes

Everything in UNIX is either a file or a process. A process is an executing program identified by a unique PID (process identifier).

A file is a collection of data. They are created by users using text editors, running compilers etc. Examples of files:

a document (report, essay etc.) the text of a program written in some high-level programming language instructions comprehensible directly to the machine and incomprehensible to a casual user, for example, a collection of binary digits (an executable or binary file);

a directory, containing information about its contents, which may be a mixture of other directories (subdirectories) and ordinary files. The Directory Structure All the files are grouped together in the directory structure. The file-system is arranged in a hierarchical structure, like an inverted tree. The top of the hierarchy is traditionally called root (written as a slash / ) Most UNIX file system types have a similar general structure, although the exact details vary quite a bit. The central concepts are superblock, inode, data block, directory block, and indirection block. The superblock contains information about the file system as a whole, such as its size (the exact information here depends on the file system). An inode contains all information about a file, except its name. The name is stored in the directory, together with the number of the inode. A directory entry consists of a filename and the number of the inode which represents the file. The inode contains the numbers of several data blocks, which are used to store the data in the file. There is space only for a few data block numbers in the inode, however, and if more are needed, more space for pointers to the data blocks is allocated dynamically. These dynamically allocated blocks are indirect blocks; the name indicates that in order to find the data block, one has to find its number in the indirect block first. Like UNIX, Linux chooses to have a single hierarchical directory structure. Everything starts from the root directory, represented by /, and then expands into sub-directories instead of having so-called drives. In the Windows environment, one may put ones files almost anywhere: on C drive, D drive, E drive etc. Such a file system is called a hierarchical structure and is managed by the programs themselves (program directories), not by the operating system. On the other hand, Linux sorts directories descending from the root directory / according to their importance to the boot process. Linux, like Unix also chooses to be case sensitive. What this means is that the case, whether in capitals or not, of the characters becomes very important. This feature accounts for a fairly large proportion of problems for new users especially during file transfer operations whether it may be via removable disk media such as floppy disk or over the wire by way of FTP.

The image below shows the file system of Linux

The following bin/ dev/ home/ lost+found/ proc/ sbin/ usr/ boot/ etc/ lib/ mnt/ root/ tmp/ var/ are explained in detail. /sbin This directory contains all the binaries that are essential to the working of the system. These include system administration as well as maintenance and hardware configuration programs.

/bin In contrast to /sbin, the bin directory contains several useful commands that are used by both the system administrator as well as non-privileged users. /boot This directory contains the system.map file as well as the Linux kernel. Lilo places the boot sector backups in this directory. /dev This is a very interesting directory that highlights one important characteristic of the Linux filesystem everything is a file or a directory. Look through this directory and you should see hda1, hda2 etc, which represent the various partitions on the first master drive of the system. /dev/cdrom and /dev/fd0 represent your CDROM drive and your floppy drive. /etc This directory contains all the configuration files for your system. Your lilo.conf file lies in this directory as does hosts, resolv.conf and fstab. /home These are the user home directories, which can be found under /home/username. /lib This contains all the shared libraries that are required by system programs. Windows equivalent to a shared library would be a DLL file. /lost+found Linux should always go through a proper shutdown. Sometimes your system might crash or a power failure might take the machine down. Either way, at the next boot, a lengthy filesystem check using fsck will be done. Fsck will go through the system and try to recover any corrupt files that it finds. The result of this recovery operation will be placed in this directory. /mnt This directory usually contains mount points or sub-directories where you mount your floppy and your CD. /opt This directory contains all the software and add-on packages that are not part of the default installation. /proc This is a special directory on your system. /root We talked about user home directories earlier and well this one is the home directory of the user root. /tmp This directory contains mostly files that are required temporarily. /usr This is one of the most important directories in the system as it contains all the user binaries. /usr/src/linux contains the source code for the Linux kernel. /var This directory contains spooling data like mail and also the output from the printer daemon. The above content briefs about Linux and the file system of Linux.

BASIC COMMANDS IN UNIX


EX. NO. : DATE : AIM: To study the basic commands in UNIX.

COMMANDS:

1. TASK : To display the system date and time. COMMAND : date. SYNTAX : date. EXPLANATION: This command displays the current system date and time on the screen. OUTPUT : 2. TASK : To display the current month. COMMAND : date. SYNTAX : date +%m. EXPLANATION: This command displays the current month on the screen. OUTPUT : 3. TASK : To display the name of the current month. COMMAND : date. SYNTAX : date +%h. EXPLANATION: This command displays the name of the current month on the screen. OUTPUT : 4. TASK : To display the current system date. COMMAND : date. SYNTAX : date +%d. EXPLANATION: This command displays the current system date on the screen. OUTPUT : 5. TASK : To display the current system date (year). COMMAND : date. SYNTAX : date +%y. EXPLANATION: This command displays the current year on the screen. OUTPUT : 6. TASK : To display the current system time. COMMAND : date. SYNTAX : date +%H. EXPLANATION: This command displays the current system time (in hours) on the

screen. OUTPUT : 7. TASK : To display the current system time. COMMAND : date. SYNTAX : date +%M. EXPLANATION: This command displays the current system time (in minutes) on the screen. OUTPUT : 8. TASK : To display the current system time. COMMAND : date. SYNTAX : date +%S. EXPLANATION: This command displays the current system time (in seconds) on the screen. OUTPUT : 9. TASK : To display the calendar of the current month. COMMAND : calendar. SYNTAX : cal. EXPLANATION: This command displays the calendar of the current month on the screen. OUTPUT : 10. TASK : To display user-defined message. COMMAND : echo. SYNTAX : echo message. EXPLANATION: This command displays on the screen the argument of the echo command. OUTPUT : 11. TASK : To display the details of all users. COMMAND : who. SYNTAX : who. EXPLANATION : This command lists the information about all the users who have logged on to that system. OUTPUT : 12. TASK : To display the user detail. COMMAND : who. SYNTAX : whoami. EXPLANATION : This command displays information about the current user of the system on the screen. OUTPUT : 13. TASK : To create a directory. COMMAND : make directory. SYNTAX : mkdir. EXPLANATION : This command is used to create a new directory with the specified name. EXAMPLE : OUTPUT : 14. TASK : To change directory. COMMAND : change directory. SYNTAX : cd directory name. EXPLANATION : This command is used to switch from one directory to another. EXAMPLE : OUTPUT : 15. TASK : To delete a directory. COMMAND : remove directory. SYNTAX : rmdir directory name EXPLANATION : This command is used to delete the specified directory. EXAMPLE : OUTPUT :

16. TASK : To come out of a sub-directory. COMMAND : change directory. SYNTAX : cd .. EXPLANATION : This command helps in switching to the main directory. OUTPUT : 17. TASK : To list all the files and directories. COMMAND : list. SYNTAX : ls. EXPLANATION : This command displays all the files and directories of the system. OUTPUT : 18. TASK : To create a file. COMMAND : cat. SYNTAX : cat> file name. EXPLANATION : This command leads to the creation of a new file with the specified file name and contents. EXAMPLE : OUTPUT : 19. TASK : To view a file. COMMAND : cat. SYNTAX : cat file name. EXPLANATION : This command displays the contents of the specified file. EXAMPLE : OUTPUT : 20. TASK : To copy a file. COMMAND : copy. SYNTAX : cp sourcefile destinationfile. EXPLANATION : This command produces a copy of the source file and is stored in the specified destination file by overwriting its previous contents. EXAMPLE : OUTPUT : 21. TASK : To move a file. COMMAND : move. SYNTAX : mv sourcefile destinationfile. EXPLANATION : After moving the contents of the source file into destination file, the source file is deleted. EXAMPLE : OUTPUT : 22. TASK : To display / cut a column from a file. COMMAND : cut. SYNTAX : cut c no. filename. EXPLANATION : This command displays the characters of a particular column in the specified file. EXAMPLE : OUTPUT : . 23. TASK : To delete a file. COMMAND : remove. SYNTAX : rm file name. EXPLANATION : This command deletes the specified file from the directory. EXAMPLE : OUTPUT :

24. TASK : To retrieve a part of a file. COMMAND : head. SYNTAX : head -no. of rows file name. EXPLANATION : This command displays the specified no. of rows form the top of the specified file. EXAMPLE : OUTPUT : 25. TASK : To retrieve a file. COMMAND : tail. SYNTAX : tail -no. of rows file name. EXPLANATION : This command displays the specified no. of rows form the bottom of the specified file. EXAMPLE : OUTPUT : 26. TASK : To sort the contents of a file. COMMAND : sort. SYNTAX : sort file name. EXPLANATION : This command helps in sorting the contents of a file in ascending order. EXAMPLE : OUTPUT : . 27. TASK : To display the no. of characters in a file. COMMAND : word count. SYNTAX : wc file name. EXPLANATION : This command displays on the screen the no. of rows, words, and the sum of no. of characters and words. EXAMPLE : OUTPUT : 28. TASK : To display the calendar of a year. COMMAND : cal. SYNTAX : cal year. EXPLANATION : This command displays on the screen the calendar of the specified EXAMPLE : OUTPUT : Listing Directory Contents 1. Log in to the system. 2. Issue the command pwd . What is the path? ________________________________________________________________________ 3. Issue the command ls. What do you observe? ________________________________________________________________________ 4. Issue the command ls l . In an abbreviated form, what do you observe? ________________________________________________________________________ ________________________________________________________________________ 5. Issue the command ls a. In an abbreviated form, what do you observe? ________________________________________________________________________ ________________________________________________________________________ 6. Issue the command cd /var. 7. Issue the command pwd . What is the path? ________________________________________________________________________ 8. Issue the command ls. What do you observe?

year.

________________________________________________________________________ 9. Issue the command ls l . In an abbreviated form, what do you observe? ________________________________________________________________________ 10. Issue the command ls a. In an abbreviated form, what do you observe? ________________________________________________________________________ 11. Issue the command ls i . Record the inode value for each file and directory. inode filename inode filename ________________________________________________________________________ ________________________________________________________________________ Root In your own words, explain the meaning of: 1. The Root ________________________________________________________________________ 2. Administrator Root ________________________________________________________________________ 3. Home directory Root ________________________________________________________________________ 4. Group Root ________________________________________________________________________ 5. What is the difference between the user root and group root. ________________________________________________________________________ 1.

Beside the UNIX commands below, define what each command does. cd pwd ls cp echo rm mkdir rmdir Frequently used UNIX commands Command Result ls lists files in current working directory ls *.out ls -l pwd cd dirname cd .. lists all files in current directory that end in .out lists files giving details including file size displays full-path name of your current working directory on screen (stands for present working directory) changes directory to dirname changes directory to one above the current directory

cd mkdir dirname rmdir dirname cp filename newname cp ../filename . mv filename newname cat filename more filename

with no argument, takes you to your home directory creates new directory dirname removes empty directory dirname makes a copy of filename with the name newname copies filename in directory one tier above to current directory giving it the same name renames filename to newname (mv stands for move) displays contents of filename on screen displays filename contents one screen at a time (Enter key scrolls through file by line; space bar scrolls through by screen) displays first 10 lines of filename on screen displays last 10 lines of filename on screen deletes filename without double check (rm stands for remove) displays lines from filename containing string on screen runs job filename in the background sends job filename to queue (where qsub is a submission script file in your bin directory) lists jobs running on queue lists only your jobs deletes job with number job# from queue lists processes you have running lists all processes kills process with ID number pid# kills (with the sure kill signal) process with ID number pid# kills all processes you have running and logs you off displays manual page for command commandname lists manual pages for commands related to keyword prints filename on printer in room 4241
all rwx 4 2

head filename tail filename rm filename grep string filename ./ filename & qsub filename qstat qstat -a qdel job# ps ps -ef kill pid# kill -9 pid# kill -kill 0 man commandname man -k keyword lp filename chmod ### filename
owner rwx 4 2 1 group rwx 4 2 1

changes read, write, execute mode of filename Example: to set the privileges for filename so that the owner has the ability to read, overwrite and execute the file, the group has the ability toread and execute the file, and

1 sum numbers for each of the three categories of user

everyone else has no access to the file, use the command chmod 750 filename.

Ctrl+c Ctrl+h Ctrl+d

kills current operation delete (always works even when delete key doesnt) logout

UNIX: vi Editor
EX. NO. :

DATE :
AIM: To study the basic of vi Editor.

UNIX: vi Editor
General Introduction
The vi editor (short for visual editor) is a screen editor which is available on almost all Unix systems. Once you have learned vi, you will find that it is a fast and powerful editor. vi has no menus but instead uses combinations of keystrokes in order to accomplish commands. There are three basic modes of vi: Command mode This is the default when you enter vi. In command mode, most letters, or short sequences of letters, that you type will be interpreted as commands, without explicitly pressing Enter . If you press Esc when youre in command mode, your terminal will beep at you. This is a very good way to tell when youre in command mode. Insert mode In insert mode, whatever you type is inserted in the file at the cursor position. Type a(lowercase letter a, for append) to enter insert mode from command mode; press Escto end insert mode, and return to command mode. Line mode Use line mode to enter line oriented commands. To enter line mode from command mode, type a colon ( : ). Your cursor moves to the bottom of the screen, by a colon prompt. Type a line mode command, then press Enter. Any sensible command from the Unix line editor ex will work, and a few are good to know about. These commands are indicated in this handout by a colon in front of the command. Each time you use a line mode command, you must type a colon to enter line mode, then type the command by the colon prompt at the bottom of the screen, then press Enter when you finish typing the command. (The search commands starting with / and ? work similarly.

General Command Information


As mentioned previously, vi uses letters as commands. It is important to note that in general vi commands:

generally do not require a Return after you type the command. You will see some commands which start with a colon ( :). These commands are ex commands which are used by the ex editor. ex is the true editor which lies underneath vi in other words, vi is the interface for the ex editor. 1.

are case sensitive lowercase and uppercase command letters do different things are not displayed on the screen when you type them

1.

The vi editor has three modes: 1) command mode, 2) last-line mode, and 3) input mode. Note: The vi editor does not understand the mouse and only understands commands typed from the keyboard. The UNIX text editor, vi, is used by the UNIX administrator (superuser) to create or edit files. Usually these files require configuration information to host certain UNIX servers or I/O functions. Users can start a vi session by typing vi followed by the file name to be created or edited. In our example, we will create a file named linux. The vi editor will create a new file if the file does not already exist. If a file, in our example linux, does exist in our current directory, the vi editor will open linux for editing. Once we type vi linux and hit the enter key, we are placed in command mode where

communications is directed to the vi editor. Type the following command to initiate our vi session:
vi linux <enter>

1. 1. 1.

1.

You will be presented with a full, empty screen. Each line will begin with the tilde (~) symbol. The tilde is vis way of indicating that a line is empty i n its edit register. The vi editor uses the first 24 of 25 lines viewable on the terminal screen as insert lines. The last line (line number 25) is used for entering commands to the shell and is referred to as the last -line mode. In this space, our filename appears with the message linux and [new file]. When you open a file, the cursor is placed at the top, left corner of the sc reen. You are said to be in Command Mode. You can issue commands that act upon the text in the file. In the command mode, pressing a key does not show on the screen, but performs a function like moving the cursor to the next line or deleting a line. The command mode cannot be used to enter text. The keyboard space bar moves the cursor ahead one space at a time. The keyboard backspace key moves the cursor backwards one space at a time. To enter text, you must be in Insert Mode. There are ten (10) keys that place you in Insert Mode. Each key has an upper case and a lower case function. The quickest way to learn insert mode is to simply type a lower case i for insert. The following chart the shows 10 ways to enter Insert Mode:

Command i I a A o O rch R s S

Function

Inserts text to left of the cursor. Existing text shifted right Inserts text at beginning of line. Existing text shifted right Appends text to right of the cursor. Existing text shifted right Inserts text at end of the line Opens a line below the current line the cursor is on Opens line above the current line the cursor is on Replaces a single character (ch) under cursor. No [Esc] required Replaces text from cursor to right. Existing text overwritten Replaces character under cursor with any number of characters Replaces entire line that cursor is on
Important! To exit input mode, you must enter the [Esc] key. 1. The Last-line Mode is opened by pressing and holding the [shift] key and the [:] colon key simultaneously ([shift] + [colon]). If this fails to place you in Last-line mode, hit the escape <esc> key to move from insert mode to command mode. Upon entering this dual key -stroke combination, the cursor moves to the bottom, left corner of the screen and appears as a colon : . This mode allows the vi user to send commands to the actual UNIX shell. Commands used in the Last-line Mode write the contents of a file to the hard drive, reads contents into the existing file from another file, or quits the vi session. Once a command has been executed, the cursor moves back to the top, left of the screen. To move back to the top of the screen without executing a command, press the <esc> key. While in last-line mode (where we communicate with the shell and not with the vi editor), the following commands can be executed:

Last-line commands used to communicate with the UNIX/Linux shell:

Command :w

Function Writes file to hard drive and remains in editing mode

Writes file and quits editing mode

:wq :q :q! :w >> note1 :r <filename>

:n1, n2w customer.sql :.w customer.sql :$w customer.sql :!

[Crtl-z]

Writes file and quits editing mode Quits editing mode with no changes made to file Forces vi to quit and exits to the command-line shell Appends current file contents to new file, note1 Reads contents of <filename> into current vi file Writes selected lines, n1 through n2, to customer.sql Writes current line [.] to file, customer.sql Writes last line [$] to file, customer.sql Used to execute a shell command without leaving vi Suspends current session and escaped to UNIX shell

1.

Lets begin our next lab exercise by opening an empty file named linux and manually inserting a script entitled, The Linux Story.

Note: The vi editor does not perform an automatic word-wrap, so hit the <enter> key at the end of a normal line (80 characters). This will help with editing features, perform a carriage feed, and begin a new line.
While you are entering The Linux Story, periodically write the file to the hard drive by typing <esc > and then entering the last-line command <SHIFT> + <:>. A colon appears at the bottom, left of the screen. Enter w and press <enter>. If a file fails to write, use <SHIFT>+<:> plus the ! symbol, such as :w! . The bang sign ( ! ) forces a write to the hard drive.

The linux Story


Linus Torvalds, creator of the Linux Operating System, was born Dec 28, 1969 in Helsinki, Finland. His grandfather had a Commodore VIC-20 that he had the opportunity to work with; by age ten he was already dabbling in programming. He enrolled at the University of Helsinki in 1989, and in 1990 he took his first C programming class.

( after entering the above information, write and quit vi by :wq! )

Note: Since vi places its text in a buffer, it is wise to frequently write a file to disk at specific intervals. This will prevent data loss if the system fails or an incorrect key combination closes our file. Saving the buffer is performed in the last-line mode. Every command in this mode is preceded by a : (colon) and followed by the <enter> key. To save, enter last-line mode and then enter w (for write) and press the enter key. 1. Opening a new line: place the cursor on the main title, The Linux Story, and open a new line underneath the title by typing a lower case o. You can now enter, By Anonymous. Since the o placed you in the Insert Mode, you must enter [Esc] to return to the Command Mode. Replacing text: replacing text can be done by one character at a time or a string of characters at a time. Use the r, R, s, and S keys. Place the cursor over the l in linux in the first line. Now hit the r key and then type an upper case L. This changes the word linux to Linux.

1.

Note: vi momentarily switches from the Command Mode to the Insert Mode when r is pressed and back to the Command Mode as soon as the character is entered.
1. Replacing a word: replacing a word can be done using the cw (change word) command. Place the cursor on the letter D where Linus birthday is shown as Dec. Now, type cw. Dec should disappear. Now type December. This chan ges the word Dec to December. Press the Escape <esc> key. Replacing a single character with multi-character text: use the s key after placing the cursor at the beginning of the word string to be replaced. Replacing an entire line with another line: use the S key after placing the cursor at the beginning, or at any point, of the sentence to be replaced. Determining your current cursor position by line number: use the [Ctrl-g] key to see what line number your cursor is on. The line number is displayed in the last-line position at the bottom right of the screen. Placing the cursor on a predetermined line: Use the G key followed by a line number to place the cursor on a particular line (While in Command Mode enter, 12G to go to the 12thline). Moving the cursor from the beginning of or to the end of the current line: enter a caret (^) to move to the beginning of the current line or enter a dollar ($) to move to the end of the current line. Moving around in a document: Use the up-down, right-left keyboard keys or use b, e, and w to move between words in a sentence. Deleting a character: use x to delete a character. Deleting an entire line: use dd to delete the entire current line. Undoing a mistake: Use the u to undo a key sequence mistake. Searching for a pattern string of characters: use the / (forward slash) followed by the pattern being searched for. To find the first occurrence of the word Linux, type /Linux and press <Enter>. Using ? instead of / will search backwards. Searching and replacing a string pattern: enter the last-line mode and type: 1,$s/pattern1/pattern2/ where 1 indicates the first line of the file and $ indicates the last line of the file. Pattern1 is the string searched for and pattern2 is the string replacing pattern1. To practice this important editing function, enter the Last-Line Mode [:] and type 1,$s/Story/Song/ and [Enter]. Undo Song and change it back to Story by hitting [esc] and then u. Exit out of vi by entering the last-line mode and typing wq! Name the three modes used with the vi text editor.

1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.

1. 1. 1.

1. 1. 1. 1.

List the 10 ways to be placed in the Insert Mode using vi. Show the key-stoke sequence used to enter the Last-Line Mode using vi. In vi, which letter can be used to undo an editing mistake? In vi, what does the dd command do? Editing Files 1. Log on to the system.

2. At the moment we need to create a new directory and then change to it. Issue the command: mkdir /lab Then change to the /lab directory.

3. Note your location.

Prompt: ____________________________________________________________

Full working Path: ____________________________________________________

4. Issue the command touch testfile. 5. Issue the command ls l testfile. Record the results of the display. Filename: ___________________________________________________________

File Attributes: ________________________________________________________

File Owner: ___________________________________________________________

File Group: ___________________________________________________________

File Size: _____________________________________________________________

File Creation Date: _____________________________________________________

6. Issue the command vi testfile2. You have now opened the vi editor to a new file called testfile2. You are in the command mode. Enter the command the letter i . You are now in the insert mode, able to type in text. 7. Enter the following text:

Name: {your name} IP Address: {your system IP address} File: testfile2 using vi I am a great student and am working hard to prove myself as an A student! 8. Strike the ESC key. This places you into the command mode. If you hear additional beeps from the (small) computer speaker, you are already in the command mode.

9. Enter the command :w . This saves the text to the hard drive. 10. Enter the command :q . This exits the vi editor. 11. Enter the command vi testfile3. 12. Enter the following text:

Name: {your name} IP Address: {your system IP address} File: testfile3 using pico My classmates are great people too. 13. List the contents of the directory. Record the results.

1. Log onto the system.

2. What is the path? ______________________________________________

3. Change to the /lab directory ( create the lab directory)

4. Record the full path of the directory. (if it is not /lab, you made an error)

________________________________________________________________________

5. Using the vi text editor, create a new file called test1. 6. Insert into the test1 file the following:

Test file 1. My name is {your name}. I am learning Linux. 7. Save the file (look at the bottom of the screen to WriteOut the file). Then exit.

8. Using the vi text editor, create a new file called test2. 9. Insert into the test2 file the following:

Test file 2. Created by {your name}. This is a simple file. 10. Save the file and exit.

11. Issue the command cat test1 . Record what you observe. ________________________________________________________________________

12. Issue the command cat test2 . Record what you observe. __________________________________________________________

13. Issue the command cat test1 test2 . Record what you observe. ________________________________________________________________________ 14. Issue the command more test1 . Record what you observe. ________________________________________________________________________

15. Issue the command history | more . Scroll down through the file. Try to scroll up. (Note that only the space bar will scroll through the file. The | , or pipe, will be dicusse d later.) Record what you observe. ________________________________________________________________________

16. Issue the command less test2 . Record what you observe. ________________________________________________________________________

17. Issue the command history | less . Scroll up and down through the file using both the Up / Down Arrow keys and the Page Up / Down keys. 18. Issue the command history | head . Record what you observe. ________________________________________________________________________

19. Issue the command history | tail . Record what you observe. ________________________________________________________________________

20. Issue the command history | tac . Record what you observe. ________________________________________________________________________

21. Issue the command cat > test3 and hit ENTER. 22. Enter the following lines:

Test file 3. Created by {your name}. Created using the cat command. {on this line, enter a CTRL-D} 23. Display the file with the cat command, record your observations.

________________________________________________________________________

Case Study 1. Test to see if the two files (test1 and test2) may be displayed by different display utilities. Discuss your findings. 2. Compare the differences between the output of the following: cat E testfile3 cat n testfile3 hexdump c testfile3 od ta testfile3 od tc testfile3 xxd testfile3 Record your observations: Moving One Character at a Time

Try using your direction keys to move up, down, left and right in your file. Sometimes, you may find that the direction keys dont work. If that is the case, to move the cursor one character at the time, you may use the h, j, k, and l keys. These keys move you in the following directions:

h j

left one space down one space

l k

right one space up one space

If you move the cursor as far as you can in any direction, you may see a screen flash or hear a beep.

Moving among Words and Lines


While these four keys (or your direction keys) can move you just about anywhere you want to go in your file, there are some shortcut keys that you can use to move a little more quickly through a document. To move more quickly among words, you might use the following:

w b e

moves the cursor forward one word moves the cursor backward one word (if in the middle of a word, b will move you to the beginning of the current word). moves to the end of a word.

To build on this further, you can precede these commands with a number for greater movement. For example, 5w would move you forward five words; 12b would move you backwards twelve words. [You can also use numbers with the commands mentioned earlier. For example, 5j would move you down 5 characters.]

Shortcuts
Two short cuts for moving quickly on a line include the $ and the 0 (zero) keys. The $ key will move you to the end of a line, while the 0 will move you quickly to the beginning of a line.

Screen Movement
To move the cursor to a line within your current screen use the following keys:

H M L

moves the cursor to the top line of the screen. moves the cursor to the middle line of the screen. moves the cursor to the last line of the screen.

To scroll through the file and see other screens use:

ctrl-f ctrl-b ctrl-u ctrl-d

scrolls down one screen scrolls up one screen scrolls up a half a screen scrolls down a half a screen

Two other useful commands for moving quickly from one end to the other of a document are Gto move to the end of the file and 1G to move to the beginning of the file. If you precede Gwith a number, you can move to a specific line in the document (e.g. 15G would move you to line 15).

Moving by Searching
One method for moving quickly to a particular spot in your file is to search for specific text. When you are in command mode, type a / followed the text you wish to search for. When you press Return, the cursor will move to the first incidence of that string of text. You can repeat the search by typing n or search in a backwards direction by using N.

Deleting (or Cutting) Characters, Words, and Lines


To delete a character, first place your cursor on that character. Then, you may use any of the following commands:

x X

deletes the character under the cursor. deletes the character to the left of your cursor.

dw dd D

deletes from the character selected to the end of the word. deletes all the current line. deletes from the current character to the end of the line.

Preceding the command with a number will delete multiple characters. For example, 10x will delete the character selected and the next 9 characters; 10X will delete the 10 characters to the left of the currently selected character. The command 5dw will delete 5 words, while 4dddeletes four lines.

Pasting Text using Put


Often, when you delete or cut text, you may wish to reinsert it in another location of the document. The Put command will paste in the last portion of text that was deleted since deleted text is stored in a buffer. To use this command, place the cursor where you wish the deleted text to appear. Then use p to reinsert the text. If you are inserting a line or paragraph use the lower case p to insert on the line below the cursor or upper case P to place in on the line above the cursor.

Copying Text with Yank


If you wish to make a duplicate copy of existing text, you may use the yank and put commands to accomplish this function. Yank copies the selected text into a buffer and holds it until another yank or deletion occurs. Yank is usually used in combination with a word or line object such as the ones shown below:

yw yy

copies a word into a buffer (7yw copies 7 words) copies a line into a buffer (3yy will copy 3 lines)

Once the desired text is yanked, place the cursor in the spot in which you wish to insert the text and then use the put command (p for line below or P for line above) to insert the contents of the buffer.

Replacing or Changing Characters, Words, and Lines


When you are using the following commands to replace text, you will be put temporarily into insert mode so that you can change a character, word, line, or paragraph of text.

r R

replaces the current character with the next character you enter/type. Once you enter the character you are returned to command mode. puts you in overtype mode until you hit ESC which will then return you to command mode.

cw changes and replaces the current word with text that you type. A dollar sign marks the end of the text you're changing. Pressing ESC when you finish will return you to command mode.

Inserting a Blank Line


To insert a blank line below the line your cursor is currently located on, use the o key and then hit ESC to return to the command mode . Use O to insert a line above the line the cursor is located on.

Appending Text
You can use the append command to add text at any place in your file. Append ( a) works very much like Insert (i) except that it insert text after the cursor rather than before it. Append is probably used most often for adding text to the end of a line. Simply place your cursor where you wish to append text and press a. Once youve finished appending, press ESC to go back to command mode.

Joining Lines
Since vi does not use automatic word wrap, it is not unusual in editing lines to end up with lines that are too short and that might be improved if joined together. To do this, place your cursor on the first line to be joined and type J. As with other commands, you can precede Jwith a number to join multiple lines (4J joins 4 lines).

Undoing
Be sure to remember this command. When you make a mistake you can undo it. DO NOTmove the cursor from the line where you made the change. Then try using one of the following two commands:

undoes the last change you made anywhere in the file. will "undo the undo".

Using u again

undoes all recent changes to the current line. from the line to recover the original line.

You can not have moved

Closing and Saving Files


When you edit a file in vi, you are actually editing a copy of the file rather than the original. The following sections describe methods you might use when closing a file, quitting vi, or both.

Quitting and Saving a File


The command ZZ (notice that it is in uppercase) will allow you to quit vi and save the edits made to a file. You will then return to a Unix prompt. Note that you can also use the following commands:

:w :q :wq

to save your file but not quit vi (this is good to do periodically in case of machine crash!). to quit if you haven't made any edits. to quit and save edits (basically the same as ZZ).

Quitting without Saving Edits


Sometimes, when you create a mess (when you first start using vi this is easy to do!) you may wish to erase all edits made to the file and either start over or quit. To do this, you can choose from the following two commands:

:e! :q!
EX. NO. : DATE :

reads the original file back in so that you can start over. wipes out all edits and allows you to exit from vi.

SHELL PROGRAMMING

A Linux shell is a command language interpreter, the primary purpose of which is to translate the command lines typed at the terminal into system actions. The shell itself is a program, through which other programs are invoked What is a shell script ?

A shell script is a file containing a list of commands to be executed by the Linux shell. shell script provides the ability to create your own customized Linux commands Linux shell have sophisticated programming capabilities which makes shell script powerful Linux tools

How to work with shell?


Step1: In the dollar prompt type $ vi < file name>

Where vi is the editor ,it will open a new window in which you can type the program you want Step2: After typing the program press ESC and : together then at the bottom of the vi screen you can see i.e. prompt .In that type as wq which means write and quit i.e. the content what is typed will be written and saved into that file that has been created Step3: Once wq is typed at the : prompt ,the prompt would change to $ symbol in which you have to do the following $ sh < file name > Sh command is used to run the shell program <file name> is the name of the file for which the output is to be got Basically to print a text in the your shell programs echo command is used

Identifying System Variables


1.

The shell is the primary agency that determines a users environment. Determine which shell that you are using by typing the following command:

echo $SHELL Write the output 2. PATH is one of the important system variables. It provides the shell with a searchable path to explore in order to find commands stored in various directories in the file system structure. Once the command entered on the command line is found, the shell can interpret the command. Determine your shells path settings. echo $PATH Write your output

3. HOME stores the users home directory after a successful login. Each users home directory is named after their us er account name. Determine your home directory settings. echo $HOME Write your output

4.

LOGNAME is the variable that holds your username. echo $LOGNAME Write your output

MAIL provides UNIX with an absolute path to each users mailbox. Determine your MAIL settings. echo $MAIL Write your output 6. MAILCHECK determines how often the shell checks for the arrival of new mail. MAILCHECK is set for 600 seconds by default and can be modified by the super user. Determine your MAILCHECK settings. 5. echo $MAILCHECK Write your output PS1 is the primary prompt string for the shell. Determine your PS1 settings echo $PS1

7.

Write your output 8. PS2 is the secondary string for the shell. If the shell does not have enough information on the command line to interpret the command, it presents the user with the secondary prompt. The user can finish the command line on the secondary prompt line and then hit the enter key. Determine your PS2 settings echo $PS2 Write your output

9. CDPATH is the variable search path used by the cd command. CDPATH works the same as PATH except it locates directories and not shell commands. Determine your CDPATH setting. echo $CDPATH Write your output

1.

TERM is the variable that indicates the type of terminal you are using. Determine your TERM setting. echo $TERM Write your output SYNTAX FOR LOOPING STATEMENTS IF THEN-ELSE CONSTRUCT if [ condition] then <action> else statements

fi (end of if) WHILE while <condition> do <statements> Done CASE Case $<option> in <statements>;; <statements>;; .. . . . *) <error statement>;; esac For loop For(( intitialization;condition;incremetation/decrementation))

1. 2. 3. 4.

AREA OF THE TRIANGLE


Aim: To write a shell script to find the area of the triangle Algorithm: Step1 : get the base and height Step2 : calculate the area Step3 : Display the result

SQUARE OF THE NUMBER


Aim: To write a shell script which accepts a number less than 50 and display its square Algorithm: Step1 : Get the number Step2 : Check if the number is less than 50. If the number is less than 50 then compute the square of the number Step3 : Display the result.

ODD NUMBER GENERATION


Aim: To write a shell script display a list of odd numbers below a given number Algorithm: Step1 : Get the limit Step2 : Initialize count to 1 Step3 : Display the list of odd numbers by incrementing count by 2 until the given limit.

FIBONACCI SERIES
Aim: To write a shell script to print the Fibonacci series Algorithm: Step1 : get the limit Step2 : add the first two numbers to produce the third number Step3 : add the second and third number to get the fourth number and so on Step4 : display the series STUDENT MARKS

Aim: To write a shell script to read the marks of 5 subjects from user and calculate the average and grade Algorithm: Step1 : Read the Marks Step2 : calculate the average Step3 : if the average is greater than 75 then assign grade as Distinction if the average is between 60 to 75 then assign grade as First Class if the average is between 50 to 59 then assign grade as Second Class else then assign grade as Fail

VOWEL OR NOT
Aim: To write a shell script to find whether a given character is vowel or constant Algorithm: Step1 : Read the characters Step2 : If it matches with any of the vowels a,e,i,o,u print it as vowel Step3 : Otherwise print it as a constant

MENU DRIVEN PROGRAM Aim: To write a shell script for a menu driven program. Algorithm: Step1 : Get the option, use case statement to display the various functions Step2 : first option to view the content of the home directory Second option to list the users who have logged Third option to print the present working directory Fourth option to count the words, characters and lines of a file Fifth option to print the type of file Step3 : Display the result according to the option chose

PALINDROME CHECKING
Aim: To write a shell script to check whether the given string is a palindrome or not Algorithm: Step1 : read an input string Step2 : find the length of the string Step3 : extract the input string into another variable starting from the last character Step4 : check whether the input string and the reversed string are the same Step5 : if so, display given string is a palindrome else display given string is not a palindrome

USER LOGGED IN OR NOT


Aim: To write a shell script to accept the name of the user and check out if the user has Logged in or not. Algorithm: Step1 : accept username from command line Step2 : use grep filter ,extract username from /dev/null file Step3 : check whether the input username is in the /dev/null file .If the username is present in the file,display message as user has logged in else, display the message as user has not logged in

COUNT THE ORDINARY FILE AND DIRECTORY


Aim: To write a shell script to find the number of ordinary files and directory files in the current directory . Algorithm: Step1 : Read the directory name Step2 : Check if the number of command line arguments read .

Step3 : invalid Step4 : Step5 : Step6 :

If the number of arguments read is less than one, then display the message as message Check whether the file is ordinary file or directory file[-f or d] Using grep filter, extract the number of files and directory files in two variables Display the count of files and directory files

DISPLAY THE FILE PERMISSION


Aim: To write a shell script to accept the filenames and display the file permission from the long listing of files Algorithm: Step1 : Accept filenames from command line Step2 : In a for loop, using the cut command extract the file permission from the long listing of files Step3 : Display the filenames and their permission.

UPPERCASE CONVERSION
Aim: To write a shell script to convert the content of given files to uppercase letters Algorithm: Step1 : Accept filenames to be converted from command line Step2 : Using the tr command to convert the content of file to upper case Step3 : Display the content of converted files

FILE MANAGEMENT
Aim: To write a C program to perform file operations using file descriptor Algorithm: Step 1: Get file name from user Step 2: Get the string and find the length of the string Step 3: Open the file in write mode Step 4: Write the string in the file Step 5: Close the file Step 6: Open the file in read mode Step 7: Read the contents of the file and store it in a temporary storage space Step 8: Print the buffer contents on the screen Step 9: Close the file.

PROCESS MANAGEMENT
Aim: To write a C program to create a new process using fork Algorithm: Step1 : Create the process using fork() system call Step2 : Check the process id of current process If it is 0 then display as child process and also display the process id of current and parent process Else it is a parent process and display the process id of current process and parent process

IMPLEMENTATION OF UNIX COMMANDS


Aim: To write a C program to implement grep unix commands Algorithm: Step1 : Use system function to implement grep unix commands
Categories:GE2155 computer labTags:GE2155 computer lab, unix, UNIX LAB

GE2155 CP LAB 2
February 2, 2010SUDHAKAR1 comment

What is UNIX? UNIX is an operating system which was first developed in the 1960s, and has been under constant development ever since. By operating system, we mean the suite of programs which make the computer work. It is a stable, multi-user, multi-tasking system for servers, desktops and laptops. UNIX systems also have a graphical user interface (GUI) similar to Microsoft Windows which provides an easy to use environment. However, knowledge of UNIX is required for operations which arent covered by a graphical program, or for when there is no windows interface available, for example, in a telnet session. Types of UNIX There are many different versions of UNIX, although they share common similarities. The most popular varieties of UNIX are Sun Solaris, GNU/Linux, and MacOS X. The UNIX operating system The UNIX operating system is made up of three parts; the kernel, the shell and the programs.

The kernel
The kernel of UNIX is the hub of the operating system: it allocates time and memory to programs and handles the filestore and communications in response to system calls. As an illustration of the way that the shell and the kernel work together, suppose a user types rm myfile (which has the effect of removing the file myfile). The shell searches the filestore for the file containing the program rm, and then requests the kernel, through system calls, to execute the program rm on myfile. When the process rm myfile has finished running, the shell then returns the UNIX prompt % to the user, indicating that it is waiting for further commands.

The shell
The shell acts as an interface between the user and the kernel. When a user logs in, the login program checks the username and password, and then starts another program called the shell. The shell is a command line interpreter (CLI). It interprets the commands the user types in and arranges for them to be carried out. The commands are themselves programs: when they terminate, the shell gives the user another prompt (% on our systems). The adept user can customise his/her own shell, and users can use different shells on the same machine. Staff and students in the school have the tcsh shell by default. The tcsh shell has certain features to help the user inputting commands. Filename Completion By typing part of the name of a command, filename or directory and pressing the [Tab] key, the tcsh shell will complete the rest of the name automatically. If the shell finds more than one name beginning with those letters you have typed, it will beep, prompting you to type a few more letters before pressing the tab key again. History The shell keeps a list of the commands you have typed in. If you need to repeat a command, use the cursor keys to scroll up and down the list or type history for a list of previous commands. Files and processes Everything in UNIX is either a file or a process. A process is an executing program identified by a unique PID (process identifier). A file is a collection of data. They are created by users using text editors, running compilers etc. Examples of files:

a document (report, essay etc.) the text of a program written in some high-level programming language instructions comprehensible directly to the machine and incomprehensible to a casual user, for example, a collection of binary digits (an executable or binary file); a directory, containing information about its contents, which may be a mixture of other directories (subdirectories) and ordinary files.

Basic UNIX Commands


alias back cat C-d C-q Allows you to substitute a preferred name for a UNIX command. Move back to the directory you were in before your last cd command. Concatenate an input file to an output file. Can be used to create a new file. Under cat, tells the program that you are done entering information. Under cat, tells the program to resume scrolling after a C-s.

C-s -Under cat, tells the program to pause cd Move to a new directory (change directory).

cp head jobs kill less b y g G lp lpstat ls ls -a ls -l ls -F man mkdir more Space Bar Return q mv passwd ps pwd rm

Copy a file to another directory. Displays the first ten lines of a file. Tells you what jobs are in the background. Terminates a background job. Similar to more, less displays the contents of a file but allows backwards movement. Under less, scrolls back one page. Under less, scrolls back one line. Under less, jumps back to the start of the file. Under less, jumps to the end of the file. Print command that prints output horizontally. Shows you how many print jobs are queued to the printer. Displays the contents of a directory. Displays files that start with a (.) as well as the rest of the contents of the directory. Displays the same files as ls but includes more information. Tells whether a file listed in an ls is an executable program, directory, or file. Displays short message about a particular UNIX command (e.g. man ls). The create directory command. Displays the first screens worth of a file. Under more, scrolls to the next page. Under more scrolls one line. Under more, quits displaying the file and returns to UNIX Move a file from one directory to another. Change your password. lists out all of the processes that are running on your machine. Print out the current directory. The remove command for eliminating files.

-r A switch for the rm command that allows you to remove all files and directories in a particular directory, and then remove the directory itself. rmdir The remove directory command.

Starting vi and Saving Files


vi filename start editing filename , create it if necessary Saving the file youre working on and/or leaving vi: :wq write the file to disk and quit :q! quit without saving any changes :w! newfile write all lines from the entire current file into the file newfile, overwriting any existing newfile :n,m w! newfile write the lines from n to m, inclusive, into the file newfile, overwriting any existing newfile

Useful vi Commands Cut/Paste Commands:

x dw dd D

delete delete delete delete

one the the all

character (destructive backspace) current word (Note: ndw deletes n numbered words) current line (Note: ndd deletes n numbered lines) content to the right of the cursor

d$ :u p,P location J "[a-z]nyy "[a-z]p/P line

same as above undo last command paste line starting one line below/above current cursor combine the contents of two lines yank next n lines into named buffer [a-z] place the contents of selected buffer below/above the current

Extensions to the Above Commands:

:3,18d 16,25m30 23,29co62

delete lines 3 through 18 move lines 16 through 25 to after line 30 copy specified lines and place after line 62

Cursor Relocation commands:

:[n] shift g h/l/j/k ^f/^b ^u/^d $ 0

goto line [n] place cursor on last line of text move cursor left, right, down and up move forward, backward in text, one page move up, down one half page move to end of line move to beginning of line

Extensions to the Above:

b words) e ( )

move backwards one word (Note: nb moves back n number of move to end of current word move to beginning of curent block move to the end of current block

Searching and Substitution commands:

/ [string] ? [string] n N cw c$ c0 :1,$s/s1/s2/g r

search forward for string search backwards for string repeat last search repeat search in opposite direction change the contents of the current word, (use ESC to stop replacement mode) Replace all content to the right of cursor (exit replacement mode with ESC) Replace all content to the left of cursor (exit with ESC) (Yow!) global replacement of string1 with string2 replace current character with next character typed

Entering the Insert Mode:

Begin inserting text at current cursor location

I a A o/O ESC
Exiting and Entering vi

Begin inserting text at the beginning of the current line Begin appending text, one character to the right of current cursor location Begin appending text at the end of the current line Begin entering text one line below\above current line Exit insertion mode and return to command mode

ZZ :wq :e! :q made) :w

save file and exit VI same as above return to last saved version of current file quit without save, (Note :q! is required if changes have been write without exit (:w! to force write)

Miscellaneous Commands: :1,10w file write lines 1 through 10 to file newfile :340,$w >> file write lines 340 through the end of the file and append to file newfile :sh escape temporarily to a shell ^d return from shell to VI :![command] execute UNIX command without leaving VI :r![command] read output of command into VI :r[filename] read filename into VI :$r newfile read in newfile and attach at the end of current document :r !sort file read in contents of file after it has been passed through the UNIX sort :n open next file (works with wildcard filenames, ex: vi file*) :^g list current line number :set number show line numbers :set showinsert show flag ("I") at bottom of screen when in insert mode :set all display current values of VI variables :set ai set autoindent; after this enter the insert mode and tab, from this point on VI will indent each line to this location. Use ESC to stop the indentations. ^T set the autoindent tab one tab stop to the right ^D set the autoindent tab one stop to the left :set tabstop=n sets default tab space to number n >> shift contents of line one tab stop to the right << shift contents of line one tab stop to the left

Entering Text
To begin entering text in an empty file, you must first change from the command mode to the insert mode. To do this, type the letter i. When you start typing, anything you type will be entered into the file. Type a few short lines and hit Return at the end of each of line. Unlike word processors, vi does not use word wrap. It will break a line at the edge of the screen. If you make a mistake, you can use the Backspace key to remove your errors. If the Backspace key doesnt work properly on your system, try using the Ctrl h key combination.

Cursor Movement
You must be in command mode if you wish to move the cursor to another position in your file. If youve just finished typing t ext, youre still in insert mode and will need to press ESC to return to the command mode.

Moving One Character at a Time


Try using your direction keys to move up, down, left and right in your file. Sometimes, you may find that the direction keys don t work. If that is the case, to move the cursor one character at the time, you may use the h, j, k, and l keys. These keys move you in the following directions:

h j

left one space down one space

l k

right one space up one space

If you move the cursor as far as you can in any direction, you may see a screen flash or hear a beep.

Moving among Words and Lines


While these four keys (or your direction keys) can move you just about anywhere you want to go in your file, there are some shortcut keys that you can use to move a little more quickly through a document. To move more quickly among words, you might use the following:

w b e

moves moves word, moves

the cursor forward one word the cursor backward one word (if in the middle of a b will move you to the beginning of the current word). to the end of a word.

To build on this further, you can precede these commands with a number for greater movement. For example, 5w would move you forward five words; 12b would move you backwards twelve words. [You can also use numbers with the commands mentioned earlier. For example, 5j would move you down 5 characters.]

Command Keys and Case


You will find when using vi that lower case and upper case command keys are interpreted differently. For example, when using the lower case w, b, and e commands, words will be defined by a space or a punctuation mark. On the other hand, W, B, and E commands may be used to move between words also, but these commands ignore punctuation.

Shortcuts
Two short cuts for moving quickly on a line include the $ and the 0 (zero) keys. The $ key will move you to the end of a line, while the 0 will move you quickly to the beginning of a line.

Screen Movement
To move the cursor to a line within your current screen use the following keys:

H M L

moves the cursor to the top line of the screen. moves the cursor to the middle line of the screen. moves the cursor to the last line of the screen.

To scroll through the file and see other screens use:

ctrl-f ctrl-b ctrl-u ctrl-d

scrolls scrolls scrolls scrolls

down one screen up one screen up a half a screen down a half a screen

Two other useful commands for moving quickly from one end to the other of a document are Gto move to the end of the file and 1G to move to the beginning of the file. If you precede Gwith a number, you can move to a specific line in the document (e.g. 15G would move you to line 15).

Moving by Searching

One method for moving quickly to a particular spot in your file is to search for specific text. When you are in command mode, type a / followed the text you wish to search for. When you press Return, the cursor will move to the first incidence of that string of text. You can repeat the search by typing n or search in a backwards direction by using N.

Basic Editing
To issue editing commands, you must be in command mode. As mentioned before, commands will be interpreted differently depending upon whether they are issued in lower or upper case. Also, many of the editing commands can be preceded by a number to indicate a repetition of the command.

Deleting (or Cutting) Characters, Words, and Lines


To delete a character, first place your cursor on that character. Then, you may use any of the following commands:

x X dw dd D

deletes deletes deletes deletes deletes

the character under the cursor. the character to the left of your cursor. from the character selected to the end of the word. all the current line. from the current character to the end of the line.

Preceding the command with a number will delete multiple characters. For example, 10x will delete the character selected and the next 9 characters; 10X will delete the 10 characters to the left of the currently selected character. The command 5dw will delete 5 words, while 4dddeletes four lines.

Pasting Text using Put


Often, when you delete or cut text, you may wish to reinsert it in another location of the document. The Put command will paste in the last portion of text that was deleted since deleted text is stored in a buffer. To use this command, place the cursor where you wish the deleted text to appear. Then use p to reinsert the text. If you are inserting a line or paragraph use the lower case p to insert on the line below the cursor or upper case P to place in on the line above the cursor.

Copying Text with Yank


If you wish to make a duplicate copy of existing text, you may use the yank and put commands to accomplish this function. Yank copies the selected text into a buffer and holds it until another yank or deletion occurs. Yank is usually used in combination with a word or line object such as the ones shown below:

yw yy

copies a word into a buffer (7yw copies 7 words) copies a line into a buffer (3yy will copy 3 lines)

Once the desired text is yanked, place the cursor in the spot in which you wish to insert the text and then use the put command (p for line below or P for line above) to insert the contents of the buffer.

Replacing or Changing Characters, Words, and Lines


When you are using the following commands to replace text, you will be put temporarily into insert mode so that you can change a character, word, line, or paragraph of text.

r replaces the current character with the next character you enter/type. Once you enter the character you are returned to command mode. R puts you in overtype mode until you hit ESC which will then return you to command mode. cw changes and replaces the current word with text that you type. A dollar sign marks the end of the text you're changing. Pressing ESC when you finish will return you to command mode.
Inserting Text
If you wish to insert new text in a line, first position the cursor to the right of where you wish the inserted text to appear. Type i to get into insert mode and then type in the desired text (note that the text is inserted before the cursor). Press ESC to return to command mode.

Inserting a Blank Line

To insert a blank line below the line your cursor is currently located on, use the o key and then hit ESC to return to the command mode . Use O to insert a line above the line the cursor is located on.

Appending Text
You can use the append command to add text at any place in your file. Append ( a) works very much like Insert (i) except that it insert text after the cursor rather than before it. Append is probably used most often for adding text to the end of a line. Simply place your cursor where you wish to append text and press a. Once youve finished appending, press ESC to go back to command mode.

Joining Lines
Since vi does not use automatic word wrap, it is not unusual in editing lines to end up with lines that are too short and that might be improved if joined together. To do this, place your cursor on the first line to be joined and type J. As with other commands, you can precede Jwith a number to join multiple lines (4J joins 4 lines).

Undoing
Be sure to remember this command. When you make a mistake you can undo it. DO NOTmove the cursor from the line where you made the change. Then try using one of the following two commands:

u U moved

undoes the last change you made anywhere in the file. Using u again will "undo the undo". undoes all recent changes to the current line. You can not have from the line to recover the original line.

Closing and Saving Files


When you edit a file in vi, you are actually editing a copy of the file rather than the original. The following sections describe methods you might use when closing a file, quitting vi, or both.

Quitting and Saving a File


The command ZZ (notice that it is in uppercase) will allow you to quit vi and save the edits made to a file. You will then return to a Unix prompt. Note that you can also use the following commands:

:w :q :wq

to save case of to quit to quit

your file but not quit vi (this is good to do periodically in machine crash!). if you haven't made any edits. and save edits (basically the same as ZZ).

Quitting without Saving Edits


Sometimes, when you create a mess (when you first start using vi this is easy to do!) you may wish to erase all edits made to the file and either start over or quit. To do this, you can choose from the following two commands:

:e! :q!

reads the original file back in so that you can start over. wipes out all edits and allows you to exit from vi.

Categories:GE2155 computer labTags:CP LAB II, UNIX LAB

GE2155 COMPUTER PRACTICE LABORATORY II


February 2, 2010SUDHAKAR2 comments

GE2155 COMPUTER PRACTICE LABORATORY II LIST OF EXPERIMENTS 1. UNIX COMMANDS Study of UNIX OS Basic Shell Commands Unix Editor

0 1 2 2 15

2. SHELL PROGRAMMING Simple Shell program Conditional Statements Testing and Loops 3. C PROGRAMMING ON UNIX Dynamic Storage Allocation-Pointers-Functions-File Handling TOTAL: 45 PERIODS HARDWARE / SOFTWARE REQUIREMENTS FOR A BATCH OF 30 STUDENTS

15

15

Hardware
1 UNIX Clone Server 33 Nodes (thin client or PCs) Printer 3 Nos. Software OS UNIX Clone (33 user license or License free Linux) Compiler C

What is UNIX? UNIX is an operating system which was first developed in the 1960s, and has been under constant development ever since. By operating system, we mean the suite of programs which make the computer work. It is a stable, multi-user, multi-tasking system for servers, desktops and laptops. UNIX systems also have a graphical user interface (GUI) similar to Microsoft Windows which provides an easy to use environment. However, knowledge of UNIX is required for operations which arent covered by a graphical program, or for when there is no windows interface available, for example, in a telnet session. Types of UNIX There are many different versions of UNIX, although they share common similarities. The most popular varieties of UNIX are Sun Solaris, GNU/Linux, and MacOS X. The UNIX operating system The UNIX operating system is made up of three parts; the kernel, the shell and the programs.

The kernel
The kernel of UNIX is the hub of the operating system: it allocates time and memory to programs and handles the filestore and communications in response to system calls. As an illustration of the way that the shell and the kernel work together, suppose a user types rm myfile (which has the effect of removing the file myfile). The shell searches the filestore for the file containing the program rm, and then requests the kernel, through system calls, to execute the program rm on myfile. When the process rm myfile has finished running, the shell then returns the UNIX prompt % to the user, indicating that it is waiting for further commands.

The shell
The shell acts as an interface between the user and the kernel. When a user logs in, the login program checks the username and password, and then starts another program called the shell. The shell is a command line interpreter (CLI). It interprets the commands the user types in and arranges for them to be carried out. The commands are themselves programs: when they terminate, the shell gives the user another prompt (% on our systems). The adept user can customise his/her own shell, and users can use different shells on the same machine. Staff and students in the school have the tcsh shell by default. The tcsh shell has certain features to help the user inputting commands. Filename Completion By typing part of the name of a command, filename or directory and pressing the [ Tab] key, the tcsh shell will complete the rest of the name automatically. If the shell finds more than one name beginning with those letters you have typed, it will beep, prompting you to type a few more letters before pressing the tab key again. History The shell keeps a list of the commands you have typed in. If you need to repeat a command, use the cursor keys to scroll up and down the list or type history for a list of previous commands. Files and processes Everything in UNIX is either a file or a process. A process is an executing program identified by a unique PID (process identifier). A file is a collection of data. They are created by users using text editors, running compilers etc. Examples of files:

a document (report, essay etc.) the text of a program written in some high-level programming language instructions comprehensible directly to the machine and incomprehensible to a casual user, for example, a collection of binary digits (an executable or binary file); a directory, containing information about its contents, which may be a mixture of other directories (subdirectories) and ordinary files.

Basic UNIX Commands


alias back cat C-d C-q Allows you to substitute a preferred name for a UNIX command. Move back to the directory you were in before your last cd command. Concatenate an input file to an output file. Can be used to create a new file. Under cat, tells the program that you are done entering information. Under cat, tells the program to resume scrolling after a C-s.

C-s -Under cat, tells the program to pause cd cp head jobs kill less b y g G lp lpstat ls ls -a ls -l ls -F man mkdir more Space Bar Return q mv passwd ps pwd rm Move to a new directory (change directory). Copy a file to another directory. Displays the first ten lines of a file. Tells you what jobs are in the background. Terminates a background job. Similar to more, less displays the contents of a file but allows backwards movement. Under less, scrolls back one page. Under less, scrolls back one line. Under less, jumps back to the start of the file. Under less, jumps to the end of the file. Print command that prints output horizontally. Shows you how many print jobs are queued to the printer. Displays the contents of a directory. Displays files that start with a (.) as well as the rest of the contents of the directory. Displays the same files as ls but includes more information. Tells whether a file listed in an ls is an executable program, directory, or file. Displays short message about a particular UNIX command (e.g. man ls). The create directory command. Displays the first screens worth of a file. Under more, scrolls to the next page. Under more scrolls one line. Under more, quits displaying the file and returns to UNIX Move a file from one directory to another. Change your password. lists out all of the processes that are running on your machine. Print out the current directory. The remove command for eliminating files.

-r A switch for the rm command that allows you to remove all files and directories in a particular directory, and then remove the directory itself. rmdir The remove directory command.

Starting vi and Saving Files


vi filename start editing filename , create it if necessary Saving the file youre working on and/or leaving vi: :wq write the file to disk and quit

:q! quit without saving any changes :w! newfile write all lines from the entire current file into the file newfile, overwriting any existing newfile :n,m w! newfile write the lines from n to m, inclusive, into the file newfile, overwriting any existing newfile

Useful vi Commands Cut/Paste Commands:


x dw dd D d$ :u p,P J "[a-z]nyy "[a-z]p/P delete one character (destructive backspace) delete the current word (Note: ndw deletes n numbered words) delete the current line (Note: ndd deletes n numbered lines) delete all content to the right of the cursor same as above undo last command paste line starting one line below/above current cursor location combine the contents of two lines yank next n lines into named buffer [a-z] place the contents of selected buffer below/above the current line

Extensions to the Above Commands:


:3,18d 16,25m30 23,29co62 delete lines 3 through 18 move lines 16 through 25 to after line 30 copy specified lines and place after line 62

Cursor Relocation commands:


:[n] shift g h/l/j/k ^f/^b ^u/^d $ 0 goto line [n] place cursor on last line of text move cursor left, right, down and up move forward, backward in text, one page move up, down one half page move to end of line move to beginning of line

Extensions to the Above:


b e ( ) move backwards one word (Note: nb moves back n number of words) move to end of current word move to beginning of curent block move to the end of current block

Searching and Substitution commands:


/ [string] ? [string] n N cw search forward for string search backwards for string repeat last search repeat search in opposite direction change the contents of the current word, (use ESC to stop replacement mode) c$ Replace all content to the right of cursor (exit replacement mode with ESC) c0 :1,$s/s1/s2/g Replace all content to the left of cursor (exit with ESC) (Yow!) global replacement of string1 with string2

replace current character with next character typed

Entering the Insert Mode:


i I a Begin inserting text at current cursor location Begin inserting text at the beginning of the current line Begin appending text, one character to the right of current cursor location A o/O ESC Begin appending text at the end of the current line Begin entering text one line below\above current line Exit insertion mode and return to command mode

Exiting and Entering vi


ZZ :wq :e! :q :w save file and exit VI same as above return to last saved version of current file quit without save, (Note :q! is required if changes have been made) write without exit (:w! to force write)

Miscellaneous Commands: :1,10w file write lines 1 through 10 to file newfile :340,$w >> file write lines 340 through the end of the file and append to file newfile :sh escape temporarily to a shell ^d return from shell to VI :![command] execute UNIX command without leaving VI :r![command] read output of command into VI :r[filename] read filename into VI :$r newfile read in newfile and attach at the end of current document :r !sort file read in contents of file after it has been passed through the UNIX sort :n open next file (works with wildcard filenames, ex: vi file*) :^g list current line number :set number show line numbers :set showinsert show flag ("I") at bottom of screen when in insert mode :set all display current values of VI variables :set ai set autoindent; after this enter the insert mode and tab, from this point on VI will indent each line to this location. Use ESC to stop the indentations. ^T set the autoindent tab one tab stop to the right ^D set the autoindent tab one stop to the left :set tabstop=n sets default tab space to number n >> shift contents of line one tab stop to the right << shift contents of line one tab stop to the left

Entering Text
To begin entering text in an empty file, you must first change from the command mode to the insert mode. To do this, type the letter i. When you start typing, anything you type will be entered into the file. Type a few short lines and hit Return at the end of each of line. Unlike word processors, vi does not use word wrap. It will break a line at the edge of the screen. If you make a

mistake, you can use the Backspace key to remove your errors. If the Backspa ce key doesnt work properly on your system, try using the Ctrl h key combination.

Cursor Movement
You must be in command mode if you wish to move the cursor to another position in your file. If youve just finished typing t ext, youre still in insert mode and will need to press ESC to return to the command mode.

Moving One Character at a Time


Try using your direction keys to move up, down, left and right in your file. Sometimes, you may find that the direction keys dont work. If that is the case, to move the cursor one character at the time, you may use the h, j, k, and l keys. These keys move you in the following directions: h j left one space down one space l k right one space up one space

If you move the cursor as far as you can in any direction, you may see a screen flash or hear a beep.

Moving among Words and Lines


While these four keys (or your direction keys) can move you just about anywhere you want to go in your file, there are some shortcut keys that you can use to move a little more quickly through a document. To move more quickly among words, you might use the following: w b e moves moves word, moves the cursor forward one word the cursor backward one word (if in the middle of a b will move you to the beginning of the current word). to the end of a word.

To build on this further, you can precede these commands with a number for greater movement. For example, 5w would move you forward five words; 12b would move you backwards twelve words. [You can also use numbers with the commands mentioned earlier. For example, 5j would move you down 5 characters.]

Command Keys and Case


You will find when using vi that lower case and upper case command keys are interpreted differently. For example, when using the lower case w, b, and e commands, words will be defined by a space or a punctuation mark. On the other hand, W, B, and E commands may be used to move between words also, but these commands ignore punctuation.

Shortcuts
Two short cuts for moving quickly on a line include the $ and the 0 (zero) keys. The $ key will move you to the end of a line, while the 0 will move you quickly to the beginning of a line.

Screen Movement
To move the cursor to a line within your current screen use the following keys: H M L moves the cursor to the top line of the screen. moves the cursor to the middle line of the screen. moves the cursor to the last line of the screen.

To scroll through the file and see other screens use:

ctrl-f ctrl-b ctrl-u ctrl-d

scrolls scrolls scrolls scrolls

down one screen up one screen up a half a screen down a half a screen

Two other useful commands for moving quickly from one end to the other of a document are Gto move to the end of the file and 1G to move to the beginning of the file. If you precede Gwith a number, you can move to a specific line in the document (e.g. 15G would move you to line 15).

Moving by Searching
One method for moving quickly to a particular spot in your file is to search for specific text. When you are in command mode, type a / followed the text you wish to search for. When you press Return, the cursor will move to the first incidence of that string of text. You can repeat the search by typing n or search in a backwards direction by using N.

Basic Editing

To issue editing commands, you must be in command mode. As mentioned before, commands will be interpreted differently depending upon whether they are issued in lower or upper case. Also, many of the editing commands can be preceded by a number to indicate a repetition of the command.

Deleting (or Cutting) Characters, Words, and Lines


To delete a character, first place your cursor on that character. Then, you may use any of the following commands:

x X dw dd D

deletes deletes deletes deletes deletes

the character under the cursor. the character to the left of your cursor. from the character selected to the end of the word. all the current line. from the current character to the end of the line.

Preceding the command with a number will delete multiple characters. For example, 10x will delete the character selected and the next 9 characters; 10X will delete the 10 characters to the left of the currently selected character. The command 5dw will delete 5 words, while 4dddeletes four lines.

Pasting Text using Put


Often, when you delete or cut text, you may wish to reinsert it in another location of the document. The Put command will paste in the last portion of text that was deleted since deleted text is stored in a buffer. To use this command, place the cursor where you wish the deleted text to appear. Then use p to reinsert the text. If you are inserting a line or paragraph use the lower case p to insert on the line below the cursor or upper case P to place in on the line above the cursor.

Copying Text with Yank


If you wish to make a duplicate copy of existing text, you may use the yank and put commands to accomplish this function. Yank copies the selected text into a buffer and holds it until another yank or deletion occurs. Yank is usually used in combination with a word or line object such as the ones shown below:

yw yy

copies a word into a buffer (7yw copies 7 words) copies a line into a buffer (3yy will copy 3 lines)

Once the desired text is yanked, place the cursor in the spot in which you wish to insert the text and then use the put command (p for line below or P for line above) to insert the contents of the buffer.

Replacing or Changing Characters, Words, and Lines


When you are using the following commands to replace text, you will be put temporarily into insert mode so that you can change a character, word, line, or paragraph of text.

r R cw

replaces the current character with the next character you enter/type. Once you enter the character you are returned to command mode. puts you in overtype mode until you hit ESC which will then return you to command mode. changes and replaces the current word with text that you type. A dollar sign marks the end of the text you're changing. Pressing ESC when you finish will return you to command mode.

Inserting Text
If you wish to insert new text in a line, first position the cursor to the right of where you wish the inserted text to appear. Type i to get into insert mode and then type in the desired text (note that the text is inserted before the cursor). Press ESC to return to command mode.

Inserting a Blank Line


To insert a blank line below the line your cursor is currently located on, use the o key and then hit ESC to return to the command mode . Use O to insert a line above the line the cursor is located on.

Appending Text
You can use the append command to add text at any place in your file. Append ( a) works very much like Insert (i) except that it insert text after the cursor rather than before it. Append is probably used most often for adding text to the end of a line. Simply place your cursor where you wish to append text and press a. Once youve finished appending, press ESC to go back to command mode.

Joining Lines

Since vi does not use automatic word wrap, it is not unusual in editing lines to end up with lines that are too short and that might be improved if joined together. To do this, place your cursor on the first line to be joined and type J. As with other commands, you can precede Jwith a number to join multiple lines (4J joins 4 lines).

Undoing
Be sure to remember this command. When you make a mistake you can undo it. DO NOTmove the cursor from the line where you made the change. Then try using one of the following two commands:

u U

undoes the last change you made anywhere in the file. Using u again will "undo the undo". undoes all recent changes to the current line. You can not have moved from the line to recover the original line.

Closing and Saving Files


When you edit a file in vi, you are actually editing a copy of the file rather than the original. The following sections describe methods you might use when closing a file, quitting vi, or both.

Quitting and Saving a File


The command ZZ (notice that it is in uppercase) will allow you to quit vi and save the edits made to a file. You will then return to a Unix prompt. Note that you can also use the following commands:

:w :q :wq

to save case of to quit to quit

your file but not quit vi (this is good to do periodically in machine crash!). if you haven't made any edits. and save edits (basically the same as ZZ).

Quitting without Saving Edits


Sometimes, when you create a mess (when you first start using vi this is easy to do!) you may wish to erase all edits made to the file and either start over or quit. To do this, you can choose from the following two commands:

:e! :q!

reads the original file back in so that you can start over. wipes out all edits and allows you to exit from vi.