Wednesday, November 11, 2009

BCA CS-63 (UNIX LESSONS)

UNIX LESSON 1

FEATURES OF UNIX

The UNIX operating system is a popular Operating system because of its simplicity in its design and functioning. The following are the key features which made the UNIX OS very popular:
• Multiuser system
• Time sharing
• Portability
• Multitasking
• Background processing
• Hierarchical file system
• Security and Protection
• Better communication
• Availability of compilers / tools / utilities
• Shell programming.

KERNEL AND THE SHELL

The main control program in a UNIX operating system is called the kernel. However, the kernel does not allow the user to give its commands directly; instead when the user types commands on the keyboard they are read by another program in the Operating System called a shell which parses, checks, translates and then passes them to the kernel for execution.

There are a number of different shells available, with names such as sh, csh, tcsh, ksh, bash, each with different rules of syntax; these are partly though not completely responsible for the diversity of UNIX. Later in our discussion we will see what are the criteria to select a shell. Once the command has been interpreted and executed, the kernel sends its reply, which may simply be a prompt for the next command to be entered, either directly to the display monitor. This is a program responsible for deciding where and in what form the output will appear on the display monitor. If for any reason the kernel cannot perform the command requested (wrong syntax), for example, the reply will be an error message; the user must then re-enter the corrected command.





UNIX COMMANDS


With many competing standards (UNIX 98, UNIX95, POSIX.2, SVID3, 4.3BSD, etc.) and most users having to deal with multiple systems, it’s crucial to know which commands are important enough to be used on nearly every version of UNIX. The following is a list of commonly used commands which are organised under different categories for understanding and ease of use. Keys proceeded by a ^ character are CONTROL key combinations.

Terminal Control Characters

^h backspace erase previously typed character
^u erase entire line of input so far typed
^d end-of-input for programs reading from terminal
^s stop printing on terminal
^q continue printing on terminal
^z currently running job; restart with bg or fg
DEL, ^c kill currently running program and allow clean-up before exiting
^\ emergency kill of currently running program with no chance of cleanup

Login and Authentication

login access computer; start interactive session
logout disconnect terminal session
passwd change local login password; you MUST set a non-trivial password

Information
date show date and time
history list of previously executed commands
pine send or receive mail messages
msgs display system messages
man show on-line documentation by program name
info on-line documentation for GNU programs
w, who who is on the system and what are they doing
who am i who is logged onto this terminal
top show system status and top CPU-using processes
uptime show one line summary of system status
finger find out info about a user@system

File Management

cat combine files
cp copy files
ls list files in a directory and their attributes
mv change file name or directory location
rm remove files
ln create another link (name) to a file
chmod set file permissions
des encrypt a data file with a private key
find find files that match specified criteria

Display Contents of Files

cat copy file to display device
vi screen editor for modifying text files
more show text file on display terminal with paging control
head show first few lines of a file(s)
tail show last few lines of a file; or reverse line order
grep display lines that match a pattern
lpr send file to line printer
pr format file with page headers, multiple columns etc.
diff compare two files and show differences
cmp compare two binary files and report if different
od display binary file as equivalent octal/hex codes
file examine file(s) and tell you whether text, data, etc.
wc count characters, words, and lines in a file

Directories

cd change to new directory
mkdir create new directory
rmdir remove empty directory (remove files first)
mv change name of directory
pwd show current directory

Devices

df summarize free space on disk device
du show disk space used by files or directories

Special Character Handling for C-shell

