Slide 1: Compiled by S. Agarwal, SXCC, Kolkata. UNIX
AN INTRODUCTION Compiled by :
S. Agarwal, Lecturer & Systems Incharge
St. Xavier’s Computer Centre,
St. Xavier’s College
Kolkata. Slide 2: Compiled by S. Agarwal, SXCC, Kolkata. What is UNIX :
UNIX is an operating system.
An operating system is the program that controls all the other parts of a computer system, both the hardware and the software. It allocates the computer's resources and schedules tasks. It allows you to make use of the facilities provided by the system. Every computer requires an operating system. Slide 3: Compiled by S. Agarwal, SXCC, Kolkata. What is LINUX :
Linux is a free Unix-type operating system originally created by Linus Torvalds with the assistance of developers around the world. Developed under the GNU General Public License , the source code for Linux is freely available to everyone. The commands & functions of linux are similar to unix. Slide 4: Compiled by S. Agarwal, SXCC, Kolkata. Features of UNIX :
UNIX is a multi-user, multi-tasking operating system. Multiple users may have multiple tasks running simultaneously. This is very different than PC operating systems.
UNIX is a machine independent operating system. Not specific to just one type of computer hardware. Designed from the beginning to be independent of the computer hardware.
UNIX is a software development environment. Was born in and designed to function within this type of environment. Slide 5: Compiled by S. Agarwal, SXCC, Kolkata. The UNIX operating system is made up of three parts; the kernel, the shell and the programs.
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. Slide 6: Compiled by S. Agarwal, SXCC, Kolkata. 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). Slide 7: Compiled by S. Agarwal, SXCC, Kolkata. The shell is not only an interpreter for your interactive commands, which you type at the prompt. It is also a powerful programming language, which allows you to write shell scripts, to ``batch'' several shell commands together in a file. MS-DOS users will recognize the similarity to ``batch files''. Use of shell scripts is a very powerful tool, which will allow you to automate and expand your usage of UNIX. Slide 8: Compiled by S. Agarwal, SXCC, Kolkata. Bourne shell (sh)
This is the original Unix shell written by Steve Bourne of Bell Labs. It is available on all UNIX systems.
This shell does not have the interactive facilites provided by modern shells such as the C shell and Korn shell. The Bourne shell does provide an easy to use language with which you can write shell scripts. Slide 9: Compiled by S. Agarwal, SXCC, Kolkata. There are several types of shells in the UNIX world. The two major types are the ``Bourne shell'' and the ``C shell''.
The Bourne shell uses a command syntax like the original shell on early UNIX systems. The name of the Bourne shell on most UNIX systems is /bin/sh (where sh stands for ``shell'').
The C shell uses a different syntax, somewhat like the programming language C, and on most UNIX systems is named /bin/csh. Slide 10: Compiled by S. Agarwal, SXCC, Kolkata. Under Linux, there are several variations of these shells available.
The two most commonly used are the Bourne Again Shell, or ``Bash'' (/bin/bash), and Tcsh (/bin/tcsh).
Bash is a form of the Bourne shell with many of the advanced features found in the C shell. Because Bash supports a superset of the Bourne shell syntax, any shell scripts written in the standard Bourne shell should work with Bash.
For those who prefer to use the C shell syntax, Linux supports Tcsh, which is an expanded version of the original C shell. Slide 11: Compiled by S. Agarwal, SXCC, Kolkata. 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. Slide 12: Compiled by S. Agarwal, SXCC, Kolkata. Accessing a UNIX System
There are many ways that you can access a UNIX system. The main mode of access to a UNIX machine is through a terminal, which usually includes a keyboard, and a video monitor. For each terminal connected to the UNIX system, the kernel runs a process called a tty that accepts input from the terminal, and sends output to the terminal. Tty processes are general programs, and must be told the capabilities of the terminal in order to correctly read from, and write to, the terminal. If the tty process receives incorrect information about the terminal type, unexpected results can occur. Slide 13: Compiled by S. Agarwal, SXCC, Kolkata. Console
Every UNIX system has a main console that is connected directly to the machine. The console is a special type of terminal that is recognized when the system is started. Some UNIX system operations must be performed at the console. Typically, the console is only accessible by the system operators, and administrators. Slide 14: Compiled by S. Agarwal, SXCC, Kolkata. Logging In and Logging Out
To ensure security and organization on a system with many users, UNIX machines employ a system of user accounts. The user accounting features of UNIX provide a basis for analysis and control of system resources, preventing any user from taking up more than his or her share, and preventing unauthorized people from accessing the system. Every user of a UNIX system must get permission by some access control mechanism. Slide 15: Compiled by S. Agarwal, SXCC, Kolkata. Logging in
Logging in to a UNIX system requires two pieces of information: A username, and a password. When you sit down for a UNIX session, you are given a login prompt that looks like this:
Type your username at the login prompt, and press the return key. The system will then ask you for your password. When you type your password, the screen will not display what you type. Slide 16: Compiled by S. Agarwal, SXCC, Kolkata. Your username
Your username is assigned by the person who creates your account. Your username must be unique on the system where your account exists since it is the means by which you are identified on the system.
When your account is created, a password is assigned. The first thing you should do is change your password, using the passwd utility. To change your password, type the command
passwd Slide 17: Compiled by S. Agarwal, SXCC, Kolkata. Logging Out
When you're ready to quit, type the command
Before you leave your terminal, make sure that you see the login prompt, indicating that you have successfully logged out. If you have left any unresolved processes, the UNIX system will require you to resolve them before it will let you log out. Some shells will recognize other commands to log you out, like "logout" or even "bye". Slide 18: Compiled by S. Agarwal, SXCC, Kolkata. UNIX FILESYSTEM
The UNIX filesystem is heirarchical (resembling a tree structure). The tree is anchored at a place called the root, designated by a slash "/". Every item in the UNIX filesystem tree is either a file, or a directory. A directory is like a file folder. A directory can contain files, and other directories. A directory contained within another is called the child of the other. A directory in the filesystem tree may have many children, but it can only have one parent. A file can hold information, but cannot contain other files, or directories. Slide 19: Compiled by S. Agarwal, SXCC, Kolkata. Slide 20: Compiled by S. Agarwal, SXCC, Kolkata. Slide 21: Compiled by S. Agarwal, SXCC, Kolkata. To decribe a specific location in the filesystem heirarchy, you must specify a "path." The path to a location can be defined as an absolute path from the root anchor point, or as a relative path, starting from the current location. When specifying a path, you simply trace a route through the filesystem tree, listing the sequence of directories you pass through as you go from one point to another. Each directory listed in the sequence is separated by a slash.
UNIX provides the shorthand notation of "." to refer to the current location, and ".." to refer to the parent directory. Slide 22: Compiled by S. Agarwal, SXCC, Kolkata. The absolute path to the directory named "jon" would be:
The relative path from the directory named "student" to the directory named "jon" in the tree diagram would be:
../admin/jon Slide 23: Compiled by S. Agarwal, SXCC, Kolkata. UNIX COMMANDS Slide 24: Compiled by S. Agarwal, SXCC, Kolkata. ls (list)
When you first login, your current working directory is your home directory. Your home directory has the same name as your user-name, and it is where your personal files and subdirectories are saved.
To find out what is in your home directory, type
% ls (short for list)
The ls command lists the contents of your current working directory. Slide 25: Compiled by S. Agarwal, SXCC, Kolkata. There may be no files visible in your home directory, in which case, the UNIX prompt will be returned. Alternatively, there may already be some files inserted by the System Administrator when your account was created.
ls does not, in fact, cause all the files in your home directory to be listed, but only those ones whose name does not begin with a dot (.) Files beginning with a dot (.) are known as hidden files and usually contain important program configuration information. They are hidden because you should not change them unless you are very familiar with UNIX!!! Slide 26: Compiled by S. Agarwal, SXCC, Kolkata. To list all files in your home directory including those whose names begin with a dot, type
% ls –a
ls can take options:
-a is an example of an option. The options change the behaviour of the command. There are online manual pages that tell you which options a particular command can take, and how each option modifies the behaviour of the command. Slide 27: Compiled by S. Agarwal, SXCC, Kolkata. The characters * and ?
The character * is called a wildcard, and will match against none or more character(s) in a file (or directory) name. For example, in your unixstuff directory, type
% ls list*
This will list all files in the current directory starting with list....
% ls *list
This will list all files in the current directory ending with ....list
The character ? will match exactly one character.So ls ?ouse will match files like house and mouse, but not grouse.
% ls ?list Slide 28: Compiled by S. Agarwal, SXCC, Kolkata. mkdir (make directory)
To make a subdirectory called unixstuff in your current working directory type
% mkdir unixstuff
To see the directory you have just created, type
% ls Slide 29: Compiled by S. Agarwal, SXCC, Kolkata. cd (change directory)
The command cd directory means change the current working directory to 'directory'. The current working directory may be thought of as the directory you are in, i.e. your current position in the file-system tree.
To change to the directory you have just made, type
% cd unixstuff
Type ls to see the contents (which should be empty) Slide 30: Compiled by S. Agarwal, SXCC, Kolkata. In every directory there are two special directories called (.) and (..)
In UNIX, (.) means the current directory, so typing
% cd .
means stay where you are (the unixstuff directory).
This may not seem very useful at first, but using (.) as the name of the current directory will save a lot of typing, as we shall see later in the tutorial.
(..) means the parent of the current directory, so typing
% cd ..
will take you one directory up the hierarchy (back to your home directory).
Note: typing cd with no argument always returns you to your home directory. This is very useful if you are lost in the file system. Slide 31: Compiled by S. Agarwal, SXCC, Kolkata. pwd (print working directory)
Pathnames enable you to work out where you are in relation to the whole file-system. For example, to find out the absolute pathname of your home-directory, type cd to get back to your home-directory and then type
/user/eebeng99/ee91ab Slide 32: Compiled by S. Agarwal, SXCC, Kolkata. ~ (your home directory)
Home directories can also be referred to by the tilde ~ character. It can be used to specify paths starting at your home directory.
% ls ~/unixstuff
will list the contents of your unixstuff directory, no matter where you currently are in the file system.
What do you think Slide 33: Compiled by S. Agarwal, SXCC, Kolkata. SUMMARY Slide 34: Compiled by S. Agarwal, SXCC, Kolkata. Copy files :
cp file1 file2 is the command which makes a copy of file1 in the current working directory and calls it file2 Slide 35: Compiled by S. Agarwal, SXCC, Kolkata. Move files :
mv file1 file2 moves (or renames) file1 to file2. To move a file from one place to another, use the mv command. This has the effect of moving rather than copying the file, so you end up with only one file rather than two.
It can also be used to rename a file, by moving the file to the same directory, but giving it a different name. Slide 36: Compiled by S. Agarwal, SXCC, Kolkata. rm (remove), rmdir (remove directory)
To delete (remove) a file, use the rm command.
Inside unixstuff directory, type
% cp science.txt tempfile.txt% ls (to check if it has created the file)% rm tempfile.txt % ls (to check if it has deleted the file)
You can use the rmdir command to remove a directory (make sure it is empty first). Slide 37: Compiled by S. Agarwal, SXCC, Kolkata. clear (clear screen)
You may clear the terminal window of the previous commands so the output of the following commands can be clearly understood.
At the prompt, type
This will clear all text and leave you with the % prompt at the top of the window. Slide 38: Compiled by S. Agarwal, SXCC, Kolkata. Displaying the contents of a file on the screen
The command cat can be used to display the contents of a file on the screen. Type:
% cat science.txt
If the file is longer than than the size of the window, it scrolls past making it unreadable.
The command less writes the contents of a file onto the screen a page at a time. Type
% less science.txt
Press the [space-bar] to see another page, type [q] to quit reading. As you can see, less is used in preference to cat for long files. Slide 39: Compiled by S. Agarwal, SXCC, Kolkata. head
The head command writes the first ten lines of a file to the screen.
First clear the screen then type
% head science.txt
The tail command writes the last ten lines of a file to the screen.
Clear the screen and type
% tail science.txt Slide 40: Compiled by S. Agarwal, SXCC, Kolkata. Simple searching using less
Using less, you can search though a text file for a keyword (pattern). For example, to search through science.txt for the word 'science', type
% less science.txt
then, still in less (i.e. don't press [q] to quit), type a forward slash [/] followed by the word to search
less finds and highlights the keyword. Type [n] to search for the next occurrence of the word. Slide 41: Compiled by S. Agarwal, SXCC, Kolkata. grep
grep is one of many standard UNIX utilities. It searches files for specified words or patterns. First clear the screen, then type
% grep science science.txt
grep prints out each line containg the word science.
% grep Science science.txt
The grep command is case sensitive; it distinguishes between Science and science.
To ignore upper/lower case distinctions, use the -i option
% grep -i science science.txt Slide 42: Compiled by S. Agarwal, SXCC, Kolkata. To search for a phrase or pattern, you must enclose it in single quotes (the apostrophe symbol). For example to search for spinning top, type
% grep -i 'spinning top' science.txt
Some of the other options of grep are:
-v display those lines that do NOT match -n precede each maching line with the line number -c print only the total count of matched lines
Try some of them and see the different results. Don't forget, you can use more than one option at a time, for example, the number of lines without the words science or Science is
% grep -ivc science science.txt Slide 43: Compiled by S. Agarwal, SXCC, Kolkata. wc (word count)
A handy little utility is the wc command, short for word count. To do a word count on science.txt, type
% wc -w science.txt
To find out how many lines the file has, type
% wc -l science.txt Slide 44: Compiled by S. Agarwal, SXCC, Kolkata. SUMMARY Slide 45: Compiled by S. Agarwal, SXCC, Kolkata. REDIRECTION
If you run the cat command without specifing a file to read, it reads the standard input (the keyboard), and on receiving the'end of file' (^D), copies it to the standard output (the screen).
In UNIX, we can redirect both the input and the output of commands.
type cat without specifing a file to read
Then type a few words on the keyboard and press the [Return] key.
Finally hold the [Ctrl] key down and press [d] (written as ^D for short) to end the input.
In UNIX, we can redirect both the input and the output of commands. Slide 46: Compiled by S. Agarwal, SXCC, Kolkata. Redirecting the output :
We use the > symbol to redirect the output of a command. For example, to create a file called list1 containing a list of fruit, type
% cat > list1
Then type in the names of some fruit.
Press [Return] after each one.
pearbananaapple^D (Control D to stop)
The cat command reads the standard input (the keyboard) and the > redirects the output, which normally goes to the screen, into a file called list1
To read the contents of the file, type
% cat list1 Slide 47: Compiled by S. Agarwal, SXCC, Kolkata. The form >> appends standard output to a file. So to add more items to the file list1, type
% cat >> list1
Then type in the names of more fruit
peachgrapeorange^D (Control D to stop)
To read the contents of the file, type
% cat list1 Slide 48: Compiled by S. Agarwal, SXCC, Kolkata. To join (concatenate) list1 and list2 into a new file called biglist. Type
% cat list1 list2 > biglist
What this is doing is reading the contents of list1 and list2 in turn, then outputing the text to the file biglist
To read the contents of the new file, type
% cat biglist Slide 49: Compiled by S. Agarwal, SXCC, Kolkata. The command sort alphabetically or numerically sorts a list. Type
Then type in the names of some vegetables. Press [Return] after each one.
carrotbeetrootartichoke^D (control d to stop)
The output will be
artichokebeetroot carrot Slide 50: Compiled by S. Agarwal, SXCC, Kolkata. Redirecting the input :
Using < you can redirect the input to come from a file rather than the keyboard. For example, to sort the list of fruit, type
% sort < biglist
and the sorted list will be output to the screen.
To output the sorted list to a file, type,
% sort < biglist > slist
Use cat to read the contents of the file slist Slide 51: Compiled by S. Agarwal, SXCC, Kolkata. Pipes :
To see who is on the system with you, type
One method to get a sorted list of names is to type,
% who > names.txt% sort < names.txt
This is a bit slow and you have to remember to remove the temporary file called names when you have finished. What you really want to do is connect the output of the who command directly to the input of the sort command. This is exactly what pipes do. The symbol for a pipe is the vertical bar |
For example, typing
% who | sort
will give the same result as above, but quicker and cleaner.
To find out how many users are logged on, type
% who | wc -l Slide 52: Compiled by S. Agarwal, SXCC, Kolkata. SUMMARY Slide 53: Compiled by S. Agarwal, SXCC, Kolkata. On-line Manuals
There are on-line manuals which gives information about most commands. The manual pages tell you which options a particular command can take, and how each option modifies the behaviour of the command. Type man command to read the manual page for a particular command.
For example, to find out more about the wc (word count) command, type
% man wc
% whatis wc
gives a one-line description of the command, but omits any information about options etc. Slide 54: Compiled by S. Agarwal, SXCC, Kolkata. Apropos
When you are not sure of the exact name of a command,
% apropos keyword
will give you the commands with keyword in their manual page header. For example, try typing
% apropos copy Slide 55: Compiled by S. Agarwal, SXCC, Kolkata. File and directory permissions
UNIX supports access control. Every file and directory has associated with it ownership, and access permissions. Furthermore, one is able to specify those to whom the permissions apply.
Permissions are defined as read, write, and execute. The read, write, and execute permissions are referred to as r, w, and x, respectively.
Those to whom the permissions apply are the user who owns the file, those who are in the same group as the owner, and all others. The user, group, and other permissions are referred to as u, g, and o, respectively.
(groups: UNIX allows users to be placed in groups, so that the control of access is made simpler for administrators. ) Slide 56: Compiled by S. Agarwal, SXCC, Kolkata. The meaning of file and directory permissions
For a file, having read permission allows you to view the contents of the file. For a directory, having read permission allows you to list the directory's contents.
For a file, write permission allows you to modify the contents of the file. For a directory, write permission allows you to alter the contents of the directory, i.e., to add or delete files.
For a file, execute permission allows you to run the file, if it is an executable program, or script. Note that file execute permission is irrelevant for nonexecutable files. For a directory, execute permission allows you to cd to the directory, and make it your current working directory. Slide 57: Compiled by S. Agarwal, SXCC, Kolkata. Viewing permissions
To see the permissions on a file, use the ls command, with the -l option.
Execute the command
ls -l /etc/passwd
to view the information on the system password database. The output should look similar to this:
-rw-r--r-- 1 root sys 41002 Apr 17 12:05 /etc/passwd
The first 10 characters describe the access permissions. The first dash indicates the type of file (d for directory, s for special file, - for a regular file). The next three characters ("rw-") describe the permissions of the owner of the file: read and write, but no execute. The next three characters ("r--") describe the permissions for those in the same group as the owner: read, no write, no execute. The next three characters describe the permissions for all others: read, no write, no execute. Slide 58: Compiled by S. Agarwal, SXCC, Kolkata. Setting permissions
UNIX allows you to set the permissions on files that you own. The command to change the file permission mode is chmod. Chmod requires you to specify the new permissions you want, and specify the file or directory you want the changes applied to.
To set file permissions, you may use to the "rwx" notation to specify the type of permissions, and the "ugo" notation to specify those the permissions apply to.
To define the kind of change you want to make to the permissions, use the plus sign (+) to add a permission, the minus sign (-) to remove a permission, and the equal sign (=) to set a permission directly. Slide 59: Compiled by S. Agarwal, SXCC, Kolkata. The command
chmod g=rw- ~/.shrc
changes the file permissions on the file .shrc, in your home directory. Specifically, you are specifying group read access and write access, with no execute access.
To change the permissions on the .shrc file in your home directory so that group and others have read permission only.
type the command
chmod go=r-- ~/.shrc