UNIX BASICS


                    

This How-To introduces basic concepts about UNIX systems and provides instruction on common UNIX commands, including those you can use to manage your files. The narrative text is followed by a "UNIX Command Quick Reference" that summarizes the syntax and description of each command covered in this section. Additional related information can be found in the chapter "UNIX Computer Accounts" and the How-To section "Logging In to your UNIX Account via Telnet."

The UNIX File System

In order to get the most out of your UNIX account, it's important to understand a little about the UNIX file system. Large UNIX machines, like the ones CCSO manages, can hold tens of thousands of files. These files are organized into directories forming a hierarchical structure similar to the folders on Macintoshes or directories on PCs. The highest level of this structure is called the root directory, and is represented by a forward slash (/). The root directory generally contains other directories, called subdirectories, but may also contain files. Subdirectories can contain both files and more subdirectories. This hierarchy of files and subdirectories can be many levels deep.

Every user with a login on the system has a special directory, called a home directory, where personal files can be created and stored. The name of each home directory is the same as its owner's account login.

The diagram below shows part of a typical UNIX file system. Four subdirectories of the root directory are shown. Items ending with a slash, such as j/ and k/, are subdirectories. Items without a trailing slash are files. The home directories are grouped by letters of the alphabet under the home subdirectory.

UNIX directory structure

Understanding Absolute and Relative Paths

If you ever need to copy or move files from one directory to another, in addition to knowing the names of the files and directories, you will also need to know how to write out their paths. A path describes the location of a file or directory in relation to other directories. There are two types of paths, absolute and relative.

Absolute Paths

An absolute path describes the exact location of a subdirectory or file, starting from the root directory. For instance, in the diagram above, the absolute path of the file named index.html in kay's public_html directory is:

/home/k/kay/public_html/index.html

The initial slash in the absolute path represents the root directory. All subsequent directories are written in the form directory_name/. Each slash in the path chows the separation between a directory and a subdirectory or a file contained within it.

Relative Paths

Unlike an absolute path, which never changes, a relative path can vary because it is defined in relation to the current working directory-that is, whatever directory you are in at the moment. Since a relative path does not start at the root directory (unless the root directory happens to be the current working directory), it does not begin with a slash. If the leftmost item in a relative path is the name of a directory, the directory is assumed to be in (or under) the current working directory. Referring to the file system diagram again, if the current working directory is /home/k/kay, the relative path of the file named index.html in kay's public_html directory is:

public_html/index.html

When writing out a relative path, the sequence .. (two periods in a row) means "parent of current working directory," or "up one directory." (The directory containing a directory is called its parent.) By using this notation, you avoid having to type all the names in a sequence of parent directories. The relative path from kay's home directory to the file index.html in joe's public_html subdirectory is thus:

../../j/joe/public_html/index.html

In plain English, the above path means "up one directory (from kay to k), then up another directory (from k to home), then down from the directory home, through j and joe, to public_html where the file index.html is located.

When specifying relative paths it is imperative that you know the current working directory. If you lose track of your location, the UNIX command pwd (print working directory) will display the absolute path of the current working directory on your screen.

The ~(Tilde) Path

There is another way to specify a path, pertaining only to home directories. The tilde (~) character can be used as a shorthand method of writing the absolute path to any home directory. When a tilde is followed by a login (e.g., ~joe), it signifies the home directory for that login. Using the tilde, another way to write the path of the file index.html in joe's public_html directory is:

~joe/public_html/index.html

When referring to your own home directory, you don't need to specify a login. A tilde by itself is shorthand for the home directory of the person who is logged in. Thus if kay were logged in to her account, she could refer to her own index.html file with the following path:

~/public_html/index.html

Search Paths: Another Kind of Path

Occasionally, when you try to start a UNIX program, you may get a "not found" or "Command not found" error. This can happen even fhen you are absolutely sure that the program you want to run is available on the system. It usually occurs when the program is not in your search path. A search path is a preconfigured list of directories in which the system expects to find program files.

For most users, the search path is set during the login process when the configuration files, known as dot files, are read. You can see your default search path by typing the following command at the UNIX prompt:

printenv PATH

The output of the above command will look something like this:

/usr/local/bin:/bin:/usr/bin:/usr/ccs/bin:/usr/games:/usr/ucb:.

As shown in the sample output above, each directory in the search path is separated from the next by a colon. When the system looks for a program, it searches the leftmost directory first (/usr/local/bin in the above example) and continues to search each directory in the list until it finds a program with the name you typed, at which point the program is executed. If a program by the same name is located in two different directories in your search path, the system will execute the first one it finds. To start a program that isn't in your search path, type out the fell or relative path of the program as described in the previous section.

Typing Commands at the UNIX Prompt

There are many UNIX commands for carrying out file and disk space management tasks such as listing files, removing files, creating directories, and removing them. These commands are generally abbreviations of the names of the tasks they perform, and hence are fairly easy to remember-for example, ls lists files, and cd changes directories.

When writing out a command, the various parts of the command must follow a specific order, called the command syntax. The parts include the command itself, any added command options, and the names of files or directories to be acted on by the command. Syntax varies among UNIX commands. For instance, some commands take file or directory names as part of their syntax, whereas others do not. However, file and directory management commands generally have the following syntax:

command [options] file_name(s) or directory_name(s)

Options change how the command is carried out or alter the type of output produced by the command. They take the form x, where the minus sign (-) indicates that the letter immediately following it is an option, and the ldtter (x) represents a particular option. Multiple options can usually be employed simultaneously in the form xyz (rather than writing as xyz).

Many commands take the names of files or directories as part of their syntax. If you type the name of a file or directory by itself (i.e., without its relative or absolute path), it is assumed to be in your current working directory. To refer to files or directories outside of the current working directory, you must specify their relative or absolute paths.

Note: In the remainder of this How-To, the UNIX prompt is shown as $. The prompt may be different on the system you're using.

Listing Directory Contents

The command ls lists the contents of directories and provides information about files. Various options of ls modify the information provided in its output. The simplest form of ls (without any options, or file or directory names) produces an alphabetical list of the names of all the files (except dot files) and subdirectories in the current working directory. Here is an example:

$ ls
final_paper   homework1.30  mail
homework1.16  homework2.13  public_html
$

Giving the name of a directory as an argument to the ls command causes ls to display the contents of that directory rather than the current working directory. For example:

$ ls public_html index.html $

To view dot files (those files whose names begin with a period), use the -a option, which shows all files:

$ ls -a
.             .kshrc       .profile       homework1.30
..           .mh_profile  .sh_history    homework2.13
.addressbook .nfsB3A1     final_paper    mail
.exrc         .nn           homework1.16   public_html $

Another option, -l, produces a long format listing of the directory contents. This shows detailed information for each file and directory:

$ ls -al
total 106
drwx--l---   5    joe   home     1536 Jan 30 13:10 .
drwxr-xr-x   1482 root  home   27136 Jan 29 14:40 ..
-rw-r-----   1    joe   home        0 Aug 31  1994 .addressbook
-rw-r--r--   1    joe   home     7175 Jan 29 15:11 .kshrc
-rw-r-----   1    joe   home        9 Sep  6  1992 .exrc
-rw-r-----   1    joe   home       11 Jul  2  1992 .mh_profile
-rw-------   1    joe   home      360 Jan 30 13:13 .nfsB3A1
drwx--l---   2    joe   home      512 Jan 11 15:55 .nn
-rw-r--r--   1    joe   home     1004 Jan 29 15:13 .profile
-rw-------   1    joe   home      770 Jan 29 15:13 .sh_history
-rw-------   1    joe   home     1743 Jan  5 14:16 final_paper
-rw-------   1    joe   home     1216 Jan 11 14:41 homework1.16
-rw-------   1    joe   home     1216 Jan 11 14:41 homework1.30
-rw-------   1    joe   home     1216 Jan 16 11:46 homework2.13
drwx------   2    joe   home      512 Jan 11 15:54 mail
drwxr-sr-x   2    joe   home      512 Jan 17 10:05 public_html
$

Example entry:

permissions

links

owner's login

group

size (bytes)

date/time last modified

file name

-rw-------

1

joe

home

1216

Jan 16 11:46

homework2.13

The information you are most likely to use from a long-format listing is labelled in the above example. You may wish to pay special attention to file size, since too many large files can fill up your disk space. Permissions determine who may read, write, or execute each file and directory. Only the owner of a file or directory can change its permissions. In the above example, the user joe is the owner of all the files and directories shown. For a detailed discussion of permissions, see the section "Sharing and Protecting your Files and Directories" later in this How-To.

Wildcards: Shortcuts to File and Directory Names

Wildcards are special characters reserved for filling in any character or string of characters when typing the name of an existing file or directory. They are particularly handy when typing a long or unwieldy file or directory name, or when you want to make a command apply to a group of similarly named files or directories. The most commonly used wildcard is the asterisk (*), used to mean "zero or more occurrences of any and all characters." For example, to list all files beginning with .m, use the following command:

$ ls .m*
.menueditorprog  .menumotd        .menushellprog
.menumailprog    .menunewsprog    .mh_profile
$

You can use multiple wildcards in the same name. For example, if you have files as shown on the long listing in the previous section above, an easy way to list only the files homework1.16 and homework1.30, is to use the command lsh*1.*. Be very careful when using wildcards to delete files, because your command could remove more files than you originally intended. To ensure that you know what files a wildcard expression represents, it's a good idea to use the wildcard expression in an ls command before using it with a command that can modify or erase your files. Note, for instance, that leaving out the period from the example above produces a list of all the homework files:

$ ls h*1*
homework1.16 homework1.30 homework2.13
$

Moving Between Directories

When you log in, your initial working directory is your home directory. You can move up and down the UNIX file structure using the change directory command, cd. The cd command usually requires you to specify the name of the directory you want to change tn (i.e., cddirectory_name). You can either specify an absolute path to another directory (i.e., cd/home/k) or a relative path (i.e., cd../mail). Typing only cd will return you to your home directory.

Checking your Disk and File Quotas

Some day, you may get a message from the UNIX system stating that you have "exceeded your limit," or "reached your quota." These messages indicate that you have used up all the disk space allocated to you, either in your home directory, or in your incoming mailbox (also called your mail spool). Until you free up some disk space, you will not be able to create or save any files. This may prevent you from using programs that modify files in your home directory, such as email programs or news readers.

To see your current disk usage and limits, use the quota -v command. The following is an example of typical quota output on the student cluster:

$ quota -v
Disk quotas for joe (uid 9593):
Filesystem usage quota limit timeleft files quota limit timeleft
/homeb     368     4096     4300          94     2000     2500
/homec     0     1     1          0     1     1
$

In the Filesystem column, two file systems are shown, /homeb and /homec. All student home directories are in the /homeb directory. Faculty and staff home directories are stored in /homea, which does not show in the above output. As a student, joe need only pay attention to the data given for the /homeb file system.

When reading the quota output, your current disk usage (counted in 1 kilboyte blocks) is reflected in the usage column, and your total number of files is shown in the files column. The quota columns indicate the point at which the system will complain that you hare too many files or are using too much of your allotted disk space (also counted in 1 kilobyte blocks). The limit columns indicate the absolute maximum amount of disk space or number of files you can use. Think of the difference between the quota and the limit as a buffer. Once you've surpassed your quota, the relevant timeleft (called grace on ux7) column will start a count-down - you have seven days to reduce your disk usage or number of files. After seven days you will no longer be able to do anything other than delete files.

If you get a message from the system stating that you've exceeded your disk space quota, immediately delete some of the files in your home directory, transfer them to a different system, or compress them so that they take up less space. Various compression programs are available on the CCSO UNIX systems, including compress, gzip, and zip. You can learn more about these compression programs using the UNIX online documentation. For help, see the section below that discusses "Using Online UNIX Documentation."

Incoming Mailbox Quotas

Your mail spool is checked by the system each time you log in-if you have exceeded your mail quota, the system will send you a warning. If this happens, you should read your mail and either delete the messages or save them as files in your home directory. Don't leave messages in your incoming mailbox.

Managing Your Files

When you are logged in to your UNIX account, if you download free software from a server or save an e-mail message or a news article, you are writing to the disk space in or below your home directory (unless you specify a different path). These tasks involve either creating new files, or appending to existing ones. As the number of files in your account increases, you may vish to reorganize them to suit your current needs. You can create directories to organize your files, and move files among directories as your activities dictate. You can also copy and rename files and directories, and remove them when they're no longer needed.

Creating Directories

Directories are the main organizational tool on a UNIX system. You can use them to organize related files just as you would on a desktop system (i.e., using folders on a Macintosh, or directories on a DOS/Windows system). The command mkdir is used to create new directories. It always takes the name of a new directory as an argument, as in mkdirdirectory_name. For example, to create a new directory called myhomework beneath the current working directory, use the command:

$ mkdir myhomework

Moving and Renaming Files and Directories

In UNIX, the command, mv, is used both to rename files and directories and to move them to other locations. The mv command always takes two arguments, either two file names, two directory names, or one of each. To rename a file or directory, the syntax is mv old_name new_name. For example, to rename the file called homework in the current working directory to homework.cs101, type:

$ mv homework homework.cs101

If used incorrectly, mv can be a dangerous command. For instance, if a file already exists with the name homework.cs101, the mv command will remove that existing file, replacing it with the one that's being renamed. This may not be what you want. It is safer to use the interactive option (-i) with mv so that the system prompts you to confirm before removing any files. For example:

$ mv -i homework homework.cs101
remove homework.cs101? (y/n)
n
$

The mv command can also be used to move files or directories to other locations. If you want to move a file from one directory to another, the syntax is mv file_name directory_name. For example, to move all the homework files in the current working directory to an existing subdirectory called cs101, type:

$ mv -i homework* cs101

The cs101 directory must already exist for the above command to work. The -i option forces the system to prompt you before removing any files of the same name.

The table below shows the various ways the mv command can be used:

mv Command

   

Action


mv old_name new_name

   

Rename a file or directory.

mv file_name directory_name

   

Move a file to an existing directory.

mv directory_name1 directory_name2

   

Move a directory (and all files therein) to a different directory. Directory_name2 must already exist, or this command will simply rename directory_name1 to directory_name2.


Copying Files

The copy command, cp, creates an exact duplicate of a file. It always takes two arguments, the name of the original file and the name or location of the copy to be created. By necessity, the new file must have a different absolute path than the original-that is, it must either have a different name, or if it has the same name, it must reside in a different directory. Like rm and mv, cp can take the -i option to force the system to prompt you before removing any existing files.

To make a copy of a file in the current working directory, use the syntax cpfile_namecopy_file_name, as shown in the following example:

$ cp -i final_paper econ101_paper

The table below shows the various uses of the cp command:

cp Command

   

Action


cp file_name copy_file_name

   

create a duplicate of the file in the current working directory

cp file_name directory_name

   

create a duplicate of the file in the directory specified (the copy will have the same name as the original, but reside in a different directory)

cp file_name1 directory/file_name2

   

create a duplicate of the file in the directory specified, and give it a different name as specified


Combining Files

The cat command can be used for combining the contents of one or more files into a new or an existing file. To create a new file from the contents of one or more existing files, use the redirection symbol, > , as in cat file_name1 file_name2>new_file . The files will be combined serially in the order specified. Note: Be careful when using redirection; if a file called new_file already exists, it will be overwritten! To append one or more files to the end of an existing file, use the >> redirection symbol instead, as in catfile_name1 >> file_name2 .

Removing Files

When files are removed in UNIX, they are lost forever. There is no "undelete" command. Therefore, it is important to be careful when purging your files. The UNIX command for removing files is rm, and it takes the name of an existing file as an argument, as in rm file_name. Especially when removing a group of files, it is safer to use the interactive option, -i, so that the system prompts you to type y(es) or n(o) before it deletes the file(s). For example:

$ rm -i homework*
rm: remove homework1.16 (y/n)?
n
rm: remove homework1.30 (y/n)?
y
rm: remove homework2.13 (y/n)?
y
$

Remember, rm is forever; -i give you one last chance.

Removing Directories

The rmdir command is used to remove directories, as in rmdir directory_name. It operates exactly like the rm command, and takes the interactive option (i) as well. Directories must be empty-that is, they must not contain any files or subdirectories before they can be removed with rmdir.

Sharing and Protecting your Files and Directories

The chmod command is used to change the read, write, and execute permissions on files and directories. If you have specific files you want to share with others, such as the files making up your personal Web pages, you must change their permissions before others can view or change them.

There are four parts to the chmod command-the who option(s), the opcodes (i.e., operation codes), the permission option(s), and the name of the file or directory for which permissions are to be changed:

Who Options

   

Opcode Options

   

Permissions


u user

   

+ add permission

   

r read

g group

   

- remove permission

   

w write

o other

   

= assign permission

   

x execute

a all of the above

   

 

   

 


Who specifies who the permission affects, the user (u), the group (g), others (o), or all three (a). The user is the owner of the file or directory, the group consists of those with whom the owner shares a group id (on CCSO UNIX systems, if you're a student, this generally includes other students; if you're faculty/staff, it includes people in your campus unit), and other represents all othdr users on the system. The opcode part of the chmod command specifies whether a permission is added to (+), removed from (), or simply assigned to (=) the who specified. The permission specifies the type of access that is being added or removed, namely read (r), write (w), or execute (x).

The following example shows the structure of the chmod command:

chmod g+r file_name

change mode command

who

opcode

permission

file to be changed

chmod

g

+

r

file_name

A good way to understand a chmod command is to read it aloud. The previous example reads "change mode for group; add read permission on the file file_name."

The permissions associated with a file or directory can be viewed using the long format list command, lsl. The example below shows the permissions for the file findit.sh:

-rwxrwxrwx     1     joe     home     1216     Jan     13     8:22     findit.sh

type

user

group

other

-

rwx

rwx

rwx

Permissions are expressed by a series of ten characters, consisting of letters and dashes. The first character identifies the object's type; a dash (-) represents a file, a d represents a directory. The next three characters indicate the read (r), write (w), and execute (x) permissions of the user (owner) of the file, the second set of three indicates the group's read, write, and execute permissions, and the last three, all others' read, write and execute permissions. Read, write, and execute are always found in the same position for each category of who. A dash appearing in any one of the nine positions means the corresponding permission is turned off. If a letter (i.e., r, w, x) appears, the permission is turned on.

In the above example, the user joe, his group, and all other users have read, write and execute access to the file findit.sh. The initial dash indicates that the item is a file. If it were a directory, the first bharacter would be a d instead of a dash.

Examples of the chmod Command

The following example shows how to remove others' read, write, and execute permissions from a file named homework1.16:

$ chmod o-rwx homework1.16

To check that the permissions have been changed, list the file with ls -l:

$ ls -l homework1.16
total 8
-rwxrwx--- 1 joe home 1216 Jan 13 8:22 homework1.16

Adding, or granting, permissions can be accomplished using the add (+) or assign (=) opcodes. For example, to give others read and write permissions again, you could use the command:

$ chmod o=rw homework1.16

Multiple who, opcodes, and permissions can be used together, as long as a comma (but no spaces) separates each combination (if they are different), and a space separates each file or directory name if more than one is specified. For example, you can simultaneously change permissions on two files at once, granting read, write, and execute permission to your group, but only read and write permission to all others, as follows:

$ chmod g=rwx,o=rw homework1.1 econ101_paper

Or, if the same opcode and permissIons are being used for each who, they can be combined without commas. The following example adds read and write permissions for the group and others to the file homework1.16:

$ chmod go+rw homework1.16

The chmod command works exactly the same way for directories. Important: a directory must be made executable in order for anyone, including yourself, to be able to make it the current directory (i.e., to cd into it) and read a file in it. Because of this, if you want people to be able to read your Web pages (from UIUC or from Tokyo), you must add croup and other executable permissions to both your home and public_html directories (i.e., chmodgo+x~public_html).

Using Online UNIX Documentation

All UNIX systems have online documentation or manuals, called man pages,for UNIX programs and commands. The program man is used to display the documentation for the command or program that you specify, as in mancommand. For example, to view the man page for the newsreader nn, you would type the command:

$ man nn

If you cannot recall the exact name of the command you want to look up, or you don't get the desired output using the form mancommand, try using the -k option to search the man pages for a particular keyword, as in mankkeyword. This displays a listing of summaries for all man pages that contain the keyword (sometimes the resulting output can be quite long). >From this list you can choose the appropriate man pages to browse. For example:

$ man -k remove
prunehistory (8) - remove file names from Usenet history file
prunehistory (8) - remove file names from Usenet history file
rm, rmdir (1) - remove (unlink) files or directories
rmdir (2) - remove a directory file
rmdir, rm (1) - remove (unlink) directories or files
rmf (1) - remove an MH folder
[output omitted]...
$

Sometimes you will see a number in parentheses after the name of the program or command. This is the volume number of the manual set. By default, when you type man nn, you are looking in volume 1. If you would like to see the manual pages for a command in a different volume, you need to specify the volume number. For example, to see the man page for 'prunehistory' shown above, type:

$ man 8 prunehistory

Viewing Files

Several UNIX commands can be used to view the contents of files without using an editor. These commands have a variety of uses. Before removing a file, for instance, you'll probably want to make sure you know what's in it. You may want to read a file, but not want to edit it or take the chance that it might be changed by accident.

Viewing a File All at Once

The concatenate command, cat, displays a file on your screen, from first line to last without stopping (i.e., catfile_name). If a file is large, cat will probably display it too quickly for you to read all but the very end, but it does give you a fast glance at the contents, reminding you of what's in the file.

Viewing a File One Screen at a Time

The program more is a pagerit allows you to browse through a file, one screen at a time, without invoking an editor such as Pico or vi.

As you page through a file with more, an indicator in the lower left corner of the screen shows you how much of the file has been displayed. To advance one screen at a time, press <SPACE>, or proceed one line at a time by pressing <RETURN>. Several other navigational commands are also available within more, including a command to search for a particular word or phrase. Here is a summary of useful more keystrokes:

more Keystroke

   

Result


<SPACE>

   

display next page

<RETURN>

   

display next line

d

   

Scroll forward (down) one-half page

f

   

skip forward one page

b

   

skip backward one page (on students and staff)

/string

   

search for occurrence of string

n

   

search for next occurrence of specified string

h

   

help

q

   

exit from more


Printing Files

On CCSO UNIX systems, the out command can be used to print files. You must specify a destination printer with this command, as in:

out -dest printer_name file_name

Here are some publicly accessible printer destinations for out:

Printer Name

   

Type and Location of Printer


3800

   

IBM 3800 Laser printer, L440 DCL

ag3812

   

IBM 3812 Laser printer, N-120 Turner Hall

comm

   

high-speed printer, 70 Comm West

dcl

   

IBM 3203 printer, L441 DCL

fax

   

outbound fax service

lincoln

   

HP LaserJet 3si, OCCSS at 212 Lincoln Hall

ps3812

   

IBM 3812 Laser printer, 493 Lincoln Hall

psych

   

IBM 3262 Line printer, 453 Psychology


The out command can take a number of additional options (some depending on the destination of the print job). The syntax of the out command with several of the more common options is shown below:

out -dest printer_name -bin value -banner string file_name

The -bin option takes a numeric value (i.e., -binvalue) that references a numbered bin that is used to store the print job at the printer site until it is picked up by the sender. The -banner option takes a character string, such as a name or file identification (i.e., -bannerstring), that is printed in large lettdrs on the banner (first) page of the print job. If -banner is not specified (or not active for a particular printer), publicly accessible destinations will print a banner page showing the sender's login.

Below is example of the out command with multiple options, followed by the system message that is returned:

$ out -dest lincoln -banner JOSEPH econ101_paper
200 CSO Print Server v3.2 (22 Aug 14:20). Say your request.
200 Cleared as filed, squawk 2435.
Remember the above squawk code; you'll need it to identify your job if you need to cancel or inquire about it later.
$

Part of the system message is the squawk code-an identification number assigned to each print job. If you must cancel your print job, or if it gets lost or never prints out, you need to know the squawk code in order to have the problem investigated.

Each out destination may have additional options for customizing print jobs. Some destinations also have restrictions. To find out what they are, use the command:

out -info printer_name

The example below shows information for the printer at Commerce West:

$ out -info comm
200 CSO Print Server v3.2 (22 Aug 14:20). Say your request.
Information about dest 'comm':
100 One of a family of medium-speed impact printers at RJE sites.
100 Special options [defaults] that are recognized by this driver:
100 -forms name Specify name of form to be loaded [STAN].
100 Additional information:
[output omitted]...
$

Quitting Programs Properly

UNIX is a multitasking environment-you can have multiple programs running at the same time, even though only one can be displayed to the screen at a time. Each program or command that is invoked on a UNIX system is called a process or job, and is given a process number so the system can keep track of what's going on. When a program is exited, or a command is completed, it stops using system resources, such as memory, and its process number is returned to the pool of numbers used by the system.

Quitting, Suspending and Interrupting Programs

All UNIX programs have a preferred way of quitting or exiting, usually consisting of a key combination such as <CONTROL>x (Pico), <SHIFT>q (nn), or <CONTROL>d (nslookup) or a command such as quit, exit, or bye. When a program is exited in the preferred manner, all files are closed properly and the program relinquishes its process number and system resources. You should learn how to quit each program you run, and use that method whenever possible.

Occasionally, you may find yourself unable to quit a program in the preferred manner, or you may need to temporarily interrupt a process in order to do something else. Most programs can be temporarily suspended by typing <CONTROL>z. When a program is suspended, it stops processing, but doesn't actually close and quit; therefore, it continues to use system memory. A suspended job can be resumed. Another key combination, <CONTROL>c, interrupts a program permanently. An interrupted program stops processing and using system memory, but open files may not close properly, and any work in progress may not be saved.

Killing a Suspended Program

At some time you may need to suspend a program to check on another program you have running, to engage in a talk request, or to look up a word with oed2 (Oxford English Dictionary) while editing a file. When you're finished with the secondary task, you can tell the system to resume running the suspended program. For instance, suppose you're editing a file in vi when a friend sends you a talk request. You can suspend your vi session to go to the UNIX prompt and accept the request. While talk is displayed on your screen, it is in the foreground, and vi is suspended. When you're finished talking to your friend and you've quit the talk session, you can type fg, which stands for "foreground," to resume your vi session.

If two or more programs are suspended concurrently, you need to specify the process number of the program you want to resume. As previously stated, the system assigns a process number to each program or command that is started. You can review the processes you're running using the command ps at the UNIX prompt. For example, if you're running a small program you wrote, plus Pine and oed2, your ps output might look something like this:

$ ps PID TTY TIME CMD
1058 pts/33 0:02 ksh
3670 pts/33 0:00 my_program
4577 pts/33 0:00 oed2
5432 pts/33 0:00 pine
6022 pts/33 0:00 ps
$

The output shows the three programs that are running, plus your shell (ksh) and the ps command. The process number for each is found in the column labeled PID. To bring any one of these programs to the foreground, use the command fg process_number. For example, if you wanted to resume oed2, you would type fg 4577.

If you're trying to log out of your account, and you get the system message "there are stopped jobs," it means a suspended program is running. In this instance, you should resume the program and exit it in the preferred manner. If you cannot do this because you don't know how to quit or because something is wrong with the program, you can terminate the process with the kill command (i.e., kill process_number). Before killing a process, verify its process number with the ps command. In the above example, if you wanted to terminate oed2, you would type kill 4577.

Sometimes, a simple kill command may not work (i.e., the ps output shows that the process is still running). When this happens, you can add a signal (a command modifier similar to an option) to your kill command. The safest signal is 3 (i.e., kill -3process_number), which tells the system to quit the process by closing all open files and exiting. If 3 doesn't work, use the 9 signal (i.e., kill -9process_number), which is the absolute kill command and has the same effect as an interrupt. Only use kill -9 when nothing else works, since files may not close properly and you may lose any work in progress.

Changing Your Password

To keep your UNIX account secure, change your password several times a year. You can change your password by typing passwd at the UNIX prompt. The system will prompt you to type your old password (to verify your identity), and to type your new password twice. Below is the screen output produced by changing passwords on students.uiuc.edu:

$ passwd
Changing Cluster password for joe
Old password:
(password not shown)
New password:
(password not shown)
Re-enter new password:
(password not shown)
Password changed successfully on Cluster server.
Cluster account data will be updated at approximately 11:00
$

New passwords do not take effect immediately on the CCSO UNIX clusters. If you change your password on the cluster, log out, and then log in again immediately, you may need to use your old password again. On other systems, however, passwords may be updated immediately.

Logging Out

When you want to log out of your UNIX account, simply type exit at the UNIX prompt (on some systems, logout works also). Occasionally when you attempt to log out, you may see a message saying "there are stopped jobs." This simply means that you intentionally or unintentionally suspended a program while you were working. You should either resume the program and quit it properly, or, if this isn't possible, use the ps command to see its process number and then use the kill command to quit it as described earlier in this section.

UNIX Command Quick Reference

* (asterisk)

   

Wildcard character representing zero or more of any and all adjacent characters in file or directory names.

.

   

Notation for "current working directory."

..

   

Notation for "directory immediately above current working directory"; used with cd and ls commands.

~

   

Notation for absolute path of user's home directory.

~login

   

Absolute path of the home directory of the user specified by Login.

cat file_name

   

Concatenate (or display) the entire file specified to the screen.

cat file_name1 file_name2 > new_file

   

Combine two or more existing files into a new file.

cat file_name >> existing_file

   

Append one or more files to the end of an existing file.

chmod mode file_name(s)

   

Change the read, write, or execute permissions of a file or directory; mode consists of who, opcode, and permission. Example: chmod g+r file_name

Who Options

   

Opcode Options

   

Permissions


u user

   

+ add permission

   

r read

g group

   

- remove permission

   

w write

o other

   

= assign permission

   

x execute

a all of the above

   

 

   

 




cd directory_name

   

Change to the specified directory; can take relative or absolute path.

cp [-i] old_file_name new_file_name

   

Create a duplicate of the file in the current working directory. Options include i (interactive, prompt for y or n before overwriting an existing file).

cp [-i] file_name directory_name

   

Create a duplicate of the file with the same name in the directory specified. Options include i (interactive, prompt for y or n before before overwriting an existing file).

cp [-i] file_name directory/file_name

   

Create a duplicate of the file with a different name in the directory specified. Options include i (interactive, prompt for y or n before overwriting an existing file).

ls [-al] [file_name(s) or directory_name]

   

List the specified file(s),or all the files in the specified directory. Options include a (list all, including dot files) and l (long format).

mkdir directory_name(s)

   

Make one or more new directories with the name(s) specified.

more file_name

   

Display the specified file one screen at a time.

mv [-i] old_file_name new_file_name

   

Rename the specified file. Options include i (interactive, prompt for y or n before overwriting an existing file).

mv [-i] old_directory_name new_directory_name

   

Rename the specified directory. Options include -i (interactive, prompt for y or n before overwriting an existing directory).

mv [-i] directory_name1 directory_name2

   

Move the first directory (and all files and subdirectories it contains) to the second directory. Directory_name2 must already exist. Options include -i (interactive, prompt for y or n before overwriting an existing directory).

mv [-i] file_name directory_name

   

Move the specified file to the specified directory. Options include -i (interactive, prompt for y or n before overwriting an existing file).

out -dest printer_name[-banner string -bin value file_name

   

   

Print specified file to the specified printer. Options include -bin value (specify a bin number for printout storage), -banner string specify a string to be printed in large print on the banner page).

out -info printer_name

   

Display information about the specified output device.

printenv PATH

   

Print the preconfigured search path for your login to the screen.

pwd

   

Print the name of the current working directory to the screen.

quota -v

   

Return information about your quota limits ad current usage.

rm [-i] file_name(s)

   

Remove the specified file(s). Options include -i (interactive, prompt for y or n before removing).

rmdir [-i] directory_name(s)

   

Remove the specified directory(s) which must be empty. Options include -i (interactive, prompt for y or n before removing).




table of contents

subject index

ccso home

uiuc home


Last modified: Wednesday, August 26 1998