^Help is available on the following topics:
^
^Concepts
^
Commands

    This is a list of all bb commands.	For help on a specific
    command, type "help <command>".

    Commands for reading messages:
	read		read message
	next		read the next message
	back		read the previous message
	first		read the first message
	last		read the last message
	all		read all messages
	reset		reset new message pointer
	search		search messages
	summary		display summary of all messages

    Commands for manipulating your directory:
	directory	list rooms
	goto		switch rooms
	-		select the previous room
	+		select the next room
	priority	display or change the priority of a room or group
	set cutoff	change or display the cutoff priority

    Commands for manipulating messages:
	post		post a message
	respond		post a response to a message
	reply		mail a reply to the poster of a message
	delete		delete a message
	undelete	undelete last-deleted message
	expire		change or display the expiration date of a message
	preserve	alias for expire

    Commands for room moderators:
	create		create a new room
	remove		remove a room
	rename		change the name of a room or group
	change		change characteristics of a room or group
	changeclass	change access level of users for a room or group
	list		list access levels of users for a room

    Commands for group moderators:
	add		add rooms to a group
	subtract	subtract rooms from a group

    Manipulating your environment:
	exit		exit
	help		get help on a command
	info		display information about a user
	mail		send mail to a bb user
	set		customize bb parameters
	set password	change your bb password
	signon		sign on as a new person
	users		list the users currently signed onto bb
	quit		alias for exit

    Programming: (see also "help Programming")
	alias		define an alias for a command
	echo		write a line of output
	run		run a bb program
	source		read commands from a file
	!		execute shell command

Ethics
	WELCOME TO THE UNIVERSITY OF WASHINGTON'S BULLETIN BOARD SYSTEM
	---------------------------------------------------------------
   
   This bulletin board is provided as a service by the University of
   Washington's Computing & Communications division in support of the
   University's commitment to promoting:

	* the free interchange of information about information technology
	* the application of the technology to education and research
	* a forum for discussion of University related activities and pursuits
	* a vehicle for open discussion on topics of interest to the community

   in a context which supports:

	* the constructive expression of ideas, and
	* understanding, respect for and appreciation of human differences.
   
   The use of this bulletin board is a privilege -- not a right.  Users are
   reminded that the content of postings are subject to federal and state laws
   as well as University policies on sexual, racial and religious harassment,
   misuse of University property, and discrimination based on age, veteran
   status, gender, sexual orientation, race, ethnic origin or marital status --
   regardless of the "historical culture" of the room in which a message is
   posted.
   
	_F_a_i_l_u_r_e _t_o _c_o_m_p_l_y _w_i_t_h _t_h_e_s_e _l_a_w_s _a_n_d _p_o_l_i_c_i_e_s _c_o_u_l_d _r_e_s_u_l_t _i_n
	_d_i_s_c_i_p_l_i_n_a_r_y _a_c_t_i_o_n_s _i_n_c_l_u_d_i_n_g_, _b_u_t _n_o_t _l_i_m_i_t_e_d _t_o_, _s_u_s_p_e_n_s_i_o_n
	_o_r _p_e_r_m_a_n_e_n_t _d_i_s_m_i_s_s_a_l _f_r_o_m _t_h_e _U_n_i_v_e_r_s_i_t_y_, _c_i_v_i_l _p_r_o_s_e_c_u_t_i_o_n_,
	_a_n_d_/_o_r _p_e_r_s_o_n_a_l _l_i_a_b_i_l_i_t_y_.

   Complaints regarding alleged student misconduct should be directed to
   the Office of the Vice President for Student Affairs at (206) 543-4972;
   alleged incidents of faculty or staff misconduct should be reported to the
   Human Rights Office, (206) 543-7217.

Initialization

	If a file called ".bbrc" is in a user's home directory, each line in
	this file is executed, as a bb command, upon startup of every bb
	session.  A sample .bbrc file might be:

		signon user password
		users
		alias dir directory /messages /count
		dir

	"bb -f" will not execute your .bbrc when starting bb, and "bb -F file"
	will look for ~/file as a replacement initialization file.

File_Manipulation

	">", "<", and ">>" redirect input and output to files for all bb
	commands.  For example:

	read > file		Writes the current message to "file"
	read >> file		Appends the current message to "file"
	post < file		Posts a message from "file", using the
				first line of the file as the subject
				line, and the rest as the text
	post subj text < file	Posts a message from "file", with
				"subj text" as the subject line and
				the contents of "file" as the text
	directory > file	Lists your bb directory to "file"
	all > subd/file		Writes all messages in the current room,
				starting with the next message, to
				"file" in the subdirectory "subd" of
				your current directory.

	If you do not specify a filename with a redirection operator,
	bb will redirect the command's input or output to stdin or
	stdout.	 This can be used to bypass your editor or pager
	(e.g., "all >" displays all new messages in one burst to the
	screen, and "post <" posts a message using the internal
	editor).

	"|" redirects output to a system command.  For example, the
	command "read | mail joe" mails the current message to the
	user "joe," and "read | prt" prints the current message.

Header_Format

	A header format consists of a string that contains special character
	sequences called macros that are replaced by information specific
	to each article before the article is printed on the screen or to
	a file.	 For example, the string:

	"\nSubject: %s\n"

	would be replaced by a newline, the string "Subject: " the subject
	line of the current message, and another newline.

	You can specify the string you want to use in your header in any
	of several places.  Inside bb or in your .bbrc file if you have one,
	the set header="[header]" command will redefine the header format.
	You can also set the environment variable BBHEADER in your .chsrc or
	.login (or the equivalent in non-default shells) to change your header.

	The default header format is: (ignore the line break)

		\n%R15- %r #%p\t\t(%l line%L0) %R15-\n\n
		Date: %d\nFrom: %n<%@>\nSubject: %s\n\n

	AVAILABLE MACROS:
		%@ = compares %A and %a.  If they're the same, it just
		     inserts %a, otherwise it inserts %a/%A
		%A = author's current bb id
		%a = author's bb id at the time of the posting
		%d = date posted
		%e = expiration date
		%l = number of lines in post
		%n = nick of author
		%p = permanent message number
		%r = room name
		%s = subject
		%v = virtual message number (the number before the
		     slash in the prompt)
		%V = last virtual message number (the number after the
		     slash)
		%-v = messages remaining (%V - %v)
		\n = newline
		\t = tab
		\\ = backslash
		\' = single quote
		\" = double quote
		%% = percent sign
		\s = begin standout mode (reverse video)
		\S = end standout mode
		\u = begin underline mode
		\U = end underline mode
		%R = repeat: it takes two arguments, of the form
		     %R[num][char] or %R[num]'[string]', and will
		     replace itself with [num] copies of the character
		     or string.	 For example %R10- will print 10
		     hyphens, and %R5'%a!' will print the author's
		     name followed by an exclamation point five times.
		%L = replace if long: has three functions:
		     %L[num] (where [num] is not zero) will print the
			     word "LONG" if the post exceeds [num]
			     lines.
		     %L0 will print an 's' if the number of lines in
			 the article is not one.  This way, the string
			 "%l line%L0" will show either "1 line" or,
			 for longer articles, "2 lines" with the 2
			 replaced by the number of lines in the
			 article.
		     %L[num]'[string]' will print [string] if the
				       number of article lines exceeds
				       [num].

Message_Number

	Message numbers may be specified in one of the following
	formats:

		<number>	refers to the virtual messagenumber
				<number>

		#<number>	specifies the permanent messagenumber
				<number>

		.		refers to the current message

Parameters

    These are aspects of the bb environment that can be customized
    by each user, by using the "set" command:

	abbreviate	Specifies whether you can abbreviate room
			names.  Defaults to true.

	crypt		The encryption key for the current room.  All
			messages posted in the current room will be
			encrypted with this key; all messages read
			will be decrypted with it.  The default is to
			perform no encryption/decryption.

	cutoff_priority	Your cutoff priority.  Rooms with priorities
			lower than your cutoff are hidden from view.

	editmode	If true, line editing is enabled.  This is
			convenient, but costs CPU.  Defaults to false.

	editor		The editor you wish to use when posting
			messages (e.g., "emacs" or "vi").  The editor
			setting can be bypassed by redirecting from
			stdin (see "help File_Manipulation").

	environment	If true, tells bb to export status information
			through the environment, making it available
			for use by pagers and editors.  Environment
			variables exported are currently:

				BB_ROOM		the current room

				BB_GROUP	the highest-priority
						group to which the
						current room belongs

				BB_MESSAGE_ID	the id of the poster
						of the current message

			By default, this feature is turned off.

	header_format	A custom format for your message headers.  See
			"help Header_Format" for a description of
			specifying custom header formats.  The
			file_header_format parameter specifies the
			header format for messages saved to files.
	
	helpfile	The location of bb's help file.
	
	hooks		Specifies whether bb program hooks are active.
			Program hooks are bb programs (see "help
			Programming") which are invoked when you enter
			or exit a room.

			If hooks are enabled when you enter a room, bb
			will attempt to run a bb program named
			<roomname>.entry, where <roomname> is the name
			of the room in question.  If this fails, it will
			invoke the bb program named DEF.entry.  When
			you leave, it will run <roomname>.exit, or
			DEF.exit.

			By default, this feature is turned off.

	id		The id you use to sign onto bb.

	mail_address	The address where you'd like to receive
			electronic mail.  Other users can look up this
			address with the info command, and it is used
			by the mail and reply commands.  This should
			be set to a complete internet mail address:
			that is, specify "joe@byron.u.washington.edu",
			not just "joe@byron".

	mailer		The program used to send electronic mail.  If
			your mailer has command-line support for
			subject lines, put "%s" (unquoted) where the
			message subject should go.

	nickname	Your nickname on the bulletin board.

	no_clobber	Whether bb should prevent you from
			"clobbering" files by overwriting them with
			the file redirection operator ">".  Set this
			to either "true" or "false".

	pager		The program you wish long output to be piped
			through (usually "more" or "less").  This
			setting can be bypassed by redirecting a
			command's output to stdout (see "help
			File_Manipulation").

	password	Your bb password.  This parameter can only be
			set, not viewed.  If you leave the password
			value empty on the command line (i.e., type
			"set password="), bb will prompt you for
			it--twice, to forestall mistakes.  The
			password you type at these prompts will not be
			echoed to the screen.

	path		Your bb path.  This is a colon-separated list
			of directories to search when running a bb
			program (see "help run").

	server		The hostname of the bb server to be used.

	(Note: for the VMS client, the pager is ignored.)

Special_Effects

    Limited special effects can be included in postings through the
    use of the backspace character.  Backspaces are passed through to
    your pager, which will treat them however it wishes.  The standard
    pagers "more" and "less" use the following rules:

	An underlined _x is produced by "_^Hx" ('_', <backspace>, 'x').
	A boldfaced xx is produced by "x^Hx" ('x', <backspace>, 'x').
	Other instances of backspace are removed, along with the
		previous character.
	
    (The idea is that you're on a typewriter: to produce underlined
    text you'd type an underscore, backup over it, then type the
    letter--for bolding, you'd type the letter again.)

    Emacs has a command available for producing underlined text:  M-x
    underline-region.  For more information, see emacs' internal help.

    These underlining conventions correspond to the (default) teletype
    output device formatting from troff/nroff, the standard UNIX text
    formatter.  Thus, formatted text generated by nroff (e.g., manual
    pages) may be posted without modification.

    Note: not all terminals support underlining or boldfacing, or
          distinguish between the two.  The h19 terminals, for
          example, use reverse video to simulate both.
^
^Commands
^
!

	! allows you to execute shell commands while in bb:

		! <command>

	where ...

		<command>	is the command to execute

	For example,

		! prt guide

	will print the file named "guide".

-

	- selects the room in your directory which precedes the current
	room.  See also goto.

+

	+ selects the room in your directory which follows the current
	room.  See also goto.

add

	To add rooms to a group, use the add command:

		add <groupname> <roomname> ... <roomname>

	where ...

		<groupname>	is the name of the group to which you
				wish to add the rooms

		<roomname>	is the name of a room which you want
				added to the group

alias

	To define an alias for a command or list your aliases, use the
	"alias" command:

		alias <alias> <command>
		alias <alias>
		alias

	where ...

		<alias>		specifies the name of the alias.

		<command>	is the command to execute when the
				alias is invoked.

	If <alias> contains an asterisk ("*"), it can be abbreviated
	at that point or beyond.

	If <command> isn't specified, alias prints out the current
	translation of <alias>, if there is one.  If neither <command>
	nor <alias> are specified, all aliases are listed.

	The alias command allows you to customize your command
	environment: you can alias "d" to the command "directory
	/messages /count /priority" and then just type "d" rather than
	entering the full command.  Aliases are most commonly placed
	in initialization files (see the help for Initialization).

	When an alias is translated, the first command of the alias
	will not be looked up in the alias table; later commands will.
	This behavior is identical to that of the C shell.

	The following substitutions will be performed on <command>
	when the alias is invoked:

		!*		will be replaced with the alias'
				arguments, rather than leaving them to
				follow the command

		!@		does the same thing as !*, but also
				includes all file redirection
				operators, which !* would leave to
				follow the command
				
	See also unalias.

all

	All will display all the messages in the current room from the
	next message to the last, in one burst.	 The format of the all
	command is

		all <messagenumber>

	where ...

		<messagenumber>	specifies the starting message (see
				the help for Message_Number)

back

	Back is identical to read, except that the previous message,
	rather than the current message, will be displayed by default.
	For more information, see the help text for read.

catchup

	The catchup command sets message pointers in all non-hidden
	rooms so that you are more "caught up" with bb:

		catchup <messages-to-leave>

	where ...

		<messages-to-leave>	specifies how many messages to
					leave unread in all rooms

change

	The change command allows you to change the characteristics of
	a room or group:

		change [<roomname>] [/owner=<id>]
		       [/class_default=<class>] [/summary=<summary>]
		       [/expiration=<days>] [/priority=<offset>]
		       [/archive=<archive>]
		change /group=<group> [/owner=<id>]
				      [/class_default=<class>]
				      [/expiration=<days>]

	where ...

		<roomname>	is the name of the room (if not
				specified, the current room will be
				modified)

		<group>		is the name of the group to modify

		<id>		specifies a new owner for the room or
				group

		<class>		specifies a new default class

		<summary>	is a string describing the room
				(displayed by the directory and list
				commands)

		<days>		is the number of days messages will
				remain in this room before expiring;
				for groups, this is the maximum amount
				of time a message can be preserved

		<offset>	is an offset to the room's priority,
				to be applied on behalf of all users

		<archive>	specifies how expired messages are to
				be archived

	Note: you must be the owner of the room or group to use this
	      command.

	For more information on classes, see help changeclass.

	There are currently three archival methods:

		common		stores expired messages in the common
				archive (standard behavior)

		mail		sends expired messages to the room's
				owner via electronic mail

		none		expired messages are not archived

changeclass

	To change the access level of users in the current room or in
	a particular group, use the changeclass command:

		changeclass [/group=<group>] <class> <id-list>

	where ...

		<group>		if specified, is the name of the group
				to modify; otherwise, changeclass
				modifies the current room

		<class>		is one of the classes no_access,
				read_only, read_write, moderator, or
				no_class

		<id-list>	specifies those users whose access
				level you wish to modify

	Note:  you must be a moderator to use this command.

	The different access levels give users different abilities in
	a given room or group.

		no_access	the user is not allowed access to the
				current room

		read_only	the users are allowed to read messages
				in this room, but not to post

		read_write	the user are allowed to read and post
				messages in the current room.  This is
				the standard access level for rooms.

		moderator	the users are given moderator status
				for the current room, granting them
				the ability to delete and preserve
				others' messages, and to use the
				changeclass command themselves

		no_class	this class isn't really a class: users
				with this class actually have the
				room's default class

create

	To create a new room or group, use the create command:

		create <roomname> <summary>
		create /group <group>

	where ...

		<roomname>	is the name of the room you wish to
				create

		<summary>	is a summary of the room's contents,
				which will be displayed by the list
				and directory commands

		<group>		is the name of the group to be created

	If you're creating a room, this command will ask you to
	describe the room.  The description will be posted in the room
	with a subject line of "room purpose."

	Note: after creating the room or group, you may wish to change
	some of its settings--the default class, for example.  See the
	help text for change.

delete

	To delete a message, use the delete command:

		delete [<message-list>]

	where ...

		<message-list>	is an optional list of message numbers
				specifying the messages to be deleted
				(see the help for Message_Number).  If
				no message-list is specified, the
				current message will be deleted.

	If you're a room moderator, you can delete others' messages;
	otherwise, you can only delete your own.  If you (as a
	moderator) delete a message posted by another user, it will
	be sent back to them via electronic mail.

directory

	To obtain a list of the rooms or groups on the bulletin board,
	use the directory command:

		directory [/count] [/cutoff=<cutoff>] [/full]
			  [/hidden] [/messages] [/priority]
			  [/group=<group>]

		directory /groups [/cutoff=<cutoff>] [/hidden]
				  [/priority]

	where ...

		/count		displays the number of messages posted
				in each room following the last
				message read in that room (note: this
				count includes deleted or expired
				postings)

		/cutoff		specifies a cutoff value to be used
				for the duration of the command

		/full		displays each room's summary line and
				owner, along with the standard
				information

		/hidden		displays those rooms or groups below
				your cutoff as well as those above it

		/messages	lists only those rooms in which
				messages have been posted since the
				last message you've read

		/priority	displays room or group priorities

		/groups		specifies that you would like a
				directory of groups, not rooms

		<group>		if specified, restricts the directory
				to list only rooms which are members
				of the given group

echo

	The echo command writes its parameters to the current output
	file (usually the screen or pager).  This is useful in
	scripts.

exit

	To exit the bb, type ^d (or ^Z on VMS systems), or use the
	exit command (or quit, if you prefer).

first

	First is identical to read, except that the first message,
	rather than the current message, will be displayed by default.
	For more information, see the help text for read.

goto

	To switch to a new room, use the goto command:

		goto [<roomname>]
		<roomname>

	where ...

		<roomname>	specifies the name of the room.	 If
				<roomname> is ambiguous, the highest
				priority matching room is selected

	If a room name is not specified, goto selects the next room
	with new messages in your directory.

	Note:  you can leave off the "goto" if the room's name doesn't
	conflict with that of any commands.

help

	To get help on any command, use

		help <command>

	where ...

		<command>	is the name of the command for which
				you want a description

hide

	Hide is a specialized form of the priority command, which sets
	the priority of a room to one below the current cutoff.	 The
	format is:

		hide <roomname>

	where ...

		<roomname>	specifies the room to be "hidden"

info

	To get more information about a particular bb user, use the
	info command:

		info <id>

	where ...

		<id>		is the bb id of the user for which the
				information should be retrieved

	This command is particularly useful when you wish to find a
	user's electronic mailing address.

last

	Last is identical to read, except that the last message,
	rather than the current message, will be displayed by default.
	For more information, see the help text for read.

list

	To get a list of those users who are not of the default class
	(for example, moderators), use the list command:

		list [/group=<group>] [<class>]

	where ...

		<group>		is the name of the group to be listed,
				rather than listing the current room

		<class>		specifies that you only wish to see
				the users of a particular class, not
				all non-default classes

	The list command also displays some extended room or group
	information, including the owner, expiration period, and
	(for rooms) the summary.

mail

	The mail command sends a mail message to bb user:

		mail <id-list>

	where ...

		<id-list>	specifies the bb ids of the users to
				which the mail should be sent

	If a user has specified a mailing address using the setmail
	command (see help setmail), bb will send mail to that address.
	Otherwise, bb will send the message to the address from which
	the user last signed on.

next

	Next reads the next message, or, if there is no next message,
	selects the next room in your directory with new messages.

	This is the command which normally gets executed if you just
	hit <return> at the bb prompt.

	For more information, see the help text for read.

post

	To post a message in the current room, use the post command:

		post [<subject>]

	where ...

		subject		describes the subject of the message,
				to be included in the message header
				and in room summaries.	If the subject
				is not specified on the command line,
				you will be prompted for it.

	The post command uses your editor (see help set) to edit the
	file .article in your home directory.  The old contents of
	.article are preserved in .article~.

	For information on posting from a file, see "help
	File_Manipulation".

preserve

	To change or display a message's expiration date, use the
	preserve command:

		preserve <messagenumber>
		preserve <messagenumber> <days>

	where ...

		<messagenumber>	specifies the message (see the help
				for Message_Number)

		<days>		specifies the number of days (from
				today) until the message expires

priority

	To change or display the priority of a room or group, use the
	priority command:

		priority [/group] <name>
		priority [/group] <name> <priority>

	where ...

		/group		specifies that you wish to change the
				priority of the named group, not room.
				For a list of groups, see directory
				/groups.

		<name>		is the name of the room or group.  You
				may use the special room name "." to
				refer to the current room

		<priority>	is the priority you wish to assign to
				the room (or group) in your directory

	If <priority> is not specified (the first form of the
	command), the current priority of the room or group will be
	displayed and left unmodified.

	Initially, you can only see rooms in supported groups.	When a
	new room is created, it is placed in the "unsupported" group.
	To see rooms which are members of the unsupported group, use
	the command:

		priority /group unsupported 0

quit

	To exit the bb, type ^d (or ^Z on VMS systems), or use the
	quit command (or exit, if you prefer).

read

	To read a message, use the command

		read [<message-list>]

	where ...

		<message-list>	is an optional list of message numbers
				specifying the messages to be read
				(see the help for Message_Number).  If
				no message-list is specified, the
				current message will be displayed.

	For information on saving a post to a file, see "help
	File_Manipulation".

remove

	To remove a room or group, use the remove command:

		remove [/noconfirm] <roomname>
		remove /group [/noconfirm] <group>

	where ...

		<roomname>	is the unabbreviated name of the room
				you wish to remove

		<group>		is the name of the group you wish to
				remove

		/noconfirm	specifies not to prompt for
				confirmation

	Note:  you must be the owner of a room or group to have
	       permission to remove it.

rename

	To change the name of the current room or a specific group,
	use the rename command:

		rename <newname>
		rename /group=<group> <newname>

	where ...

		<newname>	specifies the new name of the room or
				group

		<group>		is the name of the group to be renamed


	Note:  you must be the owner of a room or group to have
	       permission to rename it.

reply

	The reply command mails a reply to the poster of a specified
	message:

		reply [<messagenumber>] [<subject>]

	where ...

		<messagenumber> is an optional message number which
				specifies the message to which you're
				replying (see the help for
				Message_Number).  If no messagenumber
				is specified, the current message is
				assumed.

		<subject>	describes the subject of the message,
				if your mailer has support for
				specifying subject lines from the
				command line.

	The reply command uses your mailer (see help set) to send a
	mail message to the poster of the specified message.  The
	address used will be the poster's mail address (see help
	setmail) if present, or the poster's last access source.

reset

	The reset command selects the message with which you'll begin
	the next time you select the current room:

		reset [<messagenumber>]

	where ...

		<messagenumber> is an optional message number which
				specifies the new value for the room's
				message pointer (see the help for
				Message_Number).  If no messagenumber
				is specified, the current message is
				assumed.

respond

	The respond command posts a response to a specified message:

		respond [<messagenumber>] [<subject>]

	where ...

		<messagenumber> is an optional message number which
				specifies the message to which you're
				responding (see the help for
				Message_Number).  If no messagenumber
				is specified, the current message is
				assumed.

		<subject>	describes the subject of the message,
				to be included in the message header
				and in room summaries.	If the subject
				is not specified on the command line,
				you will be prompted for it.

	The respond command is identical to post, with the exception
	of how it forms the subject line.  The subject line is of the
	form "Re #<n>: <subject>", where <n> is the permanent message
	number of the message to which you're responding, and
	<subject> is that message's original subject line (with any
	initial "Re #<n>: " removed, first), or a replacement which is
	either specified on the command line, or at the "new subject?
	" prompt.  If left blank, respond will use the old subject.

search

	To search all messages in the current room for some text, use
	the search command:

		search <pattern> [/exclude] [/poster] [/subject]
				 [/text] [/full] [/ignore_case] [/new]
				 [/word] [/add] [/show] [/select]
				 [/reset]

	where ...

		<pattern>	is a regular expression (see "man
				egrep") specifying the text of the
				search

		/exclude	reverses the sense of the search, to
				exclude matching posts rather than
				including them

		/poster		searches the poster field of the
				header of the message

		/subject	searches the subject line of the
				message

		/text		searches the text of the message

		/full		lists the permanent message number
				along with the standard summary
				information for each message

		/ignore_case	specifies a case-insensitive search

		/new		searches only messages posted after
				the current message

		/word		specifies that the search pattern is
				only to match entire words, not
				portions of other words

		/add		includes the results from the last
				search in the output of the current
				one

		/show		redisplays the results of the last
				search command

		/select		modifies the summary to only include
				the resulting messages (if no search
				string is specified, uses results from
				the last search)

		/reset		resets the summary to include the full
				room

	If you don't specify any of /poster, /subject, and /text, all
	are searched; otherwise, only those specified will be.

run

	The run command executes a bb program:

		run <program>

	where ...

		<program>	is the name of a file containing the
				program to be executed

	The program must be located somewhere in the list of
	directories specified by your bb path.

	If the <program> is being run inside another bb program, its
	return value (see "help return") will be made available to the
	calling program as the local variable ${<program>}.

	See "help Programming" for information on bb programs.

set

	The set command allows you to customize certain parameters of
	your bb session:

		set [/log] [/reset] [<parameter>[=<value>]] ...

	where ...

		/log		tells you what happens

		/reset		resets parameters to their normal state

		<parameter>	is the name of the parameter you wish
				to affect (see "help Parameters")

		<value>		specifies the new value (of the
				appropriate type) for a particular
				parameter

	If you do not specify a value for one of the options, set will
	display the current setting of that option, or, if /reset is
	present, reset that option to its original value.  If no
	parameters at all are given, the set command displays the
	values of all commonly-used settings.

	Set /reset sets your header_format to the contents of the
	environment variable BBHEADER or to the initial header string
	described in help Header_Format; your pager to the environment
	variable BBPAGER, or PAGER, or "more -d"; your editor to
	BBEDITOR, EDITOR, or nothing (the internal editor); the
	helpfile to BBHELP or the system default; and your mailer to
	BBMAILER, MAILER, or "mail".

show

	Show is a specialized form of the priority command, which sets
	the priority of a room to the current cutoff.  The format is:

		show <roomname>

	where ...

		<roomname>	specifies the room to be "shown"

signon

	To sign onto the board from a script, use the signon command:

		signon [<id> [<password>]]

	where ...

		id		is the bb id you wish to sign in as.
				Use an id of "new" to create a new bb
				signon.

		password	is the corresponding password for the
				signon

	If either the id or password are left unspecified, they will
	be prompted for.  An implicit signon occurs after the bb
	initialization file (usually .bbrc) has been read, if no
	explicit signon was specified.

	If you issue the signon command while already signed on, bb
	will allow you to sign on again from scratch.

source

	To have bb read commands from a file, use the source command:

		source <filename>
		source /return

	where ...

		<filename>	is the name of the file to read.  If
				no filename is specified, bb will
				prompt for one.	 If the filename
				specified is "-", bb will read from
				standard input.

		/return		stops reading the current file, and
				returns to the previous command
				source.	 This automatically happens
				when the end of the file is reached.

	The bb initialization file (~/.bbrc) file is automatically
	read when you invoke bb.  See the help for Initialization_File
	for more information.

subtract

	To subtract rooms from a group, use the subtract command:

		subtract <groupname> <roomname> ... <roomname>

	where ...

		<groupname>	is the name of the group from which you
				wish to subtract the rooms

		<roomname>	is the name of a room which you want
				subtracted from the group

summary

	To get a summary of the messages in a room, use the summary
	command:

		summary [/deleted] [/full] [/new] [/reverse]
			[<message-list>]

	where ...

		/deleted	indicates where messages have been
				deleted with "[message deleted]"

		/full		displays the permanent message number
				along with the other information

		/new		displays only messages posted after
				the current message

		/reverse	displays the summary in reverse order

		<message-list>	is an optional list of message numbers
				to be summarized

unalias

	To delete an alias, use the "unalias" command:

		unalias <alias>

	where ...

		<alias>		is the name of the alias you wish to
				remove

undelete

	If you've accidentally deleted a message, you can undelete it
	using the undelete command:

		undelete

	This only works until you delete another message or select
	another room.

	If you undelete another user's message (as a moderator), they
	will be notified via electronic mail.

users

	The users command lists the users currently using the bulletin
	board.

		users [/brief] [/full]

	where ...

		/brief		displays only users' ids

		/full		display users' idle times and full
				hostname, rather than the default
				behavior of displaying their nicknames

^
^Program Topics
^
Programming

	BB includes a complete programming language.  To execute a bb
	program, use the run command (see "help run").

	Within a program, macro substitution is performed before a
	line is executed.  (See "help Macros" for more information on
	macros.)

	Programs can can use all of the standard bb commands, as well
	the following special constructs:

		do ... until
		for ... end
		global <var>
		if ... else ... fi
		let <var> = <value>
		prompt <var> <prompt>
		return <value>
		while ... end

	(For more information on these constructs, refer to the help
	entries for "do," "for," "global," "if," "let," "prompt,"
	"return," and "while.")

	Here is a sample bb program.  It looks through all the rooms
	with new messages for messages posted by a particular user
	(passed to the program as parameter 1), and prints a summary
	of the messages it finds.

	for r in rooms
	  if "${r.new}" != "0"
	    goto ${r}
	    for m in new
	      if "${m.poster}" == "${1}"
		echo ${r} ${m.permanent} ${m.poster}: ${m.subject}
	      fi
	    end
	  fi
	end

Macros

	This help topic only applies to bb programs.

	Macros can occur anywhere in a line (including the command
	itself), and are translated before the line is executed.  They
	are of the form ${x}, where x can be one of the following:

		<variable>		a variable

		<selector>		<selector> applied to the
					current environment

		<variable>.<selector>	<selector> applied to <variable>

		"constant".<selector>	<selector> applied to
					"constant" (either a room or
					message number)

		<n>			<n>th parameter to the script
					(where <n> is a number between
					1 and 8)

		*			all parameters to the script

	For more information, see the help entries for
	"Variables" and "Selectors".

Selectors

	This help topic only applies to bb programs.

	Selectors modify the interpretation of a macro to select
	information about a room or message:

		${<room>.<selector>}
		${<message>.<selector>}

	Valid selectors for rooms are:

		room		room's name
		current		room's current message
		group		room's group membership
		messages	room's count of messages
		new		room's count of new messages
		owner		room's owner
		priority	room's priority
		summary		room's message summary

	Valid selectors for messages are:

		date		message's date
		idate		message's date as an integer
		permanent	message's permanent number
		poster		message's poster
		subject		message's subject

	For more information on macros, see "help Macros".

Variables

	This help topic only applies to bb programs.

	Variables are either "set" parameters (see "help Parameters")
	are defined by the program (see the help entries for for,
	global, let and prompt), or are one of the following special
	programming variables:

		date		current date
		idate		current date as an integer

do

	This help topic only applies to bb programs.

	To perform a general loop which runs through at least one
	iteration, use the do ... until structure:

		do
			...
		until "<value>" <boolean-op> "<value>"

	where ...

		<boolean-op>	is either == to test for equality, or
				!= to test for inequality (both operations
				are case-insensitive)

		<value>		is an value to be compared

	See also for, if, and while.

for

	This help topic only applies to bb programs.

	To loop through a list, use the for structure:

		for <var> in <list>
			...
		end

	where ...

		<var>		is a variable which is successively
				set to each member of <list>.

		<list>		specifies the list as one of the
				following:

			rooms		rooms above the cutoff
			messages	messages in the current room
			new		new messages in the current
					room
			(<value> ...)	a list of specified values

	See also do and while.

global

	This help topic only applies to bb programs.

	The global declaration creates a variable which persists for
	the entire bb session:

		global <var>

	where ...

		<var>		is the name of the variable

	See also for, let, and prompt.

if

	This help topic only applies to bb programs.

	The if construct provides conditional execution:

		if "<value>" <boolean-op> "<value>"
			...
		else
			...
		fi

	where ...

		<boolean-op>	is either == to test for equality, or
				!= to test for inequality (both operations
				are case-insensitive)

		<value>		is an value to be compared

let

	This help topic only applies to bb programs.

	To assign a value to a variable, use the let command:

		let <var> = "<value>"
		let <var> = "<value>" <op> "<value>"

	where ...

		<var>		is the name of the variable

		<value>		is the value to be assigned to the
				variable

		<op>		is one of the following:

			arithmetic operations:

				+	adds two integers
				-	subtracts two integers
				*	multiplies two integers
				/	divides two integers
				%	performs a modulus operation
					between two integers

			string operations:

				cat	concatenates the second value
					to the end of the first

	If you wish to make a variable last through the entire bb
	session, use the "global" declaration.

	For other methods of assigning values to variables, see the help
	text for the "for" and "prompt" commands.

prompt

	This help topic only applies to bb programs.

	To get input from the user, use the prompt command:

		prompt <var> "<prompt>"

	where ...
	
		<var>		is the name of the variable to hold
				the input

		<prompt>	is the prompt to display

	See also let.

return

	This help topic only applies to bb programs.

	The return construct returns a value to a calling program:

		return <value>

	where ...

		<value>		is the value to be returned

	The value will be made available to the calling program as
	a local variable named after the returning program.

	For example, if program1 contains

	 	for x in (foo bar blech)
	 		run program2 ${x}
	 		echo program2 returned: ${program2}
	 	end

	and program2 contains the simple return statement

	 	return "${1}"

 	then running program1 will produce the output
 
 		program2 returned: foo
 		program2 returned: bar
 		program2 returned: blech

while

	This help topic only applies to bb programs.

	To perform a general loop, use the while ... end structure:

		while "<value>" <boolean-op> "<value>"
			...
		end

	where ...

		<boolean-op>	is either == to test for equality, or
				!= to test for inequality (both operations
				are case-insensitive)

		<value>		is an value to be compared

	See also do, for, and if.

^
.no_init_file
	Please enter your bb id now, or if you're a
	first-time bb user, enter "new".

.new_account
	Please select a bb id and password.  Your bb id will
	be used to identify you to bb and other bb users.
	This id does not need to be the same as your account
	id; in fact, your bb id may be used from any account
	on any system on campus.

	Your bb password protects the integrity of your bb
	id.  We request that you choose a bb password that
	is different from your account password.  This will
	become especially important if you choose to store
	your bb password in your .bbrc initialization file.

.init_signon

	Your .bbrc initialization file can be used to both
	customize and automate your bb environment.

	For example, the bb signon process can be completely
	automated by including your bb password in your .bbrc.
	Please decide now if you would like to do this:
	* If YES, be aware that your bb password will be
	  plainly readable in your .bbrc file; however, the
	  file is created with restrictive permissions so
	  other users cannot read it.
	* If NO, you will have to specify your bb password
	  each time you use bb.

.newuser_intro
	You are now in the newuser room, which has been set up as
	an introductory tutorial.  Messages in this room describe
	the purpose of bb, its architecture and policy of use.
	From now on, instructions on how to proceed with this
	tutorial will be denoted by an arrow (-->).

	Your cursor is positioned below at the bb prompt, which
	reports that you are in the newuser room.  Your current
	message is 0 and there are 13 total messages in this room.
	You may exit bb at any time by typing "quit".  To return
	to this room at another time, type "goto newuser".

	-->Type "read 1" to see the first message in this room.

.setmail_address

	Valid internet addresses are of the form user@domain, where a
	domain is a hierarchical dot-separated list of sub-domains.
	For example,

		bb@byron.u.washington.edu

	is a valid internet address for the user "bb" on byron (which
	is in the u.washington.edu domain).

.create_prologue

	Before you create this room, please search the directory to
	make sure there isn't already a room covering this topic.  If
	there is, please don't create a duplicate room.	 Each room on
	the bb should be unique.  If you proceed, please explain the
	difference between this room and any similar rooms when you
	are asked to describe the room.	 You may wish to discuss the
	creation of this room in the "config" room before proceeding.

.create_summary

	First, give a one-line description of the room you are
	creating.  This description will be displayed by the
	"directory /full" and "list" commands.

.create_purpose

	Now, describe the room.	 The description you enter will become
	the first message in the new room you're creating.  Explain
	the unique features of this room: the reasons why this room is
	necessary--different from all existing rooms.

.create_postscript

	Your room has been created.  You may wish to change some of
	its settings--the default class, for example.  To do so, see
	the help text for the "change" command.

.
