Вы находитесь на странице: 1из 40

Unix and shell programming UNIT-1 CHAPTER 1 THE UNIX OPERATING SYSTEM

UNIX OPERATING SYSTEM:


Like DOS and windows, there is another operating system called UNIX UNIX operating system arrived earlier than the previous two (i.e., DOS and Windows) operating system. UNIX is a giant operating system. UNIX runs on every hard ware and provides inspiration to open source movement. UNIX operating system is difficult to use, even when the user is an experienced professional. UNIX uses numerous symbols. UNIX operating system doesnt tell whether you are right or wrong and it doesnt give any warnings. Interaction with UNIX system is through a command interpreter called the shell. Commands in UNIX are just like English languages.

A BRIEF INTRODUCTION TO UNIX SYSTEMS: Logging in with username and password: UNIX is security conscious. It can be used only by those persons who maintain an account with the computer system. The list of account is maintained separately in the computer. System Administrator is a person who grants you the authority to use the system. To login in UNIX system there is a login prompt which indicates that the terminal is available for someone to login. This login prompt also indicates that the previous user has logged out. For example, consider that you have a user account by name kumar. Enter
Rashmi Shenoy K Dept Of CS&EPage 1

Unix and shell programming


the string at the login prompt then press enter key after the string. Login: kumar [Enter] Password: The system now requests you to enter the password. The password entry is displayed as asterisk (*) which is another security feature built in the system. Login: kumar [Enter] Password: ******* [Enter] The string that you entered at the first prompt (ie, login) is known as login name or user-id or username and the secret code entered is called as Password. If you enter either username or password incorrectly, then the system gives the following message. Login incorrect login: After logging in you will see a $ prompt, with the cursor constantly blinking beside it. This $ symbol is a typical UNIX prompt. For some UNIX system % prompt will be there instead of $ prompt and the system administrator will be having # prompt. THE COMMANDS: 1] date: Displaying both date and time. UNIX system has date command that shows or displays the date and time of the system you are logged in. $ date [Enter] Fri Aug 19 13:28:33 IST 2009 [Enter] $_ date command displays the current day, month, date, time and year. IST here is

Rashmi Shenoy K Dept Of CS&EPage 2

Unix and shell programming


Indian Standard Time. 2] tput clear: Clearing the screen. All UNIX systems offer the tput command to clear the screen. When you use tput as it is, (i.e., without any additional words) it will display like: $ tput usage: tput [-T [term]] capname [parm argument] OR: tput S << Therefore tput command requires additional input to work properly.To Make tput work, follow tput with the word clear. $ tput clear The screen clears and the prompt and the cursor are positioned at the top-left corner of the screen. Some systems also offer the clear command, but the standard UNIX specifications dont require UNIX systems to offer this command. 3] cal: The Calendar. cal is a handy tool which can be invoked any time to see the calendar of any specific month, or a complete year. To see the calendar of the month of July, 2006, provide the month number and year as the two arguments to cal $ cal 7 2006 July 2006 Su Mo Tu We Th Fr Sa 1 2 8 9 3 4 5 6 7

10 11 12 13 14

15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Rashmi Shenoy K Dept Of CS&EPage 3

Unix and shell programming


With cal, we can produce the calendar for any month or year between the years 1 and 9999. 4] who: Who are the users? UNIX is a system that can be concurrently used by multiple users. For knowing the people who are using the systems, you have to use who command. $ who kumar vipul console pts/4 May May 9 9 09:31 09:32 (:0) (:0.0)

There are currently two users- kumar and vipul. These are the user-ids or usernames which the user uses to login. The output includes the username (ie, kumar). The second column shows the name of the terminal the user is working on (ie, console). The date and time of the login are also shown in third, fourth and fifth column. The output of the who command doesnt include any headers to indicate what the various columns mean. 5] ps: Viewing Processes. Every command that you run gives rise to a process. To view all processs that you are responsible for creating, run the ps command. $ ps PID 344 TTY console TIME 01:00 CMD ksh

ps command generates a header followed by line containing the details of the ksh process. This process has a unique number (ie, 344 here in the example above) called the process-id, and when you log out, this process is killed.

6] ls: Listing Files.

Rashmi Shenoy K Dept Of CS&EPage 4

Unix and shell programming


UNIX system has a large number of files that control its functioning, and users also create files on their own. These files are organised in separate folders called directories. ls command can be used to list the names of the files available in the directory. $ ls README chap01 chap02 chap03 helpdir progs The files are arranged alphabetically with uppercase letters having precedence over lowercase letters called as ASCII collating sequence.

To get the filenames having similar names, we can give ls command like: $ ls chap* chap01 cahp02 chap03 If you want to know more about the files, you can use ls command with option l, between the command and the file name.

$ ls l chap*

Rashmi Shenoy K Dept Of CS&EPage 5

Unix and shell programming


-rw-r- -r- - 1 kumar -rw-r- -r- - 1 kumar -rw-r- -r- - 1 kumar users users users 5609 23456 Apr 23 09:30 chap01 May 14 17:55 chap02 chap03

234678 June 14 04:09

The argument beginning with a hyphen is known as an option. An option changes the default behaviour of the command, so if ls displays a columnar list of files, the l option makes to display some of the attributes also. 7] wc: Counting Number of Lines in a file The wc command gives the number of lines in a particular file. $ wc list 6 7 43 list

Here list is the filename given as argument to the wc command. The first column displays Number of lines in the file list, second column displays Number of words in the file list, and third column displays Number of the characters in the file list. 8] exit: Signing Off To suspend a session you have to use exit command. This command gives the login prompt which indicate that the user has logged out successfully and another user can be logged in. $ exit login:

CHAPTER 2

Rashmi Shenoy K Dept Of CS&EPage 6

Unix and shell programming THE UNIX ARCHITECTURE AND COMMAND USAGE
THE UNIX ARCHITECTURE: The entire UNIX system is supported by a handful of essentially simple, though somewhat abstract concepts. The software architecture of UNIX has
1. 2. 3.

Division of Labor : Kernel and Shell The File and Process The System Calls

1] Division of Labor: Kernel and Shell UNIX architecture comprises of two major components-The shell and the kernel. The Kernel interacts with the machines hardware and the shell interacts with the user. The Kernel is the core of the operating system. It is a collection of routines mostly written in C. It is loaded ino the memory when the system is booted and communicates directly with the hardware. User programs that need to access the hardware use the services of the kernel and the kernel performs the job on behalf of the user. These programs access the kernel through a set of functions called system calls. Kernel manages the systems memory, schedules processes, decides their priorities and performs various other tasks. The shell performs the role of command interpreter. Even though there is only one kernel running on the system, there could be several shells in action, one for each user whos logged in. When you enter a command through keyboard, the shell thoroughly examines the keyboard input for special characters. If it finds any, it rebuilds a simplified command line, and finally communicates with the kernel to see that the command is executed. The kernel is represented by the file depending on the system. The shell is represented by sh(Bourne shell), csh(C shell), ksh(Korn shell) or bsh(Bash shell). One of these shells will be running when the user logs in. To know which shell is running right now, you have to type $ echo

Rashmi Shenoy K Dept Of CS&EPage 7

Unix and shell programming


$SHELL.

2] The File and Process Two simple entities support the UNIX system the file and the process. A file is an array of bytes that stores information. It is also related to another file by being part of a single hierarchical structure. A process can be treated as a time image of an executable file. Like files, process also belongs to a hierarchical structure.

Rashmi Shenoy K Dept Of CS&EPage 8

Unix and shell programming


3] The System Calls The UNIX systems consist of kernel, shell and applications. Though there are over a thousand commands in the system, they all use a handful of functions called System Calls, to communicate with the kernel. If an operating system uses different system calls, then it wont be UNIX system. For example: Write system cal is used to write a file. Open system call is used to open a file. These system calls are built into the kernel and interaction through them represents an efficient means of communication with the system. FEATURES OF UNIX: UNIX is an operating system, so it has all the features an operating system is supposed to have.
1. 2. 3. 4. 5. 6. 7.

UNIX:A Multiuser System UNIX:A multitasking System The Building Block Approach The UNIX Toolkit Pattern Matching Programming Facility Documentation

1] UNIX: A Multiuser System UNIX is a multiprogramming system. It permits multiple programs to run in two ways:

Multiple users can run separate jobs. A single user can also run multiple jobs.

In UNIX, the resources are actually shared between all users. UNIX is also a multiuser system.

Rashmi Shenoy K Dept Of CS&EPage 9

Unix and shell programming


2] UNIX: A Multitasking System A single user can also run multiple tasks simultaneously. UNIX is a multitasking system. It is possible for a user to edit a file, print another file on the printer, send email and browse the internet at a time. In a multitasking environment, a user sees one job running in foreground and the rest running in the background. 3] The Building-Block Approach The Designers of UNIX operating system developed a few hundred commands each performing one simple job only. For example: two commands ls and wc can be used with the | (pipe) to count the number of files in your directory. No separate command was designed to perform the job. The commands which are connected in this way are called filters because they filter or manipulate data in different ways. UNIX tools are designed with the requirement that the output of one tool can be used as input to another. 4] The UNIX Toolkit UNIX system uses general-purpose tools, text manipulation utilities (called filters), compilers and interpreters, networked applications and system administration tools. New tools are being added and the older ones are being removed or modified. 5] Pattern Matching UNIX features very sophisticated pattern matching features. Instead of giving all filenames as input for ls command, you can give an unusual argument like (chap*). Eg: $ ls (chap*)

Rashmi Shenoy K Dept Of CS&EPage 10

Unix and shell programming


chap01 chap02 chap03 The * is a special character used by the system to indicate that it can match number of filenames. Matching is not only for filenames. The *(known as metacharacter) is not the only special character used by UNIX system, there are several others. Some of the most advanced and useful tools also use a special expression called a regular expression. 6] Programming Facility The UNIX shell is also a programming language. It has aii the necessary ingredients, like control structures, loops and variables. These features are used to design shell scripts. Many of the systems function can be controlled and automated by using shell scripts. 7] Documentation The online facility available for documentation in UNIX system is the man command, which remains the most important reference for commands and their configuration files. LOCATING COMMANDS: The UNIX system is commandbased i.e., things happen because of the commands that you key in. UNIX commands are not more than five characters long. All UNIX commands are single words like ls, cat, who etc. These names are all in lowercase. For example, if you type uppercase instead of lowercase, it will display like: $ LS bash: LS: command not found This message is from the shell (here, the Bash shell). There is no command named LS on the UNIX system.

Rashmi Shenoy K Dept Of CS&EPage 11

Unix and shell programming


These commands are essentially files, containing programs, mainly written in C. Files are stored in directories. For example, ls command is a file found in the directory /bin. You can find the location of an executable program using type command. $ type ls Ls is /bin/ls This means that when you execute ls command, the shell locates this file in / bin directory and makes arrangements to execute it. THE PATH: The sequence of directories that the shell searches to look for a command is specified in its own PATH variable. These directories are separated by colons. echo command is used to evaluate this variable and you can see list of directories separated by colons. $ echo $PATH /bin:/usr/bin:/usr/local/bin:/usr/ccs/bin:/usr/local/java/bin: There are six directories in the above colon separated list. First / indicates the topmost directory called root. To consider the second one, /usr/bin represents a hierarchy of three directory names. Here usr is below the root directory and bin is below the usr. When you issue a command, the shell searches this list in the sequence specified to locate and execute it. INTERNAL AND EXTENAL COMMANDS: Some commands are implemented as part of the shell itself rather than separate executable files. Such commands are called internal commands. If a command exists both as an internal command of the shell and external command, then the shell will accord top priority to its own internal command with the same name. Some built-in commands are echo, pwd etc Since ls command is a program or file having an independent existence in the /bin directory, it is branded as an external command. Most commands are

Rashmi Shenoy K Dept Of CS&EPage 12

Unix and shell programming


external in nature, but there are some which are not found or executed even if they are in one of the directories specified by PATH. For example: $ type echo echo is a shell builtin echo is not an external command, ie when you type echo, the shell wont take in its PATH to locate it. echo command execute from its own set of built-in commands that are not stored as separate files. These built-in commands, of which echo is a member are known as internal commands. The shell does all the work. The shell program starts running when the user logs in and dies when user logs out. The shell is an external command with a difference; it possesses its own set of internal command. COMMAND STRUCTURE: UNIX commands take the following syntax: Command [option] [argument] Where command is the command name, options means set of option which the command can take, arguments means the arguments used. Commands and arguments have to be separated by spaces or tabs to enable tha system to interpret them as words. A contiguous string of spaces and tabs together are called whitespace. The shell compresses multiple occurrences of whitespace into a single whitespace. UNIX arguments range from the simple to the complex. They consist of options, expressions, instructions, filenames etc... 1] OPTIONS Options are special type of arguments which is used with a sign in the beginning.

Rashmi Shenoy K Dept Of CS&EPage 13

Unix and shell programming


For example: $ ls -l -l here is a special argument to ls known as an option. An option is normally preceded by a minus sign [-] to distinguish it from filenames. There must not be any whitespace between - and l. If you give wrong option or not a valid option, then the shell locates the command. But it finds the option wrong. For example: $ ls -z ls: illegal option z If you type your command with no space between command and option, then it will display as command not found. For example: $ ls-l bash: ls-l: command not found Options are given a special name because they are predetermined. Options can be normally combined with only one sign. For example: Instead of using $ ls l a t We can use one minus sign like $ ls lat

Rashmi Shenoy K Dept Of CS&EPage 14

Unix and shell programming


2] FILENAME ARGUMENTS Many UNIX commands use filename as argument so the command can take input from the file. If a command uses filename as argument, it will be its last argument and after all options. For example: $ ls lat chap01 chap02 chap03 $ cp chap01 chap02 progs $ rm chap01 chap02 The command with its arguments and options is known as the command line. This command line can be considered complete only after the user has pressed [Enter], so that the entire line is fed to the shell as its input for interpretation and execution. 3] EXCEPTIONS Some commands like pwd do not take any options and arguments and who command may or may not be specified with arguments. The ls command can run without arguments For example: $ ls It can be used only with options For example: $ ls l It can be used only with filenames For example: $ ls filename And it can be used with the combination of both option and filename For example: $ ls l filename Some commands like cut compulsorily take options. Some commands like grep, sed can take an expression as an argument, or a set of instructions as argument.

Rashmi Shenoy K Dept Of CS&EPage 15

Unix and shell programming


FLEXIBILTY OF COMMAND USAGE: The UNIX system provides certain degree of flexibility in the usage of commands. A command can be entered in more than one way. 1] COMBINING COMMANDS UNIX allows the user to specify more than one command in the command line. Each command has to be separated from the other by a ; (semicolon). For example: $ wc note ; ls l note You can even group several commands together so that their combined output is redirected to a file. For example: $ (wc note; ls l note)>newlist The combined outputs of the two commands are now sent to file newlist. This is called redirecting the output. Here whitespace doesnt bother. When a command line contains a semicolon, the shell understands that the command on each side of it needs to be processed separately. The ;here is known as metacharacter. 2] A COMMAND LINE CAN OVERFLOW OR BE SPLIT INTO MULTIPLE LINES The terminal width of command is restricted to 80 characters, but that doesnt prevent the user from entering a command. In one line even though the total width may exceed 80 characters, the command simply overflows to the next line though it is still in a single logical line. When you split a long command into multiple lines, the shell issues a secondary prompt, usually >, to indicate that the command line is not complete. For example: $ echo This is

Rashmi Shenoy K Dept Of CS&EPage 16

Unix and shell programming


>a three-line >text massage The output of the above command will be This is a three-line text message 3] ENTERING A COMMAND BEFORE PREVIOUS COMMAND HAS FINISHED UNIX provides a full-duplex terminal where the user can type a command at any time. When the user runs a long program, the prompt wont appear until program execution is complete. Subsequent commands can be entered at the keyboard without waiting for the prompt. Prompt may or may not appear on the screen. The command that the user enters is not seen by the shell as its output when it is busy running another program. The input remains stored in a buffer (a temporary memory storage) that is maintained by the kernel for all keyboard input. The command is passed to the shell after completing the execution of the previous input or command. man: BROWSING THE MANUAL PAGE ON-LINE: UNIX offers an omline help facility in the man command. man displays the documentation called the man documentation. For example: To seek help on the wc command, the user simply has to run man command with wc as argument. $ man wc The entire information about wc command is displayed on the screen. The man command represents the first page and then pauses. It is done by sending its output to a pager program, which displays output at one page at a time. The pager

Rashmi Shenoy K Dept Of CS&EPage 17

Unix and shell programming


is actually a UNIX command, and man command is always preconfigured to be used with a specific pager. UNIX system currently uses two pager programs:

more, Brekeleys pager, which is now available universally as a superior alternative to the original pg command. less, the standard pager used on Linux systems, but also available for all UNIX platforms. Less is modeled on the vi editor and is more powerful than more because it provides vi-like navigational and search facilities.

On a man page that uses more as the pager, the user will see a prompt at the bottom-left of the screen which looks like: ---More(26%) Less shows : prompt At this prompt the user can press a key to perform navigation, or search for string. The key which the user presses is interpreted as one of the mans internal commands. Many UNIX utilities like vi and mail also have their own internal commands. To quit the pager and man, press q. NAVIGATION AND SEARCH There are numerous navigation commands. For example:

f or spacebar, displays by one screen text at a time. b, moves back one screen.

The man documentation is sometimes quite extensive, and the search facility lets the user to locate a page containing a keyword quite easily. For example: To call up the page containing the word clobber by using the string with the / (front slash): / clobber [Enter] You are taken to the page containing clobber. If that is not the page you are looking for, then you can repeat the search by pressing n.

Rashmi Shenoy K Dept Of CS&EPage 18

Unix and shell programming


UNDERSTANDING THE man DOCUMENTATION: The man documentation is organized in 8 sections. Later enhancements have added subsections (like 1C, 1M, 3N etc). Occasional references to other sections can also be reflected in the SEE ALSO section of a man page. When you use man command, it starts searching the manuals starting from section 1. If it locates a keyword in one section, it wont continue the search even if the keyword occurs in another section. We can provide section numbers additionally as arguments for man command. For example: passwd appears in section 1 and section 4. If you want to get documentation of passwd in section 4, you have to type $ man 4 passwd 8 SECTIONS OF THE MAN DOCUMENTATION: Sections 1 2 3 4 5 6 7 8 UNDERSTANDING A man PAGE: [see page number 36 Fig 2.2] A man page is divided into a number of compulsory and optional sections. Every command doesnt have all sections, but the first three sections (ie, NAME, SYNOPSIS and DESCRIPTION) are generally seen in all man pages. NAME presents a one-line introduction to the command. For example: $ man wc Subject User programs Kernels system calls Library functions Administrative file formats Miscellaneous Games Special files Administration commands

Rashmi Shenoy K Dept Of CS&EPage 19

Unix and shell programming


NAME wc - displays a count of lines, words and characters in a file. SYNOPSIS shows the syntax used by the command For example: SYNOPSIS wc [-C / -m / -c] [-lw] [file] SYNOPSIS section should be examined closely. In the example above you can see the syntax with the options and arguments used with the command. The SYNOPSIS follows certain conventions and rules which every user must understand:

If a command argument is enclosed in rectangular brackets, then it is optional. Otherwise, the argument is required. In the example above the wc man page shows all of its arguments enclosed in three such groups. This means that wc can be used without arguments. The ellipsis (a set of three dots) implies that there can be more instances of the preceding word. The expression [file] signifies that wc can be used with more than one filename as argument. The / character means that only one of the options shown on either side of the pipe can be used. In the example above the option c, -m and c can be used.

DESCRIPTION provides a detailed description. For example: DESCRIPTION The wc utility reads one or more input files and, by default, writes the number of newline characters, words and bytes contained in each input file to the standard

Rashmi Shenoy K Dept Of CS&EPage 20

Unix and shell programming


All options used by the command are listed in the OPTIONS section. Theres separate section named EXIT STATUS which lists possible error conditions and their numeric representation. USING man TO UNDERSTAND man: Since man is also a UNIX command like ls or cat, you can use this command to view its own documentation. For example: $ man man The variable, PAGER, controls the pager man uses, and if it is set to less, then man will use less as its pager. This is how you set PAGER at the command before invoking man: PAGER=less; export PAGER And then run man command To evaluate the value of PAGER the command echo $PAGER is used. This setting is valid only for the current session. FURTHER HELP WITH man k AND whatis: The POSIX specification requires man to support only one option (-k). Most UNIX systems also offer the apropos command that emulates man k. man k: Searches a summary database and prints a one-line description of the command. Example: $ man k awk awk nawk awk(1) nawk(1) -pattern scanning and processing language - pattern scanning and processing language

apropos: lists the commands and files associated with a keyword.

Rashmi Shenoy K Dept Of CS&EPage 21

Unix and shell programming


$ apropos FTP ftp ftp(1) -file transfer program -file transfer protocol server -file listing users to be disallowed ftp login

ftpd in.ftpd(lm) ftpusers ftpusers(4) privileges

whatis: man command uses the f option to emulate whaiis behavior. The command lists one-liners for a command $whatis cp cp cp(1) -copy files

WHEN THINGS GO WRONG: Terminals and keyboards have no uniform behavioral pattern. Terminal settings directly impact the keyboard operation. If you observe a different behavior from that expected, when you press certain keystrokes, it means that the terminal settings are different. In such cases, you should know which keys to press to get the required behavior. Backspacing doesnt work: Backspacing doesnt work on UNIX system. Consider that you misspelled passwd as password, and when you press the backspace key to erase the last three characters, you saw like: $ password^H^H^H Backspace doesnt work here. So it is seen like ^H when you press backspace. To erase a character you should use [Ctrl-h] or [Delete] key instead of backspace. Killing a line: If a command line contains many mistakes, you can kill the line altogether without executing it. In such case, use [Ctrl-u]. The line kill character erases everything in the line and returns the cursor to the beginning of the line. Interrupting a command: Sometimes, program goes on running for an hour and

Rashmi Shenoy K Dept Of CS&EPage 22

Unix and shell programming


doesnt sem to complete. You can interrupt the program and bring back the prompt by using either [Ctrl-c] or [Delete] Terminating a commands input: The input of certain commands can be terminated using [Ctrl-d] $ cat [Ctrl-d] $_ The keyboard is locked: The keyboard will get locked when you accidently press [Ctrl-s]. It can be released using [Ctrl-q] You can halt the output temporarily by pressing [Ctrl-s]. to resume scrolling, press [Ctrl-q] When [Enter] key doesnt work use either [Ctrl-j] or [Ctrl-m] The following table lists keyboard commands to try when things go wrong. Keystroke or commands [Ctrl-h] [Ctrl-c] or [Delete] [Ctrl-s] [Ctrl-q]
[Ctrl-u] [Ctrl-\] [Ctrl-z] [Ctrl-j] [Ctrl-m]

Function Erases text Interrupts a command Stops scrolling of screen output and unlocks keyboard Resumes scrolling of screen output and unlocks keyboard
Kills command line without executing it Kills running program but creates a core file containing the memory image of the program Suspends process and returns shell prompt; use fg to resume lob Alternative to [Enter] Alternative to [Enter]

CHAPTER 3
Rashmi Shenoy K Dept Of CS&EPage 23

Unix and shell programming THE FILE SYSTEM


THE TYPES OF FILE: THE FILE: The file is a container for storing information. For example, if you name a file foo and write three characters a, b, c into it, then foo will contain only the string abc. A files size is not stored in the file, not even its name. All file attributes are kept in a separate area of the hard disk, not directly accessible to humans, but only to kernel. UNIX treats directories and devices as file. A directory is simply a folder to store filenames and other directories. All physical devices like the hard disk, memory, CD-ROM, printer and modem are treated as files. The shell is also a file, and also kernel. Files are divided into three categories:

Ordinary file Directory file Device file

1] Ordinary file: An Ordinary file is also called as regular file. This is the most common file type. All programs you type belong to this type. An ordinary file can be divided into two types:

Text file Binary file

Text file: A text file contains only printable characters. All C and Java program sources, shell and perl scripts are text files. A text file contains lines of characters where every line is terminated with the newline character, also known as linefeed (LF). When you press [Enter] while inserting text, the LF character is appended to every line.

Rashmi Shenoy K Dept Of CS&EPage 24

Unix and shell programming


Binary file: A binary file contains both printable and unprintable characters that cover the entire ASCII range (0 to 255). Most UNIX commands are binary files, and the object code and executables that produce by compiling C programs are also binary files. Pictures, sound and video files as well. 2] Directory file: A directory file contains no data, but keeps some details of the files and subdirectories that it contains. The UNIX file system is organized with a number of directories and subdirectories and it can be created when needed. A directory file contains an entry file and subdirectories that it hosts. If you have 20 files in a directory, there will be 20 entries in the directory. Each entry has two components:

The filename A unique identification number for the file or directory called inode number.

When you create or remove a file, the kernel automatically updates its corresponding directory by adding or removing the entry (filename or inode number) associated with the file. 3] Device file: All the operations on the devices are performed by reading or writing the file representing the device. It is advantageous to treat devices as files as some of the commands used to access an ordinary file can be used with device files as well. Device filenames are generally found inside a single directory structure, / dev. A device file is not really a stream of characters. It is the attributes of the file that entirely govern the operation of the device. The kernel identifies a device from its attributes and uses them to operate the device.

FILENAMES IN UNIX: In UNIX system, a filename can consist of up to 255 characters. Files may

Rashmi Shenoy K Dept Of CS&EPage 25

Unix and shell programming


or may not have extensions and can consist of practically any ASCII character except / and NULL character. You are permitted to use control characters or other nonprintable characters in a filename. However, you should avoid using these characters while naming a file. It is recommended to use only following characters as filenames:

Alphabetic characters and numerals The period (.), hyphen (-) and underscore (_)

UNIX imposes no rules for framing filename extensions. In all cases, it is the application that imposes restriction. Example: a C compiler expects C program filenames to end with .c, Oracle requires SQL scripts to have .sql extension. A file can have as many dots embedded in its name. a filename can also begin with or end with a dot. UNIX is case sensitive. For example: chap01, Chap01 and CHAP01 are three different filenames that can coexist in the same directory. THE PARENT-CHILD RELATIONSHIP: All files in UNIX are related to one another. The file system in UNIX is a collection of all of these related files organized in a hierarchical structure. The implicit feature of every UNIX file system is that there is a top, which serves as reference point for all files. This top is called root and is represented by a / (front slash). Root is actually a directory. The root directory (/) has a number of subdirectories under it. These subdirectories in turn have more subdirectories and other files under them. For example, bin and usr are two directories directly under /, while a second bin and kumar are subdirectories under usr. Every file, apart from root, must have a parent. Thus, home directory is the parent of kumar, while / is the parent of home, and grand parent of kumar. If you create a file login.sql under the kumar directory, then kumar will be the parent of this file.

Rashmi Shenoy K Dept Of CS&EPage 26

Unix and shell programming

/(root)

bin

dev

etc

home

lib

stand

tmp

usr

date

who

dsk

rdsk

kumar

sharma

unix

bin

include sbin

f0q18dt

login.sql

progs

safe

In parent-child relationship, the parent is always a directory. home and kumar are both directories as they are parent of atleast one file or directory. login.sql is simply an ordinary file, it cant have any directory under it. THE HOME VARIABLE - THE HOME DIRECTORY: When the user logs on to the system, UNIX automatically places the user in a directory called the home directory. It is created by the system when a user account is opened. For example: If you login with user name kumar, you will have the pathname /home/kumar. The user can change his home directory when he wants. The shell variable HOME knows the home directory. to know the home directory you have to type $ echo $HOME You will get the output like /home/kumar. This sequence is called as

Rashmi Shenoy K Dept Of CS&EPage 27

Unix and shell programming


absolute pathname. The absolute pathname is simply a sequence of directory names separated by slashes. An absolute pathname shows a files location with reference to the top i.e., root. These slashes act as delimiters to file and directory names, except the first slash. The first slash is the root. COMMANDS: 1] pwd: CHECKING CURRENT DIRECTORY The user is placed in specific directory when he is logged in. the user can move around from one directory to another, but at a time he can be located in only one directory. this directory is called current directory. At any time, user is able to know what current directory is. The pwd (print working directory) command is used to know the present working directory. For example: $ pwd /home/kumar The pwd displays the absolute pathname. 2] cd: CHANGING THE CURRENT DIRECTORY The user can move around in the file system by using the cd (change directory) command. When used with an argument, it changes to the directory specified as argument. For example: $ pwd /home/kumar $ cd progs $pwd /home/kumar/progs

