.\" Copyright (c) 1989, 1993
.\"	The Regents of the University of California.  All rights reserved.
.\"
.\" This code is derived from software contributed to Berkeley by
.\" Jef Poskanzer and Craig Leres of the Lawrence Berkeley Laboratory.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\"    notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\"    notice, this list of conditions and the following disclaimer in the
.\"    documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\"    must display the following acknowledgement:
.\"	This product includes software developed by the University of
.\"	California, Berkeley and its contributors.
.\" 4. Neither the name of the University nor the names of its contributors
.\"    may be used to endorse or promote products derived from this software
.\"    without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\"     @(#)write.1	8.1 (Berkeley) 6/6/93
.\"
.\" Modified for Linux, Sun Mar 12 10:21:01 1995, faith@cs.unc.edu
.\"
.TH WRITE 1 "12 March 1995" "" "Linux Programmer's Manual"
.SH NAME
write \- send a message to another user
.SH SYNOPSIS
.B write
.I user
.RI [ ttyname ]
.SH DESCRIPTION
.B Write
allows you to communicate with other users, by copying lines from
your terminal to theirs.
.PP
When you run the
.B write
command, the user you are writing to gets a message of the form:
.PP
.RS
Message from yourname@yourhost on yourtty at hh:mm ...
.RE
.PP
Any further lines you enter will be copied to the specified user's
terminal.  If the other user wants to reply, they must run
.B write
as well.
.PP
When you are done, type an end-of-file or interrupt character.  The other
user will see the message
.B EOF
indicating that the conversation is over.
.PP
You can prevent people (other than the super-user) from writing to you with
the
.BR mesg (1)
command.  Some commands, for example
.BR nroff (1)
and
.BR pr (1),
may disallow writing automatically, so that your output isn't overwritten.
.PP
If the user you want to write to is logged in on more than one terminal,
you can specify which terminal to write to by specifying the terminal
name as the second operand to the
.B write
command.  Alternatively, you can let
.B write
select one of the terminals \- it will pick the one with the shortest idle
time.  This is so that if the user is logged in at work and also dialed up
from home, the message will go to the right place.
.PP
The traditional protocol for writing to someone is that the string `\-o',
either at the end of a line or on a line by itself, means that it's the
other person's turn to talk.  The string `oo' means that the person
believes the conversation to be over.
.SH "SEE ALSO"
.BR mesg (1),
.BR talk (1),
.BR who (1)
.SH HISTORY
A
.B write
command appeared in Version 6 AT&T UNIX.
.SH AVAILABILITY
The write command is part of the util-linux-ng package and is available from
ftp://ftp.kernel.org/pub/linux/utils/util-linux-ng/.
