home | O'Reilly's CD bookshelfs | FreeBSD | Linux | Cisco | Cisco Exam  

Book HomeBook TitleSearch this book

Chapter 2. Unix Commands

This chapter presents the Unix commands of interest to users and programmers. Most of these commands appear in the “Commands” section of the User's Reference Manual and Programmer's Reference Manual for Unix System V Release 4 (SVR4). This chapter describes additional commands from the compatibility packages; these commands are prefixed with /usr/ucb, the name of the directory in which they reside. Also included here are commands specific to Solaris 7, such as those for using Java and the occasional absolutely essential program available from the Internet.

Particularly on Solaris, useful commands are spread across a number of different “bin” directories, such as /usr/ccs/bin, /usr/dt/bin, /usr/java/bin, and /usr/openwin/bin, and not just /usr/bin and /usr/ucb. In such cases, this book provides the full pathname, e.g., /usr/ccs/bin/make. In some instances, a symbolic link for a command exists in /usr/bin to the actual command elsewhere.

Each entry is labeled with the command name on the outer edge of the page. The syntax line is followed by a brief description and a list of all available options. Many commands come with examples at the end of the entry. If you need only a quick reminder or suggestion about a command, you can skip directly to the examples.

Note: comments such as "SVR4 only," or "Solaris only," compare only those two systems. Many "Solaris only" commands and/or options are commonly available on other Unix systems as well.

Some options can be invoked only by a user with special system privileges. Such a person is often called a “superuser.” This book uses the term privileged user instead.

Typographic conventions for describing command syntax are listed in the Preface. For additional help in locating commands, see the Index.

2.1. Alphabetical Summary of Commands


addbib [options] database

Part of the refer suite of programs. See Chapter 17.

admin/usr/ccs/bin/admin [options] files

An SCCS command. See Chapter 18.

appletviewer /usr/java/bin/appletviewer [options] urls

Solaris only. Connect to the specified urls and run any Java applets they specify in their own windows, outside the context of a web browser.


Run the applet viewer from within the Java debugger, jdb.

-encoding name
Specify the input HTML file encoding.

-J opt
Pass opt on to the java command. opt should not contain spaces; use multiple -J options if necessary.

aproposapropos keywords

Look up one or more keywords in the online manpages. Same as man -k. See also whatis.

ar/usr/ccs/bin/ar [-V] key [args] [posname] archive [files]

Maintain a group of files that are combined into a file archive. Used most commonly to create and update library files as used by the loader (ld). Only one key letter may be used, but each can be combined with additional args (with no separations between). posname is the name of a file in archive. When moving or replacing files, you can specify that they be placed before or after posname. See lorder in Appendix B, for another example. -V prints the version number of ar on standard error.

On Solaris, key and args can be preceded with a -, as though they were regular options.



Delete files from archive.


Move files to end of archive.


Print files in archive.


Append files to archive.


Replace files in archive.


List the contents of archive or list the named files.


Extract contents from archive or only the named files.



Use with r or m to place files in the archive after posname.


Same as a but before posname.


Create archive silently.


Don't replace existing files of the same name with the one extracted from the archive. Useful with T. Solaris only.


Same as b.


Force regeneration of archive symbol table (useful after running strip or mcs).


Truncate long filenames when extracting onto filesystems that don't support long filenames. Without this operation, extracting files with long filenames is an error. Solaris only.


Use with r to replace only files that have changed since being put in archive.


Verbose; print a description.


Update the versions of object files in mylib.a with the ones in the current directory. Any files in mylib.a that are not in the current directory are not replaced.

ar r mylib.a *.o
as/usr/ccs/bin/as [options] files

Generate an object file from each specified assembly language source file. Object files have the same root name as source files but replace the .s suffix with .o. There may be additional system-specific options. See also dis.


Run m4 on file.

Turn off optimization of long/short addresses.

-o objfile
Place output in object file objfile (default is file.o).

Put the assembler's version number in the object file (when c = y); default is not to put it (c = n).

Remove file upon completion.

Force obsolete assembler directives to be obeyed.

Display the version number of the assembler.

-Y [key,] dir
Search directory dir for the m4 preprocessor (if key is m), for the file containing predefined macros (if key is d), or for both (if key is omitted).


at options1 time [date] [+ increment]

at options2 [jobs]

Execute commands entered on standard input at a specified time and optional date. (See also batch and crontab.) End input with EOF. time can be formed either as a numeric hour (with optional minutes and modifiers) or as a keyword. date can be formed either as a month and date, as a day of the week, or as a special keyword. increment is a positive integer followed by a keyword. See the following lists for details.


Use the C shell to execute the job. Solaris only.

-f file
Execute commands listed in file.

Use the Korn shell to execute the job. Solaris only.

Send mail to user after job is completed.

-q queuename
Schedule the job in queuename. Values for queuename are the lowercase letters a through z. Queue a is the default queue for at jobs. Queue b is the queue for batch jobs. Queue c is the queue for cron jobs. Solaris only.

Use the Bourne shell to execute the job. Solaris only.

-t time
Run the job at time, which is in the same format as allowed by touch. Solaris only.


Report all jobs that are scheduled for the invoking user or, if jobs are specified, report only for those. See also atq.

Remove specified jobs that were previously scheduled. To remove a job, you must be a privileged user or the owner of the job. Use -l first to see the list of scheduled jobs. See also atrm.


hh:mm [modifiers]
Hours can have one or two digits (a 24-hour clock is assumed by default); optional minutes can be given as one or two digits; the colon can be omitted if the format is h, hh, or hhmm; e.g., valid times are 5, 5:30, 0530, 19:45. If modifier am or pm is added, time is based on a 12-hour clock. If the keyword zulu is added, times correspond to Greenwich Mean Time (UTC).

midnight | noon | now
Use any one of these keywords in place of a numeric time. now must be followed by an increment.


month num[, year]
month is one of the 12 months, spelled out or abbreviated to their first three letters; num is the calendar day of the month; year is the four-digit year. If the given month occurs before the current month, at schedules that month next year.

One of the seven days of the week, spelled out or abbreviated to their first three letters.

today | tomorrow
Indicate the current day or the next day. If date is omitted, at schedules today when the specified time occurs later than the current time; otherwise, at schedules tomorrow.


Supply a numeric increment if you want to specify an execution time or day relative to the current time. The number should precede any of the keywords minute, hour, day, week, month, or year (or their plural forms). The keyword next can be used as a synonym of + 1.


Note that the first two commands are equivalent:

at 1945 pm December 9
at 7:45pm Dec 9
at 3 am Saturday
at now + 5 hours
at noon next day
atqatq [options] [users]

List jobs created by the at command that are still in the queue. Normally, jobs are sorted by the order in which they execute. Specify the users whose jobs you want to check. If no users are specified, the default is to display all jobs if you're a privileged user; otherwise, only your jobs are displayed.


Sort the queue according to the time the at command was given.

Print only the total number of jobs in queue.

atrmatrm [options] [users | jobIDs]

Remove jobs queued with at that match the specified jobIDs. A privileged user may also specify the users whose jobs are to be removed.


Remove all jobs belonging to the current user. (A privileged user can remove all jobs.)

Remove jobs unconditionally, suppressing all information regarding removal.

Prompt for y (remove the job) or n (do not remove).

awkawk [options] [program] [var=value ...] [files]

