Monthly Archives: July 2008



Main features of unix :

Multi user – More than one user can use the machine

Multitasking– More than one program can be run at a time.

Portability – This means the operating system can be easily converted to run on different browsers.



when invoked without any arguments, lists the files in the current working directory. A directory that is not the current working directory can be specified and ls will list the files there. The user also may specify any list of files and directories. In this case, all files and all contents of specified directories will be listed.

Files whose names start with “.” are not listed, unless the -a flag is specified or the files are specified explicitly.

Without options, ls displays files in a bare format. This bare format however makes it difficult to establish the type, permissions, and size of the files. The most common options to reveal this information or change the list of files are:

-l long format, displaying Unix file type, permissions, number of hard links, owner, group, size, date, and filename

-F appends a character revealing the nature of a file, for example, * for an executable, or / for a directory. Regular files have no suffix.

-a lists all files in the given directory, including those whose names start with “.” By default, these files are excluded from the list.

-R recursively lists subdirectories. The command ls -R / would therefore list all files.


Is a command line command used to change the current working directory in the Unix and DOS operating systems. It is also available for use in Unix shell scripts or DOS batch files. cd is frequently included built into certain shells such as the Bourne shell, tcsh, bash (where it calls the chdir() POSIX C function) and in DOS’s COMMAND.COM.

A directory is a logical section of a filesystem used to hold files. Directories may also contain other directories. The cd command can be used to change into a subdirectory, move back into the parent directory, move all the way back to the root (/ in UNIX, \ in DOS) or move to any given directory.


command (print working directory) is used to print the name of current working directory from a computer’s command-line interface. If the shell prompt does not already show this, the user can use this command to find their place in the directory tree. This command is found in the Unix family of operating systems and other flavors as well. The DOS equivalent is “CD” with no arguments.

It is a command which is sometimes included built into certain shells such as sh, and bash. It can be implemented easily with the POSIX C functions getcwd() and/or getwd().


$ pwd



command in the Unix operating system is used to make a new Directory. Normal usage is as straightforward as follows:

mkdir name_of_directory

Where name_of_directory is the name of the directory one wants to create. When typed as above (ie. normal usage), the new directory would be created within the current directory.

rm (short for remove)

is a Unix command used to delete files from a filesystem. Common options that rm accepts include:

-r, which processes subdirectories recursively

-i, which asks for every deletion to be confirmed

-f, which ignores non-existent files and overrides any confirmation prompts (“force”)

rm is often aliased to “rm -i” so as to avoid accidental deletion of files. If a user still wishes to delete a large number of files without confirmation, they can manually cancel out the -i argument by adding the -f option.

rm -rf” (variously, “rm -rf /”, “rm -rf *”, and others) is frequently used in jokes and anecdotes about Unix disasters. The “rm -rf /” variant of the command, if run by an administrator, would cause the contents of every mounted disk on the computer to be deleted.


is a command which will remove an empty directory on a Unix-system. It cannot be capitalized. Normal usage is straightforward where one types:

rmdir name_of_directory

Where name_of_directory corresponds with the name of the directory one wishes to delete. There are options to this command such as -p which removes parent directories if they are also empty.

For example:

rmdir –p foo/bar/baz

Will first remove baz/, then bar/ and finally foo/ thus removing the entire directory tree specified in the command argument.

Often rmdir will not remove a directory if there is still files present in the directory. To force the removal of the directory even if files are present usually the -rf flag can be used. For example:

rmdir -Rf for/bar/baz


is the command entered in a Unix shell to copy a file from one place to another, possibly on a different filesystem. The original file remains unchanged, and the new file may have the same or a different name.

To Copy a File to another File

cp [ -f ] [ -h ] [ -i ] [ -p ][ — ] SourceFile TargetFile

To Copy a File to a Directory

cp [ -f ] [ -h ] [ -i ] [ -p ] [ -r | -R ] [ — ] SourceFile … TargetDirectory

To Copy a Directory to a Directory

cp [ -f ] [ -h ] [ -i ] [ -p ] [ — ] { -r | -R } SourceDirectory … TargetDirectory

-f (force) – specifies removal of the target file if it cannot be opened for write operations. The removal precedes any copying performed by the cp command.

-h – makes the cp command copy symbolic links. The default is to follow symbolic links, that is, to copy files to which symbolic links point.

-i (interactive) – prompts you with the name of a file to be overwritten. This occurs if the TargetDirectory or TargetFile parameter contains a file with the same name as a file specified in the SourceFile or SourceDirectory parameter. If you enter y or the locale’s equivalent of y, the cp command continues. Any other answer prevents the cp command from overwriting the file.

-p (preserve) – duplicates the following characteristics of each SourceFile/SourceDirectory in the corresponding TargetFile and/or TargetDirectory:


To make a copy of a file in the current directory, enter:

cp prog.c prog.bak

This copies prog.c to prog.bak. If the prog.bak file does not already exist, the cp command creates it. If it does exist, the cp command replaces it with a copy of the prog.c file.

To copy a file in your current directory into another directory, enter:

cp jones /home/nick/clients

This copies the jones file to /home/nick/clients/jones.

To copy a file to a new file and preserve the modification date, time, and access control list associated with the source file, enter:

cp -p smith smith.jr

This copies the smith file to the smith.jr file. Instead of creating the file with the current date and time stamp, the system gives the smith.jr file the same date and time as the smith file. The smith.jr file also inherits the smith file’s access control protection.

To copy all the files in a directory to a new directory, enter:

cp /home/janet/clients/* /home/nick/customers

This copies only the files in the clients directory to the customers directory.

To copy a directory, including all its files and subdirectories, to another directory, enter:

cp -R /home/nick/clients /home/nick/customers

This copies the clients directory, including all its files, subdirectories, and the files in those subdirectories, to the customers/clients directory.

To copy a specific set of files to another directory, enter:

cp jones lewis smith /home/nick/clients

This copies the jones, lewis, and smith files in your current working directory to the /home/nick/clients directory.

To use pattern-matching characters to copy files, enter:

cp programs/*.c .

This copies the files in the programs directory that end with .c to the current directory, signified by the single . (dot). You must type a space between the c and the final dot.


program is a search utility, mostly found on Unix-like platforms. It searches through a directory tree of a filesystem, locating files based on some user-specified criteria. By default, find returns all files below the current working directory. Further, find allows the user to specify an action to be taken on each matched file. Thus, it is an extremely powerful program for applying actions to many files. It also supports regexp matching.


From current directory

find . -name my\*

This searches in the current directory (represented by a period) and below it, for files and directories with names starting with my. The backslash before the star is needed to avoid the shell expansion. Without the backslash, the shell would replace my* with the list of files whose names begin with my in the current directory. An alternative is to enclose the the arguments in quotes: find . -name “my*”

Files only

find . -name “my*” -type f

This limits the results of the above search to only regular files, therefore excluding directories, special files, pipes, symbolic links, etc. my* is enclosed in quotes as otherwise the shell would replace it with the list of files in the current directory starting with my


The previous examples created listings of results because, by default, find executes the ‘-print’ action. (Note that early versions of the find command had no default action at all; therefore the resulting list of files would be discarded, to the bewilderment of naïve users.)

find . -name “my*” -type f -ls

This prints an extended file information.

Search all directories

find / -name “myfile” -type f -print

This searches every file on the computer for a file with the name myfile. It is generally not a good idea to look for data files this way. This can take a considerable amount of time, so it is best to specify the directory more precisely.

Specify a directory

find /home/brian -name “myfile” -type f -print

This searches for files named myfile in the /home/brian directory, which is the home directory for the user brian. You should always specify the directory to the deepest level you can remember.

Find any one of differently named files

find . ( -name “*jsp” -or -name “*java” ) -type f -ls

This prints extended information on any file whose name ends with either ‘jsp’ or ‘java’. Note that the parentheses are required. Also note that the operator “or” can be abbreviated as “o”. The “and” operator is assumed where no operator is given. In many shells the parentheses must be escaped with a backslash, “\(” and “\)”, to prevent them from being interpreted as special shell characters.


is a program on Unix and Unix-like systems used to change a file’s date- and time-stamp. It can also be used to create an empty file. The command-syntax is:

touch [options]

If the file exists, its access and modification time-stamps are set to the system’s current date and time, as if the file had been changed. To touch a file simulates a change to the file. If the file does not exist, an empty file of that name is created with its access and modification time-stamps set to the system’s current date and time. If no file path is specified, the current directory is assumed.

touch can be invoked with options to change its behaviour, which may vary from one Unix to another. One option makes it possible to set the file’s time-stamp to something other than the current system date and time, but this action is normally restricted to the owner of the file or the system’s superuser.


is a command in Unix (and by extension, its descendants, such as Linux) and MS-DOS that places a string on the terminal. It is typically used in shell scripts and batch programs to output status text to the screen or a file.

$ echo This is a test.

This is a test.

$ echo “This is a test.” > ./test.txt

$ cat ./test.txt

This is a test.


program concatenates the contents of files, reading from a list of files and/or standard input in sequence and writing their contents in order to standard output. cat takes the list of files as arguments but also interprets the argument “-” as standard input.

Example: cat filename


The Unix command who displays a list of users who are currently logged into a computer. The command accepts various options that vary by system to further specify the information that is returned, such as the length of time a particular user has been connected or what pseudo-teletype a user is connected to. The who command is related to the command w, which provides the same information but also displays additional data and statistics.

Example output

user19 pts/35 Apr 18 08:40 (localhost)

user28 pts/27 Apr 18 09:50 (localhost)

du (abbreviated from disk usage)

is a Unix computer program to display the amount of disk space used under a particular directory or files on a file system.

du counts the disk space by walking the directory tree. As such, the amount of space on a file system shown by du may vary from that shown by df if files have been deleted but their blocks not yet freed.

In Linux, it is a part of the GNU Coreutils package.

The du utility first appeared in version 1 of AT&T UNIX.


The -k flag will show the sizes in 1K blocks, rather than the default of 512 byte blocks.

$du -k /seclog

4 /seclog/lost+found

132 /seclog/backup/aix7

136 /seclog/backup

44044 /seclog/temp

439264 /seclog

We will discuss more advanced commands in the next article.


Bugs and Role of a TESTER

Definitions of Testing

“Testing is the process of executing a program with the intent of finding errors ”
Or “Testing is the process of evaluating a system by manual or automatic means and
verify that it satisfies specified requirements” Or

“… the process of exercising or evaluating a system or system component by manual or
automated means to verify that it satisfies specified requirements or to identify
differences / between expected and actual results…”

Why software Testing?

Software testing helps to deliver quality software products that satisfy user’s
requirements, needs and expectations. If done poorly,

  1. Defects are found during operation,
  2. It results in high maintenance cost and user dissatisfaction
  3. It may cause mission failure
  4. Impact on operational performance and reliability

Most development processes in the IT industry always seem to follow a tight schedule. Often, these schedules adversely affect the testing process, resulting in step motherly
treatment meted out to the testing process. As a result, defects accumulate in the application and are overlooked so as to meet deadlines. The developers convince themselves that the overlooked errors can be rectified in subsequent releases. The definition of testing is not well understood. People use a totally incorrect definition of the word testing, and that this is the primary cause for poor program testing. Testing the product means adding value to it by raising the quality or reliability of the product. Raising the reliability of the product means finding and removing errors. Hence one should not test a product to show that it works; rather, one should start with the assumption that the program contains errors and then test the program to find as many of
the errors as possible.

Software Bug: A Formal Definition

Calling any and all software problems bugs may sound simple enough, but doing so
hasn’t really addressed the issue. To keep from running in circular definitions, there
needs to be a definitive description of what a bug is.

A software bug occurs when one or more of the following five rules is true:

  1. The software doesn’t do something that the product specification says it
  2. should do.
  3. The software does something that the product specification says it shouldn’t
  4. do.
  5. The software does something that the product specification doesn’t mention.
  6. The software doesn’t do something that the product specification doesn’t
  7. mention but should.
  8. The software is difficult to understand, hard to use, slow, or –in the software
  9. tester’s eyes- will be viewed by the end user as just plain not right.

What exactly does Software Tester Do? (Or Role of Tester)

From the above Examples you have seen how nasty bugs can be and you know what is
the definition of a bug is, and you can think how costly they can be. So main goal of
tester is

“The goal of Software Tester is to find bugs”
As a software tester you shouldn’t be content at just finding bugs, you should think about
how to find them sooner in the development process, thus making them cheaper to fix.

“The goal of a Software Tester is to find bugs, and find them as early as possible”.
But, finding bugs early isn’t enough.

“The goal of a Software Tester is to find bugs, and find them as early as possible
and make sure they get fixed”

Intro to Software Testing.

Software Testing


Software testing is a critical element of software quality assurance and represents the ultimate process to ensure the correctness of the product. The quality product always enhances the customer confidence in using the product thereby increases the business economics. In other words, a good quality product means zero defects, which is derived from a better quality process in testing.
Software is an integrated set of Program codes, designed logically to implement a
particular function or to automate a particular process. To develop a software product or project, user needs and constraints must be determined and explicitly stated. The development process is broadly classified into two.

1. Product development
2. Project development

Product development is done assuming a wide range of customers and their needs. This
type of development involves customers from all domains and collecting requirements from many different environments.

Project Development is done by focusing a particular customer’s need, gathering data from
his environment and bringing out a valid set of information that will help as a pillar to development process.

Testing is a necessary stage in the software life cycle: it gives the programmer and user
some sense of correctness, though never “proof of correctness. With effective testing techniques, software is more easily debugged, less likely to “break,” more “correct”, and, in summary, better.