Home > GE2155 computer lab > GE2155 CP LAB 2

GE2155 CP LAB 2

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 aren’t 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                        Allows you to substitute a preferred name for a UNIX command.

back                       Move back to the directory you were in before your last cd command.

cat                          Concatenate an input file to an output file. Can be used to create a new file.

C-d         Under cat, tells the program that you are done entering information.

C-q         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                            Copy a file to another directory.

head                       Displays the first ten lines of a file.

jobs                        Tells you what jobs are in the background.

kill                           Terminates a background job.

less                          Similar to more, less displays the contents of a file but allows backwards movement.

b              Under less, scrolls back one page.

y              Under less, scrolls back one line.

g              Under less, jumps back to the start of the file.

G             Under less, jumps to the end of the file.

lp                             Print command that prints output horizontally.

lpstat                      Shows you how many print jobs are queued to the printer.

ls                             Displays the contents of a directory.

ls -a         Displays files that start with a (.) as well as the rest of the contents of the directory.

ls -l          Displays the same files as ls but includes more information.

ls -F         Tells whether a file listed in an ls is an executable program, directory, or file.

man                        Displays short message about a particular UNIX command (e.g. man ls).

mkdir                     The create directory command.

more                       Displays the first screen’s worth of a file.

Space Bar             Under more, scrolls to the next page.

Return                    Under more scrolls one line.

q                              Under more, quits displaying the file and returns to UNIX

mv                          Move a file from one directory to another.

passwd                   Change your password.

ps                            lists out all of the processes that are running on your machine.

pwd                        Print out the current directory.

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

Extensions to the Above Commands:

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

Cursor Relocation commands:

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

Extensions to the Above:

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

Searching and Substitution commands:

/ [string]     search forward for string
? [string]     search backwards for string
n              repeat last search
N              repeat search in opposite direction
cw             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             Replace all content to the left of cursor (exit with ESC)
:1,$s/s1/s2/g  (Yow!) global replacement of string1 with string2
r              replace current character with next character typed

Entering the Insert Mode:

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

Exiting and Entering vi

ZZ             save file and exit VI
:wq            same as above
:e!            return to last saved version of current file
:q             quit without save, (Note :q! is required if changes have been made)
:w             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 doesn’t 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 you’ve just finished typing text, you’re 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       left one space         l       right one space 
j       down one space         k       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       moves the cursor forward one word  
b       moves the cursor backward one word (if in the middle of a
        word, b will move you to the beginning of the current word). 
e       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.]

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.


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       moves the cursor to the top line of the screen. 
M       moves the cursor to the middle line of the screen. 
L       moves the cursor to the last line of the screen.

To scroll through the file and see other screens use:

ctrl-f  scrolls down one screen 
ctrl-b  scrolls up one screen 
ctrl-u  scrolls up a half a screen 
ctrl-d  scrolls down a half a screen

Two other useful commands for moving quickly from one end to the other of a document are G to move to the end of the file and 1G to move to the beginning of the file. If you precede G with 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       deletes the character under the cursor. 
X       deletes the character to the left of your cursor.
dw      deletes from the character selected to the end of the word.
dd      deletes all the current line.
D       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 4dd deletes 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      copies a word into a buffer (7yw copies 7 words)
yy      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 you’ve 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 J with a number to join multiple lines (4J joins 4 lines).


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

u       undoes the last change you made anywhere in the file.  Using u again
        will "undo the undo".
U       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      to save your file but not quit vi (this is good to do periodically in
        case of machine crash!).
:q      to quit if you haven't made any edits.
:wq     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!     reads the original file back in so that you can start over.
:q!     wipes out all edits and allows you to exit from vi.
  1. Mohan
    March 21, 2011 at 9:39 PM

    its very use full

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: