User Guide Solaris 10
User Guide Solaris 10
This product or document is protected by copyright and distributed under licenses restricting its use, copying, distribution, and decompilation. No
part of this product or document may be reproduced in any form by any means without prior written authorization of Sun and its licensors, if any.
Third-party software, including font technology, is copyrighted and licensed from Sun suppliers.
Parts of the product may be derived from Berkeley BSD systems, licensed from the University of California. UNIX is a registered trademark in the U.S.
and other countries, exclusively licensed through X/Open Company, Ltd.
Sun, Sun Microsystems, the Sun logo, docs.sun.com, AnswerBook, AnswerBook2, SunOS, and Solaris are trademarks, registered trademarks, or
service marks of Sun Microsystems, Inc. in the U.S. and other countries. All SPARC trademarks are used under license and are trademarks or
registered trademarks of SPARC International, Inc. in the U.S. and other countries. Products bearing SPARC trademarks are based upon an
architecture developed by Sun Microsystems, Inc.
The OPEN LOOK and Sun™ Graphical User Interface was developed by Sun Microsystems, Inc. for its users and licensees. Sun acknowledges the
pioneering efforts of Xerox in researching and developing the concept of visual or graphical user interfaces for the computer industry. Sun holds a
non-exclusive license from Xerox to the Xerox Graphical User Interface, which license also covers Sun’s licensees who implement OPEN LOOK GUIs
and otherwise comply with Sun’s written license agreements.
Federal Acquisitions: Commercial Software–Government Users Subject to Standard License Terms and Conditions.
DOCUMENTATION IS PROVIDED “AS IS” AND ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE
DISCLAIMED, EXCEPT TO THE EXTENT THAT SUCH DISCLAIMERS ARE HELD TO BE LEGALLY INVALID.
Copyright 2002 Sun Microsystems, Inc. 4150 Network Circle, Santa Clara, CA 95054 U.S.A. Tous droits réservés
Ce produit ou document est protégé par un copyright et distribué avec des licences qui en restreignent l’utilisation, la copie, la distribution, et la
décompilation. Aucune partie de ce produit ou document ne peut être reproduite sous aucune forme, par quelque moyen que ce soit, sans
l’autorisation préalable et écrite de Sun et de ses bailleurs de licence, s’il y en a. Le logiciel détenu par des tiers, et qui comprend la technologie relative
aux polices de caractères, est protégé par un copyright et licencié par des fournisseurs de Sun.
Des parties de ce produit pourront être dérivées du système Berkeley BSD licenciés par l’Université de Californie. UNIX est une marque déposée aux
Etats-Unis et dans d’autres pays et licenciée exclusivement par X/Open Company, Ltd.
Sun, Sun Microsystems, le logo Sun, docs.sun.com, AnswerBook, AnswerBook2, SunOS, et Solaris sont des marques de fabrique ou des marques
déposées, ou marques de service, de Sun Microsystems, Inc. aux Etats-Unis et dans d’autres pays. Toutes les marques SPARC sont utilisées sous
licence et sont des marques de fabrique ou des marques déposées de SPARC International, Inc. aux Etats-Unis et dans d’autres pays. Les produits
portant les marques SPARC sont basés sur une architecture développée par Sun Microsystems, Inc.
L’interface d’utilisation graphique OPEN LOOK et Sun™ a été développée par Sun Microsystems, Inc. pour ses utilisateurs et licenciés. Sun reconnaît
les efforts de pionniers de Xerox pour la recherche et le développement du concept des interfaces d’utilisation visuelle ou graphique pour l’industrie
de l’informatique. Sun détient une licence non exclusive de Xerox sur l’interface d’utilisation graphique Xerox, cette licence couvrant également les
licenciés de Sun qui mettent en place l’interface d’utilisation graphique OPEN LOOK et qui en outre se conforment aux licences écrites de Sun.
CETTE PUBLICATION EST FOURNIE “EN L’ETAT” ET AUCUNE GARANTIE, EXPRESSE OU IMPLICITE, N’EST ACCORDEE, Y COMPRIS DES
GARANTIES CONCERNANT LA VALEUR MARCHANDE, L’APTITUDE DE LA PUBLICATION A REPONDRE A UNE UTILISATION
PARTICULIERE, OU LE FAIT QU’ELLE NE SOIT PAS CONTREFAISANTE DE PRODUIT DE TIERS. CE DENI DE GARANTIE NE
S’APPLIQUERAIT PAS, DANS LA MESURE OU IL SERAIT TENU JURIDIQUEMENT NUL ET NON AVENU.
020115@3062
Contents
Preface 9
3
Displaying Manual Pages With man 26
Displaying a One-line Summary With whatis 26
Keyword Lookup With apropos 27
4 Searching Files 49
Searching for Patterns With grep 49
Contents 5
Deleting Lines 73
Searching and Replacing With vi 73
Finding a Character String 73
Refining the Search 74
Replacing a Character String 75
Going to a Specific Line 75
Inserting One File Into Another 76
Editing Multiple Files 76
Summary of Basic vi Commands 76
7 Using Mail 83
mailx Basics 83
Starting mailx 84
Sending Yourself a Sample Message 84
Reading Your Sample Message 85
Quitting mailx 86
Reading Messages 86
Deleting (and Undeleting) Messages 87
Printing Messages 88
Sending Messages 89
Undeliverable Messages 90
Canceling an Unsent Message 90
Adding Carbon and Blind Carbon Copies 90
Inserting a Copy of a Message or File 91
Replying to a Message 92
Saving and Retrieving Messages 93
Saving and Copying Messages in Files 93
Saving and Copying Messages in Folders 93
Reading Messages in Files and Folders 95
Using vi With mailx 96
Mail Aliases 96
Setting Up Mail Aliases in .mailrc 97
Setting Up Mail Aliases in /etc/aliases 98
Tilde Commands 100
Getting Help: Other mailx Commands 102
Contents 7
Setting Environment Variables 128
User Profile 129
Setting the PATH Variable 130
Command Aliases 131
Changing Your Command Prompt 132
Other Useful Variables 133
Setting Default File Permissions 134
Index 147
This book describes how to use the command line interface (CLI) of the Solaris™
operating environment to perform various system tasks.
Note – The Solaris operating environment runs on two platforms, SPARC™ and IA.
The information in this document pertains to both platforms unless otherwise
specified in a special chapter, section, note, bulleted item, figure, table, or example.
9
How This Book Is Organized
The Solaris Advanced User’s Guide describes the following topics.
■ Chapter 1 briefly describes the command line interface and the two graphical user
interfaces supported by the Solaris operating environment, the Common Desktop
Environment and GNOME.
■ Chapter 2 describes how to log in and out of your system and how to use basic
commands to perform system tasks.
To view license terms, attribution, and copyright statements for bash, tcsh, and
zsh, the default path is /usr/share/src. If the Solaris operating environment
has been installed anywhere other than the default, modify the given path to access
the file at the installed location.
■ Chapter 3 describes how to create, copy, move, and delete files and directories. This
chapter also describes how to search for files, compare differences between files,
and how to set permissions on files and directories.
■ Chapter 4 describes how to use the grep command to search through files for
specific character strings.
■ Chapter 5 describes how to monitor and manage your system’s processes and disk
usage.
■ Chapter 6 describes how to use the vi text editor to create, edit, save, and print
text files.
■ Chapter 7 describes how to use the mailx tool to read, create, send, and print
email.
■ Chapter 8 describes how to print files and manage printer status.
■ Chapter 9 describes how to perform system tasks from a remote machine.
■ Chapter 10 describes how to customize your working environment by modifying
your system initialization files and environment variables.
■ Appendix A describes how to customize the key mapping on your keyboard.
Related Books
The Solaris operating environment documentation set provides access to a number of
books about the Solaris software. These books are organized into the following related
sets:
■ Solaris 9 System Administrator Collection
Typographic Conventions
The following table describes the typographic changes used in this book.
Preface 11
TABLE P–1 Typographic Conventions
AaBbCc123 The names of commands, files, and Edit your .login file.
directories; on-screen computer output
Use ls -a to list all files.
machine_name% you have
mail.
AaBbCc123 Book titles, new words, or terms, or Read Chapter 6 in User’s Guide.
words to be emphasized.
These are called class options.
You must be root to do this.
Shell Prompt
This chapter briefly describes the differences between the command line interface and
the desktop environment.
This book describes how to use the command line interface to perform various system
tasks.
13
The Solaris 9 operating environment supports two GUIs, the Common Desktop
Environment (CDE) and the GNOME desktop.
For more information, see Solaris Common Desktop Environment: User’s Guide.
GNOME Desktop
GNOME (GNU Network Object Model Environment) is a GUI and set of computer
desktop applications. You can use the GNOME desktop, panel, applications, and tool
set to customize your working environment and manage your system tasks. GNOME
also provides an application set, including a word processor, a spreadsheet program, a
database manager, a presentation tool, a Web browser, and an email program.
Logging In
A standard work session is the interval between the time you log in to the system and
the time you log out. The SunOS multiuser environment requires that you identify
yourself each time you want to use the system. Your login name (also known as a user
name or an account) serves as your identity to the system and to other users on the
system. Your password restricts use of your account to you. If you don’t already have a
login name and password, ask your system administrator to set up an account for you.
After you have this information, you are ready to log in.
Before you log in to the system, your screen should look similar to the following:
hostname console login:
Type the login name given to you by the system administrator and press the Return
key. For example, if your login name is spanky, type:
15
hostname console login: spanky
and press Return. Next, the system requests your password as follows:
hostname console login: spanky
Password:
Type your password at the prompt and press Return. If your account does not have a
password assigned to it, the system logs you in without asking you for a password.
Note that the system does not display (echo) your password on the screen as you type
it. The failure to display your password helps to prevent others from discovering your
password.
The default shell for SunOS system software is the Bourne shell. The Solaris operating
environment also supports the following shells.
■ GNU Bourne Again shell (bash)
■ C shell (csh)
■ Korn shell (ksh)
■ TC shell (tcsh)
■ Z shell (zsh)
Note – You can get specific information about any SunOS command, including each of
the available shells, by viewing its man (manual reference) page. For more information
on man pages, see “Displaying Manual Pages With man” on page 26.
When you initially log in to the system (or open a new terminal or window) and you
see your command prompt, it indicates that a shell program has been started for you
automatically. This shell is called your login shell. If your login shell is not the SunOS
default (the Bourne shell), it is because a different shell has been specified for you by
your system administrator.
Some commands or procedures available when using one shell might not be available
when using another shell. Unless stated otherwise, all commands and procedures
described in this manual are available in the Bourne shell.
After a moment, the system once again displays the login prompt:
$ exit
hostname console login:
When you see the login prompt, it indicates that you have successfully logged out.
The system is now ready for you or another user to log in.
Note – In the SunOS operating system, turning off your workstation or terminal does
not necessarily log you out. Unless you log out explicitly, you might remain logged in
to the system.
Keyboard Equivalents
You can often speed up operations by using a sequence of keystrokes, called keyboard
accelerators, that duplicate the operations of the mouse and menus, and of the
preconfigured keyboard keys.
The following table lists several command operations and the keyboard equivalents
for both SPARC™ and IA machines.
Note – The Meta key is the <> key on SPARC keyboards and is obtained on IA
keyboards by pressing Ctrl-Alt.
To use a keyboard accelerator, press and hold the first key (Meta or Ctrl-Alt together)
and type the second key. For example, to cut selected text, press and hold the Meta
key and press X on a SPARC system. On an IA system, press and hold Ctrl and Alt
together and press X simultaneously.
Print Meta - p Sends the file to the printer (for example, if you’ve
highlighted a file icon in File Manager)
Command Prompt
When you log in, the screen or window displays an initial prompt. The appearance of
this prompt varies depending on the shell you are using and on how your system
administrator originally set it up. Because the default command prompt for SunOS
system software is the dollar sign ($), this prompt is used in most of the examples
presented in this manual.
If you decide later that you want to change your command prompt, see “Changing
Your Command Prompt” on page 132 for instructions.
This command displays the current date and time. When you type the same
command, but capitalized, you receive the following message.
$ Date
Date: Command not found.
$
Try both of these methods and see how they work. The Delete/Back Space key varies
on some systems. Ctrl-U should work on most systems.
If you are typing a long command, you can use the backslash character (\) to continue
typing on a second line. For example:
$ date; \
logname
Tue Oct 31 15:17:30 MST 2000
spooky
Although the date and logname commands are not long commands, they
demonstrate the concept of continuing a set of commands on the next line. Later, when
the commands you want to use are longer than the width of your screen, you will see
how useful the backslash character can be.
Note – If you use a desktop window, you might not need to use the backslash
character to continue typing commands on the next line. When you reach the end of a
line, the commands you type wrap to the next line automatically, and the system
executes all commands when you press Return.
Note – The Bourne shell (sh) does not support the history command.
You can also repeat any previously typed command by typing !x, where x is the
desired command’s corresponding number on the history list. To see the history list,
type the history command and press Return. The following is an example of what
you might see.
Note – The Z shell does not display the history command in the history list.
Another method for repeating characters from the history list is to follow the ! with a
negative number. For example, to repeat the second from the last command on the
history list, type the following command.
example% !-2
date
Tue Oct 31 15:20:41 MST 2000
example%
Note – If you use this command repetition method immediately after the history
command in the Z shell, increase the negative number after the ! by one (!-3).
Using the previous example history list, the date command is repeated.
You can also type the ! character, followed by the first few characters of a previous
command to repeat that command. For example, if you had previously typed the
clear command to clear your screen, you could type !cl to clear your screen again.
With this method for repeating commands, however, you must use enough characters
for the desired command to be unique in the history list. If you use only one letter
after the !, the system repeats the most recent command that begins with that letter.
You can also repeat any previously typed command by typing fc -s x, where x is the
desired command’s corresponding number on the history list. To see the history list,
type the fc -l command and press Return. The following example is a sample
history list.
You can also repeat commands from the history list by following the fc -s command
with a negative number. For example, to repeat the second from the last command on
the history list, type the following command.
$ fc -s -2
date
Tue Oct 31 15:20:41 MST 2000
$
Using the previous example history list, the date command repeats.
You can also use the fc -s command with the first few characters of a previous
command. For example, if you had previously typed the date command to display
the current date, you could type fc -s da to display the date again. However, you
must use enough characters for the desired command to be unique in the history list.
If you use only one letter after the fc -s command, the system repeats the most
recent command that begins with that letter.
Most options are expressed as a single character preceded by a dash (-). Not all
commands have options. Some commands have more than one option. If you use
more than one option for a command, you can either type the options separately (-a
-b) or together (-ab).
In this example, the output from the date command is redirected to a new file called
sample.file. You can display the contents of sample.file by typing the more
command.
$ more sample.file
Tue Oct 31 15:34:45 MST 2000
$
As you can see, the contents of sample.file now contain the output from the date
command. See Chapter 3 for information on the more command.
Sometimes you might want to redirect the output of one command as input to another
command. A set of commands strung together in this way is called a pipeline. The
symbol for this type of redirection is a vertical bar (|) called a pipe.
For example, instead of saving the output of a command to a file, you might want to
direct it as input to the command for printing (lp) by using the pipe symbol (|). To
send the output from the date command directly to the printer, type the following:
$ date | lp
request id is jetprint-46 (1 file)
$
This pipeline would print the results of the date command. See “Submitting Print
Requests to the Default Printer” on page 103 for information on using the lp
command to print files.
The command redirection examples shown here are simple, but when you learn more
advanced commands, you will find many uses for piping and redirection.
If you know you want to run a command in the background, type an ampersand (&)
after the command as shown in the following example.
$ bigjob &
[1] 7493
$
If you plan to log off before a background job completes, use the nohup (no hangup)
command to enable the job to complete, as shown in the following example. If you do
not use the nohup command , the background job terminates when you log off.
$ nohup bigjob &
[3] 7495
$
Using a Password
To ensure your system’s security, the Solaris operating environment requires you use a
password to access your system. Changing your password several times a year helps
to ensure that you are the only user with easy access to your account.
Note – If you believe someone has used your account without your permission,
change your password immediately.
1. When the system prompts you for Enter login password:, type your current
password.
If no password is currently assigned to your account, the system skips the Old
Password: prompt.
The system does not echo (display) your password on the screen and thereby prevents
other users from discovering your password.
2. When the system prompts you for New Password:, type your new password.
Again, the password you type does not echo on the screen.
3. At the final prompt, Re-enter new password:, type your new password a second
time.
Your system verifies that you typed the password you intended to type.
If you do not type your password precisely the way you did at the previous prompt,
the system refuses to change your password and responds with the following
message:
passwd: They don’t match; try again.
If you receive this message repeatedly, contact your system administrator to get a new
password.
Note – Passwords containing fewer than six characters are not allowed. Also, a new
password must differ from the old password by at least three characters.
Password Aging
If your system uses password aging (implemented with options to the passwd
command), your password can have either a maximum, or a maximum and minimum
lifespan. The lifespan of your password is set by your system administrator.
When your password reaches the maturity date, your system prompts you to change
your password when you log in. The following message displays.
Your password has expired. Choose a new one.
If, for example, the minimum age of your password has been set for two weeks, and
you try to change your password before the minimum life span has elapsed, the
following message displays.
Sorry, less than 2 weeks since the last change.
For more information on passwd(1) and password aging, refer to the man Pages(1):
User Commands.
This command displays the first part of a SunOS manual reference page in the
window display area. Press the space bar to see the next screen, or press the Q key to
quit and return to the command prompt. Use the man command to see all the available
options and to show the proper command syntax. Manual reference pages often
provide examples that illustrate various uses of the command.
The number in parentheses after the command name in the previous example
indicates the Reference Manual section to which this command belongs. Commands
are grouped into various categories according to function. Most user commands are in
Note – The whatis command is only available if your system administrator has set
up a special database of command descriptions.
Note – The apropos command is only available if your system administrator has set
up a special database of command descriptions.
To view examples of apropos output, type one or more of the following commands.
■ apropos who
■ apropos execute
■ apropos apropos
If you do type a keyword that generates an unreasonably lengthy display, press Ctrl-C
to interrupt the display and return you to the command prompt. Hold down the
Control key and press “c.”
You can use the SunOS command line to work with, organize, and manage files and
directories. You type the file and directory names with SunOS commands to complete
specific operations. The command line operates differently than a desktop File
Manager. In a File Manager, you can display files as icons that you can click on and
move, and you can select commands from menus.
File Concepts
A file is the basic unit in the SunOS operating system. Almost everything is treated as a
file, including the following items.
■ Documents – These items include text files, such as letters or reports, computer
source code, or any other document that you write and want to save.
■ Commands – Most commands are executable file. That is, they are files you can
execute to run a particular program. For example, the date command in the
previous chapter, which executes a program that provides the current date, is an
executable file.
■ Devices – Your terminal, printer, and disk drive(s) are all treated as files.
■ Directories – A directory is simply a file that contains other files.
29
The following section explains the commands for creating, listing, copying, moving,
and deleting files. This section also includes information on how to list the contents of
a file and how to determine the nature of a file.
To make certain that you are in your home directory, type the cd (change directory)
command. This command moves you to your home (default) directory. Then type the
pwd (print working directory) command to display your current location within the
file system. The directory displayed is your home directory:
$ cd
$ pwd
/export/home/username
If a file by the name you specify does not exist, the touch command creates an empty
file.
Note – If the file already exists, touch updates the last file access time.
When you type the ls command by itself, it lists all the files in your current location.
If you type the ls command with a specific file name, it lists only that file, if the file
exists.
For more information on listing files, see the man page ls(1).
Now list both files. Notice that both names end with the characters “file.” You can use
the wildcard character, asterisk (*), to match any character or sequence of characters.
The command ls *file lists both tempfile and copyfile, and any other file in
this directory with a name that ends with file.
$ ls *file
copyfile tempfile
Notice that copyfile is listed first. Files are listed in alphabetical order. Capital
letters and numbers precede lowercase letters.
For detailed information on copying files, see the man page cp(1).
For more information on moving and renaming files, see the man page mv(1).
Caution – Be careful when you use the rm command, and be particularly careful when
you use rm with the wildcard character (*). You cannot recover files that you have
removed with rm.
For more information on the rm(1) command, refer to the man Pages(1): User
Commands.
You can also use the cat command to display the contents of a file, but it displays the
file contents rapidly without pausing. The cat (concatenate) command is more often
used to join two or more files into one large file, as in this example:
$ cat file1 file2 file3 > bigfile
$ ls *file
bigfile
file1
file2
file3
$
For further information on the more(1) or cat(1) commands, refer to the man Pages(1):
User Commands.
Directory Hierarchy
Files are grouped into directories, and directories are organized in a hierarchy. At the
top of the hierarchy is the “root” directory, symbolized by “/”.
In the following example, Figure 3–1, each directory in the file system contains many
subdirectories. The / character distinguishes directory levels. The directory / (root)
contains the subdirectories /usr, /bin, /export/home and /lib, among others
subdirectories. The subdirectory /export/home contains user1, user2, and user3.
When you initiate commands, you specify directories and files by including the names
of the directories that contain the files or directories you want to work with. The
names of directories and the files beneath them, combined with slash separators,
constitute a path name. For example, the path name for the user3 directory in the
following illustration is /export/home/user3.
root (/)
home
ccs lib
All subdirectory names and file names within a directory must be unique. However,
names within different directories can be the same. For example, the directory /usr
contains the subdirectory /usr/lib. No conflict occurs between /usr/lib and /lib
because the path names are different.
Your output might be different from the example, as your directory structure is
different. Your working directory is your current location within the file-system
hierarchy.
When you type the cd command by itself, you return to your home directory. For
example, if your home directory was /export/home/user1:
$ cd
$ pwd
/home/user1
In the Bourne Again, C, Korn, TC, and Z shells, the tilde (~) is used as a shortcut for
specifying your home directory. For example, you would type the following to change
to the subdirectory music within your home directory:
You can also use this shortcut to specify another user’s home directory. For example:
example% cd ~username
where username is another user’s login name, you would change to that user’s home
directory.
If you use the Bourne shell, your system administrator might have configured the
system so that you can type $home to specify your home directory. With this
configuration, you type the following command to change your working directory to
the subdirectory music in your home directory.
$ cd $home/music
The directory immediately “above” a subdirectory is called the parent directory. In the
preceding example, /home is the parent directory of /home/user1. The symbol ..
(“dot-dot”) represents the parent directory. The command cd .. changes the working
directory to the parent directory, as in this example:
$ pwd
/home/user1
$ cd ..
$ pwd
/home
If your current working directory is /home/user1 and you want to work with some
files in /home/user2, type the following command.
$ pwd
/home/user1
$ cd ../user2
$ pwd
/home/user2
../user2 tells the system to look in the parent directory for user2. As you can see,
this command is much easier than typing the entire path name /home/user2.
When you are in a parent directory, you can move to a subdirectory by using only the
directory name and not the full path name. In the previous example, the command cd
veggies uses the relative path name of the directory veggies. If the current working
directory is /home/user2, the full path name of this directory is
/home/user2/veggies.
Create several different subdirectories, and then move around within this directory
structure. Use both full path names and relative path names, and confirm your
location with the pwd command.
You can also use mv to move a directory to a location within another directory.
$ pwd
/home/user2/veggies
$ ls
carrots
$ mv carrots ../veggies2
$ ls ../veggies2
carrots
In this example, the directory carrots is moved from veggies to veggies2 with
the mv command.
The command in the previous example copies all files and subdirectories within the
directory veggies to a new directory veggies3. This is a recursive copy, as
designated by the -r option. If you attempt to copy a directory without using this
option, the system displays an error message.
If the directory still contains files or subdirectories, the rmdir command does not
remove the directory.
To remove a directory and all its contents, including any subdirectories and files, use
the rm command with the recursive option, -r.
$ rm -r veggies3
$
Caution – Directories that are removed with the rmdir command cannot be
recovered, nor can directories and their contents removed with the rm -r command.
If the difference is the result of an addition, diff displays a line with the following
format.
l[,l] a r[,r]
If the difference is the result of a deletion, diff uses a d in place of a. If the difference
is the result of a change on the line, diff uses a c.
The relevant text from both files immediately follow the line number information. Text
from leftfile is preceded by a left angle bracket (<). Text from rightfile is
preceded by a right angle bracket (>).
This example shows two sample files, followed by their diff output.
$ cat sched.7.15
Week of 7/15
If the two files to be compared are identical, diff does not display output.
For more information on the diff(1) command, refer to the man Pages(1): User
Commands.
diff3 compares three versions of a file and publishes the differing ranges of text that
are flagged with these codes:
Use bdiff instead of diff for files longer than 3500 lines.
Unlike most commands, find options are several characters long. You must specify
the starting directory before your desired options.
$ find directory options
In the previous example, directory is the name of the starting directory and options
represents the options for the find command.
Each option describes a criterion for selecting a file. A file must meet all criteria to be
selected. The more options you apply, the narrower the field becomes. The -print
option indicates that you want the system to display the results.
For example, to see which files within the current directory and its subdirectories end
in s, type the following command.
$ find . -name ’*s’ -print
./programs
./programs/graphics
./programs/graphics/gks
./src/gks
$
Option Description
You can specify an order of options by combining options within escaped parentheses
(for example, \(options\) ). Within escaped parentheses, you can use the -o flag
between options to indicate that find should select files that qualify under either
category, rather than just those files that qualify under both categories.
$ find . \( -name AAA -o -name BBB \) -print
./AAA
./BBB
In the previous example, the find command searches in the . directory for all files
that are named AAA, then looks for all files named BBB. find then displays the results
of both searches.
You can invert the sense of an option by including an escaped exclamation point
before the option. find then selects files for which the option does not apply:
You can also use find to apply commands to the files it selects with the following
options.
You terminate this option with an escaped semicolon (\;). The quoted braces are
replaced with the file names that find selects.
You can use find to automatically remove temporary work files. If you name your
temporary files consistently, you can use find to search for and remove these files. For
example, if you name your temporary files junk or dummy, this command finds and
removes the files.
$ find . \( -name junk -o -name dummy \) -exec rm ’{}’ \;
For more information on searching for files, see the man page find(1).
The following list describes the three basic file and directory permission types.
■ r – read permission. A file must be readable in order for you to examine or copy it.
A directory must be readable in order for you to list its contents.
■ w – write permission. A file must be writable in order for you to modify it, remove
it, or rename it. A directory must be writable in order for you to add or delete files
in it.
■ x – execute permission. A file with executable permissions is one you can run, such
as a program. A directory must be executable in order for you to gain access to any
of its subdirectories.
$ pwd
/home/hostname/user2
$ ls -l
total 8
drwxr-xr-x 2 user2 users 1024 Feb 9 14:22 directory1
-rw-r--r-- 1 user2 users 0 Feb 10 10:20 emptyfile
-rw-r--r-- 1 user2 users 104357 Feb 5 08:20 large-file
drwxr-xr-x 3 user2 users 1024 Feb 10 11:13 veggies2
The first character on the line indicates the file type. A dash (-) indicates an ordinary
file, a d indicates a directory, and other characters can indicate other special file types.
The next nine characters indicate the permissions for the file or directory. The nine
characters consist of three groups of three, showing the permissions for the owner, the
owner’s group, and the world, respectively. The permissions for emptyfile are
rw-r--r--, indicating that the owner can read and write this file, everyone can read
it, and no one can execute it. The permissions for the directory veggies2 are
rwxr-xr-x, indicating that everyone has read and execute permissions, but only the
owner can write to it.
Notice that the files beginning with . are listed before the other files. The file . is the
reference for the current directory, and the file .. is the reference for the parent
directory.
In general, system utilities use files that begin with . and the user cannot modify these
files. Some exceptions to this rule do exist.
In this example, permissions indicates the permissions to be changed and name is the
name of the affected file or directory.
You can specify the permissions in several ways. Here is one of the forms that is easy
to use:
1. Use one or more letters to indicate the type of users.
■ u (for the user)
■ g (for group)
■ o (for others)
■ a (for all three of the previous categories.))
2. Indicate whether the permissions are to be added (+) or removed (-).
3. Use one or more letters to indicate the permissions.
■ r (for read)
In the following example, write permission is added to the directory carrots for
users who belong to the same group (thus, permissions is g+w and name is carrots).
$ cd veggies2
$ ls -l
drwxr-xr-x 2 user2 users 512 Nov 1 09:11 carrots
$ chmod g+w carrots
$ ls -l
drwxrwxr-x 2 user2 users 512 Nov 1 09:11 carrots
$
The chmod g+w carrots command in the previous example gives the group write
permission on the file carrots. The hyphen (-) in the set of permissions for group is
changed to a w.
To make this same directory unreadable and unexecutable by other users outside your
group type the following commands.
$ ls -l
drwxrwxr-x 2 user2 users 512 Nov 1 09:11 carrots
$ chmod o-rx carrots
$ ls -l
drwxrwx--- 2 user2 users 512 Nov 1 09:11 carrots
$
Now, the r (for read) and the x (for execute) in the set of permissions for other users
are both changed to hyphens (-).
When you create a new file, the system automatically assigns the following
permissions.
-rw-r--r--
When you create a new directory, the system automatically assigns the following
permissions.
drwxr-xr-x
For example, to make a new file turnip executable by its owner (user2), type the
following command.
$ ls -l turnip
-rw-r--r-- 1 user2 users 124 Nov 1 09:14 turnip
$ chmod u+x turnip
$ ls -l turnip
-rwxr--r-- 1 user2 users 124 Nov 1 09:14 turnip
$
You can also use the * wildcard character to change permissions for groups of files
and directories. For example, to change the permissions for all the files in the current
directory veggies so that the files can be written by you alone, type the following
command.
$ pwd
/home/user2/veggies
$ ls -l
-rwxrwxrwx 1 user2 users 5618 Nov 1 09:18 beets
-rwxrwxrwx 1 user2 users 1777 Nov 1 09:18 corn
-rwxrwxrwx 1 user2 users 3424 Nov 1 09:18 garlic
-rwxrwxrwx 1 user2 users 65536 Nov 1 09:18 onions
$ chmod go-w *
$ ls -l
total 152
-rwxr-xr-x 1 user2 users 5618 Nov 1 09:18 beets
-rwxr-xr-x 1 user2 users 1777 Nov 1 09:18 corn
-rwxr-xr-x 1 user2 users 3424 Nov 1 09:18 garlic
-rwxr-xr-x 1 user2 users 65536 Nov 1 09:18 onions
$
In this example, numcode is the numeric code and name is the name of the file or
directory for which you are changing permissions.
Table 3–2 illustrates how the the code 771 describes the permissions for garlic.
Read 4 4 0
Write 2 2 0
Execute 1 1 1
Total 7 7 1
Each of the columns in Table 3–2 represents one of the categories: user, group, and
others. To set read permissions, add 4 to the appropriate column. To set write
permissions, add 2. To add execute permissions, add 1. The total in all three columns
in the last row of the table is the complete numeric code.
The following is another example of using numeric codes to set absolute permissions,
with the inclusion of the ls -l command to demonstrate the results.
$ ls -l onions
-rwxr-xr-x 1 user2 users 65536 Nov 1 09:18 onions
$ chmod 755 onions
$ ls -l onions
-rwxr-xr-x 1 user2 users 65536 Nov 1 09:18 onions
$
The chmod 755 onions command sets the permissions for the file onions so that
the user can read, write, and execute, group members can read and execute, and others
can read and execute. Table 3–3 describes the numeric code that is used to set the
permissions for onions.
Read 4 4 4
Write 2 0 0
Execute 1 1 1
Total 7 5 5
Table 3–4 describes the numeric code that is used to set permissions in the previous
example.
Read 4 4 4
Write 2 2 2
Execute 1 1 1
Total 7 7 7
The numeric code 777 represents the maximum level of permissions you can provide.
Similar to changing relative permissions, you can also use the wildcard character * to
set absolute permissions for all in the files in the current directory. For example,
suppose you want to set absolute permissions for all files in the current directory as
follows:
■ Owner – Read, write, and execute permissions
■ Group – Read and write permissions
■ Others – Execute permissions
For more information on the chmod(1) command, refer to the man Pages(1): User
Commands.
Searching Files
This chapter describes how to search directories and files for keywords and strings by
using the grep command.
In this example, string is the word or phrase you want to find, and file is the file to be
searched.
For example, to find Edgar Allan Poe’s telephone extension, type grep, all or part of
his name, and the file containing the information:
$ grep Poe extensions
Edgar Allan Poe x72836
$
Note that more than one line might match the pattern you give.
$ grep Allan extensions
David Allan x76438
Edgar Allan Poe x72836
49
$ grep Al extensions
Louisa May Alcott x74236
David Allan x76438
Edgar Allan Poe x72836
$
grep is case sensitive; that is, you must match the pattern with respect to uppercase
and lowercase letters:
$ grep allan extensions
$ grep Allan extensions
David Allan x76438
Edgar Allan Poe x72836
$
Note that grep failed in the first try because none of the entries began with a
lowercase a.
grep as a Filter
You can use the grep command as a filter with other commands, enabling you to filter
out unnecessary information from the command output. To use grep as a filter, you
must pipe the output of the command through grep. The symbol for pipe is “|”.
The following example displays files that end in “.ps” and were created in the month
of September.
$ ls -l *.ps | grep Sep
The first part of this command line produces a list of files ending in .ps.
$ ls -l *.ps
-rw-r--r-- 1 user2 users 833233 Jun 29 16:22 buttons.ps
-rw-r--r-- 1 user2 users 39245 Sep 27 09:38 changes.ps
-rw-r--r-- 1 user2 users 608368 Mar 2 2000 clock.ps
-rw-r--r-- 1 user2 users 827114 Sep 13 16:49 commands.ps
$
The second part of the command line pipes that list through grep, looking for the
pattern Sep.
| grep Sep
The grep command can search for a string in groups of files. When it finds a pattern
that matches in more than one file, it prints the name of the file, followed by a colon,
then the line matching the pattern.
$ grep ar *
actors:Humphrey Bogart
alaska:Alaska is the largest state in the United States.
wilde:book. Books are well written or badly written.
$
The following command displays any line in the file list where b is the only
character on the line.
$ grep ’^b$’ list
■ Within a regular expression, dot (.) finds any single character. The following
command matches any three-character string with “an” as the first two characters,
including “any,” “and,” “management,” and “plan” (because spaces count, too).
$ grep ’an.’ list
■ When an asterisk (*) follows a character, grep interprets the asterisk as “zero or
more instances of that character.” When the asterisk follows a regular expression,
grep interprets the asterisk as “zero or more instances of characters matching the
pattern.”
Because it includes zero occurrences, the asterisk can create a confusing command
output. If you want to find all words with the letters “qu” in them, type the
following command.
$ grep ’qu*’ list
However, if you want to find all words containing the letter “n,” type the following
command.
$ grep ’nn*’ list
If you want to find all words containing the pattern “nn,” type the following
command.
$ grep ’nnn*’ list
■ To match zero or more occurrences of any character in list, type the following
command.
$ grep .* list
For example, the following expression matches lines that start with a period, and is
useful when searching for nroff or troff formatting requests (which begin with a
period).
$ grep ^\.
Character Matches
Note that you can also use these search characters in vi text editor searches.
You can also use single quotation marks (’) to group multiword phrases into single
units. Single quotation marks also make sure that certain that the system interprets
metacharacters, such as $, literally.
Escape characters such as & ! $ ? . ; and \ when you want grep to interpret these
characters as ordinary typographical characters.
For example, if you type the following command, the system displays all the lines in
the file list.
However, if you type the following command, the system displays only those lines
that contain the “$” character.
$ grep ’\$’ list
For more information on the grep(1) command, refer to the man Pages(1): User
Commands.
If you add the -l option to the ps command, the system displays other process
information, including the state of each running process (listed under S). The
following list defines the codes used to describe processes.
■ O – Process is running on a processor
■ S – Sleeping: Process is waiting for an event to complete
■ R - Runnable: Process is on run queue
55
■ I - Idle: Process is being create.
■ Z – Zombie state: Process terminated and parent not waiting
■ T – Traced: Process stopped by a signal because parent is tracing it
■ X – SXBRK state: Process is waiting for more primary memory.
Note that while ps is running, the status of an individual process can change. Since
the ps command gives you only a snapshot of what’s going on at the moment you
issue the command, the output is only accurate for a split second after you type the
command.
The ps(1) command has more options than those covered here. Refer to the man
Pages(1): User Commands.
You can use the pgrep and pkill commands to identify and stop command
processes that you no longer want to run. These commands are useful when you
mistakenly start a process that takes a long time to run.
To terminate a process:
1. Type pgrep to find out the PID(s) for the process(es).
The following example illustrates how to find all the processes with a specific name
(xterm) and terminate the xterm process that was started last.
$ pgrep xterm
17818
17828
17758
18210
$ pkill -n 18210
$
If you need to forcibly terminate a process, use the -9 option to the pkill command.
$ pkill -9 -n xterm
If the output of the df -k command indicates your file systems are at or above 90
percent capacity, clear unnecessary files. Clear the files by moving them to a disk or
tape, using cp to copy files and mv to move them, or removing files with the rm
command. Perform these kinds of “housekeeping” chores only on files that you own.
du shows you the disk usage in each subdirectory. For a list of subdirectories in a file
system, change the directory to the path name that is associated with that file system.
Then run the following pipeline:
$ du | sort -r -n
This pipeline, which uses the reverse (-r) and numeric (-n) options of the sort
command, identifies large directories. Use ls -l to examine the size (in bytes) and
modification times of files within each directory. Old files and text files larger 100
KBytes might warrant storage offline.
vi (pronounced “vee-eye,” short for visual display editor) is the standard SunOS text
editor. vi is not window based and can be used on any kind of terminal to edit a wide
range of file types.
You can type and edit text with vi, but it is not a word processor. vi does not process
formatted text in the familiar manner of a commercial word processor. To produce
formatted printouts, vi relies on a typesetting emulation program, such as nroff,
troff, or ditroff. These programs enable you to format vi text by inserting codes
that are then interpreted by the emulator.
vi uses a variety of commands, many of which have functions that overlap. This
chapter provides an overview of the most essential vi commands. As you begin to use
vi, you will find that it is an extremely powerful text editor, and proficiency happens
with practice.
Note – The view utility is a read-only version of vi. When you open a file with view,
you can use vi commands, but you cannot accidentally change the file by saving your
changes.
Starting vi
The following sections describe how to start vi, type text in a file, save (write) the file,
and quit vi.
59
Creating a File
Start vi and edit the file paint as shown in this example:
$ vi paint
If paint already exists, vi opens the existing file. If this is a new file, vi creates it. For
the purposes of this example, paint should be a new file.
Cursor
~
~
~
~
~
Blank lines ~
~
~
~
~
~
Status line "paint" [new file]
The cursor appears in the upper left corner of the screen. Blank lines are indicated by a
vertical series of tildes (~).
Note that you can also start vi without specifying a file name by just typing vi. You
can then name the file later when you exit vi.
Status Line
The last line of the screen, called the status line, shows the name of the file and the
number of lines and characters in the file. When you create a new file, as is the case
with the example, the status line indicates that it is a new file.
Because vi doesn’t indicate which mode you’re currently in, distinguishing between
command mode and entry mode is probably the single greatest cause of confusion
among new vi users. However, if you remember just a few basic concepts from the
beginning, you should be able to avoid most of the usual “vi stress.”
When you first open a vi file, it’s always in command mode. Before you can type text
in the file, you must type one of the vi entry commands, such as i (“insert”), to insert
text at the current cursor location, or a (“append”), to insert text after the current
cursor location. These and other vi entry commands are covered in greater detail later
in this chapter.
Whenever you want to return vi to command mode, press Esc. If you’re not sure
which mode vi is presently in, simply press Esc to make sure it’s in command mode
and continue from there. If you press Esc while vi is already in command mode, the
system beeps and the screen flashes, but no harm is done.
Entry Mode
To type text in the sample file paint, type the vi “insert” command i. This command
removes vi from command mode and puts it into entry mode.
Now type a few short lines of text, ending every line with a Return. Characters you
type appear to the left of the cursor and push any existing characters to the right. For
the moment, you can correct your mistakes by backspacing and retyping a line before
you press Return. For information on editing text in vi, see “Changing Text”
on page 68.
When you finish typing text in paint, press Esc to return to command mode. The
cursor moves back onto the last character you typed. Now you can type more vi
commands.
If vi seems to act unpredictably, make sure that you are not in “Caps Lock” mode,
which would cause your entries to be all capital letters. On some systems, the F1 key
(usually next to the Esc key) acts as the Caps Lock. Pressing this key instead of Esc is a
common error.
Command Mode
When you open a file with vi, you are in command mode. In this mode, you can type
commands to implement a wide range of functions. Most vi commands consist of one
or two letters and an optional number. Usually, uppercase and lowercase versions of
commands perform related but different functions. As an example, typing a appends
the file to the right of the cursor, while typing A appends the file at the end of the line.
Most vi commands do not require that you press Return to execute them. Commands
beginning with a colon (:), however, do require that you press Return after the
command. Some discussions of the vi editor refer to commands that are preceded
with a colon as a third, and uniquely separate mode of vi, last-line mode. This mode is
so named because when you type the colon while in command mode, the colon and
the remainder of what is typed appear on the bottom line of the screen. For the
purpose of this discussion, however, all vi commands are initiated from command
mode.
Commands that are preceded with a colon are actually ex commands. vi and ex are
two separate interfaces to the same text-editing program. While vi is a screen-oriented
interface, ex is a line-oriented interface. The full set of ex commands is available from
within vi. When you press the colon, you are actually switching to the line-oriented,
ex interface. This switch enables you to perform many file manipulation commands
without ever leaving vi. See “Using ex Commands” on page 71, in this chapter, for
further information.
Ending a Session
When you edit a file in vi, your changes are not made directly to the file. Instead, they
are applied to a copy of the file that vi creates in a temporary memory space that is
called the buffer. The permanent disk copy of the file is modified only when you write
(save) the contents of the buffer.
This arrangement is both positive and negative. A positive feature is that you can quit
a file and discard all the changes that you have made during an editing session,
leaving the disk copy intact. The negative feature is that you could lose the (unsaved)
contents of the work buffer if the system crashes. People on remote terminals that are
connected by phone lines are especially vulnerable to unplanned interruptions.
Caution – Although it’s possible to run multiple, simultaneous vi sessions on one file,
it is not a good idea. Great confusion could result when you try to determine which
changes have been written to the file and which changes have been overwritten from a
simultaneous session.
Saving
Save the contents of the buffer (write the buffer to the file on disk) by typing:
:w
Press Return.
Note that the command ZZ is neither preceded by a colon nor followed by Return.
Press Return. If you have made changes, vi does not let you quit with :q. Instead, it
displays the following message.
No write since last change (:quit! overrides)
Press Return.
Printing a File
After you quit a vi file, you can print the file with the following command:
$ lp filename
In this example, filename is the name of the vi file to be printed. This command prints
the file to your default printer. The file is printed without any formatting, line for line,
just as it appears on the screen. See Chapter 8 for more information on printer
commands.
Basic vi Commands
The following sections explain the following categories of vi commands.
■ Moving around in a file
■ Inserting text
■ Changing and substituting text
■ Undoing changes to text
■ Deleting text
■ Checking your spelling
■ Formatting your file output
■ Repeating commands
Note – Most vi commands are case sensitive. The same command typed in lowercase
and uppercase characters might have different effects.
If you’re using vi from a remote terminal, the arrow keys might not work correctly.
The arrow key behavior depends on your terminal emulator. If the arrow keys don’t
work for you, you can use the following substitutes:
■ To move left, press h.
■ To move right, press l.
■ To move down, press j.
■ To move up, press k.
Press b (“back”) to move the cursor to the left one word at a time.
Press W or B to move the cursor past the adjacent punctuation to the next or previous
blank space.
Press e (“end”) to move the cursor to the last character of the current word.
Moving Right
Press the Space Bar to move the cursor one character to the right.
You can page or scroll backward or forward through a file, a screen or a half-screen at
a time. To try out these commands on paint, you might want to add text so you have
a longer file to work with.
Note that paging and scrolling are fundamentally different. Scrolling actually scrolls
the cursor up or down through the text a line at a time, as though it were on a paper
scroll. Paging moves the cursor up or down through the text a screenful at a time. On a
fast system, you might not notice the difference. However, if you’re working from a
remote terminal or in any other situation where your system is running slower than
usual, this difference can become painfully apparent.
Inserting Text
vi provides many commands for inserting text. This section introduces you to the
most useful of these commands. Note that each of these commands places vi in entry
mode. To use any of these commands, you must first be in command mode.
Remember to press Esc to make sure you are in command mode.
Append
Type a (append) to insert text to the right of the cursor. Experiment by moving the
cursor anywhere on a line and typing a, followed by the text you want to add. Press
Esc when you’re finished.
Type A to add text to the end of a line. To see how this command works, position the
cursor anywhere on a text line and type A. The cursor moves to the end of the line,
where you can type your additions. Press Esc when you are finished.
Insert
Insert text to the left of the cursor by typing i from command mode.
Type I to insert text at the beginning of a line. The command moves the cursor from
any position on that line. Press Esc to return to command mode after you type the
desired text.
Open Line
Use these commands to open new lines, either above or below the current cursor
position.
Type o to open a line below the current cursor position. To experiment, type o followed
by a bit of text. You can type several lines of text if you like. Press Esc when you are
finished.
Changing a Word
To replace a word, position the cursor at the beginning of the word to be replaced.
Type cw, followed by the new word. To finish, press Esc.
To change part of a word, place the cursor on the word, to the right of the portion to be
saved. Type cw, type the correction, and press Esc.
Changing a Line
To replace a line, position the cursor anywhere on the line and type cc. The line
disappears, leaving a blank line for your new text (which can be of any length). Press
Esc to finish.
Substituting Character(s)
To substitute one or more characters for the character under the cursor, type s,
followed by the new text. Press Esc to return to command mode.
Undoing Changes
When you edit text and make changes to a vi file, you might occasionally wish that
you had not changed something. vi’s undo commands enable you to back up one
operation and continue on from there.
Deleting Text
These vi commands delete the character, word, or line you indicate. vi stays in
command mode, so any subsequent text insertions must be preceded by additional
commands to enter entry mode.
The x command also deletes the space the character occupied—when a letter is
removed from the middle of a word, the remaining letters will close up, leaving no
gap. You can also delete blank spaces in a line with the x command.
To delete one character before (to the left of) the cursor, type X (uppercase).
To delete part of a word, position the cursor on the word to the right of the part to be
saved. Type dw to delete the rest of the word.
Deleting a Line
To delete a line, position the cursor anywhere on the line and type dd. The line and the
space it occupied are removed.
The methods for copying or moving small blocks of text in vi involves the use of a
combination of the yank, delete, and put commands.
The yy command works well with a count: to yank 11 lines, for example, type 11yy.
Eleven lines, counting down from the cursor, are yanked, and vi indicates this with a
message at the bottom of the screen: 11 lines yanked.
You can also use the P or p commands immediately after any of the deletion
commands discussed earlier. This action puts the text you deleted above or below the
cursor, respectively.
Moving Lines
Moving lines also requires two commands: dd (“delete”) and either p or P.
To move one line, position the cursor anywhere on the line and type dd. For example,
to delete 5 lines, type 5dd.
Next, move the cursor to the line above where you want the deleted line reinserted
and type p. This inserts the text on a new line below the cursor.
Alternatively, you can put the deleted line above the cursor by typing P.
Typing a period (.) repeats the previous text-changing command. For example, if you
have just deleted a line with dd, you can move the cursor to another line and delete it
by simply typing a period.
Using ex Commands
ex commands are more accurate and convenient than yank, delete, and put when
you’re dealing with large blocks of text. Rather than counting lines on the screen and
then searching for an insertion point, you give vi a range of lines to be moved or
copied and then specify the line before the insertion point. Of course, with a delete
command there is no insertion point.
Line numbers appear in the left margin. Note that these numbers do not appear when
you print out the file. They are visible only on the screen.
1 Oh, when I die, take my saddle from the wall,
2 Put it on my pony, lead him out of the stall.
3 Tie my bones to his back, point our faces to the west,
4 And we’ll ride the prairies that we love the best.
5
6 Ride around, little doggies,
7 Ride around real slow.
8 Firey and Snuffy are rarin’ to go.
~
~
~
~
~
~
:set nu
To turn line numbers off, type :set nonu and press Return.
The first two numbers (separated by a comma) specify the range of lines to be copied.
The third number is the line before the insertion point.
For example, to copy lines 1 through 5 of paint and place the copy after line 12, you
would type the following:
:1,5 co 12
Thus, to copy the range “from the current line through line 5” and insert this block
after line 12, you would type:
:.,5 co 12
To copy the range “from line 6 through the end of the file” and insert this block after
line 2, you would type:
:6,$ co 2
Moving Lines
The basic form of the ex move command is similar to the copy command that is
discussed in the previous section.
:line#,line# m line#
Line ranges and insertion points are specified in the same ways, including use of the
abbreviations . and $. The difference in function is simply that “move” removes a
block from one location and reinserts it elsewhere.
For example, to move lines 1 through 5 to the line following 12, you would type:
:1,5 m 12
To find a character string, type / followed by the string you want to search for, and
then press Return. vi positions the cursor at the next occurrence of the string. For
example, to find the string “meta,” type /meta followed by Return.
To search backward in a file, you can use ? instead of /. In this situation, the directions
of n and N are reversed.
Searches normally are case sensitive: a search for “china” will not find “China.” If you
want vi to ignore case during a search, type :set ic. To change it back to the
default, case-sensitive mode, type :set noic.
If vi finds the requested string, the cursor stops at its first occurrence. If the string is
not found, vi displays Pattern not found on the last line of the screen.
To match the beginning of a line, start the search string with a caret (^). For example,
to find the next line beginning with “Search”, type:
/^Search
To match the end of a line, end the search string with a dollar sign ($). For example, to
find the next line ending with “search.”, type:
/search\.$
To match the beginning of a word, type \< at the beginning of the string; to match the
end of a word, type \> at the end of the string. Thus, to match a word, rather than a
string, combine the end-of-word and beginning-of-word tags in the search pattern. For
example, to find the next occurrence of the word—as opposed to the string—“search”,
type:
/\<search\>
To match any character, type a period (.) in the string at the location to be matched.
For example, to find the next occurrence of “disinformation” or “misinformation,”
type:
/.isinformation
Because this is a search for a string and not a word, this search pattern might also find
such constructions as “misinformationalist” and “disinformationism.”
To search for alternative characters in a string, enclose the alternatives in brackets. The
search pattern /[md]stringfinds strings that begin with either “m” or “d.” Conversely,
/[d-m]string finds strings that begin with any letter from “d” through “m.”
You can modify this command to halt the search and make vi query whether you
want to make the replacement in each instance. The following command uses gc
(adding c for “consult”) to make vi stop at every occurrence of “disinformation” and
ask whether you want to make the substitution. Respond with y for yes or n for no.
:g/disinformation/s//newspeak/gc
For example, suppose that you quit the file paint while editing line 51. You can
access that line by opening the file and typing 51G.
If you do not specify a line number, vi inserts the file at the current cursor position.
For example, if you wanted to insert the file orwell at line 84 of the file paint, you
would type:
:84 r orwell
4. When you are finished working with orwell and have saved your work, you have
three choices:
■ Exit vi. Type :q and press Return.
■ Return to paint. Type :n # and press Return.
■ Swap back and forth between two files with the command :n #.
Command Description
Command Description
Command Description
Command Description
cc Change line
Command Description
Command Description
Command Description
Command Description
Command Description
21G Go to line 21
Command Description
Command Description
Command Description
Command Description
Using Mail
SunOS provides a program called mailx for sending and receiving electronic mail
(email). mailx provides features for reading, writing, sending, receiving, saving, and
deleting messages. The mailx program is not window based, and can therefore be run
on any terminal. Although you might prefer to use the window-based mail, you might
find that the mailx program is handy when you are dashing off a quick note. Also, if
you want to set up your own mail aliases, you can read about it here.
Note – If you are in a window environment and the Mail Tool icon appears on your
screen, quit from the Mail Tool before trying the examples in this chapter. Otherwise,
you will have two mail processes active, and these concurrent processes might
generate error and warning messages. You can safely send mail messages in a
Command Tool or Shell Tool window, but if you read your mail and save or delete
messages, this affects your “in tray,” thus confusing Mail Tool.
mailx Basics
This section describes how to perform basic tasks in mailx. Later sections describe
features and functions that can enhance your ability to use this program.
An intended recipient’s login name and machine name serve as a unique address for
the mailx program. If the intended recipient is on the same machine as the sender, the
login name is all that is required. Each user has a mailbox in which to receive mail. This
mailbox is generally located in the /var/mail/username directory, where username is
your login name.
The mailx program notifies you when you receive mail and places the mail in your
mailbox. After you read your mail, mailx automatically places these messages in a
storage file called mbox, which is also located in your home directory.
83
Starting mailx
Start mailx by typing the following command at a prompt and then pressing the
Return key:
$ mailx
If you don’t have any mail waiting for you, your terminal displays the message:
No mail for username $
If you like, type a word or two here about the content of the message you’re sending
yourself and press Return. Now type the body of the message. Use short lines and
press Return at the end of each line. Note that you can only make corrections as you
go by moving back a space and retyping lines before you press Return.
Your sample message might look something like this (the spaces between lines are
made by pressing Return twice):
$ mailx rose@texas
Subject: to someone who really cares
Dear Rosey,
Rose
The first line identifies the version of mail that you are running. The second line
indicates your mailbox, usually located in /var/mail/username, where your
incoming mail is deposited. The third line in this example is the header of the message
you sent yourself. The “N” at the beginning of the line means that it’s a “new”
message. A “U” (unread) means the message was new, but was not read before
quitting the mailx program previously. The information in this screen is discussed in
greater detail in “Reading Messages” on page 86.
To read a message, type an ampersand (&) and the message number at the mailx
prompt, as follows:
& mailx
Mail version 4.0 Thu Jan 16 12:59:09 PST 1992 Type ? for help.
“/var/mail/rose”: 1 message 1 new
>N 1 rose@texas Fri Jul 14 12:01 21/453 to someone who
& 1
To: rose@texas
From: rose@texas
Subject: to someone who really cares
Dear Rose,
Rose
Quitting mailx
When you have finished your work in mailx, you can quit the program by using one
of two commands: q (quit) or x (exit).
If you type q at the mailx prompt and then press Return, you see a message similar
to the following:
Saved one message in home_directory/mbox.
When you use q to quit mailx after reading messages, mailx moves the messages
from your mailbox and saves them in the mbox file in your home directory. mailx
also saves any changes or deletions you’ve made.
If you type x at the mailx prompt and then press Return, the mailx program does
not save any changes or deletions, nor does it move any messages you’ve already read
into the mbox file.
Reading Messages
If you have mail, mailx notifies you each time you log in with the message
or
To read your messages, type mailx at a command prompt and press Return. If no
mail is waiting for you, you will see the message:
&
The mailx program displays information about itself (version number and date) and
instructions for getting help (Type ? for help).
On the next line, mailx specifies the location of your mailbox, the number of
messages received, and their status.
Next, mailx shows a numbered list of the messages in your mailbox. From left to
right, the columns in each line specify:
■ Status: Indicates whether a message is new (N), unread (U), or read (no symbol). A
“>” at the beginning of a line indicates the current message. Deleted messages are
marked with an asterisk (*).
■ Number: Indicates the order in which message was received.
■ Sender: Indicates the name of the user (and usually machine) the message came
from.
■ Time: Indicates the date and time the message was sent.
■ Size: Indicates the number of lines or the number of characters in message.
■ Subject: Indicates the sender-designated subject of the message.
When you have several messages in your mailbox, the displayed list might not show
all of your mail. If this situation applies, type:
■ z – To display the next screenful of mail headers
■ h- – To display the previous screenful of mail headers
■ h – To redisplay the list of mail headers at any time
To view the current message in the mailbox list (marked with >), press Return. Press
Return again to display the next message. To read any message in the list, type its
number and press Return.
To delete the last message you read, just type d at the mailx prompt. To delete a
specific message from your mailbox, use the command form:
d number
You can also delete several messages at a time. To delete messages 1 and 3, use the
command:
& d 1 3
Before you quit mailx, you can undelete messages you’ve removed from your
mailbox. Use the command form:
u number
followed by Return. For example, to undelete the second message, use this command:
& u 2
To undo your last deletion, just type u at the mailx prompt immediately after the
deletion. For example, if your last deletion command was d 2-5, type u to undelete
messages 2, 3, 4, and 5.
Note that all deletions are made permanent when you quit mailx with the q
command. That is, you can no longer undelete messages that have been deleted. You
can, however, quit mailx with the x command and leave your mailbox intact. As
mentioned previously, if you quit with x you leave read messages marked with a U,
deleted messages undeleted, and so forth.
Printing Messages
You can print a hard copy of a message by piping a message to a printer command. To
do so, use the following command form at a mailx prompt:
|number lp
The | symbol is called a pipe. For example, to print a copy of message 2, type:
& |2 lp
Then press Return. If a message number is not specified, mailx pipes the current
message to the printer. For more information on piping, see “Redirecting and Piping
Command Output” on page 22.
Type the who command to list all the users who are currently logged in to the file
server you are on. The displayed list contains users’ login names, their terminal types,
and the date and time they logged in. For example:
$ who
elmer tty15 Feb 20 10:22
susan tty04 Feb 20 10:37
stormy tty07 Feb 20 11:49
hankw tty06 Feb 20 12:02
Type the finger command to display the same type of information as who with more
detail. The information that appears depends on how your system administrator has
set up this command. As an example, you might see something like the following:
$ finger
Login Name TTY Idle When
elmer Elmer Brown tty15 43 Thu 10:22
susan Susan Lake tty04 Thu 10:37
stormy Stormy Ball tty07 12 Thu 11:49
hankw Hank Wilson tty06 22 Thu 12:02
The rusers command provides information on the users who are currently logged in
to your local network. Refer to Chapter 9 for instructions on the use of the rusers
command.
When you have determined the necessary user information, complete the following
steps to send a message.
1. Type the mailx command, followed by a user’s address:
$ mailx user@machine
In this command, user is the intended recipient’s login name and machine is the name
of the intended recipient’s machine.
■ If you’ve already started mailx, you can just type m at the mailx prompt,
followed by the intended recipient’s login and machine name:
& m user@machine
■ To send the same message to multiple recipients, separate each address with a
space or a comma, for example:
$ mailx hank@fretful sally@dakota tex@twister
2. When you press Return, the mailx program prompts you for a subject. Type a
subject for your message and press Return again.
3. Type the body of your message. To create a new line, press Return.
A sentence that wraps on your screen is not considered a new line until you press
Return.
Note – Each line of text within your message can be up to 256 characters long. When
you exceed this limitation, your screen freezes. If this situation occurs, press Ctrl-C to
abort your message.
4. When you have completed your message, press Return to move the cursor to a new
line. Then press Ctrl-D to send your message.
Undeliverable Messages
If you specify an incorrect user address when you send a message, the system
responds with the message
[email protected] unknown
The message is then returned to your mailbox. The next time you type the mailx
command, the header states that you have returned mail, similar to the following
example:
N 1 Mailer-Daemon Fri Jan 3 11:13 8/49 Returned mail: User unknown
When a message cannot be delivered, the file is also copied to a file in your home
directory named dead.letter.
You can use three methods for sending carbon copies with a message:
■ Use a text editor to edit your .mailrc file (in your home directory) and insert the
following line:
set askcc
The mailx program now displays the carbon copy prompt (Cc:) after the subject
prompt. Type the addresses of the users you want to receive carbon copies.
Separate multiple addresses with spaces.
■ When you have typed the body of your message, but before you press Ctrl-D, press
Return to move to a new line and use the command form:
~c address(es)
To use this method to send carbon copies to multiple recipients, separate the
addresses with spaces. For example:
~c hank@fretful george@lonesome stormy@snoozer
■ You can also create a Cc: line with the ~h command, which displays the entire
header of the message. ~h prompts you with To:, Subject:, Cc:, and Bcc:
(blind carbon copy) lines, one line at a time. You can fill in blank lines. You can also
retype filled lines. As with other tilde commands, always use the ~h command on a
new line.
Note – ~c, ~h, and other tilde commands are described in “Tilde Commands”
on page 100.
Inserting a Message
Use the following command form to insert a message.
~m number
In this example, number is the number of the message to be inserted. For example, to
send to another user a message that includes a copy of message number 3 from your
mailbox list, complete the following steps.
1. On a new line, type the command ~m 3, and then press Return.
Inserting a File
You can also insert a copy of any text file into a message. As you are writing a
message, use the following command form.
~r filename
For example, to insert the file outline in the current message, type the following
command.
& ~r outline
Replying to a Message
Reply to mail at a mailx prompt by typing the following command.
r number
If you omit the message number, mailx replies to the current message.
For example, to reply to the sender of message 2, type the following command.
& r 2
mailx automatically addresses your message and supplies an Re: Subject: line
that echoes the original Subject: line. Send your reply as you would with any other
message.
R is a variant of the reply command that sends your reply to all recipients of the
original message as well as to its sender. Use this command only when absolutely
necessary, to avoid generating “junk mail.”
Note – You can insert a message into your reply as shown in the previous section. To
insert a copy of the message to which you are replying, type the command ~m without
a message number.
mailx makes a distinction between saving messages and copying them. Saving
removes a message from the mailbox and appends it to a file or folder. Copying leaves
a message in the mailbox and appends a copy to a file or folder.
where number is the number of the message to be saved and filename is the file where
you want to save the message. For example, to save message 3 into a file called
~/notes/finance, you would type:
& s 3 ~/notes/finance
You can also save several messages at once to the same file. For example, to save
messages 3, 5, 6, 7, and 8 to ~/notes/finance, type the following command.
& s 3 5-8 ~/notes/finance
If the file you specify does not exist, mailx creates it. If the file does exist, mailx
appends the message you are saving to the end of the file.
Saving a file removes it from your mailbox. mailx displays an asterisk (*) next to the
header of any message than has been saved.
To leave the message in your mailbox while appending it to another file, use the copy
command, as follows:
& c 3 ~/notes/finance
Now your folder directory is set to receive messages that are saved in folders. The
change to the .mailrc file becomes effective the next time you start mailx.
Designating Folders
You use the same commands to save or copy messages into folders as into files, except
that the folder name is preceded by a plus sign (+) instead of a path name. The + tells
mailx that the folder is to be kept in the folder directory (Messages).
In the previous example, you would read the file ~/memos/finance by typing:
$ mailx -f ~/memos/finance
You can read messages that are saved in a folder with a similar command—just use
the + instead of a path name. For example, to read the messages in the folder
projects, you would type:
$ mailx -f +projects
This command starts mailx in the file or folder that you have designated. Only
headers for the messages in the file or folder are displayed. Select a message to read by
typing its number at the mailx prompt, and then press Return.
You can also work on mail folders within the mailx program. To see a list of your
folders, type this command at a mailx prompt:
& folders
In the mailx program, you can use the standard vi commands for inserting, deleting,
and changing text.
5. When you are finished, quit vi with the command :wq or ZZ.
After you quit vi, mailx displays the (continue): message. You can either add to
the message (outside vi) or send the message by pressing Ctrl-D.
Mail Aliases
A mail alias is a selection of user names that are grouped under a single name.
Use mail aliases when you want to send messages to the same group of people over
and over. For example, if you occassionally send mail to hank@fretful,
george@lonesome, and sally@dakota, you could create a mail alias called
amigos. Then, each time you sent mail to amigos, all three people would receive it.
Mail aliases that are set up in .mailrc behave differently from mail aliases set up in
/etc/aliases. These differences are summarized in Table 7-1 at the end of this
section.
.mailrc is located in your home directory. This file contains several settings that
control the behavior of mailx and Mail Tool.
Note – You can use any text editor to edit the .mailrc file. The previous example
shows the method for using the vi editor to edit the file. If you are not already
familiar with vi, refer to Chapter 6 for instructions.
Each mail alias is contained on one line of the file. That is, the line can visually “wrap
around” to another line, but it cannot contain carriage returns. Each mail alias should
contain the following, separated by spaces:
■ The word “alias”
■ The name of the mail alias (must be one word)
■ The recipients (logins and machine names) in the mail alias, separated by spaces
The following example shows two mail aliases. The first alias (amigos) contains three
people. The second alias (softball) contains eight. Notice in softball how the
names are visually wrapped around on the screen. This is fine, as long as no carriage
returns are used.
alias amigos hank@fretful george@lonesome sally@dakota
alias softball earl@woofer tex@twister elmer@farmhouse
jane@freeway hank@fretful jj@walker sally@dakota steve@hardway
To send mail to people on a .mailrc alias, address the mail to the mail alias name.
Do not include your machine name. Suppose that you sent the following message:
$ mail amigos
Subject: Let’s eat
The format of mail aliases that are created in /etc/aliases is somewhat different
from those in .mailrc. Each /etc/aliases alias should use the following format:
■ The name of the mail alias, followed by a colon (:)
■ The recipients (logins and machine names), separated by commas. Note that the
mail alias does not have to be on a single line.
To modify your /etc/aliases file, you must first become root. If root is password
protected, you’ll need to know the root password.
Notice that the command prompt changes when you become root.
The following example shows how the alias softball@texas is added to the default
/etc/aliases file.
# vi /etc/aliases
##
#Aliases can have any mix of upper and lower case on the left-
#hand side,
#but the right-hand side should be proper case (usually lower)
#
# >>>>>>>>>>The program “newaliases” will need to be run after
# >> NOTE >>this file is updated for any changes to
# >>>>>>>>>>show through to sendmail.
#
# Sample aliases:
# Alias for distribution list, members specified here:
#staff:wnj,mosher,sam,ecc,mckusick,sklower,olson,rwh@ernie
#######################
# Local aliases below #
#######################
softball@texas: earl@woofer
tex@twister elmer@farmhouse
jane@freeway hank@fretful jj@walker sally@dakota steve@hardway
:wq (to quit viand save the /etc/aliasesfile )
# exit (to exit root)
$
You can use any text editor to edit the /etc/aliases file. The previous example
shows the method for using the vi editor to edit the file. If you are not already
familiar with vi, refer to Chapter 6 for instructions.
Note that the pound signs (#) you see within the /etc/aliases file have been placed
there to comment out the text and sample aliases. The pound signs prevent the system
from processing this information as actual aliases.
Do not place pound signs in front of aliases you add to this file, unless you
intentionally want to disable an alias.
To send mail to people on a /etc/aliases alias, address the mail by using the name
of the alias and your machine name. Suppose that you sent the following:
$ mail softball@texas
Subject: Practice Today
Whenever you send mail by using a mail alias of this type, be sure to include the
machine name of the machine on which it’s located. If you set up a mail alias called
riders on the machine freeway, then you should send your mail to
riders@freeway.
Table 7-1 provides a summary comparison between mail aliases that are created in
.mailrc and those that are created in /etc/aliases.
.mailrc /etc/aliases
For more detailed information on mail aliases, type man aliases or man addresses
at the system prompt.
Tilde Commands
In the course of composing a message, you can use tilde commands to perform a
variety of functions. Tilde commands usually consist of the tilde character (~) followed
by a single character. The following table describes some of the more useful tilde
characters. Some of these characters have already been introduced in this chapter.
Command Description
~b username Adds user name(s) to the blind carbon copies (Bcc:) list.
~f number Forwards the specified message. Valid only when you send a message
while you read mail.
~m number Inserts text from the specified message into the current message. Valid
only when you send a message while you read mail.
~q Simulates pressing Ctrl-C twice. If the body of the current message is not
empty, the contents are saved to dead.letter.
~w filename Writes the current message without the header into the specified file.
The man pages contain extensive information on mailx in more technical form. To see
this entry, type the command:
$ man mailx
Using Printers
The line printer subsystem (LP) print service provides the printing tools that are used
in the Solaris operating environment. LP provides a wide variety of functions, many of
which are not within the scope of this manual. This chapter provides the procedures
necessary for you to perform the following basic printing tasks with the LP print
service:
■ “Submitting Print Requests” on page 103
■ “Determining Printer Status” on page 106
■ “Canceling a Print Request” on page 109
In the previous example, filename is the name of the file you want to print.
103
The specified file is placed in the print queue of the default printer, and the request id is
displayed.
For example, to print the /etc/profile file, type the following command.
$ lp /etc/profile
request id is jetprint-1 (1 file)
$
In the previous example, printername is the name of the specific printer and filename is
the name of the file you want to print.
The specified file is placed in the print queue of the destination printer, and the
request id is displayed.
For example, to print the /etc/profile file on the printer fastprint, type the
following command.
$ lp -d fastprint /etc/profile
request id is fastprint-1 (1 file(s))
$
To request email notification, use the -m option when you submit the print request.
$ lp -m filename
To request a message be written to your console window, use the -w option when you
submit the print request.
$ lp -w filename
In the previous example, filename is the name of the file you want to print.
In the previous example, number is the desired number of copies and filename is the
name of the file you are printing. The print request is considered as one print job, and
only one header page is printed.
For example, to print four copies of the /etc/profile file, type the following
command.
$ lp -n4 /etc/profile
request id is jetprint-5 (1 file)
$
For example, to specify a destination printer, request email notification, and print six
copies of a file, type the following command.
In the previous example, printername is the name of the desired printer and filename is
the name of the file you want to print.
TABLE 8–1 Summary of Frequently Used lp Options
Option Description
A list of the files that you have submitted for printing is displayed.
In the following example, one file is queued for printing to the printer jetprint.
$ lpstat
jetprint-1 user2 11466 Nov 01 15:10 on jetprint
The lpstat command displays one line for each print job, showing the request id,
followed by the user who spooled the request, the output size in bytes, and the date
and time of the request.
The status of the scheduler is displayed, followed by the default destination and a list
of the systems and printers you can use.
In the following example, the scheduler is running, the default printer is jetprint,
and the print server for the jetprint and fastprint printers is prtsrv1.
$ lpstat -s
scheduler is running
system default destination: jetprint
system for jetprint: prtsrv1
system for fastprint: prtsrv1
$
To display a complete listing of all status information, type the following command.
$ lpstat -t
In the following example, no jobs are in the print queue. When files are spooled for
printing, the status of those print requests is also displayed.
$ lpstat -t
scheduler is running
system default destination: jetprint
system for jetprint: prtsrv1
system for fastprint: prtsrv1
To request status for all printers on a system, type the following command.
$ lpstat -p
In the following example, two printers are idle, enabled, and available.
$ lpstat -p
printer jetprint is idle. enabled since Wed Nov 1 15:09:28 MST 2000.
available.
printer fastprint is idle. enabled since Wed Nov 1 15:09:46 MST 2000.
available.
$
If one of those printers had jobs in the print queue, those jobs would also be
displayed.
To request status for an individual printer by name, type the following command.
$ lpstat -p printername
Option Description
-v Show devices.
In the previous example, request_id is the request id number of the desired print
request.
A message informs you that the request is cancelled. The next job in the queue begins
printing.
In the previous example, printername is the name of the printer to which you sent the
request.
A message informs you that the request is canceled. The next job in the queue begins
printing
In the following example, the current print request has been canceled.
$ cancel jetprint
jetprint7: cancelled
$
Your system administrator can log in as root or lp and cancel the currently printing
request by using the printer name as the argument for the cancel command.
If your machine is not currently attached to a network, the information presented here
might not be relevant to your situation. However, it might be valuable for you to
review this information to get an overall view of the benefits that networking can
provide.
Networking Concepts
A network connection between machines enables these systems to transmit
information to one another. The following list describes the more common network
types.
■ Local area network (LAN) — A network that ranges over a small area, generally
less than a few thousand feet
■ Wide area network (WAN) — A large network that can span thousands of miles
■ Campus area network (CAN) — An intermediately sized network
111
A network that is composed of a linked group of networks is called an internetwork.
For example, your machine might be part of a network within your building and part
of an internetwork that connects your local network to similar networks across the
country. Because the difference between a network and an internetwork is generally
invisible to the user, the term network is used in this guide to refer to both networks
and internetworks.
If a password prompt appears, type the password for the remote machine and press
Return. If your machine name is in the other machine’s /etc/hosts.equiv file, the
current machine does not prompt you to type the password.
venus$ rlogin starbug -l user2
Password:
Last login: Wed Nov 1 13:08:36 from venus
Sun Microsystems Inc. SunOS 5.9 Generic February 2002
venus$ pwd
/home/user2
venus$ logout
Connection closed.
venus$
Use the following command syntax for the -l option of the rlogin command.
# rloginmachinename -l username
The following example shows how user user2 on machine venus would log in to
machine starbug as user1.
venus$ rlogin starbug -l user1
Password:
Last login: Thu Nov 2 12:51:57 from venus
Sun Microsystems Inc. SunOS 5.9 Generic February 2002
starbug$ pwd
/home/user1
starbug$ logout
Connection closed.
starbug$
Note that when you log in to a remote machine as someone else, you are placed in that
user’s home directory.
If you log in to a series of machines, gaining access to each machine through another
machine, and you use ~. to abort the connection to any of the machines, you are
returned to your original machine.
venus$ rlogin starbug -l user2
Password:
Last login: Thu Nov 2 15:13:10 from venus
Sun Microsystems Inc. SunOS 5.9 Generic February 2002
starbug$ ~. (You may not see the ~ on the screen.)
Closed connection.
venus$
If you want to back up to an intermediate rlogin connection, use two tildes followed
by a period (~~.).
venus$ rlogin starbug -l user2
Password:
Last login: Thu Nov 2 15:14:58 from venus
Sun Microsystems Inc. SunOS 5.9 Generic February 2002
starbug$ rlogin rlogin earth -l user2
Password:
Last login: Thu Nov 2 15:24:23 from starbug
Sun Microsystems Inc. SunOS 5.9 Generic February 2002
earth$ ~~. (You may not see the ~~ on the screen.)
Closed connection.
starbug$
To reactivate the connection, type fg. You can also type the percentage sign (%)
followed by the process number of the stopped process. If you do not specify a process
number, % activates the process most recently suspended.
venus$ rlogin goddess -l user2
Password:
Last login: Thu Aug 31 14:31:42 from venus
Sun Microsystems Inc. SunOS 5.9 Generic February 2002
goddess$ pwd
/home/user2
Stopped (user)
venus$ pwd
/home/user2/veggies
venus$fg
rlogin goddess
goddess$ logout
venus$
You can also type two tildes and press Ctrl-Z to suspend the current rlogin and
place you at an intermediate rlogin.
For more information on the rlogin(1) command, refer to the man Pages(1): User
Commands.
Note – To copy subdirectories and their contents from one machine to another, use
rcp -r.
In the previous example, machinename is the name of the remote machine, source is the
name of the file(s) you want to copy, and destination is the path name on your machine
where you want the copied file(s) to reside.
You can also combine various abbreviations and syntaxes when using rcp. For
example, to copy all of the files ending in .doc from user hank’s home directory on
remote machine fretful to the current directory on local machine venus, type the
following command.
venus$ rcp fretful:~hank/*.doc .
venus$
In the previous example, source is the file(s) you want to copy, machinename is the name
of the remote machine, and destination is the path name on the remote machine where
you want the copied file(s) to reside.
The following example illustrates how to copy the file newhosts from your /tmp
directory to the /tmp directory on the remote machine starbug.
venus$ cd /tmp
venus$ rcp newhosts starbug:/tmp
venus$
For more information on the rcp(1) command and its options, refer to the man
Pages(1): User Commands.
The following example shows how you would view the contents of the directory
/etc/skel on the machine starbug.
Similar to the rlogin and rcp commands, rsh uses the remote machine’s
/etc/hosts.equiv and /etc/passwd files to determine whether you have
unchallenged access privileges to the remote machine.
For more information on the rsh(1) command and its options, refer to the man
Pages(1): User Commands.
You can also use the -l option without providing a machine name.
This section describes how to run an application on a remote machine and display it
on your local screen. See “More About Security” on page 119 for additional
information on the complexities of running networked applications.
Even though you interact with this application just as you would with any other
application on your screen, the application runs on the remote machine.
The benefit from running an application in this way is that it uses fewer computing
resources than an application that is installed on your machine. This example shows
how to run any remote application to which you have access.
Two different types of access control mechanisms are used: user based and host based.
That is, one mechanism grants access to a particular user’s account, while the other
mechanism grants access to a particular host, or machine. Unless the -noauth option
is used with Xsun, both the user-based access control mechanism and the host-based
access control mechanism are active. For more information see “Manipulating Access
to the Server” on page 122.
User-Based Access
A user-based, or authorization-based, mechanism allows you to give access explicitly
to a particular user on any host machine. The user’s client passes authorization data to
the server. If the data match the server’s authorization data, the user is allowed access.
Host-Based Access
A host-based mechanism is a general-purpose mechanism. This type of mechanism
enables you to give access to a particular host, in which all users on that host can
connect to the server. A host-based mechanism is a weaker form of access control. If
the host has access to the server, all users on that host are allowed to connect to the
server.
Note – Relink clients that are linked with older versions of Xlib or libcps to enable
them to connect to the server with the new user-based access control mechanism.
MIT-MAGIC-COOKIE-1
The MIT-MAGIC-COOKIE-1 authorization protocol was developed by the
Massachusetts Institute of Technology. At server startup, a magic cookie is created for
the server and the user who started the system. On every connection attempt, the
user’s client sends the magic cookie to the server as part of the connection packet. This
magic cookie is compared with the servers’ magic cookie. The connection is allowed if
the magic cookies match, or denied if they do not match.
SUN-DES-1
The SUN-DES-1 authorization protocol, developed by Sun Microsystems, is based on
Secure Remote Procedure Call (RPC) and requires Data Encryption Standard (DES)
support. The authorization information is the machine-independent netname, or
network name, of a user. This information is encrypted and sent to the server as part
of the connection packet. The server decrypts the information and, if the netname is
known, allows the connection.
This protocol is available only in libraries in the Solaris 1.1 and compatible
environments. Any applications built with static libraries cannot use this authorization
protocol.
“Allowing Access When Using SUN-DES-1” on page 124 describes how to allow
another user access to your server by adding that person’s netname to your server’s
access list.
If you must run the Solaris operating environment without the user-based access
mechanism, add the -noauth option to the Xsun command by editing the following
line in the /usr/dt/config/Xservers file.
:0 Local local_uid@console root /usr/openwin/bin/Xsun :0 -nobanner -noauth
You can use either of two programs to change a server’s access control mechanism:
xhost and xauth. For more information, see these man pages. These programs access
two binary files that are created by the authorization protocol. These files contain
session-specific authorization data. One file is for server internal use only. The other
file is located in the user’s $HOME directory:
■ .Xauthority
■ Client Authority file
Use the xhost program to change the host-based access list in the server. You can add
hosts to, or delete hosts from the access list. If you are starting with the default
configuration—an empty host-based access list—and use xhost to add a machine
name, you lower the level of security. The server allows access to the host you added,
as well as to any user who specifies the default authorization protocol. See
“Host-Based Access” on page 120 or an explanation of why the host-based access
control mechanism is considered a lower level of security.
The xauth program accesses the authorization protocol data in the .Xauthority
client file. You can extract this data from your .Xauthority file so that other users
can merge the data into their .Xauthority files, thus allowing them access to your
server, or to the server to which you connect.
When the client starts, an entry corresponding to the connection-protocol is read from
.Xauthority, and the auth-protocol and auth-data are sent to the server as part of the
connection packet. In the default configuration, xhost returns empty host-based
access lists and states that authorization is enabled.
If you have changed the authorization protocol from the default to SUN-DES-1, the
entries in .Xauthority contain SUN-DES-1 as the auth-protocol and the netname of
the user as auth-data. The netname is in the following form:
unix.userid@NISdomainname
For example, on host anyhost the .Xauthority file might contain the following
entries, where [email protected] is the machine-independent netname of the
user:
anyhost:0 SUN-DES-1 ”[email protected]”
localhost:0 SUN-DES-1 ”[email protected]”
anyhost/unix:0 SUN-DES-1 ”[email protected]”
Note – If you do not know your network name, or machine-independent netname, ask
your system administrator.
Note – Mailing the file that contains your authorization information is a safer
method than using rcp. If you do use rcp, do not place the file in a directory that
is easily accessible by another user.
3. The other user must merge the entry into his or her.Xauthority file.
For this example, userhost merges xauth.info into the other user’s .Xauthority
file:
userhost% /usr/openwin/bin/xauth nmerge - < xauth.info
You can modify the environment variables in your system initialization files to control
and adjust many aspects of your working environment. When you log in, your system
reads the initialization files and uses the environment variables to configure your
system. By setting the environment variables, you can customize your system to make
it easier and more efficient to do your work.
To determine your default shell (your login shell), follow these steps.
1. Type echo $SHELL.
$ echo $SHELL
/bin/sh
127
■ /bin/sh – Bourne shell
■ /bin/bash – Bourne Again shell
■ /bin/csh – C shell
■ /bin/ksh – Korn shell
■ /bin/tcsh – TC shell
■ /bin/zsh – Z shell
Regardless of the shell you are using, when you first log in your system generally runs
the system profile file, /etc/profile. This file is generally owned by the system
administrator and is readable (but not writable) by all users.
After your system executes the system profile, it runs the user profile. The user profile
is one (or more) initialization files that define your working environment. For
example, if you’re in the CDE environment your system checks this file (or set of files)
each time you start a new terminal or window.
Depending on which shell is set up as your default, your user profile can be one of the
following:
■ .profile (for the Bourne and Korn shells)
■ .bash_profile (for the Bourne Again shell)
■ .login and .cshrc (for the C shell)
■ .tcshrc and .cshrc (for the TC shell)
■ .zlogin and .zshrc (for the Z shell)
Your user profile file(s) is located in your home directory and enables you to configure
your working environment to your preference.
To display the environment variables that are currently set on your system, use the
env command.
● Type the env command and press Return:
$ env
HOME=/home/user2
PATH=/usr/bin:
LOGNAME=user2
Note – You can also use the env command to identify your login shell. It is specified
in the SHELL environment variable. In the previous example, the shell is set to
/bin/csh (the C shell).
User Profile
This section describes some of the more commonly used environment variables. Many
of these variables might already be in your user profile. As previously mentioned,
your user profile file is located in your home directory.
Note – To view hidden (“dot”) files, use the -la options of the ls command.
The following is a partial list of environment variables that you can include in your
user profile. Your current shell determines the syntax for defining environment
variables.
■ CDPATH – Specifies the directories to be searched when a unique directory name is
typed without a full path name.
■ HISTORY – Sets the number of commands available to the history command.
■ HOME – Defines the absolute path to your home directory. The system uses this
information to determine the directory to change to when you type the cd
command with no arguments.
■ LANG – Specifies the local language. Appropriate values are Japanese, German,
French, Swedish, and Italian.
■ LOGNAME – Defines your login name. The default for this variable is automatically
set to the login name specified in the passwd database as part of the login process.
See System Administration Guide: Basic Administration for information on the
passwd database.
■ LPDEST – Defines your default printer.
■ MAIL – Specifies the path to your mailbox, which is usually located in the
/var/mail/username directory, where username is your login name. See Chapter 7
for more information on this file.
■ MANSECTS – Sets the available sections of online man pages.
For example, if you have no PATH variable set and you want to copy a file, you need
to type the full path name for the command, /usr/bin/cp. However, if you have set
the PATH variable to include the directory /usr/bin, then you can simply type cp
and your system will always execute the command. This is because your system
searches for the cp command in every directory that is named in the PATH variable,
and executes it when it is found. You can significantly streamline your work by using
the PATH variable to list the commonly used SunOS command directories.
For the Bourne, Bourne Again, and Korn shells, you can specify the PATH variable in
your user profile file (in your home directory) by using the following syntax.
PATH=.:/usr/bin:/home/bin
In the previous example, home represents the path name of your home directory.
For the C, TC, and Z shells, you can specify the PATH variable in your user profile file
(in your home directory) by using the following syntax:
Note – In the C, Korn, TC, and Z shells you can use the shortcut ~ to represent the
path name of your home directory.
If you modify the PATH variable, and you are running the C, TC, or Z shell, use the
source command to make the changes effective in your current window without
having to log out:
example% source user-profile-file
If you are running the Bourne, Bourne Again, or Korn shell, type the following to
make the changes effective in your current window without having to log out:
$ . user-profile-file
Command Aliases
Command aliases are helpful shortcuts for commands you often type. For example,
the default setting for the remove command (rm) does not ask for confirmation before
it removes files. Sometimes this default is inconvenient, as a typing error can remove
the wrong file. However, you can use the alias variable to change this setting by
editing your user profile file.
In the C and TC shells, add the following line to your user profile file.
alias rm ’rm -i’
In the Bourne Again, Korn, and Z shells, add the following line to your user profile
file.
alias rm=’rm -i’
With this line in your user profile file, typing rm is now the same as typing rm -i,
which is the interactive form of the rm command. You will then always be asked to
confirm the command before any files are deleted. The quote marks around rm -i in
the previous example are necessary to include the blank space between rm and -i.
Without the quotation marks, the shell cannot correctly interpret the text after the
space.
To make your changes to your user profile file effective immediately in your current
window, you need to type an additional command. In the C and TC shells, type the
following command to make your alias effective immediately.
example% source user-profile-file
In the Bourne Again, Korn, and Z shells, type the following command to make your
alias effective immediately.
$ . user-profile-file
In the Bourne Again, Korn, and Z shells, the . command performs the same actions as
the source command in the C and TC shells.
Note – Command aliases that are created by using the alias command apply only to
the current session.
Type any of the previous examples to change your current command prompt. This
change applies until you change your command prompt again or log out.
If you want to make your changes more permanent, add one of the previous examples
(or a prompt of your own creation) to your user profile file. If you follow this
guideline, the prompt you specify appears each time you log in in or start a new shell.
C and TC Shells
For the C and TC shells, you personalize your command prompt with the set
prompt command. The following are three examples:
Type any of the previous examples to change your current command prompt. This
change applies until you change your command prompt again or log out.
If you want to make your changes more permanent, add one of the previous examples
(or a prompt of your own creation) to your user profile file. If you follow this
procedure, the prompt you specify appears each time you log in or start a new shell.
noclobber Variable
Use set noclobber to prevent unintentional overwriting of files when you use the
cp command to copy a file. This variable affects the Bourne Again, C, Korn, and TC
shells. Type the following in your user profile file:
set noclobber
history Variable
The history variable enables you to set the number of commands that you saved in
your history list. The history command is useful to view commands you have
previously typed. You can also use the history file to repeat earlier commands. Type
the following in your .cshrc or .tcshrc file:
set history=100
You can also affect the Bourne, Bourne Again, Korn, and Z shells in the same manner
by typing the following line in your user profile file.
Like the chmod command, umask uses a numeric code to represent absolute file
permissions. However, the method that is used to calculate the code for umask is
different from the method for chmod.
For example, if umask is set to 000, all files you create have the following (read and
write, but not execute) permissions:
All directories that are created have the following (read, write, and execute)
permissions:
To determine the value to use for umask, you subtract the value of the permissions
you want (using the value you would specify for the chmod command) from the
current default permissions assigned to files. The remainder is the value to use for the
umask command.
For example, suppose you want to change the default mode for files from 666
(rw-rw-rw-) to 644 (rw-r--r--). Subtract 644 from 666. The remainder, 022, is the
numeric value you would use with umask as follows:
$ umask 022
Similar to the numeric code for the chmod command, the three numbers that are used
with umask are as follows.
■ The first digit controls user permissions
■ The second controls group permissions
■ The third digit controls permissions for all others
Table 10-1 shows the file permissions that are created for each digit of the umask
command’s numeric code.
0 rwx
1 rw-
2 r-x
3 r--
4 -wx
5 -w-
6 --x
7 ---(none)
For more information on the umask command, refer to the man Pages(1): User
Commands.
This appendix describes how to remap options for special keyboard keys and how to
disable and enable the Compose key on your keyboard.
For information on remapping your mouse buttons (for example, more convenient
left-handed use of the mouse), see the user documentation for your desktop
environment.
If you do not use the Compose key, you can disable it so that you do not press it
inadvertently. First, find out the keycode for Multi_key:
$ xmodmap -pk | grep Multi_key
nn 0xff20 (Multi_key)
Use the two-digit keycode number at the beginning of the line, represented by nn, to
construct the following line in your .xinitrc file.
xmodmap -e ’keycode nn = NoSymbol’
To re-enable the Compose key, comment out the previous line in your .xinitrc file
and restart the OpenWindows software.
137
SPARC: Left-Handed Key Remapping
The key remapping script in this section (provided for the Type-4 and Type-5
keyboards) remaps most of the special keys on the left panel and right panel of the
keyboard (that is, the keypads to the left and right of the main keyboard area).
SPARC only – Note the following sections that describe “Left-Handed Key
Remapping” apply only to SPARC-based machines.
lefty.data Script
Type the following script into the file lefty.data, as described in Step 2.
!
! lefty.data
!
keycode 75 = L6 L6 SunCopy
keycode 79 = Right R12 KP_6
keycode 100 = L7 L7 SunOpen
keycode 80 = Left R10 KP_4
keycode 98 = L8 L8 SunPaste
keycode 102 = R15 R15 KP_3 Next
keycode 121 = L9 L9 SunFind
keycode 104 = R13 R13 KP_1 End
keycode 119 = L10 L10 SunCut
keycode 30 = L1 L1 SunStop
keycode 29 = Left R10 KP_4
keycode 53 = Right R12 KP_6
keycode 118 = Control_R
add control = Control_R
3. Save the nolefty.data script in the same directory as the lefty.data script and
quit the editor.
Note – For the nolefty.data file to execute, you must type the previous command
in the same directory as the script file.
nolefty.data Script
!
! nolefty.data
!
! Data for xmodmap to reset the left and right function keys
! after being set for left-handed use on the Sun type-4 keyboard.
! To use this data, type the following where <filename> is the name
! of the file.
!
! xmodmap <filename>
!
! Reassign standard values to left function keys.
!
keycode 10 = L2 L2 SunAgain
keycode 32 = L3 L3 SunProps
keycode 33 = L4 L4 SunUndo
keycode 56 = L5 L5 SunFront
keycode 58 = L6 L6 SunCopy
keycode 79 = L7 L7 SunOpen
keycode 80 = L8 L8 SunPaste
keycode 102 = L9 L9 SunFind
keycode 104 = L10 L10 SunCut
!
IA only – Note that the following sections describing “Function Key Remapping”
apply only to IA machines. After you remap the keys, you cannot use kdmconfig to
change setup or video information without first undoing the keyboard remapping.
fkeys Script
!
keysym F2 = L10
keysym F3 = L6
keysym F4 = L8
keysym F5 = L9
keysym F8 = L4
keysym F9 = L5
3. Save the normal file in the same directory as the fkeys script and quit the editor.
Note – You must type the previous command in the same directory as the script file.
normal Script
Type the following script into the file normal, as described in Step 1.
keycode 38 = A
keycode 39 = S
keycode 40 = D
keycode 41 = F
keycode 42 = G
keycode 43 = H
keycode 44 = J
keycode 45 = K
keycode 46 = L
keycode 47 = semicolon colon
keycode 48 = apostrophe quotedbl
keycode 49 =
keycode 50 = Return
keycode 51 = Shift_L
keycode 52 =
keycode 53 = Z
keycode 54 = X
keycode 55 = C
keycode 56 = V
keycode 57 = B
keycode 58 = N
keycode 59 = M
keycode 60 = comma less
147
asterisk (*) (continued) .bash_profile file, environment variables in
mailx saved-message designator, 93 (continued)
metacharacter, 51 PATH, 131
searching for, 52 Bcc: prompt (mailx), 90, 101
wildcard character bdiff command, 39
changing permissions with, 45, 47 beginning of line
copying files with, 31 inserting text at (vi), 67
deleting files with, 32 moving to (vi), 65
grep command, 52 searching for (vi), 74
vi search command, 75 beginning of word
at sign (@) moving to (vi), 65
in email addresses, 84 searching for (vi), 74
in passwords, 24 /bin/bash command, 128
-auth option (Xsun command), 121 /bin/csh command, 128
authorization protocols, 121 /bin/ksh command, 128
MIT-MAGIC-COOKIE-1 authorization /bin/sh command, 128
protocol, 121, 123 /bin/tcsh command, 128
SUN-DES-1 authorization protocol, 121 /bin/zsh command, 128
autowrap, command entry and, 20 blind carbon copies (mailx), 90, 101
block operations, See copying
bottom of screen, moving to (vi), 66
Bourne Again shell
B command for, 128
~b command (mailx), 101 command prompt for, 130, 132
b command (vi), 65 environment variables for
B command (vi), 65 See .bash_profile file
“back” command (vi), 65 help for, 16
Back Space key, vi and, 66 home directory specification, 34
background, running commands in, 23 repeating commands and, 20
backslash (\) user profile file for
command continuation symbol, 20 See .bash_profile file
as escape character, 51, 53, 73 Bourne shell
escaping, 53, 74 as default shell, 16
metacharacter, 51 command for, 128
searching for, 52 command prompt for, 130, 132
vi search commands, 74 environment variables for
backward searching (vi), 73 See .profile file
banner page suppression (lp), 106 help for, 16
base names, 40 home directory specification, 35
bash command, 128 user profile file for
.bash_profile file See .profile file
environment variables in, 131 buffer (vi), 62
location of, 128
environment variables in
HISTORY, 133
set commands, 133 C
umask (file permissions), 135 ~c command (mailx), 91, 101
commonly used, 129 c command (mailx), 93
Index 149
commands (continued) correcting typing mistakes
multiple, 19 command line, 19
options, 22 email (unsent), 84
PATH environment variable and, 130 vi, 61
piping output, 23 counts, for repeating commands (vi), 70
redirecting output, 22 cp command, 31, 37
remote execution, 116 cpu time, 55
repeating, 20 creation of
repeating vi, 70 directories, 35
status of, 55 files
syntax, 26 touch command, 30
typing, 15, 19, 24 vi command for, 60
correcting typing mistakes, 19 csh command, 128
long commands, 20 .cshrc file
multiple commands, 19 described, 128
options, 22 environment variables in
overview, 19 history, 133
remote entry, 116 listing, 43
repeating previous commands, 20 location of, 128
repeating vi commands, 70 environment variables in, 129
commenting out /etc/aliases file lines, 99 commonly used, 129
Common Desktop Environment (CDE), alias, 131
described, 14 PATH, 130
comparing, files, 37, 39 set commands, 132
Compose Key, disabling/enabling, 137 umask (file permissions), 134
concatenating files, 32 Ctrl-B command (vi), 67
(continue): message (mailx), 96 Ctrl-C command (command line), 27
Control key remapping (IA based systems Ctrl-C command (mailx), 90, 101
only), 141, 145 Ctrl characters, in passwords, 24
copy Ctrl-D command
of directories, 37 mailx, 85, 101
from clipboard, keyboard equivalent, 18 vi, 66
to clipboard, keyboard equivalent, 18 Ctrl-F command (vi), 66
directories, 37 Ctrl-L command (vi), 62
keyboard equivalent for, 18 Ctrl-U command (vi), 67
of directories remotely, 115 ~Ctrl-Z command, suspending remote
of files connection, 114
description, 31 ~~Ctrl-Z command, suspending remote
remotely, 115 connection, 115
of lines cursor, See moving around in files (vi)
in ex, 72 customization, 127
in vi, 69 of environment variables, 128, 134
of mail of file permissions, 134
to a file, 93 of initialization files, 127
to a folder, 93 overview, 127
of previous commands, 20 cut and paste, See moving
copy and paste, See copy Cut operation, keyboard equivalent, 18
Copy operation, keyboard equivalent, 18 cw command (vi), 68
Index 151
display (continued) E
of file permissions, 42 e command (vi), 65
of file status, 42 echo, passwords and, 16, 25
of file type, 32 editing, See changing
of history list, 20 editor, See vi editor
interruption of, 27 electronic mail, See mail
of mail headers, 86 email, See mail
of manual pages, 26 enabling Compose Key, 137
of network user information, 117 “end” command (vi), 65
of permissions, 42 end of file
of printer status, 107, 109 copying to in ex, 72
of property window, keyboard marking in mailx, 85, 101
equivalent, 18 end of line
of remote login location, 115 appending text to (vi), 67
of remote user information, 117 moving to (vi), 65
of Shell Tool window, 15 searching for (vi), 74
of users on your file server, 89 end of word, moving to (vi), 65
DISPLAY environment variable, 118, 124 ending, See quitting
ditroff program, 59 entering commands, See commands, typing
documents, defined, 29 entry mode (vi), 61
dollar sign ($) env command, 128
command prompt, 18, 130 environment variables, 128, 134
end-of-file designator (ex), 72 alias, 131
end-of-line command (vi), 65, 74 CDPATH, 129
escaping, 53 defined, 127
grep command operator, 52 DISPLAY, 118, 124
metacharacter, 51 displaying, 128
dot (.) HISTORY, 129, 133
~. command (mailx), 101 HOME, 129
current directory, 43 LANG, 129
current line designator (ex), 72 LOGNAME, 129
escaping, 53 LPDEST, 129
file prefix, 43 MAIL, 129
grep command operator, 52 MANSECTS, 129
listing hidden (dot) files, 43 networked applications and, 118
metacharacter, 51 noclobber, 133
search wildcard character (vi), 74 PATH, 130
searching for, 52 PS1, 130, 132
dot-dot (..), parent directory, 35, 43 SHELL, 130
dot files, 43 TERM, 130
double quotes TERMINFO, 130
grep command and, 51 TZ, 130
double quotes, grep command and, 53 umask, 134
down one line, moving (vi), 65 user profile, 129, 134
du command, 57 erasing, See deleting
dumb terminals, 130 error messages
duplicating, See copy “Sorry”, 26
dw command (vi), 69 “Stranger: unknown host”, 113
Index 153
files (continued) foreign languages, environment variable
loading new, keyboard equivalent, 18 for, 129
moving, 31 forward slash (/)
naming root directory, 33
base name, 40 vi search command, 73
renaming, 31 forwarding mail, 101
uniqueness requirements, 33 function key remapping (IA based systems
opening only), 141, 145
with ex, 76
keyboard equivalent, 18
with vi, 60
overview, 29 G
overwrite prevention, 133 :g command (ex), 75
path names, 33, 36 G command (vi), 75
permissions, 48 GNOME desktop, described, 14
absolute, 45, 48 graphical user interface (GUI), described, 13
changing, 43, 48, 134 greater than sign (>), redirect symbol, 22
default setting, 134 grep command, 49, 54
defaults described, 44 basic search, 49
described, 41 case sensitivity, 50
displaying, 42 escape character, 51, 53
printing filter function, 50
See printing lines not part of file, 51
reading mail saved in, 95 metacharacters
renaming, 31 as operators, 51, 53
saving, keyboard equivalent, 18 searching for, 52
saving mail in, 93 multi-word strings, 51
searching multiword strings, 51
See searching, files and directories regular expressions and, 51
searching for, 39, 41 single or double quotes, 51, 53
sending mail directly to, 95 -group option (find command), 40
size of, displaying, 42 Group user category, 41
status, displaying, 42
groups
temporary, deleting, 41
changing permissions for, 45
wildcard characters and, 31
sending mail to, 96, 100
filtering, grep command and, 50
GUI (graphical user interface), described, 13
find command, 39, 41
Find operation, keyboard equivalent, 18
finding, See searching
finger command, 89
H
folders (mailx), 93, 95
h command
listing, 95
mailx, 87
previous folder, 95
vi, 65
reading mail saved in, 95
~h command (mailx), 91, 101
saving and copying mail to, 93
h- command (mailx), 87
sending mail directly to, 95
H command (vi), 66
switching to/from mailbox, 95
switching to/from mailbox to/from, 95
Index 155
left (continued) .login file (continued)
inserting text to left of cursor (vi), 67 described, 128
moving to (vi), 65 listing, 43
left-handed keyboard remapping (SPARC location of, 128
only), 138 login names
left-handed mouse button remapping, 137 defined, 15
lefty.data file, 139 defining, 129
length of files, displaying, 42 determining for other users, 89
line numbering (vi), 71 login shells, 16
line printer subsystem, See printing default shell, 16, 127
line wrap, command entry and, 20 identifying your login shell, 127, 129
lines remote shell command, 116
appending text to end (vi), 67 user profile for, 128
changing (vi), 68 logname command, 19
copying LOGNAME environment variable, 129
ex command, 72 logout command, 114
vi commands, 70 long commands, typing, 20
deleting long files, comparing, 39
ex command, 73 looking up, See searching
vi command, 69 “low” command (vi), 66
erasing command line, 19 lowercase, See case sensitivity
inserting text at beginning (vi), 67 lp command
moving to beginning or end (vi), 65 defined, 103
moving instruction, 64
ex command, 72 options summary, 105
vi commands, 70 LP print service, See printing
moving down one line (vi), 65 LPDEST environment variable, 129
moving to specific (vi), 75 lpstat command, 106, 109
opening (vi), 67 options summary, 108
undoing changes (vi), 69 ls command, 31, 42
listing
directories, 57
files, 31, 42
folders (mailx), 95 M
hidden files, 43
:m command (ex), 72
mail, 86
~m command (mailx), 91, 101
mailx commands, 102
M command (vi), 66
tilde commands (mailx), 102
-m option (lp command), 105
loading new files, keyboard equivalent, 18
-m time option (find command), 40
local area network (LAN), defined, 111
magic cookie authorization protocol, See
local language, 129
MIT-MAGIC-COOKIE-1 authorization
logging in
protocol
basic procedure, 15
mail, See mailx program
remotely, 112, 115, 118
mail aliases, See aliases (mail)
as someone else, 113
MAIL environment variable, 129
logging out, 17
Mail Tool, 97
.login file
mailbox, 83, 129
environment variables in, 129, 134
Index 157
messages N
See error messages :n command (ex, 76
See mail N command (vi), 73
Meta key, 17, 141 n command (vi), 73
metacharacters (grep command), 51, 53 -n option (lp command), 105
“middle” command (vi), 66 -name option (find command), 40
middle of screen, moving to (vi), 66 naming
MIT-MAGIC-COOKIE-1 authorization protocol directories, renaming, 36
allowing access when using, 123 files
as default, 121, 123 base name, 40
described, 121 renaming, 31
.Xauthorithy file and, 123 uniqueness requirements, 33
mkdir command, 35 passwords, 24
modes (vi), 61 navigating, See moving around in files
more command, 32 networks, 111, 118
mouse buttons, remapping, 137 aborting remote connection, 114
moving copying files remotely, 115
directories, 36 defined, 111
files, 31 displaying user information, 117
lines executing commands remotely, 116
ex command, 72 logging in remotely, 112
vi commands, 70 basic procedure, 112
moving around in files (vi), 64, 67 without home directory, 112
arrow keys and, 65 as someone else, 113
beginning of line, 65 to unknown machine, 113
beginning of word, 65 overview, 111
bottom of screen, 66 protocols, defined, 112
down one line, 65 running networked applications, 112, 115,
end of line, 65 118
end of word, 65 security fundamentals, 119, 125
left one character, 65 access control mechanisms, 120
left one word, 65 caution, 122
middle of screen, 66 manipulating server access, 122, 124
overview, 64 MIT-MAGIC-COOKIE-1 authorization
paging, 66 protocol, 121, 123
right one character, 65 overview, 119
right one word, 65 running clients remotely or locally as
scrolling, 66 another user, 124
specific line, 75 SUN-DES-1 authorization protocol, 121
top of screen, 66 suspending remote connection, 114
multiple commands, typing, 19 verifying your location, 115
multiple copies, printing, 105 New operation, keyboard equivalent, 18
multiple mail recipients, 89 -newer option (find command), 40
multiple vi operations next occurrence, vi search, 73
multiple, simultaneous sessions, 63 next screen, moving to, 66
multiple-file editing, 76 “No write since last change” message, 63
mv command, 31, 36 -noauth option (Xsun command), 120, 122
nohup command, 24
Index 159
printing (continued) question mark (?)
multiple copies, 105 ~? command (mailx), 101
options summary for, 105 escaping, 53
requesting completion notification, 105 mailx help command, 87, 102
to specific printer, 104 metacharacter, 51
status determination, 106, 109 searching for, 52
all status information, 107 vi search command, 73
available printers, 107 quitting
options summary for, 108 mailx program, 86, 88, 101
overview, 106 processes, 56
print requests, 106 SunOS, 17
printer status, 108 vi, 62, 64
submitting print requests, 103 quotation marks, See double quotes
titling printout, 106
vi files, 64
working directory, 34
process identification numbers (PIDs), 55 R
processes, 55 r command
.profile file mailx, 92
described, 128 vi, 68
environment variables in, 129, 131 :r command (ex), 76
commonly used, 129 ~r command (mailx), 92, 101
HISTORY, 133 R command (mailx), 92
PATH, 130 -R option (lpstat command), 109
PS1 (command prompt), 132 -r option
set commands, 133 cp command, 37
umask (file permissions), 134 lpstat command, 109
listing, 43 rcp command, 115
location of, 128 rm command, 37
profile file, described, 128 rcp command, 115, 124
prompts, See command prompt read permission
property window, displaying, keyboard absolute, 46, 48
equivalent, 18 relative, 41, 43
Props operation, keyboard equivalent, 18 reading files into files (vi), 76
protocols, 112 reading mail, See mailx program, reading
messages
ps command, 55
recursive copy, 37
PS1 environment variable, 130, 132
recursive removal, 37
put command (vi), 70
redirecting command output, 22
pwd command, 34
Redo operation, keyboard equivalent, 18
redrawing screen (vi), 62
regular expressions, 51
relative path names, 36
Q
relays, defined, 112
:q command (ex), 63
remapping
:q! command (ex), 63
keyboard, 137, 145
~q command (mailx), 101
mouse buttons, 137
q command (mailx), 86, 88
remote login, 112, 115, 118
Index 161
:set nu command (vi), 71 SunOS commands, 15, 27
set prompt command, 132 suspending remote connection, 114
sh command, 128 swapping
SHELL environment variable, 130 between files (vi), 76
Shell Tool window, typing commands by between folders and mailbox (mailx), 95
using, 15, 20 SXBRK state, 56
shells, 16 syntax, commands, 26
default shell, 16, 127 system administrators, functions of, 15
identifying your login shell, 127, 129 system clock, 130
remote shell command, 116 system management, See admintool
user profile files for, 128 system profile file, 128
shortcuts, home directory specification, 34
single quotes, grep command and, 51, 53
size of files, displaying, 42
slash, See backslash T
sleeping state, 55 ~t command (mailx), 101
“Sorry” error message, 26 -t option (lp command), 106
sort command, 57 -t option (lpstat command), 107
source command, 131 TC shell
Space Bar, vi and, 66 command for, 128
space on disk, managing, 57 command prompt for, 130, 133
SPARC machines environment variables for
keyboard modification See .tcshrc file
left-handed key remapping, 138 help for, 16
undoing remapping, 140 home directory specification, 34
Solaris keyboard equivalents repeating commands and, 20
(accelerators), 17 user profile file for
standard work sessions, defined, 15 See .tcshrc file
start of line, See beginning of line tcsh command, 128
start of word, See beginning of word .tcshrc file
starting environment variables in
mailx program, 84 commonly used, 129
vi, 59 alias, 131
status set commands, 133
file, 42 umask (file permissions), 135, 131
printer, 106, 109 history, 133
process, 55 location of, 128
status line (vi), 60 temporary files, deleting, 41
Stop operation, keyboard equivalent, 18 TERM environment variable, 130
“Stranger: unknown host” message, 113 terminals
strings, defined, 73 environment variables for, 130
subdirectories, described, 33 from which command started, 55
Subject: prompt (mailx), 84, 91, 101 terminating, See quitting
substituting characters (vi), 68 TERMINFO environment variable, 130
SUN-DES-1 authorization protocol text mode (vi), 61
allowing access when using, 124 tilde (~)
described, 121 aborting remote connection, 114
.Xauthority file and, 123 home directory specifier, 34
Index 163
vi editor (continued) viewing, See display
entry mode, 61
Esc key and, 61
ex commands and
See ex commands W
inserting files, 76 :w command (ex, 63
inserting text, 61, 67 ~w command (mailx), 101
repeatedly, 71 w command (vi), 65
last-line mode, 62 W command (vi), 65
line numbering, 71 -w option (lp command), 105
mailx use of, 96 WAN (wide area network), defined, 111
modes, 61 whatis command, 26
moving around in files who am i command, remote login, 115
See moving around in files who command, 89
moving lines wide area network (WAN), defined, 111
ex command, 72 wildcard characters
vi commands, 70 asterisk (*)
multiple, simultaneous sessions, 63 changing permissions with, 45, 47
multiple-file editing, 76 copying files with, 31
“No write since last change” message, 63 deleting files with, 32
opening files, 76 grep command, 52
opening lines, 67 vi search command, 75
overview, 59 dot (.), vi search command, 74
paging, 66 windows
printing files, 64 closing to icons, keyboard equivalent, 18
put command, 69 opening icons, keyboard equivalent, 18
quitting “word” command (vi), 65
and saving changes, 63 words
without saving changes, 63 changing (vi), 68
read-only version, 59 deleting (vi), 69
redrawing screen, 62 moving to end of word (vi), 65
repeating commands, 70 moving one word (vi), 65
saving changes searching for beginning of (vi), 74
and quitting, 63 working directory
without quitting, 63 changing, 34
scrolling in, 66 printing, 34
searching and replacing, 53, 73, 75 :wq command (ex), 63
shell environment variable for, 130 wrapped lines, command entry and, 20
starting, 59 write permission
status line, 60 absolute, 46, 48
substituting characters, 68 relative, 41, 44
text entry, 61
troubleshooting unpredictable behavior, 62
undoing changes, 68
undoing undo, 68 X
yank command, 70 x command
vi search command, 74 mailx, 86, 88
view command, 59, 77 vi, 69
Y
Y command (vi), 70
yank command (vi), 70
yy command (vi), 70
Z
z command (mailx), 87
Z shell
command for, 128
command prompt for, 130, 132
environment variables for
See .zshrc file
help for, 16
home directory specification, 34
repeating commands and, 20
user profile file for
See .zshrc file
.zlogin file
location of, 128
zombie state, 56
zsh command, 128
.zshrc file
environment variables in
commonly used, 129
alias, 131
HISTORY, 133
set commands, 132
umask (file permissions), 135, 131
location of, 128
Index 165
166 Solaris Advanced User’s Guide • May 2002