Rashmi Shenoy K Dept Of CS&EPage 28

Unix and shell programming


The command cd progs in the above example means that Change the subdirectory to progs under the current directory. When the user wants to switch to /bin directory where most of the commaonly used UNIX commands are kept, he should use absolute pathname: $ pwd /home/kumar/progs $ cd /bin $ pwd /bin cd command can also be used without arguments. The cd command without an argument doesnt go to current directory. It switches to home directory.ie, the directory where user actually logged into. For example: 1] $ pwd /home/kumar/progs $ cd $ pwd /home/kumar 2] $ cd /home/Sharma $ pwd /home/Sharma $ cd $ pwd /home/kumar

Rashmi Shenoy K Dept Of CS&EPage 29

Unix and shell programming


The cd command can sometimes fail if the user doesnt have proper permission to access the directory. 3] mkdir: MAKING DIRECTORIES Directories are created with the mkdir (make directory) command. The command is followed by names of directories to be created. For example: A directory patch is created under the current directory like this: $ mkdir patch The user can create number of subdirectories with one mkdir command For example: $ mkdir patch dbs doc The UNIX system lets the user to create directory trees with just one mkdir command For example: The following command creates a directory tree: $ mkdir pis pis/progs pis/data This creates three subdirectoriespis and two subdirectories under pis. The order of specifying the argument is important. The user cant create a subdirectory before creating the main or parent directory For example: $ mkdir pis/data pis/progs pis mkdir: Failed to make directory pis/data; No such file or directory mkdir: Failed to make directory pis/progs; No such file or directory Even though the system failed to create the two subdirectories, prog and data, it still created the pis directory. Sometimes, the system refuses to create a directory:

Rashmi Shenoy K Dept Of CS&EPage 30

Unix and shell programming


For example: $ mkdir test mkdir: Failed to make directory test; Permission denied This can happen due to these reasons

The directory test may already exist There may be an ordinary file by that name in the current directory The permissions set for the current directory doesnt permit the creation of files and directories by the user.

4] rmdir: REMOVING DIRCTORIES The rmdir (remove directory) command removes directories. For example: To remove directory pis: $ rmdir pis It is possible to remove or delete more than one directory with one rmdir command. For example: The three directories and subdirectories which created using mkdir in above example can be removed by using rmdir with reversed set of argument: $ rmdir pis/data pis/progs pis When you delete a directory and its subdirectories, a reverse logic of mksir has to be applied. The following directory sequence used by mkdir is invalid in rmdir. For example: $ rmdir pis pis/progs pis/data rmdir:directory pis : Directory not empty

Rashmi Shenoy K Dept Of CS&EPage 31

Unix and shell programming


rmdir has silently deleted the lowest level subdirectories pis/progs and pis/ data. The error message above leads to two important rules

You cant delete a directory unless it is empty. You cant remove a subdirectory unless you are placed in a directory which is hierarchically above the one you have chosen to remove.

If you try to remove the directory progs by executing the command from the same directory itself: $ cd progs $ pwd /home/kumar/pis/progs $ rmdir /home/kumar/pis/progs rmdir: directory /home/kumar/pis/progs: Directory does not exist To remove this directory, the user must position himself in the directory above progs, ie, pis and then remove it from there $ cd /home/kumar/pis $ pwd /home/kumar/pis $ rmdir progs The mkdir and rmdir command work only in directories owned by the user.

ABSOLUTE PATHNAME: Many UNIX commands use file and directory names as arguments which are presumed to exist in the current directory. For example: $ cat login.sql will work only if the file login.sql exists in your
Rashmi Shenoy K Dept Of CS&EPage 32

Unix and shell programming


current directory. If you are placed in /usr and want to access login.sql in /home/ kumar, you cant use above command but rather the pathname of the file, ie, $ cat / home/kumar/login.sql If the first character of the pathname is / [root]. Such a pathname is called as absolute pathname. When you have more than one / in the pathname, for each such /, you have to descend one level in the file system. Thus kumar is one level below home, and two level below root. No two files in a UNIX system can have identical absolute pathnames. You can have two files with the same name, but in different directories, their pathname also will be different. Thus, the file /home/kumar/progs/c2f.pl can coexist with the file /home/kumar/safe/c2f.pl RELATIVE PATHNAME: Using . and .. in relative pathname: Navigation becomes easier by using a common ancestor ie, /home as reference. UNIX offers a shortcutthe relative pathnamethat uses either the current or parent directory as reference, and specifies the path relative to it. A relative pathname uses one of these cryptic symbols:

. (a single dot)This represents the current directory .. (two dots)This represents the parent directory

Using .. to frame relative pathnames : Assume that you are placed in /home/kumar/progs/data/text, you can use .. as argument to cd command to move to the parent directory, /home/kumar/progs/ data $ pwd /home/kumar/progs/data/text $ cd.. $ pwd

Rashmi Shenoy K Dept Of CS&EPage 33