Use the pattern-matching program to process the specified files. awk has been replaced by nawk (there's also a GNU version called gawk). program instructions have the general form:

pattern { procedure }

pattern and procedure are optional. When specified on the command line, program must be enclosed in single quotes to prevent the shell from interpreting its special symbols. Any variables specified in program can be assigned an initial value by using command-line arguments of the form var=value. See Chapter 11, for more information (including examples) on awk.


-f file
Use program instructions contained in file, instead of specifying program on the command line.

Treat input file as fields separated by character c. By default, input fields are separated by runs of spaces and/or tabs.

bannerbanner characters

Print characters as a poster on the standard output. Each word supplied must contain ten characters or less.

basenamebasename pathname [suffix]

Given a pathname, strip the path prefix and leave just the filename, which is printed on standard output. If specified, a filename suffix (e.g., .c) is removed also. basename is typically invoked via command substitution (...) to generate a filename. See also dirname.

The Solaris version of basename allows the suffix to be a pattern of the form accepted by expr. See the entry for expr for more details.


Given the following fragment from a Bourne shell script:

myname="`basename $0`"
echo "$myname: QUITTING: can't open $ofile" 1>&2
exit 1

If the script is called do_it, the following message would be printed on standard error:

do_it: QUITTING: can't open output_file

Execute commands entered on standard input. End with EOF. Unlike at, which executes commands at a specific time, batch executes commands one after another (waiting for each one to complete). This avoids the potentially high system load caused by running several background jobs at once. See also at.

batch is equivalent to at -q b -m now.


$ batch
sort in > out
troff -ms bigfile > bigfile.ps
bcbc [options] [files]

Interactively perform arbitrary-precision arithmetic or convert numbers from one base to another. Input can be taken from files or read from the standard input. To exit, type quit or EOF.


Do not invoke dc; compile only. (Since bc is a preprocessor for dc, bc normally invokes dc.)

Make available functions from the math library.

bc is a language (and compiler) whose syntax resembles that of C. bc consists of identifiers, keywords, and symbols, which are briefly described here. Examples follow at the end.


An identifier is a single character, consisting of the lowercase letters a–z. Identifiers are used as names for variables, arrays, and functions. Within the same program you may name a variable, an array, and a function using the same letter. The following identifiers would not conflict:


Variable x.


Element i of array x. i can range from 0 to 2047 and can also be an expression.


Call function x with parameters y and z.

Input/Output Keywords

ibase, obase, and scale each store a value. Typing them on a line by themselves displays their current value. More commonly, you would change their values through assignment. Letters A–F are treated as digits whose values are 10–15.

ibase = n
Numbers that are input (e.g., typed) are read as base n (default is 10).

obase = n
Numbers displayed are in base n (default is 10). Note: once ibase has been changed from 10, use digit “A” to restore ibase or obase to decimal.

scale = n
Display computations using n decimal places (default is 0, meaning that results are truncated to integers). scale is normally used only for base-10 computations.

Statement Keywords

A semicolon or a newline separates one statement from another. Curly braces are needed only when grouping multiple statements.

if (rel-expr) {statements}
Do one or more statements if relational expression rel-expr is true; for example:

if (x == y) i = i + 1
while (rel-expr) {statements}
Repeat one or more statements while rel-expr is true; for example:

while (i > 0) {p = p*n; q = a/b; i = i-1}
for (expr1; rel-expr; expr2) {statements}
Similar to while; for example, to print the first 10 multiples of 5, you could type:

for (i = 1; i <= 10; i++) i*5
Terminate a while or for statement.

Exit bc.

Function Keywords

define j(k) {
Begin the definition of function j having a single argument k. Additional arguments are allowed, separated by commas. Statements follow on successive lines. End with a }.

auto x, y
Set up x and y as variables local to a function definition, initialized to 0 and meaningless outside the function. Must appear first.

Pass the value of expression expr back to the program. Return 0 if (expr) is left off. Used in function definitions.

Compute the square root of expression expr.

Compute how many digits are in expr.

Same, but count only digits to the right of the decimal point.

Math Library Functions

These are available when bc is invoked with -l. Library functions set scale to 20.

Compute the sine of angle, a constant or expression in radians.

Compute the cosine of angle, a constant or expression in radians.

Compute the arctangent of n, returning an angle in radians.

Compute e to the power of expr.

Compute natural log of expr.

j(n, x)
Compute Bessel function of integer order n.


These consist of operators and other symbols. Operators can be arithmetic, unary, assignment, or relational.


+ - * / % ^


- ++ --


=+ =- =* =/ =% =^ =


< <= > >= == !=

Other Symbols

/* */
Enclose comments.

( )
Control the evaluation of expressions (change precedence). Can also be used around assignment statements to force the result to print.

{ }
Used to group statements.

[ ]
Array index.

Use as a statement to print text.


Note that when you type some quantity (a number or expression), it is evaluated and printed, but assignment statements produce no display:

ibase = 8          Octal input

20                 Evaluate this octal number
16                Terminal displays decimal value

obase = 2          Display output in base 2 instead of base 10

20                 Octal input
10000             Terminal now displays binary value

ibase = A          Restore base 10 input

scale = 3          Truncate results to three places

8/7                Evaluate a division
1.001001000       Oops! Forgot to reset output base to 10

obase = 10         Input is decimal now, so "A" isn't needed

1.142             Terminal displays result (truncated)

The following lines show the use of functions:

define p(r,n){    Function p uses two arguments
auto v          v is a local variable
v = r^n         r raised to the n power
return(v)}      Value returned

scale = 5

x = p(2.5,2)    x = 2.5 ^ 2

x               Print value of x
length(x)       Number of digits
scale(x)        Number of places to right of decimal point
bdiffbdiff file1 file2 [options]

Compare file1 with file2 and report the differing lines. bdiff splits the files and then runs diff, allowing it to act on files that would normally be too large to handle. bdiff reads standard input if one of the files is . See also diff.


Split each file into n-line segments (default is 3500). This option must be listed first.

Suppress error messages from bdiff (but not from diff).

biff/usr/ucb/biff [y | n]

Turn mail notification on or off. With no arguments, biff indicates the current status.

When mail notification is turned on, each time you get incoming mail, the bell rings, and the first few lines of each message are displayed.

calcal [[month] year]

With no arguments, print a calendar for the current month. Otherwise, print either a 12-month calendar (beginning with January) for the given year or a one-month calendar of the given month and year. month ranges from 1 to 12; year ranges from 1 to 9999.


cal 12 1999
cal 1999 > year_file
calendarcalendar [option]

Read your calendar file and display all lines that contain the current date. The calendar file is like a memo board. You create the file and add entries like the following:

5/4     meeting with design group at 2 pm
may 6   pick up anniversary card on way home

When you run calendar on May 4, the first line is displayed. calendar can be automated by using crontab or at, or by including it in your startup files .profile or .login.


Allow a privileged user to invoke calendar for all users, searching each user's login directory for a file named calendar. Entries that match are sent to a user via mail. This feature is intended for use via cron. It is not recommended in networked environments with large user bases.

cancelcancel [options] [printer]

Cancel print requests made with lp. The request can be specified by its ID, by the printer on which it is currently printing, or by the username associated with the request (only privileged users can cancel another user's print requests). Use lpstat to determine either the id or the printer to cancel.


Cancel print request id.

-u user
Cancel request associated with user.

catcat [options] [files]

Read one or more files and print them on standard output. Read standard input if no files are specified or if is specified as one of the files; end input with EOF. Use the > shell operator to combine several files into a new file; >> appends files to an existing file.


Like -n, but don't number blank lines. Solaris only.

Print a $ to mark the end of each line. Must be used with -v.

Number lines. Solaris only.

Suppress messages about nonexistent files. (Note: On some systems, -s squeezes out extra blank lines.)

Print each tab as ^I and each form feed as ^L. Must be used with -v.

Print output as unbuffered (default is buffered in blocks or screen lines).

Display control characters and other nonprinting characters.


cat ch1                              Display a file

cat ch1 ch2 ch3 > all                Combine files

cat note5 >> notes                   Append to a file

cat > temp1                          Create file at terminal; end with EOF

cat > temp2 << STOP                  Create file at terminal; end with STOP
cbcb [options] [files]

C program “beautifier” that formats files using proper C programming structure.


Join split lines.

-l length
Split lines longer than length.

Standardize code to style of Kernighan and Ritchie in The C Programming Language.

Print the version of cb on standard error.


cb -l 70 calc.c > calc_new.c
cc/usr/ccs/bin/cc [options] files

Compile one or more C source files (file.c), assembler source files (file.s), or preprocessed C source files (file.i). cc automatically invokes the loader ld (unless -c is supplied). In some cases, cc generates an object file having a .o suffix and a corresponding root name. By default, output is placed in a.out. cc accepts additional system-specific options.


  • Add /usr/ccs/bin to your PATH to use the C compiler and other C Compilation System tools. This command runs the ANSI C compiler; use /usr/bin/cc if you want to run the compiler for pre-ANSI C.

  • Solaris 7 does not come with a C compiler. You must purchase one separately from Sun, or download the GNU C Compiler (GCC) from http://www.sunfreeware.com.

  • Options for cc vary wildly across Unix systems. We have chosen here to document only those options that are commonly available. You will need to check your local documentation for complete information.

  • Usually, cc passes any unrecognized options to the loader, ld.


Suppress loading and keep any object files that were produced.

Supply a #define directive, defining name to be def or, if no def is given, the value 1.

Run only the macro preprocessor, sending results to standard output.

Generate more symbol-table information needed for debuggers.

Search for include files in directory dir (in addition to standard locations). Supply a -I for each new dir to be searched.

Link source file with library files libname.so or libname.a.

Like -I, but search dir for library archives.

-o file
Send object output to file instead of to a.out.

Optimize object code (produced from .c or .i files).

Generate benchmark code to count the times each routine is called. File mon.out is created, so prof can be used later to produce an execution profile.

Run only the preprocessor and place the result in file.i.

Compile (and optimize, if -O is supplied), but don't assemble or load; assembler output is placed in file.s.

Remove definition of name, as if through an #undef directive.


Compile xpop.c and load it with the X libraries:

cc -o xpop xpop.c -lXaw -lXmu -lXt -lX11
cdcd [dir]

Change directory. cd is a built-in shell command. See Chapter 4, and Chapter 5.


/usr/ccs/bin/cdc -rsid [option] files

An SCCS command. See Chapter 18.


Useful CDE Programs

The following CDE and Sun Desktop commands may be of interest. Check the manpages for more information.


Sun hypertext documentation viewer.


Invoke CDE actions from within shell scripts.


CDE applications builder.


Onscreen scientific, logical, and financial calculator.


Calendar manager.


dtksh script for error notices and dialogues.


dtksh script for error dialogues.


Icon editor.


The “Desktop Korn shell,” a version of ksh93.


Mail reader.


Simple text editor.


Print job manager.


Screen savers.


Terminal emulator.


Font downloader utility for PostScript printers.


Java-based web browser.


GUI for iconv.


File finder.


Image viewer (PostScript, GIF, JPEG, etc.).


System performance meter.


Process manager.


cflow [options] files

Produce an outline (or flowchart) of external function calls for the C, lex, yacc, assembler, or object files. cflow also accepts the cc options -D, -I, and -U.


Stop outlining when nesting level n is reached.

Include functions whose names begin with _.

Include external and static data symbols.

Invert the listing; show the callers of each function and sort in lexicographical order by callee.

checkeqcheckeq [files]

Solaris only. Check nroff/troff input files for missing or unbalanced eqn delimiters. checkeq checks both .EQ/.EN pairs and inline delimiters as indicated by the delim statement.

checknrchecknr [options] [files]

Solaris only. Check nroff/troff source files for mismatched delimiters and unknown commands. It also checks for macros that come in open/close pairs, such as .TS and .TE. With no files, checks the standard input.

checknr works best when input is designed for its conventions: \fP always ends a font change, and \s0 always restores a point-size change. checknr knows about the me and ms macros.


Add new pairs of macros that come in open/close pairs. The six characters representing the new macros must immediately follow the -a, e.g., -a.PS.PE for the pic macros.

Don't complain that the given commands are undefined. String the command names together, as in -a. Useful if you have your own macro package.

Ignore inline font changes (\f).

Ignore inline point-size changes (\s).

chgrpchgrp [options] newgroup files

Change the ownership of one or more files to newgroup. newgroup is either a group ID number or a group name located in /etc/group. You must own the file or be a privileged user to succeed with this command.


Force error messages to be suppressed.

Change the group on symbolic links. Normally, chgrp acts on the file referenced by a symbolic link, not on the link itself. (This option is not necessarily available on all Unix systems.)

Recursively descend through the directory, including subdirectories and symbolic links, setting the specified group ID as it proceeds.

chkeychkey [options]

Solaris only. Prompt for login password and use it to encrypt a new key. See also keylogin and keylogout.


Reencrypt the existing secret key with the user's login password.

-m mechanism
Change or reencrypt the secret key for the specified mechanism. (Mechanisms are those allowed by nisauthconf(1).)

-s database
Update the given database, which is one of files, nis, or nisplus.

chmodchmod [option] mode files

Change the access mode of one or more files. Only the owner of a file or a privileged user may change its mode. Create mode by concatenating the characters from who, opcode, and permission. who is optional (if omitted, default is a); choose only one opcode.


Suppress error message upon failure to change a file's mode.

Recursively descend directory arguments while setting modes.









All (default)



Add permission


Remove permission


Assign permission (and remove permission of the unspecified fields)









Set user (or group) ID


Sticky bit; save text mode (file) or prevent removal of files by nonowners (directory)


User's present permission


Group's present permission


Other's present permission


Mandatory locking

Alternatively, specify permissions by a three-digit sequence. The first digit designates owner permission; the second, group permission; and the third, others permission. Permissions are calculated by adding the following octal values:







Note: a fourth digit may precede this sequence. This digit assigns the following modes:


Set user ID on execution


Set group ID on execution or set mandatory locking


Sticky bit


Add execute-by-user permission to file:

chmod u+x file

Either of the following assigns read-write-execute permission by owner (7), read-execute permission by group (5), and execute-only permission by others (1) to file:

chmod 751 file
chmod u=rwx,g=rx,o=x file

Any one of the following assigns read-only permission to file for everyone:

chmod =r file
chmod 444 file
chmod a-wx,a+r file

Set the user ID, assign read-write-execute permission by owner, and assign read-execute permission by group and others:

chmod 4755 file
chownchown [options] newowner[:newgroup] files

Change the ownership of one or more files to newowner. newowner is either a user ID number or a login name located in /etc/passwd. The optional newgroup is either a group ID number (GID) or a group name located in the /etc/group file. When newgroup is supplied, the behavior is to change the ownership of one or more files to newowner and make it belong to newgroup.

Note: some systems accept a period as well as the colon for separating newowner and newgroup. The colon is mandated by POSIX; the period is accepted for compatibility with older BSD systems.


Force error messages to be suppressed.

Change the owner on symbolic links. Normally, chown acts on the file referenced by a symbolic link, not on the link itself. (This option is not necessarily available on all Unix systems.)

Recursively descend through the directory, including subdirectories and symbolic links, resetting the ownership ID.

cksumcksum [files]

Solaris only. Calculate and print a cyclic redundancy check (CRC) for each file. The CRC algorithm is based on the polynomial used for Ethernet packets. For each file, cksum prints a line of the form:

sum count filename

Here, sum is the CRC, count is the number of bytes in the file, and filename is the file's name. The name is omitted if standard input is used.


Clear the terminal display.

cmpcmp [options] file1 file2

Compare file1 with file2. Use standard input if file1 or file2 is -. See also comm and diff. The exit codes are as follows:


Files are identical.


Files are different.


Files are inaccessible.


For each difference, print the byte number in decimal and the differing bytes in octal.

Work silently; print nothing, but return exit codes.


Print a message if two files are the same (exit code is 0):

cmp -s old new && echo 'no changes'
colcol [options]

A postprocessing filter that handles reverse linefeeds and escape characters, allowing output from tbl (or nroff, occasionally) to appear in reasonable form on a terminal.


Ignore backspace characters; helpful when printing manpages.

Process half-line vertical motions, but not reverse line motion. (Normally, half-line input motion is displayed on the next full line.)

Print unknown escape sequences (normally ignored) as regular characters. This option can garble output, so its use is not recommended.

Normally, col saves printing time by converting sequences of spaces to tabs. Use -x to suppress this conversion.


Run file through tbl and nroff, then capture output on screen by filtering through col and more:

tbl file | nroff | col | more

Save manpage output in file.print, stripping out backspaces (which would otherwise appear as ^H):

man file | col -b > file.print
comb/usr/ccs/bin/comb [options] files

An SCCS command. See Chapter 18.

commcomm [options] file1 file2

Compare lines common to the sorted files file1 and file2. Three-column output is produced: lines unique to file1, lines unique to file2, and lines common to both files. comm is similar to diff in that both commands compare two files. In addition, comm can be used like uniq; that is, comm selects duplicate or unique lines between two sorted files, whereas uniq selects duplicate or unique lines within the same sorted file.


Read the standard input.

Suppress printing of Column 1.

Suppress printing of Column 2.

Suppress printing of Column 3.

Print only lines in Column 3 (lines common to file1 and file2).

Print only lines in Column 2 (lines unique to file2).

Print only lines in Column 1 (lines unique to file1).


Compare two lists of top-10 movies and display items that appear in both lists:

comm -12 shalit_top10 maltin_top10
compresscompress [options] [files]

Reduce the size of one or more files using adaptive Lempel-Ziv coding and move to file.Z. Restore with uncompress or zcat.

With a filename of , or with no files, compress reads standard input.

Note: Unisys claims a patent on the algorithm used by compress. Today, gzip is generally preferred for file compression.


Limit the number of bits in coding to n; n is 9–16, and 16 is the default. A lower n produces a larger, less densely compressed file.

Write to the standard output (do not change files).

Compress unconditionally; i.e., do not prompt before overwriting files. Also, compress files even if the resulting file would actually be larger.

Print the resulting percentage of reduction for files.


cp [options] file1 file2

cp [options] files directory

Copy file1 to file2, or copy one or more files to the same names under directory. If the destination is an existing file, the file is overwritten; if the destination is an existing directory, the file is copied into the directory (the directory is not overwritten). If one of the inputs is a directory, use the -r option.


Prompt for confirmation (y for yes) before overwriting an existing file.

Preserve the modification time and permission modes for the copied file. (Normally cp supplies the permissions of the invoking user.)

Recursively copy a directory, its files, and its subdirectories to a destination directory, duplicating the tree structure. (This option is used with the second command-line format when at least one of the source file arguments is a directory.) Bear in mind that both symbolic and hard links are copied as real files; the linking structure of the original tree is not preserved.


Copy two files to their parent directory (keep the same names):

cp outline memo ..
cpiocpio control_options [options]

Copy file archives in from, or out to, tape or disk, or to another location on the local machine. Each of the three control options, -i, -o, or -p accepts different options. (See also tar">pax and tar.)

cpio -i [options] [patterns]
Copy in (extract) files whose names match selected patterns. Each pattern can include filename metacharacters from the Bourne shell. (Patterns should be quoted or escaped so they are interpreted by cpio, not by the shell.) If no pattern is used, all files are copied in. During extraction, existing files are not overwritten by older versions in the archive (unless -u is specified).

cpio -o [options]
Copy out a list of files whose names are given on the standard input.

cpio -p [options] directory
Copy files to another directory on the same system. Destination pathnames are interpreted relative to the named directory.

Comparison of Valid Options

Options available to the -i, -o, and -p options are shown respectively in the first, second, and third row below. (The - is omitted for clarity.)

i: 6   b B c C d E f H I k   m M  r R s S t u v V
o: a A   B c C       H     L   M O            v V
p: a           d         l L m   P  R       u v V


Reset access times of input files.

Append files to an archive (must use with -O).

Swap bytes and half-words. Words are 4 bytes.

Block input or output using 5120 bytes per record (default is 512 bytes per record).

Read or write header information as ASCII characters; useful when source and destination machines are different types.

-C n
Like -B, but block size can be any positive integer n.

Create directories as needed.

-E file
Extract filenames listed in file from the archive.

Reverse the sense of copying; copy all files except those that match patterns.

-H format
Read or write header information according to format. Values for format are bar (bar format header and file, read-only, Solaris only), crc (ASCII header containing expanded device numbers), odc (ASCII header containing small device numbers), ustar (IEEE/P1003 Data Interchange Standard header), or tar (tar header). Solaris also allows CRC, TAR, and USTAR.

-I file
Read file as an input archive.

Skip corrupted file headers and I/O errors.

Link files instead of copying. Can be used only with -p.

Follow symbolic links.

Retain previous file-modification time.

-M msg
Print msg when switching media. Use variable %d in the message as a numeric ID for the next medium. -M is valid only with -I or -O.

-O file
Direct the output to file.

Preserve ACLs. Can be used only with -p. Solaris only.

Rename files interactively.

Reassign file ownership and group information of extracted files to the user whose login ID is ID (privileged users only).

Swap bytes.

Swap half-words.

Print a table of contents of the input (create no files). When used with the -v option, resembles output of ls -l.

Unconditional copy; old files can overwrite new ones.

Print a list of filenames.

Print a dot for each file read or written (this shows cpio at work without cluttering the screen).

Process a PWB Unix 6th Edition archive format file. Useful only with the -i option, mutually exclusive with -c and -H.


Generate a list of old files using find; use list as input to cpio:

find . -name "*.old" -print | cpio -ocBv > /dev/rmt/0

Restore from a tape drive all files whose name contains “save” (subdirectories are created if needed):

cpio -icdv "*save*" < /dev/rmt/0

To move a directory tree:

find . -depth -print | cpio -padml /mydir
crontabcrontab [file]
crontab options [user

Run crontab on your current crontab file, or specify a crontab file to add to the crontab directory. A privileged user can run crontab for another user by supplying a user after any of the options.

A crontab file is a list of commands, one per line, that will execute automatically at a given time. Numbers are supplied before each command to specify the execution time. The numbers appear in five fields, as follows:

Minute		0-59
Hour		0-23
Day of month	1-31
Month		1-12
Day of week	0-6, with 0 = Sunday

Use a comma between multiple values, a hyphen to indicate a range, and an asterisk to indicate all possible values. For example, assuming the crontab entries below:

59 3 * * 5	find / -print | backup_program
0 0 1,15 * *	echo "Timesheets due" | mail user

The first command backs up the system files every Friday at 3:59 a.m., and the second command mails a reminder on the 1st and 15th of each month.


Edit the user's current crontab file (or create one).

List the user's file in the crontab directory.

Delete the user's file in the crontab directory.

cscopecscope [options] files

Interactive utility for finding code fragments in one or more C, lex, or yacc source files. cscope builds a symbol cross reference (named cscope.out by default) and then calls up a menu. The menu prompts the user to search for functions, macros, variables, preprocessor directives, etc. Type ? to list interactive commands. Subsequent calls to cscope rebuild the cross reference if needed (i.e., if filenames or file contents have changed). Source filenames can be stored in a file cscope.files. This file can then be specified instead of files. Options -I, -p, and -T are also recognized when placed in cscope.files.


Build the symbol cross reference only.

Create output in ASCII (don't compress data).

Ignore uppercase/lowercase differences in searches.

Don't update the cross reference.

Don't show the ^E prompt between files.

-f out
Name the cross-reference file out instead of cscope.out.

-i in
Check source files whose names are listed in in rather than in cscope.files.

-I dir
Search for include files in dir before searching the default (/usr/include). cscope searches the current directory, then dir, then the default.

Run in line mode; useful from within a screen editor.

Use with -n pat to do a single search.

-p n
Show the last n parts of the filename path. Default is 1 (filename); use 0 to suppress the filename.

-P path
Use with -d to prepend path to filenames in existing cross reference. This lets you run cscope without changing to the directory where the cross reference was built.

-s dir
Look for source files in directory dir instead of in current directory.

Match only the first eight characters of C symbols.

Build cross reference unconditionally (assume all files changed).

Ignore file timestamps (assume no files changed).

Print the cscope version on first line of screen.

-n pat
Go to field n of input (starting at 0), then find pat.

cshcsh [options] [arguments]

Command interpreter that uses syntax resembling C. csh (the C shell) executes commands from a terminal or a file. See Chapter 5 for information on the C shell, including command-line options.

csplitcsplit [options] file arguments

Separate file into sections and place sections in files named xx00 through xxn (n < 100), breaking file at each pattern specified in arguments. See also split.


-f file
Name new files file00 through fileN (default is xx00 through xxn).

Keep newly created files, even when an error occurs (which would normally remove these files). This is useful when you need to specify an arbitrarily large repeat argument, {n}, and you don't want the “out of range” error to remove the new files.

Suppress all character counts.


Any one or a combination of the following expressions. Arguments containing blanks or other special characters should be surrounded by single quotes.

Create file from the current line up to the line containing the regular expression expr. This argument takes an optional suffix of the form +n or -n, where n is the number of lines below or above expr.

Same as /expr/, except no file is created for lines previous to line containing expr.

Create file from current line up to line number num.

Repeat argument n times. May follow any of the above arguments. Files will split at instances of expr or in blocks of num lines.


Create up to 20 chapter files from the file novel:

csplit -k -f chap. novel '%CHAPTER%' '{20}'

Create up to 100 address files (xx00 through xx99), each four lines long, from a database named address_list:

csplit -k address_list 4 {99}
ctagsctags [options] files

Create a list of function and macro names that are defined in the specified C, Pascal, FORTRAN, yacc, or lex source files. Solaris ctags can also process C++ source files. The output list (named tags by default) contains lines of the form:

name	file	context

where name is the function or macro name, file is the source file in which name is defined, and context is a search pattern that shows the line of code containing name. After the list of tags is created, you can invoke vi on any file and type:

:set tags=tagsfile
:tag name

This switches the vi editor to the source file associated with the name listed in tagsfile (which you specify with -f).


Append tag output to existing list of tags.

context uses backward search patterns.

Place output in tagsfile (default is tags).

context uses forward search patterns (default).

Include C typedef s as tags.

Update tags file to reflect new locations of functions (e.g., when functions are moved to a different source file). Old tags are deleted; new tags are appended.

Produce a listing (index) of each function, source file, and page number (1 page = 64 lines). -v is intended to create a file for use with vgrind.

Suppress warning messages.

Produce a listing of each function, its line number, source file, and context.


Store tags in Taglist for all C programs:

ctags -f Taglist *.c

Update tags and store in Newlist:

ctags -u -f Newlist *.c
ctracectrace [options] [file]

Debug a C program. ctrace reads the C source file and writes a modified version to standard output. Common options are -f and -v. ctrace also accepts the cc options -D, -I, and -U.


Print variables as floating point.

-f functions
Trace only the specified functions.

-l n
Follow a statement loop n times (default is 20).

Print variables in octal.

-p s
Print trace output via function s (default is printf).

Run the C preprocessor before tracing.

Print information about ctrace in output (if c = y) or suppress information (if c = n, the default).

Change the trace function package to file (default is runtime.c).

Suppress certain redundant code.

Trace n variables per statement (default is 10; maximum is 20).

Print variables as unsigned.

-v functions
Do not trace the specified functions.

Print version information on standard error.

Print variables as floating point.

cutcut options [files]

Select a list of columns or fields from one or more files. Either -c or -f must be specified. list is a sequence of integers. Use a comma between separate values and a hyphen to specify a range (e.g., 1-10,15,20 or 50-). See also paste and join.


-b list
This list specifies byte positions, not character positions. This is important when multibyte characters are used. With this option, lines should be 1023 bytes or less in size. Solaris only.

Cut the character positions identified in list.

Use with -f to specify field delimiter as character c (default is tab); special characters (e.g., a space) must be quoted.

Cut the fields identified in list.

Do not split characters. When used with -b, cut doesn't split multibyte characters. Solaris only.

Use with -f to suppress lines without delimiters.


Extract usernames and real names from /etc/passwd:

cut -d: -f1,5 /etc/passwd

Find out who is logged on, but list only login names:

who | cut -d" " -f1

Cut characters in the fourth column of file, and paste them back as the first column in the same file. Send the results to standard output:

cut -c4  file | paste - file
cxrefcxref [options] files

Build a cross-reference table for each of the C source files. The table lists all symbols, providing columns for the name and the associated function, file, and line. In the table, symbols are marked by = if assigned, - if declared, or * if defined. cxref also accepts the cc options -D, -I, and -U.


Report on all files in a single table.

Don't execute the second pass of cxref; save output from first pass in .cx files. (Like -c in lint and cc.)

Simplify report by omitting print declarations.

Print files using full pathname, not just the filename.

Don't print local variables.

Limit the LINE field to n columns (default is 5).

-o file
Send output to file.

Silent mode; don't print input filenames.

Format for 80-column listing.

Print version information on standard error.

Format for maximum width of n columns (default is 80; n must be more than 50).

Set the width of each (or any) column to n1, n2, n3, or n4 (respective defaults are 15, 13, 15, and 20). Column headings are NAME, FILE, FUNCTION, and LINE, respectively.

datedate [option] [+format]
date [options] [string

In the first form, print the current date and time, specifying an optional display format. In the second form, a privileged user can set the current date by supplying a numeric string. format can consist of literal text strings (blanks must be quoted) as well as field descriptors, whose values will appear as described below.



Insert a newline.


Insert a tab.


Month of year (01–12).


Day of month (01–31).


Last two digits of year (00–99).


Date in %m/%d/%y format.


Abbreviated month name.


Day of month (1–31); pad single digits with a space.


Four-digit year (e.g., 1996).


Week-based year within century (00–99). Solaris only.


Week-based year, including the century (0000–9999). Solaris only.


Same as %b.


Full month name.


Hour in 24-hour format (00–23).


Minute (00–59).


Second (00–61); 61 permits leap seconds and double leap seconds.


Time in %H:%M format.


Time in %H:%M:%S format.


Hour (24-hour clock, 0–23); single digits are preceded by a space. Solaris only.


Hour (12-hour clock, 1–12); single digits are preceded by a space. Solaris only.


Hour in 12-hour format (01–12).


String to indicate a.m. or p.m. (default is AM or PM).


Time in %I:%M:%S %p format.


Abbreviated weekday.


Full weekday.


Day of week (Sunday = 0).


Weekday as a decimal number (1–7), Sunday = 1. Solaris only.


Week number in year (00–53); start week on Sunday.


Week number in year (00–53); start week on Monday.


The ISO-8601 week number (01–53). In ISO-8601, weeks begin on a Monday, and week 1 of the year is the one that includes both January 4th and the first Thursday of the year. If the first Monday of January is the 2nd, 3rd, or 4th, the preceding days are part of the last week of the previous year. Solaris only.


Julian day of year (001–366).


Time-zone name.


Country-specific date format.


Country-specific time format.


Country-specific date and time format (default is %a %b %e %T %Z %Y; e.g., Mon Feb 1 14:30:59 EST 1993).

The actual formatting is done by the strftime(3) library routine. On Solaris, the country-specific formats depend on the setting of the LC_CTYPE, LC_TIME, LC_MESSAGES, and NLSPATH environment variables.


-a s.f
(Privileged user only.) Gradually adjust the system clock until it drifts s seconds away from what it thinks is the “current” time. (This allows continuous micro-adjustment of the clock while the system is running.) f is the fraction of seconds by which time drifts. By default, the clock speeds up; precede s by a -- to slow down.

Display or set the time using Greenwich Mean Time (UTC) .

Strings for Setting the Date

A privileged user can set the date by supplying a numeric string. string consists of time, day, and year concatenated in one of three ways: time or [day]time or [day]time[year]. Note: don't type the brackets.

A two-digit hour and two-digit minute (HHMM); HH uses 24-hour format.

A two-digit month and two-digit day of month (mmdd); default is current day and month.

The year specified as either the full four digits or just the last two digits; default is current year.


Set the date to July 1 (0701), 4 a.m. (0400), 1999 (99):

date 0701040099

The command:

date +"Hello%t Date is %D %n%t Time is %T"

produces a formatted date as follows:

Hello	Date is 05/09/93
	Time is 17:53:39
dcdc [file]

An interactive desk calculator program that performs arbitrary-precision integer arithmetic (input may be taken from a file). Normally you don't run dc directly, since it's invoked by bc (see bc). dc provides a variety of one-character commands and operators that perform arithmetic; dc works like a Reverse Polish calculator; therefore, operators and commands follow the numbers they affect. Operators include + - / * % ^ (as in C, although ^ means exponentiation); some simple commands include:


Print current result.


Quit dc.


Clear all values on the stack.


Take square root.


Change input base; similar to bc's ibase.


Change output base; similar to bc's obase.


Set scale factor (number of digits after decimal); similar to bc's scale.


Remainder of line is a Unix command.


3 2 ^ p   Evaluate 3 squared, then print result
8 * p    Current value (9) times 8, then print result
47 - p   Subtract 47 from 72, then print result
v p      Square root of 25, then print result
2 o p   	Display current result in base 2

Note: spaces are not needed except between numbers.

dddd [option=value]

Make a copy of an input file (if=), or standard input if no named input file, using the specified conditions, and send the results to the output file (or standard output if of is not specified). Any number of options can be supplied, although if and of are the most common and are usually specified first. Because dd can handle arbitrary block sizes, it is useful when converting between raw physical devices.


Set input and output block size to n bytes; this option supersedes ibs and obs.

Set the size of the conversion buffer (logical record length) to n bytes. Use only if the conversion flag is ascii, asciib, ebcdic, ebcdicb, ibm, ibmb, block, or unblock.

Convert the input according to one or more (comma-separated) flags listed below. The first six flags are mutually exclusive. The next two are mutually exclusive with each other, as are the following two.




EBCDIC to ASCII, using BSD-compatible conversions. Solaris only.




ASCII to EBCDIC, using BSD-compatible conversions. Solaris only.


ASCII to EBCDIC with IBM conventions.


ASCII to EBCDIC with IBM conventions, using BSD-compatible conversions. Solaris only.


Variable-length records (i.e., those terminated by a newline) to fixed-length records.


Fixed-length records to variable-length.


Uppercase to lowercase.


Lowercase to uppercase.


Continue processing when errors occur (up to five in a row).


Do not truncate the output file. This preserves blocks in the output file that this invocation of dd did not write. Solaris only.


Swap all pairs of bytes.


Pad input blocks to ibs.

Copy only n input blocks.

Copy n input files (e.g., from magnetic tape), then quit.

Set input block size to n bytes (default is 512).

Read input from file (default is standard input).

Set output block size to n bytes (default is 512).

Write output to file (default is standard output).

Seek n blocks from start of input file (like skip but more efficient for disk file input).

Seek n blocks from start of output file.

Same as oseek (retained for compatibility).

Skip n input blocks; useful with magnetic tape.

You can multiply size values (n) by a factor of 1024, 512, or 2 by appending the letters k, b, or w, respectively. You can use the letter x as a multiplication operator between two numbers.


Convert an input file to all lowercase:

dd if=caps_file of=small_file conv=lcase

Retrieve variable-length data; write it as fixed-length to out:

data_retrieval_cmd | dd of=out conv=sync,block
delta/usr/ccs/bin/delta [options] files

An SCCS command. See Chapter 18.

deroffderoff [options] [files]

Remove all nroff/troff requests and macros, backslash escape sequences, and tbl and eqn constructs from the named files.


Ignore .so and .nx requests. Solaris only.

Suppress text that appears on mm macro lines (i.e., paragraphs print but headings might be stripped).

Same as -mm, but also deletes lists created by mm macros; e.g., .BL/.LE, .VL/.LE constructs. (Nested lists are handled poorly.)

Suppress text that appears on ms macro lines (i.e., paragraphs print but headings might be stripped). Solaris only.

Output the text as a list, one word per line. See also the example under xargs.

dfdf [options] [name]

Report the number of free disk blocks and inodes available on all mounted filesystems or on the given name. (Unmounted filesystems are checked with -F.) name can be a device name (e.g., /dev/dsk/0s9), the directory name of a mount point (e.g., /usr), a directory name, or a remote filesystem name (e.g., an NFS filesystem). Besides the options listed, there are additional options specific to different filesystem types or df modules.


Provide information about all filesystems, even ones usually marked in /etc/mnttab to be ignored. Solaris only.

Print only the number of free kilobytes.

Print only the number of free files.

-F type
Report on an unmounted filesystem specified by type. Available types can be seen in the file /etc/vfstab.

Print the whole statvfs structure (overriding other print options).

/usr/ucb/df only. Show the number of used and available inodes in a format similar to df -k.

Print allocation in kilobytes (typically used without other options). This option produces output in the format traditionally used by the BSD version of df.

Report only on local filesystems.

Print only the filesystem type name; with no other arguments, -n lists the types for all mounted filesystems.

-o suboptions
Supply a comma-separated list of type-specific suboptions.

Report total allocated space as well as free space.

Echo command line but do not execute command.

diffdiff [options] [diroptions] file1 file2

diff reports lines that differ between file1 and file2. Output consists of lines of context from each file, with file1 text flagged by a < symbol and file2 text by a > symbol. Context lines are preceded by the ed command (a, c, or d) that converts file1 to file2. If one of the files is , standard input is read. If one of the files is a directory, diff locates the filename in that directory corresponding to the other argument (e.g., diff my_dir junk is the same as diff my_dir/junk junk). If both arguments are directories, diff reports lines that differ between all pairs of files having equivalent names (e.g., olddir/program and newdir/program); in addition, diff lists filenames unique to one directory, as well as subdirectories common to both. See also bdiff, cmp, comm, diff3, dircmp, and sdiff.


Options -c, -C, -D, -e, -f, -h, and -n cannot be combined with each other (they are mutually exclusive).

Ignore repeating blanks and end-of-line blanks; treat successive blanks as one.

Produce output in alternate format, with three lines of context. (This is called a “context diff.”)

Like -c, but produce n lines of context.

-D def
Merge file1 and file2 into a single file containing conditional C preprocessor directives (#ifdef). Defining def and then compiling yields file2; compiling without defining def yields file1.

Produce a script of commands (a, c, d) to recreate file2 from file1 using the ed editor.

Produce a script to recreate file1 from file2; the script is in the opposite order, so it isn't useful to ed.

Do a half-hearted (but hopefully faster) comparison; complex differences (e.g., long stretches of many changes) may not show up; -e and -f are disabled.

Ignore uppercase and lowercase distinctions.

Like -f, but counts changed lines. rcsdiff works this way.

Expand tabs in output lines; useful for preserving indentation changed by -c format.

Like -b, but ignores all spaces and tabs; e.g., a + b is the same as a+b.

The following diroptions are valid only when both file arguments are directories.


Long format; output is paginated by pr so that diff listings for each file begin on a new page; other comparisons are listed afterward.

Run diff recursively for files in common subdirectories.

Report files that are identical.

Begin directory comparisons with file, skipping files whose names alphabetically precede file.

diff3diff3 [options] file1 file2 file3

Compare three files and report the differences with the following codes:


All three files differ.


file1 is different.


file2 is different.


file3 is different.


Create an ed script to incorporate into file1 all differences between file2 and file3.

Same as -e, but mark with angle brackets any lines that differ between all three files.

Create an ed script to incorporate into file1 all differences between all three files.

Same as -x, but mark with angle brackets any lines that differ between all three files.

Create an ed script to incorporate into file1 differences between file1 and file3.

diffmkdiffmk oldfile newfile markedfile

A useful program for reviewing changes between drafts of a document. diffmk compares two versions of a file (oldfile and newfile) and creates a third file (markedfile) that contains troff “change mark” requests. When markedfile is formatted with nroff or troff, the differences between the two files are marked in the margin (via the .mc request). diffmk uses a | to mark changed lines and a * to mark deleted lines. Note that change marks are produced even if the changes are inconsequential (e.g., extra blanks, different input line lengths).


To run diffmk on multiple files, it's convenient to set up directories in which to keep the old and new versions of your files, and to create a directory in which to store the marked files:


Move your old files to OLD and your new files to NEW. Then use this rudimentary Bourne shell script:

$ cat do.mark
for file
   echo "Running diffmk on $file ..."
   diffmk ../OLD/$file $file ../CHANGED/$file

You must run the script in the directory of new files:

$ cd NEW
$ do.mark Ch*
dircmpdircmp [options] dir1 dir2

Compare the contents of dir1 and dir2. See also diff and cmp.


Execute diff on files that differ.

Don't report files that are identical.

Change the output line length to n (default is 72).

dirnamedirname pathname

Print pathname, excluding last level. Useful for stripping the actual filename from a pathname. See also basename.

dis/usr/ccs/bin/dis [options] files

Disassemble the object or archive files. See also as.


Display demangled C++ symbol names. Solaris only.

-d section
Disassemble only the specified section of data, printing its offset.

-D section
Same as -d, but print the data's actual address.

-F func
Disassemble only the specified function; reuse -F for additional functions.

-l string
Disassemble only the library file string (e.g., string would be malloc for libmalloc.a).

Look for C source labels in files containing debug information (e.g., files compiled with cc -g).

Print octal output (default is hexadecimal).

-t section
Same as -d, but print text output.

Print version information on standard error.

dos2unixdos2unix [options] dosfile unixfile

Solaris only. Convert files using the DOS extended character set to their ISO standard counterparts. If dosfile and unixfile are the same, the file is overwritten after the conversion is done. See also unix2dos.


Remove extra carriage returns and convert (remove) DOS end-of-file characters for use under Unix.

Same as the default action.

Convert 8-bit DOS graphics characters to space characters.

download/usr/lib/lp/postscript/download [options] [files]

Add a font to the beginning of one or more PostScript files. By adding a font name directly to a PostScript specification, this command can make additional fonts available when printing a PostScript file. download determines which fonts to add by processing PostScript comments that begin with %%DocumentFonts:, followed by a list of PostScript font names. download loads the fonts whose names are listed in a map table. This table links PostScript names with the system file that contains the font definition. A map table for the Times font family might look like:

Times-Bold	times/bold
Times-Italic	times/italic
Times-Roman	times/roman

Filenames that begin with a slash are used verbatim. Otherwise, they are taken to be relative to the host font directory.


Read the standard input.

Search the entire PostScript file instead of just the header comments. Header comments such as %%DocumentFonts: (atend) redirect download to the end of the file. Use this option when such comments aren't present.

-H fontdir
Use fontdir as the directory in which font-definition files are searched (default is /usr/lib/lp/postscript).

-m table
Use map table specified by file table. A leading / in table indicates an absolute pathname; otherwise (as in the previous option), the filename is appended to the fontdir specified by -H. Without -H, the default is /usr/lib/lp/postscript.

-p printer
Normally, download loads fonts that reside on the host machine. With this option, download first checks for fonts that reside on printer (by looking at /etc/lp/printers/printer/residentfonts).

dpost/usr/lib/lp/postscript/dpost [options] [files]

A postprocessor that translates troff-formatted files into PostScript for printing.


Read the standard input.

-c n
Print n copies of each page (default is 1).

-e 0 | 1 | 2
Set text encoding to 0 (default), 1, or 2. Higher encoding reduces the output size and speeds printing, but may be less reliable.

-F dir
Set the font directory to dir (default is /usr/lib/font).

-H dir
Set the host-resident font directory to dir. Files there must describe PostScript fonts and have filenames corresponding to a two-character troff font.

-L file
Set the PostScript prologue to file (default is /usr/lib/postscript/dpost.ps, /usr/lib/lp/postscript/dpost.ps on Solaris).

-m scale
Increase (multiply) the size of logical pages by factor scale (default is 1.0).

-n n
Print n logical pages on each sheet of output (default is 1).

-o list
Print only pages contained in comma-separated list. A page range is specified by n-m.

Omit PostScript pictures from output. Useful when running in a networked environment.

-p layout
Specify layout to be either portrait (long side is vertical; also the default) or landscape (long side is horizontal). layout can be abbreviated to p or l.

-T device
Use device to best describe available PostScript fonts. Default is post, with dpost reading binary files in /usr/lib/font/devpost. Use of -T is discouraged; usually the system PostScript fonts are best, if they are available.

-w n
Draw troff graphics (e.g., pic, tbl) using lines that are n points thick (default is 0.3).

-x n
Offset the x-coordinate of the origin n inches to the right (if n is positive).

-y n
Offset the y-coordinate of the origin n inches down (if n is positive). Default origin is the upper-left corner of the page.


pic file | tbl | eqn | troff -ms -Tpost | dpost -c2 | lp
dudu [options] [directories]

Print disk usage, i.e., the number of 512-byte blocks used by each named directory and its subdirectories (default is current directory).


Print usage for all files, not just subdirectories.

Do not cross filesystem boundaries. Solaris only.

Print information in units of kilobytes.

For symbolic links, process the file or directory to which the link refers, not the link itself. Solaris only.

Do not add child-directory statistics to the parent directory's total. No effect if -s is also used. Solaris only.

Print a “cannot open” message if a file or directory is inaccessible.

Print only the grand total for each named directory.

echoecho [-n] [string]

Echo arguments to standard output. Often used for producing prompts from shell scripts. This is the /bin/echo command. echo also exists in /usr/ucb, and as a command built into the Bourne, C, and Korn shells (see Chapter 4 and Chapter 5).

Although echo is conceptually the simplest of all Unix commands, using it in practice is complicated, because of portability and version differences. (Consider using printf instead.) The following sections summarize the differences.

Version Differences

Does not accept the -n option. Interprets the escape sequences described next.

Accepts the -n option if it's first. Does not interpret escape sequences.

Bourne shell echo
Does not accept the -n option. Interprets the escape sequences described next, except \a.

C shell echo
Accepts the -n option if it's first. Does not interpret escape sequences.

Korn shell echo
Searches $PATH and behaves like the first version of echo that it finds.

Escape Sequences


Alert (ASCII BEL). (Not in /bin/sh's echo.)




Suppress the terminating newline (same as -n).






Carriage return.


Tab character.


Vertical-tab character.




ASCII character represented by octal number nnn, where nnn is 1, 2, or 3 digits and is preceded by a 0.


echo "testing printer" | lp
echo "TITLE\nTITLE" > file ; cat doc1 doc2 >> file
echo "Warning: ringing bell \07"
eded [options] [file]

The standard text editor. If the named file does not exist, ed creates it; otherwise, the existing file is opened for editing. As a line editor, ed is generally no longer used because vi and ex have superseded it. Some utilities, such as diff, continue to make use of ed command syntax. Encryption (with -x) can be used only in the United States.


Same as -x, but assume file began in encrypted form.

-p string
Set string as the prompt for commands (default is *). The P command turns the prompt display on and off.

Suppress character counts, diagnostics, and the ! prompt for shell commands. Earlier versions of ed used plain -; this is still accepted.

Supply a key to encrypt or decrypt file using crypt.

editedit [options] [files]

A line-oriented text editor that runs a simplified version of ex for novice users. The set variables report, showmode, and magic are preset to report editing changes, to display edit modes (when in :vi mode), and to require literal search patterns (no metacharacters allowed), respectively. (Encryption is not supported outside the United States.) edit accepts the same options as ex; see ex for a listing. See Chapter 8, and Chapter 9, for more information.

egrepegrep [options] [regexp] [files]

Search one or more files for lines that match a regular expression regexp. egrep doesn't support the metacharacters \(, \), \n, \<, \>, \{, or \}, but does support the other metacharacters, as well as the extended set +, ?, |, and ( ). Remember to enclose these characters in quotes. Regular expressions are described in Chapter 6. Exit status is 0 if any lines match, 1 if not, and 2 for errors. See also grep and fgrep.


Precede each line with its block number. (Not terribly useful.)

Print only a count of matched lines.

-e regexp
Use this if regexp begins with -.

-f file
Take expression from file.

List matched lines but not filenames (inverse of -l).

Ignore uppercase and lowercase distinctions.

List filenames but not matched lines.

Print lines and their line numbers.

Silent mode: print only error messages, and return the exit status. Not on SVR4, but common on most commercial Unix systems.

Print all lines that don't match regexp.


Search for occurrences of Victor or Victoria in file:

egrep 'Victor(ia)?' file

egrep '(Victor|Victoria)' file

Find and print strings such as old.doc1 or new.doc2 in files, and include their line numbers:

egrep -n '(old|new)\.doc?' files
ejecteject [options] [media]

Solaris only. Eject removable media, such as a floppy disk or CD-ROM. Necessary for media being managed by vold, or for media without an eject button, such as the floppy drives on Sun SPARC systems. media is either a device name or a nickname, such as floppy or cdrom.

With volume management available, eject unmounts any filesystems mounted on the named media. In this case, it also displays a pop-up dialog if a window system is running. Without volume management, it simply sends an “eject” command to the given device.


Print the name of the default device to be ejected.

When volume management is not in effect, force the eject, even if the device is busy.

Display the list of nicknames and their corresponding real devices.

Do not use a windowing pop-up dialog.

Query to see if the device has media. Use the exit status to determine the answer.

elfdumpelfdump [options] filename ...

Solaris only. Symbolically dump parts of an object file. files may be individual files, or ar archives (libraries) of object files.


Print section headers.

Print the .dynamic section.

Print the ELF header.

Print the .interp section.

Print the .got section.

Print the .hash section.

Print the .note section.

-N name
Qualify an option with the specific name name (e.g., to choose a specific symbol table with -s).

Print program headers.

Print the relocation sections.

Print the symbol table sections.

Print the version sections.

-w file
Write the specified section to file.

envenv [options] [variable=value ... ] [command]

Display the current environment or, if environment variables are specified, set them to a new value and display the modified environment. If command is specified, execute it under the modified environment.


Ignore current environment entirely.

Same as -. Solaris only.

eqneqn [options] [files]

Equation preprocessor for troff. See Chapter 17.

error/usr/ccs/bin/error [options] [files]

Read compiler error messages, and insert them into the source files that generated them. This makes it easier to work during the typical edit-compile-debug cycle. Typical usage would be:

cc -O -c  files 2>&1 | error


Do not edit any files; print errors on standard output.

Query. error prompts for a y or n response before inserting error messages into a file.

Print statistics about the different kinds of errors.

After inserting error messages into the source files, run vi on the files.

-t list
Only process files whose suffixes appear in list. Suffixes are dot-separated, and wildcards are allowed, but should be quoted to prevent interpretation by the shell.

exex [options] files

A line-oriented text editor; a superset of ed and the root of vi. See Chapter 8 and Chapter 9 for more information.


-c command
Begin edit session by executing the given ex command (usually a search pattern or line address). If command contains spaces or special characters, enclose it in single quotes to protect it from the shell. For example, command could be ':set list' (show tabs and newlines) or /word (search for word) or '$' (show last line). (Note: -c command was formerly +command. The old version still works.)

Run in LISP mode for editing LISP programs.

List filenames saved due to an editor or system crash.

-r file
Recover and edit file after an editor or system crash.

Edit in read-only mode to prevent accidental changing of files.

Suppress status messages (e.g., errors, prompts); useful when running an ex script. (-s was formerly the - option; the old version still works.)

-t tag
Edit the file containing tag and position the editor at its definition (see ctags for more information).

Invoke vi. Running vi directly is simpler.

Verbose; print nonterminal input on standard error. Useful for tracking shell scripts running ex.

Set the window size to n. Useful over slow dial-up (or slow Internet) connections.

Supply a key to encrypt or decrypt file using crypt.

Same as -x, but assume that file began in encrypted form.


Either of the following examples applies the ex commands in exscript to text file doc:

ex -s doc < exscript
cat exscript | ex -s doc
expandexpand [options] [files]

Expand tab characters into appropriate number of spaces. expand reads the named files or standard input if no files are provided. See also unexpand.


-t tablist
Interpret tabs according to tablist, a space- or comma-separated list of numbers in ascending order, that describe the “tabstops” for the input data.

Set the tabstops every n characters. The default is 8.

Interpret tabs according to tablist, a space- or comma-separated list of numbers in ascending order, that describe the “tabstops” for the input data.


Cut columns 10–12 of the input data, even when tabs are used:

expand data | cut -c 10-12 > data.col2
exprexpr arg1 operator arg2 [ operator arg3 ... ]

Evaluate arguments as expressions and print the result. Strings can be compared and searched. Arguments and operators must be separated by spaces. In most cases, an argument is an integer, typed literally or represented by a shell variable. There are three types of operators: arithmetic, relational, and logical. Exit status for expr is 0 (expression is nonzero and nonnull), 1 (expression is 0 or null), or 2 (expression is invalid).

expr is typically used in shell scripts to perform simple mathematics, such as addition or subtraction. It is made obsolete in the Korn shell by that program's built-in arithmetic capabilities.

Arithmetic Operators

Use the following operators to produce mathematical expressions whose results are printed:


Add arg2 to arg1.


Subtract arg2 from arg1.


Multiply the arguments.


Divide arg1 by arg2.


Take the remainder when arg1 is divided by arg2.

Addition and subtraction are evaluated last, unless they are grouped inside parentheses. The symbols *, (, and ) have meaning to the shell, so they must be escaped (preceded by a backslash or enclosed in single or double quotes).

Relational Operators

Use relational operators to compare two arguments. Arguments can also be words, in which case comparisons assume a < z and A < Z. If the comparison statement is true, the result is 1; if false, the result is 0. Symbols < and > must be escaped.


Are the arguments equal?


Are the arguments different?


Is arg1 greater than arg2?


Is arg1 greater than or equal to arg2?


Is arg1 less than arg2?


Is arg1 less than or equal to arg2?

Logical Operators

Use logical operators to compare two arguments. Depending on the values, the result can be arg1 (or some portion of it), arg2, or 0. Symbols | and & must be escaped.

Logical OR; if arg1 has a nonzero (and nonnull) value, the result is arg1; otherwise, the result is arg2.

Logical AND; if both arg1 and arg2 have a nonzero (and nonnull) value, the result is arg1; otherwise, the result is 0.

Similar to grep; arg2 is a pattern to search for in arg1. arg2 must be a regular expression in this case. If the arg2 pattern is enclosed in \( \), the result is the portion of arg1 that matches; otherwise, the result is simply the number of characters that match. By default, a pattern match always applies to the beginning of the first argument (the search string implicitly begins with a ^). To match other parts of the string, start the search string with .*.


Division happens first; result is 10:

expr 5 + 10 / 2

Addition happens first; result is 7 (truncated from 7.5):

expr \( 5 + 10 \) / 2

Add 1 to variable i; this is how variables are incremented in shell scripts:

i=`expr $i + 1`

Print 1 (true) if variable a is the string “hello”:

expr $a = hello

Print 1 (true) if variable b plus 5 equals 10 or more:

expr $b + 5 \>= 10

In the following examples, variable p is the string "version.100". This command prints the number of characters in p:

expr $p : '.*'        Result is 11

Match all characters and print them:

expr $p : '\(.*\)'    Result is "version.100"

Print the number of lowercase letters at the beginning of p:

expr $p : '[a-z]*'     Result is 7

Match the lowercase letters at the beginning of p:

expr $p : '\([a-z]*\)'  Result is "version"

Truncate $x if it contains five or more characters; if not, just print $x. (Logical OR uses the second argument when the first one is 0 or null; i.e., when the match fails.) Double-quoting is a good idea, in case $x contains whitespace characters.

expr "$x" : '\(.....\)' \| "$x"

In a shell script, rename files to their first five letters:

mv "$x" `expr "$x" : '\(.....\)' \| "$x"`

(To avoid overwriting files with similar names, use mv -i.)

exstrexstr [options] file

Extract strings from C source files, so that they can be stored in a database and retrieved at application runtime using the gettxt library function. With no options, exstr produces a grep-type list showing only filename and strings. exstr is one of several commands to use when customizing applications for international use.

Typical use involves three steps:

  1. Specify -e and the C source file, and redirect the output to a file. This creates a database of text strings and identifying information.

  2. Edit this database by adding information that was previously returned by the mkmsgs command.

  3. Specify -r and the C source file, using the edited database as input. This replaces hardcoded text strings with calls to gettxt. gettxt lets you access translated versions of text strings. (The strings reside in a directory specified by environment variable LC_MESSAGES.)


Use with -r to give the gettxt call a second argument, the original text string. This string is printed as the fallback in case the gettxt call fails.

Extract text strings from file. (-e is not used with other options.) The information appears in this format:


C source file from the command line.


Line number on which the string is found in file.


Inline numerical position of the string's beginning.


Initially null, but later filled in when you edit the database. msg_file is the name of the list of message strings you create by running the mkmsgs command.


Initially null but filled in later. It corresponds to the order of the strings in msg_file.

Replace strings in the source file with calls to gettxt.


Assume a C source file named proverbs.c:

main() {
     printf("Haste makes waste\n"); 
     printf("A stitch in time\n"); 
  1. First issue the command:

    exstr -e proverbs.c > proverb.list

    proverb.list might look something like this:

    proverbs.c:3:8:::Haste makes waste\n 
    proverbs.c:4:8:::A stitch in time\n
  2. Run mkmsgs to create a message file (e.g., prov.US) that can be read by the gettxt call. If the two previous proverb strings are listed ninth and tenth in prov.US, you would edit proverb.list as follows:

    proverbs.c:3:8:prov.US:9:Haste makes waste\n 
    proverbs.c:4:8:prov.US:10:A stitch in time\n
  3. Finally, specify -r to insert gettxt calls:

    exstr -rd proverbs.c < proverb.list > Prov.c

    The internationalized version of your program, Prov.c, now looks like this:

    extern char *gettxt();
    main() {
          "Haste makes waste\n")); 
          "A stitch in time\n")); 
factorfactor [num]

Produce the prime factors of num or read numbers from input.


A do-nothing command that returns an unsuccessful (nonzero) exit status. Normally used in Bourne shell scripts. See also true.


 # This loop never executes
while false

 # This loop executes forever
until false
fdformatfdformat [options] [device]

Solaris only. Format floppy disks and PCMCIA memory cards. device is the name of the appropriate device to format, and varies considerably based on the density of the media, the capability of the disk drive, and whether or not volume management is in effect.


-b label
Apply the label to the media. SunOS labels may be up to eight characters; DOS labels may be up to eleven uppercase characters.

-B file
Install bootloader in file on an MS-DOS diskette. Can only be used with -d or -t dos.

Format a 720KB (3.5 inch) or 360KB (5.25 inch) double-density diskette (same as -l or -L). Use on high- or extended-density drives.

Eject floppy disk when done.

Format a 2.88MB (3.5 inch) extended-density diskette.

Force. Do not prompt for confirmation before formatting.

Format a 1.44MB (3.5 inch) or 1.2MB (5.25 inch) high-density diskette. Use on extended-density drive.

Use a 1.2MB (3.5 inch) medium-density format on a high-density diskette. Use only with the -t nec option. Identical to -m.

Unmount any filesystems on the media, and then format.

Quiet mode. Don't print status messages.

Verify each block on the media after formatting.

Don't format, just write a SunOS label or MS-DOS filesystem.

-t dos
Install an MS-DOS filesystem and boot sector formatting. Same as DOS format or -d.

-t nec
Install an NEC-DOS filesystem and boot sector after formatting. Use only with -M.

Compatibility Options

These options are for compatibility with previous versions of fdformat. Their use is discouraged.

Same as -t dos.

Same as -D or -L.

Same as -l or -D.

Same as -M.

fgrepfgrep [options] [pattern] [files]

Search one or more files for lines that match a literal, text-string pattern. Because fgrep does not support regular expressions, it is faster than grep (hence fgrep, for fast grep). Exit status is 0 if any lines match, 1 if not, and 2 for errors. See also egrep and grep.


Precede each line with its block number. (Not terribly useful.)

Print only a count of matched lines.

-e pat
Use this if pat begins with .

Take a list of patterns from file.

Print matched lines but not filenames (inverse of -l).

Ignore uppercase and lowercase distinctions.

List filenames but not matched lines.

Print lines and their line numbers.

Silent mode: print only error messages, and return the exit status. Not on SVR4, but common on most commercial Unix systems.

Print all lines that don't match pattern.

Print lines only if pattern matches the entire line.


Print lines in file that don't contain any spaces:

fgrep -v ' ' file

Print lines in file that contain the words in spell_list:

fgrep -f spell_list file
filefile [options] files

Classify the named files according to the type of data they contain. file checks the magic file (usually /etc/magic) to identify many common file types.


Check the format of the magic file (files argument is invalid with -c).

Run file on the filenames in list.

Do not follow symbolic links.

Use file as the magic file instead of /etc/magic.

Many file types are understood. Output lists each filename, followed by a brief classification such as:

ascii text
c program text
c-shell commands
iAPX 386 executable
[nt]roff, tbl, or eqn input text
shell commands
symbolic link to ../usr/etc/arp


List all files that are deemed to be nroff/troff input:

file * | grep roff
findfind pathname(s) condition(s)

An extremely useful command for finding particular groups of files (numerous examples follow this description). find descends the directory tree beginning at each pathname and locates files that meet the specified conditions. At least one pathname and one condition must be specified. The most useful conditions include -print (which must be explicitly given to display any output), -name and -type (for general use), -exec and -size (for advanced users), and -mtime and -user (for administrators). On Solaris (and other recent Unix systems), -print is the default condition if none are provided.

Conditions may be grouped by enclosing them in \( \) (escaped parentheses), negated with ! (use \! in the C shell), given as alternatives by separating them with -o, or repeated (adding restrictions to the match; usually only for -name, -type, and -perm).

The find command can often be combined with the xargs command when there are too many files for naming on the command line. (See xargs.)


-atime +n | -n | n
Find files that were last accessed more than n (+n), less than n (-n), or exactly n days ago. Note that find will change the access time of directories supplied as pathnames.

-cpio dev
Take matching files and write them on device dev, using cpio. Obsolete.

-ctime +n | -n | n
Find files that were changed more than n (+n), less than n (-n), or exactly n days ago. Change refers to modification, permission or ownership changes, etc.; therefore, -ctime is more inclusive than -atime or -mtime.

Descend the directory tree, skipping directories and working on actual files first (and then the parent directories). Useful when files reside in unwritable directories (e.g., when using find with cpio).

-exec command {} \;
Run the Unix command on each file matched by find, provided command executes successfully on that file; i.e., returns a 0 exit status. When command runs, the argument {} substitutes the current file. Follow the entire sequence with an escaped semicolon (\;).

Follow symbolic links and track the directories visited (don't use this with -type l).

-fstype type
Find files that reside on filesystems of type type.

-group gname
Find files belonging to group gname. gname can be a group name or a group ID number.

-inum n
Find files whose inode number is n.

-links n
Find files having n links.

Find files that physically reside on the local system.

Display matching files with associated statistics (as if run through ls -lids).

Search for files that reside only on the same filesystem as pathname.

-mtime +n | -n | n
Find files that were last modified more than n (+n), less than n (-n), or exactly n days ago.

-name pattern
Find files whose names match pattern. Filename metacharacters may be used, but should be escaped or quoted.

-ncpio dev
Take matching files and write them on device dev, using cpio -c. Obsolete.

-newer file
Find files that have been modified more recently than file; similar to -mtime.

Find files belonging to a group not in /etc/group.

Find files owned by a user not in /etc/passwd.

-ok command {} \;
Same as -exec, but user must respond (with a y) before command is executed.

-perm nnn
Find files whose permission settings (e.g., rwx) match octal number nnn exactly (e.g., 664 matches -rw-rw-r--). Use a minus sign to make a wildcard match of any specified bit (e.g., -perm -600 matches -rw******, where * can be any mode). Some systems also allow +nnn for this purpose.

Solaris allows nnn to be a symbolic mode in the same form as allowed by chmod.

Print the matching files and directories, using their full pathnames. On Solaris, this is the default.

“Prune” the directory tree of unwanted directory searches; that is, skip the directory most recently matched.

-size n[c]
Find files containing n blocks, or, if c is specified, files that are n characters (bytes) long. (One block = 512 bytes).

-type c
Find files whose type is c. c can be:

bBlock special file
cCharacter special file
DDoor special file, Solaris only
fPlain file
lSymbolic link
pFifo or named pipe

-user user
Find files belonging to a user name or ID.

Same as -mount. Solaris (and some BSD systems) only.


List all files (and subdirectories) in your home directory:

find $HOME -print

List all files named chapter1 underneath the /work directory:

find /work -name chapter1 -print

List “memo” files owned by ann (note the use of multiple starting paths):

find /work /usr -name 'memo*' -user ann -print

Search the filesystem (begin at root) for manpage directories:

find / -type d -name 'man*' -print

Search the current directory, look for filenames that don't begin with a capital letter, and send them to the printer:

find . \! -name '[A-Z]*' -exec lp {} \;

Find and compress files whose names don't end with .Z:

compress `find . -type f \! -name '*.Z' -print`

Remove all empty files on the system (prompting first):

find / -size 0 -ok rm {} \;

Skip RCS directories, but list remaining read-only files:

find . -name RCS -prune -o -perm 444 -print

Search the system for files that were modified within the last two days (good candidates for backing up):

find / -mtime -2 -print

Recursively grep for a pattern down a directory tree:

find /book -print | xargs grep '[Nn]utshell'
fingerfinger [options] users

Display data about one or more users, including information listed in the files .plan and .project in user's home directory. You can specify each user either as a login name (exact match) or as a first or last name (display information on all matching names). Networked environments recognize arguments of the form user@host and @host. (Today, many systems on the Internet disallow connections from finger requests.)


Omit user's home directory and shell from display.

Used with -s to omit heading that normally displays in short format.

Omit .project file from display.

Show “idle” format, a terse format (like -s).

Force long format (default).

users must match usernames exactly, instead of also searching for a match of first or last names.

Omit .plan file from display.

Show “quick” format, the tersest of all (requires an exact match of username).

Show short format.

Used with -s to omit user's full name that normally displays in short format.

fmtfmt [options] [files]

Fill and join text, producing lines of roughly the same length. (Unlike nroff, the lines are not justified.) fmt ignores blank lines and lines beginning with a dot (.) or with “From:”. The emacs editor uses ESC-q to join paragraphs, so fmt is useful for other editors, such as vi. The following vi command fills and joins the remainder of the current paragraph:



Don't adjust the first two lines; align subsequent lines with the second line. Useful for paragraphs that begin with a hanging tag.

Split long lines but leave short lines alone. Useful for preserving partial lines of code.

-w n
Create lines no longer than n columns wide. Default is 72. (Can also be invoked as -n for compatibility with BSD.)

ftpftp [options] [hostname]

Transfer files to and from remote network site hostname. ftp prompts the user for a command. Type help to see a list of known commands.


Enable debugging.

Disable filename expansion (globbing).

Turn off interactive prompting.

No auto-login upon initial connection.

Verbose on. Show all responses from remote server.

gcoregcore [option] process_ids

Create (“get”) a core image of each running process specified. The core image can be used with a debugger. You must own the running process or be a privileged user to use this command.


-o file
Create core file named file.process_id (default is core.process_id).


gencat [option] database msgfiles

Append (or merge) messages contained in one or more msgfiles with the formatted message database file. If database doesn't exist, it is created. Each message in msgfile is preceded by a numerical identifier. Comment lines can be added by using a dollar sign at the beginning of a line, followed by a space or tab. See also genmsg and mkmsgs.


Build a single database that is backward-compatible with databases created by earlier versions of gencat. SVR4 only.

genmsggenmsg [options] files ...

Solaris only. Extract messages strings from source code that uses catgets(3C) for further processing with gencat. The purpose of this command is to create the initial data for use by a translator when internationalizing an application. See also gencat and mkmsgs.


Append (merge) the output into the file specified by -o.

Place extracted comments after the corresponding message, instead of before it.

-c tag
Extract messages containing tag and write them, prefixed by $, in a comment in the output file.

Also add the original messages as comments in the output file.

With -r, overwrite the original input files. With -l, also overwrite the project files.

-g file
Create file as a project file, listing set numbers and their maximum message numbers.

-l file
Use information in file as a project file to calculate new message numbers.

-m prefix
Fill in the message with prefix. Intended for testing.

-M suffix
Fill in the message with suffix. Intended for testing.

Add comments in the output indicating the original file's name and line number for the message.

-o msgfile
Put the output in msgfile.

-p preprocessor
Run the source files through preprocessor before extracting messages.

Replace message numbers with -1 (negative one). Reverse action of -l.

-s tag
Extract comments of the form /* SET tag */ from the source files. Write them to the output as comments, prefixed with $. Only the first matching comment for tag is extracted.

Triple the lengths of extracted messages. Intended for testing.

Don't warn about message and set number range checks and conflicts.

get/usr/ccs/bin/get [options] files

An SCCS command. See Chapter 18.

getconfgetconf [-v spec] system_var
getconf [-v spec] path_var path

getconf -a

Solaris only. This command is specified by POSIX as a portable way of determining system limits. In the first form, print the value of system configuration variables. In the second, print the value of filesystem-related parameters. In the third, print the values of all system configuration variables.


Print the names and values of all system configuration variables.

-v spec
Use spec to govern the selection of values for configuration variables.

getoptsgetopts string name [arg]

Same as built-in Bourne shell command getopts. See Chapter 4.

gettextgettext [domain] string

Solaris only. Retrieve and print the translated version of string. This provides shell-level access to the facilities of gettext(3C). Translations are looked up in /usr/lib/locale/lang/LC_MESSAGES/domain.mo. lang is the current locale (e.g., en_US). If domain is not supplied, the value of $TEXTDOMAIN is used instead. Without a domain, or if no translation can be found, gettext simply prints string. If $TEXTDOMAINDR exists, its value is used instead of /usr/lib/locale/.

gettxtgettxt msgfile:msgnum [default_message]

Obtain the message that resides in file msgfile and whose message ID is msgnum. msgnum is a number from 1 to n, where n is the number of messages in msgfile. gettxt searches for msgfile in directory /usr/lib/locale/locale/LC_MESSAGES, where locale is the language in which the message strings have been written. The value of locale is set by the environment variable LC_MESSAGES, or failing that, the LANG environment variable. If neither is set, locale defaults to a directory named C. If gettxt fails, it displays default_message or (if none is specified) the string, “Message not found!!”

gprof/usr/ccs/bin/gprof [options] [objfile [pfile]]

Solaris only. (Many other modern Unix systems also have it.) Display call-graph profile data of C programs. Programs compiled with the -xpg option of cc (-pg on other compilers) produce a call-graph profile file pfile, whose default name is gmon.out. The specified object file objfile (a.out by default) contains a symbol table that is read and correlated with pfile. See also prof and lprof.


Don't print statically declared functions.

Brief; don't print field descriptions in the profile.

Find the program's static call-graph. Call counts of 0 indicate static-only parents or children.

Demangle C++ symbol names before printing them out.

With this option, you supply one or more existing pfiles. Process the information in all specified profile files and produce profile file called gmon.sum that shows the difference between the runs. See also the -s option below.

-e name
Don't print the graph profile entry for the routine name. -e may be repeated.

-E name
Like -e above. In addition, during time computations, omit the time spent in name.

-f name
Print the graph profile entry only for routine name. -f may be repeated.

-F name
Like -f above. In addition, during time computations, use only the times of the printed routines. -F may be repeated, and it overrides -E.

Don't print entries for local symbols.

With this option, you supply one or more existing pfiles. Sum the information in all specified profile files and send it to a profile file called gmon.sum. Useful for accumulating data across several runs.

Show routines that have zero usage. Useful with -c to find out which routines were never called.

Only print the top n functions.

grepgrep [options] regexp [files]

Search one or more files for lines that match a regular expression regexp. Regular expressions are described in Chapter 6. Exit status is 0 if any lines match, 1 if not, and 2 for errors. See also egrep and fgrep.


Precede each line with its block number. (Not terribly useful.)

Print only a count of matched lines.

-e pat
Use this if pat begins with . Solaris: this option is only available in /usr/xpg4/bin/grep, not /usr/bin/grep. It is common, though, on many modern Unix systems.

Print matched lines but not filenames (inverse of -l).

Ignore uppercase and lowercase distinctions.

List filenames but not matched lines.

Print lines and their line numbers.

Suppress error messages for nonexistent or unreadable files.

Print all lines that don't match regexp.

Restrict regexp to matching a whole word (like using \< and \> in vi). Not on SVR4, but common on many commercial Unix systems.


List the number of users who use the C shell:

grep -c /bin/csh /etc/passwd

List header files that have at least one #include directive:

grep -l '^#include' /usr/include/*

List files that don't contain pattern:

grep -c  pattern files | grep :0
groupsgroups [user]

Show the groups that user belongs to (default is your groups). Groups are listed in /etc/passwd and /etc/group.

gunzipgunzip [gzip options] [files]

Identical to gzip -d. Typically provided as a hard link to gzip. The -1 ... -9 and corresponding long-form options are not available with gunzip; all other gzip options are accepted. See gzip for more information.

gzcatgzcat [gzip options] [files]

A link to gzip instead of using the name zcat, which preserves zcat's original link to compress. Its action is identical to gunzip -c. May be installed as zcat on some systems. See gzip for more information.

gzipgzip [options] [files]

GNU Zip. Reduce the size of one or more files using Lempel-Ziv (LZ77) coding, and move to file.gz. Restore with gunzip. With a filename of -, or with no files, gzip reads standard input. Usually, compression is considerably better than that provided by compress. Furthermore, the algorithm is patent-free.

gzip ignores symbolic links. The original file's name, permissions, and modification time are stored in the compressed file, and restored when the file is uncompressed. gzip is capable of uncompressing files that were compressed with compress, pack, or the BSD compact. Default options may be placed in the environment variable GZIP.

gunzip is equivalent to gzip -d. It is typically a hard link to the gzip command. gzcat and zcat are equivalent to gunzip -c, and are also often hard links to gzip.

Note: while not distributed with SVR4 or Solaris, gzip is the de facto standard file compression program for files available over the Internet. Source code can be obtained from the Free Software Foundation (http://www.gnu.org). Precompiled binaries for Solaris can be obtained from http://www.sunfreeware.com. gzip also has its own web site: see http://www.gzip.org.


Like most GNU programs, gzip has both short and long versions of its command-line options:

-a, --ascii
ASCII text mode: convert end-of-lines using local conventions. Not supported on all systems.

-c, --stdout, --to-stdout
Write output on standard output; keep original files unchanged. Individual input files are compressed separately; for better compression, concatenate all the input files first.

-d, --decompress, --uncompress

-f, --force
Force. The file is compressed or decompressed, even if the target file exists or if the file has multiple links.

-h, --help
Display a help screen and exit.

-l, --list
List the compressed and uncompressed sizes, the compression ratio, and the original name of the file for each compressed file. With --verbose, also list the compression method, the 32-bit CRC, and the original file's last-modification time. With --quiet, the title and totals lines are not displayed.

-L, --license
Display the gzip license and quit.

-n, --no-name
For gzip, do not save the original filename and modification time in the compressed file. For gunzip, do not restore the original name and modification time; use those of the compressed file (this is the default).

-N, --name
For gzip, save the original filename and modification time in the compressed file (this is the default). For gunzip, restore the original filename and modification time based on the information in the compressed file.

-q, --quiet
Suppress all warnings.

-r, --recursive
Recursively walk the current directory tree and compress (for gunzip, uncompress) all files found.

-S .suf, --suffix .suf
Use .suf as the suffix instead of .gz. A null suffix makes gunzip attempt decompression on all named files, no matter what their suffix.

-t, --test
Check the compressed file integrity.

-v, --verbose
Display the name and percentage reduction for each file compressed or decompressed.

-V, --version
Display the version number and compilation options, and then quit.

-n, --fast, --best
Control the compression method. n is a number between 1 and 9. -1 (same as --fast) gives the fastest, but least compressed method. -9 (same as --best) gives the best compression, but is slower. Values between 1 and 9 vary the tradeoff in compression method. The default compression level is -6, which gives better compression at some expense in speed. In practice, the default is excellent, and you should not need to use these options.

headhead [options] [files]

Print the first few lines of one or more files (default is 10).


Print the first n lines of the file.

-n n
Print the first n lines of the file. Solaris only.


Display the first 20 lines of phone_list:

head -20 phone_list

Display the first 10 phone numbers having a 202 area code:

grep '(202)' phone_list | head
help/usr/ccs/bin/help [commands | error_codes]

An SCCS command. See Chapter 18.


Print the hexadecimal ID number of the host machine.

hostnamehostname [newhost]

Print the name of the host machine. Often the same as uname. A privileged user can change the hostname to newhost.

iconviconv -f from_encoding -t to_encoding [file]

Convert the contents of file from one character set (from_encoding) to another (to_encoding). If the destination character set provides no equivalent for a character, it is converted to an underscore (_). Supported conversion sets are listed in the directory /usr/lib/iconv.

idid [-a]

List user and group IDs; list all groups with -a. When you're running an su session as another user, id displays this user's information.

indxbibindxbib files

Part of the refer suite of programs. See Chapter 17.

ipcrmipcrm [options]

Remove a message queue, semaphore set, or shared memory identifier as specified by the options. ipcrm is useful for freeing shared memory left behind by programs that failed to deallocate the space. Use ipcs first to list items to remove.


-m shmid
Remove shared memory identifier shmid.

-M shmkey
Remove shmid created with key shmkey.

-q msqid
Remove message queue identifier msqid.

-Q msgkey
Remove msqid created with key msgkey.

-s semid
Remove semaphore identifier semid.

-S semkey
Remove semid created with key semkey.

ipcsipcs [options]

Print data about active interprocess communication facilities.


Report on active shared memory segments.

Report on active message queues.

Report on active semaphores.

With the -m, -q, or -s options, only the specified interprocess facility is reported on. Otherwise, information about all three is printed.

Use almost all the print options (short for -bcopt).

Use all of the print options (short for -bciopt). Solaris only.

Report maximum allowed number of message bytes, segment sizes, and number of semaphores.

Report the creator's login name and group.

Read status from file instead of from /dev/kmem.

Report the number of shared-memory attaches to the segment. Solaris only.

Use the argument for the kernel “name list” (the list of functions and variables in the kernel) instead of /stand/unix (Solaris: /dev/ksyms).

Report outstanding usage.

Report process numbers.

Report time information.

jar/usr/java/bin/jar [options] [manifest] dest files

Solaris only. Java archive tool. All the named objects and directory trees (if directories are given) are combined into a single Java archive, presumably for downloading. jar is based on the ZIP and ZLIB compression formats; zip and unzip can process .jar files with no trouble. If a manifest is not provided, jar creates one automatically. The manifest becomes the first entry in the archive, and it contains any needed metainformation about the archive.

Usage is similar to tar, in that the leading may be omitted from the options.


Create a new or empty archive to standard output.

The second argument, dest, is the archive to process.

Use specified manifest instead of creating a manifest file.

Don't create a manifest file.

Don't compress the files with ZIP compression.

Print a table of contents for the archive on standard output.

Produce verbose output to standard error.

Extract named file, or all files if no file given.

java/usr/java/bin/java [options] classname [args]

Solaris only. Compile and then run Java bytecode class files. By default, the compiler uses the JIT (“Just In Time”) compiler for the current system. args are passed on to the Java program's main method. See also java_g.


-cs, -checksource
Compare the source code file's modification time to that of the compiled class file, and recompile if it is newer.

-classpath path
Use path as the search path for class files, overriding $CLASSPATH. path is a colon-separated list of directories.

Print a password that must be used for debugging and allow jdb to attach itself to the session. (See jdb.)

Redefine the value of prop to be val. This option may be used any number of times.

Print full version information.

Print a usage message.

-ms size
Set the initial size of the heap to size, which is in bytes. Append k or m to specify kilobytes or megabytes, respectively. The default heap size is 4MB.

-mx size
Set the maximum size of the heap to size, which is in bytes. Append k or m to specify kilobytes or megabytes, respectively. The default maximum size is 16MB. The value must be greater than 1000 bytes and greater than or equal to the initial heap size.

Disable asynchronous garbage collection.

Disable garbage collection of Java classes.

Disable verification.

-oss size
Set the maximum stack size of Java code in a Java thread. Append k or m to specify kilobytes or megabytes, respectively. The default maximum size is 400KB.

java_g only. Enable Java runtime profiling. Place the trace in the named file, if supplied. Otherwise, use ./java.prof.

-ss size
Set the maximum stack size of C code in a Java thread. Append k or m to specify kilobytes or megabytes, respectively. The default maximum size is 128KB.

java_g only. Trace the executed instructions.

-v, -verbose
Print a message to standard output each time a class file is loaded.

Print a message every time the garbage collector frees memory.

Run the byte-code verifier on all code.

Run the verifier on all code loaded via a classloader. This is the default when interpreting.

Display version information for java.

java_g/usr/java/bin/java_g [options] classname [args]

Solaris only. java_g is the nonoptimizing version of the Java interpreter. It is intended for use with a Java debugger, such as jdb. Otherwise, it accepts the same options and works the same as java. See the entry for java for more information.

javacjavac [options] files

Solaris only. Compile Java source code into Java bytecode, for execution with java. Java source files must have a .java suffix and must be named for the class whose code they contain. The generated bytecode files have a .class suffix. By default, class files are created in the same directory as the corresponding source files. Use the CLASSPATH variable to list directories and/or ZIP files that javac will search to find your classes.


-classpath path
Use the colon-separated list of directories in path instead of CLASSPATH to find class files. It is usually a good idea to have the current directory (“.”) on the search path.

-d dir
Specify where to create generated class files.

Recompile missing or out-of-date class files referenced from other class files, not just from source code.

Warn about every use or override of a deprecated member or class, instead of warning at the end.

-encoding encoding
The source file is encoded using encoding. Without this option, the system's default converter is used.

Generate debugging tables with line numbers. With -O, also generate information about local variables.

Pass option to java. option should not contain spaces; use multiple -J options if necessary.

Disable all warnings.

Perform optimizations that may produce faster but larger class files. It may also slow down compilation. This option should be used with discretion.

Print messages as files are compiled and loaded.

javadoc/usr/java/bin/javadoc [options] files | classes

Solaris only. Process declaration and documentation comments in Java source files and produce HTML pages describing the public and protected classes, interfaces, constructors, methods, and fields. javadoc also produces a class hierarchy in tree.html and an index of members in Allnames.html.


Include @author tags.

-classpath path
Use path as the search path for class files, overriding $CLASSPATH. path is a colon-separated list of directories. It is better to use -sourcepath instead of -classpath.

-d dir
Create the generated HTML files in dir.

-docencoding encoding
Use encoding for the generated HTML file.

-encoding encoding
The Java source file is encoded using encoding.

-J opt
Pass opt to the runtime system. See java for more information.

Exclude paragraphs marked with @deprecated.

Don't generate the package index.

Don't generate the class and interface hierarchy.

Include only package, protected and public classes and members.

Include all classes and members.

Include only protected and public classes and members. This is the default.

Include only public classes and members.

-sourcepath path
Use path as the search path for class source files. path is a colon-separated list of directories. If not specified, it defaults to the current -classpath directory. Running javadoc in the directory with the sources allows you to omit this option.

Print additional messages about time spent parsing source files.

Include @version tags.

The -doctype option is no longer available. Only HTML documentation may be produced.

javah/usr/java/bin/javah [options] classes | files

Solaris only. Generate C header and/or source files for implementing native methods. The generated .h file defines a structure whose members parallel those of the corresponding Java class.

The header filename is derived from the corresponding Java class. If the class is inside a package, the package name is prepended to the filename and the structure name, separated by an underscore.

Note: the Java Native Interface (JNI) does not require header or stub files. Use the -jni option to create function prototypes for JNI native methods.


-classpath path
Use path as the search path for class files, overriding $CLASSPATH. path is a colon-separated list of directories.

-d dir
Place generated files in dir.

Print a help message.

Produce JNI native method function prototypes.

-o file
Concatenate all generated header or source files for all the classes and write them to file.

Generate C declarations, not headers.

-td dir
Use dir as the directory for temporary files, instead of /tmp.

Add tracing information to the generated stubs.


Print the version of javah.

javakey/usr/java/bin/javakey [options]

Solaris only. Java security tool. Use javakey to generate digital signatures for archive files, and to build and manage a database of entities, their keys and certificates, and indications of their “trusted” (or nontrusted) status.

The leading on options may be omitted. Only one option may be specified per javakey invocation.


In the option arguments below, an id_or_signer is either a secure ID or a secure signer already in the database.

-c identity [true | false]
Create a new database identity named identity. The optional true or false is an indication as to whether the identity can be trusted. The default is false.

-cs signer [true | false]
Create a new signer in the database named signer. The optional true or false is an indication of whether the signer can be trusted. The default is false.

-dc file
Display the certificate in file.

-ec id_or_signer cnum cfile
Export certificate cnum from id or signer to cfile. The number must be one previously created by javakey.

-ek id_or_signer public [private]
Export the public key for id or signer to file public. Optionally, export the private key to file private. The keys must be in X.509 format.

-g signer algorithm ksize [public] [private]
Shortcut for -gk to generate a key pair for signer.

-gc file
Generate a certificate according to the directives in file.

-gk signer algorithm ksize [public] [private]
Generate a key pair for signer using standard algorithm algorithm, with a key-size of ksize bits. The public key is placed in the file public, and the private key in file private. Exporting private keys should be done with caution.

-gs dfile jarfile
Sign the Java Archive file jarfile according to directives in dfile.

-ic id_or_signer csrcfile
Associate the public key certificate in csrcfile with the named id or signer. This certificate must match a preexisting one, if there is one. Otherwise, this certificate is assigned to the id or signer.

-ii id_or_signer
Supply information about the id or signer. javakey reads information typed interactively. End the information with a line containing a single dot.

-ik identity ksrcfile
Associate the public key in ksrcfile with identity. The key must be in X.509 format.

-ikp signer public private
Import the key pair from files public and private and associate them with signer. The keys must be in X.509 format.

List the usernames of all identities and signers in the database.

Like -l, but provide detailed information.

-li id_or_signer
Provide detailed information just about the named id or signer.

-r id_or_signer
Remove the id or signer from the database.

-t id_or_signer [true | false]
Set or reset the trust level for id or signer.


Create a new identity, arnold, who is to be trusted:

javakey -c arnold true

List detailed information about arnold:

javakey -li arnold
javald/usr/java/bin/javald [options] class

Solaris only. Create a wrapper for Java applications. javald creates a program that, when executed, runs the specified Java program in the proper environment. This hides knowledge of the proper CLASSPATH environment variable, and so on, from the user who just wishes to run the application.


-C path
Add path to the CLASSPATH that runs the application. This option may be provided multiple times.

-H dir
Set the JAVA_HOME environment variable to dir.

-j list
Pass list on to java. Multiple options should be quoted.

-o wrapper
Place the generated wrapper in file wrapper.

-R path
Add path to the LD_LIBRARY_PATH environment variable that is used when the application runs. This allows java to find native methods.

javap/usr/java/bin/javap [options] classfiles

Solaris only. Disassemble Java class files and print the results. By default, javap prints the public fields and methods of the named classes.


Ignored. For backward compatibility with the JDK 1.1 javap.

Print out the disassembled byte-codes for each method in the given classes.

-classpath path
Use path as the search path for class files, overriding $CLASSPATH. path is a colon-separated list of directories.

Generate code that can be used in a C header file.

-J option
Pass option directly to java.

Display line number and local variable information.

Only disassemble package, protected and public classes and members. This is the default.

Disassemble all classes and members.

Only disassemble protected and public classes and members.

Only disassemble public classes and members.

Display the internal type signatures.

For each method, print the stack size, number of arguments, and number of local variables.

Run the Java verifier.

Print the version of javap.

jdb/usr/java/bin/jdb [options] [class]

Solaris only. jdb is the Java Debugger. It is a line-oriented debugger, similar to traditional Unix debuggers, providing inspection and debugging of local or remote Java interpreters.

jdb can be used in place of java, in which case the program to be run is already started in the debugger. Or, it may be used to attach to an already running java session. In the latter case, java must have been started with the -debug option. This option generates a password you then supply on the jdb command line.


-host host
Attach to the running Java interpreter on host.

-password password
Use password to connect to the already running Java interpreter. This password is supplied by java -debug.

joinjoin [options] file1 file2

Join the common lines of sorted file1 and sorted file2. Read standard input if file1 is -. The output contains the common field and the remainder of each line from file1 and file2. In the options below, n can be 1 or 2, referring to file1 or file2.


List unpairable lines in file n (or both if n is omitted). Solaris does not allow omission of n.

-e s
Replace any empty output field with the string s.

-jn m
Join on the m th field of file n (or both files if n is omitted).

-o n.m
Each output line contains fields specified by file number n and field number m. The common field is suppressed unless requested.

Use character c as field separator for input and output.

-v n
Print only the unpairable lines in file n. With both -v 1 and -v 2, all unpairable lines are printed. Solaris only.

-1 m
Join on field m of file 1. Fields start with 1. Solaris only.

-2 m
Join on field m of file 2. Fields start with 1. Solaris only.


Assuming the following input files:

$ cat score
olga    81      91
rene    82      92
zack    83      93

$ cat grade
olga    B       A
rene    B       A

List scores followed by grades, including unmatched lines:

$ join -a1 score grade
olga 81 91 B A
rene 82 92 B A
zack 83 93

Pair each score with its grade:

$ join -o 1.1 1.2 2.2 1.3 2.3 score grade
olga 81 B 91 A
rene 82 B 92 A
jre/usr/java/bin/jre [options] class [arguments]

Solaris only. Java Runtime Environment. This program actually executes compiled Java files.


-classpath path
Use path as the search path for class files, overriding $CLASSPATH. path is a colon-separated list of directories.

-cp pathlist
Prepend one or more paths to the value of $CLASSPATH. Use a colon-separated list when supplying multiple paths. Components may be either directories or full pathnames to files to be executed.

Redefine the value of prop to be val. This option may be used any number of times.

Print a usage message.

-ms size
Set the initial size of the heap to size, which is in bytes. Append k or m to specify kilobytes or megabytes, respectively.

-mx size
Set the maximum size of the heap to size, which is in bytes. Append k or m to specify kilobytes or megabytes, respectively.

Disable asynchronous garbage collection.

Disable garbage collection of Java classes.

Don't do JIT (“just in time”) compilation; use the default interpreter instead.

Disable verification.

-oss size
Set the maximum stack size of Java code in a Java thread. Append k or m to specify kilobytes or megabytes, respectively. The default maximum size is 400KB.

-ss size
Set the maximum stack size of C code in a Java thread. Append k or m to specify kilobytes or megabytes, respectively. The default maximum size is 128KB.

-v, -verbose
Print a message to standard output each time a class file is loaded.

Print a message every time the garbage collector frees memory.

Run the byte-code verifier on all code. Note that this only verifies byte-codes that are actually executed.

Run the verifier on all code loaded via a classloader. This is the default when interpreting.

jshjsh [options] [arguments]

Job control version of sh (the Bourne shell). This provides control of background and foreground processes for the standard shell. See Chapter 4.

keyloginkeylogin [-r]

Solaris only. Prompt user for a password, then use it to decrypt the person's secret key. This key is used by secure network services (e.g., Secure NFS, NIS+). keylogin is needed only if the user isn't prompted for a password when logging in. The -r option updates /etc/.rootkey. Only a privileged user may use this option. See also chkey and keylogout.

keylogoutkeylogout [option]

Solaris only. Revoke access to (delete) the secret key used by secure network services (e.g., Secure NFS, NIS+). See also chkey and keylogin.


Forget the root key. If specified on a server, NFS security is broken. Use with care.

killkill [options] IDs

Terminate one or more process IDs. You must own the process or be a privileged user. This command is similar to the kill command that is built in to the Bourne, Korn, and C shells. A minus sign before an ID specifies a process group ID. (The built-in version doesn't allow process group IDs, but it does allow job IDs.)


List the signal names. (Used by itself.)

-s signal
Send signal signal to the given process or process group. The signal number (from /usr/include/sys/signal.h) or name (from kill -l). With a signal number of 9, the kill is absolute. Solaris only.

Send signal signal to the given process or process group.

kshksh [options] [arguments]

Korn shell command interpreter. See Chapter 4 for more information, including command-line options.

ld/usr/ccs/bin/ld [options] objfiles

Combine several objfiles, in the specified order, into a single executable object module (a.out by default). ld is the loader and is usually invoked automatically by compiler commands such as cc.


Force default behavior for static linking (generate an object file and list undefined references). Do not use with -r.

Ignore special processing for shared reference symbols (dynamic linking only); output becomes more efficient but less sharable.

-B directive
Obey one of the following directives:


When loading, use both dynamic (lib.so) and static (lib.a) libraries to resolve unknown symbols.


Remove symbols not assigned a version definition. Solaris only.


Treat a shared object and its dependencies as a group. Implies -z defs. Solaris only.


Treat any global symbols that are not assigned a version definition as local symbols. Solaris only.


Perform the reduction of symbolic information specified by version definitions. Solaris only.


When loading, use only static (lib.a) libraries to resolve unknown symbols.


In dynamic linking, bind a symbol to its local definition, not to its global definition.

Link dynamically (c is y) or statically (c is n); dynamic linking is the default.

Print debugging information as specified by token; use help to get a list of possible values. Solaris only.

-e symbol
Set symbol as the address of the output file's entry point.

-f obj
Use the symbol table of the shared object being built as an auxiliary filter on shared object obj. Do not use with -F. Solaris only.

-F obj
Use the symbol table of the shared object being built as a filter on shared object obj. Do not use with -f. Solaris only.

In dynamic linking, create a shared object and allow undefined symbols.

-h name
Use name as the shared object file to search for during dynamic linking (default is Unix object file).

Ignore LD_LIBRARY_PATH. Useful for avoiding unwanted effects on the runtime search of the executable being built. Solaris only.

-I name
Use name as the pathname of the loader (interpreter) to write into the program header. Default is none (static) or /usr/lib/libc.so.1 (dynamic).

Search a library named libx.so or libx.a (the placement of this option on the line affects when the library is searched).

-L dir
Search directory dir before standard search directories (this option must precede -l).

List a memory profile for input/output sections.

-M mapfile
Invoke ld directives from mapfile (-M messes up the output and is discouraged).

Add a DT_NEEDED entry with the value string to the .dynamic section of the object being built. Solaris only.

-o file
Send the output to file (default is a.out).

List version information about ld in the output (c = y, the default) or do not list (c = n).

Allow output to be subject to another ld. (Retain relocation information.)

-R path
Record the colon-separated list of directories in path in the object file for use by the runtime loader. Multiple instances may be supplied; the values are concatenated together.

Remove (strip) symbol table and relocation entries.

Suppress warnings about multiply defined symbols of unequal size.

-u symbol
Enter symbol in symbol table; useful when loading from an archive library. symbol must precede the library that defines it (so -u must precede -l).

Print the version of ld.

Specify a comma-separated list of directories to use in place of the default search directories (see also -L).

-z defs | nodefs | text
Specify nodefs to allow undefined symbols. The default, defs, treats undefined symbols as a fatal error. Use text to produce an error when there are nonwritable relocations.

-z directive
Solaris only. Obey one of the following directives:


Extract all archive members.


Combine multiple relocation sections.


Return to the default archive extraction rules.


Ignore dynamic dependencies that are not referenced as part of the linking.


Shared objects only. This object's initialization runs before that of others added to the process at the same time. Similarly, its “finalization” runs after that of other objects.


Mark dynamic dependencies for lazy loading. Lazily loaded objects are loaded when the first binding to the object is made, not at process startup.


Mark the filter object for immediate processing at runtime, instead of at the first binding.


Allow multiple symbol definitions, using the first one that occurs. Otherwise, multiple symbol definitions are a fatal error.


Allow undefined symbols. This is the default for shared objects. The behavior is undefined for executables.


Mark the object as not being deletable at runtime.


Shared objects only. The object is not available from dlopen(3x).


Don't mark dynamic dependencies for lazy loading. Lazily loaded objects are loaded when the first binding to the object is made, not at process startup.


Expand partially initialized symbols in input relocatable objects into the generated output file.


Do not include any versioning sections.


Force nonlazy runtime binding for the object.


The object requires immediate $ORIGIN processing at runtime.


Record dynamic dependencies that are not referenced as part of the linking. This is the default.


Remove all local symbols except for the SECT symbols from the SHT_SYMTAB symbol table.


In dynamic mode, allow relocations against all sections, including those that are not writable. This is the default for shared objects.


Dynamic mode only. Warn if there remain any relocations against nonwritable, allocatable sections. This is the default for executables.


Allow “weak” definitions to trigger archive extraction.

lddldd [option] file

List dynamic dependencies; that is, list shared objects that would be loaded if file were executed. (If a valid file needs no shared objects, ldd succeeds but produces no output.) In addition, ldd's options can show unresolved symbol references that result from running file.


Specify only one of these options:

Check references to data objects only.

Check references to data objects and to functions.

Solaris Options

The following additional options are specific to Solaris:

Force checking of nonsecure executables. This option is dangerous if running as a privileged user.

Print the execution order of initialization sections.

Do immediate processing of any filters, to list all “filtees” and their dependencies.

Display the search path for shared object dependencies.

Display all dependency relationships and version requirements.

lex/usr/ccs/bin/lex [options] [files]

Generate a lexical analysis program (named lex.yy.c) based on the regular expressions and C statements contained in one or more input files. See also yacc and lex & yacc, which is listed in the Bibliography.


file's program statements are in C (default).

Handle EUC (Extended Unix Code, i.e., 8-bit) characters. Mutually exclusive with -w. This gives yytext[] type unsigned char. Solaris only.

Suppress the output summary.

Print version information in lex.yy.c (if c = y) or suppress information (if c = n, the default).

Write program to standard output, not lex.yy.c.

Print a summary of machine-generated statistics.

Print version information on standard error.

Handle EUC (8-bit or wider) characters. Mutually exclusive with -e. This gives yytext[] type wchar_t. Solaris only.


Read the next line from standard input and write it to standard output. Exit status is 1 upon EOF. Typically used in csh scripts to read from the terminal.


Print the first two lines of output from who:

who | ( line ; line )
lint/usr/ccs/bin/lint [options] files

Detect bugs, portability problems, and other possible errors in the specified C programs. By default, lint uses definitions in the C library llib-lc.ln. If desired, output from .c files can be saved in “object files” having a .ln suffix. A second lint pass can be invoked on .ln files and libraries for further checking. lint also accepts the cc options -D, -I, and -U. It may accept additional cc options that are system-specific. See also Checking C Programs with lint, which is listed in the Bibliography. Note: this command checks programs written in ANSI C; use /usr/ucb/lint if you want to check programs written in pre-ANSI C. Note also that options -a, -b, -h, and -x have exactly the opposite meaning in the versions for BSD and System V.


Ignore long values assigned to variables that aren't long.

Ignore break statements that cannot be reached.

Don't execute the second pass of lint; save output from first pass in .ln files. (Same as BSD -i option.)

Print files using full pathname, not just the filename.

Don't test for bugs, bad style, or extraneous information.

Reenable warnings that are normally suppressed by directive /* LINTED [message] */, and print the additional message (if specified).

Search for lint libraries in directory dir before searching standard directories.

Use library llib-lx.ln in addition to llib-lc.ln.

Ignore extern declarations that could be static.

Do not check for compatibility.

-o lib
Create a lint library named llib-l.lib.ln from the output of the first pass of lint.

Check for portability to variants of C.

Place .ln output (from a .c file) in file, for use by cxref.

Produce short (one-line) diagnostics.

Ignore functions or external variables that are undefined or unused.

Ignore unused arguments within functions; same as specifying the directive /* ARGSUSED */.

Print product name and release on standard error.

Same as -R, except file is prepared for cflow.

Ignore unused variables referred to by extern declarations.

Same as using the directive /* LINTLIBRARY */, which is the same as supplying options -v and -x.

listuserslistusers [options]

Solaris only. List all users, optionally just by group, or by specific users.


-g grouplist
List all users in the comma-separated list of groups grouplist.

-l users
List just the named users, sorted by login. A comma-separated list may also be provided.

lnln [options] file1 file2
ln [options] files directory

Create pseudonyms (links) for files, allowing them to be accessed by different names. In the first form, link file1 to file2, where file2 is usually a new filename. If file2 is an existing file, it is removed first; if file2 is an existing directory, a link named file1 is created in that directory. In the second form, create links in directory, each link having the same name as the file specified.


Force the link to occur (don't prompt for overwrite permission).

Do not overwrite existing files.

Create a symbolic link. This lets you link across filesystems and also see the name of the link when you run ls -l. (Otherwise, you have to use find -inum to find any other names a file is linked to.)

localelocale [options] [name ...]

Solaris only. Print locale-specific information. With no arguments, locale summarizes the current locale. Depending on the arguments, locale prints information about entire locale categories or the value of specific items within a locale. A public locale is one an application can access. See also localedef.


Print information about all available public locales. The POSIX locale should always be available.

Provide information about the locale category name. Useful with or without -k.

Print the names and values of the given locale keywords.

Print the names of the available charmaps.

localedeflocaledef [options] localename

Solaris only. localedef reads a locale definition either on standard input or from the file named with the -i option. The format is documented in the locale(5) manpage. It generates a temporary C source file that is compiled into a shared-object library. This library file can then be used by programs that pay attention to the settings of the locale-specific environment variables in order to return the correct values for the given locale.

The generated file has the name localename.so.version. The default 32-bit version should be moved to /usr/lib/locale/ localename/localename.so.version. The 64-bit environment on SPARC systems should use /usr/lib/locale/localename/ sparcv9/localename.so.version.


Create the shared object file, even if there are warnings.

-C options
Pass options to the C compiler. This option is deprecated in favor of -W cc.

-f mapfile
The file mapfile provides a mapping of character symbols and collating element symbols to actual character encodings. This option must be used if the locale definition uses symbolic names.

-i localefile
Read the locale definitions from localefile instead of from standard input.

-L options
Pass options to the C compiler, after the name of the C source file. This option is deprecated in favor of -W cc.

-m model
Specify -m ilp32 to generate 32-bit object files (this is the default). Use -m lp64 to generate 64-bit object files (SPARC only).

-W cc,args
Pass args on to the C compiler. Each argument is separated from the previous by a comma.

-x exfile
Read additional options from the extension file exfile.


Generate a 64-bit shared object locale file for Klingonese; ignore any warning messages:

localedef -c -m lp64 -i klingon.def klingon
loggerlogger [options] [messages]

Solaris only. Log messages to the system log. Command-line messages are logged if provided. Otherwise, messages are read and logged, line-by-line, from the file provided via -f. If no such file is given, logger reads messages from standard input.


-f file
Read and log messages from file.

Log the process ID of the logger process with each message.

-p priority
Log each message with the given priority. Priorities have the form facility.level. The default is user.notice. See syslog(3) for more information.

-t tag
Add tag to each message line.


Warn about upcoming trouble:

logger -p user.emerg 'Incoming Klingon battleship!'
loginlogin [options]

Sign on and identify yourself to the system. At the beginning of each terminal session, the system prompts you for your username and, if relevant, a password. The options aren't normally used.

The Korn shell and the C shell have their own, built-in versions of login. See Chapter 4 and Chapter 5 for more information.


Sign on as user (instead of being prompted).

Specify the pathname of the tty that serves as the login port.

-h host [term]
Used for remote logins via telnet to indicate the login is from host host and that the user's terminal type is term. Solaris only.

Pass the current environment to the new login session. Solaris only.

-r host
Used for remote logins via rlogin to indicate the login is from host host. Solaris only.

When specified after the username, assign a value to one or more environment variables. PATH and SHELL can't be changed.

Pass values into the environment. Each value that does not contain an = is assigned to a variable of the form Ln, where n starts at 0 and increments. Solaris only.


Display your login name. SVR4 prints the value of the LOGNAME environment variable located in /etc/profile. Solaris looks the user up in /var/adm/utmp, which is where information is kept about logged-in users. See also whoami.

looklook [options] string [file]

Solaris only. Look through a sorted file and print all lines that begin with string. Words may be up to 256 characters long. This program is potentially faster than fgrep because it relies on the file being already sorted, and can thus do a binary search through the file, instead of reading it sequentially from beginning to end.

With no file, look searches /usr/share/lib/dict/words (the spelling dictionary) with options -df.


Use dictionary order. Only letters, digits, space, and tab are used in comparisons.

Fold case; ignore case distinctions in comparisons.

-t char
Use char as the termination character, i.e., ignore all characters to the right of char.

lookbiblookbib database

Part of the refer suite of programs. See Chapter 17.

lplp [options] [files]

Send files to the printer. With no arguments, prints standard input. To print standard input along with other files, specify as one of the files.


Copy files to print spooler; if changes are made to file while it is still queued for printing, the printout is unaffected.

-d dest
Send output to destination printer named dest.

-d any
Used after -f or -S to print the request on any printer that supports the given form or character set.

-f name
Print request on preprinted form name. name references printer attributes set by the administrative command lpforms.

-H action
Print according to the named action: hold (notify before printing), resume (resume a held request), immediate (print next; privileged users only).

-i IDs
Override lp options used for request IDs currently in the queue; specify new lp options after -i. For example, change the number of copies sent.

Send mail after files are printed.

-n number
Specify the number of copies to print.

-o options
Set one or more printer-specific options. Standard options include:


Print n characters per inch. n can also be pica, elite, or compressed.


Print n lines per inch.


Print pages n units long; e.g., 11i (inches), 66 (lines).


Omit banner page (separator) from request.


Suppress formfeeds between files.


Print pages n units wide; e.g., 8.5i (inches), 72 (columns).


Specify a quoted list of stty options.

Enable notification of completion of the print job. Solaris only.

-P list
Print only the page numbers specified in list.

-q n
Print request with priority level n (39 = lowest).

Don't adapt request if content isn't suitable; reject instead. (Obscure; used only with -T.)

Suppress messages.

-S name
Use the named print wheel or character set for printing.

-t title
Use title on the printout's banner page.

-T content
Send request to a printer that supports content (default is simple; an administrator sets content via lpadmin -I).

Write a message on the user's terminal after files are printed (same as -m if user isn't logged on).

-y modes
Print according to locally defined modes.


Send mail after printing five copies of report:

lp -n 5 -m report

Format and print thesis; print title too:

nroff -ms thesis | lp - title

lpq/usr/ucb/lpq [options] [job#s] [users]

Show the printer queue. Standard SVR4 uses lpstat.

lpr/usr/ucb/lpr [options] [files]

Send files to the printer. Standard SVR4 uses lp.

lprm/usr/ucb/lprm [options] [job#s] [users]

Remove requests from printer queue. Standard SVR4 uses cancel.


lprof [options]

lprof -m files [-T] -d out

SVR4 only. Display a program's profile data on a line-by-line basis. Data includes a list of source files, each source-code line (with line numbers), and the number of times each line was executed. By default, lprof interprets the profile file prog.cnt. This file is generated by specifying cc -ql when compiling a program or when creating a shared object named prog (default is a.out). The PROFOPTS environment variable can control profiling at runtime. See also prof and gprof.


-c file
Read input profile file instead of prog.cnt.

-d out
Store merged profile data in file out. Must be used with -m.

-I dir
Search for include files in dir as well as in the default place (/usr/include).

-m files
Merge several profile files and total the execution counts. files are of the form f1.cnt, f2.cnt, f3.cnt, etc., where each file contains the profile data from a different run of the same program. Used with -d.

-o prog
Look in the profile file for a program named prog instead of the name used when the profile file was created. -o is needed when files have been renamed or moved.

Print the default listing; useful with -r and -s.

-r list
Used with -p to print only the source files given in list.

For each function, print the percentage of code lines that are executed.

Ignore timestamp of executable files being profiled. Normally, times are checked to insure that the various profiles were made from the same version of an executable.

Print the version of lprof on standard error.

Omit execution counts. For lines that executed, show only the line numbers; for lines that didn't execute, print the line number, the symbol [U], and the source line.

lpstatlpstat [options]

Print the lp print queue status. With options that take a list argument, omitting the list produces all information for that option. list can be separated by commas or, if enclosed in double quotes, by spaces.


-a [list]
Show whether the list of printer or class names is accepting requests.

-c [list]
Show information about printer classes named in list.

Show the default printer destination.

Use after -p to show a brief printer description.

-f [list]
Verify that the list of forms is known to lp.

Use after -f to describe available forms, after -p to show printer configurations, or after -S to describe printers appropriate for the specified character set or print wheel.

-o [list]
Show the status of output requests. list contains printer names, class names, or request IDs.

-p [list]
Show the status of printers named in list.

Show whether the print scheduler is on or off.

Show the job's position in the print queue.

Summarize the print status (shows almost everything).

-S [list]
Verify that the list of character sets or print wheels is known to lp.

Show all status information (reports everything).

-u [list]
Show request status for users on list. list can be:


user on local machine


All users on all systems


user on machine host


All users on host


user on all systems


All users on all systems

-v [list]
Show device associated with each printer named in list.

lsls [options] [names]

If no names are given, list the files in the current directory. With one or more names, list files contained in a directory name or that match a file name. The options let you display a variety of information in different formats. The most useful options include -F, -R, -a, -l, and -s. Some options don't make sense together; e.g., -u and -c.

Note: the Solaris /usr/bin/ls pays attention to the LC_COLLATE environment variable. Its default value, en_US, (in the United States) causes ls to sort in dictionary order (i.e., ignoring case). Set LC_COLLATE to C to restore the traditional Unix behavior of sorting in ASCII order, or use /usr/ucb/ls.


List all files, including the normally hidden . files.

Like -a, but exclude . and .. (the current and parent directories). Solaris only.

Show nonprinting characters in octal.

List files by inode modification time.

List files in columns (the default format, when displaying to a terminal device).

List only the directory's information, not its contents. (Most useful with -l and -i.)

Interpret each name as a directory (files are ignored).

Flag filenames by appending / to directories, > to doors (Solaris only), * to executable files, | to fifos, @ to symbolic links, and = to sockets.

Like -l, but omit owner name (show group).

List the inode for each file.

Long format listing (includes permissions, owner, size, modification time, etc.).

List the file or directory referenced by a symbolic link rather than the link itself.

Merge the list into a comma-separated series of names.

Like -l, but use user ID and group ID numbers instead of owner and group names.

Like -l, but omit group name (show owner).

Mark directories by appending / to them.

Show nonprinting characters as ?.

List files in reverse order (by name or by time).

Recursively list subdirectories as well as current directory.

Print sizes of the files in blocks.

List files according to modification time (newest first).

List files according to the file access time.

List files in rows going across the screen.

Print one entry per line of output.


List all files in the current directory and their sizes; use multiple columns and mark special files:

ls -asCF

List the status of directories /bin and /etc:

ls -ld /bin /etc

List C source files in the current directory, the oldest first:

ls -rt *.c

Count the files in the current directory:

ls | wc -l
m4/usr/ccs/bin/m4 [options] [files]

Macro processor for RATFOR, C, and other program files.


Set push-back and argument collection buffers to n (default is 4096).

Define name as value or, if value is not specified, define name as null.

Operate interactively, ignoring interrupts.

Set symbol table hash array size to n (default is 199).

Enable line-sync output for the C preprocessor.

Set call stack size to n (default is 100 slots).

Set token buffer size to n (default is 512 bytes).

Undefine name.

mailmail [options] [users]

Read mail (if no users listed), or send mail to other users. Type ? for a summary of commands. Esoteric debugging options exist (not listed) for system administrators. See also mailx and vacation.

Options for Sending Mail

-m type
Print a “Message-type:” line at the heading of the letter, followed by type of message.

Print a “To:” line at the heading of the letter, showing the names of the recipients.

Force mail to be sent to remote users without waiting for remote transfer program to complete.

Options for Reading Mail

Test for the existence of mail without printing it. Exit status is 0 if mail exists; otherwise 1.

-f file
Read mail from alternate mailbox file.

-F names
Forward all incoming mail to recipient names. SVR4 only. (See vacation in Appendix B.)

Display a window of messages rather than the latest message.

Print all messages without pausing.

Print messages with all header lines displayed.

Terminate on an interrupt.

Print oldest messages first.

mailxmailx [options] [users]

Read mail, or send mail to other users. For a summary of commands, type ? in command mode (e.g., when reading mail) or ~? in input mode (e.g., when sending mail). The start-up file .mailrc in the user's home directory is useful for setting display variables and for defining alias lists.

On Solaris, /usr/ucb/mail and /usr/ucb/Mail are symbolic links to mailx.


Do not buffer standard input or standard output. Solaris only.

-b bcc
Send blind carbon copies to bcc. Quote the list if there are multiple recipients. Solaris only.

-c cc
Send carbon copies to cc. Quote the list if there are multiple recipients. Solaris only.

Set debugging.

Test for the existence of mail without printing it. Exit status is 0 if mail exists; otherwise 1.

-f [file]
Read mail in alternate file (default is mbox).

Store message in a file named after the first recipient.

-h n
Stop trying to send after making n network connections, or “hops” (useful for avoiding infinite loops).

Print mail headers only.

Ignore interrupts (useful on modems); same as ignore mailx option.

Use with -f when displaying saved news articles; newsgroup and article-ID headers are included.

Do not read the system startup mailx.rc or Mail.rc file(s).

Don't print mail headers.

-r address
Specify a return address for mail you send.

-s sub
Place string sub in the subject header field. sub must be quoted if it contains whitespace.

Use To:, Cc:, and Bcc: headers in the input to specify recipients instead of command-line arguments. Solaris only.

-T file
Record message IDs and article IDs (of news articles) in file.

-u user
Read user's mail.

Convert uucp-type addresses to Internet format.

Invoke sendmail with the -v option. Solaris only.

Print version number of mailx and exit.

Process tilde escapes, even if not reading from a terminal. Solaris only.

make/usr/ccs/bin/make [options] [targets]

Update one or more targets according to dependency instructions in a description file in the current directory. By default, this file is called makefile or Makefile. See Chapter 20, for more information on make. See also Managing Projects with make, listed in the Bibliography.

Note: the Solaris make has many extensions over the standard SVR4 make described here. See make(1) for more information.


Override makefile assignments with environment variables.

-f makefile
Use makefile as the description file; a filename denotes standard input.

Ignore command error codes (same as .IGNORE).

Abandon the current entry when it fails, but keep working with unrelated entries.

Print commands but don't execute (used for testing).

Print macro definitions and target descriptions.

Query; return 0 if file is up-to-date; nonzero otherwise.

Do not use “default” rules.

Do not display command lines (same as .SILENT).

Touch the target files, causing them to be updated.

manman [options] [[section] subjects]

Display information from the online reference manual. Each subject is usually the name of a command from Section 1 of the online manuals, unless you specify an optional section from 1 to 8. If you don't specify a subject, you must supply either a keyword (for -k) or a file (for -f). No options except -M can be used with -k or -f. The MANPATH environment variable defines the directories in which man searches for information (default is /usr/share/man). PAGER defines how output is sent to the screen (default is more -s). Note: in Solaris, section must be preceded by -s.


Pipe output through cat instead of more -s.

Show all pages matching subject. Solaris only.

Debug; evaluate the man command but don't execute. Solaris only.

-f files
Display a one-line summary of one or more reference files. Same as whatis.

Search MANPATH directories, not windex database. Solaris only.

-k keywords
Display any header line that contains one of the specified keywords. Same as apropos.

Like -a, but list only the pages. Solaris only.

-M path
Search for online descriptions in directory path instead of default directory. -M overrides MANPATH.

Reformat but don't display manpage. Same as man - -t. Solaris only.

-s section
Specify the section of the manpage to search in. Required on Solaris for anything that isn't a command.

Format the manpages with troff.

-T mac
Display information using macro package mac instead of tmac.an (the man macros).


Save documentation on the mv command (strip backspaces):

man mv | col -b > mv.txt

Display commands related to linking and compiling:

man -k link compile | more

Display a summary of all intro files:

man -f intro

Look up the intro page from Section 3M (the math library):

man 3m intro          In SVR4
man -s 3m intro                       In Solaris
mcs/usr/ccs/bin/mcs [options] files

Manipulate the comment section. mcs adds to, compresses, deletes, or prints a section of one or more ELF object files. The default section is .comment. If any input file is an archive, mcs acts on each component file and removes the archive symbol table (unless -p was the only option specified). Use ar s to regenerate the symbol table. Use of mcs -d can significantly decrease the size of large executables, often saving considerable disk space. At least one option must be supplied.


-a string
Append string to the comment section of files.

Compress the comment section of files and remove duplicate entries.

Delete the comment section (including header).

-n name
Act on section name instead of .comment.

Print the comment section on standard output.

Print the version of mcs on standard error.


mcs -p kernel.o	  Print the comment section of kernel.o
mesgmesg [options]

Change the ability of other users to use talk, or to send write messages to your terminal. With no options, display the permission status.


Forbid write messages.

Allow write messages (the default).

Both options may be provided without the leading , for compatibility with BSD.

mkdirmkdir [options] directories

Create one or more directories. You must have write permission in the parent directory in order to create a directory. See also rmdir.


-m mode
Set the access mode for new directories.

Create intervening parent directories if they don't exist.


Create a read/execute-only directory named personal:

mkdir -m 555 personal

The following sequence:

mkdir work; cd work
mkdir junk; cd junk
mkdir questions; cd ../..

could be accomplished by typing this:

mkdir -p work/junk/questions
mkmsgsmkmsgs [options] string_file msg_file

Convert string_file (a list of text strings) into msg_file (the file whose format is readable by gettxt). The created msg_file is also used by the commands exstr and srchtxt.


-i locale
Create msg_file in directory: /usr/lib/locale/locale/LC_MESSAGES. For example, if string_file is a collection of error messages in German, you might specify locale as german.

Overwrite existing msg_file.

moremore [options] [files]

Display the named files on a terminal, one screenful at a time. After each screen is displayed, press the Return key to display the next line or press the spacebar to display the next screenful. Press h for help with additional commands, q to quit, / to search, or :n to go to the next file. more can also be invoked using the name page.


Page through the file by clearing the screen instead of scrolling. This is often faster and is much easier to read.

Display the prompt Press space to continue, 'q' to quit.

Count logical rather than screen lines. Useful when long lines wrap past the width of the screen.

Ignore formfeed (^L) characters.

Force display of control characters, in the form ^x.

Squeeze; display multiple blank lines as one.

Suppress underline characters and backspace (^H).

Wait for a user keystroke before exiting.

Use n lines for each “window” (default is a full screen).

Begin displaying at line number num.

Begin displaying two lines before pattern.


Page through file in “clear” mode, and display prompts:

more -cd file

Format doc to the screen, removing underlines:

nroff doc | more -u

View the manpage for the grep command; begin near the word “BUGS” and compress extra whitespace:

man grep | more +/BUGS -s
msgfmtmsgfmt [options] pofiles

Solaris only. msgfmt translates “portable object files” (file.po) into loadable message files that can be used by a running application via the gettext(3C) and dgettext(3C) library functions.

Portable object files are created using xgettext from the original C source code files. A translator then edits the .po file, providing translations of each string (or “message”) in the source program. The format is described in the msgfmt(1) manpage.

Once compiled by msgfmt, the running program uses the translations for its output when the locale is set up appropriately.


-o file
Place the output in file. This option ignores domain directives and duplicate msgid s.

Be verbose. Duplicate message identifiers are listed, but message strings are not redefined.

mvmv [options] sources target

Basic command to move files and directories around on the system or to rename them. mv works as the following table shows.


Rename file as name.

FileExisting file

Overwrite existing file with source file.


Rename directory as name.

DirectoryExisting directory

Move directory to be a subdirectory of existing directory.

One or more filesExisting directory

Move files to directory.


Use this when one of the names begins with a . For compatibility with old programs, a plain also works.

Force the move, even if target file exists; suppress messages about restricted access modes.

Inquire; prompt for a y (yes) response before overwriting an existing target.

native2ascii/usr/java/bin/native2ascii [options] [input [output]]

Solaris only. Convert files encoded in the native character encoding to Latin-1 or Unicode encoded files. By default, native2ascii reads standard input and writes standard output. Supply filenames for input and output to read/write named files, instead.

A large number of encodings are supported; see the manpage for the complete list.


-encoding encoding
Use encoding for the translation. The default encoding is the value of the system property file.encoding.

Perform the reverse operation: translate from Latin-1 or Unicode to a native encoding.

nawknawk [options] ['program'] [files] [variable=value]

New version of awk, with additional capabilities. nawk is a pattern-matching language useful for manipulating data. See Chapter 11 for more information on nawk.


-f file
Read program instructions from file instead of supplying program instructions on command line. This option may be specified multiple times; each file is concatenated with the others to make up the program source code.

-F regexp
Separate fields using regular expression regexp.

-v variable=value
Assign value to variable before executing 'program'.

Assign value to variable. When specified intermixed with files, the assignment occurs at that point in the processing.

neqnneqn [options] [files]

Equation preprocessor for nroff. See Chapter 17.

nicenice [options] command [arguments]

Execute a command and arguments with lower priority (i.e., be “nice” to other users). Also built-in to the C shell, with a different command syntax (see Chapter 5).


Run command with a niceness of n (1-19); default is 10. Higher n means lower priority. A privileged user can raise priority by specifying a negative n (e.g., -5). nice works differently in the C shell (see Chapter 5). +n raises priority, -n lowers it, and 4 is the default.

-n n
Same as n. Solaris only.

nlnl [options] [file]

Number the lines of file in logical page segments. Numbering resets to 1 at the start of each logical page. Pages consist of a header, body, and footer; each section may be empty. It is the body that gets numbered. The sections are delimited by special standalone lines as indicated next; the delimiter lines are copied to the output as empty lines.

Section Delimiters

\:\:\:Start of header
\:\:Start of body
\:Start of footer


Number lines according to type. Values are:

aAll lines.
nNo lines.

Text lines only (the default).


Lines matching the regular expression exp only.

Use characters xy to delimit logical pages (default is \:).

Like -b, but number footer (default type is n).

Like -b, but number header (default type is n).

Increment each line number by n (default is 1).

Count n consecutive blank lines as one line.

Set line number format. Values are:


Left-justify, omit leading zeros.


Right-justify, omit leading zeros (default).



Do not reset numbering at start of pages.

Separate text from line number with character(s) c (default is a tab).

Number each page starting at n (default is 1).

Use n columns to show line number (default is 6).


List the current directory, numbering files as 1), 2), etc.:

ls | nl -w3 -s')  '

Number C source code and save it:

nl prog.c > print_prog

Number only lines that begin with #include:

nl -bp"^#include" prog.c
nm/usr/ccs/bin/nm [options] objfiles

Print the symbol table (name list) in alphabetical order for one or more object files (usually ELF or COFF files), shared or static libraries, or binary executable programs. Output includes each symbol's value, type, size, name, etc. A key letter categorizing the symbol can also be displayed. You must supply at least one object file.


Write the full pathname or library name on each line. Solaris only.

Print demangled C++ symbol names. Solaris only.

Display the SHT_DYNSYM symbol information. Solaris only.

Report only external and static symbols; obsolete.

Report all information; obsolete.

Write only external (global) symbol information. Solaris only.

Suppress the header.

Use with -p; indicate WEAK symbols by appending an asterisk (*) to key letters.

Sort the external symbols by name.

Report values in octal.

Precede each symbol with its key letter (used for parsing).

Report the object file's name on each line.

Print the archive name (if present), followed by the object file and symbol name. -r overrides this option. Solaris only.

Print section name instead of section index. Solaris only.

-t format
Write numeric values in the specified format: d for decimal, o for octal, and x for hexadecimal. Solaris only.

Truncate the symbol name in the display; obsolete.

Report only the undefined symbols.

Sort the external symbols by value.

Print nm's version number on standard error.

Report values in hexadecimal.

Key Letters


Absolute symbol.


BSS (uninitialized data space).


Common symbol. SVR4 only.


Data object symbol.


File symbol.


Symbol with no type.


Section symbol.


Text symbol.


Undefined symbol.

nohupnohup command [arguments] &

Continue to execute the named command and optional command arguments after you log out (make command immune to hangups; i.e., no hangup. In the C shell, nohup is built in. In the Bourne shell, nohup allows output redirection; output goes to nohup.out by default. In the Korn shell, nohup is an alias that allows the command it runs to also be aliased. (See Chapter 4 and Chapter 5.)

nroffnroff [options] [files]

Format documents to line printer or to screen. See Chapter 12.

odod [options] [file] [[+] offset[. | b]]

Octal dump; produce a dump (normally octal) of the named file. file is displayed from its beginning, unless you specify an offset (normally in octal bytes). In the following options, a “word” is a 16-bit unit.


-A base
Indicate how the offset should be written. Values for base are d for decimal, o for octal, x for hexadecimal, or n for no offset. Solaris only.

Display bytes as octal.

Display bytes as ASCII.

Interpret bytes as characters based on the setting of LC_CTYPE. Solaris only.

Display words as unsigned decimal.

Display 32-bit words as unsigned decimal.

Display 32-bit words as floating point.

Display 64-bit words as extended precision.

-j skip
Jump over skip bytes from the beginning of the input. skip can have a leading 0 or 0x for it to be treated as an octal or hexadecimal value. It can have a trailing b, k, or m to be treated as a multiple of 512, 1024, or 1,048,576 bytes. Solaris only.

-N count
Process up to count input bytes. Solaris only.

Display words as unsigned octal (the default).

Display 32-bit words as unsigned octal.

Display words as signed decimal.

Display 32-bit words as signed decimal.

-t type_string
Specify one or more output types. See Section . Solaris only.

Verbose; show all data. Duplicate lines print as *.

Display words as hexadecimal.

Display 32-bit words as hexadecimal.

Required before offset if file isn't specified.

Modifiers for offset

offset value is decimal.

offset value is 512-byte blocks.

Type Strings

Type strings can be followed by a decimal number indicating how many bytes to process.


ASCII named characters (e.g., BEL for \007)


Single- or multibyte characters

d, o, u, x

Signed decimal, unsigned octal, decimal, and hexadecimal


Floating point

pagepage [options] [files]

Same as more.

passwdpasswd [options] [user]

Create or change a password associated with a user name. Only the owner or a privileged user may change a password. Owners need not specify their user name.


Normal users may change the so-called gecos information (user's full name, office, etc.) and login shell when using NIS or NIS+; otherwise only privileged users may change the following:

-D domain
Use the passwd.org_dir database in domain, instead of in the local domain. Solaris only.

Change the login shell. Solaris only.

Change the gecos information. Solaris only.

-r db
Change the password in password database db, which is one of files, nis, or nisplus. Only a privileged user may use files. Solaris only.

Display password information:

  1. user name.

  2. Password status (NP for no password, PS for password, LK for locked).

  3. The last time the password was changed (in mm/dd/yy format).

  4. Number of days that must pass before user can rechange the password.

  5. Number of days before the password expires.

  6. Number of days prior to expiration that user is warned of impending expiration.

Options (privileged users only)

Use with -s to display password information for all users. user should not be supplied.

Delete password; user is no longer prompted for one.

Force expiration of user's password; user must change password at next login.

Change the home (login) directory. Solaris only.

Lock user's password; mutually exclusive with -d.

Set Item 4 of user's password information. Usually used with -x.

Set Item 6 for user.

Set Item 5 for user. Use –1 to disable password aging, 0 to force expiration like -f.

pastepaste [options] files

Merge corresponding lines of one or more files into vertical columns, separated by a tab. See also cut, join, and pr.


Replace a filename with the standard input.

Separate columns with char instead of a tab. char can be any regular character or the following escape sequences:

Note: you can separate columns with different characters by supplying more than one char.








Empty string

Merge subsequent lines from one file.


Create a three-column file from files x, y, and z:

paste x y z > file

List users in two columns:

who | paste - -

Merge each pair of lines into one line:

paste -s -d"\t\n" list
patchpatch [options] [sourcefile [patchfile]]

Solaris only. patch reads a “patch” containing the output of diff in normal, ed-script, or context format, and applies the changes contained therein to the original version of sourcefile. Multiple files can be patched, but it must be possible to determine the name of the original file from the contents of the patch. Distributing patches is an easy way to provide upgrades to source file distributions where the changes are small relative to the size of the entire distribution.

Note: this entry documents the Solaris version, which is a somewhat older version of Larry Wall's original patch program. The Free Software Foundation now maintains patch. Newer, more capable versions are available from them and are recommended; see http://www.gnu.org.


Make a backup of each file, in file.orig. An existing file.orig is overwritten.

The patchfile is a context diff (from diff -c or diff -C).

-d dir
Change directory to dir before applying the patch.

-D identifier
Bracket changes with C preprocessor #ifdef.

#ifdef identifier
The patchfile is an ed script (from diff -e).

-i file
Read the patch from file instead of from standard input.

Patch loosely. Any sequence of whitespace characters in the patch may match any sequence of whitespace in sourcefile. Other characters must match exactly.

The patchfile is a normal diff (from diff with no special options).

Ignore patches that have already been applied. Normally, such patches are rejected.

-o newfile
Instead of updating each source file in place, write the full contents of the modified file(s) to newfile. If a file is updated multiple times, newfile will contain a copy of each intermediate version.

Remove N leading pathname components from the filename used in the patch. The leading / of a full pathname counts as one component. Without this option, only the final filename part of the filename is used.

-r rejfile
Use rejfile to contain patches that could not be applied, instead of file.rej. Rejected patches are always in context diff format.

Reverse the sense of the patch. In other words, assume that the patch was created using diff new old, instead of diff old new.


Update a software distribution:

$ cd whizprog-1.1
$ patch -p1 < whizprog-1.1-1.2.diff
Lots of messages here as patch works
$ find . -name '*.orig' -print | xargs rm
$ cd ..
$ mv whizprog-1.1 whizprog-1.2
pathchkpathchk [-p] pathnames

Solaris only. Check pathnames. This command verifies that the file(s) named by pathnames do not violate any constraints of the underlying filesystem (such as a name that might be too long), and that the files could be accessed (e.g., if an intermediate directory lacks search permission, it is a problem). The -p option provides additional portability checks for the pathnames.

paxpax [options] [patterns]

Solaris only. Portable Archive Exchange program. When members of the POSIX 1003.2 working group could not standardize on either tar or cpio, they invented this program.[3] (See also tar">cpio and tar.)

[3]This period in Unix history is known as the “tar wars.”

pax operates in four modes, depending on the combinations of -r and -w:

List mode
No -r and no -w. List the contents of a pax archive. Optionally, restrict the output to filenames and/or directories that match a given pattern.

Extract mode
-r only. Extract files from a pax archive. Intermediate directories are created as needed.

Archive mode
-w only. Archive files to a new or existing pax archive. The archive is written to standard output; it may be redirected to an appropriate tape device if needed for backups.

Pass-through mode
-r and -w. Copy a directory tree from one location to another, analogous to cpio -p.


Here are the options available in the four modes:

None:       c d f       n     s     v
-r:         c d f i k   n o p s   u v
-w:     a b   d f i       o   s t u v x X
-rw:          d   i k l n   p s t u v   X
Append files to the archive. This may not work on some tape devices.

-b size
Use size as the blocksize, in bytes, of blocks to be written to the archive.

Complement. Match all file or archive members that do not match the patterns.

For files or archive members that are directories, extract or archive only the directory itself, not the tree it contains.

-f archive
Use archive instead of standard input or standard output.

Interactively rename files. For each file, pax writes a prompt to /dev/tty and reads a one-line response from /dev/tty. The responses are as follows:


Skip the file.

A period

Take the file as is.

new name

Anything else is taken as the new name to use for the file.


Exit immediately with a nonzero exit status.

Do not overwrite existing files.

Make hard links. When copying a directory tree (-rw), make hard links between the source and destination hierarchies wherever possible.

Choose the first archive member that matches each pattern. No more than one archive member will match for each pattern.

-o options
Reserved for format-specific options. (Apparently unused in Solaris.)

-p privs
Specify one or more privileges for the extracted file. privs specify permissions or other characteristics to be preserved or ignored.


Do not preserve file access times.


Retain the user and group IDs, permissions (mode), and access and modification time.


Do not preserve the file modification time.


Retain the user and group ID.


Keep the permissions (mode).

Read an archive and extract files.

-s replacement
Use replacement to modify file or archive member names. This is a string of the form -s/old/new/[gp]. This is similar to the substitution commands in ed, ex, and sed. old is a regular expression, and new may contain & to mean the matched text and \n for subpatterns. The trailing g indicates the substitution should be applied globally. A trailing p causes pax to print the resulting new filename. Multiple -s options may be supplied. The first one that works is applied. Any delimiter may be used, not just /, but in all cases it is wise to quote the argument to prevent the shell from expanding wildcard characters.

Reset the access time of archived files to what they were before being archived by pax.

Ignore files older than preexisting files or archive members. The behavior varies based on the current mode.

Extract mode
Extract the archive file if it is newer than an existing file with the same name.

Archive mode
If an existing file with the same name as an archive member is newer than the archive member, supersede the archive member.

Pass-through mode
Replace the file in the destination hierarchy with the file in the source hierarchy (or a link to it) if the source hierarchy's file is newer.

In list mode, print a verbose table of contents. Otherwise, print archive member names on standard error.

Write files to standard output in the given archive format.

-x format
Use the given format for the archive. The value of format is either cpio or ustar. The details of both formats are provided in the IEEE 1003.1 (1990) POSIX standard. The two formats are mutually incompatible; attempting to append using one format to an archive using the other is an error.

When traversing directory trees, do not cross into a directory on a different device (the st_dev field in the stat structure, see stat(2); similar to the -mount option of find).


Copy the current directory to tape:

pax -x ustar -w -f /dev/rmt/0m .

Copy a home directory to a different directory (presumably on a bigger disk).

# cd /home
# pax -r -w arnold /newhome
perlperl [options] [programfile] [files]

perl is the interpreter for the Perl programming language (the Swiss Army knife of Unix programming tools). The Perl program is provided via one or more -e options. If no -e options are used, the first file named on the command line is used for the program.

For more information about Perl, see Learning Perl, Programming Perl, and Advanced Perl Programming, all listed in the Bibliography.

Note: while not distributed with SVR4 or Solaris, perl is widely used for the Web, CGI, and system-administration tasks, and many other things. The starting point for All Things Perl is http://www.perl.com.


This option list is for perl Version 5.005 patchlevel 2. See perlrun(1) for more details.

Turn on autosplit mode when used with -n or -p. Splits to @F.

Check syntax but does not execute.

Run the script under the debugger. Use -de 0 to start the debugger without a script.

Run the script under control of the module installed as Devel:module.

Set debugging flags. flags may be a string of letters, or the sum of their numerical equivalents. See "Debugging Flags." perl must be compiled with -DDEBUGGING for these flags to take effect.

-e 'commandline'
May be used to enter a single line of script. Multiple -e commands may be given to build up a multiline script.

-F regexp
Specify a regular expression to split on if -a is in effect.

Print a summary of the options.

Files processed by the <> construct are to be edited in place. The old copy is renamed, and the processed copy is written to the original filename. The optional ext indicates an extension to use for the renamed copy. Various rules apply to how this is done; see perlrun(1).

With -P, tells the C preprocessor where to look for include files. The directory is also prepended to @INC.

Enables automatic line-end processing, e.g., -l013.

Equivalent to use module();. With a after -m, it is equivalent to no module();.

-m[]'module=arg[,arg]', -M[]'module=arg[,arg]',
Shorthand for -M'module qw(arg ...)'. This avoids the need for quoting inside the argument.

-M[]'module [...]'
Equivalent to use module...;. With a after -M, it is equivalent to no module...;. The “...” represents additional code you might wish to supply, for example:

-M'mymodule qw(whizfunc wimpfunc)'
Assume an input loop around your script. Input lines are not printed. (Like sed -n or awk.)

Assume an input loop around your script. Input lines are printed. (Like sed.)

Run the C preprocessor on the script before compilation by perl.

Interpret -xxx on the command line as a switch and sets the corresponding variable $xxx in the script.

Use the PATH environment variable to search for the script.

Force taint checking.

Dump core after compiling the script. For use with the undump(1) program (where available). Largely superseded by the Perl-to-C compiler that comes with perl.

Allow perl to perform unsafe operations.

Print the version and patchlevel of the perl executable.

Print the configuration information and the value of @INC.

Print the value of configuration variable var to standard output.

Print warnings about possible spelling errors and other error-prone constructs in the script.

-x [dir]
Extract the Perl program from the input stream. If dir is specified, perl switches to it before running the program.

(That's the number zero.) Designate an initial value for the record separator $/. See also -l.

Debugging Flags

1pTokenizing and parsing
2sStack snapshots
4lContext (loop) stack processing
8tTrace execution
16oMethod and overloading resolution
32cString/numeric conversions
64PPrint preprocessor command for -P
128mMemory allocation
256fFormat processing
512rRegular expression parsing and execution
1024xSyntax tree dump
2048uTainting checks

Memory leaks (needs -DLEAKTEST when compiling perl)

8192HHash dump; usurps values()
16384XScratch-pad allocation
32768DCleaning up
65536SThread synchronization

picpic [options] [files]

Preprocessor for nroff/troff line pictures. See Chapter 17.


pr [options] [files]

Format one or more files according to options to standard output. Each page includes a heading that consists of the page number, filename, date, and time. When files are named directly, the date and time are those of the file's modification time. Otherwise, the current date and time are used.


Multicolumn format; list items in rows going across.

Double-spaced format.

Set input tabs to every n th position (default is 8), and use c as field delimiter (default is a tab).

Separate pages using formfeed character (^L) instead of a series of blank lines.

Fold input lines (avoids truncation by -a or -m).

Replace default header with string str.

For output, replace whitespace with field delimiter c (default is a tab) every nth position (default is 8).

Set page length to n lines (default is 66).

Merge files, printing one in each column (can't be used with -n and -a). Text is chopped to fit. See also paste.

Number lines with numbers n digits in length (default is 5), followed by field separator c (default is a tab). See also nl.

Offset each line n spaces (default is 0).

Pause before each page.

Suppress messages for files that can't be found.

Separate columns with c (default is a tab).

Omit the page header and trailing blank lines.

Set line width to n (default is 72).

Begin printing at page num (default is 1).

Produce output having n columns (default is 1); tabs are expanded as with -i.


Print a side-by-side list, omitting heading and extra lines:

pr -m -t list.1 list.2 list.3

Alphabetize a list of states; number the lines in five columns:

sort states_50 | pr -n -5
printenv/usr/ucb/printenv [variable]

Print values of all environment variables or, optionally, only the specified variable. The SVR4 alternative, env, doesn't let you view just one variable, but it lets you redefine them.

printfprintf formats [strings]

Print strings using the specified formats. formats can be ordinary text characters, C-language escape characters, printf(3S) format conversion specifiers, or, more commonly, a set of conversion arguments listed next.


Process a string argument for backslash escapes (not in printf(3S)). See the description of allowed escapes under echo.

Print the next string.

Print the n th string.

Print the next string, using a field that is m characters wide. Optionally limit the field to print only the first n characters of string. Strings are right-adjusted unless the left-adjustment flag is specified.


$ printf '%s %s\n' "My files are in" $HOME
My files are in /home/arnold
$ printf '%-25.15s %s\n' "My files are in" $HOME
My files are in           /home/arnold
prof/usr/ccs/bin/prof [options] [object_file]

Display the profile data for an object file. The file's symbol table is compared with profile file mon.out (created by programs compiled with cc -p). Choose only one of the sort options -a, -c, -n, or -t . See also gprof and lprof.



List output by symbol address.


List output by decreasing number of calls.


Demangle C++ symbol names. Solaris only.


Include nonglobal (static) function symbols (invalid with -l).


Suppress the report heading.


Exclude nonglobal function symbols (the default). Invalid with -g.


Use pf as the input profile file instead of mon.out.


List by symbol name.


Show addresses in octal (invalid with -x).


Print a summary on standard error.


List by decreasing total time percentage (the default).


Print version information on standard error.


Show addresses in hexadecimal (invalid with -o).


Include zero usage calls.

prs/usr/ccs/bin/prs [options] files

An SCCS command. See Chapter 18.

prt/usr/ccs/bin/prt [options] files

Solaris only. An SCCS command. See Chapter 18.

psps [options]

Report on active processes. In options, list arguments should either be separated by commas or put in double quotes. In comparing the amount of output produced, note that -e > -d > -a and -l > -f. In the BSD version, options work much differently; you can also display data for a single process.


List all processes except group leaders and processes not associated with a terminal.

Same as -e. Solaris only.

List scheduler data set by priocntl (an administrative command).

List all processes except session leaders.

List all processes.

Produce a full listing.

List data only for specified list of group leader ID numbers (i.e., processes with same ID and group ID).

-G list
Show information for processes whose real group ID is found in list. Solaris only.

Print the process group ID and session ID.

Produce a long listing.

Use the alternate file for the list of function names in the running kernel (default is /unix); obsolete as of SVR4.

-o format
Customize information according to format. Rarely used. Solaris only.

List data only for process IDs in list.

List data only for session leader IDs in list.

List data only for terminals in list (e.g., tty1).

List data only for usernames in list.

-U uidlist
Show information for processes whose real user ID is found in list. Solaris only.

With -l, omit the F and ADDR columns and use kilobytes instead of pages for the RSS and SZ columns. Solaris only.


Print the full pathname of the current directory. (Command name stands for “print working directory.”) Note: the built-in versions, pwd (Bourne and Korn shells) and dirs (C shell), are faster, so you might want to define the following C shell alias:

alias pwd dirs -l
rcprcp [options] sources target

Copy files between machines. Both sources and target are filename specifications of the form host:pathname, where host: can be omitted for a file on the local machine. If no pathname is included in target, source files are placed in your home directory. If you have a different username on the remote host, specify the form username@hostname:file. See also ssh.


Preserve in copies the modification times, access times, and modes of the source files.

If target and sources are both directories, copy each subtree rooted at source. Bear in mind that both symbolic and hard links are copied as real files; the linking structure of the original tree is not preserved.


Copy the local files junk and test to your home directory on machine hermes:

rcp junk test hermes:

Copy the local bin directory and all subdirectories to the /usr/tools directory on machine diana:

rcp -r /bin diana:/usr/tools

Copy all files in your home directory on machine hera, and put them in local directory /home/daniel with times and modes unchanged:

rcp -p "hera:*" /home/daniel

Quote the first argument to prevent filename expansion from occurring on the local machine.


/usr/ccs/bin/regcmp [-] files

Stands for “regular expression compile.” Compile the regular expressions in one or more files and place output in file.i (or in file.c if - is specified). The output is C source code, while the input entries in files are of the form:

C variable     "regular expression"

The purpose of this program is to precompile regular expressions for use with the regex(3C) library routine, avoiding the overhead of the regcmp(3C) function.

referrefer [options] files

Bibliographic references preprocessor for troff. See Chapter 17.

reset/usr/ucb/reset [options] [type]

Clear terminal settings. reset disables CBREAK mode, RAW mode, output delays, and parity checking. reset also restores undefined special characters and enables processing of newlines, tabs, and echoing. This command is useful when a program aborts in a way that leaves the terminal confused (e.g., keyboard input might not echo on the screen). To enter reset at the keyboard, you may need to use a linefeed (^J) instead of a carriage return. reset uses the same command-line arguments as tset.

rkshrksh [options] [arguments]

Restricted version of ksh (the Korn shell), used in secure environments. rksh prevents you from changing out of the directory or from redirecting output. See Chapter 4.

rloginrlogin [options] host

Connect terminal on current local host system (i.e., log in) to a remote host system. The .rhosts file in your home directory (on the remote host) lists the hostnames (and optionally, the usernames on those hosts) you're allowed to connect from without giving a password. See also ssh.


Allow 8-bit data to pass instead of 7-bit data.

-e c
Use escape character c (default is ~). You can type ~. to disconnect from remote host, though you'll exit more “cleanly” by logging out.

Do not have any escape character. Solaris only.

-l user
Log in to remote host as user, instead of using the name on the local host.

Allow rlogin to run in LITOUT mode (8-bit data may pass in output only).

rmrm [options] files

Delete one or more files. To remove a file, you must have write permission in the directory that contains the file, but you need not have permission on the file itself. If you do not have write permission on the file, you are prompted (y or n) to override.


Force. Remove write-protected files without prompting.

Prompt for y (remove the file) or n (do not remove the file). Overrides -f.

If file is a directory, remove the entire directory and all its contents, including subdirectories. Be forewarned: use of this option can be dangerous.

Same as -r. Solaris only.

Mark the end of options (rm still accepts -, the old form). Use this when supplying a filename beginning with .

rmdel/usr/ccs/bin/rmdel -rsid files

An SCCS command. See Chapter 18.

rmdirrmdir [options] directories

Delete the named directories (the directory itself, not the contents). directories are deleted from the parent directory and must be empty (if not, rm -r can be used instead). See also mkdir.


Remove directories and any intervening parent directories that become empty as a result; useful for removing subdirectory trees.

Suppress standard error messages caused by -p.

rmic/usr/java/bin/rmic [options] classes

Solaris only. Remote Method Invocation compiler for Java. rmic takes the fully package-qualified class names and generates skeleton and stub class files to provide remote method invocation. The class must have previously been successfully compiled with java.

For a method WhizImpl in class whiz, rmic creates two files, WhizImpl_Skel.class and WhizImpl_Stub.class. The “skeleton” file implements the server side of the RMI; the “stub” file implements the client side.


-classpath path
Use path as the search path for class files, overriding $CLASSPATH. path is a colon-separated list of directories.

-d dir
Place the generated files in dir.

Recompile missing or out-of-date class files referenced from other class files, not just from source code.

Generate debugging tables with line numbers. With -O, also generate information about local variables.

Keep the generated .java source files for the skeletons and the stubs.

Disable all warnings.

Perform optimizations that may produce faster but larger class files. It may also slow down compilation. This option should be used with discretion.

Use the GUI for the RMI compiler to enter class names.

Print messages as files are compiled and loaded.

rmiregistry/usr/java/bin/rmiregistry [port]

Solaris only. Create and start a remote object registry on the specified port. The default port is 1099. The registry provides naming services for RMI (Remote Method Invocation) servers and clients.

roffbibroffbib [options] [files]

Part of the refer suite of programs. See Chapter 17.


Restricted version of sh (the Bourne shell) that is intended to be used where security is important. rsh prevents you from changing out of the directory or from redirecting output. See Chapter 4.

rshrsh [options] host [command]

A BSD-derived command to invoke a remote shell. This command is often found in /usr/ucb and should not be confused with rsh, the restricted shell. On Solaris, it is in /usr/bin. rsh connects to host and executes command. If command is not specified, rsh allows you to rlogin to host. If shell metacharacters need to be interpreted on the remote machine, enclose them in quotes. This command is sometimes called remsh. See also ssh.


-l user
Connect to host with a login name of user.

Divert input to /dev/null. Sometimes useful when piping rsh to a command that reads standard input but that might terminate before rsh.

sact/usr/ccs/bin/sact files

An SCCS command. See Chapter 18.


/usr/ccs/bin/sccs [options] command [SCCS_options] [files]

A user-friendly interface to SCCS. See Chapter 18.

sccsdiff/usr/ccs/bin/sccsdiff -rsid1 -rsid2 [options] files

An SCCS command. See Chapter 18.

scriptscript [option] [file]

Create a record of your login session, storing in file everything that displays on your screen. The default file is called typescript. script records non-printing characters as control characters and includes prompts. This command is useful for beginners or for saving output from a time-consuming command.


Append the script record to file.

sdiffsdiff [options] file1 file2

Produce a side-by-side comparison of file1 with file2. Output is:

text text
Identical lines.

text <
Line that exists only in file1.

> text
Line that exists only in file2.

text | text
Lines that are different.


List only lines of file1 that are identical.

-o outfile
Send identical lines of file1 and file2 to outfile; print line differences and edit outfile by entering, when prompted, the following commands:


Edit an empty file.

e b

Edit both left and right columns.

e l

Edit left column.

e r

Edit right column.


Append left column to outfile.


Exit the editor.


Append right column to outfile.


Silent mode; do not print identical lines.


Turn off “silent mode.”

Do not print identical lines.

Set line length to n (default is 130).


Show differences using 80 columns and ignore identical lines:

sdiff -s -w80 list.1 list.2
sedsed [options] [files]

Stream editor. Edit one or more files without user interaction. See Chapter 10, for more information on sed. The -e and -f options may be provided multiple times, and they may be used with each other.


-e 'instruction'
Apply the editing instruction to the files.

-f script
Apply the set of instructions from the editing script.

Suppress default output.

serialver/usr/java/bin/serialver [-show | classname]

Solaris only. Print the serialVersionUID for classname in a form suitable for copying into an evolving class. The -show option starts a simple GUI in which you enter the full classname.

shsh [options] [arguments]

The standard command interpreter (or Bourne shell) that executes commands from a terminal or a file. See Chapter 4 for more information on the Bourne shell, including command-line options.

size/usr/ccs/bin/size [options] [objfile ...]

Print the (decimal) number of bytes of each section of objfile. If objfile is not specified, a.out is used.


Print sizes, names, and total size for allocatable sections.

Print sizes, permission flags, and total size for loadable segments.

Print sizes for nonallocatable sections or for nonloadable segments.

Print output in octal.

Report the size program version number.

Print output in hexadecimal.

sleepsleep seconds

Wait a specified number of seconds before executing another command. Often used in shell scripts. sleep is built in to ksh93.

soelimsoelim [files]

A preprocessor that reads nroff/troff input files, resolving and then eliminating .so requests. That is, input lines such as:

.so header

are replaced by the contents of the file header. Normally, .so requests are resolved by nroff or troff. Use soelim whenever you are preprocessing the input (e.g., passing it through tbl or sed), and the complete text is needed prior to formatting.


Run a sed script on (all) input before formatting:

soelim file | sed -e 's/--/\\(em/g' | nroff -mm - | lp

sort [options] [files]

Sort the lines of the named files, typically in alphabetical order. See also comm">uniq, comm, and join.


Ignore leading spaces and tabs.

Check whether files are already sorted, and if so, produce no output.

Sort in dictionary order (ignore punctuation).

“Fold”; ignore uppercase/lowercase differences.

Ignore nonprinting characters (those outside ASCII range 040-176).

-k fieldspec
Specify significance of input fields for sorting. See the fuller description below. Solaris only.

Merge sorted input files.

Compare first three characters as months.

Sort in arithmetic (numerical) order.

-o file
Put output in file.

Reverse the order of the sort.

Fields are separated with c (default is any whitespace).

-T dir
Use dir for temporary files. Solaris only.

Identical lines in input file appear only one (u nique) time in output.

Adjust the amount of memory (in kilobytes) sort uses. If kmem is not specified, allocate the maximum memory.

Provide the maximum number of bytes for any one line in the file. This option prevents abnormal termination of sort in certain cases. Solaris sort accepts but otherwise ignores this option.

+n [-m]
Skip n fields before sorting, and sort up to field position m. If m is missing, sort to end of line. Positions take the form a.b, which means character b of field a. If .b is missing, sort at the first character of the field. Counting starts at zero. Solaris allows fields to have optional trailing modifiers, as in the -k option.

Field Specifications for -k

A fieldspec has the form fieldstart[type][,fieldend[type]].

A field number and optional starting character of the form fnum[.schar]. fnum is the field number, starting from 1. schar, if present, is the starting character within the field, also counting from 1.

A field number and optional ending character of the form fnum[.echar]. fnum is the field number, starting from 1. echar, if present, is the last significant character within the field, also counting from 1.

A modifier, one of the letters b, d, f, i, M, n, or r. The effect is the same as the corresponding option, except that the b modifier only applies to the fields, not the whole line.


List files by decreasing number of lines:

wc -l * | sort -rn

Alphabetize a list of words, remove duplicates, and print the frequency of each word:

sort -fd wordlist | uniq -c

Sort the password file numerically by the third field (user ID):

sort +2n -t: /etc/passwd

Find the top 20 disk hogs on a system:

cd /home; du -sk * | sort -nr | head -20
sortbibsortbib [option] files

Part of the refer suite of programs. See Chapter 17.

sotrusssotruss [options] program [args ...]

Solaris only. Shared object library version of truss. sotruss executes program, passing it args, if any. It then traces calls into and/or out of shared object libraries that are loaded dynamically.


Follow children created by fork(2) and print output for each child. Each output line contains the process's process ID.

-F fromlist
Only trace calls from the libraries named in fromlist, which is a colon-separated list of libraries. The default is to trace only calls from the main executable.

-o file
Send output to file. If used with -f, the process ID of the running program is appended to the filename.

-T tolist
Only trace calls to routines in the libraries named in tolist, which is a colon-separated list of libraries. The default is to trace all calls.

spellspell [options] [files]

Compare the words of one or more named files with the system dictionary and report all misspelled words. System files for spell reside in /usr/lib/spell.


Check for British spelling.

Ignore files included with the nroff or troff .so request. No effect if deroff is unavailable.

Follow all included files (files named in .so or .nx requests); default is to ignore files that begin with /usr/lib.

Include words that are derived from dictionary list but are not literal entries.

Show every possible word stem (on standard error).

Use the sorted wordlist file as a local dictionary to add to the system dictionary; words in wordlist are not treated as misspelled.


Run the first pass of spell:

spell file1 file2 > jargon

After editing the jargon file, use it as a list of special terms. The second pass of spell produces genuine misspellings:

spell +jargon file[12] > typos
splitsplit [options] [infile] [outfile]

Split infile into several files of equal length. infile remains unchanged, and the results are written to outfileaa, outfileab, etc. (default is xaa, xab, etc.). If infile is (or missing), standard input is read. See also csplit.


Split infile into files, each n lines long (default is 1000).

Solaris Options

These options are unique to Solaris:

-a slen
Use slen characters for the filename suffix. Default is 2.

-b n[m]
Split into pieces of size n bytes. An optional multiplier m may be supplied: k for kilobytes and m for megabytes. Mutually exclusive with -l.

Same as -n. Mutually exclusive with -b.


Break bigfile into 1000-line segments:

split bigfile

Join four files, then split them into ten-line files named new.aa, new.ab, etc. Note that without the -, new. would be treated as a nonexistent input file:

cat list[1-4] | split -10 - new.
srchtxtsrchtxt [options] [regexp]

A grep-like utility to search message files for text strings that match regular expression regexp. srchtxt is one of the message manipulation commands like gettxt and mkmsgs. If no regexp is used, srchtxt displays all message strings from the specified files.


-l locale
Search files that reside in the directory /usr/lib/locale/ locale/LC_MESSAGES, where locale is the language in which the message strings have been written. The default locale is set by environment variables LC_MESSAGES or LANG. If neither is set, srchtxt searches directory /usr/lib/locale/C/LC_MESSAGES.

-m msgfiles
Search for strings in one or more comma-separated msgfiles. Specifying a pathname for msgfiles overrides the -l option.

Don't print message numbers for strings.

sshssh2 [-l user] host [commands]
ssh2 [options] [user@]host

Secure shell. This is a secure replacement for the rsh, rlogin, and rcp programs. ssh uses strong public-key encryption technologies to provide end-to-end encryption of data. There may be licensing/patent issues restricting the use of the software in some countries.

Note: ssh2 is not distributed with SVR4 or Solaris. Source code for the noncommercial version for Unix can be downloaded from ftp://ftp.cs.hut.fi/pub/ssh. More information can be found at http://www.ssh.fi and http://www.ipsec.com.

stringsstrings [options] files

Search object or binary files for sequences of four or more printable characters that end with a newline or null. See also od.


Search entire file, not just the initialized data portion of object files. Can also specify this option as -.

Display the string's offset position before the string.

-n n
Minimum string length is n (default is 4). Can also specify this option as -n.

-t format
Specify how to print string offsets. format is one of d, o, or x for decimal, octal, or hexadecimal, respectively. Solaris only.

strip/usr/ccs/bin/strip [options] files

Remove information from ELF object files or archive files, thereby reducing file sizes and freeing disk space. The following items can be removed:

  1. Symbol table

  2. Debugging information

  3. Line number information

  4. Static symbol information

  5. External symbol information

  6. Block delimiters

  7. Relocation bits

ELF versions of strip provide facilities for removing only the first three items.


The following options refer to the previous list:

Strip only Items 1, 2, and 3. This is the default.

Strip only Item 3 (line number information).

Strip Items 1, 2, 3, and 6. (Solaris: same as the default action: strip Items 1, 2, and 3.)

Print the version number of strip on standard error.

Strip only Items 2 and 3.

sttystty [options] [modes]

Set terminal I/O options for the current device. Without options, stty reports the terminal settings, where a ^ indicates the Control key, and ^‘ indicates a null value. Most modes can be switched using an optional preceding (shown in brackets). The corresponding description is also shown in brackets. As a privileged user, you can set or read settings from another device using the syntax:

stty [options] [modes] < device

stty is one of the most complicated Unix commands. The complexity stems from the need to deal with a large range of conflicting, incompatible, and nonstandardized terminal devices--everything from printing teletypes to CRTs to pseudo-terminals for windowing systems. Only a few of the options are really needed for day-to-day use. stty sane is a particularly valuable one to remember.


Report all option settings.

Report current settings.

Control Modes

Hang up connection (set the baud rate to zero).

Set terminal baud rate to n (e.g., 19200).

[Enable] disable modem control.

[Disable] enable the receiver.

[Disable] enable output hardware flow control using RTS/CTS.

[Disable] enable input hardware flow control using RTS.

Select character size in bits (5 Figure n Figure 8).

[One] two stop bits per character.

Set the width in bytes per character and screen display columns per character, for EUC (Extended Unix Code) characters. Solaris only.

[Do not] hang up connection on last close.

Same as [-]hup.

ispeed n
Set terminal input baud rate to n.

[Do not] block layer output. For use with shl; obsolete.

ospeed n
Set terminal output baud rate to n.

[Disable] enable parity generation and detection.

[Disable] enable extended parity generation and detection for mark and space parity.

Use [even] odd parity.

Input Modes

[Do not] signal INTR on break.

[Do not] map carriage return (^M) to newline (^J) on input.

[Do not] ignore break on input.

[Do not] ignore carriage return on input.

[Do not] ignore parity errors.

[Do not] echo BEL when input line is too long.

[Do not] map newline to carriage return on input.

[Disable] enable input parity checking.

[Do not] strip input characters to 7 bits.

[Do not] map uppercase to lowercase on input.

Allow [only XON] any character to restart output.

[Do not] send START/STOP characters when the queue is nearly empty/full.

[Disable] enable START/STOP output control.

[Do not] mark parity errors.

Output Modes

Select style of delay for backspaces (n = 0 or 1).

Select style of delay for carriage returns (0 Figure n Figure 3).

Select style of delay for formfeeds (n = 0 or 1).

Select style of delay for linefeeds (n = 0 or 1).

[Do not] map carriage return to newline on output.

Set fill character to [NULL] DEL.

Delay output with [timing] fill characters.

[Do not] map lowercase to uppercase on output.

[Do not] map newline to carriage return-newline on output.

[Do not] perform carriage return after newline.

[Do not] output carriage returns at column zero.

[Do not] postprocess output; ignore all other output modes.

Select style of delay for horizontal tabs (0 Figure n Figure 3).

Select style of delay for vertical tabs (n = 0 or 1).

Local Modes

[Do not] echo every character typed.

[Do not] echo control characters as ^char, DEL as ^?.

[Do not] echo ERASE character as BS-space-BS string.

[Do not] echo newline after KILL character.

[Do not] BS-SP-BS erase entire line on line kill.

[Do not] echo newline (^J).

[Do not] echo erase character as character is “erased.”

Output is [not] being flushed.

[Disable] enable canonical input (ERASE and KILL processing).

[Disable] enable extended functions for input data.

[Disable] enable checking of characters against INTR, QUIT, and SWITCH.

Same as [-]echok. Obsolete.

[Enable] disable flush after INTR, QUIT, or SWITCH.

[Do not] retype pending input at next read or input character.

[Line] application mode on a synchronous line.

[Disable] enable flush on synchronous line.

[Enable] disable truncation on synchronous line.

[Do not] send SIGTTOU when background processes write to the terminal.

[Do not] change case on local output.

Control Assignments

ctrl-char c
Set control character to c. ctrl-char is: ctab, discard, dsusp, eof, eol, eol2, erase, intr, kill, lnext, quit, reprint, start, stop, susp, swtch, werase.

min n
With -icanon, n is the minimum number of characters that will satisfy the read system call until the timeout set with time expires.

time n
With -icanon, n is the number of tenths of seconds to wait before a read system call times out. If the minimum number of characters set with min has been read, the read can return before the timeout expires.

line i
Set line discipline to i (1 Figure i Figure 126).

Combination Modes

Set normal asynchronous communications.

Same as -raw.

Same as [-]parenb and cs7[8].

Reset ERASE and KILL characters to # and @.

[Un] set xcase, iuclc, and olcuc.

Same as [-]lcase.

[Disable] enable parenb, parodd, and parext, and set cs7[8].

[Un] set icrnl and onlcr. -nl also unsets inlcr, igncr, ocrnl, and onlret.

Same as [-]parenb, [-]parodd, and cs7[8].

Same as [-]parenb and cs7[8].

[Disable] enable raw input and output (no ERASE, KILL, INTR, QUIT, EOT, SWITCH, or output postprocessing).

Reset all modes to reasonable values.

[Disable] enable parenb and parext, and set cs7[8].

[Expand to spaces] preserve output tabs.

Set all modes suitable for terminal type term (tty33, tty37, vt05, tn300, ti700, or tek). (These predefined names are all so obsolete as to be useless.)

Hardware Flow Control Modes

[Disable] enable CD on output.

[Disable] enable CTS on output.

[Disable] enable DTR on input.

[Disable] enable isochronous hardware flow control on input.

[Disable] enable RTS on input.

Clock Modes

These options may not be supported on all hardware:

Get the transmit|receive clock from internal baud rate generator.

Get the transmit|receive clock from transmitter timing-lead, CCITT V.24 circuit 114, EIA-232-D pin 15.

Get the transmit|receive clock from receiver timing-lead, CCITT V.24 circuit 115, EIA-232-D pin 17.

For modes beginning with t, pin is transmitter timing-lead, V.24 circuit 113, EIA-232-D pin 24. For modes beginning with r, pin is receiver timing-lead, V.24 circuit 128, no EIA-232-D pin.

No transmitter|receiver timing clock.

Send receive baud rate generator to pin.

Send transmit baud rate generator to pin.

Send transmitter timing to pin.

Send receiver timing to pin.

Window size

columns n
Set size to n columns. Can also be given as cols.

rows n
Set size to n rows.

xpixels n
Set size to n pixels across.

ypixels n
Set size to n pixels up and down.

susu [option] [user] [shell_args]

Create a shell with the effective user ID of another user (that is, login as user). If no user is specified, create a shell for a privileged user (that is, become a superuser). Enter EOF to terminate. You can run the shell with particular options by passing them as shell_args (e.g., if the shell runs sh, you can specify -c command to execute command via sh, or -r to create a restricted shell).

su will inherit your environment settings. Administrators wishing to switch to a user's setup (perhaps to help them solve a problem) may wish to consider using this sequence:

me$ su		                       Switch to root
Password:	                       Enter root password
# su - user
	                       Switch to other user


Go through the entire login sequence (i.e., change to user's environment).

tailtail [options] [file]

Print the last ten lines of the named file. Use only one of -f or -r.


Don't quit at the end of file; “follow” file as it grows. End with an INTR (usually ^C).

Copy lines in reverse order.

Begin printing at n th item from end of file. k specifies the item to count: l (lines, the default), b (blocks), or c (characters).

Same as previous, but use the default count of 10.

Like -n, but start at n th item from beginning of file.

Like -k, but count from beginning of file.


Show the last 20 lines containing instances of .Ah:

grep '\.Ah' file | tail -20

Continually track the latest uucp activity:

tail -f /var/spool/uucp/LOGFILE

Show the last 10 characters of variable name:

echo "$name" | tail -c

Reverse all lines in list:

tail -r list
talktalk user [@hostname] [tty]

Exchange typed communication with another user who is on the local machine or on machine hostname. talk might be useful when you're logged in via modem and need something quickly, making it inconvenient to telephone or send email. talk splits your screen into two windows. When connection is established, you type in the top half while user's typing appears in the bottom half. Type ^L to redraw the screen and ^C (or interrupt) to exit. If user is logged in more than once, use tty to specify the terminal line. The user needs to have used mesg y.


  • There are different versions of talk that use different protocols; interoperability across different Unix systems is very limited.

  • talk is also not very useful if the remote user you are “calling” is using a windowing environment, since there is no way for you to know which tty to use to get their attention. The connection request could easily show up in an iconified window! Even if you know the remote tty, the called party must have done a mesg y to accept the request.

tartar [options] [files]

Copy files to or restore files from tape (tape archive). If any files are directories, tar acts on the entire subtree. (See also cpio and pax.)

Options are supplied as one group, with any arguments placed afterward in corresponding order. Originally, tar did not even accept a leading on its options. Although the Solaris version allows one, it does not require it. On many other Unix systems, you may use conventional option notation, with each option preceded by a dash and separated from the other options with whitespace. Some systems actually require the use of separate options. Check your local documentation for the final word.


For the following reasons, tar is best used as a way to exchange file or source code archives over a network. A system administrator performing system backups is advised to use the vendor-supplied backup program (typically called dump or backup; see your local documentation) for backups instead of tar. (Many of these same points apply to cpio and to pax as well.)

  • Most Unix versions of tar preserve the leading / from an absolute filename in the archive. This makes it difficult or impossible to extract the files on a different system.

  • The tar archive format was designed when Unix file and directory names were short (14 characters maximum). Modern Unix systems allow individual filenames to be up to 255 characters in length, but the tar archive header has a limit of 100 characters for the entire pathname. This makes it difficult or impossible in practice to archive a typical Unix filesystem.

  • In general, Unix versions of tar cannot recover from data errors, which are particularly common with tapes. An early tape error can render an entire tar tape useless.

  • While tar does checksum the header information describing each archived file, it does not checksum the actual data blocks. Thus, if a data block becomes corrupted on a tape, tar will never notice.

The GNU version of tar has extensions to get around many of these problems, at the cost of portability of the archive format to non-GNU versions. Source code can be obtained from the Free Software Foundation (http://www.gnu.org).

Control Options (Solaris)

-C dir files
Change directory to dir before adding files to the archive. Use relative pathnames. This option makes it possible to archive files that don't share a common ancestor directory.

-I file
Read a list of filenames to be archived, one filename per line, from file. Useful when there are too many files to name on the command line.

Exclude files. The corresponding file argument is read for a list of relative pathnames, one per line, of files that should not be archived. This option may be provided multiple times with multiple files. Filenames that appear here are excluded even if the same name was provided in a file used with -I.

Function Options (choose one)

Create a new archive.

Append files to archive.

Table of contents. Print the names of files if they are stored on the archive (if files not specified, print names of all files).

Update. Add files if not in archive or if modified.

Extract files from archive (if files not specified, extract all files).


b n
Use blocking factor n (default is 1; maximum is 20). Different Unix systems often allow larger blocking factors.

Continue reading until logical blocks are full. For use across Ethernet connections with rsh. On by default when reading standard input. Solaris only, but also common on many other Unix systems.

Exit immediately upon unexpected errors. Solaris only.

Use an extended header that allows longer filenames, larger files, and other extensions. Not portable. Solaris only.

f arch
Store files in or extract files from archive arch; arch is usually a device name (default varies from system to system). If arch is -, standard input or output is used as appropriate (e.g., when piping a tar archive to a remote host).

With F, do not archive SCCS and RCS directories. With FF, also exclude files named a.out, core, errs, and all .o files. Solaris only.

Ignore directory checksum errors. Solaris only.

k size
Specify the archive size in kilobytes. Archives that are larger than size are split across volumes. Useful for fixed-size media, such as floppy disks. Solaris only.

Print error messages about links that can't be found.

Follow symbolic links. SVR4 only.

Do not restore file modification times; update them to the time of extraction.

Archive is not a tape device. This allows tar to seek, instead of doing sequential reads, which is faster. Solaris only.

Change ownership of extracted files to that of user running program. This is the default for nonprivileged users.

Preserve permissions of extracted files. Solaris ACLs are restored if recorded in the archive and are added to the archive when used with c.

Do not add a trailing / to directory names in the archive. Solaris only.

Print function letter (x for extraction or a for archive) and name of files. With t, print a listing similar to that of ls -l.

Wait for user confirmation (y).

Select tape drive n and use speed c. n is 0–7 (default is 0); c is l (low), h (high), or m (medium, the default). Used to modify arch. (These are highly system-specific and non-portable: it is much better to always just specify the arch explicitly.)


Create an archive of /bin and /usr/bin (c), show the command working (v), and write on the tape in /dev/rmt/0:

tar cvf /dev/rmt/0 /bin /usr/bin

List the archive's contents in a format like ls -l:

tar tvf /dev/rmt/0

Extract the /bin directory:

tar xvf /dev/rmt/0 /bin

Create an archive of the current directory, and store it in a file /tmp/backup.tar on the system. (Backing up a directory into a file in that directory almost never works.)

tar cvf /tmp/backup.tar .

Similar, but compress the archive file:

tar cvf - . | compress > /tmp/backup.tar.Z

(The - tells tar to store the directory on standard output, which is then redirected through the pipe.)

Copy a directory tree from one location to another:

# cd olddir; tar cf - . | (cd newdir; tar xvpf -)
tbltbl [options] [files]

Preprocessor for nroff/troff tables. See Chapter 17.

teetee [options] [files]

Duplicate the standard input; send one copy to standard output and another copy to files.


Append output to files.

Ignore all interrupts.


Display a who listing on the screen and store it in two files:

who | tee userlist ttylist

Display misspelled words and add them to existing typos:

spell ch02 | tee -a typos
telnettelnet [options] [host [port]]

Communicate with another host using the Telnet protocol. host may be either a name or a numeric Internet address (dot format). telnet has a command mode (indicated by the telnet> prompt) and an input mode (usually a login session on the host system). If no host is given, telnet defaults to command mode. You can also enter command mode from input mode by typing the escape character ^]. In command mode, type ? or help to list the available commands.

Solaris Options

Solaris telnet provides these options:

Use an 8-bit data path. This negotiates the BINARY option for input and output.

Don't read $HOME/.telnetrc at startup.

Set the debug option to true.

-e c
Use c as the escape character. The default is ^]. A null value disables the escape character mechanism.

Don't have an escape character.

-l user
Use the ENVIRON option to pass the value of the USER environment variable.

Use an 8-bit data path on output. This negotiates the BINARY option only for output.

-n file
Record trace information in file.

Provide an rlogin-style interface, in which the escape character is ~ and is only recognized after a carriage return. The regular telnet escape character must still be used before a telnet command. "~. Return" and "~ ^Z" terminates or stops a session, respectively. This feature may change in future versions of Solaris.

testtest expression
[ expression

Evaluate an expression and, if its value is true, return a zero exit status; otherwise, return a nonzero exit status. In shell scripts, you can use the alternate form [ expression ]. The brackets are typed literally and must be separated from expression. Generally, this command is used with conditional constructs in shell programs. See Chapter 4 for more information on test.

timetime [option] command [arguments]

Execute a command with optional arguments and print the total elapsed time, execution time, process execution time, and system time of the process (all in seconds). Times are printed on standard error.


This option is available only on Solaris:

Print the real, user, and system times with a single space separating the title and the value, instead of a tab.

timextimex [options] command [arguments]

Execute a command with optional arguments and print information specified by the time command. Report process data with various options.


Show total number of blocks and characters used.

-p suboptions
Show process accounting data with possible suboptions.

Show total system activity.

Suboptions for –p

Include fork/exec flag and system exit status.

Show “hog” factor (fraction of CPU time used) instead of mean memory size.

Show total kcore-minutes instead of memory size.

Show mean core size (this is the default behavior).

Show CPU use percentage (user time / (system time + user time)).

Show user and system CPU times.

touchtouch [options] [date] files

For one or more files, update the access time and modification timestamp to the current time and date, or update to the optional date. date is a date and time in the format mmddhhmm[yy]. touch is useful in forcing other commands to handle files a certain way; e.g., the operation of make, and sometimes find, relies on a file's access and modification times.


Update only the access time.

Do not create nonexistent files.

Update only the modification time.

-r file
Use the access and/or modification times of file instead of the current time. Solaris only.

-t time
Use the time as provided by time, which has the form [[cc]yy]mmddhhmm[.ss]. Solaris only.

tputtput [options] capname [arguments]

Print the value of the terminal capability capname (and its associated numeric or string arguments) from the terminfo database. capname is a terminfo capability such as clear or col. (See termcap & terminfo, which is listed in the Bibliography.) The last five options are mutually exclusive and are not used when specifying a capname.

Exit statuses are:

When a Boolean capname is set to true or when a string capname is defined

When a Boolean is false or when a string is undefined

For usage errors

For unknown terminal type

For unknown capname


Print the capabilities of terminal type (default is the terminal in use).

Read capname from standard input (this allows tput to evaluate more than one capname).

Print the clear-screen sequence. Solaris only.

Print initialization strings and expand tabs.

Print reset strings if present; act like init if not.

Print the terminal's long name.


Show the number of columns for the xterm terminal type:

tput -Txterm cols

Define shell variable restart to reset terminal characteristics:

restart=`tput reset`
trtr [options] [string1 [string2]]

Copy standard input to standard output, performing substitution of characters from string1 to string2 or deletion of characters in string1. System V requires that string1 and string2 be enclosed in square brackets. BSD versions do not have this requirement.


Complement characters in string1 with characters in the current character set. The complement is the set of all characters not in string1.

Delete characters in string1 from output.

Squeeze out repeated output characters in string2.


Change uppercase to lowercase in a file:

tr '[A-Z]' '[a-z]' < file

Solaris allows the use of character classes:

tr '[:upper:]' '[:lower:]' < file

Turn spaces into newlines (ASCII code 012):

tr ' ' '\012' < file

Strip blank lines from file and save in new.file (or use \011 to change successive tabs into one tab):

tr -s "" "\012" < file > new.file

Delete colons from file; save result in new.file:

tr -d : < file > new.file

Make long search path more readable:

echo $PATH | tr ':' '\n'
trofftroff [options] [files]

Document formatter for laser printer or typesetter. See Chapter 12.


A do-nothing command that returns a successful (zero) exit status. Normally used in Bourne shell scripts. See also false.

trusstruss [options] arguments

Trace system calls, signals, and machine faults while executing arguments. arguments is either a Unix command to run or, if -p is specified, a list of process IDs representing the already running processes to trace. The options -m, -r, -s, -t, -v, -w, and -x accept a comma-separated list of arguments. A ! reverses the sense of the list, telling truss to ignore those elements of the list during the trace. (In the C shell, use a backslash before !.) The keyword all can include/exclude all possible elements for the list. The optional ! and corresponding description are shown in brackets.

The Solaris truss also provides tracing of user-level function calls in dynamically loaded shared libraries.

This command is particularly useful for finding missing files when a third-party application fails. By watching the access and open system calls, you can find where, and which, files the application program expected to find, but did not.

Many systems have similar programs named trace or strace. These programs are worth learning how to use.


Display parameters passed by each exec(2) call.

Count the traced items and print a summary rather than listing them as they happen.

Print a timestamp in the output, of the form seconds.fraction, indicating the time relative to the start of the trace. Times are when the system call completes, not starts. Solaris only.

Print a delta timestamp in the output, of the form seconds.fraction, indicating the time between events (i.e., the time not inside system calls). Solaris only.

Display values of environment variables passed by each exec(2) call.

Follow child processes. Useful for tracing shell scripts.

List sleeping system calls only once, upon completion.

Trace [exclude from trace] the list of machine faults. faults are names or numbers, as listed in <sys/fault.h> (default is -mall -m!fltpage).

When the traced process receives one of the named faults, truss leaves the process in a stopped state and detaches from it (default is -M!all). The process can subsequently be attached to with a debugger, or with another invocation of truss using different options. Solaris only.

Show the lightweight process ID for a multithreaded process. Solaris only.

-o outfile
Send trace output to outfile, not standard error.

Trace one or more running processes instead of a command.

Display [don't display] the full I/O buffer of read system calls for file_descriptors (default is -r!all).

Trace [exclude from trace] the list of signals. signals are names or numbers, as listed in <sys/signal.h> (default is -sall).

When the traced process receives one of the named signals, truss leaves the process in a stopped state and detaches from it (see -M) (default is -S!all). Solaris only.

Trace [exclude from trace] the list of system_calls. system_calls are names or numbers, as listed in Section 2, “System Calls,” of the UNIX Programmer's Reference Manual (see Bibliography); default is -tall.

When the traced process executes one of the named system calls, truss leaves the process in a stopped state and detaches from it (see -M) (default is -T!all). Solaris only.

Trace user-level function calls, not just system calls. lib is a comma-separated list of dynamic library names, without the .so.n suffix. func is a comma-separated list of names. Shell wildcard syntax may be used to specify many names. (Such use should be quoted to protect it from expansion by the shell.) The leading ! indicates libraries and/or functions to exclude. With :, only calls into the library from outside it are traced; with ::, all calls are traced. Solaris only.

When the traced process executes one of the named user-level functions, truss leaves the process in a stopped state and detaches from it (see -M). Solaris only.

Verbose mode. Same as -t, but also list the contents of any structures passed to system_calls (default is -v!all).

Display [don't display] the full I/O buffer of write system calls for file_descriptors (default is -w!all).

Same as -t, but display the system call arguments as raw code (hexadecimal) (default is -x!all).


Trace system calls access, open, and close for the lp command:

truss -t access,open,close lp files > truss.out

Trace the make command, including its child processes, and store the output in make.trace:

truss -f -o make.trace make target
tset/usr/ucb/tset [options] [type]

Set terminal modes. Without arguments, the terminal is reinitialized according to the TERM environment variable. tset is typically used in startup scripts (.profile or .login). type is the terminal type; if preceded by a ?, tset prompts the user to enter a different type, if needed. Press the Return key to use the default value, type. See also reset.


Print terminal name on standard output; useful for passing this value to TERM.

Set erase character to c; default is ^H (backspace).

Set interrupt character to c (default is ^C).

Do not output terminal initialization setting.

-k c
Set line-kill character to c (default is ^U).

Declare terminal specifications. port is the port type (usually dialup or plugboard). tty is the terminal type; it can be preceded by ? as above. baudrate checks the port speed and can be preceded by any of these characters:


Port must be greater than baudrate.


Port must be less than baudrate.


Port must transmit at baudrate.


Negate a subsequent >, <, or @ character.


Prompt for the terminal type. With no response, use the given type.

Initialize “new” tty driver modes. Useless because of redundancy with the default stty settings in SVR4 that incorporate the functionality of the BSD “new” tty driver.

Do not print “Erase set to” and “Kill set to” messages.

Report the terminal type.

Return the values of TERM assignments to shell environment. This is a commonly done via eval \‘tset -s\‘ (in the C shell, you would surround this with the commands set noglob and unset noglob).


Set TERM to wy50:

eval `tset -s wy50`

Prompt user for terminal type (default is vt100):

eval `tset -Qs -m '?vt100'`

Similar to above, but the baudrate must exceed 1200:

eval `tset -Qs -m '>1200:?xterm'`

Set terminal via modem. If not on a dial-in line, the ?$TERM causes tset to prompt with the value of $TERM as the default terminal type:

eval `tset -s -m dialup:'?vt100' "?$TERM"`
ttytty [options]

Print the device name of your terminal. This is useful for shell scripts and often for commands that need device information.


Print the synchronous line number, if on an active synchronous line.

Return only the codes: 0 (a terminal), 1 (not a terminal), 2 (invalid options used).

typetype program ...

Print a description of program, i.e., whether it is a shell built in, a function, or an external command. type is built-in to the Bourne and Korn shells. See Chapter 4 and also see which.


Describe cd and ls:

$ type cd ls
cd is a shell builtin
ls is /usr/bin/ls
umaskumask [value]

Print the current value of the file creation mode mask, or set it to value, a three-digit octal code specifying the read-write-execute permissions to be turned off. This is the opposite of chmod. Normally used in .login or .profile. umask is a built-in command in the Bourne, Korn, and C shells (see Chapter 4 and Chapter 5).

umask NumberFile PermissionDirectory Permission


Turn off write permission for others:

umask 002		Produces file permission -rw-rw-r--

Turn off all permissions for group and others:

umask 077		Produces file permission -rw-------

Note that you can omit leading zeroes.

unameuname [options]

Print the current Unix system name.


Report the information supplied by all the other options.

The hardware platform name. (For example, i86pc; compare to i386 from -p.) Solaris only.

The hardware name.

The node name.

The host's processor type.

The operating system release.

The system name. This is the default action when no options are provided.

The operating system version.

-S name
Change the nodename to name. Privileged users only. Solaris only.

Print expanded information as expected by SCO Unix systems. Solaris only.

uncompressuncompress [option] [files]

Restore the original file compressed by compress. The .Z extension is implied, so it can be omitted when specifying files.

The -f and -v options from compress are also allowed. See compress for more information.


Same as zcat (write to standard output without changing files).

unexpandunexpand [options] [files]

Convert spaces back into an appropriate number of tab characters. unexpand reads the named files, or standard input if no files are provided. See also expand.


Replace spaces with tabs everywhere possible, not just leading spaces and tabs.

-t tablist
Interpret tabs according to tablist, a space- or comma-separated list of numbers in ascending order that describe the “tabstops” for the input data.

unget/usr/ccs/bin/unget [options] files

An SCCS command. See Chapter 18.

uniquniq [options] [file1 [file2]]

Remove duplicate adjacent lines from sorted file1, sending one copy of each line to file2 (or to standard output). Often used as a filter. Specify only one of -c, -d, or -u. See also comm and sort.


Print each line once, counting instances of each.

Print duplicate lines once, but no unique lines.

-f n
Ignore first n fields of a line. Fields are separated by spaces or by tabs. Solaris only.

-s n
Ignore first n characters of a field. Solaris only.

Print only unique lines (no copy of duplicate entries is kept).

Ignore first n fields of a line. Fields are separated by spaces or by tabs.

Ignore first n characters of a field.


Send one copy of each line from list to output file list.new (list must be sorted):

uniq list list.new

Show which names appear more than once:

sort names | uniq -d

Show which lines appear exactly three times:

sort names | uniq -c | awk '$1 == 3'

Interactively supply a formula to convert a number from one unit to another. /usr/lib/units (Solaris: /usr/share/lib/unittab) gives a complete list of the units. Use EOF to exit.


unix2dos [options] unixfile dosfile

Solaris only. Convert files using the ISO standard characters to their DOS counterparts. If unixfile and dosfile are the same, the file is overwritten after the conversion is done. See also dos2unix.


Add extra carriage returns for use under DOS.

Same as the default action.

Convert 8-bit Solaris characters to 7-bit DOS characters.

unzipunzip [options[modifiers]] zipfile ... [extraction options]
unzip -Z [zipinfo options] zipfile

Solaris only. (Many other modern Unix systems also have it.) unzip prints information about or extracts files from ZIP format archives. The zipfile is a ZIP archive whose filename ends in .zip. The .zip can be omitted from the command line; unzip supplies it. zipfile may also be a shell-style wildcard pattern (which should be quoted); all matching files in the ZIP archive will be acted upon. The behavior of options is affected by the various modifiers.

In the second form, the options are taken to be zipinfo options, and unzip performs like that command. See zipinfo for more information.

Options may also be included in the UNZIP environment variable, to set a default behavior. Options on the command line can override settings in $UNZIP by preceding them with an extra minus. See the Examples.

When extracting files, if a file exists already, unzip prompts for an action. You may to choose to overwrite or skip the existing file, overwrite or skip all files, or rename the current file.


  • unzip and its companion program zip (which is not included with Solaris) are part of the InfoZIP project. InfoZIP is an open collaborative compressed archive format, and implementations exist for Unix, Amiga, Atari, DEC VAX and Alpha VMS and OpenVMS, MS-DOS, Macintosh, Minix, OS/2, Windows NT, and many others. It is the only similar format one can expect to port to all of these systems without difficulty. The web home page is http://www.cdrom.com/pub/infozip.

  • Unlike most Unix tar implementations, zip removes leading slashes when it creates a ZIP archive, so there is never any problem unbundling it at another site.

  • The Java Archive format (.jar) is based on ZIP; zip and unzip can process .jar files with no trouble.

Extraction Options

-d dir
Extract files in dir instead of in the current directory. This option need not appear at the end of the command line.

-x files
Exclude. Do not extract archive members that match files.


Print help for the shared library programming interface (API).

Print files to standard output (the CRT). Similar to -p, but a header line is printed for each file, it allows -a, and automatically does ASCII to EBCDIC conversion. Not in the unzip usage message.

Freshen existing files. Only files in the archive that are newer than existing disk files are extracted. unzip queries before overwriting, unless -o is used.

List archived files, in short format (name, full size, modification time, and totals).

Extract files to standard output (for piping). Only the file data is printed. No conversions are done.

Test the archived files. Each file is extracted in memory, and the extracted file's CRC is compared to the stored CRC.

Set the timestamp on the archive itself to be that of the newest file in the archive.

Same as -f, but also extract any files that don't exist on disk yet.

Be verbose or print diagnostic information. -v is both an option and a modifier, depending upon the other options. By itself, it prints the unzip ftp site information, information about how it was compiled, and what environment variable settings are in effect. With a zipfile, it adds compression information to that provided by -l.

Only print the archive comment.

Run as zipinfo. Remaining options are zipinfo options. See zipinfo for more information.


Convert text files. Normally, files are extracted as binary files. This option causes text files to be converted to the native format (e.g., adding or removing CR characters in front of LF characters). EBCDIC-to-ASCII conversion is also done as needed. Use -aa to force all files to be extracted as text.

Treat all files as binary.

Save a backup copy of each overwritten file in file~. Only available if compiled with UNIXBACKUP defined.

Ignore case when matching filenames. Useful on non-Unix systems where filesystems are not case-sensitive.

“Junk” paths. Extract all files in the current extraction directory, instead of reproducing the directory tree structure stored in the archive.

Convert filenames to lowercase from archives created on uppercase-only systems. By default, filenames are extracted exactly as stored in the archive.

Pipe output through the internal pager, which is similar to more. Press the Return key or spacebar at the --More-- prompt to see the next screenful.

Never overwrite existing files. If a file already exists, don't extract it, just continue on without prompting. Normally, unzip prompts for an action.

Overwrite existing files without prompting. Often used together with -f. Use with care.


List the contents of a ZIP archive:

unzip -lv whizprog.zip

Extract C source files in the main directory, but not in subdirectories:

unzip whizprog.zip '*.[ch]' -x '*/*'

Print the current time, amount of time the system has been up, number of users logged in, and the system-load averages. This output is also produced by the first line of the w command.

users/usr/ucb/users [file]

Display the currently logged-in users as a space-separated list. Same as who -q. Information is read from a system file (default is /var/adm/utmp).

uudecodeuudecode [-p] [file]

Read a uuencoded file and recreate the original file with the same mode and name (see uuencode).

Solaris provides the -p option, which decodes the file to standard output. This allows you to use uudecode in a pipeline.

uuencodeuuencode [file] name | mail remoteuser

Convert a binary file to a form which can be sent to remoteuser via mail. The encoding uses only printing ASCII characters and includes the mode and name of the file. When file is reconverted via uudecode on the remote system, output is sent to name. (Therefore, when saving the encoded mail message to a file on the remote system, don't store it in a file called name, or you'll overwrite it!) Note that uuencode can take standard input, so a single argument is the name given to the file when it is decoded.

The Solaris version does local character set translation of the encoded characters.

Note: the uuencode format does not provide any kind of checksumming or other data integrity checking. It is advisable to first package files into an archive that does provide checksumming of the data (such as a .zip file), and then uuencode the archive for sending in electronic mail.

vacation [options] [user]

Automatically return a mail message to the sender announcing that you are on vacation. Solaris version, for use with sendmail. (The SVR4 version is described in Appendix B.)

Use vacation with no options to initialize the vacation mechanism. The process performs several steps.

  1. Create a .forward file in your home directory. The .forward file contains:

    \user, "|/usr/bin/vacation user"

    user is your login name. The action of this file is to actually deliver the mail to user (i.e., you), and to run the incoming mail through vacation.

  2. Create the .vacation.pag and .vacation.dir files. These files keep track of who has sent you messages, so that they only receive one “I'm on vacation” message from you per week.

  3. Start an editor to edit the contents of .vacation.msg. The contents of this file are mailed back to whoever sends you mail. Within its body, $SUBJECT is replaced with the contents of the incoming message's Subject: line.

Remove or rename the .forward file to disable vacation processing.


The -a, -j, and -t options are used within a .forward file; see the Example.

-a alias
Mail addressed to alias is actually mail for the user and should produce an automatic reply.

Reinitialize the .vacation.pag and .vacation.dir files. Use this right before leaving for your next vacation.

Do not verify that user appears in the To: or Cc: headers.

-t interval
By default, no more than one message per week is sent to any sender. This option changes that interval. interval is a number with a trailing s, m, h, d, or w indicating seconds, minutes, hours, days, or weeks, respectively.


Send no more than one reply every three weeks to any given sender:

$ cd
$ vacation -I
$ cat .forward
\jp, "|/usr/bin/vacation -t3w jp"
$ cat .vacation.msg
From: jp@wizard-corp.com (J. Programmer, via the vacation program)
Subject: I'm out of the office ...

Hi. I'm off on a well-deserved vacation after finishing
up whizprog 1.0. I will read and reply to your mail
regarding "$SUBJECT" when I return.

Have a nice day.
val/usr/ccs/bin/val [options] file ...

An SCCS command. See Chapter 18.

veditvedit [options] [files]

Same as running vi, but with the showmode and novice flags set, the report flag set to 1, and magic turned off (metacharacters have no special meaning). Intended for beginners.

vgrindvgrind [options] files

Solaris only (from the BSD command). Produce nicely formatted source code listings for use with troff. vgrind formats program source code so that it looks good when typeset with troff. Comments are in italic, keywords in bold, and each function's name is printed in the margin of the page where it is defined. Definitions for each language are kept in /usr/lib/vgrindefs. vgrind can format a number of languages; see -l below.

vgrind has two modes of operation:

Filter mode
Similar to eqn, pic, and tbl. Lines are passed through unchanged, except for those bracketed by .vS and .vE. In this mode, vgrind can be used in a pipeline with other preprocessors.

Regular mode
vgrind processes all files named on the command line and then invokes troff to print them. Use as a filename to mean the standard input. Otherwise, vgrind will not read standard input.


Spacing between option characters and option arguments is specific. Use the options exactly as shown here:

Produce two-column output. Implies -s8 and the -L (landscape) option for $TROFF. (This option was specific to troff at UCB.)

-d definitions
Use definitions as the file with language definitions, instead of the default file.

Run in filter mode.

-h header
Place header in the top center of every output page.

Supported languages are:

Bourne shell-lsh
C shell-lcsh
emacs MLisp-lml

The default is -lc (for C).

Do not use bold for keywords.

Use point size size (same as troff's .ps request).

Use a tab stop of four columns, instead of the default eight.

Print the index. If a file named index exists in the current directory, vgrind writes the index into it. This file can then be formatted and printed separately using vgrind -x index.

Typesetter Options

The following options are passed to the program named by $TROFF, or to troff if that environment variable is not set:

Output only the pages in list; same as -o in troff.

Send the output to printer.

Same as -t for troff; send formatted text to standard output.

Format output for device.

Use the wide Versatec printer instead of the narrow Varian. (These refer to printers that existed at one time at the University of California at Berkeley. This option likely has no real effect under Solaris.)

vivi [options] [files]

A screen-oriented text editor based on ex. See Chapter 8 and Chapter 9 for more information on vi and ex. Options -c, -C, -L, -r, -R, and -t are the same as in ex.


-c command
Enter vi and execute the given vi command.

Run in LISP mode for editing LISP programs.

List filenames that were saved due to an editor or system crash.

-r file
Recover and edit file after an editor or system crash.

Read-only mode. Files can't be changed.

Use with -t to indicate that the tag file may not be sorted and to use a linear search. Solaris only.

-t tag
Edit the file containing tag, and position the editor at its definition (see ctags for more information).

Set default window size to n; useful when editing via a slow dial-up line.

Supply a key to encrypt or decrypt file using crypt. (Note that the supplied key is visible to other users via the ps command.)

Same as -x, but assume file began in encrypted form.

Start vi on last line of file.

Start vi on line n of file.

Start vi on line containing pattern pat. This option fails if nowrapscan is set in your .exrc file.

viewview [options] [files]

Same as vi -R.

volcheckvolcheck [options] [pathnames]

Solaris only. Check one or more devices named by pathnames to see if removable media has been inserted. The default is to check every device being managed by volume management. Most often used with floppies; volume management usually notices when CD-ROMs have been inserted.

Note: use of the -i and -t options, particularly with short intervals, is not recommended for floppy-disk drives.


-i nsec
Check the device(s) every nsec seconds. The default is every two seconds.

-t nsecs
Keep checking over the next nsecs seconds. Maximum nsecs is 28,800 (eight hours).

Be verbose.

ww [options] [user]

Print summaries of system usage, currently logged-in users, and what they are doing. w is essentially a combination of uptime, who, and ps -a. Display output for one user by specifying user.


Suppress headings and uptime information.

Display in long format (the default).

Display in short format.

Print just the heading line. Equivalent to uptime. Solaris only.

Same as -1. Solaris only.

waitwait [n]

Wait for all background processes to complete and report their termination status. Used in shell scripts. If n is specified, wait only for the process with process ID n. wait is a built-in command in the Bourne, Korn, and C shells. See Chapter 4 and Chapter 5 for more information.

wcwc [options] [files]

Word count. Print a character, word, and line count for files. If multiple files, print totals as well. If no files are given, read standard input. See other examples under ls and sort.


Print byte count only.

Print character count only. This will be different than -c in a multibyte character environment. Solaris only.

Print line count only.

Same as -C. Solaris only.

Print word count only.


Count the number of users logged in:

who | wc -l

Count the words in three essay files:

wc -w essay.[123]

Count lines in file named by $file (don't display filename):

wc -l < $file

/usr/ccs/bin/what [option] files

An SCCS command. See Chapter 18.

whatiswhatis commands

Look up one or more commands in the online manpages, and display a brief description. Same as man -f. The MANPATH environment variable can affect the results obtained with this command. See also apropos.

whichwhich [commands]

List which files are executed if the named commands are run as a command. which reads the user's .cshrc file (using the source built-in command), checking aliases and searching the path variable. Users of the Bourne or Korn shells can use the built-in type command as an alternative. (See type, Chapter 4 and Chapter 5.)


$ which file ls
ls:      aliased to ls -sFC
whowho [options] [file]

Display information about the current status of the system. With no options, list the names of users currently logged in to the system. An optional system file (default is /var/adm/utmp) can be supplied to give additional information. who is usually invoked without options, but useful options include am i and -u. For more examples, see cut, line, paste, tee, and wc


Use the -b, -d, -l, -p, -r, -t, -T, and -u options.

Report information about the last reboot.

Report expired processes.

Print headings.

Report inactive terminal lines.

Report only about the current terminal. Solaris only.

-n x
Display x users per line (works only with -q).

Report previously spawned processes.

“Quick.” Display only the usernames.

Report the run level.

List the name, line, and time fields (the default behavior).

Report the last change of the system clock (via date).

Report whether terminals are writable (+), not writable (-), or unknown (?).

Report terminal usage (idle time). A dot (.) means less than one minute idle; old means more than 24 hours idle.

am i
Print the username of the invoking user. (Similar to results from id.)


This sample output was produced at 8 a.m. on April 17:

$ who -uH
martha  ttyp3  Apr 16 08:14 16:25  2240   
george  ttyp0  Apr 17 07:33   .  15182

Since martha has been idle since yesterday afternoon (16 hours), it appears that Martha isn't at work yet. She simply left herself logged in. George's terminal is currently in use. (He likes to beat the traffic.)


Print the username based on effective user ID. This is usually the same as the standard SVR4 command logname. However, when you're running an su session as another user, whoami displays this user's name, but logname still displays your name.

xargsxargs [options] [command]

Execute command (with any initial arguments), but read remaining arguments from standard input instead of specifying them directly. xargs passes these arguments in several bundles to command, allowing command to process more arguments than it could normally handle at once. The arguments are typically a long list of filenames (generated by ls or find, for example) that get passed to xargs via a pipe.

Without a command, xargs behaves similarly to echo, simply bundling the input lines into output lines and printing them to standard output.


Stop passing arguments when argument string is encountered (default is underscore). An omitted string disables the logical EOF capability.

-E string
Use string instead of underscore as the default logical EOF string. Solaris only.

Pass arguments to command, replacing instances of {} on the command line with the current line of input. With Solaris, the optional string can be used instead of {}.

-I string
Same as -i, but string is used instead of {}.

Execute command for n lines of arguments. With Solaris, default n is 1 when -l is supplied.

-L n
Same as -l n. Solaris only.

Execute command with up to n arguments.

Prompt for a y to confirm each execution of command. Implies -t.

Each argument list can contain up to n characters. (Older systems limited n to 470. The default is system-dependent.)

Echo each command before executing.

Exit if argument list exceeds n characters (from -s); -x takes effect automatically with -i and -l.


grep for pattern in all files on the system:

find / -print | xargs grep pattern > out &

Run diff on file pairs (e.g., f1.a and f1.b, f2.a and f2.b ...):

echo $* | xargs -n2 diff

The previous line could be invoked as a shell script, specifying filenames as arguments.

Display file, one word per line (similar to deroff -w):

cat file | xargs -n1

Move files in olddir to newdir, showing each command:

ls olddir | xargs -i -t mv olddir/{} newdir/{}
xgettextxgettext [options] files
xgettext -h

Solaris only. Extract messages (specially marked strings) from C and C++ source files. Place them in a “portable object” file (file.po) for translation and compilation by msgfmt. By default, xgettext only extracts strings inside calls to the gettext(3C) and dgettext(3C) functions. Source files are named on the command line. A filename of indicates the standard input.


Extract all strings, not just those in calls to gettext or dgettext.

-c tag
Copy source file comments marked with tag into the .po file as #-delimited comments.

-d domain
Use domain.po as the output file instead of messages.po.

Print a help message on the standard output.

Join (merge) extracted messages with those in the current .po file. Domain directives in the existing .po file are ignored.

-m prefix
Fill each msgstr with prefix. Intended for debugging.

-M suffix
Fill each msgstr with suffix. Intended for debugging.

Add comments to the .po file indicating the source filename and line number where each string is used.

-p path
Place output files in the directory path.

Sort the output by msgid (original string), with all duplicates removed.

-x exfile
exfile is a .po file with msgid s that are not to be extracted (i.e., excluded).

yacc/usr/ccs/bin/yacc [options] file

Given a file containing a context-free LALR(1) grammar, convert it to tables for subsequent parsing and send output to y.tab.c. This command name stands for yet another compiler-compiler. See also lex and lex & yacc, which is listed in the Bibliography.


-b prefix
Use prefix instead of y for the generated filenames. Solaris only.

Generate y.tab.h, producing #define statements that relate yacc's token codes to the token names declared by the user.

Exclude #line constructs from code produced in y.tab.c. (Use after debugging is complete.)

-p prefix
Use prefix instead of yy for all external names in the generated parser. Solaris only.

-P parser
Use parser instead of /usr/ccs/bin/yaccpar. Solaris only.

Place version information about yacc in y.tab.c (if c = y) or suppress information (if c = n, the default).

Compile runtime debugging code by default.

Generate y.output, a file containing diagnostics and notes about the parsing tables.

Print the version of yacc on standard error.

zcatzcat [files]

Uncompress one or more .Z files to the standard output, leaving files unchanged. See compress.

zipzip [options] zipfile [files]

Archive files in InfoZIP format. These files can be retrieved using unzip. The files are compressed as they are added to the archive. Compression ratios of 2:1 to 3:1 are common for text files. zip may also replace files in an existing archive. With no arguments, display the help information. See also zipinfo and unzip.

Default options may be placed in the ZIPOPT environment variable, with the exceptions of -i and -x. Multiple options may be included in ZIPOPT.

While zip is not distributed with SVR4 or Solaris, source code is readily available from http://www.cdrom.com/pub/infozip.

There are a number of important notes in the unzip entry. Go there for more information.


-b path
Use path as the location to store the temporary ZIP archive while updating an existing one. When done, copy the temporary archive over the new one. Useful primarily when there is not enough disk space on the filesystem containing the original archive.

Add one-line comments for each file. zip first performs any file operations and then prompts you for a comment describing each file.

Delete entries from a ZIP archive. Filenames to be deleted must be entered in uppercase if the archive was created by PKZIP on an MS-DOS system.

Don't create entries in the archive for directories. Usually entries are created, so that attributes for directories may be restored upon extraction.

Encrypt the archive. zip prompts on the terminal for a password and prompts twice, to avoid typing errors. If standard error is not a terminal, zip exits with an error.

Freshen (replace) an existing entry in the ZIP archive if the file has a more recent modification time than the one in the archive. This doesn't add files that are not already in the archive: use -u for that. Run this command from the same directory where the ZIP archive was created, since the archive stores relative path names.

-F, -FF
Fix the ZIP archive. This option should be used with care; make a backup copy of the archive first. The -FF version does not trust the compressed sizes in the archive, and instead scans it for special “signatures” that identify the boundaries of different archive members. See the manpage for more information.

Grow the archive (append files to it).

Display the zip help information.

-i files
Include only the specified files, typically specified as a quoted shell wildcard-style pattern.

“Junk” the path; i.e., store just the name of the saved file, not any directory names. The default is to store complete paths, although paths are always relative.

Strip any prepended data (e.g., an SFX stub, for self-extracting executables) from the archive.

Create an archive that (attempts to) conform to the conventions used under MS-DOS. This makes it easier for PKUNZIP to extract the archive.

For text files only, translate the Unix newline into a CR-LF pair. Primarily for archives extracted under MS-DOS.

For text files only, translate the MS-DOS CR-LF into a Unix newline.

Display the zip license.

“Move” the files into the ZIP archive. This actually deletes the original files and/or directories after the archive has been created successfully. This is somewhat dangerous; use -T in conjunction with this option.

-n suffixlist
Do not compress files with suffixes in suffixlist. Useful for sound or image files that often have their own, specialized compression method.

Set the modified time of the ZIP archive to be that of the youngest file (most recently modified) in the archive.

Quiet mode. Don't print informational messages and comment prompts. Most useful in shell scripts.

Recursively archive all files and subdirectories of the named files. The -i option is also useful in combination with this one.

-t mmddyy
Ignore files modified prior to the date given by mmddyy.

Test the new ZIP archive's integrity. If the test fails, an existing ZIP archive is not changed, and with -m, no files are removed.

Update existing entries in the ZIP archive if the named files have modification dates that are newer than those in the archive. Similar to -f, except that this option adds files to the archive if they aren't already there.

As the only argument, print help and version information, a pointer to the home and distribution Internet sites, and information about how zip was compiled. When used with other options, cause those options to print progress information and provide other diagnostic information.

-x files
Exclude the specified files, typically specified as a quoted shell wildcard-style pattern.

Do not save extra file attributes (extended attributes on OS/2, user ID/group ID, and file times on Unix).

Preserve symbolic links in the ZIP archive, instead of archiving the file the link points to.

Prompt for a (possibly multiline) comment describing the entire ZIP archive. End the comment with line containing just a period, or EOF.

Specify compression speed: n is a digit between 0 and 9. 0 indicates no compression, 1 indicates fast but minimal compression, 9 indicates slowest but maximal compression. Default is -6.

Read standard input for names of files to be archived. Filenames containing spaces must be quoted using single quotes.


Archive the current directory into source.zip, including only C source files:

zip source -i '*.[ch]'

Archive the current directory into source.zip, excluding the object files:

zip source -x '*.o'

Archive files in the current directory into source.zip, but don't compress .tiff and .snd files:

zip source -z '.tiff:.snd' *

Recursively archive the entire directory tree into one archive:

zip -r /tmp/dist.zip .
zipinfozipinfo [options] zipfile ... [exclusion option]

Solaris only. zipinfo prints information about ZIP format archives. The zipfile is a ZIP archive whose filename ends in .zip. The .zip can be omitted from the command line; zipinfo supplies it. zipfile may also be a shell-style wildcard pattern (which should be quoted to protect it from the shell); all matching files in the ZIP archive will be acted upon. See also zip and unzip.

Exclusion Option

-x files
Exclude. Do not extract archive members that match files.


Only list filenames, one per line. Nothing else is printed. For use in shell scripts.

Like -1, but also permit headers, trailers, and ZIP archive comments (-h, -t, -z).

Print a header line with the archive name, size in bytes, and total number of files.

Use “long” format. Like -m, but also print the compressed size in bytes, instead of the compression ratio.

Use “Medium” format. Like -s, but also include the compression factor (as a percentage).

Pipe output through the internal pager, which is similar to more. Press the Return key or spacebar at the --More-- prompt to see the next screenful.

Use “short” format, similar to ls -l. This is the default.

Print totals for all files (number of files, compressed and uncompressed sizes, overall compression factor).

Print times and dates in a decimal format (yymmdd.hhmmss) that can be sorted.

Use verbose, multipage format.

Print the archive comment.

Library Navigation Links

Copyright © 2003 O'Reilly & Associates. All rights reserved.