* match any characters in a file name
~user shorthand for home directory of "user"
$ name substitute value of variable "name"
\ turn off special meaning of character that follows
In pairs, quote string w/ special chars, except !
In pairs, quote string w/ special chars, except !, $
` In pairs, substitute output from enclosed command

Controlling Program Execution for C-shell

& run job in background
DEL, ^c kill job in foreground
^z suspend job in foreground
fg restart suspended job in foreground
bg run suspended job in background
; delimit commands on same line
( ) group commands on same line


DESCRIPTION OF COMMONLY USED UNIX COMMANDS

The description for the most commonly used UNIX commands is given below in an alphabetic order.

cat

cat allows you to read multiple files and then print them out. You can combine files by using the > operator and append files by using >>.
Syntax: cat [argument] [specific file]
Example:
cat abc.txt
If you want to append three files (abc.txt, def.txt, xyz.txt), give the command as,
cat abc.txt def.txt xyz.txt > all

cd, chdir

cd (or chdir) stands for “change directory”. This command is the key command to move around your file structure.
Syntax: cd [name of directory you want to move to]
When changing directories, start with / and then type the complete file path, like
cd /vvs/abc/xyz

chmod

chmod (which stands for “change mode”) changes who can access a particular file. A “mode” is created by combining the various options from who, opcode, and permission.
Syntax: chmod [option] mode file
If you look at a list of files using the long list command ls –l, you’ll see the permissions, owner, file size, modification time, and filename. The first column of the list shows who can read, write, and execute the files or directories, in other words, the permissions. It basically shows who has permission to do what to a given file or directory. r stands for “read” and means that you’re allowed to read the file or directory. w stands for “write” and gives permission to edit or change the file as well
as create, move, rename, or remove a directory. x stands for “execute” which gives permission to run a file or search a directory. Every file or directory has four sets of rwx permissions. The first set represents the user (u), the second set represents the group (g), the third set represents other (o), and the fourth set represents all (a). The column will look like this:
rwxrwxrwx
Each set of rwx represents user, group, and other respectively. Only the owner of a file or a privileged user may change the permissions on a file. There are two ways to change permissions on a file or directory, either numerically or by using lettered commands. Both ways use the command chmod. To add permissions to a file, you use +, to remove permissions you use-.
For example, take a file:
-rw-r--r-- 1 yash mony 476 Apr 14 17:13 vvs.txt
To allow a group (mony, in this case) “write” access, you would type:
chmod g+w vvs.txt
If you wanted to remove “read” ability from “other” you would type:
chmod o-r vvs.txt
It is also possible to specify permissions using a three-digit sequence. This is a more efficient way to change permissions (or at least it requires less typing), so use this method if it doesn’t confuse you. Each type of permission is given an octal value. Read is given the value of 4, write is given the value of 2, and execute is given the value of 1. These values are added together for each user category. The permissions are changed by using a three-digit sequence with the first digit representing owner permission, the second digit representing group permission, and the third digit representing other permission. For example, if you wanted to make vvs.txt readable, writable, and executable for the user, readable and writable for the group, and readable for other, you would type:
chmod 764 vvs.txt
The first digit means readable and writable for the user (4+2+1), the second digit means readable and writable for the group (4+2+0), and the third digit means readable for other (4+0+0).
If you want to change the permissions on a directory tree use the -R option. chmod -R will recursively change the permissions of directories and their contents.

chown

chown changes who owns a particular file or set of files. New owner files refer to a user ID number or login name that is usually located in the /etc/password directory. The owner of a file or directory can be seen by using the command.
Syntax: chown [option] newowner files
Only the owner of a file or a privileged user can change the permissions on a file or directory. The following example changes the owner of vvs.txt to sridhar
chown sridhar vvs.txt

cp

The cp command copies files or directories from one place to another. You can copy a set of files to another file, or copy one or more files under the same name in a directory. If the destination of the file you want to copy is an existing file, then the existing file is overwritten. If the destination is an existing directory, then the file is copied into that directory.
Syntax: cp [options] file1 file2
If you want to copy the file favourites.html into the directory called laksh, you give the command as:
cp favourites.html /vvs/laksh/
A handy option to use with cp is -r. This recursively copies a particular directory and all of its contents to the specified directory, so you won’t have to copy one file at a time.

date

The date command can be used to display the date or to set a date.
Syntax: date [option] [+format] date [options] [string]
The first structure shows how date can be used to display the current date. A certain format can be specified in which the date should be displayed. Check the Unix manual for specific formats and options. The second structure allows you to set the date by supplying a numeric string. Only privileged users will be able to use this second command structure.

diff

diff displays the lines that differ between two given files.
Syntax: diff [options] [directory options] file1 file2
diff can be an extremely valuable tool for both checking errors and building new pages. If you run a diff between two files, you'll be shown what differences the files have line by line. The lines referring to file1 are marked with the <> symbol. If the file is a directory, diff will list the file in the directory that has the same name as file2. If both of the files are directories, diff will list all the lines differing between all files that have the same name.
If you have a file that is not working properly, it can be a great help to check it against a similar file that is working. It will often quickly alert you to a line of code that’s missing.
A handy option to use if you want to generally compare two files without noting the complex differences between them is the -h option (h stands for half-hearted). Using -i as an option will ignore differences in uppercase and lowercase characters between files, and -b will ignore repeating blanks and line breaks.

exit

The exit command allows you to terminate a process that is currently occurring.
For example, if you wanted to leave a remote host that you were logged onto (see rlogin also), you should type exit. This would return you to your home host.

find

find searches through directory trees beginning with each pathname and finds the files that match the specified condition(s). You must specify at least one pathname and one condition.
Syntax: find pathname(s) condition(s)
There are several handy conditions you can use to find exactly what you want. The -name condition will find files whose names match a specified pattern. The structure for the name condition is:
find pathname -name pattern
The condition -print will print the matching files to the pathname specified. -print can also be used in conjunction with other conditions to print the output.
If you wanted to find all the files named favorites.html in the directory Ram, then you’d do this:
find /Ram -name favorites.html –print
This looks through the directory Ram and finds all the files in that directory that contain favorites.html, then prints them to the screen. Your output would look like this:
/Ram/sixteen_candles/favorites.html
/Ram/favorites.html
/Ram/breakfast_club/favorites.html
All meta-characters (!, *, ., etc.) used with -name should be escaped (place a \ before the character) or quoted. Meta-characters come in handy when you are searching for a pattern and only know part of the pattern or need to find several similar patterns. For example, if you are searching for a file that contains the word “favorite”, then use the meta-character * to represent matching zero or more of the preceding characters. This will show you all files which contain favorite.
find /Ram -name '*favorite*' -print
This looks through the directory Ram and finds all the files in that directory that contain the word “favorite”. The output would look like this:
/Ram/sixteen_candles/favorites.html
/Ram/favorites.html
/Ram/least_favorites.html
/Ram/breakfast_club/favorites.html
/Ram/favorite_line.html
The -user condition finds files belonging to a particular user ID or name.

finger

finger displays information about various users as well as information listed in the .plan and .project files in a user’s home directory. You can obtain the information on a particular user by using login or last names. If you use the latter, the info on all users with that last name will be printed. Environments that are hooked up to a network recognize arguments (users) in the form of user@host or @ host.
Syntax: finger [options] users

grep

The grep command searches a file or files for lines that match a provided regular expression (“grep” comes from a command meaning to globally search for a regular expression and then print the found matches).
Syntax: grep [options] regular expression [files]
To exit this command, type 0 if lines have matched, 1 if no lines match, and 2 for errors. This is very useful if you need to match things in several files. If you wanted to find out which files in our vvs directory contained the word “mca” you could use grep to search the directory and match those files with that word. All that you have to do is give the command as shown:
grep ‘mca’ /vvs/*
The * used in this example is called a meta-character, and it represents matching zero or more of the preceding characters. In this example, it is used to mean “all files and directories in this directory”. So, grep will search all the files and directories in vvs and tell you which files contain “mca”.

head


head prints the first couple of lines of one or multiple files. -n is used to display the first n lines of a file(s). The default number of lines is 10.
Syntax: head [-n] [files]
For example, the following command will display the first 15 lines of favourites.html.
head -15 favourites.html

kill


kill ends the execution of one or more process ID’s. In order to do this you must own the process or be designated a privileged user. To find the process ID of a certain job give the command ps.
Syntax: kill [options] PIDs
There are different levels of intensity to the kill command, and these can be represented either numerically or symbolically. kill -1 or HUP makes a request to the server to terminate the process, while kill -9 or kill KILL forces a process to terminate absolutely. Most politely, UNIX users will attempt to kill a process using -1 first before forcing a process to die.

less


less is similar to more in that it displays the contents of files on your screen. Unlike more, less allows backward and forward movement within the file. It does not read the whole file before displaying its contents, so with large files less displays faster than more. Press h for assistance with other commands or q to quit.
Syntax: less [options] [files]

lprm

lprm removes printer queue requests.
Syntax: lprm /usr/ucb/lprm [optons] [job#] [users]
The lprm command will remove a job or jobs from a printer’s queue. If lprm is used without any arguments, it will delete the active job if it is owned by the user. If the command is used with -, then all the jobs owned by the user will be removed. To remove a specific job, use the job number.

ls

ls will list all the files in the current directory. If one or more files are given, ls will display the files contained within “name” or list all the files with the same name as “name”. The files can be displayed in a variety of formats using various options.
Syntax: ls [options] [names]
ls is a command you'll end up using all the time. It simply stands for list. If you are in a directory and you want to know what files and directories are inside that directory, type ls. Sometimes the list of files is very long and it flies past your screen so quickly you miss the file you want. To overcome this problem give the command as shown below:
ls | more
The character | (called pipe) is typed by using shift and the \ key. | more will show as many files as will fit on your screen, and then display a highlighted “more” at the bottom. If you want to see the next screen, hit enter (for moving one line at a time) or the spacebar (to move a screen at a time). | more can be used anytime you wish to view the output of a command in this way.
A useful option to use with ls command is -l. This will list the files and directories in a long format. This means it will display the permissions (see chmod), owners, group, size, date and time the file was last modified, and the filename.
drwxrwxr-x vvs staff 512 Apr 5 09:34 sridhar.txt
-rwx-rw-r-- vvs staff 4233 Apr 1 10:20 resume.txt
-rwx-r--r-- vvs staff 4122 Apr 1 12:01 favourites.html
There are several other options that can be used to modify the ls command, and many of these options can be combined. -a will list all files in a directory, including those files normally hidden. -F will flag filenames by putting / on directories, @ on symbolic links, and * on executable files.

man


The man command can be used to view information in the online Unix manual.
Syntax: man [options] [[section] subjects]
man searches for information about a file, command, or directory and then displays it on your screen. Each command is a subject in the manual. If no subject is specified, you must give either a keyword or a file. You can also search for commands that serve a similar purpose. For example, if you want more information about the chmod command, you should type:
man chmod
A screen will then appear with information about chmod. Type q to quit.

mkdir


mkdir creates a new directory.
Syntax: mkdir [options] directory name
For example, to create a directory called parkhyath in the present working directory, give the command as,
mkdir prakhyath

more


more displays the contents of files on your screen.
Syntax: more [options] [files]
To have the next line displayed, hit the return key, otherwise press the spacebar to bring up the next screen. Press h for assistance with other commands, n to move to the next file, or q to quit.

mv


mv moves files and directories. It can also be used to rename files or directories.
Syntax: mv [options] source target
If you wanted to rename vvs.txt to vsv.txt, you should give the command as:
mv vvs.txt vsv.txt
After executing this command, vvs.txt would no longer exist, but a file with name vsv.txt would now exist with the same contents.

passwd


The passwd command creates or changes a user’s password. Only the owner of the password or a privileged user can make these changes.
Syntax: passwd [options] files

ps


The ps command prints information about active processes. This is especially useful if you need to end an active process using the kill command. Use ps to find out the process ID number, then use kill to end the process.
Syntax: ps [options]

pwd


pwd prints the pathname of the current directory. If you wanted to know the path of the current directory you were in you give the command as pwd. You will get the complete path.

rlogin


The rlogin command, which stands for remote login, lets you connect your local host to a remote host.
Syntax: rlogin [options] host
If you wanted to connect to the remote host vsmanyam and you were on sree, you would do this:
rlogin vsmanyam password:******
You would then be at vsmanyam

rm

rm removes or deletes files from a directory.
Syntax: rm [options] files
In order to remove a file, you must have write permission to the directory where the file is located. While removing a which does’t have write permission on, a prompt will come up asking you whether or not you wish to override the write protection.
The -r option is very handy and very dangerous. -r can be used to remove a directory and all its contents. If you use the -i option, you can possibly catch some disastrous mistakes because it’ll ask you to confirm whether you really want to remove a file before going ahead and doing it.

rmdir

rmdir allows you to remove or delete directories but not their contents. A directory must be empty in order to remove it using this command.
Syntax: rmdir [options] directories
If you wish to remove a directory and all its contents, you should use rm -r.

su

su stands for superuser (a privileged user), and can be used to log in as another user. If no user is specified and you know the appropriate password, su can be used to log in as a superuser.
Syntax: su [option] [user] [shell_args]

tail

The tail command will print the last ten lines of a file. tail is often used with the option -f, which tells tail not to quit at the end of file and instead follow the file as it grows.
Syntax: tail [options] [file]
Use ctrl-c to exit this command.

telnet

You can communicate with other computers by using the telnet protocol. The host must be a name or an Internet address. telnet has two modes: the command mode, which is indicated by the telnet > prompt, and an input mode which is usually a session where you would log on to the host system. The default mode is command mode, so if no host is given it will automatically go into this mode. If you need help while in the command mode, type? or help.
Syntax: telnet [host [port]]

who

The who command prints out information about the most recent status of the system. If no options are listed, then all of the usernames currently logged onto the system are displayed.
Syntax: who [options] [file]
The option am i will print the name of the current user. The -u option will display how long the terminal has been idle.

No comments:

Post a Comment