Unix and shell programming


/home/kumar/progs/data This method is compact and more useful when ascending hierarchy. You can combine any number of such sets of .. separated by /s. when a / is used with .. it acquires a different meaning, instead of moving down a level, it moves one level up. For example, to move to /home, you can always use cd/home. Alternatively you can also use a relative pathname: $ pwd /home/kumar/pis $ cd../.. $pwd /home Using . to frame relative pathname: A directory which uses the current directory as argument can also work with a single dot. $ cp home/sharma/.profile . This means that the cp command which also uses a directory as the last argument can be used with a dot. This copies the file .profile to the current directory (.). ls : LISTING DIRECTORY CONTENTS: ls command is used to display the list of files in the system. The complete list of filenames in the current directory is arranged I ASCII collating sequence, with one filename in each line. It includes directories also. For example: $ ls 08_packets.html NUMERICALS FIRST

Rashmi Shenoy K Dept Of CS&EPage 34

Unix and shell programming


TOC.sh calendar cptodos.sh dept.lst emp.lst helpdir progs Directories often contain many files. To know whether a particular file is available or not, you can use ls command. For example: To know whether the file calendar is present or not $ ls calendar calendar and if perl is not available, the system displays $ ls perl perl: No such file or directory ls command can also be used with multiple filenames and has options that list most of the file attributes. ls OPTIONS: ls has a large number of options. UPPERCASE LETTER NEXT LOWERCASE LETTER

1] Output in multiple columns (-x) -x option is used to display the output in multiple columns For example:

Rashmi Shenoy K Dept Of CS&EPage 35

Unix and shell programming


$ ls x 08_packets.html helpdir TOC.sh progs calendar cptodos.sh dept.lst emp.lst

2] Identifying directories and executables (-F) The F option is used to identify directories and executable files. For example: $ ls F 08_packets.html TOC.sh * calendar* cptodos.sh* dept.lst emp.lst helpdir/ progs/ The use of two symbols, * and / as type indicators. The * indicates that the file contains executable code and the / indicates the directories. 3] Showing hidden files (-a) There are some hidden files in the system. To see the hidden files a option is used with ls command. For example: $ ls a ./

Rashmi Shenoy K Dept Of CS&EPage 36

Unix and shell programming


../ .exrc .kshrc .profile.rhosts .sh_history .xdtsupCheck .xinitrc 08_packets.html* TOC.sh * calendar* cptodos.sh* dept.lst The first two files (. and ..) are special directories. These symbols have the same meaning as relative pathname here. 4] Listing directory contents $ ls x helpdir progs

helpdir: forms.obd progs: array.pl cent2fah.pl n2words.pl name.pl graphics.obd reports.obd

The contents of the directory are listed, consisting of Oracle documentation in the helpdir and a number of perl program files in progs. 5] Recursive listing (-R)

Rashmi Shenoy K Dept Of CS&EPage 37

Unix and shell programming


The R option lists all files and subdirectories in a directory tree. For example: $ ls xR 08_packets.html helpdir ./helpdir: forms.obd ./progs: array.pl cent2fah.pl n2words.pl name.pl graphics.obd reports.obd TOC.sh progs calendar cptodos.sh dept.lst emp.lst

The list shows filenames in three sectionsthe one under the home directory and those under the subdirectories helpdir and progs. ./helpdir indicates that helpdir is a subdirectory under . THE UNIX FILE SYSTEM: The UNIX file system consists of two groups. The first group contains the files that are made available during system installation:

/bin and /usr/bin These are the directories where all the commonly used UNIX commands are found. /sbin and /usr/sbin There are some commands which the user cannot execute. The commands can be executed only by system administrator, such commands are found in this directory / etc This directory contains the configuration files of the system. The login name and password are stored in files /etc/passwd and /etc/shadow /dev This directory contains all device files. These files dont occupy space on disk. There could be more subdirectories like pts, dsk and rdsk in this directory. /lib and /usr/lib This directory contains all library files in binary form /usr/include This directory contains the standard header files used by C

Rashmi Shenoy K Dept Of CS&EPage 38

Unix and shell programming


programs. The statement #include<stdio.h> used in most C programs refers to the file stdio.h in this directory

Rashmi Shenoy K Dept Of CS&EPage 39

Unix and shell programming

/usr/share/man This is where the man page is stored. There are separate subdirectories that contain the pages for each section. For example, the man page of ls can be found in /usr/share/man/man1, where 1 in man1 represents Section 1 of the UNIX manual

The contents of these directories would change as more software and utilities are added to the system. Users work with their own file, write programs, send and receive mails and create temporary files. The second group contains

/tmp The directories where users are allowed to create temporary files. These files are wiped away regularly by the system. /var The variable part of the file system. It contains all outgoing and incoming mails /home On many systems users are housed here. For example, kumar would have his home directory in /home/kumar.

Rashmi Shenoy K Dept Of CS&EPage 40

Вам также может понравиться